Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 В какой таблице храняться sql серверные login ?  [new]
zzz68
Member

Откуда:
Сообщений: 75
Необходимо написать задание на удаление определенного логина если он там есть и последующее добавление его.
Примерно представляю эту конструкцию так
USE MASTER GO

IF EXISTS (SELECT ... FROM ... WHERE LOGIN = '...')
DROP LOGIN [...] ELSE
CREATE LOGIN [...]


Подскажите пожалуйста, в какой таблице искать и вообще сработает ли такая конструкция?
25 авг 11, 11:22    [11176283]     Ответить | Цитировать Сообщить модератору
 Re: В какой таблице храняться sql серверные login ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
sys.server_principals
25 авг 11, 11:25    [11176314]     Ответить | Цитировать Сообщить модератору
 Re: В какой таблице храняться sql серверные login ?  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
zzz68
и вообще сработает ли такая конструкция?


А чего б ей и не работать? Не вижу препятствий.
P.S. ELSE лишнее у вас - не?
25 авг 11, 12:50    [11177231]     Ответить | Цитировать Сообщить модератору
 Re: В какой таблице храняться sql серверные login ?  [new]
zzz68
Member

Откуда:
Сообщений: 75
Спасибо, с логинами все работает. Теперь необходимо сделать ту же конструкцию для user. Из какой таблицы вытаскивать наличие user для заданной БД?
25 авг 11, 15:02    [11178694]     Ответить | Цитировать Сообщить модератору
 Re: В какой таблице храняться sql серверные login ?  [new]
zzz68
Member

Откуда:
Сообщений: 75
SamMan
zzz68
и вообще сработает ли такая конструкция?


А чего б ей и не работать? Не вижу препятствий.
P.S. ELSE лишнее у вас - не?



Да вроде бы не лишняя, единственное перед добавлением логина поставил USE DATABASE, т.к. на master не хоте добавляться логин.
25 авг 11, 15:08    [11178763]     Ответить | Цитировать Сообщить модератору
 Re: В какой таблице храняться sql серверные login ?  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
zzz68
Спасибо, с логинами все работает. Теперь необходимо сделать ту же конструкцию для user. Из какой таблицы вытаскивать наличие user для заданной БД?

По аналогии можно было бы и догадаться, что sys.database_principals :)
С уважением, Алексей
25 авг 11, 15:10    [11178777]     Ответить | Цитировать Сообщить модератору
 Re: В какой таблице храняться sql серверные login ?  [new]
zzz68
Member

Откуда:
Сообщений: 75
Так все таки, в какой таблице прячутся users заданной БД?
25 авг 11, 15:12    [11178793]     Ответить | Цитировать Сообщить модератору
 Re: В какой таблице храняться sql серверные login ?  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
zzz68
SamMan
пропущено...


А чего б ей и не работать? Не вижу препятствий.
P.S. ELSE лишнее у вас - не?



Да вроде бы не лишняя, единственное перед добавлением логина поставил USE DATABASE, т.к. на master не хоте добавляться логин.

Это вряд ли...
Не надо просто GO писать в одной строке с командой
С уважением, Алексей
P.S. Логин - объект сервера... По барабану какая текущая база для команды ADD LOGIN
25 авг 11, 15:14    [11178814]     Ответить | Цитировать Сообщить модератору
 Re: В какой таблице храняться sql серверные login ?  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
zzz68
Так все таки, в какой таблице прячутся users заданной БД?

А вам зачем это?
Есть же представление каталога ( sys.database_principals ) и есть команды: CREATE USER, ALTER USER и DROP USER
Чего еще надо!
С уважением, Алексей
25 авг 11, 15:17    [11178854]     Ответить | Цитировать Сообщить модератору
 Re: В какой таблице храняться sql серверные login ?  [new]
zzz68
Member

Откуда:
Сообщений: 75
Спасибо. Дело в том, что я делаю job по восстановлению бд из копии и для того, что бы этот job не заткунлся на каком нибудь шаге необходимо предусмотреть все возможные случаи. Так например если я напишу drop user а его там нет, то job вывалится с ошибкой.
25 авг 11, 15:26    [11178939]     Ответить | Цитировать Сообщить модератору
 Re: В какой таблице храняться sql серверные login ?  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
zzz68
Спасибо. Дело в том, что я делаю job по восстановлению бд из копии и для того, что бы этот job не заткунлся на каком нибудь шаге необходимо предусмотреть все возможные случаи. Так например если я напишу drop user а его там нет, то job вывалится с ошибкой.

Именно для этого и существуют представления каталога (catalog views)!
Что-то типа такого:
IF NOT EXISTS(SELECT * FROM sys.database_principals WHERE type IN ('S', 'U') AND name = 'Имя пользователя')
    CREATE USER ...
С уважением, Алексей
P.S. А вот тут команды USE Database необходима
25 авг 11, 15:34    [11179028]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить