1

データベースへの既存のログインのアクセスを許可し、トランザクションで C++ 更新プログラムから実行される T-SQL スクリプトから他のログインのパスワードを変更する必要があります。SQL Server 2000 に対して実行する必要があります。また、新しい SQL Server バージョンに対しても実行する必要があります。

CREATE USER FOR LOGINandALTER LOGIN WITH PASSWORDは MSDE および SQL Server 2000 ではサポートされていませんが、エラー -2147217900 で失敗するためsp_grantdbaccess、どちらも使用できません。sp_password

これは、これらのストアド プロシージャをユーザー トランザクションから実行できず、将来の 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
4

0 に答える 0