查詢資料庫中所有使用者的所有許可權/訪問許可權的 SQL Server 查詢
簡介
在 SQL Server 中,許可權用於控制對資料庫物件(如表和檢視)的訪問。資料庫中的每個使用者都有一組許可權,這些許可權決定他們可以在資料庫中執行的操作,例如 SELECT、INSERT、UPDATE、DELETE 和 EXECUTE。要檢視已授予資料庫中使用者的許可權,可以使用 sys.database_permissions 檢視。此檢視提供有關已授予或拒絕特定資料庫資料庫級可保護物件的許可權的資訊。sys.objects 檢視包含有關資料庫中所有物件的資訊,sys.database_principals 檢視包含有關資料庫使用者的資訊。
您可以將這三個檢視連線在一起,以獲取資料庫中所有使用者的許可權列表。查詢將返回一個包含三列的結果集:“使用者名稱”、“許可權”和“物件名”。“使用者名稱”列將包含使用者名稱,“許可權”列將包含使用者擁有的許可權型別,“物件名”列將包含許可權適用的物件(如表或檢視)的名稱。
定義
查詢 SQL Server 資料庫中所有使用者的所有許可權/訪問許可權的查詢是一個查詢,您可以使用它來查詢已授予 SQL Server 中特定資料庫中所有使用者的許可權/訪問許可權。查詢將返回一個結果集,其中列出了使用者名稱、許可權以及許可權適用的物件(如表和檢視)的名稱。該查詢使用了 SQL Server 中的三個系統檢視:`sys.database_permissions`、`sys.objects` 和 `sys.database_principals`。
`sys.database_permissions` 檢視提供有關已授予或拒絕特定資料庫資料庫級可保護物件的許可權的資訊。`sys.objects` 檢視包含有關資料庫中所有物件的資訊,`sys.database_principals` 檢視包含有關資料庫使用者的資訊。
查詢基於上述三個檢視之間的關係使用 INNER JOIN 來獲取結果。查詢將使用 WHERE 子句僅篩選資料庫主體中的 SQL 使用者。
請記住,此查詢僅適用於您已連線到的特定資料庫。如果您需要檢查所有資料庫中所有使用者的許可權,則需要針對每個資料庫分別執行查詢。
重要事項
使用查詢 SQL Server 資料庫中所有使用者的所有許可權/訪問許可權的 SQL 查詢時,請記住以下幾點:
該查詢使用 `sys.database_permissions`、`sys.objects` 和 `sys.database_principals` 檢視,因此它僅適用於您已連線到的特定資料庫。如果您需要檢查所有資料庫中所有使用者的許可權,則需要針對每個資料庫分別執行查詢。
該查詢返回有關已授予或拒絕資料庫級可保護物件的許可權的資訊,因此它不會返回有關伺服器級或物件級許可權的資訊。
該查詢僅返回有關 SQL 使用者的資訊,而不是 Windows 使用者或角色。如果您想檢視其他型別使用者的許可權,則需要相應地調整查詢。
該查詢僅顯示許可權,但不提供有關受這些許可權保護的物件的資訊。如果您想檢視有關物件的更多詳細資訊,您可以與其他系統檢視(如 sys.tables、sys.procedures 等)進行 JOIN。
請記住,此查詢僅顯示查詢執行時的許可權。如果之後修改了許可權,則可能無法反映當前情況。
如果資料庫中有很多使用者或物件,執行查詢可能需要一些時間。您可能還需要考慮在相關檢視列上新增索引以提高效能。
SQL 查詢
以下是一個查詢,您可以使用它來查詢 SQL Server 中特定資料庫中所有使用者的許可權/訪問許可權:
SELECT u.name as 'User Name', p.name as 'Permission', o.name as 'Object Name' FROM sys.database_permissions p INNER JOIN sys.objects o ON p.major_id = o.object_id INNER JOIN sys.database_principals u ON p.grantee_principal_id = u.principal_id WHERE u.type_desc = 'SQL_USER'
此查詢將返回一個包含三列的結果集:“使用者名稱”、“許可權”和“物件名”。“使用者名稱”列將包含使用者名稱,“許可權”列將包含使用者擁有的許可權型別,“物件名”列將包含許可權適用的物件(如表或檢視)的名稱。
您可以根據您的需求更改 WHERE 子句以按使用者名稱、許可權、物件名稱等進行篩選。
請注意,此查詢僅適用於您已連線到的特定資料庫。如果您需要檢查所有資料庫中所有使用者的許可權,則需要針對每個資料庫分別執行查詢。
結論
查詢 SQL Server 資料庫中所有使用者的所有許可權/訪問許可權的 SQL 查詢是一個有用的查詢,用於識別已授予特定資料庫中使用者的許可權。
透過連線 `sys.database_permissions`、`sys.objects` 和 `sys.database_principals` 檢視,該查詢返回使用者名稱、許可權以及許可權適用的物件(如表和檢視)的名稱列表。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP