Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server - Как да дам достъп за четене до ВСИЧКИ бази данни за влизане?

Един от начините би бил да зададете „Резултати в текст“ в менюто за заявки в SSMS, след което изпълнете следното.

Той всъщност не прави промяната, а генерира скрипт, който да прегледате и изпълните.

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' 

Или можете да погледнете sys.sp_MSforeachdb като тук или подобрената версия на Арън Бертран тук

Ако не виждате всички знаци, когато изпълнявате това, отворете Опциите на заявката за текст и проверете настройката за „Максимален брой знаци, показвани във всяка колона“. Уверете се, че това е зададено на достатъчно голяма стойност, за да покаже всички знаци.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да покажа изображение от SQL Server с помощта на ASP.NET?

  2. Как да увеличите допустимия размер на прикачените файлове при изпращане на имейл в SQL Server (T-SQL)

  3. Проверката за стойност на първичен ключ преди вмъкване по-бърза ли е от използването на try-catch?

  4. Предайте речник<string,int> към T-SQL за съхранявана процедура

  5. Грешка на SQL Server 206:Сблъсък на тип операнд