我需要将现有登录访问权限授予我的数据库,并从事务中从C ++更新程序运行的T-SQL脚本更改其他登录的密码。它应该针对SQL Server 2000以及任何较新的SQL Server版本运行。
MSDE和SQL Server 2000不支持 CREATE USER FOR LOGIN
和ALTER LOGIN WITH PASSWORD
但我无法使用sp_grantdbaccess
和sp_password
,因为它们失败并出现错误-2147217900
我认为这是因为这些存储过程无法从用户事务运行,并且在将来的SQL Server版本中也可以不推荐使用。
你能建议任何其他解决方案吗?
以下是在用户交易中运行的脚本示例
CREATE PROCEDURE [dbo].[_PasswordChangeSaveCleanup]
@Meno varchar(50),
@HesloEncrypted varchar(50)
AS
BEGIN
...
return 1
END
GO
--CREATE USER [some] FOR LOGIN [some]
EXECUTE sp_grantdbaccess @loginame='some'
GO
GRANT SELECT ON [dbo].[UZivatelia] TO [ese]
GO
--ALTER LOGIN SOME2 WITH PASSWORD='vreK.BH45'
EXECUTE sp_password @new='vreK.BH45',@loginame='SOME2'
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SOMESP]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[SOMESP]
GO