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

Откуда:
Сообщений: 2
Подскажите как сделать правельно или у кого то есть скрипт нужно выгрузить данные о логинов кто имеет доступ sysadmin и db_owner скрипт буду проганять сразу на 15 серверах в мултисерверном режиме. В результате чтоб получилось по колонкам 1 ) ИМЯ_БЫЗЫ . 2) РОЛЬ (sysadmin или db_owner) и 3) логин .
5 июн 13, 18:18    [14396428]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку с выгрузкой логинов .  [new]
mag2000
Member

Откуда:
Сообщений: 189
Marlboro123,
Кто в роли sysadmin можно так:
select
	sp.name, 
	sr.name as ServerRole, 
	sp.default_database_name, 
	sp.principal_id, 
	row_number() over(partition by @@servername, sp.name order by sr.name) as RN
from sys.server_principals sp
left join sys.server_role_members srm on sp.principal_id = srm.member_principal_id
left join sys.server_principals sr on srm.role_principal_id = sr.principal_id
where sp.[type] in ('G', 'S', 'U')
	and sp.is_disabled = cast(0 as bit)
order by @@servername, sp.name
6 июн 13, 05:19    [14397620]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку с выгрузкой логинов .  [new]
mag2000
Member

Откуда:
Сообщений: 189
Marlboro123,
Кто owner можно так:
select db.name as NameDB
	, mf.name as LogicalName
	, mf.physical_name as PhisicalName
	, mf.size/128.0 as SizeInMB
	, suser_sname(db.owner_sid) as OwnerName
	, db.collation_name as 'CollationName'
	, db.recovery_model_desc as RecoveryModel
	, CASE
	     when db.state = 0 then 'ONLINE'
		 when db.state = 1 then 'RESTORING'
		 when db.state = 2 then 'RECOVERING'
		 when db.state = 3 then 'RECOVERY_PENDING'
		 when db.state = 4 then 'SUSPECT'
		 when db.state = 5 then 'EMERGENCY'
		 when db.state = 6 then 'OFFLINE'
		 when db.state = 7 then 'COPING'
	  END as 'State'
from sys.databases db
join sys.master_files mf on db.database_id = mf.database_id
LEFT join sys.syslogins sl on db.owner_sid = sl.sid
--where db.database_id > 4
order by db.name


Наверное можно сделать и лучше, но только это есть под рукой...
6 июн 13, 05:24    [14397621]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку с выгрузкой логинов .  [new]
Marlboro123
Member

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

спасибо ..

сделал так

exec sp_msForEachDb ' use [?]
select db_name() as [database_name], r.[name] as [role], p.[name] as [member] from
sys.database_role_members m
join
sys.database_principals r on m.role_principal_id = r.principal_id
join
sys.database_principals p on m.member_principal_id = p.principal_id
where
r.name = ''db_owner'''
6 июн 13, 16:22    [14400918]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить