首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

善用 sp_helprotect 掌握 SQL Server 資料庫權限全貌

     編輯:關於SqlServer

什麼是 sp_helprotect?

sp_helprotect 是 SQL Server 內建的系統預存程序,用於報告目前資料庫中物件或陳述式的權限授與/拒絕狀態。接受四個選用參數,靈活查詢特定權限資訊。

參數說明

參數資料型別說明
@namesysname資料庫物件名稱(資料表、檢視表、預存程序等),或陳述式權限關鍵字(如 CREATE TABLE)。
@usernamesysname資料庫使用者帳號(SQL 登入、Windows 使用者/群組)。
@grantornamesysname授權者帳號。
@permissionareavarchar(10)'o'=物件權限,'s'=陳述式權限,'o s'=兩者皆查。

@name 可用的陳述式權限關鍵字

CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE、CREATE VIEW、BACKUP DATABASE、BACKUP LOG

實戰範例(Northwind 資料庫)

USE Northwind;
GO

-- 查詢 Orders 資料表的物件權限
EXEC sp_helprotect @name = 'Orders';
GO

-- 僅查詢陳述式權限
EXEC sp_helprotect @permissionarea = 's';
GO

-- 僅查詢物件權限
EXEC sp_helprotect @permissionarea = 'o';
GO

-- 同時查詢物件與陳述式權限
EXEC sp_helprotect @permissionarea = 's o';
GO

輸出欄位重點

  • grantor:授權者
  • grantee:被授權者
  • type:GRANT 或 DENY
  • action:具體權限動作(SELECT、INSERT、EXECUTE 等)
  • object:物件名稱
  • column:欄位層級權限時的欄位名

最佳實務建議

  1. 定期匯出權限報表備份,利於稽核與災難復原。
  2. 搭配 sp_helprole、sp_helprolemember 完整掌握角色成員關係。
  3. 避免直接對公用角色授與過高權限,採最小權限原則。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved