У нас есть пользователь, который уходит, и мне нужно знать каждый объект базы данных, которым он владеет. Есть ли запрос, который предоставит эту информацию?
16
У нас есть пользователь, который уходит, и мне нужно знать каждый объект базы данных, которым он владеет. Есть ли запрос, который предоставит эту информацию?
Это должно получить вам то, что вы ищете:
;with objects_cte as
(
select
o.name,
o.type_desc,
case
when o.principal_id is null then s.principal_id
else o.principal_id
end as principal_id
from sys.objects o
inner join sys.schemas s
on o.schema_id = s.schema_id
where o.is_ms_shipped = 0
and o.type in ('U', 'FN', 'FS', 'FT', 'IF', 'P', 'PC', 'TA', 'TF', 'TR', 'V')
)
select
cte.name,
cte.type_desc,
dp.name
from objects_cte cte
inner join sys.database_principals dp
on cte.principal_id = dp.principal_id
where dp.name = 'YourUser';
Это позволит получить объекты, которые принадлежат вашему конкретному пользователю ( 'YourUser'
конечно же, заменить ). Типы объектов, которые выбирает этот запрос:
Чтобы показать всех владельцев баз данных не-sa:
Если вам нужны владельцы заданий системы SQL:
источник
Для Джобса вы не можете использовать системные журналы, поскольку владелец может быть частью группы и не существовать в логинах. Используйте ниже
источник