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