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

Откуда:
Сообщений: 17
Доброго времени суток.
Подскажите, каким запросом я могу получить список всех БД, в которы в Permissions стоят определенные пользователи. Тоесть например мне для пользователя User надо получить список всех БД, в которых этот пользователь имеет право логиниться.

Что-то типа:

select name from sys.databases where PERMISSION=User


??
20 янв 14, 18:45    [15442929]     Ответить | Цитировать Сообщить модератору
 Re: Список всех БД с определенным юзером  [new]
o-o
Guest
Onsight,

надо все базы, куда юзер проникает (хоть как, через группы, например)
или куда явно отмаплен?
20 янв 14, 19:41    [15443217]     Ответить | Цитировать Сообщить модератору
 Re: Список всех БД с определенным юзером  [new]
Onsight
Member

Откуда:
Сообщений: 17
юзеры сейчас не отмаплены никуда.. в этом то и проблема. БД и Юзеры переносились на другой сервер. Теперь имеются БД с юзерами в permissions, и юзеры, которых надо замапить к БД.
20 янв 14, 19:52    [15443263]     Ответить | Цитировать Сообщить модератору
 Re: Список всех БД с определенным юзером  [new]
Onsight
Member

Откуда:
Сообщений: 17
o-o,

то есть надо все БД, у которых в Permissions стоит например User1
20 янв 14, 19:55    [15443275]     Ответить | Цитировать Сообщить модератору
 Re: Список всех БД с определенным юзером  [new]
o-o
Guest
Onsight,

так Вы собираетесь для каждого логина проверять, отмаплен он куда-то или нет?
или для каждого юзера проверять, есть ли соответствующий логин?
все логины живут в sys.server_principals,
а все юзеры в sys.database_principals соответствующей базы.
если логин входит в группу и в базу отмаплена группа,
то его SID в sys.database_principals фигурировать не будет, только SID группы там будет.

оставляю на всякий курсорный вариант получения всех разрешений по всем базам для заданного логина.
тут уже неважно, получил через группы или явно ему выдали

+
create table dbo.res(
	db_name varchar(51),
	entity_name nvarchar(128),
	subentity_name nvarchar(128),
	permission_name nvarchar(60),
	user_ nvarchar(128)); 

declare @db_name sysname, @sql nvarchar(4000);

declare cur cursor local fast_forward for
   select name from sys.databases order by name;

open cur;

fetch next from cur into @db_name;

while @@fetch_status = 0
begin
   set @sql = 'execute as login = ''esp\EE26245'' select '''+ @db_name + ''',*, user from ' 
   + @db_name + '.sys.fn_my_permissions(null, ''database'')' ;
   begin try
      insert into dbo.res 
      --print @sql
      exec (@sql);
   end try
   
   begin catch
      insert into dbo.res(db_name, permission_name) 
      select @db_name, 'no access'
   end catch
   
   --print @db_name
   fetch next from cur into @db_name;
end;

close cur;
deallocate cur;

select *
from dbo.res
20 янв 14, 20:07    [15443328]     Ответить | Цитировать Сообщить модератору
 Re: Список всех БД с определенным юзером  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
Onsight,

Дайте угадаю: вы перенесли на др сервак базы (соответственно с юзерами) и логины (просьба не путать). И теперь пользователи входят под этими логинами, и попасть ни куда не могут? И, соответственно, вам надо эту проблему решить?
20 янв 14, 20:58    [15443504]     Ответить | Цитировать Сообщить модератору
 Re: Список всех БД с определенным юзером  [new]
Glory
Member

Откуда:
Сообщений: 104751
sp_helplogins
20 янв 14, 23:13    [15444012]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить