Microsoft로 로그인
로그인하거나 계정을 만드세요.
안녕하세요.
다른 계정을 선택하세요.
계정이 여러 개 있습니다.
로그인할 계정을 선택하세요.

요약

Sqldumper 유틸리티는 Microsoft SQL Server에 포함 되어 있습니다. 이 문서에서는 Sqldumper 유틸리티를 사용 하 여 Watson 오류 보고에 대 한 덤프 파일을 생성 하거나 디버깅 작업을 수행 하는 방법을 설명 합니다.

참고Sqldumper 유틸리티 외에도 다음과 같은 메서드도 사용할 수 있습니다.

경고 프로세스 덤프 파일을 생성 하면 서비스 가용성 (이 SQL Server)에 영향을 줄 수 있으며, 항상 컨텍스트 (장애 조치 클러스터 인스턴스 및 가용성 그룹)에서 리소스 장애 조치를 트리거합니다. 덤프 파일을 생성 하는 데 사용 되는 옵션은 큰 차이를 만듭니다. 덤프 생성 및 덤프 형식 섹션 의 영향 을 확인 해야 합니다.

클러스터 된 SQL Server 또는 AG (AlwaysOn 가용성 그룹) 인스턴스를 호스트 하는 SQL server에서 SQL Server 프로세스 덤프 파일 (특히 필터링 된 덤프 파일 또는 전체 덤프 파일)을 캡처하면, 덤프 파일을 완료 하는 데 너무 오래 걸리는 경우 클러스터 된 SQL Server 또는 AG가 다른 노드로 장애 조치 될 수 있습니다. 잠재적인 장애 조치를 방지 하려면 덤프 파일을 캡처하기 전에 다음 설정을 사용 하 고 덤프 파일을 가져온 후에 변경 내용을 다시 되돌릴 수 있습니다.

  • FCI (클러스터 된 SQL Server)의 경우 클러스터 관리자에서 SQL Server 리소스를 마우스 오른쪽 단추로 클릭 하 고 정책 탭에서 "리소스 실패, 다시 시작 안 함"을 선택 합니다.

  • AG의 경우 다음 설정을 모두 적용 합니다.

    • 모든 복제본에 대해 세션 제한 시간 (예: 120 초)을 늘립니다. SQL Server Management Studio에서 구성할 복제본을 마우스 오른쪽 단추로 클릭 한 다음 속성을 클릭 합니다. 세션 시간 제한 (초) 필드를 120 초로 변경 합니다. 자세한 내용은 가용성 복제본에 대 한 세션 제한 기간 변경 (SQL Server)을 참조 하세요.

    • 모든 복제본의 "자동 장애 조치"를 "수동 장애 조치"로 변경 합니다. SQL Server Management Studio에서 복제본을 마우스 오른쪽 단추로 클릭 하 고 속성을 선택한 다음 속성 탭에서 모든 복제본의 "자동 장애 조치"를 "수동 장애 조치"로 변경 합니다. 자세한 내용은 가용성 복제본 (SQL Server)의 장애 조치 (Failover) 모드 변경을참조 하세요.

    • "LeaseTimeout"를 6만 ms (60 초)로 늘리고 HealthCheckTimeout를 9만 밀리초 (90 초)로 변경 합니다. 클러스터 관리자에서 AG 리소스를 마우스 오른쪽 단추로 클릭 하 고 속성을 선택한 다음 속성 탭으로 전환 하 여 두 설정을 모두 수정 합니다. 자세한 내용은 HealthCheckTimeout 속성 설정 구성을참조하세요.

추가 정보

수동으로 Sqldumper 유틸리티를 실행 하는 방법

SQL Server가 원래 유틸리티를 설치한 폴더의 컨텍스트에서 Sqldumper 유틸리티를 실행 합니다. 기본적으로 Sqldumper 유틸리티의 설치 경로는 다음과 같습니다. SQLServerInstallDrive: Files\Microsoft sql Server\90\Shared\SQLDumper.exeNote SQLServerInstallDrive 는 sql Server 2005을 설치한 드라이브의 자리 표시자입니다. Sqldumper 유틸리티를 사용 하 여 덤프 파일을 생성 하려면 다음 단계를 따릅니다.

  1. 다음 폴더를 엽니다. SQLServerInstallDrive: s e Files\Microsoft SQL Server \번호\ 공유메모이 폴더 경로에서 number 는 다음 중 하나에 대 한 자리 표시자입니다.

    • SQL Server 2017의 140

    • SQL Server 2016의 130

    • SQL Server 2014의 120

    • SQL Server 2012의 110

    • SQL Server 2008의 100

    • SQL Server 2005의 90

  2. Dbghelp 파일이이 폴더에 있는지 확인 합니다.

  3. 시작, 실행을 차례로 클릭 하 고 Cmd를 입력 한 다음 확인을 클릭 합니다.

  4. 명령 프롬프트에서 다음 명령을 입력한 후 Enter 키를 누릅니다. cd SQLServerInstallDrive:\Program Files\Microsoft SQL Server\number\Shared참고이 폴더 경로에서 number 는 앞에서 설명한 대로 SQL Server 버전과 변경 되는 자리 표시자입니다.

  5. 특정 종류의 덤프 파일을 생성 하려면 명령 프롬프트에서 해당 명령을 입력 한 다음 enter 키를 누릅니다.

    • 전체 덤프 파일

      Sqldumper ProcessID 0 0x01100

    • 미니 덤프 파일

      Sqldumper ProcessID 0 0x0120

    • 간접적으로 참조 되는 메모리를 포함 하는 미니 덤프 파일입니다. 이 옵션을 선택 하는 것이 좋으며, 메모리 덤프 자동 생성 시 SQL Server에서 기본적으로 사용 됩니다.

      Sqldumper ProcessID 0 0x0128

    • 필터링 된 덤프 파일

      Sqldumper ProcessID 0 0x8100

    참고 ProcessID 는 덤프 파일을 생성 하려는 Windows 응용 프로그램의 프로세스 식별자에 대 한 자리 표시자입니다.

Sqldumper 유틸리티가 성공적으로 실행 되 면 유틸리티가 설치 된 폴더에 덤프 파일이 생성 됩니다. Sqldumper 유틸리티에서 생성 하는 덤프 파일의 파일 이름 패턴은 다음과 유사 합니다.

SQLDmprxxxx.mdmp 이 패턴에서 xxxx 는 동일한 폴더에 이름이 비슷한 다른 파일을 기준으로 결정 되는 증가 된 숫자입니다. 폴더에 지정 된 패턴의 파일 이름이 있는 파일이 이미 있는 경우에는 파일을 만든 날짜와 시간을 비교 하 여 원하는 파일을 식별 해야 할 수 있습니다.

추가 정보 및 고려 사항

SQLDumper는 특정 문제 (예외, 어설션, 비 생성 스케줄러 등)를 해결 하기 위해 메모리 덤프가 필요한 시나리오에서 주로 SQL Server 프로세스에 대 한 메모리 덤프를 생성 하는 데 있습니다. 이러한 경우에는 SQL Server가 SQLDumper를 호출 하 여 프로세스의 메모리 덤프를 생성 합니다. 메모리 덤프는 SQL Server 구성 관리자 에서 기본 위치 MSSQL\LOG\ 디렉터리를 사용 하 여 구성 된 경로에 저장 됩니다.  경우에 따라 덤프 크기가 너무 큰 경우에는 다음을 수행 하 여 경로를 수정할 수 있습니다. 

  1. SQL Server 구성 관리자 열기

  2. Sql Server 서비스 에서 조사 중인 sql server 찾기

  3. 해당 파일을 마우스 오른쪽 단추로 클릭 하 고 속성 을 선택한 다음 고급 탭으로 이동 합니다.

  4. 해당 덤프 디렉터리를 원하는 경로로 수정 하 고 확인을 클릭 합니다.

  5. 새 설정이 적용 되려면 가능 하면 SQL Server를 다시 시작 합니다.

Sqldumper 유틸리티를 수동으로 사용 하 여 Windows 응용 프로그램에 대 한 덤프 파일을 생성 하는 경우 덤프 파일은 Windows 응용 프로그램에서 현재 사용 중인 메모리 만큼 커질 수 있습니다. Sqldumper 유틸리티가 덤프 파일을 쓰는 드라이브에 사용 가능한 디스크 공간이 충분 한지 확인 합니다. Sqldumper 유틸리티를 사용할 디렉터리를 지정 하 여 덤프 파일을 쓸 수 있습니다. Sqldumper 유틸리티를 실행 하려면 디렉터리가 이미 존재 해야 합니다. 그렇지 않으면 Sqldumper 유틸리티를 실행할 수 없습니다. 덤프 파일의 위치로 UNC 경로를 사용 하지 마세요. 다음은 미니 덤프 파일의 덤프 파일 위치를 지정 하는 방법의 예입니다.

  1. 시작, 실행을 차례로 클릭 하 고 Cmd를 입력 한 다음 확인을 클릭 합니다.

  2. 명령 프롬프트에서 다음 명령을 입력한 후 Enter 키를 누릅니다.

    cd SQLServerInstallDrive:\Program Files\Microsoft SQL Server\number\Shared

    참고 이 폴더 경로에서 number 는 다음 중 하나에 대 한 자리 표시자입니다.

    • SQL Server 2017의 140

    • SQL Server 2016의 130

    • SQL Server 2014의 120

    • SQL Server 2012의 110

    • SQL Server 2008의 100

    • SQL Server 2005의 90

  3. 명령 프롬프트에서 다음 명령을 입력 하 고 enter 키를 누릅니다. Sqldumper.exe ProcessID 0 0x0128 0 MdumpPath참고 mdumppath 는 Sqldumper 유틸리티에서 덤프 파일을 작성 하려는 디렉터리의 자리 표시자입니다. 기본적으로 파일이 현재 폴더에 기록 됩니다.

전체 덤프 파일 또는 생성 될 필터링 된 덤프 파일을 지정 하는 경우 Sqldumper 유틸리티는 덤프 파일을 생성 하는 데 몇 분 정도 걸릴 수 있습니다. 시간은 다음 변수에 따라 달라 집니다.

  • Sqldumper 유틸리티가 현재 사용 중인 메모리 양

  • 유틸리티가 덤프 파일을 쓰는 드라이브의 속도

이 기간 동안 Sqldumper 유틸리티는 명령을 처리 하지 않습니다. 서버가 응답을 중지 한 것을 볼 수 있습니다. 또한 클러스터 장애 조치가 발생할 수 있습니다. Sqldumper 유틸리티를 실행 하려면 다음 방법 중 하나를 사용 하 여 Windows에 로그온 해야 합니다.

  • 컴퓨터에서 관리자 그룹의 구성원 인 계정을 사용 합니다.

  • SQL Server 서비스를 실행 하는 데 사용한 것과 동일한 사용자 계정을 사용 합니다.

원격 데스크톱 또는 터미널 서비스를 통해 Sqldumper 유틸리티가 제대로 작동 하려면 원격 데스크톱 또는 터미널 서비스를 콘솔 모드에서 시작 해야 합니다. 예를 들어 콘솔 모드에서 원격 데스크톱을 시작 하려면 시작, 실행을 차례로 클릭 하 고 mstsc/Console을 입력 한 다음 확인을 클릭 합니다. 대상 서버에서 Windows 2000를 실행 하는 경우 /console 옵션이 자동으로 무시 된다는 점에 주의 해야 합니다. 원격 데스크톱을 통해 서버에 연결할 수 있습니다. 그러나 콘솔 세션은 사용 하지 않습니다.

Sqldumper 유틸리티를 실행 한 후 현재 폴더에 덤프 파일이 생성 되지 않은 경우 명령줄에서 유틸리티가 생성 한 정보를 검토 하 여 오류의 가능한 원인을 확인 합니다. 이 정보는 또한 현재 디렉터리의 Sqldumper_errorlog 파일에 기록 됩니다. 다음은 두 가지 오류 메시지와 해당 원인입니다.

메시지 1

OpenProcess 실패-0x57-매개 변수가 잘못 됨

잘못 된 프로세스 ID가 Sqldumper 유틸리티에 전달 되었습니다.

메시지 2

잘못 된 스레드 id 값-<잘못 된 매개 변수> 매개 변수 오류

잘못 된 매개 변수가 Sqldumper 유틸리티에 전달 되었습니다. 다음 중 하 나와 유사한 오류 메시지가 생성 되는 경우이 메시지를 무시 해도 됩니다.

미니 덤프 6 동안 알 수 없는 콜백 유형 미니 덤프 7 동안 알 수 없는 콜백 유형

덤프 생성의 영향

사용자 모드 프로세스의 덤프가 요청 되는 경우 (이 문서에서 설명 하는 것 처럼 범위를 벗어난 운영 체제 커널 덤프와 대조적 이어야 하는 경우) 대상 프로세스 (여기서는 다음 SQLServer)는 파일 대상으로 덤프 콘텐츠를 직렬화 하는 데 걸리는 시간 동안 완전히 동결 됩니다.

고정은 Windows 클러스터링의 IsAlive 및 LooksAlive 구현과 같은 리소스 폴링 메커니즘을 포함 하 여 모든 사용자 요청 또는 진행 상황을 처리할 수 없음을 의미 합니다 (해당 상황을 처리 하는 방법에 대 한 자세한 내용은 ' 클러스터 장애 조치 및 Sqldumper 유틸리티 ' 절 참조). 벽면 시계 시간에 대 한 시간 제한에 따라 고정의 결과로 인해 문제가 발생할 수도 있습니다.

이전 문에서 파생 될 수 있으며, 여기서는 고정의 기간이 중요 한 요소 이며 주로 다음에 따라 제어 됩니다.

  • 선택한 덤프 유형

  • 메모리에서 SQL Server 프로세스의 크기이며, 기본 매개 변수를 실행 하는 단일 활성 인스턴스의 경우 서버의 전체 실제 RAM에 근접 하는 경우가 많습니다.

  • 덤프의 대상으로 사용 되는 디스크의 성능입니다.

또한 디스크에 size덤프 파일의 크기를 계획 해야 하며, 특히 여러 개의 덤프를 사용할 수 있는 경우, 그렇지 않은 경우에는 기본이 아닌 덤프 형식이 선택 되어 있는 경우에이를 고려해 야 합니다. ' 덤프 유형 ' 섹션 을 검토 하 여 예상 되는 내용을 확인 합니다. 기본적으로 일부 덤프 메서드는 SQL Server 인스턴스의 \Log 폴더에 덤프를 만들기 때문에 기본 간단한 구성에서는 시스템 디스크 및 SQL Server 용 데이터 + 로그 디스크 이기도 합니다. 해당 디스크를 포화로 만들면 SQL Server 및/또는 시스템 가용성에 심각한 영향을 줄 수 있습니다.

덤프 파일의 크기 및/또는 메모리 덤프 생성 시간을 줄이기 위해 최신 버전의 SQL Server에는 세 가지 주요 개선 사항이 추가 되었습니다.

  • 비트맵 필터링 메커니즘

  • 동일한 문제에서 반복 되는 덤프 제거

  • 오류 로그의 약식 출력

비트맵 필터링: sql server 2019 및 sql server 2017에 추가 된 새로운 비트맵 필터링 메커니즘 때문에 필터링 된 덤프 속도와 축소 크기가 향상 되었습니다. SQL Server는 필터링 된 덤프에서 제외할 메모리 페이지의 추적을 유지 하는 비트맵을 할당 합니다. Sqldumper는 비트맵을 읽고 다른 메모리 관리자 메타 데이터를 읽을 필요 없이 페이지를 필터링 합니다. "페이지 제외 비트맵을 사용할 수 있습니다." 및 "페이지 제외 비트맵을 사용할 수 없습니다."와 같이 SQL Server 오류 로그에 다음 메시지가 표시 됩니다.

SQL Server 2016

  • SQL Server 2016 SP2 CU13에서 시작 하는 비트맵 필터링은 기본적으로 사용 됩니다.

SQL Server 2017

  • CU15를 통한 RTM에서는 사용할 수 없습니다.

  • SQL Server 2017 CU16에서 T8089를 통해 비트맵 필터링을 사용 하도록 설정 하 고 해제 하 여 해제할 수 있습니다 T8089

  • SQL Server 2017 CU20부터 비트맵 필터링이 기본적으로 사용 됩니다. Trace 플래그 T8089는 더 이상 적용 되지 않으며, 설정 된 경우 무시 됩니다. T8095를 통해 비트맵 필터링을 사용 하지 않도록 설정할 수 있습니다.

SQL Server 2019

이는 SQL Server 2019 RTM에서 기본적으로 사용 하도록 설정 되어 있습니다. T8095를 통해 비활성화할 수 있습니다.

동일한 문제에 대해 반복 되는 덤프를 제거하면같은 문제에 대 한 R epeated 메모리 덤프가 제거 되었습니다. SQL 엔진은 스택 서명을 사용 하 여 예외가 이미 발생 한 경우 추적을 유지 하 고 이미 존재 하는 경우 새 메모리 덤프를 생성 하지 않습니다. 이는 액세스 위반, 스택 오버플로, 어설션 및 인덱스 손상 예외에 적용 됩니다. 이렇게 하면 메모리 덤프에 사용 되는 디스크 공간이 대폭 줄어들며, 덤프를 생성 하기 위해 프로세스가 일시적으로 중지 되지 않습니다. 이는 SQL Server 2019에 추가 되었습니다.

오류 로그의약식 출력 :단일 메모리 덤프의 SQL Server 오류 로그에서 생성 된 콘텐츠는 과부하가 걸릴 수는 없지만, 오류 로그의 텍스트 형식으로 모든 정보를 직렬화 하는 데 걸리는 시간 때문에 메모리 덤프 생성 프로세스를 느려지는 것도 가능 합니다. SQL Server 2019에서는 덤프 생성 시 발생 하는 오류 로그에 저장 된 콘텐츠가 크게 감소 하 고 다음과 같은 모양이 될 수 있습니다.

DateTime spidSpid * * 덤프 스레드-Spid = 0, EC = 0x0000015C7169BF40

DateTime spidSpid *

DateTime spidSpid * 사용자가 스택 덤프를 시작 했습니다. 이는 서버 예외 덤프가 아닙니다.

DateTime spidSpid *

덤프에 대 한 DateTime spidSPid 스택 서명은 0x00000000788399E5입니다.

DateTime spidSpid 외부 덤프 프로세스는 코드 0x20000001을 반환 합니다.

외부 덤프 프로세스에서 오류를 반환 했습니다.

이전 SQL Server에서는 사용자가 수동 덤프를 트리거한 경우 각 세션/스레드에 대 한 정보를 인쇄 합니다. 

덤프 형식

설명 된 메서드는 미니 덤프, 전체 덤프, 필터링 된 덤프 등 세 가지 유형의 덤프를 생성할 수 있습니다.

참조 메모리가 있는 미니 덤프는 프로세스의 모든 활성 스레드 ("스레드 스택")의 스냅샷과 스레드 스택과 일부 다른 주요 프로세스/스레드 데이터에서 참조 하는 메모리의 제한 된 추출입니다. 일반적으로 크기는 몇 mb 이며, 생성 하는 데 매우 빠르게 진행 됩니다 (1 초 미만). 대용량 서버 시스템 (SQL Server 프로세스에서 많은 수의 CPU를 간접적으로 제어 하는)을 사용 하면 20-30 MB가 초과 됩니다. 미니 덤프의 크기는 SQL Server 프로세스의 크기에 따라 늘어나지 않습니다. 이 덤프 유형은 예외, 스케줄러 문제, 래치 문제 등에 대해 자동으로 메모리 덤프를 생성할 때 SQL Server에 사용 되는 기본 유형입니다.

SQL Server는 기본 제공 계측의 일부로 일부 특정 상황에서 자동화 된 "진단 미니 덤프"를 생성 합니다. 따라서이 작업은 필요할 때 SQL Server가 자동으로 트리거할 수 있는 안전한 것으로 간주 됩니다.

전체 덤프는 활성 대상 프로세스 공간의 완전 한 복사본입니다. 따라서 모든 스레드 상태, 모든 프로세스 할당 메모리 및 로드 된 모든 모듈을 포함할 수 있습니다. 따라서 전체 덤프의 크기는 SQL Server 프로세스와 거의 동일 하므로 총 시스템 RAM 만큼 커질수 있습니다 .단일 SQL Server 인스턴스 전용 대형 서버에서는 수백 기가바이트 이상의 파일을 의미할 수 있습니다. 불필요 하 게 이러한 파일은 생성 하는 데 시간이 오래 걸리며,이로 인 한 중지를 유도 합니다. 덤프의 파일 대상에 대 한 디스크 성능은 시간을 고정 하는 데 중요 한 드라이버입니다. 이러한 종류의 덤프는 다음 형식 설명에서 설명 하는 대로 현재 SQL Server에는 거의 사용 되지 않습니다.

필터링 된 덤프: SQL Server를 실행 하는 일반적인 서버의 RAM 크기가 지속적으로 증가 함에 따라 전체 덤프가 더욱 복잡해졌습니다. 따라서 필터링 된 덤프는 구현 됨: 전체 덤프의 하위 집합으로, SQL Server와 관련 된 대규모 영역에서는 문제 해결을 위해 추가 되는 값 (일반적으로 데이터/인덱스 페이지, 일부 내부 캐시)을 가져오지 않으므로 디스크에 직렬화 되지 않습니다. Hekaton 데이터 페이지 및 로그 풀 메모리와 유사합니다. 이는 거의 모든 유용성을 유지 하면서 전체 덤프 보다 작은 파일을 생성 하며, 미니 덤프가 충분 하지 않은 대부분의 경우에는 전체 덤프를 기본 설정 옵션으로 바꿨습니다. 크기 감소와 전체 덤프는 매우 다양할 수 있지만, SQL Server 프로세스 크기의 30-60%에 해당 하는 큰 파일인 반면, 가장 좋은 안전한 여백을 유지 하는 최악의 옵션으로 전체 덤프 만큼 큰 크기를 계획 하는 것이 좋습니다. 필터링 된 덤프는 모든 경우에 전체 덤프 보다 생성 하는 것이 더 빠를 필요는 없으며, IO 수를 구현 하는 데 필요한 시간을 초과 하는 경우에는 디스크 속도와 CPU/RAM 속도가이에 영향 을 주므로이를 방지할 수 있습니다.

Sqldumper 유틸리티를 사용 하 여 Microsoft Windows 응용 프로그램에 대 한 요청 시 덤프 파일을 생성할 수 있습니다. 예를 들어 Microsoft SQL Server를 실행 하는 컴퓨터에서 사용자 요청에 응답 하지 않을 때 응용 프로그램 문제를 디버깅 하는 덤프 파일을 생성할 수 있습니다. 덤프 파일은 미니 덤프 파일 이거나 전체 덤프 파일 일 수 있습니다. 필터링 된 덤프 파일은 SQL Server의 컨텍스트에서만 적용 되 고 의미가 있습니다.. 그러나 일반적인 용도의 디버깅에는 Sqldumper 유틸리티를 사용할 수 없습니다. 일반 용도의 디버깅에 대 한 자세한 내용을 보려면 다음 Microsoft 웹 사이트를 방문 하세요.

http://www.microsoft.com/whdc/devtools/debugging/default.mspx

SQL Server 프로세스는 프로세스에 예외가 발생 하는 경우 Sqldumper 유틸리티를 내부적으로 호출 하 여 덤프 파일을 생성 합니다. SQL Server는 Sqldumper 유틸리티에 플래그를 전달 합니다. 추적 플래그를 사용 하 여 예외 또는 어설션에 대 한 컨텍스트에서 SQL Server가 유틸리티로 유틸리티에 전달 하는 플래그를 변경할 수 있습니다. 이러한 추적 플래그의 범위는 2540 ~ 2559입니다. 이러한 추적 플래그를 사용 하 여 특정 유형의 덤프 파일을 생성할 수 있습니다. 예를 들면 다음과 같습니다.

  • 추적 플래그 2551: 필터링 된 메모리 덤프 생성

  • 추적 플래그 2544: 전체 메모리 덤프 생성

  • 추적 플래그 8026: SQL Server가 덤프를 한 번 생성 한 후 덤프 트리거를 지웁니다.

두 개 이상의 추적 플래그가 활성 상태인 경우 가장 큰 메모리 덤프를 나타내는 옵션이 허용 됩니다. 예를 들어 추적 플래그 2551 및 2544을 사용 하는 경우 SQL Server는 전체 메모리 덤프를 만듭니다.

Microsoft Windows 응용 프로그램 프로세스 식별자를 얻는 방법

Sqldumper 유틸리티를 사용 하 여 덤프 파일을 생성 하려면 덤프 파일을 생성 하려는 Windows 응용 프로그램의 프로세스 식별자가 있어야 합니다. 프로세스 식별자를 얻으려면 다음 단계를 수행 합니다.

  1. CTRL + ALT + DELETE를 누른 다음 작업 관리자를 클릭 합니다.

  2. Windows 작업 관리자 대화 상자에서 프로세스 탭을 클릭 합니다.

  3. 보기 메뉴에서 열 선택을클릭 합니다.

  4. 열 선택 대화 상자에서 PID (프로세스 식별자) 확인란을 클릭 하 여 선택한 다음 확인을 클릭 합니다.

  5. 덤프 파일을 생성 하려는 Windows 응용 프로그램의 프로세스 식별자를 살펴봅니다. SQL Server 응용 프로그램의 경우 Sqlservr.exe 프로세스의 프로세스 식별자를 살펴봅니다.

  6. 작업 관리자를 닫습니다.

SQL Server 오류 로그 파일을 사용 하 여 컴퓨터에서 실행 되는 SQL Server 응용 프로그램의 프로세스 식별자를 가져올 수도 있습니다. 예를 들어 SQL Server 오류 로그 파일의 일부는 다음과 유사 합니다.

Date/Time Server Microsoft SQL Server 2005-9.00.1399.06 (Intel X86) 날짜/시간 Copyright (c) 1988-2005 Microsoft Corporation Windows NT 5.2 (빌드 3790: 서비스 팩 1)의 엔터프라이즈 버전 날짜/시간 서버 (c) 2005 Microsoft Corporation. Date/Time 서버 모든 권한이 예약 되었습니다. Date/Time 서버 서버 프로세스 ID는 3716입니다.

서버 프로세스 ID 뒤에 표시 되는 번호는 sqlservr.exe 프로세스의 프로세스 식별자입니다.

클러스터 장애 조치 및 Sqldumper 유틸리티

클러스터 장애 조치 시나리오에서 SQL Server 리소스 DLL은 장애 조치 (failover)가 발생 하기 전에 덤프 파일을 가져올 수 있습니다. Sql server 리소스 DLL이 SQL Server 리소스에 실패 한 것으로 확인 되 면 SQL Server 리소스 DLL이 Sqldumper 유틸리티를 사용 하 여 SQL Server 프로세스의 덤프 파일을 가져옵니다. Sqldumper 유틸리티가 덤프 파일을 성공적으로 생성 하 게 하려면 다음 세 가지 속성을 필수 구성 요소로 설정 해야 합니다.

  • SqlDumperDumpTimeOut 사용자 지정 시간 초과. 리소스 DLL이 덤프 파일이 완료 될 때까지 기다린 후 리소스 DLL이 SQL Server 서비스를 중지 합니다.

  • SqlDumperDumpPath Sqldumper 유틸리티가 덤프 파일을 생성 하는 위치입니다.

  • SqlDumperDumpFlags Sqldumper 유틸리티에서 사용 하는 플래그입니다.

속성 중 하나라도 설정 되지 않은 경우 Sqldumper 유틸리티는 덤프 파일을 생성할 수 없습니다. 리소스가 온라인 상태가 될 때마다 이벤트 로그와 클러스터 로그에 모두 경고 메시지가 기록 됩니다.

SQL Server 2012 이상

T-sql (ALTER SERVER CONFIGURATION) 명령을 사용 하 여 이러한 속성을 수정할 수 있습니다. 예를 들면 다음과 같습니다.

서버 구성 변경 장애 조치 클러스터 속성 설정 SqlDumperDumpTimeOut = 0,

서버 구성 변경 장애 조치 클러스터 속성 SqlDumperDumpPath = ' C:\temp\ ' 설정

서버 구성 변경 장애 조치 클러스터 속성 설정 SqlDumperDumpFlags = 296;

또는 PowerShell 스크립트를 사용할 수 있습니다. 예를 들어 명명 된 인스턴스 SQL2017A 다음과 같이 합니다.

Get-ClusterResource-Name "SQL Server (SQL2017AG)" | Set-ClusterParameter-Name "SqlDumperDumpPath"-Value "C:\temp"

Get-ClusterResource-Name "SQL Server (SQL2017AG)" | Set-ClusterParameter-Name "SqlDumperDumpFlags"-값 296

Get-ClusterResource-Name "SQL Server (SQL2017AG)" | Set-ClusterParameter-Name "SqlDumperDumpTimeOut"-값 0

설정이 적용 되었는지 확인 하려면 다음 PowerShell 명령을 실행 하면 됩니다.

Get-ClusterResource-Name "SQL Server (SQL2017AG)" | Get-ClusterParameter 변수

SQL Server 2008/2008 R2 또는 Windows 2012 이전 버전

클러스터 장애 조치 (failover)에 대 한 Sqldumper 유틸리티 속성을 설정 하려면 다음 단계를 따르세요.

  1. 시작, 실행을 차례로 클릭 하 고 Cmd를 입력 한 다음 확인을 클릭 합니다.

  2. 각 속성에 대해 명령 프롬프트에서 해당 명령을 입력 한 다음 enter 키를 누릅니다.

    • SqlDumperDumpFlags 속성 특정 종류의 덤프 파일에 대 한 SqlDumperDumpFlags 속성을 설정 하려면 명령 프롬프트에서 해당 명령을 입력 한 다음 enter 키를 누릅니다.

      • 모든 스레드 전체 덤프 파일

        • 기본 인스턴스

          클러스터 리소스 "SQL Server"/priv SqlDumperDumpFlags = 0x01100

        • 명명 된 인스턴스

          클러스터 리소스 "SQL Server (INSTANCE1)"/priv SqlDumperDumpFlags = 0x01100

      • 모든 스레드 미니 덤프 파일

        • 기본 인스턴스

          클러스터 리소스 "SQL Server"/priv SqlDumperDumpFlags = 0x0120

        • 명명 된 인스턴스

          클러스터 리소스 "SQL Server (INSTANCE1)"/priv SqlDumperDumpFlags = 0x0120

      • 모든 스레드 덤프 파일 필터링 됨

        • 기본 인스턴스

          클러스터 리소스 "SQL Server"/priv SqlDumperDumpFlags = 0x8100

        • 명명 된 인스턴스

          클러스터 리소스 "SQL Server (INSTANCE1)"/priv SqlDumperDumpFlags = 0x8100

    • SqlDumperDumpPath 속성 클러스터 리소스 "SQL Server"/priv SqlDumperDumpPath = DirectoryPathNote DirectoryPath 는 덤프 파일이 생성 되는 디렉터리의 자리 표시자 이며 큰따옴표 ("")로 지정 해야 합니다.

    • SqlDumperDumpTimeOut속성 클러스터 리소스 "SQL Server"/priv SqlDumperDumpTimeOut = 시간 제한메모시간 제한은 밀리초 (ms) 시간 제한의 자리 표시자입니다. 유틸리티가 SQL Server 프로세스의 덤프 파일을 생성 하는 데 걸리는 시간은 컴퓨터 구성에 따라 다릅니다. 메모리가 많은 컴퓨터의 경우에는 시간이 중요할 수 있습니다. 프로세스에 소요 되는 예상 시간을 얻으려면 Sqldumper 유틸리티를 사용 하 여 덤프 파일을 수동으로 생성 합니다. SqlDumperDumpTimeOut 속성에 유효한 값은 1만 Ms 에서 maxdword까지입니다. Maxdword DWORD 데이터 형식 (4294967295)의 범위에서 가장 높은 값을 나타냅니다.

설정을 사용할 수 있는지 확인 하려면 다음 명령을 실행 합니다. cluster resource "SQL Server" /priv " 클러스터 장애 조치 (failover)에 대 한 Sqldumper 유틸리티 속성을 제거 하려면 다음 단계를 따르세요.  

  1. 시작, 실행을 차례로 클릭 하 고 Cmd를 입력 한 다음 확인을 클릭 합니다.

  2. 특정 속성의 경우 명령 프롬프트에서 해당 명령을 입력 한 다음 enter 키를 누릅니다.

    • SqlDumperDumpFlags 속성

      • 기본 인스턴스 클러스터 리소스 "SQL Server"/priv: SqlDumperDumpFlags/usedefault

      • 명명 된 인스턴스 클러스터 리소스 "SQL Server (INSTANCE1)"/priv: SqlDumperDumpFlags/usedefault

    • SqlDumperDumpPath 속성

      • 기본 인스턴스 클러스터 리소스 "SQL Server"/priv: SqlDumperDumpPath/usedefault

      • 명명 된 인스턴스 클러스터 리소스 "SQL Server (INSTANCE1)"/priv: SqlDumperDumpPath/usedefault

    • SqlDumperDumpTimeOut 속성

      • 기본 인스턴스 클러스터 리소스 "SQL Server"/priv: SqlDumperDumpTimeOut/usedefault

      • 명명 된 인스턴스 클러스터 리소스 "SQL Server (INSTANCE1)"/priv: SqlDumperDumpTimeOut/usedefault

