すべてのローカル SQL アカウントを自動修正するように sp_change_users_login を実行するにはどうすればよいですか?
つまり、コマンドを実行してすべてのローカル アカウントを表示できます。
select * from sys.database_principals
where type = 's';
これらのユーザーのリストを sp_change_users_login プロシージャで使用する必要があります。
すべてのローカル SQL アカウントを自動修正するように sp_change_users_login を実行するにはどうすればよいですか?
つまり、コマンドを実行してすべてのローカル アカウントを表示できます。
select * from sys.database_principals
where type = 's';
これらのユーザーのリストを sp_change_users_login プロシージャで使用する必要があります。
カーソルを使用して名前のリストを取得し、カーソルの結果をループすることができます。ループ内では次のようにします: exec sp_change_users_login 'auto-fix', @nameVariable
@@FETCH_STATUS = 0 のときにループします。カーソルからすべての行をフェッチすると、ゼロ以外が返されます。
詳細は次のとおりです。
declare @userVar varchar(30)
declare users cursor for select name from sys.database_principals where type = 's';
open users
fetch next from users into @userVar
while @@FETCH_STATUS = 0
begin
exec sp_change_users_login 'auto_fix', @userVar
fetch next from users into @userVar
end
close users
deallocate users