Мне интересно, можно ли сделать простой и быстрый скрипт T-SQL для редактирования БД с целью создания пользователей, который эффективен для использования разными людьми.Мой пример будет означать цикл по переменной, получая разные значения каждый раз.
Например, я хотел бы, чтобы ниже:
- Использовать DB DBNAME1
- Declare @Пользователь с несколькими пользователями
- Создать команды SQL для запуска (т.е. создать пользователя и применить его роль)
- Применять их только в том случае, если пользователь не существует
Это пример сценария, который работает, если я добавляю 1 пользователя, но я хотел бы добавить более одного пользователя с этой упрощенной версией или аналогичной, так что людям нужно только добавить список имен в 1 области?
USE DBNAME1
GO
Declare @User NVARCHAR (30) = 'Domain\Username1', 'Domain\Username2', 'Domain\Username3' etc.
Declare @CMD NVARCHAR (90) = 'CREATE USER "' + @User +'" FOR LOGIN "' + @User + '"'
Declare @CMD2 NVARCHAR (90) ='ALTER ROLE [db_owner] ADD MEMBER [' + @User + ']'
if not exists(select name from sys.database_principals where name = @User)
Begin exec(@cmd) exec(@cmd2) End
ELSE
Begin Print '['+ @User +'] Exists' END
Вышеприведенное выше дает ошибку ниже:
Msg 102, Уровень 15, Состояние 1, Строка 3
Неверный синтаксис рядом с 'домен \ Имя пользователя2'.
Сообщение 137, уровень 15, состояние 2, строка 5
Необходимо объявить скалярную переменную "@User".
сообщение 137, уровень 15, состояние 2,Строка 6
Необходимо объявить скалярную переменную "@User".
Сообщение 137, Уровень 15, Состояние 2, Строка 8
Необходимо объявить скалярную переменную "@User".
Сообщение 137, Уровень 15, Состояние 2, строка 9
Необходимо объявить скалярную переменную "@cmd".
Msg 137, уровень 15, состояние 2, строка 9
Необходимо объявить скалярную переменную "@ cmd2".
Msg 137, уровень 15, состояние 2, строка 11
Должен объявить скалярную переменную "@User".
Возможно ли что-то подобное, так как с этим было бы намного приятнее работать?