Sqldumper.exe 도구를 사용하여 SQL Server에서 덤프 파일 생성
이 문서에서는 SQL Server에 포함된 Sqldumper.exe 도구에 대한 일반적인 지침을 제공합니다. 이 도구는 다양한 종류의 덤프 파일을 생성하는 데 사용됩니다.
원래 제품 버전: SQL Server 2019, SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008, SQL Server 2005
원래 KB 번호: 917825
요약
Sqldumper.exe 도구는 Microsoft SQL Server에 포함되어 있습니다. SQL Server의 메모리 덤프 파일 및 디버깅 관련 프로세스를 생성합니다. 이 문서에서는 Sqldumper.exe 사용하여 Watson 오류 보고 또는 디버깅 작업에 대한 덤프 파일을 생성하는 방법을 설명합니다.
이 문서에서는 덤프 파일을 생성하는 두 가지 다른 방법도 설명합니다.
- 연결된 PowerShell 스크립트 는 SQLDumper.exe 명령줄 옵션을 자동화합니다.
- DBCC STACKDUMP T-SQL(Transact-SQL) 명령을 사용하여 SQL Server에서 덤프 파일을 생성할 수 있습니다.
수동으로 Sqldumper.exe 실행하는 방법
SQL Server가 원래 도구를 설치한 폴더의 컨텍스트에서 Sqldumper.exe 도구를 실행합니다.
기본적으로 Sqldumper.exe 설치 경로는 <SQLServerInstall 드라이브>:\Program Files\Microsoft SQL Server\90\Shared\SQLDumper.exe. <SQLServerInstall 드라이브>는 SQL Server를 설치한 드라이브의 자리 표시자입니다.
Sqldumper.exe 도구를 사용하여 덤프 파일을 생성하려면 다음 단계를 수행합니다.
<SQLServerInstall 드라이브>:\Program Files\Microsoft SQL Server\number>\<Shared 폴더를 엽니다.
이 폴더 경로 <에서 숫자는> 다음 버전 중 하나의 자리 표시자입니다.
- SQL Server 2019용 150
- SQL Server 2017용 140
- SQL Server 2016용 130
- SQL Server 2014용 120
- SQL Server 2012용 110
- SQL Server 2008용 100
- SQL Server 2005용 90
Dbghelp.dll 파일이 이 폴더에 있는지 확인합니다.
실행 시작을>선택하고 cmd를 입력한 다음 확인을 선택합니다.
명령 프롬프트에서 다음 명령을 입력한 다음 Enter 키를 누릅니다.
cd <SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\<number>\Shared
참고 항목
이 폴더 경로 <에서 숫자는> 앞에서 설명한 대로 SQL Server 버전으로 변경되는 자리 표시자와 동일합니다.
특정 종류의 덤프 파일을 생성하려면 명령 프롬프트에 해당 명령을 입력한 다음 Enter 키를 누릅니다.
전체 덤프 파일:
Sqldumper.exe <ProcessID> 0 0x01100
미니 덤프 파일:
Sqldumper.exe <ProcessID> 0 0x0120
간접 참조된 메모리를 포함하는 미니 덤프 파일(권장 옵션이며 메모리 덤프 파일을 자동으로 생성할 때 SQL Server에서 기본적으로 사용됨)
Sqldumper.exe <ProcessID> 0 0x0128
필터링된 덤프 파일:
Sqldumper.exe <ProcessID> 0 0x8100
참고 항목
<ProcessID> 는 덤프 파일을 생성하려는 Windows 애플리케이션의 프로세스 식별자에 대한 자리 표시자입니다.
Sqldumper.exe 성공적으로 실행되면 도구가 설치된 폴더에 덤프 파일이 생성됩니다.
Sqldumper.exe 생성하는 덤프 파일에는 SQLDmpr<xxxx.mdmp>와 유사한 파일 이름 패턴이 있습니다.
이 패턴 <에서 xxxx> 는 동일한 폴더에 비슷한 파일 이름이 있는 다른 파일에 따라 결정되는 수가 늘어나고 있습니다. 폴더에 지정된 패턴과 일치하는 파일이 있는 경우 생성 날짜와 시간을 비교하여 원하는 파일을 찾는 것이 좋습니다.
Microsoft Windows 애플리케이션 프로세스 식별자를 가져오는 방법
Sqldumper.exe 도구를 사용하여 덤프 파일을 생성하려면 덤프 파일을 생성하려는 Windows 애플리케이션의 프로세스 식별자가 있어야 합니다. 프로세스 식별자를 가져오는 방법은 다음과 같습니다.
- Ctrl+Alt+Delete를 누르고 작업 관리자를 선택합니다.
- Windows 작업 관리자 대화 상자에서 프로세스 탭을 선택합니다.
- 보기 메뉴에서 열 선택을 선택합니다.
- 열 선택 대화 상자에서 PID(프로세스 식별자) 확인란을 선택한 다음 확인을 선택합니다.
- 덤프 파일을 생성하려는 Windows 애플리케이션의 프로세스 식별자를 확인합니다. SQL Server 애플리케이션의 경우 Sqlservr.exe 프로세스의 프로세스 식별자를 확인합니다.
- 작업 관리자를 닫습니다.
또는 SQL Server 오류 로그 파일을 사용하여 컴퓨터에서 실행 중인 SQL Server 애플리케이션의 프로세스 식별자를 가져옵니다. SQL Server 오류 로그 파일의 일부는 다음 예제와 유사합니다.
2021-09-15 11:50:32.690 Server Microsoft SQL Server 2019 (RTM-CU12) (KB5004524) - 15.0.4153.1 (X64)
Jul 19 2021 15:37:34
Copyright (C) 2019 Microsoft Corporation
Enterprise Edition (64-bit) on Windows 10 Pro 10.0 <X64> (Build 19043: ) (Hypervisor)
2021-09-15 11:50:32.690 Server UTC adjustment: -5:00
2021-09-15 11:50:32.690 Server (c) Microsoft Corporation.
2021-09-15 11:50:32.690 Server All rights reserved.
2021-09-15 11:50:32.690 Server Server process ID is 7028.
그 후에 Server process ID
나타나는 숫자는 Sqlservr.exe 프로세스의 프로세스 식별자입니다.
메모리 덤프 파일의 출력 경로
SQLDumper.exe 예외, 어설션 또는 비수익 스케줄러와 같은 특정 문제를 해결하기 위해 메모리 덤프가 필요한 경우 주로 SQL Server 프로세스에 대한 메모리 덤프 파일을 생성합니다. 이러한 경우 SQL Server는 SQLDumper.exe 호출하여 해당 프로세스의 메모리 덤프 파일을 생성합니다. 기본적으로 메모리 덤프 파일은 SQL 인스턴스 MSSQL\LOG\ 디렉터리에 저장됩니다.
기본 경로를 변경하는 방법
예를 들어 덤프 파일 크기가 너무 큰 경우 다음 단계를 수행하여 경로를 수정할 수 있습니다.
- SQL Server 구성 관리자를 엽니다.
- SQL Server 서비스 아래에서 조사 중인 SQL Server 인스턴스를 찾습니다.
- 해당 항목을 마우스 오른쪽 단추로 클릭하고 속성을 선택한 다음 고급 탭으로 이동합니다.
- 덤프 디렉터리를 원하는 경로로 변경한 다음 확인을 선택합니다.
- 새 설정이 적용되도록 SQL Server를 다시 시작합니다(가능한 경우).
Sqldumper.exe 도구를 사용하여 Windows 애플리케이션에 대한 덤프 파일을 수동으로 생성하는 경우 덤프 파일은 Windows 애플리케이션이 현재 사용 중인 메모리만큼 클 수 있습니다. Sqldumper.exe 덤프 파일을 작성하는 드라이브에서 충분한 디스크 공간을 사용할 수 있는지 확인합니다.
명령에서 사용자 지정 출력 폴더 지정
Sqldumper.exe 도구에서 덤프 파일을 작성할 디렉터리를 지정할 수 있습니다. Sqldumper.exe 실행하기 전에 디렉터리가 이미 있어야 합니다. 그렇지 않으면 Sqldumper.exe 실패합니다. UNC(범용 명명 규칙) 경로를 덤프 파일의 위치로 사용하지 마세요. 다음 단계에서는 미니 덤프 파일의 위치를 지정하는 방법의 예를 제공합니다.
실행 시작을>선택하고 cmd를 입력한 다음 확인을 선택합니다.
명령 프롬프트에서 다음 명령을 입력한 다음 Enter 키를 누릅니다.
cd <SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\<number>\Shared
명령 프롬프트에서 다음 명령을 입력한 다음 Enter 키를 누릅니다.
Sqldumper.exe ProcessID 0 0x0128 0 <MdumpPath>
참고 항목
<MdumpPath> 는 Sqldumper.exe 도구에서 덤프 파일을 작성할 디렉터리의 자리 표시자입니다. 기본적으로 파일은 현재 폴더에 기록됩니다.
생성할 전체 덤프 파일 또는 필터링된 덤프 파일을 지정하는 경우 Sqldumper.exe 덤프 파일을 생성하는 데 몇 분 정도 걸릴 수 있습니다. 소요되는 시간은 다음 변수에 따라 달라집니다.
- Sqlservr.exe 현재 사용 중인 메모리 양입니다.
- 도구에서 덤프 파일을 저장하는 데 사용하는 드라이브의 쓰기 속도입니다.
이 시간 동안 Sqldumper.exe 도구는 명령을 처리하지 않습니다. 서버의 응답이 중지된 것을 알 수 있습니다. 또한 클러스터 장애 조치(failover)가 발생할 수 있습니다.
사용 권한 요구 사항
Sqldumper.exe 실행하려면 다음 방법 중 하나를 사용하여 Windows에 로그인해야 합니다.
- 컴퓨터에서 관리자 그룹의 구성원인 계정을 사용합니다.
- SQL Server 서비스가 실행되고 있는 동일한 사용자 계정을 사용합니다.
Sqldumper.exe 도구가 원격 데스크톱 또는 터미널 서비스를 통해 성공적으로 작동하려면 콘솔 모드에서 원격 데스크톱 또는 터미널 서비스를 시작해야 합니다. 예를 들어 콘솔 모드에서 원격 데스크톱을 시작하려면 실행을 선택하고 >mstsc /console을 입력한 다음 확인을 선택합니다. 대상 서버가 Windows 2000 을 실행하는 경우 /console 옵션은 자동으로 무시됩니다. 원격 데스크톱을 통해 서버에 연결할 수 있지만 콘솔 세션을 사용하지는 않습니다.
Sqldumper.exe 실행한 후 현재 폴더에 덤프 파일이 생성되지 않은 경우 도구에서 생성된 명령줄 출력을 확인하여 오류의 잠재적 원인을 확인합니다. 이 정보는 현재 디렉터리의 Sqldumper_errorlog.log 파일에도 기록됩니다. 다음은 두 가지 가능한 오류 메시지와 그 원인입니다.
메시지 | 원인 |
---|---|
"OpenProcess가 0x57 실패했습니다. 매개 변수가 잘못되었습니다." | 잘못된 프로세스 ID가 Sqldumper.exe 유틸리티에 전달되었습니다. |
"스레드 ID에 잘못된 값 - <잘못된 매개 변수 매개 변수> 오류" | 잘못된 매개 변수가 Sqldumper.exe 유틸리티에 전달되었습니다. |
다음 중 하나와 유사한 오류 메시지가 생성되면 이 메시지를 무시해도 됩니다.
- "minidump 6 중 알 수 없는 콜백 유형"
- "미니덤프 7 동안 알 수 없는 콜백 유형"
덤프 생성의 영향
사용자 모드 프로세스의 덤프 파일이 요청되면(이 문서에서 설명한 대로 범위를 벗어난 운영 체제 커널 덤프와 달리) 덤프 콘텐츠를 파일 대상으로 직렬화하는 데 걸리는 기간 동안 대상 프로세스(여기 SQLServer.exe)가 고정됩니다.
Frozen은 프로세스에서 Windows 클러스터링의 IsAlive 및 Looks Alive 구현과 같은 리소스 폴링 메커니즘을 포함하여 사용자 요청 또는 내부 작업을 실행할 수 없음을 의미합니다(해당 상황을 처리하는 방법에 대한 자세한 내용은 클러스터 장애 조치(failover)의 메모리 덤프 섹션 참조). 벽시계 시간에 의존하는 시간 제한은 동결로 인해 위반될 수도 있습니다.
이전 문에 따라 동결 기간은 다음을 기반으로 하는 중요한 요소입니다.
- 선택한 덤프의 유형입니다.
- 메모리의 SQL Server 프로세스 크기이며, 기본 매개 변수를 실행하는 단일 활성 인스턴스의 경우 서버의 총 실제 RAM에 가까운 경우가 많습니다.
- 덤프의 대상으로 사용되는 디스크의 성능입니다.
또한 디스크의 덤프 파일 크기는 특히 여러 덤프가 가능하고 기본이 아닌 큰 덤프 형식이 선택된 경우 계획해야 합니다. 덤프 유형을 검토하여 예상할 사항을 알고 있는지 확인합니다. 기본적으로 일부 덤프 메서드는 SQL Server 인스턴스의 \Log 폴더에 덤프를 만듭니다. 기본 단순 구성은 SQL Server용 시스템 디스크 및 데이터+로그 디스크이기도 합니다. 해당 디스크를 포화 상태로 만드는 것은 SQL Server 및/또는 시스템 가용성에 심각한 영향을 미칩니다.
클러스터형 시스템에 미치는 영향 관리
덤프 생성 중에 프로세스가 일시적으로 일시 중단됩니다. 이는 SQL Server 서비스 가용성에 영향을 미치고 Always On 컨텍스트(장애 조치(failover) 클러스터 인스턴스 및 가용성 그룹 모두)에서 리소스 장애 조치(failover)를 트리거할 수 있습니다. 서로 다른 프로세스의 덤프 생성은 리소스에 다른 영향을 줍니다. 덤프 생성 및 덤프 유형 섹션의 영향을 주의 깊게 읽어보세요.
SQL Server의 장애 조치(failover) 클러스터형 인스턴스 또는 AG(가용성 그룹) 인스턴스에서 SQL Server 덤프를 캡처하는 경우 덤프를 완료하는 데 너무 오래 걸리는 경우 클러스터된 SQL Server 또는 AG가 다른 노드로 장애 조치(failover)될 수 있습니다. 이는 많은 양의 RAM을 사용하는 시스템이나 필터링된 메모리 덤프 또는 전체 메모리 덤프를 생성하는 경우 특히 문제가 될 수 있습니다. 장애 조치(failover)를 방지하려면 덤프 파일을 캡처하기 전에 다음 설정을 사용합니다. 덤프 파일을 가져온 후 변경 사항을 되돌릴 수 있습니다.
- FCI(장애 조치(failover) 클러스터형 인스턴스의 경우:
- 클러스터 관리자에서 SQL Server 리소스를 마우스 오른쪽 단추로 클릭하고 리소스가 실패하면 정책 탭에서 다시 시작하지 않음을 선택합니다.
- 속성 탭에서 HealthCheck 시간 제한을 늘립니다. 예를 들어 속성 값을 180 초 이상으로 설정합니다. 이 시간 제한에 도달하면 리소스가 실패하면 다시 시작하지 않는 정책이 무시되고 리소스가 다시 시작됩니다.
- 속성 탭에서 FailureConditionLevel 값을 0으로 변경 합니다.
- AG의 경우 다음 설정을 모두 적용합니다.
- 예를 들어 모든 복제본에 대해 세션 시간 제한을 120초 증가합니다. SSMS(SQL Server Management Studio)에서 구성할 복제본을 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다. 세션 제한 시간(초) 필드를 120초로 변경합니다. 자세한 내용은 가용성 복제본에 대한 세션 제한 시간 변경(SQL Server)을 참조하세요.
- 모든 복제본의 자동 장애 조치(failover)를 수동 장애 조치(failover)로 변경합니다. SSMS에서 복제본을 마우스 오른쪽 단추로 클릭하고, 속성을 선택하고, 속성 탭에서 모든 복제본의 자동 장애 조치(failover)를 수동 장애 조치(failover)로 변경합니다. 자세한 내용은 가용성 복제본의 장애 조치(failover) 모드 변경(SQL Server)을 참조하세요.
- LeaseTimeout을 60,000ms(60초)로 늘리고 HealthCheckTimeout을 90,000ms(90초)로 변경합니다. 클러스터 관리자에서 AG 리소스를 마우스 오른쪽 단추로 클릭하고 속성을 선택한 다음 속성 탭으로 전환하여 두 설정을 모두 수정합니다. 자세한 내용은 Configure HealthCheckTimeout Property Settings을 참조하세요.
SQL Server에 미치는 영향을 줄이기 위한 제품 개선 사항
덤프 파일의 크기 및/또는 메모리 덤프 생성 시간을 줄이기 위해 최신 버전의 SQL Server에 4가지 주요 개선 사항이 추가되었습니다.
비트맵 필터링 메커니즘
SQL Server는 필터링된 덤프에서 제외할 메모리 페이지를 추적하는 비트맵을 할당합니다. Sqldumper.exe는 다른 메모리 관리자 메타데이터를 읽을 필요 없이 비트맵을 읽고 페이지를 필터링합니다. 비트맵을 각각 사용하거나 사용하지 않도록 설정하면 SQL Server 오류 로그에 다음 메시지가 표시됩니다.
Page exclusion bitmap is enabled.
및 Page exclusion bitmap is disabled.
SQL Server 2016
SQL Server 2016 SP2 CU13부터 비트맵 필터링은 기본적으로 사용하도록 설정됩니다.
SQL Server 2017
- 이는 RTM에서 CU15를 통해 사용할 수 없습니다.
- SQL Server 2017 CU16에서는 T8089를 통해 비트맵 필터링을 사용하도록 설정하고 T8089를 해제하여 비활성화할 수 있습니다.
- SQL Server 2017 CU20부터 비트맵 필터링은 기본적으로 사용하도록 설정됩니다. 추적 플래그 T8089는 더 이상 적용되지 않으며 켜져 있으면 무시됩니다. 비트맵 필터링은 T8095를 통해 사용하지 않도록 설정할 수 있습니다.
SQL Server 2019
SQL Server 2019 RTM에서 기본적으로 사용하도록 설정됩니다. T8095를 통해 사용하지 않도록 설정할 수 있습니다.
동일한 문제에 대해 반복되는 덤프 제거
동일한 문제에 대해 반복되는 메모리 덤프가 제거됩니다. 스택 서명을 사용하여 SQL 엔진은 예외가 이미 발생했는지 추적하며 이미 있는 경우 새 메모리 덤프를 생성하지 않습니다. 이는 액세스 위반, 스택 오버플로, 어설션 및 인덱스 손상 예외에 적용됩니다. 이렇게 하면 메모리 덤프에 사용되는 디스크 공간의 양이 크게 줄어들고 덤프를 생성하기 위해 프로세스가 일시적으로 중지되지 않습니다. SQL Server 2019에 추가되었습니다.
오류 로그의 단축된 출력
단일 메모리 덤프에서 SQL Server 오류 로그에 생성된 콘텐츠는 압도적일 수 있을 뿐만 아니라 이 모든 정보를 오류 로그의 텍스트 형식으로 serialize하는 데 필요한 시간으로 인해 메모리 덤프를 생성하는 프로세스가 느려질 수 있습니다. SQL Server 2019에서는 덤프 생성 시 오류 로그에 저장된 콘텐츠가 크게 감소했으며 다음과 같이 표시될 수 있습니다.
DateTimespidS pid **Dump thread - spid = 0, EC = 0x0000015C7169BF40
DateTimespidS pid *
DateTimespidS pid *User initiated stack dump. This is not a server exception dump.
DateTimespidS pid *
DateTimespidS pid Stack Signature for the dump is 0x00000000788399E5
DateTimespidS pid External dump process return code 0x20000001.
External dump process returned no errors.
예를 들어 사용자가 수동 덤프를 트리거할 때 이전에 SQL Server는 각 세션 또는 스레드에 대한 정보를 인쇄했습니다.
메모리 덤프의 병렬 압축
덤프를 더 빠르게 생성하고 크기가 작게 만들기 위해 SQL Server 2022 CU8 및 SQL Server 2019 CU23에 압축 메모리 덤프 기능이 도입되었습니다. 활성화되면 Sqldumper.exe 여러 스레드를 만들어 프로세스의 메모리를 동시에 읽고 압축한 다음 덤프 파일에 저장합니다. 이 다중 스레드 병렬 압축은 파일 크기를 줄이고 전체 및 필터링된 덤프와 함께 사용할 때 덤핑 프로세스의 속도를 향상시킵니다.
추적 플래그 2610을 켜서 압축된 메모리 덤프를 사용하도록 설정할 수 있습니다.
DBCC TRACEON (2610,-1)
GO
DBCC STACKDUMP with FILTERED_DUMP
GO
DBCC TRACEOFF (2610,-1)
또는 SQL Server 인스턴스에 시작 매개 변수로 추가하여 -T2610
항상 압축된 메모리 덤프를 만들 수 있습니다.
Sqldumper.exe 수동으로 실행하는 경우 매개 변수를 -zdmp
사용하여 압축된 메모리 덤프를 캡처할 수 있습니다. 예시:
Sqldumper.exe <ProcessID> 0 0x8100 0 d:\temp -zdmp
또한 매개 변수를 사용하여 -cpu:X
압축된 덤프를 만드는 데 사용할 수 Sqldumper.exe 코어 수를 제한할 수도 있습니다. 여기서 X 는 CPU 수입니다. 이 매개 변수는 명령줄에서 Sqldumper.exe 수동으로 실행하는 경우에만 사용할 수 있습니다.
Sqldumper.exe <ProcessID> 0 0x8100 0 d:\temp -zdmp -cpu:8
메모리 덤프 생성을 방지하거나 지연시키는 요소
다음 요인은 지연을 발생하거나 메모리 덤프 생성을 방지하는 것으로 알려져 있습니다.
- 메모리 덤프가 기록되는 IO 경로는 제대로 수행되지 않습니다. 이러한 경우 디스크 I/O 성능을 조사하고 해결하는 것이 다음 논리적 단계입니다.
- 바이러스 백신 또는 기타 모니터링 소프트웨어가 SQLDumper.exe 방해하고 있습니다. 경우에 따라 타사 소프트웨어가 ReadProcessMemory 함수를 우회합니다 . 이렇게 하면 덤프 기간이 크게 증가할 수 있습니다. 이러한 대부분의 문제를 해결하려면 방해 소프트웨어를 사용하지 않도록 설정하거나 제외 목록에 SQLDumper.exe 추가합니다.
덤프 형식
다음 메서드를 사용하여 미니 덤프, 전체 덤프 및 필터링된 덤프의 세 가지 유형의 덤프를 생성할 수 있습니다.
참조된 메모리가 있는 미니 덤프
이 유형의 메모리 덤프는 프로세스의 모든 활성 스레드("스레드 스택")의 스냅샷이며 스레드 스택 및 기타 키 프로세스 또는 스레드 데이터에서 참조하는 메모리의 제한된 추출을 제공합니다. 일반적으로 몇 메가바이트 크기이며 생성 속도가 빠릅니다(1초 미만에서 몇 초). 더 큰 서버 시스템(SQL Server 프로세스에서 간접적으로 대량의 스레드를 구동하는 수백 개의 CPU 포함)은 거의 20~30MB를 초과하지 않습니다. 미니 덤프의 크기는 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 속도가 영향을 줍니다).
다음 쿼리를 사용하여 필터링된 덤프 크기의 대략적인 예상을 가져올 수 있습니다. 대부분의 데이터 또는 인덱스 페이지가 덤프에서 제외될 것으로 예상되지만, 단독으로 래치되고 수정되는 페이지는 생략되지 않습니다.
SELECT SUM(pages_kb)
FROM sys.dm_os_memory_clerks
WHERE type != 'MEMORYCLERK_SQLBUFFERPOOL'
Sqldumper.exe 사용하여 Microsoft Windows 애플리케이션에 대한 요청 시 덤프 파일을 생성할 수 있으므로 필터링된 덤프 옵션을 사용하는 것이 좋습니다. 그러나 필터링된 덤프 파일은 SQL Server 컨텍스트에서만 적용 가능하고 의미가 있습니다. 미니 덤프, 전체 덤프 파일 또는 SQL Server가 아닌 애플리케이션을 성공적으로 생성할 수 있습니다.
SQL Server 프로세스는 Sqldumper.exe 도구를 내부적으로 호출하여 프로세스에서 예외가 발생할 때 덤프 파일을 생성합니다. SQL Server는 매개 변수를 Sqldumper.exe 전달합니다. 추적 플래그를 사용하여 예외 또는 어설션이 발생할 때 SQL Server가 기본적으로 도구에 전달하는 매개 변수를 변경할 수 있습니다. 이러한 추적 플래그는 2540에서 2559까지의 범위에 있습니다. 이러한 추적 플래그 중 하나를 사용하여 생성할 SQLDumper.exe 기본 덤프 유형을 변경할 수 있습니다(기본값은 참조된 메모리가 있는 미니 덤프임). 예시:
- 추적 플래그 2551: 필터링된 메모리 덤프를 생성합니다.
- 추적 플래그 2544: 전체 메모리 덤프를 생성합니다.
- 추적 플래그 8026: SQL Server는 덤프를 한 번 생성한 후 덤프 트리거를 지웁다.
둘 이상의 추적 플래그가 활성 상태이면 가장 큰 메모리 덤프를 나타내는 옵션이 적용됩니다. 예를 들어 추적 플래그 2551 및 2544를 사용하는 경우 SQL Server는 전체 메모리 덤프를 만듭니다.
클러스터 장애 조치(failover)에서 메모리 덤프 생성
클러스터 장애 조치(failover) 시나리오에서 SQL Server 리소스 DLL은 문제 해결을 지원하기 위해 장애 조치(failover)가 발생하기 전에 덤프 파일을 가져올 수 있습니다. SQL Server 리소스가 실패한 것을 확인한 SQL Server 리소스 DLL은 Sqldumper.exe 유틸리티를 사용하여 SQL Server 프로세스의 덤프 파일을 가져옵니다. Sqldumper.exe 도구에서 덤프 파일을 성공적으로 생성하도록 하려면 다음 세 가지 속성을 필수 구성 요소로 설정해야 합니다.
SqlDumperDumpTimeOut
사용자가 지정한 시간 제한입니다. 리소스 DLL은 리소스 DLL이 SQL Server 서비스를 중지하기 전에 덤프 파일이 완료될 때까지 기다립니다.
SqlDumperDumpPath
Sqldumper.exe 도구가 덤프 파일을 생성하는 위치입니다.
SqlDumperDumpFlags
Sqldumper.exe 사용하는 플래그입니다.
속성 중 하나가 설정되지 않은 경우 Sqldumper.exe 덤프 파일을 생성할 수 없습니다. 리소스가 온라인 상태가 될 때마다 이벤트 로그와 클러스터 로그에 경고 메시지가 기록됩니다.
SQL Server 2012 이상 버전에서 SQLDumper에 대한 클러스터 구성
(T-SQL) 명령을 사용하여 ALTER SERVER CONFIGURATION
이러한 속성을 수정할 수 있습니다. 예시:
ALTER SERVER CONFIGURATION SET FAILOVER CLUSTER PROPERTY SqlDumperDumpTimeOut = 0;
ALTER SERVER CONFIGURATION SET FAILOVER CLUSTER PROPERTY SqlDumperDumpPath = 'C:\temp\';
ALTER SERVER CONFIGURATION SET FAILOVER CLUSTER PROPERTY SqlDumperDumpFlags = 296;
또는 PowerShell 스크립트를 사용할 수 있습니다. 예를 들어 명명된 인스턴스의 경우 SQL2017AG.
Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpPath" -Value "C:\temp"
Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpFlags" -Value 296
Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpTimeOut" -Value 0
설정이 적용되었는지 확인하려면 다음 PowerShell 명령을 실행할 수 있습니다.
Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Get-ClusterParameter
SQL Server 2008/2008 R2 또는 Windows 2012 및 이전 버전의 SQLDumper에 대한 클러스터 구성
클러스터 리소스 명령을 사용하여 클러스터 장애 조치(failover)에 대한 Sqldumper.exe 유틸리티 속성을 설정하려면 다음 단계를 수행합니다.
- 실행 시작을>선택하고 cmd를 입력한 다음 확인을 선택합니다.
- 각 속성에 대해 명령 프롬프트에 해당 명령을 입력한 다음 Enter 키를 누릅니 다.
SqlDumperDumpFlags
속성특정 덤프 파일의
SqlDumperDumpFlags
속성을 설정하려면 명령 프롬프트에 해당 명령을 입력한 다음 Enter 키를 누릅니다.모든 스레드 전체 덤프 파일
기본 인스턴스
cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x01100
명명된 인스턴스
cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x01100
모든 스레드 미니 덤프 파일
기본 인스턴스
cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x0120
명명된 인스턴스
cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x0120
모든 스레드 덤프 파일 필터링
기본 인스턴스
cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x8100
명명된 인스턴스
cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x8100
SqlDumperDumpPath
속성cluster resource "SQL Server" /priv SqlDumperDumpPath = <DirectoryPath>
참고 항목
<DirectoryPath> 는 덤프 파일이 생성되는 디렉터리의 자리 표시자이며 따옴표(" ")에 지정해야 합니다.
SqlDumperDumpTimeOut
속성cluster resource "SQL Server" /priv SqlDumperDumpTimeOut = <Timeout>
참고 항목
<시간 제한> 은 시간 제한(밀리초)의 자리 표시자입니다.
도구가 SQL Server 프로세스의 덤프 파일을 생성하는 데 걸리는 시간은 컴퓨터 구성에 따라 달라집니다. 메모리가 많은 컴퓨터의 경우 시간이 클 수 있습니다. 프로세스에 필요한 시간을 예측하려면 Sqldumper.exe 도구를 사용하여 덤프 파일을 수동으로 생성합니다. 속성의 SqlDumperDumpTimeOut
유효한 값은 10,000ms에서 MAXDWORD까지입니다. MAXDWORD는 DWORD 데이터 형식(4294967295) 범위에서 가장 높은 값을 나타냅니다.
설정이 사용하도록 설정되어 있는지 확인하려면 다음 명령을 실행할 수 있습니다.
cluster resource "SQL Server" /priv
클러스터 장애 조치(failover)에 대한 Sqldumper.exe 속성 제거
클러스터 장애 조치(failover)에 대한 Sqldumper.exe 도구 속성을 제거하려면 다음 단계를 수행합니다.
실행 시작을>선택하고 cmd를 입력한 다음 확인을 선택합니다.
특정 속성의 경우 명령 프롬프트에 해당 명령을 입력한 다음 Enter 키를 누릅니다.
SqlDumperDumpFlags
속성기본 인스턴스
cluster resource "SQL Server" /priv:SqlDumperDumpFlags /usedefault
명명된 인스턴스
cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpFlags /usedefault
SqlDumperDumpPath
속성기본 인스턴스
cluster resource "SQL Server" /priv:SqlDumperDumpPath /usedefault
명명된 인스턴스
cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpPath /usedefault
SqlDumperDumpTimeOut
속성기본 인스턴스
cluster resource "SQL Server" /priv:SqlDumperDumpTimeOut /usedefault
명명된 인스턴스
cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpTimeOut /usedefault
DBCC STACKDUMP를 사용하는 방법
이 DBCC STACKDUMP
명령은 SQL Server 인스턴스 설치의 LOG 디렉터리에 메모리 덤프를 만드는 데 도움이 될 수 있습니다. 이 명령은 기본적으로 크기가 제한되고 SQL Server 프로세스의 상태를 반영하기에 적합한 모든 스레드가 있는 미니덤프를 만듭니다. SQL Server 클라이언트에서 다음 명령을 실행합니다.
DBCC STACKDUMP
SQL Server 2019의 DBCC STACKDUMP
확장된 기능은 SQL Server 2019에 도입된 확장 DBCC STACKDUMP 기능을 참조하세요.
이 메서드를 사용하여 필터링된 덤프를 만들려면 다음 명령을 사용하여 추적 플래그 2551을 켭니다.
DBCC TRACEON(2551, -1)
GO
DBCC STACKDUMP
전체 덤프를 만들려면 추적 플래그 2544를 사용합니다.
덤프 파일을 가져오면 추가 SQL Server 자체 진단 미니덤프를 더 큰 덤프로 실수로 업그레이드하지 않도록 명령을 DBCC TRACEOFF (<TraceNumber>, -1);
사용하여 추적 플래그를 사용하지 않도록 설정해야 합니다. 명령 <에서 TraceNumber> 는 이전에 2551 또는 2544와 같이 사용하도록 설정한 추적 플래그입니다. 예시:
DBCC TRACEOFF(2551, -1)
활성 상태로 남아 있는 추적 플래그를 잘 모르는 경우 다음 명령을 실행합니다.
DBCC TRACESTATUS(-1)
빈 결과 집합은 추적 플래그가 활성 상태임을 나타냅니다. 반대로 2551이 여전히 활성 상태이면 다음이 표시됩니다.
TraceFlag | 상태 | 전역 | 세션 |
---|---|---|---|
2551 | 1 | 1 | 0 |
참고 항목
사용 DBCC TRACEON
방법은 traceflag
서비스를 다시 시작한 후 다시 설정(제거)됩니다.
SQL Server 2019에 도입된 확장 DBCC STACKDUMP 기능
SQL Server 2019 CU2부터 이 명령은 미니, DBCC STACKDUMP
필터링 및 전체 덤프와 같은 다양한 유형의 덤프 생성을 지원하도록 확장되었습니다. 이 명령은 추적 플래그를 사용할 필요가 없습니다. 또한 메모리 덤프를 사용하여 생성되는 다른 텍스트 파일의 텍스트 출력을 제한할 수 있습니다. 이렇게 하면 메모리 덤프를 생성하는 데 SQLDumper.exe 시간에 표시되는 성능 향상을 제공할 수 있습니다.
DBCC STACKDUMP WITH MINI_DUMP | FILTERED_DUMP | FULL_DUMP [, TEXT_DUMP = LIMITED | DETAILED]
기본 TEXT_DUMP = LIMITED
옵션입니다. SQLDump000X.txt 파일에서 자세한 출력을 받으려면 .TEXT_DUMP = DETAILED
.txt 파일에서 출력이 제한된 필터링된 덤프를 생성하려면 다음 명령을 실행합니다.
DBCC STACKDUMP WITH FILTERED_DUMP , TEXT_DUMP = LIMITED
PowerShell 스크립트를 사용하여 SQLDumper를 사용하여 덤프 파일을 생성하는 방법
다음 코드를 PS1 파일(예 : SQLDumpHelper.ps1)로 저장합니다.
코드 세부 정보
$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 = "" Write-Host "" Write-Host "`******************************************************************" Write-Host "This script helps you generate one or more SQL Server memory dumps" Write-Host "It presents you with choices on:` -target SQL Server process (if more than one) -type of memory dump -count and time interval (if multiple memory dumps) You can interrupt this script using CTRL+C" Write-Host "***********************************************************************" # check for administrator rights # debugging tools like SQLDumper.exe require Admin privileges to generate a memory dump if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Warning "Administrator rights are required to generate a memory dump!`nPlease re-run this script as an Administrator!" return } # what product would you like to generate a memory dump while ($true) { Write-Host "Which product would you like to generate a memory dump of?" -ForegroundColor Yellow Write-Host "1) SQL Server" Write-Host "2) SSAS (Analysis Services)" Write-Host "3) SSIS (Integration Services)" Write-Host "4) SSRS (Reporting Services)" Write-Host "5) SQL Server Agent" Write-Host "" $ProductNumber = Read-Host "Enter 1-5>" if ($ProductNumber -in 1,2,3,4,5) { break } Write-Host "`nPlease enter a valid number from list above!`n" Start-Sleep -Milliseconds 300 } if ($ProductNumber -eq "1") { $SqlTaskList = Tasklist /SVC /FI "imagename eq sqlservr*" /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 (Integration Services)" } 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 Agent" } if ($SqlTaskList.Count -eq 0) { Write-Host "There are currently no running instances of $ProductStr. Exiting..." -ForegroundColor Green break } # if multiple SQL Server instances, get the user to input PID for desired SQL Server if ($SqlTaskList.Count -gt 1) { Write-Host "More than one $ProductStr instance found." $SqlTaskList | Select-Object PID, "Image name", Services | Out-Host # check input and make sure it is a valid integer while ($true) { Write-Host "Please enter the PID for the desired SQL service from list above" -ForegroundColor Yellow $SqlPidStr = Read-Host ">" if( $SqlPidStr -in $SqlTaskList.PID) { $SqlPidInt = [int]$SqlPidStr break } } Write-Host "Using PID=$SqlPidInt for generating a $ProductStr memory dump" -ForegroundColor Green Write-Host "" } else # if only one SQL Server/SSAS on the box, go here { $SqlTaskList | Select-Object PID, "Image name", Services | Out-Host $SqlPidInt = [convert]::ToInt32($SqlTaskList.PID) Write-Host "Using PID=", $SqlPidInt, " for generating a $ProductStr memory dump" -ForegroundColor Green Write-Host "" } # dump type if ($ProductNumber -eq "1") # SQL Server memory dump { # ask what type of SQL Server memory dump while($true) { Write-Host "Which type of memory dump would you like to generate?" -ForegroundColor Yellow Write-Host "1) Mini-dump" Write-Host "2) Mini-dump with referenced memory " -NoNewLine; Write-Host "(Recommended)" Write-Host "3) Filtered dump " -NoNewline; Write-Host "(Not Recommended)" -ForegroundColor Red Write-Host "4) Full dump " -NoNewline; Write-Host "(Do Not Use on Production systems!)" -ForegroundColor Red Write-Host "" $SqlDumpTypeSelection = Read-Host "Enter 1-4>" if ($SqlDumpTypeSelection -in 1,2,3,4) { break } Write-Host "`nPlease enter a valid type of memory dump!`n" Start-Sleep -Milliseconds 300 } Write-Host "" switch ($SqlDumpTypeSelection) { "1" { $DumpType="0x0120"; break } "2" { $DumpType="0x0128"; break } "3" { $DumpType="0x8100"; break } "4" { $DumpType="0x01100"; break } default { "0x0120"; break } } } elseif ($ProductNumber -eq "2") # SSAS dump { # ask what type of SSAS memory dump while($true) { Write-Host "Which type of memory dump would you like to generate?" -ForegroundColor Yellow Write-Host "1) Mini-dump" Write-Host "2) Full dump " -NoNewline; Write-Host "(Do Not Use on Production systems!)" -ForegroundColor Red Write-Host "" $SSASDumpTypeSelection = Read-Host "Enter 1-2>" if ($SSASDumpTypeSelection -in 1,2) { break } Write-Host "`nPlease enter a valid type of memory dump!`n" Start-Sleep -Milliseconds 300 } Write-Host "" switch ($SSASDumpTypeSelection) { "1" {$DumpType="0x0";break} "2" {$DumpType="0x34";break} default {"0x0120"; break} } } elseif ($ProductNumber -in 3,4,5) # SSIS/SSRS/SQL Agent dump { # ask what type of SSIS memory dump while($true) { Write-Host "Which type of memory dump would you like to generate?" -ForegroundColor Yellow Write-Host "1) Mini-dump" Write-Host "2) Full dump" Write-Host "" $SSISDumpTypeSelection = Read-Host "Enter 1-2>" if ($SSISDumpTypeSelection -in 1,2) { break } Write-Host "`nPlease enter a valid type of memory dump!`n" Start-Sleep -Milliseconds 300 } Write-Host "" switch ($SSISDumpTypeSelection) { "1" { $DumpType="0x0"; break } "2" { $DumpType="0x34"; break } default { "0x0120"; break } } } # Sqldumper.exe PID 0 0x0128 0 c:\temp # output folder while($OutputFolder -eq "" -or !(Test-Path -Path $OutputFolder)) { Write-Host "" Write-Host "Where would your like the memory dump stored (output folder)?" -ForegroundColor Yellow $OutputFolder = Read-Host "Enter an output folder with no quotes (e.g. C:\MyTempFolder or C:\My Folder)" if ($OutputFolder -eq "" -or !(Test-Path -Path $OutputFolder)) { Write-Host "'" $OutputFolder "' is not a valid folder. Please, enter a valid folder location" -ForegroundColor Yellow } } # strip the last character of the Output folder if it is a backslash "\". Else Sqldumper.exe will fail if ($OutputFolder.Substring($OutputFolder.Length-1) -eq "\") { $OutputFolder = $OutputFolder.Substring(0, $OutputFolder.Length-1) Write-Host "Stripped the last '\' from output folder name. Now folder name is $OutputFolder" } # find the highest version of SQLDumper.exe on the machine $NumFolder = dir "C:\Program Files\Microsoft SQL Server\1*" | Select-Object @{name = "DirNameInt"; expression={[int]($_.Name)}}, Name, Mode | Where-Object Mode -Match "da*" | Sort-Object DirNameInt -Descending for( $j=0; $j -lt $NumFolder.Count; $j++) { $SQLNumfolder = $NumFolder.DirNameInt[$j] # start with the highest value from sorted folder names - latest version of dumper $SQLDumperDir = "C:\Program Files\Microsoft SQL Server\" + $SQLNumfolder.ToString() + "\Shared\" $TestPathDumperDir = $SQLDumperDir + "sqldumper.exe" if (Test-Path -Path $SQLDumperDir) { break } } # build the SQLDumper.exe command e.g. (Sqldumper.exe 1096 0 0x0128 0 c:\temp\) $cmd = "$([char]34)"+$SQLDumperDir + "sqldumper.exe$([char]34)" $arglist = $SqlPidInt.ToString() + " 0 " +$DumpType +" 0 $([char]34)" + $OutputFolder + "$([char]34)" Write-Host "Command for dump generation: ", $cmd, $arglist -ForegroundColor Green # do-we-want-multiple-dumps section Write-Host "" Write-Host "This utility can generate multiple memory dumps, at a certain interval" Write-Host "Would you like to collect multiple memory dumps (2 or more)?" -ForegroundColor Yellow # validate Y/N input while ($true) { $YesNo = Read-Host "Enter Y or N>" if ($YesNo -in "y","n") { break } Write-Host "Not a valid 'Y' or 'N' response" } # get input on how many dumps and at what interval if ($YesNo -eq "y") { [int]$DumpCountInt=0 while (1 -ge $DumpCountInt) { Write-Host "How many dumps would you like to generate for this $ProductStr ?" -ForegroundColor Yellow $DumpCountStr = Read-Host ">" if ([int]::TryParse($DumpCountStr, [ref]$DumpCountInt) -and $DumpCountInt -gt 1) { break } Write-Host "Please enter a number greater than one." -ForegroundColor Red } [int]$DelayIntervalInt=0 while ($true) { Write-Host "How frequently (in seconds) would you like to generate the memory dumps?" -ForegroundColor Yellow $DelayIntervalStr = Read-Host ">" if ([int]::TryParse($DelayIntervalStr, [ref]$DelayIntervalInt) -and $DelayIntervalInt -gt 0) { break } Write-Host "Please enter a number greater than zero." -ForegroundColor Red } Write-Host "Generating $DumpCountInt memory dumps at a $DelayIntervalStr-second interval" -ForegroundColor Green # loop to generate multiple dumps $cntr = 0 while ($true) { Start-Process -FilePath $cmd -Wait -Verb runAs -ArgumentList $arglist $cntr++ Write-Host "Generated $cntr memory dump(s)." -ForegroundColor Green if ($cntr -ge $DumpCountInt) { break } Start-Sleep -S $DelayIntervalInt } # print what files exist in the output folder Write-Host "" Write-Host "Here are all the memory dumps in the output folder '$OutputFolder'" -ForegroundColor Green $MemoryDumps = $OutputFolder + "\SQLDmpr*" Get-ChildItem -Path $MemoryDumps Write-Host "" Write-Host "Process complete" } else # produce just a single dump { Start-Process -FilePath $cmd -Wait -Verb runAs -ArgumentList $arglist # print what files exist in the output folder Write-Host "" Write-Host "Here are all the memory dumps in the output folder '$OutputFolder'" -ForegroundColor Green $MemoryDumps = $OutputFolder + "\SQLDmpr*" Get-ChildItem -Path $MemoryDumps Write-Host "" Write-Host "Process complete" } Write-Host "For errors and completion status, review SQLDUMPER_ERRORLOG.log created by SQLDumper.exe in the output folder '$OutputFolder'.`nOr if SQLDumper.exe failed, look in the folder from which you are running this script."
다음 명령을 사용하여 명령 프롬프트에서 관리자 권한으로 실행합니다.
Powershell.exe -File SQLDumpHelper.ps1
또는 Windows PowerShell 콘솔에서 실행하고 다음 명령을 사용하여 관리자 권한으로 실행합니다.
.\SQLDumpHelper.ps1
참고 항목
시스템에서 PowerShell 스크립트를 실행한 적이 없는 경우 다음 오류 메시지가 표시될 수 있습니다.
"파일 ... 이 시스템에서 스크립트를 실행할 수 없으므로 SQLDumpHelper.ps1을 로드할 수 없습니다."
명령을 실행할 수 있도록 하려면 다음 단계를 수행합니다.
관리자 권한으로 실행 옵션을 사용하여 Windows PowerShell 콘솔을 시작합니다. 컴퓨터의 관리자 그룹 구성원만 실행 정책을 변경할 수 있습니다.
다음 명령을 사용하여 서명되지 않은 스크립트 실행을 사용하도록 설정합니다.
Set-ExecutionPolicy RemoteSigned
참고 항목
이렇게 하면 로컬 컴퓨터에서 만든 서명되지 않은 스크립트와 인터넷에서 서명된 스크립트를 실행할 수 있습니다.