Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server - Làm cách nào để cấp quyền truy cập đã đọc cho TẤT CẢ cơ sở dữ liệu để đăng nhập?

Một cách sẽ là Đặt "Kết quả thành Văn bản" trên menu truy vấn trong SSMS, sau đó thực hiện như bên dưới.

Nó không thực sự tạo ra thay đổi nhưng tạo ra một tập lệnh để bạn xem lại và thực thi.

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' 

Hoặc bạn có thể xem tại sys.sp_MSforeachdb như tại đây hoặc phiên bản cải tiến của Aaron Bertrand tại đây

Nếu bạn không nhìn thấy tất cả các ký tự khi chạy điều này, hãy mở Tùy chọn Truy vấn cho Văn bản và kiểm tra cài đặt cho 'Số ký tự tối đa được hiển thị trong mỗi cột'. Đảm bảo giá trị này được đặt thành giá trị đủ lớn để hiển thị tất cả các ký tự.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để xóa dữ liệu lớn của bảng trong SQL mà không có nhật ký?

  2. Cách bật Tất cả Ràng buộc Kiểm tra &Khóa ngoại cho Bảng trong SQL Server (Ví dụ T-SQL)

  3. Cách thêm cột nhận dạng vào bảng cơ sở dữ liệu hiện có có số lượng hàng lớn

  4. SQL Server - Chèn đồng thời vào bảng từ nhiều máy khách - Kiểm tra Giới hạn và Chặn

  5. Tôi có thể kết nối với Máy chủ SQL bên ngoài mạng của tôi không?