다음을 통해 공유


SQLdiag 유틸리티

적용 대상: SQL Server

SQLdiag 유틸리티는 콘솔 애플리케이션 또는 서비스로 실행할 수 있는 범용 진단 컬렉션 유틸리티입니다. SQLdiag를 사용하여 SQL Server 및 기타 서버 유형에서 로그 및 데이터 파일을 수집할 수 있으며 이러한 파일을 사용하여 지속적으로 서버를 모니터링하거나 특정 서버 문제를 해결할 수 있습니다. SQLdiag는 Microsoft 고객 지원 서비스에서 진단 정보를 빠르고 간편하게 수집할 수 있도록 지원하는 유틸리티입니다.

참고

이 유틸리티는 변경될 수 있으며 해당 명령줄 인수나 동작을 사용하는 애플리케이션 또는 스크립트의 경우 후속 릴리스에서 제대로 작동하지 않을 수 있습니다.

SQLdiag는 다음과 같은 유형의 진단 정보를 수집할 수 있습니다.

  • Windows 성능 로그

  • Windows 이벤트 로그

  • SQL Server Profiler 추적

  • SQL Server 차단 정보

  • SQL 서버 구성 정보

SQLDiag.xml 구성 파일을 편집하여 SQLdiag 에서 수집할 정보 유형을 지정할 수 있습니다. 이에 대해서는 다음 섹션에서 설명합니다.

구문

  
sqldiag   
     { [/?] }  
     |  
     { [/I configuration_file]  
       [/O output_folder_path]  
       [/P support_folder_path]  
       [/N output_folder_management_option]  
       [/M machine1 [ machine2 machineN]| @machinelistfile]  
       [/C file_compression_type]  
       [/B [+]start_time]  
       [/E [+]stop_time]  
       [/A SQLdiag_application_name]  
       [/T { tcp [ ,port ] | np | lpc } ]  
       [/Q] [/G] [/R] [/U] [/L] [/X] }  
     |  
     { [START | STOP | STOP_ABORT] }  
     |  
     { [START | STOP | STOP_ABORT] /A SQLdiag_application_name }  

인수

/?
사용 정보를 표시합니다.

/I configuration_file
SQLdiag에서 사용할 구성 파일을 설정합니다. 기본적으로 /I 는 SQLDiag.Xml로 설정됩니다.

/O output_folder_path
SQLdiag 출력을 지정된 폴더로 리디렉션합니다. /O 옵션을 지정하지 않으면 SQLdiag 출력이 SQLdiag 시작 폴더 아래에 있는 SQLDIAG라는 하위 폴더에 기록됩니다. SQLDIAG 폴더가 없으면 SQLdiag에서 만듭니다.

참고

출력 폴더 위치는 /P로 지정할 수 있는 지원 폴더 위치를 기준으로 합니다. 출력 폴더에 대해 완전히 다른 위치를 설정하려면 /O에 대한 전체 디렉터리 경로를 지정합니다.

/P support_folder_path
지원 폴더 경로를 설정합니다. 기본적으로 /PSQLdiag 실행 파일이 있는 폴더로 설정됩니다. 지원 폴더에는 XML 구성 파일, Transact-SQL 스크립트 및 진단 수집 중에 유틸리티가 사용하는 기타 파일과 같은 SQLdiag 지원 파일이 포함됩니다. 이 옵션을 사용하여 대체 지원 파일 경로를 지정하는 경우 SQLdiag는 필요한 지원 파일을 지정된 폴더에 복사합니다(아직 없는 경우).

참고

현재 폴더를 지원 경로로 설정하려면 다음과 같이 명령줄에서 %cd% 를 지정합니다.

SQLDIAG /P %cd%

/N output_folder_management_option
SQLdiag가 시작될 때 출력 폴더를 덮어쓰거나 이름을 바꿀지 여부를 설정합니다. 사용 가능한 옵션:

1 = 출력 폴더를 덮어씁니다(기본값).

