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

SQL Server 2008 建立唯讀帳號完整教學:登入建立、使用者對應、db_datareader 與檢視預存程序權限

     編輯:SQL Server 2008

為保護資料庫安全,生產環境常需建立「唯讀帳號」供報表、BI、稽核人員使用。本文以圖文詳細說明在 SSMS 中建立 SQL 登入、對應資料庫使用者、指派 db_datareader 角色,以及進階需求:授予 檢視任意定義 (VIEW ANY DEFINITION) 以查看預存程序/檢視表/函數定義的完整步驟。

一、建立 SQL 登入與唯讀使用者 (基本流程)

  1. 開啟 SSMS,以 Windows 驗證或 sa 登入。
  2. 展開 安全性 > 登入名,右鍵 新增登入名。
  3. 一般 頁籤:
    • 登入名:輸入帳號名稱 (如 ReadOnlyUser)。
    • 選擇 SQL Server 驗證,設定強密碼。
    • 建議取消勾選「強制執行密碼原則」與「強制執行密碼到期」 (視安全性政策)。
  4. 使用者對應 頁籤:
    • 勾選需授權的目標資料庫 (可多選)。
    • 下方「資料庫角色成員資格」勾選 db_datareader。
    • 預設結構可留空 (dbo)。
  5. 點擊 確定 完成。

SSMS 登入視窗

安全性登入名

新增登入名

一般頁籤設定

使用者對應 db_datareader

二、進階:授予「檢視任意定義」權限以查看預存程序/檢視表/函數

db_datareader 僅授予 資料列層級 的 SELECT 權限,不包含 檢視物件定義 (CREATE PROCEDURE / VIEW / FUNCTION 文字)。若唯讀帳號需閱讀程式碼,需額外授予伺服器層級權限 VIEW ANY DEFINITION。

操作步驟

  1. 在 SSMS 物件總管中,展開 安全性 > 登入名,右鍵目標登入 → 屬性。
  2. 切換至 安全物件 頁籤,點擊 搜尋...。
  3. 「選擇物件類型」保持預設,點擊 瀏覽... → 選擇 伺服器 (根節點) → 確定。
  4. 在「明確權限」清單中,找到 檢視任意定義,勾選 授與 核取方塊。
  5. 點擊 確定 關閉所有視窗。

安全物件搜尋

選擇伺服器物件

授與檢視任意定義

生效方式

伺服器層級權限變更通常**即時生效**;若未生效,可嘗試重啟 MSSQLSERVER 服務 (注意:會同時停止 SQL Server Agent,重啟後請手動啟動 Agent)。

三、快速參考:伺服器角色與資料庫角色權限對照表

固定伺服器角色 (Server Roles) - 對資料庫引擎實例的管理權限

角色權限說明
sysadmin執行任何活動,跨越所有其他角色;預設 BUILTIN\Administrators 成員皆為 sysadmin
securityadmin管理登入及屬性,GRANT/DENY/REVOKE 伺服器與資料庫權限,重設 SQL 登入密碼
serveradmin變更伺服器範圍設定選項、關閉伺服器
setupadmin加入/移除連結伺服器、執行特定系統預存程序 (sp_serveroption 等)
processadmin結束資料庫引擎實例中執行的處理序
diskadmin管理磁碟檔案
dbcreator建立、修改、刪除、還原任何資料庫
bulkadmin執行 BULK INSERT 陳述式

固定資料庫角色 (Database Roles) - 對特定資料庫物件/資料的操作權限

角色權限說明
db_owner資料庫所有作業 (結構、資料、安全性、備份/還原)
db_datareader讀取所有使用者資料表/檢視表資料 (唯讀帳號核心角色)
db_datawriter新增、修改、刪除所有使用者資料表資料
db_ddladmin執行 DDL (CREATE/ALTER/DROP 表、檢視、索引等)
db_securityadmin管理資料庫角色成員、權限、應用程式角色
db_backupoperator備份資料庫 (可執行 DBCC CHECKPOINT 等)
db_denydatareader拒絕讀取任何資料
db_denydatawriter拒絕修改任何資料

四、T-SQL 快速建立唯讀帳號腳本

-- 1. 建立 SQL 登入
CREATE LOGIN [ReadOnlyUser] WITH PASSWORD = N'Str0ng!P@ss', 
    CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF;

-- 2. 對每個目標資料庫建立使用者並加入 db_datareader
USE [TargetDB];
CREATE USER [ReadOnlyUser] FOR LOGIN [ReadOnlyUser];
ALTER ROLE [db_datareader] ADD MEMBER [ReadOnlyUser];

-- 3. (選擇性) 授予檢視任意定義
GRANT VIEW ANY DEFINITION TO [ReadOnlyUser];

依據上述流程即可建立安全、合規的唯讀帳號,滿足報表查詢與程式碼審閱雙重需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved