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

Откуда:
Сообщений: 776
Перетянул базу с 2000 на 2008
в старом через таблицу sysusers можно было изменять properties юзера. интересует конкретно доступ в базу
в новом доступ меняeтся через команды
ALTER LOGIN testuser DISABLE
ALTER LOGIN testuser ENABLE
но sysusers properties намертво остаются неизменными со старой базы. интересует конкретно "hasdbaccess". раньше устанавливал checkbox на него чтобы видеть какие пользователи имеют доступ в базу.
теперь ето бесполезная мертвая колонка.

как аналогично можно увидеть (в какой системной таблице) активен ли пользователь в sql2008 после ALTER LOGIN ?
9 дек 09, 20:36    [8043349]     Ответить | Цитировать Сообщить модератору
 Re: аналог sysusers.hasdbaccess в sql 2008?  [new]
Glory
Member

Откуда:
Сообщений: 104760
А как изменение логина вообще связано с пользователем базы ?
9 дек 09, 22:12    [8043539]     Ответить | Цитировать Сообщить модератору
 Re: аналог sysusers.hasdbaccess в sql 2008?  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
в 2000 можно было в sysusers изменить поля :
например
UPDATE sysusers SET Status = 2 WHERE uid = 100 не уверен на 100 %, надо посмотреть, но sysusers.hasdbaccess менялось при етом автоматом.

в новой базе чтобы разрешить/запретить доступ к базе зарегистрированному логину update users больше е канает.
надо использовать ALTER LOGIN (DISABLE, ENABLE)
все что мне надо ето найти поле в какой то системной таблице где ето изменение отражается.
пока не пойму где именно в етом mssql2008
10 дек 09, 12:36    [8045981]     Ответить | Цитировать Сообщить модератору
 Re: аналог sysusers.hasdbaccess в sql 2008?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Alex Brown

в новой базе чтобы разрешить/запретить доступ к базе зарегистрированному логину update users больше е канает.
надо использовать ALTER LOGIN (DISABLE, ENABLE)
все что мне надо ето найти поле в какой то системной таблице где ето изменение отражается.
пока не пойму где именно в етом mssql2008

Для запрета логину доступа к базе нужно делать DROP USER, а не ALTER LOGIN
10 дек 09, 12:40    [8046020]     Ответить | Цитировать Сообщить модератору
 Re: аналог sysusers.hasdbaccess в sql 2008?  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
понимаю что говорю с експертом. но придется спорить,
может меня неправилъно понимают.
на картинке кусок админ-менеджера на делфи.
с ALTER login можно отклиючать/допускать пользователя к базем не выкидывая его при еттом вообще.
раньше все работало с UPDATE SYSUSERS.
теперьвсе работает с ALTER LOGIN. Только отразить ето немогу чтобы user видел.
т.к. насколько я понимаю sysusers теперь рариет, который еще живет толъко для совместимости.

К сообщению приложен файл. Размер - 0Kb
10 дек 09, 13:00    [8046196]     Ответить | Цитировать Сообщить модератору
 Re: аналог sysusers.hasdbaccess в sql 2008?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Alex Brown
понимаю что говорю с експертом. но придется спорить,
может меня неправилъно понимают.
на картинке кусок админ-менеджера на делфи.
с ALTER login можно отклиючать/допускать пользователя к базем не выкидывая его при еттом вообще.

с ALTER login вы запрещаете доступ ко всему серверу, а не к отдельной базе оного
10 дек 09, 13:04    [8046225]     Ответить | Цитировать Сообщить модератору
 Re: аналог sysusers.hasdbaccess в sql 2008?  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
может и так. но обычно на сервере одна продуктивная база.
я нашел ети таблицу, все работает. если интересно вот пример query
со статой таблицой и новой.

/*FROM sysusers su
WHERE (su.islogin = 1) AND NOT
((su.name = 'dbo') OR (su.name = 'guest') OR (su.name = 'public'))
*/

SELECT sp.is_disabled, sp.type_desc, sp.create_date, su.*,
issqluser_ =
CAST((CASE WHEN type_desc = 'SQL_LOGIN' then 1 else 0 END) as BIT),
isntuser_ =
CAST((CASE WHEN type_desc = 'WINDOWS_LOGIN' then 1 else 0 END) as BIT)
FROM sysusers su
LEFT JOIN sys.server_principals sp on sp.name = su.name

"старый" закомментирован.
11 дек 09, 12:19    [8052284]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить