Поделиться через


Коннектор SQL Server: Обслуживание и устранение неполадок

Область применения:SQL Server

Дополнительные сведения о соединителе SQL Server приведены в этой статье. Дополнительные сведения о соединителе SQL Server см. в статье Расширяемое управление ключами с помощью Azure Key Vault (SQL Server), Настройка расширяемого управления ключами SQL Server с помощью Azure Key Vaultи Использование соединителя SQL Server с функциями шифрования SQL.

Примечание.

Хотя Microsoft Entra ID — это новое название для Azure Active Directory (Azure AD), чтобы предотвратить нарушение существующих сред, Azure AD по-прежнему остается в некоторых жестко закодированных элементах, таких как поля пользовательского интерфейса, поставщики подключений, коды ошибок и командлеты. В этой статье два имени являются взаимозаменяемыми.

А. Инструкции по обслуживанию для соединителя SQL Server

Ротация ключей

Azure Key Vault поддерживает смену ключей, которая является процессом создания нового ключа и обновления приложений для использования нового ключа. Смена ключей — это рекомендация по обеспечению безопасности, которая помогает защитить данные в случае компрометации ключа. Соединитель SQL Server поддерживает смену ключей. Старые ключи не следует удалять, так как может потребоваться восстановить базу данных с помощью старого ключа. Чтобы повернуть ключ, выполните действия, описанные в разделе "Поворот асимметричного ключа" с новым ключом AKV или новой версией ключа AKV.

Обновление коннектора SQL Server

Версии 1.0.0.440 и старше были заменены и больше не поддерживаются в рабочих средах. Версии 1.0.1.0 и более новые поддерживаются в рабочих средах. Воспользуйтесь приведенными ниже инструкциями, чтобы выполнить обновление до последней версии в Центре загрузки Майкрософт.

Обновление

  1. Остановите службу SQL Server с помощью диспетчера конфигурации SQL Server.
  2. Удалите старую версию с помощью Панели управления>Программы>Программы и компоненты.
    1. Имя приложения: Соединитель SQL Server для Microsoft Azure Key Vault
    2. Версия: 15.0.300.96 (или более ранняя версия)
    3. Дата файла DLL: 30 января 2018 г. (или более ранняя версия)
  3. Установите (обновите) новый соединитель SQL Server для Microsoft Azure Key Vault.
    1. Версия: 15.0.2000.440
    2. Дата файла DLL: 9 ноября 2024 г.
  4. Запустите службу SQL Server.
  5. Тестовые зашифрованные базы данных доступны.

Откат

  1. Остановите службу SQL Server с помощью диспетчера конфигурации SQL Server.

  2. Удалите новую версию с помощью Панели управления>Программы>Программы и компоненты.

    1. Имя приложения: Соединитель SQL Server для Microsoft Azure Key Vault
    2. Версия: 15.0.2000.440
    3. Дата файла DLL: 9 ноября 2024 г.
  3. Установите старую версию соединителя SQL Server для Microsoft Azure Key Vault.

    1. Версия: 15.0.300.96
    2. Дата файла DLL: 30 января 2018 г.
  4. Запустите службу SQL Server.

  5. Убедитесь, что базы данных с помощью TDE доступны.

  6. После проверки работы обновления можно удалить старую папку соединителя SQL Server (если вы решили переименовать папку вместо удаления на шаге 3).

Старые версии соединителя SQL Server

Глубокие ссылки на предыдущие версии соединителя SQL Server

Развертывание субъекта-службы SQL Server

SQL Server использует субъектов-служб, созданных в Microsoft Entra ID (ранее Azure Active Directory), в качестве учетных данных для доступа к хранилищу ключей. Субъект-служба имеет идентификатор клиента и ключ проверки подлинности. Учетные данные SQL Server настраиваются с помощью хранилища, идентификатора клиента и ключа проверки подлинности. Ключ проверки подлинности действителен в течение определенного периода времени (1–2 года). До истечения срока действия текущего ключа в Microsoft Entra ID необходимо создать новый ключ для субъекта-службы. Затем необходимо изменить учетные данные в SQL Server. Management Studio поддерживает кэш учетных данных в текущем сеансе, поэтому при изменении учетных данных необходимо перезапустить Management Studio.

Поддержка управляемого удостоверения для SQL Server на виртуальной машине Azure

