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


Соединитель SQL Server, приложение

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

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

Примечание.

Хотя идентификатор Microsoft Entra — это новое имя 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: 01.30.2018 (или более ранняя версия)
  3. Установка (обновление) новых Соединитель SQL Server для Microsoft Azure Key Vault
    1. Версия: 15.0.2000.440
    2. Дата файла DLL: 09.11.2020
  4. Запустите службу SQL Server
  5. Доступны тестовые зашифрованные базы данных

Откат

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

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

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

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

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

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

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

Прямые ссылки на старые версии соединителя SQL Server

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

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

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

Для хранилища ключей необходимо регулярно создавать резервную копию. В случае утери асимметричного ключа в хранилище его можно восстановить из резервной копии. Ключ необходимо восстановить с помощью того же имени, что и раньше, которое выполняет команда 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 устранит его в будущем выпуске.

Каковы минимальные уровни разрешений, необходимые для каждого шага конфигурации в 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 — это новое имя Azure Active Directory (Azure AD), чтобы предотвратить нарушение существующих сред, Azure AD по-прежнему остается в некоторых жестко закодированных элементах, таких как поля пользовательского интерфейса, поставщики подключений, коды ошибок и командлеты. В этой статье два имени являются взаимозаменяемыми.

Коды ошибок поставщика:

