Sql-Server

SQL Server 2000 中只有系統管理員才能完成的任務是什麼?

  • June 20, 2013

我正在清理我的 SQL Server 2000 上的權限,並且我想驗證某個特定帳戶是否仍然具有系統管理員權限。

哪些非破壞性任務只有系統管理員才能完成,我可以用來確認這一點?

您根本不必執行任何任務(破壞性或非破壞性)。

您可以使用內置函式IS_SRVROLEMEMBER來查找某個LOGIN是否是sysadmin伺服器角色的成員:

SELECT IS_SRVROLEMEMBER('sysadmin','<LoginName>');

請注意,對於除結果之外的角色,對於隱式sysadmin成員資格也是正數 (=1) 。

您可以使用內置儲存過程sp_helpsrvrolemember來獲取某個角色 的所有顯式成員的列表:

EXEC sys.sp_helpsrvrolemember @srvrolename = 'sysadmin';

或所有伺服器角色的所有顯式成員的 完整列表:

EXEC sys.sp_helpsrvrolemember;

對於 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

對於 SQL Server 2005+,已經有一個可以直接查詢的系統視圖:

sys.server_role_membersroles ,它是和之間的多對多關係表logins

您可以使用該帳戶創建另一個登錄名,並授予它系統管理員權限。

引用自:https://dba.stackexchange.com/questions/25371