Добавить пользователей в несколько баз данных / SQL SERVER - PullRequest
0 голосов
/ 23 октября 2019

Мне нужно добавить пользователей в несколько баз данных только в одном сценарии.

Логин был создан, поэтому мне нужно всего лишь сопоставить пользователей с его соответствующей базой данных и дать ему разрешения на чтение данных.

Я думаючто моя единственная проблема заключается в том, как выбрать и использовать базу данных, потому что я могу назначить разрешение только для одной базы данных (шаг за шагом)

Это мой код (я знаю, что после выполнения)

SELECT 
  'USE [' + name + N']' + CHAR(13) + CHAR(10)
  + 'create user [sd-reader] for login [sd-reader]' + CHAR(13) + CHAR(10)
  + 'EXEC sp_addrolemember  ''db_datareader'', ''sd-reader'''

FROM sys.databases

WHERE database_id > 7;

Базы данных, которые мне нужны, находятся в диапазоне от 8 до 12 id

1 Ответ

0 голосов
/ 23 октября 2019

Установить результат в текстовый режим и выполнить запрос

;With Results as 
(
SELECT database_id as id, cast(
    'USE [' + name + N']' + CHAR(13) + CHAR(10)
  + 'create user [sd-reader] for login [sd-reader]' + CHAR(13) + CHAR(10)
  + 'EXEC sp_addrolemember  ''db_datareader'', ''sd-reader''' as nvarchar(max))  as qry
  FROM sys.databases 
  where database_id = 1

  Union all

    SELECT database_id as id, cast ( 
        ('USE [' + name + N']' + CHAR(13) + CHAR(10)
      + 'create user [sd-reader] for login [sd-reader]' + CHAR(13) + CHAR(10)
      + 'EXEC sp_addrolemember  ''db_datareader'', ''sd-reader''' +  + CHAR(13) + CHAR(10) + + CHAR(10) + Results.qry )  as nvarchar(max)) as qry
       FROM sys.databases join Results on (Results.id + 1 = sys.databases.database_id)
  where sys.databases.database_id > 1


) 
select top 1 qry from Results
order by id desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...