我想检查连接的用户是否是SQL Server管理员(在sysadmin角色中),并想知道这是否是最好的方法吗?
private static bool IsUserAdmin(Server server)
{
Login login = server.Logins[server.ConnectionContext.Login];
return login.IsMember("sysadmin");
}
在SQL DMO(基于COM的SMO前身)中,有一个属性挂起了名为SQLDMO.SQLServer
的{{1}}对象。我想知道SMO中是否有类似的东西,但我还没有找到它?
答案 0 :(得分:1)
是的,实际上我认为你的是检查当前登录是否是SQL Server管理员(然后是sysadmin
角色的成员)的最佳方法。
我对SMO有一些经验,我找不到比这更好的方法,也因为没有类似于SMO documentation related to the Login
object中列出的IsServerAdmin
的属性。
如果需要,您可以执行T-SQL查询以了解哪些SQL Server登录是sysadmin
角色的成员(这将为您提供与C#代码相同的结果):
SELECT p.name AS [Name] ,r.type_desc,r.is_disabled,r.create_date , r.modify_date,r.default_database_name
FROM
sys.server_principals r
INNER JOIN sys.server_role_members m ON r.principal_id = m.role_principal_id
INNER JOIN sys.server_principals p ON
p.principal_id = m.member_principal_id
WHERE r.type = 'R' and r.name = N'sysadmin'