MAW*_*656 2 security sql-server permissions sql-server-2000
我正在清理我的 SQL Server 2000 上的权限,并且我想验证某个特定帐户是否仍然具有 sysadmin 权限。
哪些非破坏性任务只能由系统管理员执行,我可以用来确认这一点?
您可以使用该帐户创建另一个登录名,并授予其系统管理员权限。
您根本不需要执行任何任务(破坏性或非破坏性)。
您可以使用内置函数IS_SRVROLEMEMBER来查找某个人LOGIN是否是sysadmin服务器角色的成员:
SELECT IS_SRVROLEMEMBER('sysadmin','<LoginName>');
Run Code Online (Sandbox Code Playgroud)
请注意,对于sysadmin结果以外的角色,对于隐式成员资格也将是正数 (=1) 。
您可以使用内置存储过程sp_helpsrvrolemember来获取某个角色的所有显式成员的列表:
EXEC sys.sp_helpsrvrolemember @srvrolename = 'sysadmin';
Run Code Online (Sandbox Code Playgroud)
或者所有服务器角色的所有显式成员的完整列表:
EXEC sys.sp_helpsrvrolemember;
Run Code Online (Sandbox Code Playgroud)
对于 SQL Server 2000,还可以使用以下选项对结果集进行排序或过滤:
CREATE TABLE #ServerRoles
(
ServerRole VARCHAR(20),
MemberName sysname,
sid VARBINARY(85)
);
INSERT INTO #ServerRoles
(ServerRole, MemberName, sid)
EXEC sys.sp_helpsrvrolemember;
SELECT SR.MemberName, SR.ServerRole
FROM #ServerRoles SR
WHERE 1 = 1 -- Change this to any filter you want
ORDER BY SR.MemberName, SR.ServerRole; -- Change this to any sorting you want
DROP TABLE #ServerRoles;
GO
Run Code Online (Sandbox Code Playgroud)
对于 SQL Server 2005+,已经有一个可以直接查询的系统视图:
sys.server_role_members,它是roles和之间的多对多关系表logins。
| 归档时间: |
|
| 查看次数: |
574 次 |
| 最近记录: |