종종 SQL 자동화와 관련된 스크립트를 포스팅 하게 될 것 같습니다. 나이를 먹고 손발이 귀찮아지면 스크립트 활용이 늘어나는 법입니다. 저는 아직 괜찮습니다만 손발이 귀찮으신 분들께 유용한 자료가 되시길 바라는 마음에서..... 이렇게 자료를 정리해 보고자 합니다.
자, 다음 예제를 살펴 보겠습니다.
단일 파일 또는 단일 세션에서 2개의 인스턴스를 연결하여 쿼리를 수행할 수 있는 ':CONNECT' 명령입니다. SQL 인스턴스에 연결하며 현재 연결을 종료할 때 사용할 수 있습니다.
[사용방법]
':CONNECT' 명령 뒤에 인스턴스를 지정하시면 됩니다. User 를 지정하지 않으면 Windows 인증 모드로 접속을 시도합니다.
:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]]
기본 인스턴스 MSSQLSERVER 와 Named Instance 인 SEC 라는 2개의 인스턴스가 있습니다. 기본 인스턴스에서 새쿼리를 실행한 뒤 MASTER 데이터베이스의 DB 정보를 확인하는 쿼리입니다. 여기서 유심히 확인해야 하는 사항은 :CONNECT 명령을 사용하여 다른 인스턴스(SEC)의 정보를 확인할 수 있다는 점입니다.
SSMS(Microsoft SQL Server Management Studio) 메뉴 Query(쿼리) 하위 메뉴를 보시면 SQLCMD 모드를 활성화/비활성화 활 수 있는 메뉴를 볼 수 있습니다. SSMS 에서 :CONNECT 명령을 수행하기 위해서는 반드시 SQLCMD 모드가 Enabled 된 상태로 선택되어 있어야 합니다. 하지만 이 옵션의 사용은 보안상 문제가 될 수 있습니다. 시스템 보안을 손상시킬 수 있는 명령을 사용하지 못하도록 조치가 필요합니다. (-X 옵션에 대해서 살펴보시면 좋겠습니다)
아래 예제는 Command Prompt 에서 SQLCMD 명령을 수행하여 인스턴스에 연결하는 방법입니다.
이 밖에 SQLCMD 명령의 보안 및 효율성 극대화를 위해 아래 사항을 고려하길 권고하고 있습니다.
1. 통합 보안을 사용합니다.
2. 자동화된 환경에서 -X를 사용합니다.
3. 적절한 NTFS 파일 시스템 권한을 사용하여 입력 및 출력 파일을 보호합니다.
4. 성능을 향상시키려면 여러 세션 대신 한 번의 sqlcmd 세션에서 가능한 많은 작업을 수행합니다.
5. 일괄 처리 또는 쿼리를 실행하는 데 걸리는 예상 시간보다 높은 제한 시간 값을 일괄 처리 또는 쿼리 실행에 대해 설정합니다.
[참고자료]
sqlcmd 유틸리티
sqlcmd 유틸리티 사용
작성자 : Lai Go / 작성일자 : 2009.06.22