MS-SQL 數據庫中的使用者處理
我有一個 MS-SQL 安裝,控制不同的數據庫。這可以使用 Microsoft SQL Server Management Studio 18 訪問。為此,我使用 Windows 身份驗證。
在那裡,我有不同的數據庫。其中之一具有以下權限(在檢查“屬性”、“權限”時):
Users or roles: Name Type ANALYSE User Permissions for ANALYSE: Permission Grantor Grant With_Grant Deny ... Connect <empty> False False False ... Connect dbo True False False
我已修改“授予”列複選框,但未考慮該修改。
我這樣做是因為我希望“分析”能夠訪問該特定數據庫(我正在使用 C# 實體框架相關程序中的連接字元串,並且我希望盡可能少地執行原始碼修改)。當我以“ANALYSE”身份登錄時訪問該數據庫時,我收到以下錯誤消息:
TITLE: Microsoft SQL Server Management Studio ------------------------------ The database <database_name> is not accessible. (ObjectExplorer) ------------------------------ BUTTONS: OK ------------------------------
兩個問題:
- 為了訪問該數據庫,嘗試檢查“權限”頁面中的“連接”功能是否正確?如果沒有,我還需要做什麼?
- 當我點擊複選框時,如何確保將其儲存而不是不考慮?
編輯:截圖以便更好地理解
從下面的截圖中可以看出,授予了一個“連接”權限,並且所有表確實都稱為“dbo.<table_name>”,但是簡單地打開數據庫是行不通的:
為了訪問該數據庫,嘗試檢查“權限”頁面中的“連接”功能是否正確?如果沒有,我還需要做什麼?
您還需要授予一些權限,例如 SELECT 才能從該表中讀取數據。CONNECT 為您提供連接的唯一可能性,僅此而已。
當然,請確保將使用者映射到某個登錄名。
當我點擊複選框時,如何確保將其儲存而不是不考慮?
在您的情況下,連接已被授予,並且“dbo”是此權限的授予者,這沒關係。如果授予某些權限(如連接),您將在管理工作室中看到它兩次。所以不要太在意這個。如果您點擊某個複選框,然後點擊“確定”並且您沒有收到任何錯誤,則可以確定它已保存。您還可以使用視窗頂部的“腳本”按鈕讓腳本準備好在 SSMS 查詢視窗中執行,這樣您也可以使用該選項。
根據您在評論中的回答,您希望將您的
ANALYSE
使用者配置為能夠讀取數據並將數據寫入數據庫中的任何表。db_datareader
使用和db_datawriter
數據庫安全形色最容易做到這一點。我發現在 SSMS 中設置這些最簡單,方法是展開 Security 文件夾(在伺服器級別),然後展開 Logins 文件夾,右鍵點擊要為其配置權限的登錄名,然後點擊屬性。
然後在“登錄屬性”視窗中,轉到“使用者映射”部分,並選中您希望他們有權訪問的數據庫。然後在“數據庫角色成員資格”部分中,勾選角色
db_datareader
和db_datawriter
. 最後,點擊確定保存更改(將立即生效)。下面的範例登錄屬性視窗:
(圖片來自SQLShack)