Sql-Server

MS-SQL 數據庫中的使用者處理

  • January 20, 2022

我有一個 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>”,但是簡單地打開數據庫是行不通的:

權限截圖: 在此處輸入圖像描述

點擊 DB_Name 左側的 + 時出現錯誤消息: 在此處輸入圖像描述

為了訪問該數據庫,嘗試檢查“權限”頁面中的“連接”功能是否正確?如果沒有,我還需要做什麼?

您還需要授予一些權限,例如 SELECT 才能從該表中讀取數據。CONNECT 為您提供連接的唯一可能性,僅此而已。

當然,請確保將使用者映射到某個登錄名。

當我點擊複選框時,如何確保將其儲存而不是不考慮?

在您的情況下,連接已被授予,並且“dbo”是此權限的授予者,這沒關係。如果授予某些權限(如連接),您將在管理工作室中看到它兩次。所以不要太在意這個。如果您點擊某個複選框,然後點擊“確定”並且您沒有收到任何錯誤,則可以確定它已保存。您還可以使用視窗頂部的“腳本”按鈕讓腳本準備好在 SSMS 查詢視窗中執行,這樣您也可以使用該選項。

根據您在評論中的回答,您希望將您的ANALYSE使用者配置為能夠讀取數據並將數據寫入數據庫中的任何表。db_datareader使用和db_datawriter 數據庫安全形色最容易做到這一點。

我發現在 SSMS 中設置這些最簡單,方法是展開 Security 文件夾(在伺服器級別),然後展開 Logins 文件夾,右鍵點擊要為其配置權限的登錄名,然後點擊屬性。

然後在“登錄屬性”視窗中,轉到“使用者映射”部分,並選中您希望他們有權訪問的數據庫。然後在“數據庫角色成員資格”部分中,勾選角色db_datareaderdb_datawriter. 最後,點擊確定保存更改(將立即生效)。

下面的範例登錄屬性視窗:

登錄屬性 - 使用者映射 (圖片來自SQLShack

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