2 = SQLdiag가 시작되면 출력 폴더의 이름을 SQLDIAG_00001, SQLDIAG_00002 등으로 바꿉니다. 현재 출력 폴더의 이름을 바꾼 다음 SQLdiag 는 기본 출력 폴더 SQLDIAG에 출력을 씁니다.

참고

SQLdiag 는 시작할 때 현재 출력 폴더에 출력을 추가하지 않습니다. 대신 기본 출력 폴더를 덮어쓰거나(옵션 1) 폴더의 이름을 바꾼 다음(옵션 2) SQLDIAG라는 새 기본 출력 폴더에 출력을 씁니다.

/M machine1 [ machine2 machineN] | @machinelistfile
구성 파일에 지정된 컴퓨터를 재정의합니다. 기본적으로 구성 파일은 SQLDiag.Xml이거나 /I 매개 변수로 설정됩니다. 둘 이상의 컴퓨터를 지정할 때는 각 컴퓨터 이름을 공백으로 구분합니다.

@machinelistfile을 사용하면 구성 파일에 저장할 컴퓨터 목록 파일 이름이 지정됩니다.

/C file_compression_type
SQLdiag 출력 폴더 파일에서 사용되는 파일 압축 유형을 설정합니다. 사용 가능한 옵션:

0 = 없음(기본값)

1 = NTFS 압축 사용

/B [+]start_time
진단 데이터 수집을 시작할 날짜 및 시간을 다음 형식으로 지정합니다.

YYYYMMDD_HH:MM:SS

시간은 24시간 표기법을 사용하여 지정됩니다. 예를 들어 오후 2시는 14:00:00으로 지정해야 합니다.

날짜(HH:MM:SS에만 해당) 없이 + 를 사용하여 현재 날짜 및 시간을 기준으로 하는 시간을 지정합니다. 예를 들어 /B +02:00:00을 지정하는 경우 SQLdiag는 정보 수집을 시작하기 2시간 전에 대기합니다.

+과(와) 지정한 start_time 사이에 공백을 삽입하지 마세요.

지정한 시작 시간이 과거일 경우 SQLdiag 에서 강제로 시작 날짜를 변경하여 시작 날짜와 시간을 미래 시간으로 설정합니다. 예를 들어 /B 01:00:00을 지정하고 현재 시간이 08:00:00인 경우 SQLdiag는 시작 날짜가 다음 날이 되도록 강제로 시작 날짜를 변경합니다.

SQLdiag는 유틸리티가 실행 중인 컴퓨터에서 현지 시간을 사용합니다.

/E [+]stop_time
진단 데이터 수집을 중지할 날짜 및 시간을 다음 형식으로 지정합니다.

YYYYMMDD_HH:MM:SS

시간은 24시간 표기법을 사용하여 지정됩니다. 예를 들어 오후 2시는 14:00:00으로 지정해야 합니다.

날짜(HH:MM:SS에만 해당) 없이 +을(를) 사용하여 시작 날짜 및 시간을 기준으로 하는 시간을 지정합니다. 예를 들어 시작 시간과 종료 시간을 /B +02:00:00 /E +03:00:00으로 지정하면 SQLdiag 에서는 2시간 후부터 정보 수집을 시작하고 3시간 동안 정보를 수집한 다음 중지하고 끝냅니다. /B를 지정하지 않으면 SQLdiag는 진단 수집을 즉시 시작하고 /E에서 지정한 날짜와 시간에 끝납니다.

+과(와) 지정한 start_time 또는 end_time 사이에 공백을 삽입하지 마세요.

SQLdiag는 유틸리티가 실행 중인 컴퓨터에서 현지 시간을 사용합니다.

/A SQLdiag_application_name
동일한 SQL Server 인스턴스에 대해 여러 SQLdiag 유틸리티 인스턴스를 실행할 수 있도록 합니다.

SQLdiag_application_name 은 서로 다른 SQLdiag인스턴스를 식별합니다. SQLdiag_application_name 인스턴스와 SQL Server 인스턴스 이름 사이에는 관계가 없습니다.

