Когда вы создаете симметричный ключ, убедитесь, что вы используете параметры KEY_SOURCE, IDENTITY_VALUE и ALGORITHM.
Если вы этого еще не сделали, создайте главный ключ базы данных и сертификат для защиты вашего симметричного ключа.
-- Create Database Master Key
CREATE MASTER KEY ENCRYPTION BY
PASSWORD = 'Your Database Master Key Password here'
GO
-- Create Encryption Certificate
CREATE CERTIFICATE MyCertificateName
WITH SUBJECT = 'Your Certificate Description Here'
GO
-- Create Symmetric Key
CREATE SYMMETRIC KEY MyKeyName WITH
IDENTITY_VALUE = 'Enter a key description',
ALGORITHM = AES_256,
KEY_SOURCE = 'Enter a key phrase here (keep very secret)'
ENCRYPTION BY CERTIFICATE MyCertificateName;
Параметр IDENTITY_VALUE используется для создания guid в таблице sys.symmetric_keys, которая должна быть одинаковой в обеих базах данных для работы.
Параметр KEY_SOURCE используется для создания самого фактического ключа, поэтому убедитесь, что он точно такой же и хорошо защищен.
АЛГОРИТМ - это, конечно, алгоритм, используемый сервером sql для шифрования и дешифрования данных, который должен быть одинаковым для работы.
Вы должны быть в состоянии запустить вышеупомянутый сценарий в обеих базах данных (конечно, вместо ваших собственных значений), и он успешно расшифрует данные, зашифрованные в другой базе данных.
Если ваш существующий ключ не был создан таким образом, вам придется расшифровать все с помощью старого ключа и повторно зашифровать его с новым.
Несколько хороших источников по созданию ключей можно найти здесь: