Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL memetakan login ke pengguna yang ada

Untuk merekonsiliasi pengguna dengan login, Anda dapat menggunakan prosedur tersimpan sistem sp_change_users_login.

sp_change_users_login [ @Action = ] 'action'
[ , [ @UserNamePattern = ] 'user' ] 
[ , [ @LoginName = ] 'login' ] 
[ , [ @Password = ] 'password' ];

Misalnya:

EXEC sp_change_users_login 'Update_One','User123','User123'

Jika Anda memiliki banyak pengguna yang tidak sinkron, Anda dapat menggunakan kursor untuk menarik semua pengguna dan menjalankan perintah ini untuk mereka. Tidak ada efek buruk untuk menjalankan ini terhadap pengguna yang tidak sinkron, dan itu akan memperbaiki semua pengguna yatim piatu.

DECLARE @sql NVARCHAR(MAX);
DECLARE curSQL CURSOR
FOR
       SELECT   'EXEC sp_change_users_login ''UPDATE_ONE'', ''' + name + ''', ''' + name + ''''
       FROM     sysusers
       WHERE    issqluser = 1
                AND name NOT IN ( 'guest', 'dbo', 'sys', 'INFORMATION_SCHEMA' )
OPEN curSQL
FETCH curSQL INTO @sql
WHILE @@FETCH_STATUS = 0 
     BEGIN
           EXEC (
           @sql
           )
           FETCH curSQL INTO @sql
     END
CLOSE curSQL
DEALLOCATE curSQL

Ini harus dijalankan dari konteks database yang Anda perlukan untuk diperbaiki oleh pengguna.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan kursor di dbMail di sql server 2008

  2. SQL Server SEMUA Operator Dijelaskan

  3. Buat Kolom Terhitung menggunakan data dari tabel lain

  4. Mengekspor data Di SQL Server sebagai INSERT INTO

  5. SQL menghitung baris dalam tabel