DBCC STACKDUMP를 사용 하는 방법

경우 DBCC STACKDUMP 명령을 사용 하면 SQL Server 인스턴스 설치의 로그 디렉터리에 메모리 덤프를 만드는 데 도움이 될 수 있습니다. 명령은 기본적으로 크기가 제한 되 고 SQL Server 프로세스의 상태를 반영 하는 데 적절 한 모든 스레드를 사용 하 여 미니 덤프를 만듭니다. SQL Server 클라이언트에서 다음 명령을 실행 하면 됩니다.

DBCC STACKDUMP

이 메서드를 사용 하 여 필터링 된 덤프를 만들려면 다음 명령을 사용 하 여 추적 플래그 2551를 설정 합니다.

dbcc traceon(2551, -1) 
go

dbcc stackdump

전체 덤프를 만들려면 추적 플래그 2544를 사용 합니다.

참고 덤프 파일을 얻은 후 에는 다음 명령을 사용 하 여 나중에 SQL Server 자체 진단 미니 덤프를 더 대용량의 덤프로 업그레이드 하는 것을 방지 해야 합니다.

DBCC TRACEOFF (TraceNumber, -1);   
GO

여기서 tracenumber는 이전에 2551 또는 2544과 같이 사용 하도록 설정한 추적 플래그입니다.

어떤 추적 플래그가 활성 상태로 유지 되는지 확실 하지 않은 경우 다음을 실행할 수 있습니다.

DBCC TRACESTATUS(-1)

빈 결과 집합은 traceflag이 활성 상태가 아님을 나타냅니다. 반대로 2551이 여전히 활성 상태 이면 다음이 표시 됩니다.

TraceFlag 상태 전역 세션

--------- ------ ------ -------

2551 1 1 0

참고DBCC TRACEON에서 사용 하도록 설정한 traceflags는 서비스를 다시 시작한 후 재설정 (제거) 됩니다.

Powershell 스크립트를 사용 하 여 SQLDumper를 사용 하 여 덤프 파일을 생성 하는 방법

  • 다음 코드를 ps1 파일로 저장 합니다 (예: SQLDumpHelper).

  • 다음 명령을 사용 하 여 관리자권한으로 명령 프롬프트에서 실행 합니다. Powershell.exe -File SQLDumpHelper.ps1

  • 또는 Windows PowerShell 콘솔에서 실행 하 고 다음 명령을사용 하 여 관리자 권한으로 실행 합니다. .\SQLDumpHelper.ps1

참고 시스템에서 PowerShell 스크립트를 실행 하지 않은 경우 다음과 같은 오류 메시지가 나타날 수 있습니다.

파일 ... 이 시스템에서 스크립트를 실행할 수 없기 때문에 SQLDumpHelper을 로드할 수 없습니다.

다음 단계에 따라이를 실행할 수 있도록 설정 해야 합니다.

  1. "관리자 권한으로 실행" 옵션을 사용 하 여 Windows PowerShell 콘솔을 시작 합니다. 컴퓨터의 관리자 그룹 구성원만 실행 정책을 변경할 수 있습니다.

  2. 서명 되지 않은 스크립트 실행을 다음 명령으로 사용 하도록 설정 합니다. Set-ExecutionPolicy RemoteSigned

    참고 이렇게 하면 로컬 컴퓨터에서 만든 서명 되지 않은 스크립트와 인터넷에서 서명 된 스크립트를 실행할 수 있습니다.

$isInt = $false $isIntValDcnt = $false $isIntValDelay = $false $SqlPidInt = 0 $NumFoler = "" $OneThruFour = "" $SqlDumpTypeSelection = "" $SSASDumpTypeSelection = "" $SSISDumpTypeSelection = "" $SQLNumfolder = 0 $SQLDumperDir = "" $OutputFolder = "" $DumpType = "0x0120" $ValidPid $SharedFolderFound = $false $YesNo = "" $ProductNumber = "" $ProductStr = ""

쓰기-호스트 "" 쓰기-호스트 "' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 쓰기-호스트 "이 스크립트는 하나 이상의 SQL Server 메모리 덤프를 생성 하는 데 도움이 됩니다." "다음에 대 한 선택 항목이 표시 된 쓰기-호스트"             -대상 SQL Server 프로세스 (둘 이상인 경우)             -메모리 덤프 형식             -개수 및 시간 간격 (여러 메모리 덤프 인 경우) 이 스크립트는 CTRL + C를 사용 하 여 중단할 수 있습니다. 쓰기-호스트 "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

관리자 권한에 대 한 #check SQLDumper와 같은 #debugging 도구는 메모리 덤프를 생성 하기 위해 관리자 권한이 필요 합니다.

if (-no ([WindowsPrincipal] [WindowsIdentity]:: GetCurrent ())). IsInRole ([보안 WindowsBuiltInRole]:: 관리자)) {      쓰기-경고 "메모리 덤프를 생성 하려면 관리자 권한이 필요 합니다! ' n이 스크립트를 관리자로 다시 실행 하세요!"      #break }

메모리 덤프를 생성 하는 것을 #what 제품입니다. while ((($ProductNumber-ne "1")-및 ($ProductNumber-ne "2")-및 ($ProductNumber-ne "3")-and ($ProductNumber $ProductNumber-ne "5")) {     "호스트" (메모리 덤프를 생성 하 시겠습니까? "-ForegroundColor 노란     쓰기-호스트 "1) SQL Server"     쓰기-호스트 "2) SSAS (Analysis Services)"     쓰기-호스트 "3) SSIS (통합 서비스)"     쓰기-호스트 "4) SSRS (Reporting Services)"     쓰기-호스트 "5) SQL Server 에이전트"     쓰기-호스트 ""     $ProductNumber = 읽기-호스트 "1-5> 입력"

    if ((($ProductNumber-ne "1")-및 ($ProductNumber-ne "2")-및 ($ProductNumber-ne "3")-and ($ProductNumber $ProductNumber-ne "5"))     {         쓰기-호스트 ""         쓰기-호스트 "위 목록의 올바른 번호를 입력 해 주십시오!"         쓰기-호스트 ""         시작-절전-밀리초 300     } }

if ($ProductNumber-eq "1") {     $SqlTaskList = Tasklist/SVC/FI "imagename eq sqlservr.exe *"/FO CSV | ConvertFrom-Csv     $ProductStr = "SQL Server" } elseif ($ProductNumber-eq "2") {     $SqlTaskList = Tasklist/SVC/FI "imagename eq msmdsrv *"/FO CSV | ConvertFrom-Csv     $ProductStr = "SSAS (Analysis Services)" } elseif ($ProductNumber-eq "3") {     $SqlTaskList = Tasklist/SVC/FI "imagename eq msdtssrvr *"/FO CSV | ConvertFrom-Csv     $ProductStr = "SSIS (통합 서비스)" } elseif ($ProductNumber-eq "4") {     $SqlTaskList = Tasklist/SVC/FI "imagename eq reportingservicesservice *"/FO CSV | ConvertFrom-Csv     $ProductStr = "SSRS (Reporting Services)" } elseif ($ProductNumber-eq "5") {     $SqlTaskList = Tasklist/SVC/FI "imagename eq sqlagent *"/FO CSV | ConvertFrom-Csv     $ProductStr = "SQL Server 에이전트" }

if ($SqlTaskList-수-eq 0) {     쓰기-호스트 "$ProductStr 인스턴스가 실행 되 고 있지 curerntly 없습니다. 종료 중 ... "-ForegroundColor 녹색     끊어지고 }

여러 SQL Server 인스턴스 #if 원하는 SQL Server에 대 한 PID를 입력할 수 있는 사용자를 가져옵니다. if ($SqlTaskList-수-gt 1) {     쓰기-호스트 "두 개 이상의 $ProductStr 인스턴스가 있습니다."

    $SqlTaskList | 선택-개체 PID, "이미지 이름", 서비스 | Out-호스트

    입력을 #check 하 고 올바른 정수 인지 확인 합니다.     while ((($isInt-eq $false)-또는 ($ValidPid-eq $false))     {         쓰기-호스트 "위 목록에서 원하는 SQL 서비스에 대 한 PID를 입력 해 주십시오."-ForegroundColor 노란         $SqlPidStr = 읽기-호스트 ">"      후                 $SqlPidInt = [convert]:: ToInt32 ($SqlPidStr)                 $isInt = $true             }

        catch [FormatException]             {                  쓰기-호스트 "PID '"에 입력 한 값, $SqlPidStr, "'이 (가) 정수가 아닙니다."             }      이 PID가 검색 되는 목록에 #validate         for ($i = 0, $i-lt $SqlTaskList. Count, $i + +)         {             if ($SqlPidInt-eq [int] $SqlTaskList. PID [$i])             {                 $ValidPid = $true                 끊어지고             }             다른             {                 $ValidPid = $false             }         }      }   

     "PID"를 사용 하 여 $ProductStr 메모리 덤프를 생성 하는 $SqlPidInt 쓰기-호스트 "-ForegroundColor Green     쓰기-호스트 ""      } 다른 SQL Server/SSAS만 #if이 상자에는 다음으로 이동 합니다. {     $SqlTaskList | 선택-개체 PID, "이미지 이름", 서비스 | Out-호스트     $SqlPidInt = [convert]:: ToInt32 ($SqlTaskList. PID)   쓰기-호스트 "PID =", $SqlPidInt, "$ProductStr 메모리 덤프를 생성 하는 데 사용"-ForegroundColor Green     쓰기-호스트 "" }

#dump 종류

if ($ProductNumber-eq "1") #SQL 서버 메모리 덤프 {     SQL Server 메모리 덤프 유형 #ask     while ((($SqlDumpTypeSelection-ne "1")-및 ($SqlDumpTypeSelection-ne "2")-및 ($SqlDumpTypeSelection-ne "3")-and ($SqlDumpTypeSelection-ne "4"))     {         쓰기-호스트 "생성할 메모리 덤프 유형을 선택 하십시오."-ForegroundColor 노란         쓰기-호스트 "1) 미니 덤프"         쓰기-호스트 "2) 참조 되는 메모리가 있는 미니 덤프"-없음 Wline 쓰기-호스트 "(권장)"         쓰기-호스트 "3) 필터링 된 덤프"-없음 Wline 쓰기-호스트 "(권장 하지 않음)"-ForegroundColor Red         쓰기-호스트 "4) 전체 덤프"-없음 Wline 쓰기-호스트 "(프로덕션 시스템에서는 사용 안 함!)" -ForegroundColor 빨강         쓰기-호스트 ""         $SqlDumpTypeSelection = 읽기-호스트 "1-4> 입력"

        if ((($SqlDumpTypeSelection-ne "1")-및 ($SqlDumpTypeSelection-ne "2")-및 ($SqlDumpTypeSelection-ne "3")-and ($SqlDumpTypeSelection-ne "4"))         {             쓰기-호스트 ""             쓰기-호스트 "올바른 유형의 메모리 덤프를 입력 하십시오!"             쓰기-호스트 ""             시작-절전-밀리초 300         }     }

    쓰기-호스트 ""

    스위치 ($SqlDumpTypeSelection)     {         "1" {$DumpType = "0x0120", break}         "2" {$DumpType = "0x0128", break}         "3" {$DumpType = "0x8100", break}         "4" {$DumpType = "0x01100"; break}         기본값 {"0x0120"; break}

    }

} elseif ($ProductNumber-eq "2") #SSAS 덤프 {

    SSAS 메모리 덤프의 유형 #ask     while ((($SSASDumpTypeSelection-ne "1")-및 ($SSASDumpTypeSelection-ne "2"))     {         쓰기-호스트 "생성할 메모리 덤프 유형을 선택 하십시오."-ForegroundColor 노란         쓰기-호스트 "1) 미니 덤프"         쓰기-호스트 "2) 전체 덤프"-없음 Wline 쓰기-호스트 "(프로덕션 시스템에서는 사용 안 함!)" -ForegroundColor 빨강         쓰기-호스트 ""         $SSASDumpTypeSelection = 읽기-호스트 "1-2> 입력"

        if ((($SSASDumpTypeSelection-ne "1")-및 ($SSASDumpTypeSelection-ne "2"))         {             쓰기-호스트 ""             쓰기-호스트 "올바른 유형의 메모리 덤프를 입력 하십시오!"             쓰기-호스트 ""             시작-절전-밀리초 300         }     }

    쓰기-호스트 ""

    스위치 ($SSASDumpTypeSelection)     {         "1" {$DumpType = "0x0"; 중단}         "2" {$DumpType = "0x34"; break}         기본값 {"0x0120"; break}

    } }

elseif ($ProductNumber-eq "3"-또는 $ProductNumber-eq "4"-또는 $ProductNumber-eq "5") #SSIS/SSRS/SQL 에이전트 덤프 {

    SSIS 메모리 덤프 유형 #ask     while ((($SSISDumpTypeSelection-ne "1")-및 ($SSISDumpTypeSelection-ne "2"))     {         쓰기-호스트 "생성할 메모리 덤프 유형을 선택 하십시오."-ForegroundColor 노란         쓰기-호스트 "1) 미니 덤프"         쓰기-호스트 "2) 전체 덤프"         쓰기-호스트 ""         $SSISDumpTypeSelection = 읽기-호스트 "1-2> 입력"

        if ((($SSISDumpTypeSelection-ne "1")-및 ($SSISDumpTypeSelection-ne "2"))         {             쓰기-호스트 ""             쓰기-호스트 "올바른 유형의 메모리 덤프를 입력 하십시오!"             쓰기-호스트 ""             시작-절전-밀리초 300         }     }

    쓰기-호스트 ""

    스위치 ($SSISDumpTypeSelection)     {         "1" {$DumpType = "0x0"; 중단}         "2" {$DumpType = "0x34"; break}         기본값 {"0x0120"; break}

    } }

# Sqldumper PID 0 0x0128 0 c:\temp #output 폴더 while ($OutputFolder-eq ""-또는! ( 테스트 경로-경로 $OutputFolder)) {     쓰기-호스트 ""     쓰기 호스트 "메모리 덤프 저장 (출력 폴더)이 어디에 있나요?"-ForegroundColor 노란     $OutputFolder = 읽기-호스트 "따옴표 없이 출력 폴더 입력 (예: C:\MyTempFolder 또는 C:\My 폴더)"     if ($OutputFolder-eq ""-또는! ( 테스트 경로-경로 $OutputFolder))     {         쓰기-호스트 "" "$OutputFolder" '은 (는) 올바른 폴더가 아닙니다. 올바른 폴더 위치를 입력 하십시오 "-ForegroundColor 노란     } }

컴퓨터에서 SQLDumper의 최고 버전을 #find $NumFolder = dir "c:\Program Files\microsoft sql server\1 *" | 선택-개체 @ {name = "DirNameInt"; expression = {[int] ($ _. Name)}}, Name, Mode | 위치-개체 모드-일치 "da *" | Sort-개체의 DirNameInt-내림차순

($j = 0;($j-lt $NumFolder. 수), $j + +) {     $SQLNumfolder = $NumFolder. DirNameInt [$j]은 (는) 정렬 된 폴더 이름에서 가장 높은 값이 #start dumper의 최신 버전입니다.     $SQLDumperDir = "c:\Program Files\microsoft sql server \" + $SQLNumfolder-\t\t () + "\Shared\"     $TestPathDumperDir = $SQLDumperDir + "sqldumper"      $TestPathResult = 테스트 경로-경로 $SQLDumperDir      if ($TestPathResult-eq $true)     {         끊어지고     }  }

SQLDumper 명령 (예: Sqldumper 1096 0 0x0128 0 c:\temp\)을 #build 합니다.

$cmd = "$ ([char] 34)" + $SQLDumperDir + "sqldumper $ ([char] 34)" $arglist = $SqlPidInt () + "0" + $DumpType + "$0 ([char] 34)" + $OutputFolder + "$ ([char] 34)" 쓰기-호스트 "덤프 생성 명령:", $cmd, $arglist ForegroundColor 녹색

#do-여러 개의 덤프 섹션을 제공 합니다. 쓰기-호스트 "" 쓰기-호스트 "이 유틸리티는 특정 간격으로 여러 메모리 덤프를 생성할 수 있습니다." 쓰기-호스트 "여러 메모리 덤프를 수집 하 시겠습니까?"-ForegroundColor 노란

#validate Y/N 입력 while ((($YesNo-ne "y")-및 ($YesNo-ne "n")) {     $YesNo = 읽기-호스트 "Y 또는 N> 입력"

    if ((($YesNo-eq "y")-또는 ($YesNo-eq "n")))))))))))     {         끊어지고     }     다른     {         쓰기-호스트 "이 (가) 잘못 된 ' Y ' 또는 ' N ' 응답"     } }

덤프 수 및 간격에 대 한 입력 #get if ($YesNo-eq "y") {     while ((($isIntValDcnt-eq $false))         {             쓰기-호스트 "이 SQL Server에 대해 어떤 덤프를 생성 하 시겠습니까?"-ForegroundColor 노란             $DumpCountStr = 읽기-호스트 ">"      후                     $DumpCountInt = [convert]:: ToInt32 ($DumpCountStr)                     $isIntValDcnt = $true                 }

            catch [FormatException]                 {                      쓰기-호스트 "덤프 개수에 입력 한 값" ", $DumpCountStr," '은 (는) 정수가 아닙니다. "                 }         }

    while ((($isIntValDelay-eq $false))         {             쓰기-호스트 "메모리 덤프를 생성 하는 빈도 (초)"-ForegroundColor 노란             $DelayIntervalStr = 읽기-호스트 ">"      후                     $DelayIntervalInt = [convert]:: ToInt32 ($DelayIntervalStr)                     $isIntValDelay = $true                 }

            catch [FormatException]                 {                      쓰기-호스트 "빈도에 대해 입력 한 값 (초) '", $DelayIntervalStr "'는 정수가 아닙니다."                 }         }

    쓰기-호스트 "$DumpCountInt 메모리 덤프 생성 $DelayIntervalStr-초 간격"-ForegroundColor 녹색

    여러 개의 덤프를 생성 #loop         $cntr = 0     while ($true)     {         시작-프로세스 FilePath $cmd--동사 runAs-ArgumentList $arglist         $cntr + +

        쓰기-호스트가 "메모리 덤프 $cntr 생성 했습니다."-ForegroundColor Green

        if ($cntr-ge $DumpCountInt)             {                 끊어지고             }         시작-절전-S $DelayIntervalInt     }

    출력 폴더에 존재 하는 파일 #print     쓰기-호스트 ""     쓰기-호스트 "출력 폴더 ' $OutputFolder '"에 있는 모든 메모리 덤프는 ForegroundColor 녹색입니다.     $MemoryDumps = $OutputFolder + "\SQLDmpr *"     Get-ChildItem-Path $MemoryDumps

    쓰기-호스트 ""     쓰기-호스트 "프로세스 완료" }

그 외에 단일 덤프할 #produce {     시작-프로세스 FilePath $cmd--동사 runAs-ArgumentList $arglist

    출력 폴더에 존재 하는 파일 #print     쓰기-호스트 ""     쓰기-호스트 "출력 폴더 ' $OutputFolder '"에 있는 모든 메모리 덤프는 ForegroundColor 녹색입니다.     $MemoryDumps = $OutputFolder + "\SQLDmpr *"     Get-ChildItem-Path $MemoryDumps

    쓰기-호스트 ""     쓰기-호스트 "프로세스 완료" }

쓰기-호스트 "오류 및 완료 상태를 보려면 출력 폴더 ' $OutputFolder '에서 SQLDumper에 의해 생성 된 .log를 SQLDUMPER_ERRORLOG 검토 하세요. ' 또는 SQLDumper이이 스크립트를 실행 하 고 있는 폴더에서 찾지 못했습니다. "

추가 도움이 필요하신가요?

기술 향상
교육 살펴보기
새로운 기능 우선 가져오기
Microsoft Insider 참가

이 정보가 유용한가요?

언어 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?

의견 주셔서 감사합니다!

×