SQLdiag_application_name을 사용하여 SQLdiag 서비스의 특정 인스턴스를 시작하거나 중지할 수 있습니다.

예시:

SQLDIAG START /A SQLdiag_application_name

또한 /R 옵션과 함께 사용하여 특정 SQLdiag 인스턴스를 서비스로 등록할 수 있습니다. 예시:

SQLDIAG /R /A SQLdiag_application_name

참고

SQLdiagSQLdiag_application_name에 대해 지정한 인스턴스 이름 앞에 DIAG$를 자동으로 붙입니다. 이는 SQLdiag를 서비스로 등록하는 경우 합리적인 서비스 이름을 제공합니다.

/T { tcp [ ,port ] | np | lpc }
지정된 프로토콜을 사용하여 SQL Server의 인스턴스에 연결합니다.

tcp [,port]
TCP/IP(Transmission Control Protocol/Internet Protocol)입니다. 선택 사항으로 연결할 포트 번호를 지정할 수 있습니다.

np
명명된 파이프 기본적으로 SQL Server의 기본 인스턴스는 명명된 파이프 \\.\pipe\sql\query\\.\pipe\MSSQL$<instancename>\sql\query에서 명명된 인스턴스를 수신합니다. 대체 파이프 이름을 사용하여 SQL Server 인스턴스에 연결할 수 없습니다.

lpc
로컬 프로시저 호출입니다. 클라이언트가 동일한 컴퓨터의 SQL Server 인스턴스에 연결하는 경우 공유 메모리 프로토콜을 사용할 수 있습니다.

/Q
자동 모드에서 SQLdiag를 실행합니다. /Q 는 암호 프롬프트 등 모든 프롬프트를 표시하지 않습니다.

/G
제네릭 모드에서 SQLdiag 를 실행합니다. /G가 지정된 경우 시작 시 SQLdiag는 SQL Server 연결 검사를 적용하거나 사용자가 sysadmin 고정 서버 역할의 멤버인지 확인하지 않습니다. 대신, SQLdiag는 사용자가 요청된 각 진단을 수집할 수 있는 적절한 권한이 있는지 여부를 확인하기 위해 Windows로 연기합니다.

/G를 지정하지 않으면 SQLdiag에서 사용자가 Windows Administrators 그룹의 멤버인지 확인하고 Administrators 그룹 멤버가 아닐 경우 SQL Server 진단 정보를 수집하지 않습니다.

/R
SQLdiag 를 서비스로 등록합니다. SQLdiag 를 서비스로 등록할 때 지정하는 모든 명령줄 인수는 나중에 서비스를 실행할 때 사용할 수 있도록 보관됩니다.

SQLdiag가 서비스로 등록되면 기본 서비스 이름은 SQLDIAG입니다. /A 인수를 사용하여 서비스 이름을 변경할 수 있습니다.

다음과 같이 START 명령줄 인수를 사용하여 서비스를 시작할 수 있습니다.

SQLDIAG 시작

다음과 같이 net start 명령을 사용하여 서비스를 시작할 수도 있습니다.

net start SQLDIAG

/U
SQLdiag를 서비스로 등록 취소합니다.

명명된 SQLdiag 인스턴스의 등록을 취소하는 경우에는 /A 인수도 사용합니다.

/L
시작 시간 또는 종료 시간도 각각 /B 또는 /E 인수로 지정된 경우 연속 모드에서 SQLdiag를 실행합니다. 예약된 종료로 인해 진단 정보 수집이 중지되면SQLdiag 가 자동으로 다시 시작됩니다. 예를 들어 /E 또는 /X 인수를 사용합니다.

참고

시작 시간 또는 종료 시간이 /B/E 명령줄 인수를 사용하여 지정되지 않은 경우 SQLdiag/L 인수를 무시합니다.

/L 은 서비스 모드를 나타내는 인수가 아닙니다. SQLdiag를 서비스로 실행할 때 /L을 사용하려면 서비스를 등록할 때 명령줄에서 지정합니다.

/X
스냅샷 모드에서 SQLdiag를 실행합니다. SQLdiag는 구성된 모든 진단의 스냅샷을 생성한 다음 자동으로 종료됩니다.

START | STOP | STOP_ABORT
SQLdiag 서비스를 시작하거나 중지합니다. STOP_ABORT는 현재 수집 중인 진단 수집을 완료하지 않고 서비스가 가능한 한 빨리 종료되도록 합니다.

이러한 서비스 제어 인수를 사용하는 경우 명령줄에서 사용되는 첫 번째 인수여야 합니다. 예시:

SQLDIAG 시작

명명된 SQLdiag 인스턴스를 지정하는 /A인수만 START, STOP또는 STOP_ABORT 와 함께 사용하여 특정 SQLdiag 서비스 인스턴스를 제어할 수 있습니다. 예시:

SQLDIAG START /A SQLdiag_application_name

보안 요구 사항

SQLdiag가 제네릭 모드에서 실행되지 않는 한(/G 명령줄 인수를 지정하여) SQLdiag를 실행하는 사용자는 Windows Administrators 그룹의 멤버이자 SQL Server sysadmin 고정 서버 역할의 멤버여야 합니다. 기본적으로 SQLdiag에서는 Windows 인증을 사용하여 SQL Server에 연결하지만 SQL Server 인증도 지원합니다.

성능 고려 사항

SQLdiag 실행의 성능 효과는 수집하도록 구성한 진단 데이터의 유형에 따라 달라집니다. 예를 들어 SQL Server Profiler 추적 정보를 수집하도록 SQLdiag를 구성한 경우 추적하도록 선택하는 이벤트 클래스가 많을수록 서버 성능에 더 많은 영향을 줍니다.

SQLdiag를 실행할 때 성능에 주는 영향은 구성한 진단 정보를 개별적으로 수집할 때 드는 노력을 모두 합한 것과 거의 같습니다. 예를 들어 SQLdiag를 사용하여 추적을 수집하면 SQL Server Profiler를 사용하여 추적을 수집하는 것과 동일한 성능 비용이 발생합니다. SQLdiag 사용의 성능 영향은 무시할 수 있습니다.

필요한 디스크 공간

SQLdiag는 다양한 유형의 진단 정보를 수집할 수 있으므로 SQLdiag를 실행하는 데 필요한 사용 가능한 디스크 공간은 다양합니다. 수집되는 진단 정보의 양은 서버가 처리하는 워크로드의 특성과 볼륨에 따라 몇 메가바이트에서 몇 기가바이트까지 달라질 수 있습니다.

구성 파일

시작 시 SQLdiag는 지정된 구성 파일 및 명령줄 인수를 읽습니다. 사용자는 구성 파일에 SQLdiag 가 구성 파일에 수집할 진단 정보 유형을 지정합니다. 기본적으로 SQLdiag는 도구가 실행될 때마다 추출되고 SQLdiag 유틸리티 시작 폴더에 있는 SQLDiag.Xml 구성 파일을 사용합니다. 구성 파일은 SQLdiag가 실행될 때마다 실행 파일에서 유틸리티 시작 디렉터리로 추출되는 XML 스키마 SQLDiag_schema.xsd를 사용합니다.

구성 파일 편집

SQLDiag.Xml을 복사 및 편집하여 SQLdiag 에서 수집하는 진단 데이터의 유형을 변경할 수 있습니다. 구성 파일을 편집할 때는 항상 Management Studio와 같은 XML 스키마에 대해 구성 파일의 유효성을 검사할 수 있는 XML 편집기를 사용합니다. SQLDiag.Xml을 직접 편집하면 안 됩니다. 대신 SQLDiag.Xml을 복사하고 새 파일 이름으로 바꿔 같은 폴더에 저장합니다. 그런 다음 새 파일을 편집하고 /I 인수를 사용하여 SQLdiag에 전달합니다.

SQLdiag를 서비스로 실행할 때 구성 파일 편집

이미 SQLdiag 를 서비스로 실행한 경우 구성 파일을 편집하려면 /U 명령줄 인수를 지정하여 SQLDIAG 서비스의 등록을 취소한 다음 /R 명령줄 인수를 사용하여 이 서비스를 다시 등록합니다. 서비스를 등록 취소하고 다시 등록하면 Windows 레지스트리에 캐시된 이전 구성 정보가 제거됩니다.

출력 폴더

/O 인수를 사용하여 출력 폴더를 지정하지 않으면 SQLdiagSQLdiag 시작 폴더 아래에 SQLDIAG라는 하위 폴더를 만듭니다. SQL Server Profiler와 같이 추적 정보의 양이 많은 진단 정보를 수집하는 경우 로컬 드라이브의 출력 폴더에 요청된 진단 정보 출력을 저장할 수 있는 충분한 공간이 있는지 확인합니다.

SQLdiag를 다시 시작하면 현재 출력 폴더의 내용을 덮어씁니다. 이를 방지하려면 명령줄에서 /N 2를 지정합니다.

데이터 수집 프로세스

SQLdiag가 시작되면 SQLDiag.Xml에 지정된 진단 데이터를 수집하는 데 필요한 초기화 검사를 수행합니다. 이 프로세스는 몇 초 정도 걸릴 수 있습니다. SQLdiag 를 콘솔 애플리케이션으로 실행하는 경우 진단 데이터 수집을 시작하면 SQLdiag 에서 수집을 시작했으며 Ctrl+C를 눌러 중지할 수 있음을 알리는 메시지가 표시됩니다. SQLdiag가 서비스로 실행되면 유사한 메시지가 Windows 이벤트 로그에 기록됩니다.

SQLdiag를 사용하여 재현할 수 있는 문제를 진단하는 경우 서버에서 문제를 재현하기 전에 이 메시지가 수신될 때까지 기다립니다.

SQLdiag 에서는 대부분의 진단 데이터를 병렬로 수집합니다. Windows 성능 로그 및 이벤트 로그에서 정보를 수집하는 경우를 제외하고 모든 진단 정보는 SQL Server sqlcmd 유틸리티 또는 Windows 명령 프로세서와 같은 도구에 연결하여 수집합니다. SQLdiag는 컴퓨터당 하나의 작업자 스레드를 사용하여 이러한 다른 도구의 진단 데이터 수집을 모니터링하며, 종종 여러 도구가 완료되기를 동시에 대기합니다. 수집이 진행되는 동안 SQLdiag 는 각 진단의 출력을 출력 폴더로 라우팅합니다.

데이터 수집 중지

SQLdiag에서 진단 데이터 수집을 시작한 후에는 CTRL+C를 통해 파일을 수동으로 중지하거나, sqldiag.stop 파일을 만들거나, 지정된 시간에 중지하도록 구성하지 않는 한 계속 수행됩니다. /E 인수를 사용하거나 /X 인수를 사용하여 특정 시간에 중지하도록 SQLdiag를 구성할 수 있습니다. 그러면 SQLdiag가 스냅샷 모드에서 실행됩니다.

SQLdiag가 중지되면 시작된 모든 진단이 중지됩니다. 예를 들어 수집 중인 SQL Server Profiler 추적이 중지되고 실행 중인 Transact-SQL 스크립트 실행이 중지되며 데이터를 수집하는 동안 발생한 모든 하위 프로세스가 중지됩니다. 진단 데이터 수집이 완료되면 SQLdiag 가 종료됩니다.

콘솔 애플리케이션으로 실행할 때 SQLdiag를 중지하는 방법

SQLdiag를 콘솔 애플리케이션으로 실행하는 경우 SQLdiag가 실행 중인 콘솔 창에서 Ctrl+C를 눌러 중지합니다. Ctrl+C를 누르면 SQLDiag 데이터 수집이 종료되고 프로세스가 종료될 때까지 기다려야 하며 몇 분 정도 걸릴 수 있음을 알리는 메시지가 콘솔 창에 표시됩니다.

Ctrl+C를 두 번 눌러 모든 자식 진단 프로세스를 종료하고 즉시 애플리케이션을 종료합니다.

서비스로 실행하는 SQLdiag를 중지하려면

SQLdiag를 서비스로 실행하는 경우 SQLdiag 시작 폴더에서 SQLDiag STOP을 실행하여 중지합니다. 또는 Services.msc 애플릿에서 SQLDiag 서비스를 중지할 수 있습니다.

참고

SQLdiag 서비스 일시 중지는 지원되지 않습니다. SQLdiag 서비스를 일시 중지하려고 하면 SQLdiag 서비스를 일시 중지할 때 수집한 진단 수집이 완료된 후 중지됩니다. SQLdiag를 중지한 후 다시 시작하면 애플리케이션이 다시 시작되고 출력 폴더를 덮어씁니다. 출력 폴더를 덮어쓰지 않도록 하려면 명령줄에서 /N 2를 지정합니다.

동일한 컴퓨터에서 여러 SQLdiag 인스턴스를 실행하는 경우 서비스를 중지할 때 명령줄에 SQLdiag 인스턴스 이름을 전달할 수도 있습니다. 예를 들어 Instance1이라는 SQLdiag 인스턴스를 중지하려면 다음 구문을 사용합니다.

SQLDIAG STOP /A Instance1  

참고

/ASTART, STOP 또는 STOP_ABORT와 함께 사용할 수 있는 유일한 명령줄 인수입니다. 서비스 제어 동사 중 하나를 사용하여 명명된 SQLdiag 인스턴스를 지정해야 하는 경우 이전 구문 예제와 같이 명령줄에서 제어 동사 뒤 /A를 지정합니다. 제어 동사를 사용하는 경우 명령줄의 첫 번째 인수여야 합니다.

최대한 빨리 서비스를 중지하려면 유틸리티 시작 폴더에서 SQLDIAG STOP_ABORT를 실행합니다. 이 명령은 완료될 때까지 기다리지 않고 현재 수행 중인 진단 수집을 중단합니다.

참고

SQLDiag STOP 또는 SQLDIAG STOP_ABORT를 사용하여 SQLdiag 서비스를 중지합니다. SQLdiag 또는 기타 SQL Server 서비스를 중지할 때는 Windows 서비스 콘솔을 사용하지 마세요.

sqldiag.stop 파일을 사용하여 SQLDiag를 중지하는 방법

또한 SQLDiag는 유틸리티의 \Output 폴더에서 이름이 sqldiag.stop인 파일을 찾으면 자동으로 종료됩니다. 이 옵션은 SQLDiag가 콘솔 앱 또는 서비스로 실행되는지 여부에 관계없이 적용됩니다. 일부 이벤트가 발생한 후 프로그래밍 방식으로 SQLDiag를 종료하려는 경우, .stop 파일을 만드는 것이 유용할 수 있지만 이 이벤트가 발생할 시간을 미리 알 수는 없습니다. sqldiag.stop 파일의 내용은 관련이 없습니다. 파일을 수동으로 만드는 것 외에도 한 가지 옵션은 생성할 일괄 처리 파일에서 다음과 같은 명령을 사용하는 것입니다. sqldiag.stop

ECHO abc > F:\PSSDIAG\Output\sqldiag.stop

다른 옵션은 PowerShell을 사용하는 것입니다.

Set-Content -Value "stop please" -Path "G:\pssdiag\output\sqldiag.stop"

자동으로 SQLdiag 시작 및 중지

지정한 시간에 진단 데이터 수집을 자동으로 시작하고 중지하려면 24시간 표기법을 사용하여 /Bstart_time/Estop_time 인수를 사용합니다. 예를 들어 약 02:00:00에 일관되게 나타나는 문제를 해결하는 경우 01:45에 진단 데이터 수집을 자동으로 시작하고 03:00:00에 자동으로 중지하도록 SQLdiag를 구성할 수 있습니다. /B/E 인수를 사용하여 시작 및 중지 시간을 지정합니다. 24시간제 표시법을 사용하여 정확한 시작 및 중지 날짜와 시간을 일반적인 YYYYMMDD_HH:MM:SS 형식으로 지정합니다. 다음은 01:45에 데이터 수집을 시작하고 3:00에 중지합니다.

sqldiag /B 01:45:00 /E 03:00:00  

상대 시작 또는 중지 시간을 지정하려면 다음 예제와 같이 +(으)로 시작 및 중지 시간을 접두사로 사용하고 날짜 부분(YYYYMMDD_)을 생략합니다. 이렇게 하면 SQLdiag 는 정보 수집을 시작하기 전에 1시간 동안 기다린 다음, 중지 및 종료되기 전에 2.5시간 동안 정보를 수집합니다.

sqldiag /B +01:00:00 /E +02:30:00  

상대적인 start_time을 지정하면 현재 날짜 및 시간에 대한 상대 시간에 SQLdiag가 시작됩니다. 상대적인 end_time 을 지정하면 지정한 start_time 에 대한 상대 시간에 SQLdiag가 종료됩니다. 지정한 시작 및 종료 시간이 과거일 경우 SQLdiag 에서 강제로 시작 날짜를 변경하여 시작 날짜와 시간을 미래 시간으로 설정합니다.

이는 선택한 시작 날짜와 종료 날짜에 중요한 영향을 미칩니다. 다음 예제를 참조하세요.

sqldiag /B +01:00:00 /E 08:30:00  

현재 시간이 08:00이면 진단 수집이 시작되기 전에 종료 시간이 지나갑니다. SQLDiag는 시작 및 종료 날짜가 과거에 발생하는 경우 이를 다음 날로 자동 조정하므로 이 예제에서 진단 수집은 오늘 09:00에 시작되고(현재 + 사용 1시간 후로 상대 시작 시간이 지정됨) 다음 날 아침 08:30까지 수집을 계속합니다.

SQLdiag를 중지하고 다시 시작하여 일일 진단 수집

SQLdiag를 수동으로 시작 및 중지하지 않고도 매일 지정된 진단 집합을 수집하려면 /L 인수를 사용합니다. /L 인수를 사용하면 예약된 종료 후 자동으로 다시 시작하여 SQLdiag가 지속적으로 실행됩니다. /L을 지정하고 SQLdiag/E 인수로 지정된 종료 시간에 도달했거나 /X 인수를 사용하여 스냅샷 모드에서 실행 중이기 때문에 중지되면 SQLdiag가 종료되는 대신 다시 시작됩니다.

다음 예제에서는 진단 데이터 수집이 03:00:00~05:00:00 사이에 발생한 후 SQLdiag가 연속 모드로 실행되어 자동으로 다시 시작되도록 지정합니다.

sqldiag /B 03:00:00 /E 05:00:00 /L  

다음 예제에서는 03:00:00에 진단 데이터 스냅샷을 생성한 후 SQLdiag가 연속 모드로 실행되어 자동으로 다시 시작되도록 지정합니다.

sqldiag /B 03:00:00 /X /L  

SQLdiag를 서비스로 실행

SQLdiag를 사용하여 오랜 시간 동안 진단 데이터를 수집해야 할 때, SQLdiag가 실행 중인 컴퓨터에서 로그아웃해야 하는 경우 서비스로 실행할 수 있습니다.

SQLDiag를 등록하여 서비스로 실행하려면

명령줄에서 /R 인수를 지정하여 SQLdiag 를 등록하고 서비스로 실행할 수 있습니다. 그러면 SQLDiag 가 서비스로 실행되도록 등록됩니다. SQLdiag 서비스 이름은 SQLDIAG입니다. SQLdiag 를 서비스로 등록할 때 명령줄에서 지정한 다른 모든 인수는 보관되어 서비스를 시작할 때 다시 사용됩니다.

기본 SQLDIAG 서비스 이름을 변경하려면 /A 명령줄 인수를 사용하여 다른 이름을 지정합니다. SQLdiag/A로 지정된 모든 SQLdiag 인스턴스 이름에 DIAG$를 자동으로 접두사로 추가하여 합리적인 서비스 이름을 만듭니다.

SQLDIAG 서비스의 등록을 취소하려면

서비스 등록을 취소하려면 /U 인수를 지정합니다. SQLdiag를 서비스로 등록 취소하면 서비스의 Windows 레지스트리 키도 삭제됩니다.

SQLDIAG 서비스를 다시 시작하거나 중지하는 방법

SQLDIAG 서비스를 시작하거나 다시 시작하려면 명령줄에서 SQLDiag START 를 실행합니다.

/A 인수를 사용하여 여러 SQLdiag 인스턴스를 실행하는 경우 서비스를 시작할 때 명령줄에 SQLdiag 인스턴스 이름을 전달할 수도 있습니다. 예를 들어 Instance1이라는 SQLdiag 인스턴스를 시작하려면 다음 구문을 사용합니다.

SQLDIAG START /A Instance1  

net start 명령을 사용하여 SQLDIAG 서비스를 시작할 수도 있습니다.

SQLdiag를 다시 시작하면 현재 출력 폴더의 내용을 덮어씁니다. 이를 방지하려면 명령줄에서 /N 2를 지정하여 유틸리티가 시작될 때 출력 폴더의 이름을 바꿉니다.

SQLdiag 서비스 일시 중지는 지원되지 않습니다.

여러 SQLdiag 인스턴스 실행

명령줄에서 /ASQLdiag_application_name을 지정하여 동일한 컴퓨터에서 여러 SQLdiag 인스턴스를 실행합니다. 이는 동일한 SQL Server 인스턴스에서 동시에 다양한 진단 집합을 수집하는 데 유용합니다. 예를 들어 경량 데이터 수집을 지속적으로 수행하도록 명명된 SQLdiag 인스턴스를 구성할 수 있습니다. 그런 다음 SQL Server에서 특정 문제가 발생하는 경우 기본 SQLdiag 인스턴스를 실행하여 해당 문제에 대한 진단을 수집하거나 Microsoft 고객 지원 서비스에서 문제 진단을 위해 수집하도록 요청한 진단 집합을 수집할 수 있습니다.

클러스터형 SQL Server 인스턴스에서 진단 데이터 수집

SQLdiag는 클러스터형 SQL Server 인스턴스에서 진단 데이터 수집을 지원합니다. 클러스터형 SQL Server 인스턴스에서 진단 정보를 수집하려면 SQLDiag.Xml 구성 파일에서 <Machine> 요소의 name 특성에 대해 "."를 지정해야 하며 명령줄에서 /G 인수를 지정하면 안 됩니다. 기본적으로 "."는 구성 파일의 이름 특성에 대해 지정되며 /G 인수가 꺼져 있습니다. 일반적으로 클러스터형 SQL Server 인스턴스에서 수집할 때 구성 파일을 편집하거나 명령줄 인수를 변경할 필요가 없습니다.

"."를 컴퓨터 이름으로 지정하면 SQLdiag에서는 컴퓨터가 클러스터에서 실행 중임을 감지하고 해당 클러스터에 설치된 모든 가상 SQL Server 인스턴스에서 동시에 진단 정보를 검색합니다. 컴퓨터에서 실행 중인 SQL Server 가상 인스턴스 중 하나에서만 진단 정보를 수집하려면 SQLDiag.Xml에서 <Machine> 요소의 name 특성에 해당 가상 SQL Server을 지정합니다.

참고

클러스터링된 SQL Server 인스턴스에서 SQL Server Profiler 추적 정보를 수집하려면 클러스터에서 관리 공유(ADMIN$)를 사용하도록 설정해야 합니다.

추가 참고

명령 프롬프트 유틸리티 참조(데이터베이스 엔진)