Добавить пользователя в базу данных? - PullRequest
0 голосов
/ 06 января 2010

У меня есть пользователь, который может войти в SQL Server. Теперь мне нужно добавить пользователя в базу данных, однако я не уверен, существует ли этот пользователь в базе данных или нет. Поэтому мне нужен скрипт, который проверяет, существует ли пользователь в базе данных или нет, и если нет, он должен добавить этого пользователя в эту базу данных.

Как я могу это сделать?

Ответы [ 4 ]

1 голос
/ 06 января 2010

Я думаю, что это сработало:

ЕСЛИ DATABASE_PRINCIPAL_ID ('login') НЕДЕЙСТВИТЕЛЬНО
НАЧАТЬ
СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ [имя пользователя] ДЛЯ ВХОДА [логин]
КОНЕЦ

^ это работает, только если имя пользователя в базе данных совпадает с именем входа.

1 голос
/ 06 января 2010

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

1 голос
/ 06 января 2010

Посмотрите в каталог пользователя, sys.database_principals:

select * from [dbname].sys.database_principals 
where name = 'loginname';

Чтобы быть точным на 100%, вам необходимо проверить SID пользователя , а не по имени:

select * from [dbname].sys.database_principals 
where sid = SUSER_SID('loginame');

Обратите внимание, что пользователи могут иметь доступ уже через членство в группах и ролях, но это отдельная тема.

0 голосов
/ 06 января 2010

Сделайте SELECT COUNT(*) и посмотрите, получите ли вы 0 или 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...