我想检查连接的用户是否是 SQL Server 管理员(处于 sysadmin 角色),并想知道这是否是最好的方法?
private static bool IsUserAdmin(Server server)
{
Login login = server.Logins[server.ConnectionContext.Login];
return login.IsMember("sysadmin");
}
在 SQL DMO(SMO 的基于 COM 的前身)中,有一个属性与SQLDMO.SQLServer
称为的对象IsServerAdmin
。我想知道SMO中是否有类似的东西,但我只是没能找到它?
是的,实际上我认为你的方法是检查当前登录是否是 SQL Server 管理员(那么是 SQL Server 的成员)的最佳方法sysadmin
role).
我对 SMO 有一些经验,我发现没有比这更好的方法了,也是因为没有类似的属性IsServerAdmin
列出在相关 SMO 文档Login object http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.login.aspx.
如果需要,您可以执行 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'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)