Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не могу удалить пользователя БД из-за разрешения  [new]
восточный чайник
Guest
Удалил имя входа, с которым был ассоциирован этот пользователь. Пользователю когда-то (никто не помнит) было дано разрешение. См.:

select * from sys.database_permissions 
where grantee_principal_id =
(select principal_id from sys.database_principals where name = N'test_user')

Результат:

class class_desc major_id minor_id grantee_principal_id grantor_principal_id type permission_name state state_desc
----- ------------------------------------------------------------ ----------- ----------- -------------------- -------------------- ---- -------------------------------------------------------------------------------------------------------------------------------- ----- ------------------------------------------------------------
0 DATABASE 0 0 7 1 CO CONNECT G GRANT

Как мне вызвать REVOKE в этом случае? Хелп-п-п...
23 окт 09, 10:22    [7827672]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить пользователя БД из-за разрешения  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36803
drop user сделайте и все.
23 окт 09, 10:23    [7827688]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить пользователя БД из-за разрешения  [new]
восточный чайник
Guest
Гавриленко Сергей Алексеевич
drop user сделайте и все.

А то уже не пытался!
Сообщение 15284, уровень 16, состояние 1, строка 1
Участнику базы данных предоставлены или запрещены разрешения на доступ к объектам базы данных, поэтому его нельзя удалить.
23 окт 09, 10:27    [7827722]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить пользователя БД из-за разрешения  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

?
use <dbname>
go
revoke connect to test_user

Posted via ActualForum NNTP Server 1.4

23 окт 09, 10:31    [7827750]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить пользователя БД из-за разрешения  [new]
восточный чайник
Guest
daw

?
use <dbname>
go
revoke connect to test_user


Засада!

Грант на CONNECT убрался, но дроппинг выдаёт ту же ошибку? В чём же дело?..
23 окт 09, 10:34    [7827778]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить пользователя БД из-за разрешения  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Грант на CONNECT убрался, но дроппинг выдаёт ту же ошибку? В чём же дело?..

я, может, конечно, ошибаюсь но "user has granted" должно переводится не
как "Участнику базы данных предоставлены", а "участник базы данных предоставил".

что вернет:
select * from sys.database_permissions
where grantor_principal_id = user_id('test_user')

Posted via ActualForum NNTP Server 1.4

23 окт 09, 10:47    [7827908]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить пользователя БД из-за разрешения  [new]
восточный чайник
Guest
Фу-у...

Разобрался.
Надо было ещё смотреть не только grantee, но и grantor:
select * from sys.database_permissions 
where grantee_principal_id =
(select principal_id from sys.database_principals where name = N'test_user')
or grantor_principal_id =
(select principal_id from sys.database_principals where name = N'test_user')

Пришлось вызвать REVOKE IMPERSONATE, а потом drop user сработал! Ура!..
23 окт 09, 10:47    [7827912]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить пользователя БД из-за разрешения  [new]
tmak7
Member

Откуда:
Сообщений: 3
А можно про revoke impersonate по подробнее, у меня та же ошибка 15284,
SELECT * FROM sys.database_permissions
WHERE grantor_principal_id = DATABASE_PRINCIPAL_ID('vdn\vp6206')

class class_desc major_id minor_id grantee_principal_id state state_desc
----- ------------------------------------------------------------ ----------- ----------- -------------------- ----- ----------
4 DATABASE_PRINCIPAL 11 0 9 G GRANT
4 DATABASE_PRINCIPAL 11 0 9 G GRANT
4 DATABASE_PRINCIPAL 11 0 9 G GRANT
4 DATABASE_PRINCIPAL 11 0 9 G GRANT
SELECT * FROM fn_my_permissions('vdn\vp6206', 'USER');

entity_name permission_name
----------------------------------------------------------------------------- ----------------------------------
vdn\vp6206 IMPERSONATE
vdn\vp6206 VIEW DEFINITION
vdn\vp6206 ALTER
vdn\vp6206 CONTROL
SELECT PRINCIPAL_ID,
 NAME,
 TYPE_DESC,
 IS_DISABLED
FROM sys.server_principals 
WHERE PRINCIPAL_ID = 9

PRINCIPAL_ID NAME TYPE_DESC IS_DISABLED
------------ --------------------------------------------------------------------------------------------------------------------------------
9 dbcreator SERVER_ROLE 0
5 янв 10, 10:31    [8148446]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить