SQL Server 커넥터 유지 관리 및 문제 해결
적용 대상: SQL Server
이 문서는 SQL Server 커넥터에 대한 추가 정보를 제공합니다. SQL Server 커넥터에 대한 자세한 내용은 Azure Key Vault(SQL Server)를 사용한 확장 가능한 키 관리, Azure Key Vault를 사용한 확장 가능한 키 관리를 위한 설정 단계 및 SQL 암호화 기능과 함께 SQL Server 커넥터 사용을 참조하세요.
참고 항목
Microsoft Entra ID는 Azure AD(Azure Active Directory)의 새 이름이지만, 기존 환경의 중단을 방지하기 위해 UI 필드, 연결 공급자, 오류 코드 및 cmdlet과 같은 일부 하드 코딩된 요소에는 여전히 Azure AD가 남아 있습니다. 이 문서에서는 두 이름을 혼용할 수 있습니다.
A. SQL Server 커넥터에 대한 유지 관리 지침
키 회전
Azure Key Vault는 새 키를 만들고 새 키를 사용하도록 애플리케이션을 업데이트하는 프로세스인 키 회전을 지원합니다. 키 회전은 키가 손상된 경우 데이터를 보호하는 데 도움이 되는 보안 모범 사례입니다. SQL Server 커넥터는 키 회전을 지원합니다. 이전 키를 사용하여 데이터베이스를 복원해야 할 수 있으므로 이전 키를 삭제하면 안 됩니다. 키를 회전하려면 새 AKV 키 또는 새 AKV 키 버전으로 비대칭 키 회전의 단계를 수행합니다.
SQL Server 커넥터 업그레이드
1.0.0.440 이전 버전은 교체되었으며 프로덕션 환경에서는 더 이상 지원되지 않습니다. 프로덕션 환경에서는 1.0.1.0 이상 버전이 지원됩니다. Microsoft 다운로드 센터에서 최신 버전으로 업그레이드하려면 다음 지침을 따릅니다.
업그레이드
- SQL Server 구성 관리자를 사용하여 SQL Server 서비스를 중지합니다.
- 제어 패널\프로그램\프로그램 및 기능을 사용하여 이전 버전을 제거합니다.
- 애플리케이션 이름: Microsoft Azure 주요 자격 증명 모음용 SQL Server 커넥터
- 버전: 15.0.300.96(또는 이전)
- DLL 파일 날짜: 2018/01/30(또는 이전)
- 새 Microsoft Azure 주요 자격 증명 모음용 SQL Server 커넥터 설치(업그레이드)
- 버전: 15.0.2000.440
- DLL 파일 날짜: 2020/09/11
- SQL Server 서비스를 시작합니다.
- 암호화된 데이터베이스 테스트 액세스 가능
롤백
SQL Server 구성 관리자를 사용하여 SQL Server 서비스를 중지합니다.
제어 패널\프로그램\프로그램 및 기능을 사용하여 새 버전을 제거합니다.
- 애플리케이션 이름: Microsoft Azure 주요 자격 증명 모음용 SQL Server 커넥터
- 버전: 15.0.2000.440
- DLL 파일 날짜: 2020/11/24
이전 버전의 Microsoft Azure 주요 자격 증명 모음용 SQL Server 커넥터 설치
- 버전: 15.0.300.96
- DLL 파일 날짜: 2018/01/30
SQL Server 서비스를 시작합니다.
TDE를 사용하는 데이터베이스에 액세스할 수 있는지 확인
업데이트가 작동하는지 확인한 후 이전 SQL Server 커넥터 폴더를 삭제할 수 있습니다(3단계에서 제거하는 대신 이름을 바꾸기로 선택한 경우).
이전 버전의 SQL Server 커넥터
이전 버전의 SQL Server 커넥터 딥 링크
- 현재: 1.0.5.0(버전 15.0.2000.440) – 파일 날짜 2020년 11월 24일
- 1.0.5.0(버전 15.0.300.96) – 파일 날짜 2018년 1월 30일
- 1.0.4.0(버전 13.0.811.168)
SQL Server 서비스 주체 롤링
SQL Server는 Microsoft Entra ID(이전 Azure Active Directory)에서 만든 서비스 주체를 키 자격 증명 모음에 액세스하는 자격 증명으로 사용합니다. 서비스 주체에는 클라이언트 ID 및 인증 키가 있습니다. SQL Server 자격 증명은 VaultName, 클라이언트 ID 및 인증 키로 설정됩니다. 인증 키는 특정 기간(1년 또는 2년)동안 유효합니다. 기간이 만료되기 전에 서비스 주체에 대한 Microsoft Entra ID에서 새 키를 생성해야 합니다. 그런 다음 SQL Server에서 자격 증명을 변경해야 합니다. Management Studio는 현재 세션에서 자격 증명에 대한 캐시를 유지 관리하므로 자격 증명이 변경되면 Management Studio를 다시 시작해야 합니다.
키 백업 및 복구
키 자격 증명 모음은 정기적으로 백업해야 합니다. 자격 증명 모음의 비대칭 키가 손실되면 백업에서 복원할 수 있습니다. 키는 이전과 동일한 이름을 사용하여 복원해야 하며, Restore PowerShell 명령으로 이를 수행할 수 있습니다(아래 단계 참조).
자격 증명 모음이 손실된 경우 자격 증명 모음을 다시 만들고 이전과 동일한 이름을 사용하여 자격 증명 모음에 비대칭 키를 복원해야 합니다. 자격 증명 모음 이름은 다를 수 있습니다(또는 이전과 동일). 새 중요 보관소에 대한 액세스 권한을 설정하여 SQL Server 암호화 시나리오에 필요한 액세스 권한을 SQL Server 서비스 주체에게 부여한 다음, 새 보관소 이름이 반영되도록 SQL Server 자격 증명을 조정합니다.
요약하면 다음 단계와 같습니다.
- 중요 보관소 키를 백업합니다(Backup-AzureKeyVaultKey PowerShell cmdlet 사용).
- 중요 보관소에 장애가 발생한 경우 동일한 지리적 하위 지역에 새 자격 증명 모음을 만듭니다. 중요 보관소를 만드는 사용자는 SQL Server의 서비스 주체 설정과 동일한 기본 디렉터리에 위치해야 합니다.
- 이전과 동일한 이름을 사용하여 키를 복원하는 Restore-AzureKeyVaultKey PowerShell cmdlet을 사용하여 새 중요 보관소에 키를 복원합니다. 이미 동일한 이름의 키가 있는 경우 복원에 실패합니다.
- SQL Server 서비스 주체에 이 새 자격 증명 모음을 사용할 수 있는 권한을 부여합니다.
- 새 중요 보관소 이름을 반영하도록 데이터베이스 엔진에서 사용하는 SQL Server 자격 증명을 수정합니다(필요한 경우).
키 백업은 동일한 지역 또는 국가(미국, 캐나다, 일본, 오스트레일리아, 인도, APAC, 유럽, 브라질, 중국, 미국 정부 또는 독일) 클라우드에 있는 경우 Azure 지역에서 복원할 수 있습니다.
B. 질문과 대답
Azure 주요 자격 증명 모음에서
키 작업은 Azure Key Vault에서 어떻게 작동하나요?
주요 자격 증명 모음에 있는 비대칭 키는 SQL Server 암호화 키를 보호하는 데 사용됩니다. 비대칭 키의 퍼블릭 부분만 자격 증명 모음을 떠나고 프라이빗 부분은 자격 증명 모음에서 내보내지 않습니다. 비대칭 키를 사용하는 모든 암호화 작업은 Azure Key Vault 서비스 내에서 수행되며, 서비스 보안에 의해 보호됩니다.
키 URI는 무엇인가요?
Azure Key Vault의 모든 키에는 애플리케이션에서 키를 참조하는 데 사용할 수 있는 URI(Uniform Resource Identifier)가 있습니다. 현재 버전을 가져오려면 https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey
형식을 사용하고, 특정 버전을 가져오려면 https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey/cgacf4f763ar42ffb0a1gca546aygd87
형식을 사용합니다.
SQL Server 구성 시
SQL Server 커넥터에서 액세스해야 하는 엔드포인트는 무엇인가요? 커넥터는 2개의 엔드포인트와 통신하며, 해당 엔드포인트는 허용되어야 합니다. Https의 경우 이러한 다른 서비스에 대한 아웃바운드 통신에 필요한 유일한 포트는 443입니다.
- login.microsoftonline.com/*:443
- .vault.azure.net/:443
또한 인증서 해지 목록을 확인하면 포트 80에서 HTTP 트래픽이 발생할 수 있습니다.
참고 항목
방화벽 또는 프록시 서버의 후방에 Azure Key Vault용 SQL Server 커넥터를 사용하면 트래픽이 지연되거나 차단되는 경우 성능에 영향을 줄 수 있습니다. 올바른 규칙을 적용하려면 방화벽 뒤에 있는 Azure Key Vault 액세스를 숙지합니다.
HTTP(S) 프록시 서버를 통해 Azure Key Vault에 연결하려면 어떻게 하나요? 커넥터는 Internet Explorer의 프록시 구성 설정을 사용합니다. 이러한 설정은 그룹 정책 또는 레지스트리를 통해 제어할 수 있지만, 시스템 전체 설정이 아니며 SQL Server 인스턴스를 실행하는 서비스 계정을 대상으로 해야 합니다. 데이터베이스 관리자가 Internet Explorer에서 설정을 보거나 편집하는 경우 SQL Server 엔진이 아닌 데이터베이스 관리자의 계정에만 영향을 미칩니다. 서비스 계정을 사용하여 대화형으로 서버에 로그온하는 것은 권장되지 않으며 여러 보안 환경에서 차단됩니다. 구성된 프록시 설정의 변경 사항은 커넥터가 키 자격 증명 모음에 처음 연결을 시도할 때 캐시되므로 적용하려면 SQL Server 인스턴스를 다시 시작해야 할 수 있습니다.
SQL Server 커넥터에서 지원되는 Azure Key Vault의 키 크기는 무엇인가요? SQL Server 커넥터의 최신 빌드는 2048 및 3072 크기의 Azure Key Vault 키를 지원합니다.
참고 항목
"sys.asymmetric_keys
" 보기는 키 크기 3072를 사용하는 경우에도 키 크기를 2048로 보고합니다. 이는 이 뷰에서 알려진 문제이며, SQL Server 제품 팀은 향후 릴리스에서 이 문제를 해결할 것입니다.
SQL Server의 각 구성 단계에 필요한 최소 권한 수준은 무엇인가요?
sysadmin 고정 서버 역할의 구성원은 모든 구성 단계를 수행할 수 있지만, Microsoft는 사용하는 권한을 최소화할 것을 권장합니다. 다음 목록은 각 작업에 대한 최소 권한 수준을 정의합니다.
암호화 공급자를 만들려면 sysadmin 고정 서버 역할의
CONTROL SERVER
권한 또는 멤버십이 필요합니다.구성 옵션을 변경하고
RECONFIGURE
문을 실행하려면ALTER SETTINGS
서버 수준 권한이 있어야 합니다.ALTER SETTINGS
권한은 sysadmin 및 serveradmin 고정 서버 역할에 의해 암시적으로 부여됩니다.자격 증명을 만들려면
ALTER ANY CREDENTIAL
권한이 필요합니다.로그인에 자격 증명을 추가하려면
ALTER ANY LOGIN
권한이 필요합니다.비대칭 키를 만들려면
CREATE ASYMMETRIC KEY
권한이 필요합니다.
SQL Server 커넥터에 대해 만든 서비스 주체와 동일한 구독 및 디렉터리에서 키 자격 증명 모음이 생성되도록 기본 Microsoft Entra 디렉터리를 변경하려면 어떻게 해야 하나요?
Azure Portal로 이동합니다.
페이지 오른쪽 상단에서 설정 아이콘 또는 사용자 프로필을 선택합니다.
디렉터리 + 구독 페이지에서 모든 디렉터리를 선택하여 속한 모든 Microsoft Entra 디렉터리를 확인합니다.
시작 디렉터리를 변경하거나 디렉터리가 여러 개 있는 경우 다른 디렉터리로 전환할 수 있습니다.
참고 항목
Azure 구독의 기본 디렉터리를 실제로 변경할 수 있는 권한이 없을 수 있습니다. 이 경우 기본 디렉터리 내에 Microsoft Entra 서비스 주체를 만들어 나중에 사용되는 Azure Key Vault와 동일한 디렉터리에 위치하도록 합니다.
Microsoft Entra ID에 대한 자세한 내용은 Azure 구독이 Microsoft Entra ID와 관련된 방법을 참조하세요.
C. SQL Server 커넥터에 대한 오류 코드 설명
참고 항목
Microsoft Entra ID는 Azure AD(Azure Active Directory)의 새 이름이지만, 기존 환경의 중단을 방지하기 위해 UI 필드, 연결 공급자, 오류 코드 및 cmdlet과 같은 일부 하드 코딩된 요소에는 여전히 Azure AD가 남아 있습니다. 이 문서에서는 두 이름을 혼용할 수 있습니다.
공급자 오류 코드:
오류 코드 | 기호 | 설명 |
---|---|---|
0 | scp_err_Success | 작업이 성공했습니다. |
1 | scp_err_Failure | 작업이 실패했습니다. |
2 | scp_err_InsufficientBuffer | 이 오류는 엔진에 지시하여 버퍼에 더 많은 메모리를 할당하도록 합니다. |
3 | scp_err_NotSupported | 작업이 지원되지 않습니다. 예를 들어, 지정한 키 형식 또는 알고리즘이 EKM 공급자에서 지원되지 않습니다. |
4 | scp_err_NotFound | EKM 공급자가 지정된 키 또는 알고리즘을 찾을 수 없습니다. |
5 | scp_err_AuthFailure | EKM 공급자를 사용한 인증이 실패했습니다. |
6 | scp_err_InvalidArgument | 제공된 인수가 잘못되었습니다. |
7 | scp_err_ProviderError | EKM 공급자에서 SQL 엔진에 의해 포착된 지정되지 않은 오류가 발생했습니다. |
401 | acquireToken | 서버는 요청에 대해 401을 응답했습니다. 클라이언트 ID와 비밀 번호가 올바르고 자격 증명 문자열이 하이픈 없이 AAD 클라이언트 ID와 비밀 번호를 연결한 값인지 확인합니다. |
404 | getKeyByName | 키 이름을 찾을 수 없으므로 서버가 404로 응답했습니다. 키 자격 증명 모음에 키 이름이 있는지 확인합니다. |
2049 | scp_err_KeyNameDoesNotFitThumbprint | 키 이름이 너무 길어 SQL 엔진의 지문에 맞지 않습니다. 키 이름은 26자를 초과하면 안 됩니다. |
2050 | scp_err_PasswordTooShort | AAD 클라이언트 ID와 비밀 번호를 연결하는 비밀 번호 문자열은 32자보다 짧아야 합니다. |
2051 | scp_err_OutOfMemory | SQL 엔진의 메모리가 부족하여 EKM 공급자를 위한 메모리를 할당하지 못했습니다. |
2052 | scp_err_ConvertKeyNameToThumbprint | 키 이름을 지문으로 변환하지 못했습니다. |
2053 | scp_err_ConvertThumbprintToKeyName | 지문을 키 이름으로 변환하지 못했습니다. |
2057 | scp_err_ThumbprintExistedInRegistry | 키 지문은 다른 키 URI에 매핑된 Windows 레지스트리에 이미 있습니다. |
2058 | scp_err_FailureInRegistry | 레지스트리에서 작업을 수행하지 못했습니다. SQL Server 서비스 계정에 레지스트리 키를 만들 수 있는 권한이 없습니다. |
3000 | ErrorSuccess | AKV 작업이 성공했습니다. |
3001 | ErrorUnknown | 지정되지 않은 오류가 발생했으며 AKV 작업이 실패했습니다. |
3002 | ErrorHttpCreateHttpClientOutOfMemory | 메모리가 부족하여 AKV 작업에 대한 HttpClient를 만들 수 없습니다. |
3003 | ErrorHttpOpenSession | 네트워크 오류로 인해 Http 세션을 열 수 없습니다. |
3004 | ErrorHttpConnectSession | 네트워크 오류로 인해 Http 세션을 연결할 수 없습니다. |
3005 | ErrorHttpAttemptConnect | 네트워크 오류로 인해 연결을 시도할 수 없습니다. |
3006 | ErrorHttpOpenRequest | 네트워크 오류로 인해 요청을 열 수 없습니다. |
3007 | ErrorHttpAddRequestHeader | 요청 헤더를 추가할 수 없습니다. |
3008 | ErrorHttpSendRequest | 네트워크 오류로 인해 요청을 보낼 수 없습니다. |
3009 | ErrorHttpGetResponseCode | 네트워크 오류로 인해 응답 코드를 가져올 수 없습니다. |
3010 | ErrorHttpResponseCodeUnauthorized | 서버는 요청에 대해 401을 응답했습니다. |
3011 | ErrorHttpResponseCodeThrottled | 서버에서 요청을 제한했습니다. |
3012 | ErrorHttpResponseCodeClientError | 커넥터에서 보낸 요청이 잘못되었습니다. 이 문제는 일반적으로 키 이름이 잘못되었거나 잘못된 문자가 포함되었음을 의미합니다. |
3013 | ErrorHttpResponseCodeServerError | 서버에서 응답 코드 500 ~ 600을 응답했습니다. |
3014 | ErrorHttpQueryHeader | 응답 헤더를 쿼리할 수 없습니다. |
3015 | ErrorHttpQueryHeaderOutOfMemoryCopyHeader | 메모리 부족으로 인해 응답 헤더를 복사할 수 없습니다. |
3016 | ErrorHttpQueryHeaderOutOfMemoryReallocBuffer | 버퍼를 재할당할 때 메모리가 부족하여 응답 헤더를 쿼리할 수 없습니다. |
3017 | ErrorHttpQueryHeaderNotFound | 응답에서 쿼리 헤더를 찾을 수 없습니다. |
3018 | ErrorHttpQueryHeaderUpdateBufferLength | 응답 헤더를 쿼리하는 동안 버퍼 길이를 업데이트할 수 없습니다. |
3019 | ErrorHttpReadData | 네트워크 오류로 인해 응답 데이터를 읽을 수 없습니다. |
3076 | ErrorHttpResourceNotFound | 키 이름을 찾을 수 없으므로 서버가 404로 응답했습니다. 중요 보관소에 키 이름이 있는지 확인합니다. |
3077 | ErrorHttpOperationForbidden | 사용자에게 작업을 수행할 수 있는 적절한 권한이 없기 때문에 서버가 403으로 응답했습니다. 지정된 작업에 대한 권한이 있는지 확인합니다. 커넥터가 올바르게 작동하려면 최소한 'get, list, wrapKey, unwrapKey' 권한이 필요합니다. |
3100 | ErrorHttpCreateHttpClientOutOfMemory | 메모리 부족으로 인해 AKV 작업을 위한 HttpClient를 만들 수 없습니다. |
3101 | ErrorHttpOpenSession | 네트워크 오류로 인해 Http 세션을 열 수 없습니다. |
3102 | ErrorHttpConnectSession | 네트워크 오류로 인해 Http 세션을 연결할 수 없습니다. |
3103 | ErrorHttpAttemptConnect | 네트워크 오류로 인해 연결을 시도할 수 없습니다. |
3104 | ErrorHttpOpenRequest | 네트워크 오류로 인해 요청을 열 수 없습니다. |
3105 | ErrorHttpAddRequestHeader | 요청 헤더를 추가할 수 없습니다. |
3106 | ErrorHttpSendRequest | 네트워크 오류로 인해 요청을 보낼 수 없습니다. |
3107 | ErrorHttpGetResponseCode | 네트워크 오류로 인해 응답 코드를 가져올 수 없습니다. |
3108 | ErrorHttpResponseCodeUnauthorized | 서버는 요청에 대해 401을 응답했습니다. 클라이언트 ID와 비밀이 올바르고, 자격 증명 문자열이 AAD 클라이언트 ID와 비밀을 하이픈 없이 연결한 값인지 확인합니다. |
3109 | ErrorHttpResponseCodeThrottled | 서버에서 요청을 제한했습니다. |
3110 | ErrorHttpResponseCodeClientError | 요청이 잘못되었습니다. 이 문제는 일반적으로 키 이름이 잘못되었거나 잘못된 문자가 포함되었음을 의미합니다. |
3111 | ErrorHttpResponseCodeServerError | 서버에서 응답 코드 500 ~ 600을 응답했습니다. |
3112 | ErrorHttpResourceNotFound | 키 이름을 찾을 수 없으므로 서버가 404로 응답했습니다. 키 자격 증명 모음에 키 이름이 있는지 확인합니다. |
3113 | ErrorHttpOperationForbidden | 사용자가 작업을 수행할 적절한 권한이 없어 서버가 403으로 응답했습니다. 지정된 작업에 대한 권한이 있는지 확인합니다. 최소한 'get, wrapKey, unwrapKey' 권한이 필요합니다. |
3114 | ErrorHttpQueryHeader | 응답 헤더를 쿼리할 수 없습니다. |
3115 | ErrorHttpQueryHeaderOutOfMemoryCopyHeader | 메모리 부족으로 인해 응답 헤더를 복사할 수 없습니다. |
3116 | ErrorHttpQueryHeaderOutOfMemoryReallocBuffer | 버퍼를 재할당할 때 메모리가 부족하여 응답 헤더를 쿼리할 수 없습니다. |
3117 | ErrorHttpQueryHeaderNotFound | 응답에서 쿼리 헤더를 찾을 수 없습니다. |
3118 | ErrorHttpQueryHeaderUpdateBufferLength | 응답 헤더를 쿼리하는 동안 버퍼 길이를 업데이트할 수 없습니다. |
3119 | ErrorHttpReadData | 네트워크 오류로 인해 응답 데이터를 읽을 수 없습니다. |
3120 | ErrorHttpGetResponseOutOfMemoryCreateTempBuffer | 임시 버퍼를 만드는 동안 메모리 부족으로 인해 응답 본문을 가져올 수 없습니다. |
3121 | ErrorHttpGetResponseOutOfMemoryGetResultString | 결과 문자열을 가져올 때 메모리 부족으로 인해 응답 본문을 가져올 수 없습니다. |
3122 | ErrorHttpGetResponseOutOfMemoryAppendResponse | 응답을 추가하는 동안 메모리 부족으로 인해 응답 본문을 가져올 수 없습니다. |
3200 | ErrorGetAADValuesOutOfMemoryConcatPath | 경로를 연결하는 동안 메모리 부족으로 인해 Azure Active Directory 챌린지 헤더 값을 가져올 수 없습니다. |
3201 | ErrorGetAADDomainUrlStartPosition | 잘못된 형식의 응답 챌린지 헤더에서 Azure Active Directory 도메인 URL의 시작 위치를 찾을 수 없습니다. |
3202 | ErrorGetAADDomainUrlStopPosition | 잘못된 형식의 응답 챌린지 헤더에서 Azure Active Directory 도메인 URL의 끝 위치를 찾을 수 없습니다. |
3203 | ErrorGetAADDomainUrlMalformatted | Azure Active Directory 응답 챌린지 헤더의 형식이 잘못되었으며 AAD 도메인 URL이 포함되어 있지 않습니다. |
3204 | ErrorGetAADDomainUrlOutOfMemoryAlloc | Azure Active Directory 도메인 URL에 대한 버퍼를 할당할 때 메모리가 부족합니다. |
3205 | ErrorGetAADTenantIdOutOfMemoryAlloc | Azure Active Directory tenantId에 대한 버퍼를 할당할 때 메모리가 부족합니다. |
3206 | ErrorGetAKVResourceUrlStartPosition | 형식이 잘못된 응답 챌린지 헤더에서 Azure Key Vault 리소스 URL의 시작 위치를 찾을 수 없습니다. |
3207 | ErrorGetAKVResourceUrlStopPosition | 형식이 잘못된 응답 챌린지 헤더에서 Azure Key Vault 리소스 URL의 끝 위치를 찾을 수 없습니다. |
3208 | ErrorGetAKVResourceUrlOutOfMemoryAlloc | Azure Key Vault 리소스 URL에 대한 버퍼를 할당할 때 메모리가 부족합니다. |
3300 | ErrorGetTokenOutOfMemoryConcatPath | 요청 경로를 연결하는 동안 메모리 부족으로 인해 토큰을 가져올 수 없습니다. |
3301 | ErrorGetTokenOutOfMemoryConcatBody | 응답 본문을 연결하는 동안 메모리 부족으로 인해 토큰을 가져올 수 없습니다. |
3302 | ErrorGetTokenOutOfMemoryConvertResponseString | 응답 문자열을 변환하는 동안 메모리 부족으로 인해 토큰을 가져올 수 없습니다. |
3303 | ErrorGetTokenBadCredentials | 잘못된 자격 증명으로 인해 토큰을 가져올 수 없습니다. 자격 증명 문자열 또는 인증서가 유효한지 확인합니다. |
3304 | ErrorGetTokenFailedToGetToken | 자격 증명이 올바르지만 작업이 여전히 유효한 토큰을 가져오지 못했습니다. |
3,305 | ErrorGetTokenRejected | 토큰은 유효하지만 서버에서 거부됩니다. |
3306 | ErrorGetTokenNotFound | 응답에서 토큰을 찾을 수 없습니다. |
3307 | ErrorGetTokenJsonParser | 서버의 JSON 응답을 구문 분석할 수 없습니다. |
3308 | ErrorGetTokenExtractToken | JSON 응답에서 토큰을 추출할 수 없습니다. |
3400 | ErrorGetKeyByNameOutOfMemoryConvertResponseString | 응답 문자열을 변환하는 동안 메모리 부족으로 인해 이름으로 키를 가져올 수 없습니다. |
3401 | ErrorGetKeyByNameOutOfMemoryConcatPath | 메모리 부족으로 인해 경로를 연결할 때 이름을 기준으로 키를 가져올 수 없습니다. |
3402 | ErrorGetKeyByNameOutOfMemoryConcatHeader | 헤더를 연결하는 동안 메모리 부족으로 인해 이름으로 키를 가져올 수 없습니다. |
3403 | ErrorGetKeyByNameNoResponse | 서버로부터 응답이 없기 때문에 이름을 기준으로 키를 가져올 수 없습니다. |
3404 | ErrorGetKeyByNameJsonParser | JSON 응답을 구문 분석하지 못하여 이름으로 키를 가져올 수 없습니다. |
3405 | ErrorGetKeyByNameExtractKeyNode | 응답에서 키 노드를 추출하지 못하여 이름으로 키를 가져올 수 없습니다. |
3406 | ErrorGetKeyByNameExtractKeyId | 응답에서 키 ID를 추출하지 못하여 이름으로 키를 가져올 수 없습니다. |
3407 | ErrorGetKeyByNameExtractKeyType | 응답에서 키 유형을 추출하지 못하여 이름으로 키를 가져올 수 없습니다. |
3408 | ErrorGetKeyByNameExtractKeyN | 응답에서 키 N을 추출하지 못해 이름을 기준으로 키를 가져올 수 없습니다. |
3409 | ErrorGetKeyByNameBase64DecodeN | N을 Base64로 디코딩하지 못하여 이름으로 키를 가져올 수 없습니다. |
3410 | ErrorGetKeyByNameExtractKeyE | 응답에서 키 E를 추출하지 못하여 이름으로 키를 가져올 수 없습니다. |
3411 | ErrorGetKeyByNameBase64DecodeE | E를 Base64 디코딩하지 못해 이름을 기준으로 키를 가져올 수 없습니다. |
3412 | ErrorGetKeyByNameExtractKeyUri | 응답에서 URI 키를 추출할 수 없습니다. |
3500 | ErrorBackupKeyOutOfMemoryConvertResponseString | 응답 문자열을 변환하는 동안 메모리 부족으로 인해 키를 백업할 수 없습니다. |
3501 | ErrorBackupKeyOutOfMemoryConcatPath | 경로를 연결하는 동안 메모리 부족으로 인해 키를 백업할 수 없습니다. |
3502 | ErrorBackupKeyOutOfMemoryConcatHeader | 요청 헤더를 연결하는 동안 메모리 부족으로 인해 키를 백업할 수 없습니다. |
3503 | ErrorBackupKeyNoResponse | 서버로부터 응답이 없어 키를 백업할 수 없습니다. |
3504 | ErrorBackupKeyJsonParser | JSON 응답을 구문 분석하지 못하여 키를 백업할 수 없습니다. |
3505 | ErrorBackupKeyExtractValue | JSON 응답에서 값을 추출하지 못하여 키를 백업할 수 없습니다. |
3506 | ErrorBackupKeyBase64DecodeValue | 값 필드를 Base64 디코딩하지 못하여 키를 백업할 수 없습니다. |
3600 | ErrorWrapKeyOutOfMemoryConvertResponseString | 응답 문자열을 변환하는 동안 메모리 부족으로 인해 키를 래핑할 수 없습니다. |
3601 | ErrorWrapKeyOutOfMemoryConcatPath | 경로를 연결하는 동안 메모리 부족으로 인해 키를 래핑할 수 없습니다. |
3602 | ErrorWrapKeyOutOfMemoryConcatHeader | 헤더를 연결하는 동안 메모리 부족으로 인해 키를 래핑할 수 없습니다. |
3603 | ErrorWrapKeyOutOfMemoryConcatBody | 본문을 연결하는 동안 메모리 부족으로 인해 키를 래핑할 수 없습니다. |
3604 | ErrorWrapKeyOutOfMemoryConvertEncodedBody | 인코딩된 본문을 변환하는 동안 메모리 부족으로 인해 키를 래핑할 수 없습니다. |
3605 | ErrorWrapKeyBase64EncodeKey | Base64 인코딩에 실패하여 키를 래핑할 수 없습니다. |
3606 | ErrorWrapKeyBase64DecodeValue | 응답 값을 Base64 디코딩하지 못하여 키를 래핑할 수 없습니다. |
3607 | ErrorWrapKeyJsonParser | JSON 응답을 구문 분석하지 못하여 키를 래핑할 수 없습니다. |
3608 | ErrorWrapKeyExtractValue | 응답에서 값을 추출하지 못해 키를 래핑할 수 없습니다. |
3609 | ErrorWrapKeyNoResponse | 서버로부터 응답이 없어 키를 래핑할 수 없습니다. |
3700 | ErrorUnwrapKeyOutOfMemoryConvertResponseString | 메모리 부족으로 인해 응답 문자열을 변환할 때 키를 래핑 해제할 수 없습니다. |
3701 | ErrorUnwrapKeyOutOfMemoryConcatPath | 경로를 연결하는 동안 메모리 부족으로 인해 키의 래핑을 해제할 수 없습니다. |
3702 | ErrorUnwrapKeyOutOfMemoryConcatHeader | 헤더를 연결하는 동안 메모리 부족으로 인해 키의 래핑을 해제할 수 없습니다. |
3703 | ErrorUnwrapKeyOutOfMemoryConcatBody | 메모리 부족으로 인해 본문을 연결할 때 키를 래핑 해제할 수 없습니다. |
3704 | ErrorUnwrapKeyOutOfMemoryConvertEncodedBody | 인코딩된 본문을 변환하는 동안 메모리 부족으로 인해 키를 언래핑할 수 없습니다. |
3705 | ErrorUnwrapKeyBase64EncodeKey | Base64 인코딩에 실패하여 키의 래핑을 해제할 수 없습니다. |
3706 | ErrorUnwrapKeyBase64DecodeValue | 응답 값을 Base64 디코딩하지 못하여 키의 래핑을 해제할 수 없습니다. |
3707 | ErrorUnwrapKeyJsonParser | 응답에서 값을 추출하지 못하여 키의 래핑을 해제할 수 없습니다. |
3708 | ErrorUnwrapKeyExtractValue | 응답에서 값을 추출하지 못하여 키의 래핑을 해제할 수 없습니다. |
3709 | ErrorUnwrapKeyNoResponse | 서버로부터 응답이 없어 키의 래핑을 해제할 수 없습니다. |
3800 | ErrorSecretAuthParamsGetRequestBody | AAD 클라이언트 ID 및 비밀을 사용하여 요청 본문을 만드는 동안 오류가 발생했습니다. |
3801 | ErrorJWTTokenCreateHeader | AAD를 사용한 인증을 위해 JWT 토큰 헤더를 만드는 동안 오류가 발생했습니다. |
3802 | ErrorJWTTokenCreatePayloadGUID | AAD로 인증하기 위한 JWT 토큰 페이로드에 대한 GUID를 만드는 동안 오류가 발생했습니다. |
3803 | ErrorJWTTokenCreatePayload | AAD를 사용한 인증을 위해 JWT 토큰 페이로드를 만드는 동안 오류가 발생했습니다. |
3804 | ErrorJWTTokenCreateSignature | AAD를 사용한 인증을 위해 JWT 토큰 서명을 만드는 동안 오류가 발생했습니다. |
3805 | ErrorJWTTokenSignatureHashAlg | AAD를 사용한 인증을 위해 SHA256 해시 알고리즘을 가져오는 동안 오류가 발생했습니다. |
3806 | ErrorJWTTokenSignatureHash | AAD를 사용한 JWT 토큰 인증을 위해 SHA256 해시를 생성하는 동안 오류가 발생했습니다. |
3807 | ErrorJWTTokenSignatureSignHash | AAD를 사용한 인증을 위해 JWT 토큰 해시에 서명하는 동안 오류가 발생했습니다. |
3808 | ErrorJWTTokenCreateToken | AAD를 사용한 인증을 위해 JWT 토큰을 만드는 동안 오류가 발생했습니다. |
3809 | ErrorPfxCertAuthParamsImportPfx | AAD를 사용한 인증을 위해 Pfx 인증서를 가져오는 동안 오류가 발생했습니다. |
3810 | ErrorPfxCertAuthParamsGetThumbprint | AAD를 사용한 인증을 위해 Pfx 인증서에서 지문을 가져오는 동안 오류가 발생했습니다. |
3811 | ErrorPfxCertAuthParamsGetPrivateKey | AAD를 사용한 인증을 위해 Pfx 인증서에서 프라이빗 키를 가져오는 동안 오류가 발생했습니다. |
3812 | ErrorPfxCertAuthParamsSignAlg | AAD를 사용한 Pfx 인증서 인증을 위해 RSA 서명 알고리즘을 가져오는 동안 오류가 발생했습니다. |
3813 | ErrorPfxCertAuthParamsImportForSign | AAD를 사용한 인증을 위해 RSA 서명에 대한 Pfx 프라이빗 키를 가져오는 동안 오류가 발생했습니다. |
3814 | ErrorPfxCertAuthParamsCreateRequestBody | AAD를 사용한 인증을 위해 Pfx 인증서에서 요청 본문을 만드는 동안 오류가 발생했습니다. |
3815 | ErrorPEMCertAuthParamsGetThumbprint | AAD를 사용한 인증을 위해 지문을 디코딩하는 동안 Base64 오류가 발생했습니다. |
3816 | ErrorPEMCertAuthParamsGetPrivateKey | AAD를 사용한 인증을 위해 PEM에서 RSA 프라이빗 키를 가져오는 동안 오류가 발생했습니다. |
3,817 | ErrorPEMCertAuthParamsSignAlg | AAD를 사용한 PEM 프라이빗 키 인증을 위한 RSA 서명 알고리즘을 가져오는 동안 오류가 발생했습니다. |
3818 | ErrorPEMCertAuthParamsImportForSign | AAD를 사용한 인증을 위해 RSA 서명에 대한 PEM 프라이빗 키를 가져오는 동안 오류가 발생했습니다. |
3819 | ErrorPEMCertAuthParamsCreateRequestBody | AAD를 사용한 인증을 위해 PEM 프라이빗 키에서 요청 본문을 만드는 동안 오류가 발생했습니다. |
3820 | ErrorLegacyPrivateKeyAuthParamsSignAlg | AAD를 사용한 레거시 프라이빗 키 인증을 위해 RSA 서명 알고리즘을 가져오는 동안 오류가 발생했습니다. |
3,821 | ErrorLegacyPrivateKeyAuthParamsImportForSign | AAD를 사용한 인증을 위해 RSA 서명에 대한 레거시 프라이빗 키를 가져오는 동안 오류가 발생했습니다. |
3,822 | ErrorLegacyPrivateKeyAuthParamsCreateRequestBody | AAD를 사용한 인증을 위해 레거시 프라이빗 키에서 요청 본문을 만드는 동안 오류가 발생했습니다. |
3900 | ErrorAKVDoesNotExist | 오류 인터넷 이름이 확인되지 않았습니다. 이는 일반적으로 Azure Key Vault가 삭제되었음을 나타냅니다. |
4000 | ErrorCreateKeyVaultRetryManagerOutOfMemory | 메모리 부족으로 인해 AKV 작업을 위한 RetryManager를 만들 수 없습니다. |
이 테이블에 오류 코드가 표시되지 않으면 오류가 발생할 수 있는 몇 가지 다른 이유는 다음과 같습니다.
인터넷에 액세스할 수 없고 Azure Key Vault에 액세스할 수 없을 수 있습니다. 인터넷 연결을 확인하세요.
Azure 주요 자격 증명 모음 서비스가 종료될 수 있습니다. 다음에 다시 시도하십시오.
Azure 주요 자격 증명 모음 또는 SQL Server에서 비대칭 키를 삭제했을 수 있습니다. 키를 복원합니다.
"라이브러리를 로드할 수 없습니다" 오류가 표시되는 경우 실행 중인 SQL Server 버전에 따라 적절한 버전의 Visual Studio C++ 재배포판이 설치되어 있는지 확인합니다. 아래 테이블에서는 Microsoft 다운로드 센터에서 설치할 버전을 확인할 수 있습니다.
또한 Windows 이벤트 로그에는 SQL Server 커넥터와 관련된 오류도 기록되므로 오류가 실제로 발생하는 이유에 대한 추가 컨텍스트를 파악하는 데 도움이 될 수 있습니다. Windows 애플리케이션 이벤트 로그의 소스는 "Microsoft Azure 주요 자격 증명 모음용 SQL Server 커넥터"입니다.
SQL Server 커넥터 1.0.5.0용 C++ 런타임 라이브러리
SQL Server 버전: | SQL Server 커넥터 1.0.5.0을 사용 중인 경우 재배포 가능한 설치 링크 |
---|---|
2008, 2008 R2, 2012, 2014 | Visual Studio 2013용 Visual C++ 재배포 가능 패키지 |
2016, 2017, 2019 | Visual Studio 2015용 Visual C++ 재배포 가능 패키지 |
SQL Server 커넥터 1.0.4.0용 C++ 런타임 라이브러리
SQL Server 버전: | SQL Server 커넥터 1.0.4.0을 사용하는 경우 재배포 가능 설치 링크 |
---|---|
2008, 2008 R2, 2012, 2014, 2016, 2017, 2019 | Visual Studio 2013용 Visual C++ 재배포 가능 패키지 |
추가 참조
확장 가능 키 관리에 대한 자세한 정보:
EKM을 지원하는 SQL 암호화:
관련 Transact-SQL 명령:
Azure Key Vault 설명서:
PowerShell Azure Key Vault Cmdlets 참조