Используя SQL Server 2012 v11.0.2100.60, я пытаюсь создать хранимую процедуру, которая открывает ключ симметрии c с расшифровкой по сертификату с паролем.
Если я добавлю жестко запрограммированный пароль в хранимую процедуру, она будет работать нормально, но я хотел бы иметь возможность передать пароль сертификата в качестве параметра хранимой процедуре (чтобы обычный текст pw не жить где угодно на сервере).
Вот что я пробовал.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[testSproc]
@pw VARCHAR(50)
AS
BEGIN
SET NOCOUNT ON;
OPEN SYMMETRIC KEY key_name
DECRYPTION BY CERTIFICATE cert_name WITH PASSWORD = '''+@pw+''';
SELECT ....
При выполнении я получаю следующее:
Сообщение 15466, Уровень 16, Состояние 9, Процедура testSpro c, строка 9
Произошла ошибка при расшифровке.
Вот как это выглядит, когда я выполняю:
DECLARE @return_value int
EXEC @return_value = [dbo].[testSproc]
@GL = N'98787notTheRealPW45668456318'
-- I've tried both N'98787notTheRealPW45668456318' and just '98787notTheRealPW45668456318'
SELECT 'Return Value' = @return_value
GO
Я неправильно передаю параметр? Или установка переменной в хранимой процедуре неправильно? Любая помощь очень ценится!