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

SQL Server - Bagaimana Cara Memberikan Akses Baca ke SEMUA database ke Login?

Salah satu caranya adalah dengan Mengatur "Hasil ke Teks" pada menu kueri di SSMS lalu jalankan yang di bawah ini.

Itu tidak benar-benar membuat perubahan tetapi menghasilkan skrip untuk Anda tinjau dan jalankan.

SET NOCOUNT ON;

DECLARE @user_name    SYSNAME
        , @login_name SYSNAME;

SELECT @user_name = 'user_name',
       @login_name = 'login_name'

SELECT '
    USE ' + QUOTENAME(NAME) + ';

    CREATE USER ' + QUOTENAME(@user_name)
       + ' FOR LOGIN ' + QUOTENAME(@login_name)
       + ' WITH DEFAULT_SCHEMA=[dbo];

    EXEC sys.sp_addrolemember
      ''db_datareader'',
      ''' + QUOTENAME(@user_name) + ''';

    EXEC sys.sp_addrolemember
      ''db_denydatawriter'',
      '''
       + QUOTENAME(@user_name) + '''; 

GO
'
FROM   sys.databases
WHERE  database_id > 4
       AND state_desc = 'ONLINE' 

Atau Anda dapat melihat sys.sp_MSforeachdb seperti di sini atau versi perbaikan Aaron Bertrand di sini

Jika Anda tidak melihat semua karakter saat menjalankan ini, buka Opsi Kueri untuk Teks dan periksa pengaturan untuk 'Jumlah karakter maksimum yang ditampilkan di setiap kolom'. Pastikan ini disetel ke nilai yang cukup besar untuk menampilkan semua karakter.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jalankan prosedur tersimpan SQL Server dengan parameter input

  2. SQL Server ROWLOCK melalui SELECT jika tidak ada transaksi INSERT

  3. Masukkan seluruh DataTable ke dalam database sekaligus, bukan baris demi baris?

  4. Konfigurasi Cakupan Database SQL Server dan Koreksi Paket Otomatis

  5. Pandangan Pertama pada Penaksir Kardinalitas SQL Server Baru