Я собираюсь получить список всех пользователей, включая пользователей Windows и 'sa', у кого есть доступ к конкретной базе данных в SQL Server MS. В основном я хотел бы, чтобы список был похож как, в чем показывают SQL Server Management Studio
(т.е. список, который показывают, когда Вы расширяетесь [databse] -> Security -> Users
) с одним важным исключением: Я не хочу видеть 'dbo'
в списке. Скорее я хотел бы видеть фактического пользователя, который владеет базой данных. Так, например, если 'sa' 'dbo'
, 'sa'
должен быть включен в список вместо 'dbo'
. Другое примечание, которое не будет пропущено, список в SQL Server Management Studio
обычно выставочные пользователи Windows в дополнение к пользователям SQL, И я хотел бы, чтобы те пользователи были включены также.
До сих пор я смог придумать следующий запрос:
SELECT * FROM sys.database_principals where (type='S' or type = 'U')
Этот запрос является почти правильным, но проблема, это не удовлетворяет 'dbo'
состояние.
Как я могу изменить этот запрос, или я должен использовать другой?
Пойдите для этого:
SELECT name,type_desc FROM sys.sql_logins