SQL2016 Не удалось создать главный ключ столбца

#sql-server #sql-server-2016 #always-encrypted

#sql-server #sql-server-2016 #всегда зашифрованный

Вопрос:

Я только что установил SQL 2016 Standard Edition, потому что хотел использовать функцию «Всегда зашифрованный». Однако, когда я попытался создать главный ключ столбца в разделе Безопасность-> Всегда зашифрованные ключи-> Главный ключ столбца, я получил следующую ошибку: введите описание изображения здесь

productversion: 13.0.160.5, productlevel: RTM, редакция: Standard Edition 64bit Есть идеи? Спасибо!

Комментарии:

1. Используете ли вы SSMS 2016 и запускаете ли запрос к экземпляру, отличному от 2016, или наоборот?

2. Привет, я использую SQL Management Studio 2016 и SQL Server 2016, Standard edition

3. Запустите SELECT @@version и вставьте его в свой пост просто для подтверждения.

4. Microsoft SQL Server 2016 (RTM) — 13.0.1601.5 (X64) 29 апреля 2016 23:23:58 Авторское право (c) Microsoft Corporation Standard Edition (64-разрядная версия) на Windows 10 Pro 6.3 <X64> (сборка 10586:) (Гипервизор)

5. Выполните свои обычные действия, дойдите до того момента, когда вы собираетесь нажать ok, чтобы сгенерировать ключ, но вместо этого перейдите в верхнюю часть окна запроса и выведите команду скриптом в новое окно. Запустите TSQL и посмотрите, по-прежнему ли вы получаете ошибку.

Ответ №1:

У меня была такая же проблема. Я исправил это, обновив до Sql Server 2016 SP1 с Sql Server 2016.

Ранее @@version был:

  • Microsoft SQL Server 2016 (RTM-GDR) (KB3194716) — 13.0.1722.0 (X64) 26 сентября 2016 13:17:23 Авторское право (c) Microsoft Corporation Standard Edition (64-разрядная версия) на Windows 10 Pro 6.3 (сборка 14393:)

Теперь @@version есть:

  • Microsoft SQL Server 2016 (SP1) (KB3182545) — 13.0.4001.0 (X64) 28 октября 2016 18:17:30 Авторское право (c) Microsoft Corporation Standard Edition (64-разрядная версия) на Windows 10 Pro 6.3 (сборка 14393:)

Обратите также внимание, что моя SSMS полностью обновлена.

  • Инструменты> Проверить наличие обновлений > Подробности — 13.0.16100.1
  • У коллеги немного более старая сборка SSMS, и он даже не видит возможности зашифровать столбцы.

Комментарии:

1. Должно быть отмечено как ответ, проблема в том, что ваша SSMS достаточно новая, чтобы поддерживать always encrypted, но ваша версия SQL Server — нет.

Ответ №2:

Вероятно, проблема была вызвана восстановлением базы данных SQL2014. Я создал резервную копию базы данных 2014 года, а затем восстановил ее в 2016 году. SQL, возможно, рассматривал это как схему 2014 года и поэтому жаловался, что главный ключ столбца не поддерживается. Как я это решил: в SSMS 2016 сгенерируйте .сценарий sql для импортированной базы данных (в дополнительных настройках выберите сценарий SQL 2016) Установите новый экземпляр SQL 2016 (который, возможно, не понадобится для тестирования) и запустите сгенерированный sql вместо опции восстановления

Комментарии:

1. Где я могу найти Дополнительные настройки?

2. @DovMiller щелкните правой кнопкой мыши на базе данных, из которой вы хотите сгенерировать сценарий -> задача -> сгенерировать сценарии -> установить параметр сценария. в окне дополнительных опций есть кнопка дополнительно -> выбрать сценарий для версии sql

Ответ №3:

«Всегда зашифрованный доступен в SQL Server 2016 (13.x) и базе данных SQL. (До SQL Server 2016 (13.x) SP1 всегда зашифрованный доступ был ограничен корпоративной версией.)»

Источник: https://learn.microsoft.com/en-us/sql/relational-databases/security/encryption/always-encrypted-database-engine?view=sql-server-2017