ONのSET QUOTED_IDENTIFIER
GO
SET ANSI_NULLS OFF
GO
プロシージャを作成sp_passwordを
@oldシステム名= NULL、 -古い(現在の)パスワード
@newシステム名、 -新しいパスワード
@loginameのシステム名= NULL -にパスワードを変更するユーザー
として
- SETUPランタイム・オプション/変数を宣言-
NOCOUNTに設定
@selfがint型宣言
@loginameがNULL 1 ELSE 2 ENDである場合@selfを選択した場合を=
RESOLVEログイン名-
@loginameがnullである場合
、選択@loginame = SUSER_SNAMEは、()
-チェック権限を(リチャード・Waymireあたりのsecurityadmin) -
(( 'securityadminの'をIS_SRVROLEMEMBERず)= 1)IF
ANDない= 1 @self
開始
DBCCたAuditEvent(107、@self、0、@loginame、NULL、NULL、NULL)
RAISERROR(15210、-1、-1)
(リターン1)
終了
ELSE
開始
DBCCたAuditEvent(107、@self、1、@loginame、NULL、NULL、NULL)
の端を
ユーザトランザクションを許可しない- -
オフセットIMPLICIT_TRANSACTIONS
(@@ TRANCOUNT> 0)IF
始める
RAISERROR(15002、-1 、-1、 'sp_passwordを')
リターン(1)
エンド
- RESOLVEログイン名(禁止し、名前をNT)
が存在しない場合(ここでは、master.dbo.syslogins SELECT * FROM
ログイン名= @loginameとisntname = 0)
開始
)loginameに@、RAISERROR(15007、-1、-1を
リターン(1)
エンド
- SYSADMIN TO非SYSADMIN ATTEMPTING変更する場合は、PASSWORD(218078)が必要-
(@self場合<> 1 AND IS_SRVROLEMEMBER( 'システム管理者')= 0 AND存在する
(ログイン名= @loginameとisntname = 0は、master.dbo.syslogins SELECT * FROM
)ANDシステム管理者= 1)
@self SELECT = 1
-必要に応じて古いパスワードをチェック-
(@self = 1又は@oldがnullでない)場合
が存在しない場合(*選択master.dbo.sysxloginsから
SRVIDがnullで、
名前= @loginameと
((@oldがnullで、パスワードがnull)または
(pwdcompare(@old、
パスワード、
(CASE xstatus&2048 = 2048 THEN 1 ELSE 0 END))= 1))) 開始 RAISERROR(15211、-1、-1) リターン(1) エンド -パスワードの変更- 更新master.dbo.sysxlogins 設定パスワード=変換(VARBINARY(256)、pwdencrypt(@new))、xdate2 = GETDATE()、xstatus = xstatus &(〜2048) ここで名前= @loginameとSRVIDはNULL IS - MASTER DB FOR UPDATEの保護のタイムスタンプ、のsyslogins変更を示すために-
EXEC( '使用マスター許可すべてNULLに')
-ファイナライズ:RETURN成功/失敗-
@@エラーが<> 0の場合は
リターン(1)
RAISERROR(15478、-1、-1)
リターン(0) - sp_passwordを
GO
QUOTED_IDENTIFIER OFF SET
GO
ON SET ANSI_NULLSを
GO
ます。https://www.cnblogs.com/Codenewbie/p/3331532.htmlで再現