Начиная с накопительного обновления 17 (CU17) для SQL Server 2022, поддерживается использование управляемых удостоверений Microsoft Entra для расширяемого управления ключами (EKM) с помощью Azure Key Vault (AKV) и управляемых модулей аппаратной безопасности (HSM) на виртуальных машинах Azure (только для Windows). Дополнительные сведения см. в поддержке управляемого удостоверения для расширяемого управления ключами с помощью Azure Key Vault. Для использования управляемых удостоверений с соединителем SQL Server версия соединителя должна быть 1.0.5.0 или более поздняя, начиная с ноября 2024 г. Скачайте последнюю версию в Центре загрузки Майкрософт.

Резервное копирование и восстановление ключей

Для хранилища ключей необходимо регулярно создавать резервную копию. В случае утраты асимметричного ключа в хранилище его можно восстановить из резервной копии. Ключ необходимо восстановить с помощью того же имени, что и раньше, которое выполняет команда Restore PowerShell (см. ниже).

Если хранилище было потеряно, создайте хранилище и восстановите асимметричный ключ в хранилище, используя то же имя, что и раньше. Имя хранилища может отличаться (можно сохранить прежнее). Установите разрешения доступа для нового хранилища, чтобы предоставить субъекту-службе SQL Server доступ, необходимый для сценариев шифрования SQL Server, а затем настроить учетные данные SQL Server так, чтобы они отражали новое имя хранилища.

В целом необходимо выполнить следующие действия.

  • Создать резервную копию ключа хранилища (с помощью командлета PowerShell Backup-AzureKeyVaultKey).
  • В случае сбоя хранилища создайте новое хранилище в той же географической области. Пользователь, создающий хранилище, должен находиться в том же каталоге по умолчанию, что и служебный принципал, настроенный для SQL Server.
  • Восстановите ключ в новом хранилище с помощью командлета PowerShell Restore-AzureKeyVaultKey, который восстанавливает ключ с прежним именем. Если уже существует ключ с таким же именем, восстановление завершается ошибкой.
  • Предоставить разрешения служебному субъекту SQL Server на использование этого нового хранилища.
  • Изменить учетные данные SQL Server, используемые ядром СУБД, чтобы отразить новое имя хранилища (при необходимости).

Резервные копии ключей можно восстанавливать в разных регионах Azure при условии, что они остаются в одной географической области или одном национальном облаке: в США, Канаде, Японии, Австралии, Индии, Азиатско-Тихоокеанском регионе, Европе, Бразилии, Китае, правительстве США или Германии.

B. Вопросы и ответы

В хранилище ключей Azure

Как выполняются основные операции с хранилищем ключей Azure?

Асимметричный ключ в хранилище ключей используется для защиты ключей шифрования SQL Server. Только открытая часть асимметричного ключа покидает хранилище, а закрытая часть никогда не экспортируется. Все криптографические операции, использующие асимметричный ключ, выполняются в службе хранилища ключей Azure и защищаются ее системой безопасности.

Что такое URI ключа?

Каждый ключ в хранилище ключей Azure имеет универсальный код ресурса (URI), который можно использовать для ссылки на ключ из приложения. Используйте формат https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey для получения текущей версии и формат https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey/cgacf4f763ar42ffb0a1gca546aygd87 для получения конкретной версии.

О настройке SQL Server

Какие конечные точки необходимы для соединителя SQL Server?

