我正在运行一些SQL语句,从临时表中提取信息并将其放入永久表中。我是在三年前编写的一份逐步指南中找到的这些SQL语句,而编写它的人早已经离开了。
它指出要使用这里的SQL语句。
declare @Password nvarchar(100);
set @Password ='rewards';
if not exists(select 1 from sys.openkeys where key_name = 'Sym_UserPassData'
and database_name = db_name()) OPEN SYMMETRIC KEY Sym_UserPassData DECRYPTION BY
CERTIFICATE UserPassTables with password='asbpass71509new';
INSERT INTO [User] (Username, [Password], AllowChange, ForceChange, FullName,
SalesRep, OpenLink, UserProfileID, LastUpdatedBy,UserEmail)
(SELECT Username,EncryptByKey(Key_GUID('Sym_UserPassData'),@Password),
AllowChange, ForceChange, FullName, SalesRep, [OpenLink ], UserProfileID,
LastUpdateBy, UserEmail FROM TempUsers)
然后接着它说:
如果每一行的密码都是唯一的,则去掉集合@Password = 'Password'; 并将@Password替换为[Password]。
所以起初我只是改变了第二行,使其变成
declare @Password nvarchar(100);
set [Password]
...
但是这样会因为密码列而导致错误,所以我将其更改为:
declare [Password] nvarchar(100);
set [Password]
if not exists(select 1 from sys.openkeys where key_name = 'Sym_UserPassData'
and database_name = db_name()) OPEN SYMMETRIC KEY Sym_UserPassData DECRYPTION BY
CERTIFICATE UserPassTables with password='asbpass71509new';
INSERT INTO [User] (Username, [Password], AllowChange, ForceChange, FullName,
SalesRep, OpenLink, UserProfileID, LastUpdatedBy,UserEmail)
(SELECT Username,EncryptByKey(Key_GUID('Sym_UserPassData'),[Password]),
AllowChange, ForceChange, FullName, SalesRep, [OpenLink ], UserProfileID,
LastUpdateBy, UserEmail FROM TempUsers)
这就是导致我出错的原因:
nvarchar is not a recognized cursor option
有人知道我错过了什么吗?如果我可以提供任何其他信息,我会尽力而为。
感谢任何能够帮助我的人。