Код ошибки Символ Description
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 Сбой проверки подлинности с поставщиком расширенного управления ключами.
6 scp_err_InvalidArgument Предоставлен недопустимый аргумент.
7 scp_err_ProviderError В поставщике расширенного управления ключами произошла неопределенная ошибка, перехваченная ядром SQL.
401 acquireToken Сервер вернул ответ 401 на запрос. Убедитесь, что идентификатор и секрет клиента верны, а строка учетных данных представляет собой объединение идентификатора и секрета клиента AAD без дефисов.
404 getKeyByName Сервер вернут ответ 404, так как не удалось найти имя ключа. Убедитесь, что такое имя ключа присутствует в вашем хранилище.
2049 scp_err_KeyNameDoesNotFitThumbprint Имя ключа слишком длинное и не умещается в отпечаток ядра SQL. Длина имени ключа не должна превышать 26 символов.
2050 scp_err_PasswordTooShort Секретная строка, являющаяся объединением идентификатора клиента и секрета AAD, короче 32 символов.
2051 scp_err_OutOfMemory В ядре SQL возникла нехватка памяти, и не удалось выделить память для поставщика расширенного управления ключами.
2052 scp_err_ConvertKeyNameToThumbprint Не удалось преобразовать имя ключа в отпечаток.
2053 scp_err_ConvertThumbprintToKeyName Не удалось преобразовать отпечаток в имя ключа.
2057 scp_err_ThumbprintExistedInRegistry Отпечаток ключа уже существует в реестре Windows, сопоставленном с другим универсальным кодом ресурса (URI) ключа.
2058 scp_err_FailureInRegistry Не удалось выполнить операцию в реестре. Учетная запись службы SQL Server не имеет разрешения на создание раздела реестра.
3000 ErrorSuccess Операция с хранилищем ключей Azure завершилась успешно.
3001 ErrorUnknown Сбой операции с хранилищем ключей Azure из-за неизвестной ошибки.
3002 ErrorHttpCreateHttpClientOutOfMemory Не удается создать HttpClient для операции с Azure Key Vault из-за нехватки памяти.
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 Не удается создать HttpClient для операции с хранилищем ключей Azure из-за нехватки памяти.
3101 ErrorHttpOpenSession Не удается открыть сеанс HTTP из-за ошибки сети.
3102 ErrorHttpConnectSession Не удается подключиться к сеансу HTTP из-за ошибки сети.
3103 ErrorHttpAttemptConnect Не удается предпринять попытку подключения из-за ошибки сети.
3104 ErrorHttpOpenRequest Не удается открыть запрос из-за ошибки сети.
3105 ErrorHttpAddRequestHeader Не удается добавить заголовок запроса.
3106 ErrorHttpSendRequest Не удается отправить запрос из-за ошибки сети.
3107 ErrorHttpGetResponseCode Не удается получить запрос из-за ошибки сети.
3108 ErrorHttpResponseCodeUnauthorized Сервер вернул ответ 401 на запрос. Убедитесь, что идентификатор и секрет клиента верны, а строка учетных данных представляет собой объединение идентификатора и секрета клиента AAD без дефисов.
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 Не удается найти начальную точку для URL-адреса домена Azure Active Directory в неправильном заголовке запроса ответа.
3202 ErrorGetAADDomainUrlStopPosition Не удается найти конечную точку для URL-адреса домена Azure Active Directory в неправильном заголовке запроса ответа.
3203 ErrorGetAADDomainUrlMalformatted Неправильный заголовок запроса ответа Azure Active Directory не содержит URL-адрес домена AAD.
3204 ErrorGetAADDomainUrlOutOfMemoryAlloc Недостаточно памяти при выделении буфера для URL-адреса домена Azure Active Directory.
3205 ErrorGetAADTenantIdOutOfMemoryAlloc Недостаточно памяти при выделении буфера для идентификатора арендатора домена Azure Active Directory.
3206 ErrorGetAKVResourceUrlStartPosition Не удается найти начальную точку для URL-адреса ресурса Azure Key Vault в неправильном заголовке запроса ответа.
3207 ErrorGetAKVResourceUrlStopPosition Не удается найти конечную точку для URL-адреса ресурса Azure Key Vault в неправильном заголовке запроса ответа.
3208 ErrorGetAKVResourceUrlOutOfMemoryAlloc Недостаточно памяти при выделении буфера для URL-адреса ресурса Azure Key Vault.
3300 ErrorGetTokenOutOfMemoryConcatPath Не удается получить токен из-за нехватки памяти при объединении пути запроса.
3301 ErrorGetTokenOutOfMemoryConcatBody Не удается получить токен из-за нехватки памяти при объединении текста ответа.
3302 ErrorGetTokenOutOfMemoryConvertResponseString Не удается получить токен из-за нехватки памяти при преобразовании строки ответа.
3303 ErrorGetTokenBadCredentials Не удается получить токен из-за неправильных учетных данных. Убедитесь, что строка учетных данных или сертификат действительны.
3304 ErrorGetTokenFailedToGetToken Хотя учетные данные правильны, операция по-прежнему не смогла получить действительный токен.
3305 ErrorGetTokenRejected Токен действителен, но отклонен сервером.
3306 ErrorGetTokenNotFound Не удается найти токен в ответе.
3307 ErrorGetTokenJsonParser Не удается проанализировать ответ JSON сервера.
3308 ErrorGetTokenExtractToken Не удается извлечь токен из ответа JSON.
3400 ErrorGetKeyByNameOutOfMemoryConvertResponseString Не удается получить ключ по имени из-за нехватки памяти при преобразовании строки ответа.
3401 ErrorGetKeyByNameOutOfMemoryConcatPath Не удается получить ключ по имени из-за нехватки памяти при объединении пути.
3402 ErrorGetKeyByNameOutOfMemoryConcatHeader Не удается получить ключ по имени из-за нехватки памяти при объединении заголовка.
3403 ErrorGetKeyByNameNoResponse Не удается получить ключ по имени из-за отсутствия ответа от сервера.
3404 ErrorGetKeyByNameJsonParser Не удается получить ключ по имени, так как не удалось проанализировать ответ JSON.
3405 ErrorGetKeyByNameExtractKeyNode Не удается получить ключ по имени, так как не удалось извлечь узел ключа из ответа.
3406 ErrorGetKeyByNameExtractKeyId Не удается получить ключ по имени, так как не удалось извлечь идентификатор ключа из ответа.
3407 ErrorGetKeyByNameExtractKeyType Не удается получить ключ по имени, так как не удалось извлечь тип ключа из ответа.
3408 ErrorGetKeyByNameExtractKeyN Не удается получить ключ по имени, так как не удалось извлечь N ключа из ответа.
3409 ErrorGetKeyByNameBase64DecodeN Не удается получить ключ по имени, так как в Base64 не удалось декодировать N.
3410 ErrorGetKeyByNameExtractKeyE Не удается получить ключ по имени, так как не удалось извлечь E ключа из ответа.
3411 ErrorGetKeyByNameBase64DecodeE Не удается получить ключ по имени, так как в Base64 не удалось декодировать E.
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.
3801 ErrorJWTTokenCreateHeader Ошибка при создании заголовка маркера JWT для проверки подлинности с помощью AAD.
3802 ErrorJWTTokenCreatePayloadGUID Ошибка при создании идентификатора GUID для полезных данных токена JWT для проверки подлинности с помощью AAD.
3803 ErrorJWTTokenCreatePayload Ошибка при создании полезных данных токена JWT для проверки подлинности с помощью AAD.
3804 ErrorJWTTokenCreateSignature Ошибка при создании сигнатуры маркера JWT для проверки подлинности с помощью AAD.
3805 ErrorJWTTokenSignatureHashAlg Ошибка при получении алгоритма хэширования SHA256 для проверки подлинности в AAD.
3806 ErrorJWTTokenSignatureHash Ошибка при создании хэша SHA256 для проверки подлинности токенов JWT с помощью AAD.
3807 ErrorJWTTokenSignatureSignHash Ошибка при подписании хэша маркера JWT для проверки подлинности в AAD.
3808 ErrorJWTTokenCreateToken Ошибка при создании маркера JWT для проверки подлинности с помощью AAD.
3809 ErrorPfxCertAuthParamsImportPfx Ошибка при импорте сертификата Pfx для проверки подлинности в AAD.
3810 ErrorPfxCertAuthParamsGetThumbprint Произошла ошибка при получении отпечатка из сертификата Pfx для проверки подлинности с помощью AAD.
3811 ErrorPfxCertAuthParamsGetPrivateKey Произошла ошибка при получении закрытого ключа из сертификата Pfx для проверки подлинности с помощью AAD.
3812 ErrorPfxCertAuthParamsSignAlg Ошибка при получении алгоритма подписи RSA для проверки подлинности сертификата Pfx с помощью AAD.
3813 ErrorPfxCertAuthParamsImportForSign Ошибка при импорте закрытого ключа Pfx для подписи RSA для проверки подлинности в AAD.
3814 ErrorPfxCertAuthParamsCreateRequestBody Ошибка при создании текста запроса из сертификата Pfx для проверки подлинности с помощью AAD.
3815 ErrorPEMCertAuthParamsGetThumbprint Ошибка при декодировании отпечатка Base64 для проверки подлинности с помощью AAD.
3816 ErrorPEMCertAuthParamsGetPrivateKey Ошибка при получении закрытого ключа RSA из PEM для проверки подлинности в AAD.
3817 ErrorPEMCertAuthParamsSignAlg Ошибка при получении алгоритма подписи RSA для проверки подлинности с закрытым ключом PEM с помощью AAD.
3818 ErrorPEMCertAuthParamsImportForSign Ошибка при импорте закрытого ключа PEM для подписи RSA для проверки подлинности в AAD.
3819 ErrorPEMCertAuthParamsCreateRequestBody Ошибка при создании текста запроса из закрытого ключа PEM для проверки подлинности в AAD.
3820 ErrorLegacyPrivateKeyAuthParamsSignAlg Ошибка при получении алгоритма подписи RSA для проверки подлинности с устаревшим закрытым ключом с помощью AAD.
3821 ErrorLegacyPrivateKeyAuthParamsImportForSign Ошибка при импорте устаревшего закрытого ключа для подписи RSA для проверки подлинности в AAD.
3822 ErrorLegacyPrivateKeyAuthParamsCreateRequestBody Ошибка при создании текста запроса из устаревшего закрытого ключа для проверки подлинности в AAD.
3900 ErrorAKVDoesNotExist Ошибка "Не удалось разрешить интернет-имя". Обычно это означает, что Azure Key Vault удален.
4000 ErrorCreateKeyVaultRetryManagerOutOfMemory Не удается создать RetryManager для операции AKV из-за нехватки памяти.

Если вы не видите код ошибки в этой таблице, ниже приведены некоторые другие причины для ее возникновения.

  • Возможно, у вас отсутствует доступ в Интернет, из-за чего Azure Key Vault недоступно. Проверьте подключение к Интернету.

  • Возможно, служба хранилища ключей Azure не работает. Повторите попытку позднее.

  • Возможно, вы сняли асимметричный ключ из 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.