SQL Server 커넥터 유지 관리 및 문제 해결
적용 대상:SQL Server
이 문서는 SQL Server 커넥터에 대한 추가 정보를 제공합니다. SQL Server 커넥터에 대한 자세한 내용은 azure Key Vault(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 Configuration Manager사용하여 SQL Server 서비스를 중지합니다.
-
제어판>프로그램 및 기능>프로그램을 사용하여 이전 버전을 제거합니다.
- 애플리케이션 이름: Microsoft Azure 주요 자격 증명 모음용 SQL Server 커넥터
- 버전: 15.0.300.96(또는 이전)
- DLL 파일 날짜: 2018년 1월 30일(이상)
- Microsoft Azure Key Vault용 새 SQL Server 커넥터를 설치(업그레이드)합니다.
- 버전: 15.0.2000.440
- DLL 파일 날짜: 2024년 11월 9일
- SQL Server 서비스를 시작합니다.
- 암호화된 데이터베이스 테스트에 액세스할 수 있습니다.
롤백
SQL Server Configuration Manager사용하여 SQL Server 서비스를 중지합니다.
제어판>프로그램>프로그램 및 기능사용하여 새 버전을 제거합니다.
- 애플리케이션 이름: Microsoft Azure 주요 자격 증명 모음용 SQL Server 커넥터
- 버전: 15.0.2000.440
- DLL 파일 날짜: 2024년 11월 9일
Microsoft Azure Key Vault용 SQL Server 커넥터의 이전 버전을 설치합니다.
- 버전: 15.0.300.96
- DLL 파일 날짜: 2018년 1월 30일
SQL Server 서비스를 시작합니다.
TDE를 사용하는 데이터베이스에 액세스할 수 있는지 확인합니다.
업데이트가 작동하는지 유효성을 검사한 후 이전 SQL Server Connector 폴더를 삭제할 수 있습니다(3단계에서 제거하는 대신 이름을 바꾸도록 선택한 경우).
이전 버전의 SQL Server 커넥터
이전 버전의 SQL Server 커넥터 딥 링크
- 현재: 1.0.5.0(버전 15.0.2000.440) – 파일 날짜 2024년 11월 9일
- 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를 다시 시작해야 합니다.
Azure VM의 SQL Server에 대한 관리 ID 지원
SQL Server 2022 CU17(누적 업데이트 17)부터 Microsoft Entra 관리 ID는 Azure VM(Windows에만 해당)의 SQL Server에서 AKV(Azure Key Vault) 및 HSM(Managed Hardware Security Modules)을 사용하는 EKM(확장 가능 키 관리)에 대해 지원됩니다. 자세한 내용은 Azure Key Vault사용하여 확장 가능한 키 관리에 대한
키 백업 및 복구
키 자격 증명 모음은 정기적으로 백업해야 합니다. 자격 증명 모음의 비대칭 키가 손실되면 백업에서 복원할 수 있습니다. 키는 이전과 동일한 이름을 사용하여 복원해야 하며, 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의 각 구성 단계에 필요한 최소 권한 수준은 무엇인가요?
sysadmin 고정 서버 역할의 구성원은 모든 구성 단계를 수행할 수 있지만, Microsoft는 사용하는 권한을 최소화할 것을 권장합니다. 다음 목록은 각 작업에 대한 최소 권한 수준을 정의합니다.
암호화 공급자를 만들려면
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 |
The operation has succeeded. |
1 |
scp_err_Failure |
The operation has failed. |
2 |
scp_err_InsufficientBuffer |
This error tells engine to allocate more memory for the buffer. |
3 |
scp_err_NotSupported |
The operation is not supported. For example, the key type or algorithm specified isn't supported by the EKM provider. |
4 |
scp_err_NotFound |
The specified key or algorithm couldn't be found by the EKM provider. |
5 |
scp_err_AuthFailure |
The authentication has failed with EKM provider. |
6 |
scp_err_InvalidArgument |
The provided argument is invalid. |
7 |
scp_err_ProviderError |
There is an unspecified error happened in EKM provider that is caught by SQL engine. |
401 |
acquireToken |
Server responded 401 for the request. Make sure the client ID and secret are correct, and the credential string is a concatenation of AAD client ID and secret without hyphens. |
404 |
getKeyByName |
The server responded 404, because the key name was not found. Please make sure the key name exists in your vault. |
2049 |
scp_err_KeyNameDoesNotFitThumbprint |
The key name is too long to fit into SQL engine's thumbprint. The key name must not exceed 26 characters. |
2050 |
scp_err_PasswordTooShort |
The secret string that is the concatenation of AAD client ID and secret is shorter than 32 characters. |
2051 |
scp_err_OutOfMemory |
SQL engine has run out of memory and failed to allocate memory for EKM provider. |
2052 |
scp_err_ConvertKeyNameToThumbprint |
Failed to convert key name to thumbprint. |
2053 |
scp_err_ConvertThumbprintToKeyName| Failed to convert thumbprint to key name. |
|
2057 |
scp_err_ThumbprintExistedInRegistry |
The key thumbprint already exists in Windows registry mapped to a different key URI. |
2058 |
scp_err_FailureInRegistry| Failed to perform the operation in registry. SQL Server service account does not have permission to create the registry key. |
|
3000 |
ErrorSuccess |
The AKV operation has succeeded. |
3001 |
ErrorUnknown |
The AKV operation has failed with an unspecified error. |
3002 |
ErrorHttpCreateHttpClientOutOfMemory |
Cannot create an HttpClient for AKV operation due to out of memory. |
3003 |
ErrorHttpOpenSession |
Cannot open an Http session because of network error. |
3004 |
ErrorHttpConnectSession |
Cannot connect an Http session because of network error. |
3005 |
ErrorHttpAttemptConnect |
Cannot attempt a connect because of network error. |
3006 |
ErrorHttpOpenRequest |
Cannot open a request due to network error. |
3007 |
ErrorHttpAddRequestHeader |
Cannot add request header. |
3008 |
ErrorHttpSendRequest |
Cannot send a request due to network error. |
3009 |
ErrorHttpGetResponseCode |
Cannot get a response code due to network error. |
3010 |
ErrorHttpResponseCodeUnauthorized |
Server responded 401 for the request. |
3011 |
ErrorHttpResponseCodeThrottled |
Server has throttled the request. |
3012 |
ErrorHttpResponseCodeClientError |
The request sent from the connector is invalid. This usually means the key name is invalid or contains invalid characters. |
3013 |
ErrorHttpResponseCodeServerError |
Server responded a response code between 500 and 600. |
3014 |
ErrorHttpQueryHeader |
Cannot query for response header. |
3015 |
ErrorHttpQueryHeaderOutOfMemoryCopyHeader |
Cannot copy the response header due to out of memory. |
3016 |
ErrorHttpQueryHeaderOutOfMemoryReallocBuffer |
Cannot query the response header due to out of memory when reallocating a buffer. |
3017 |
ErrorHttpQueryHeaderNotFound |
Cannot find the query header in the response. |
3018 |
ErrorHttpQueryHeaderUpdateBufferLength |
Cannot update the buffer length when querying the response header. |
3019 |
ErrorHttpReadData |
Cannot read response data due to network error. |
3076 |
ErrorHttpResourceNotFound |
The server responded 404, because the key name was not found. Make sure the key name exists in your vault. |
3077 |
ErrorHttpOperationForbidden |
The server responded 403, because the user doesn't have proper permission to perform the action. Make sure you have the permission for the specified operation. At minimum, the connector requires 'get, list, wrapKey, unwrapKey' permissions to function properly. |
3100 |
ErrorHttpCreateHttpClientOutOfMemory |
Cannot create a HttpClient for AKV operation due to out of memory. |
3101 |
ErrorHttpOpenSession |
Cannot open a Http session due to network error. |
3102 |
ErrorHttpConnectSession |
Cannot connect a Http session due to network error. |
3103 |
ErrorHttpAttemptConnect |
Cannot attempt a connect due to network error. |
3104 |
ErrorHttpOpenRequest |
Cannot open a request due to network error. |
3105 |
ErrorHttpAddRequestHeader |
Cannot add request header. |
3106 |
ErrorHttpSendRequest |
Cannot send a request due to network error. |
3107 |
ErrorHttpGetResponseCode |
Cannot get a response code due to network error. |
3108 |
ErrorHttpResponseCodeUnauthorized |
Server responded 401 for the request. Make sure the client Id and secret are correct, and the credential string is a concatenation of AAD client Id and secret without hyphens. |
3109 |
ErrorHttpResponseCodeThrottled |
Server has throttled the request. |
3110 |
ErrorHttpResponseCodeClientError |
The request is invalid. This usually means the key name is invalid or contains invalid characters. |
3111 |
ErrorHttpResponseCodeServerError |
Server responded a response code between 500 and 600. |
3112 |
ErrorHttpResourceNotFound |
The server responded 404, because the key name was not found. Please make sure the key name exists in your vault. |
3113 |
ErrorHttpOperationForbidden |
The server responded 403, because the user does not have proper permission to perform the action. Please make sure you have the permission for the specified operation. At minimum,'get, wrapKey, unwrapKey' permissions are required. |
3114 |
ErrorHttpQueryHeader |
Cannot query for response header. |
3115 |
ErrorHttpQueryHeaderOutOfMemoryCopyHeader |
Cannot copy the response header due to out of memory. |
3116 |
ErrorHttpQueryHeaderOutOfMemoryReallocBuffer |
Cannot query the response header due to out of memory when reallocating a buffer. |
3117 |
ErrorHttpQueryHeaderNotFound |
Cannot find the query header in the response. |
3118 |
ErrorHttpQueryHeaderUpdateBufferLength |
Cannot update the buffer length when querying the response header. |
3119 |
ErrorHttpReadData |
Cannot read response data due to network error. |
3120 |
ErrorHttpGetResponseOutOfMemoryCreateTempBuffer |
Cannot get response body due to out of memory when creating a temp buffer. |
3121 |
ErrorHttpGetResponseOutOfMemoryGetResultString |
Cannot get response body due to out of memory when get result string. |
3122 |
ErrorHttpGetResponseOutOfMemoryAppendResponse |
Cannot get response body due to out of memory when appending response. |
3200 |
ErrorGetAADValuesOutOfMemoryConcatPath |
Cannot get Azure Active Directory challenge header values due to out of memory when concatenating the path. |
3201 |
ErrorGetAADDomainUrlStartPosition |
Cannot find the starting position for Azure Active Directory domain Url in malformatted response challenge header. |
3202 |
ErrorGetAADDomainUrlStopPosition |
Cannot find the ending position for Azure Active Directory domain Url in malformatted response challenge header. |
3203 |
ErrorGetAADDomainUrlMalformatted |
The Azure Active Directory response challenge header is malformatted and doesn't contain the AAD domain Url. |
3204 |
ErrorGetAADDomainUrlOutOfMemoryAlloc |
Out of memory when allocating buffer for Azure Active Directory domain Url. |
3205 |
ErrorGetAADTenantIdOutOfMemoryAlloc |
Out of memory when allocating buffer for Azure Active Directory tenantId. |
3206 |
ErrorGetAKVResourceUrlStartPosition |
Cannot find the starting position for Azure Key Vault resource Url in malformatted response challenge header. |
3207 |
ErrorGetAKVResourceUrlStopPosition |
Cannot find the ending position for Azure Key Vault resource Url in malformatted response challenge header. |
3208 |
ErrorGetAKVResourceUrlOutOfMemoryAlloc |
Out of memory when allocating buffer for Azure Key Vault resource Url. |
3300 |
ErrorGetTokenOutOfMemoryConcatPath |
Cannot get token due to out of memory when concatenating the request path. |
3301 |
ErrorGetTokenOutOfMemoryConcatBody |
Cannot get token due to out of memory when concatenating the response body. |
3302 |
ErrorGetTokenOutOfMemoryConvertResponseString |
Cannot get token due to out of memory when converting the response string. |
3303 |
ErrorGetTokenBadCredentials |
Cannot get token due to incorrect credentials. Make sure the credential string or certificate is valid. |
3304 |
ErrorGetTokenFailedToGetToken |
While the credentials are correct, the operation still failed to get a valid token. |
3305 |
ErrorGetTokenRejected |
The token is valid but is rejected by server. |
3306 |
ErrorGetTokenNotFound |
Cannot find the token in response. |
3307 |
ErrorGetTokenJsonParser |
Cannot parse the JSON response of server. |
3308 |
ErrorGetTokenExtractToken |
Cannot extract the token from the JSON response. |
3400 |
ErrorGetKeyByNameOutOfMemoryConvertResponseString |
Cannot get the key by name due to out of memory converting the response string. |
3401 |
ErrorGetKeyByNameOutOfMemoryConcatPath |
Cannot get the key by name due to out of memory when concatenating the path. |
3402 |
ErrorGetKeyByNameOutOfMemoryConcatHeader |
Cannot get the key by name due to out of memory when concatenating the header. |
3403 |
ErrorGetKeyByNameNoResponse |
Cannot get the key by name due to no response from server. |
3404 |
ErrorGetKeyByNameJsonParser |
Cannot get the key by name due to failed to parse the JSON response. |
3405 |
ErrorGetKeyByNameExtractKeyNode |
Cannot get the key by name due to failed to extract the key node from the response. |
3406 |
ErrorGetKeyByNameExtractKeyId |
Cannot get the key by name due to failed to extract the key Id from the response. |
3407 |
ErrorGetKeyByNameExtractKeyType |
Cannot get the key by name due to failed to extract the key type from the response. |
3408 |
ErrorGetKeyByNameExtractKeyN |
Cannot get the key by name due to failed to extract the key N from the response. |
3409 |
ErrorGetKeyByNameBase64DecodeN |
Cannot get the key by name due to failed to Base64 decode the N. |
3410 |
ErrorGetKeyByNameExtractKeyE |
Cannot get the key by name due to failed to extract the key E from the response. |
3411 |
ErrorGetKeyByNameBase64DecodeE |
Cannot get the key by name due to failed to Base64 decode the E. |
3412 |
ErrorGetKeyByNameExtractKeyUri |
Cannot extract the key Uri from the response. |
3500 |
ErrorBackupKeyOutOfMemoryConvertResponseString |
Cannot back up key due to out of memory when converting the response string. |
3501 |
ErrorBackupKeyOutOfMemoryConcatPath |
Cannot back up key due to out of memory when concatenating the path. |
3502 |
ErrorBackupKeyOutOfMemoryConcatHeader |
Cannot back up key due to out of memory when concatenating the request header. |
3503 |
ErrorBackupKeyNoResponse |
Cannot back up key due to no response from server. |
3504 |
ErrorBackupKeyJsonParser |
Cannot back up key due to failed to parse the JSON response. |
3505 |
ErrorBackupKeyExtractValue |
Cannot back up key due to failed to extract the value from JSON response. |
3506 |
ErrorBackupKeyBase64DecodeValue |
Cannot back up key due to failed to Base64 decode the value field. |
3600 |
ErrorWrapKeyOutOfMemoryConvertResponseString |
Cannot wrap key due to out of memory when converting response string. |
3601 |
ErrorWrapKeyOutOfMemoryConcatPath |
Cannot wrap key due to out of memory when concatenating the path. |
3602 |
ErrorWrapKeyOutOfMemoryConcatHeader |
Cannot wrap key due to out of memory when concatenating the header. |
3603 |
ErrorWrapKeyOutOfMemoryConcatBody |
Cannot wrap key due to out of memory when concatenating the body. |
3604 |
ErrorWrapKeyOutOfMemoryConvertEncodedBody |
Cannot wrap key due to out of memory when converting the encoded body. |
3605 |
ErrorWrapKeyBase64EncodeKey |
Cannot wrap key due to failed to Base64 encode the key. |
3606 |
ErrorWrapKeyBase64DecodeValue |
Cannot wrap key due to failed to Base64 decode the response value. |
3607 |
ErrorWrapKeyJsonParser |
Cannot wrap key due to failed to parse the JSON response. |
3608 |
ErrorWrapKeyExtractValue |
Cannot wrap key due to failed to extract value from response. |
3609 |
ErrorWrapKeyNoResponse |
Cannot wrap key due to no response from server. |
3700 |
ErrorUnwrapKeyOutOfMemoryConvertResponseString |
Cannot unwrap key due to out of memory when converting response string. |
3701 |
ErrorUnwrapKeyOutOfMemoryConcatPath |
Cannot unwrap key due to out of memory when concatenating the path. |
3702 |
ErrorUnwrapKeyOutOfMemoryConcatHeader |
Cannot unwrap key due to out of memory when concatenating the header. |
3703 |
ErrorUnwrapKeyOutOfMemoryConcatBody |
Cannot unwrap key due to out of memory when concatenating the body. |
3704 |
ErrorUnwrapKeyOutOfMemoryConvertEncodedBody |
Cannot unwrap key due to out of memory when converting the encoded body. |
3705 |
ErrorUnwrapKeyBase64EncodeKey |
Cannot unwrap key due to failed to Base64 encode the key. |
3706 |
ErrorUnwrapKeyBase64DecodeValue |
Cannot unwrap key due to failed to Base64 decode the response value. |
3707 |
ErrorUnwrapKeyJsonParser |
Cannot unwrap key due to failed to extract value from response. |
3708 |
ErrorUnwrapKeyExtractValue |
Cannot unwrap key due to failed to extract value from response. |
3709 |
ErrorUnwrapKeyNoResponse |
Cannot unwrap key due to no response from server. |
3800 |
ErrorSecretAuthParamsGetRequestBody |
Error creating request body using AAD clientId and secret. |
3801 |
ErrorJWTTokenCreateHeader |
Error creating JWT token header for authentication with AAD. |
3802 |
ErrorJWTTokenCreatePayloadGUID |
Error creating GUID for JWT token payload for authentication with AAD. |
3803 |
ErrorJWTTokenCreatePayload |
Error creating JWT token payload for authentication with AAD. |
3804 |
ErrorJWTTokenCreateSignature |
Error creating JWT token signature for authentication with AAD. |
3805 |
ErrorJWTTokenSignatureHashAlg |
Error getting SHA256 hash algorithm for authentication with AAD. |
3806 |
ErrorJWTTokenSignatureHash |
Error creating SHA256 hash for JWT token authentication with AAD. |
3807 |
ErrorJWTTokenSignatureSignHash |
Error signing JWT token hash for authentication with AAD. |
3808 |
ErrorJWTTokenCreateToken |
Error creating JWT token for authentication with AAD. |
3809 |
ErrorPfxCertAuthParamsImportPfx |
Error importing Pfx certificate for authentication with AAD. |
3810 |
ErrorPfxCertAuthParamsGetThumbprint |
Error getting thumbprint from Pfx certificate for authentication with AAD. |
3811 |
ErrorPfxCertAuthParamsGetPrivateKey |
Error getting private key from Pfx certificate for authentication with AAD. |
3812 |
ErrorPfxCertAuthParamsSignAlg |
Error getting RSA signing algorithm for Pfx certificate authentication with AAD. |
3813 |
ErrorPfxCertAuthParamsImportForSign |
Error importing Pfx private key for RSA signing for authentication with AAD. |
3814 |
ErrorPfxCertAuthParamsCreateRequestBody |
Error creating request body from Pfx certificate for authentication with AAD. |
3815 |
ErrorPEMCertAuthParamsGetThumbprint |
Error Base64 decoding Thumbprint for authentication with AAD. |
3816 |
ErrorPEMCertAuthParamsGetPrivateKey |
Error getting RSA private key from PEM for authentication with AAD. |
3817 |
ErrorPEMCertAuthParamsSignAlg |
Error getting RSA signing algorithm for PEM private key authentication with AAD. |
3818 |
ErrorPEMCertAuthParamsImportForSign |
Error importing PEM private key for RSA signing for authentication with AAD. |
3819 |
ErrorPEMCertAuthParamsCreateRequestBody |
Error creating request body from PEM private key for authentication with AAD. |
3820 |
ErrorLegacyPrivateKeyAuthParamsSignAlg |
Error getting RSA signing algorithm for Legacy private key authentication with AAD. |
3821 |
ErrorLegacyPrivateKeyAuthParamsImportForSign |
Error importing Legacy private key for RSA signing for authentication with AAD. |
3822 |
ErrorLegacyPrivateKeyAuthParamsCreateRequestBody |
Error creating request body from Legacy private key for authentication with AAD. |
3900 |
ErrorAKVDoesNotExist |
Error internet name not resolved. This typically indicates the Azure Key Vault is deleted. |
4000 |
ErrorCreateKeyVaultRetryManagerOutOfMemory |
Cannot create a RetryManager for AKV operation due to out of memory. |
이 표에 오류 코드가 표시되지 않으면 오류가 발생할 수 있는 몇 가지 다른 이유는 다음과 같습니다.
인터넷에 액세스할 수 없고 Azure Key Vault에 액세스할 수 없습니다. 인터넷 연결을 확인하세요.
Azure Key Vault 서비스가 중단될 수 있습니다. azure.status.microsoft검토하세요. 다음에 다시 시도하십시오.
Azure Key Vault 또는 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 참조
관련 콘텐츠
- Azure Key Vault(SQL Server) 사용하여 확장 가능한 키 관리
- SQL 암호화 기능을 통해 SQL Server 커넥터 사용
- EKM 공급자 사용(서버 구성 옵션)
- Azure Key Vault 사용하여 SQL Server TDE 확장 가능 키 관리 설정
- 추가적인 샘플 스크립트는 SQL Server 투명한 데이터 암호화 및 Azure Key Vault를 사용한 확장 가능 키 관리 블로그를 참조하세요.