Мне нужно создать хранимую процедуру, которая позволяет нашему хранителю пароля воссоздать симметричный ключ в нашей базе данных , но почему-то он всегда жалуется на неправильный синтаксис. Разрешено ли это в SQL Server 2008 R2 или это просто неправильный синтаксис? БлагодаряШифрование SQL Server: создание ключа внутри хранимой процедуры
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_BCPRecreateEncryption]
@Password varchar(255)
AS
BEGIN
DROP SYMMETRIC KEY SymmetricKeyName
DROP CERTIFICATE EncryptCert
DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD = @Password
CREATE CERTIFICATE EncryptCert
WITH SUBJECT = N'EncryptCert', START_DATE = N'08/06/2014 07:16:08', EXPIRY_DATE = N'08/06/2042 07:16:08'
ACTIVE FOR BEGIN_DIALOG = ON;
CREATE SYMMETRIC KEY SymmetricKeyName
WITH KEY_SOURCE = @Password,
IDENTITY_VALUE = @Password,
ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE EncryptCert;
END
Я также попытался использовать executesql
, но все еще получаю ту же ошибку
DECLARE @ParmDefinition nvarchar(500);
SET @ParmDefinition = N'@Password string' ;
EXECUTE sp_executesql N'CREATE MASTER KEY ENCRYPTION BY PASSWORD = @DCMPassword', @ParmDefinition , @[email protected]
отредактирован Ошибка добавления:
Msg 102, Level 15, State 1, процедура sp_BCPRecreateEncryption, Строка 13
Неверный синтаксис рядом с «@Password».Msg 102, уровень 15, состояние 1, процедура sp_BCPRecreateEncryption, строка 20
Неверный синтаксис рядом с «@Password».
пожалуйста, напишите точную ошибку –
'string' не является допустимым SQL тип данных ;-) –
Похоже, параметры не поддерживаются для этого. Вы можете попробовать создать всю литеральную строку и выполнить эту строку с помощью 'EXEC', но вам нужно будет следить за любыми символами' '' в пароле –