【发布时间】:2015-12-07 10:34:57
【问题描述】:
我需要创建一个存储过程,允许我们的密码管理员在我们的DR 数据库中重新创建对称密钥,但不知何故它总是抱怨语法不正确。这在 SQL Server 2008 R2 中是否允许,或者只是语法不正确?谢谢
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 , @DCMPassword=@Password
编辑添加错误:
消息 102,级别 15,状态 1,过程 sp_BCPRecreateEncryption,第 13 行
“@Password”附近的语法不正确。消息 102,级别 15,状态 1,过程 sp_BCPRecreateEncryption,第 20 行
“@Password”附近的语法不正确。
【问题讨论】:
-
请发布确切的错误
-
string不是有效的 SQL 数据类型 ;-) -
似乎不支持此参数。您可以尝试创建整个文字字符串并使用
EXEC执行该字符串,但您需要注意密码中的任何'字符
标签: sql-server stored-procedures encryption sql-server-2008-r2