Tsql MS SQL在用户事务中创建用户并更改pwd 我需要授权现有登录到数据库中,并从事务处理中的C++更新程序运行的T-SQL脚本中修改密码。它应该运行在SQL Server 2000上,也可以运行在任何较新的SQL Server版本上

Tsql MS SQL在用户事务中创建用户并更改pwd 我需要授权现有登录到数据库中,并从事务处理中的C++更新程序运行的T-SQL脚本中修改密码。它应该运行在SQL Server 2000上,也可以运行在任何较新的SQL Server版本上,tsql,sql-server-2000,Tsql,Sql Server 2000,MSDE和SQL Server 2000不支持为登录创建用户和使用密码更改登录,但我也无法使用sp_grantdbaccess和sp_PASSWORD,因为它们失败并出现错误-2147217900 我认为这是因为这些存储过程不能从用户事务运行,而且在未来的SQL Server版本中也可能会被弃用 你能提出其他解决办法吗 下面是在用户事务中运行的脚本示例 CREATE PROCEDURE [dbo].[_PasswordChangeSaveCleanup] @Meno varchar(50),

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

sp_grantdbaccess和sp_password已弃用,但在截至2012年(含2012年)的所有SQL Server版本中仍受支持,因此您不应收到任何无效的SQL错误。能否显示引发错误的完整SQL批处理?作为文档,您无论如何都不能在事务中使用sp_密码。我知道它们仍然存在,但问题是我需要在事务中进行这些更改,而这对于sp_密码和sp_grantdbaccess是不可能的。那么您到底在问什么?您是在问如何解决您遇到的错误,还是如何在事务中使用ALTER LOGIN?不,我是在问一种方法,授予sql登录对db容器的访问权,并在用户事务中更改将从sql 7.0运行到2012的密码。我想简单的回答是,不能:在SQL 2000中添加登录名的唯一方法是使用sp_addlogin,它不能在事务中使用。因此,您需要重新审视您的需求:要么您必须放弃对SQL 7/2000的支持,要么您必须放弃使用事务的需求。我不知道你的问题的背景,但是SQL7和2000都太老了,所以对大多数人来说支持它们没有什么意义。至于交易,如果您解释了为什么需要交易,那么某人可能会有另一种方法。