我需要授予现有登录到我的数据库的访问权限,并从 T-SQL 脚本更改其他登录的密码,该脚本从事务中的 C++ 更新程序运行。它应该针对 SQL Server 2000 以及任何较新的 SQL Server 版本运行。
CREATE USER FOR LOGIN
并且ALTER LOGIN WITH PASSWORD
在 MSDE 和 SQL Server 2000 中不受支持,但我无法使用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