Соединитель взаимодействует с двумя конечными точками, которые необходимо разрешить. Единственным портом, необходимым для исходящего взаимодействия с этими другими службами, является 443 для HTTPS:

  • login.microsoftonline.com/*:443
  • *.vault.azure.net/*:443

Кроме того, проверка списка отзыва сертификатов может создать HTTP-трафик через порт 80.

Примечание.

Использование соединителя SQL Server для Azure Key Vault за брандмауэром или прокси-сервером может повлиять на производительность, если трафик задерживается или блокируется. Ознакомьтесь с Доступом к Azure Key Vault за брандмауэром , чтобы убедиться, что правильные правила установлены.

Как подключиться к Azure Key Vault через прокси-сервер HTTP(S)? Соединитель использует параметры конфигурации прокси-сервера Internet Explorer. Эти параметры можно контролировать с помощью групповой политики или реестра, но важно отметить, что они не являются системными параметрами и должны быть ориентированы на учетную запись службы, на которую запущен экземпляр SQL Server. Если администратор базы данных просматривает или редактирует параметры в Internet Explorer, они будут влиять только на учетную запись администратора базы данных, а не подсистему SQL Server. Интерактивный вход на сервер с использованием сервисной учетной записи не рекомендуется и уже блокируется во многих безопасных средах. Изменения настроенных параметров прокси-сервера могут потребовать перезапуска экземпляра SQL Server, чтобы вступили в силу при первой попытке соединителя подключиться к хранилищу ключей.

Какие размеры ключей в Azure Key Vault поддерживает коннектор SQL Server? Последняя сборка соединителя SQL Server поддерживает ключи Azure Key Vault размером 2048 и 3072.

Примечание.

Представление системы sys.asymmetric_keys возвращает размер ключа как 2048, даже если для ключа используется размер 3072.

Каковы минимальные уровни разрешений, необходимые для каждого шага конфигурации в SQL Server?

Хотя вы можете выполнить все действия по настройке в качестве члена предопределенных ролей сервера sysadmin, корпорация Майкрософт рекомендует свести к минимуму используемые разрешения. В приведенном ниже списке указаны минимальные уровни разрешений для каждого действия.

  • Для создания поставщика служб шифрования требуется разрешение CONTROL SERVER или членство в предопределенной роли сервера sysadmin .

  • Для изменения параметра конфигурации и выполнения инструкции RECONFIGURE должно быть предоставлено разрешение ALTER SETTINGS на уровне сервера. Разрешение ALTER SETTINGS неявным образом предоставлено предопределенным ролям сервера sysadmin и serveradmin .

  • Для создания учетных данных требуется разрешение ALTER ANY CREDENTIAL .

  • Для добавления учетных данных к имени входа требуется разрешение ALTER ANY LOGIN .

  • Для создания асимметричного ключа требуется разрешение CREATE ASYMMETRIC KEY .

Как изменить каталог Microsoft Entra по умолчанию, чтобы хранилище ключей создавалось в той же подписке и каталоге, что и служебный принципал, созданный для соединителя SQL Server?

Снимок экрана: шаги справки по изменению каталога по умолчанию в Microsoft Entra ID.

  1. Переход на портал Azure.

  2. В правом верхнем углу страницы выберите значок параметров или профиль пользователя.

  3. На странице каталогов и подписок выберите "Все каталоги", чтобы просмотреть все каталоги Microsoft Entra, к которым вы принадлежите.

  4. Вы можете изменить каталог запуска или переключиться в другой каталог, если у вас несколько каталогов.

    Примечание.

    Возможно, у вас нет разрешений на изменение каталога по умолчанию в подписке Azure. В этом случае создайте учетную запись службы Microsoft Entra в каталоге по умолчанию, чтобы она была в том же каталоге, что и Azure Key Vault, который будет использоваться позже.

Дополнительные сведения об идентификаторе Microsoft Entra см. в статье о том, как подписки Azure связаны с идентификатором Microsoft Entra.

В. Описания кодов ошибок для коннектора SQL Server

Примечание.

Хотя Microsoft Entra ID — это новое имя для Azure Active Directory (Azure AD), чтобы предотвратить разрушение существующих сред, 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.
3128 ErrorHttpBadRequest The secret and client id are correct but in the wrong format.
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. Восстановите ключ.

  • Если вы получаете ошибку "Не удается загрузить библиотеку", убедитесь, что у вас установлена соответствующая версия распространяемого компонента Visual Studio C++ на основе используемой версии SQL Server. В следующей таблице указывается, какая версия будет установлена из Центра загрузки Майкрософт.

Журнал событий Windows также фиксирует ошибки, связанные с подключением к SQL Server, что может помочь понять, почему на самом деле происходит ошибка, предоставляя дополнительный контекст. Источником в журнале событий приложений Windows будет "Коннектор SQL Server для Microsoft Azure Key Vault".

Библиотеки среды выполнения C++ для коннектора SQL Server 1.0.5.0

Версия SQL Server Ссылка для установки распространяемого компонента при использовании соединителя SQL Server 1.0.5.0
2008, 2008 R2, 2012, 2014 Распространяемые пакеты Visual C++ для Visual Studio 2013
2016, 2017, 2019 Распространяемый пакет Visual C++ для Visual Studio 2015

Библиотеки среды выполнения C++ для соединителя SQL Server 1.0.4.0

Версия SQL Server Ссылка на установку компонента, подлежащего распространению, при использовании коннектора SQL Server 1.0.4.0.
2008, 2008 R2, 2012, 2014, 2016, 2017, 2019 Распространяемые пакеты Visual C++ для Visual Studio 2013

Дополнительные справочники

Подробнее о расширенном управлении ключами:

Виды шифрования SQL с поддержкой расширенного управления ключами:

Связанные команды Transact-SQL:

Документация по хранилищу ключей Azure.