Драйвер Microsoft JDBC для Java не может найти ключ шифрования столбца Azure Always Encrypted после изменения ключа шифрования - PullRequest
0 голосов
/ 11 декабря 2018

Я использую Java с Spring Framework, подключенным к базе данных SQL через драйвер JDBC Microsoft.

В одной из таблиц в базе данных есть столбец, зашифрованный с помощью Azure Always Encrypted.Недавно я изменил ключ шифрования столбца (расшифрованные данные со старым ключом, зашифрованные данные с новым ключом), и хотя служба Java использует клиент, прошедший проверку подлинности для доступа к обоим ключам шифрования столбца, я получаю сообщение в приложении Java:

Ошибка SQL: 33294, SQLState: S0004

com.microsoft.sqlserver.jdbc.SQLServerException: некоторые параметры или столбцы пакета необходимо зашифровать, но соответствующий столбецключ шифрования не найденИспользуйте sp_refresh_parameter_encryption, чтобы обновить метаданные параметров модуля.

Я попытался повторно развернуть службу безуспешно.Я также пытался запустить процедуру sp_refresh_parameter_encryption, но для нее требуется модуль или хранимая процедура в качестве параметра, и я не вижу какой-либо очевидной хранимой процедуры, чтобы дать ей.

1 Ответ

0 голосов
/ 11 декабря 2018

Я обнаружил, что одна или несколько процедур были кэшированы с использованием старых ключей шифрования столбцов.Запустив запрос

ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;

, кэш был очищен, новые ключи были загружены и все прошло нормально.

...