Sql-Server

如何顯示離線數據庫的使用者映射?

  • October 11, 2018

當我使用 GUI (SSMS) 查看使用者映射時,登錄已映射到離線(或不可用)的數據庫,我收到以下消息,它僅顯示聯機數據庫的映射。

一個或多個數據庫無法訪問,不會顯示在列表中

所有細節實際上都應該在主數據庫中,應該有一些我可以執行的東西來告訴我完整的使用者映射是什麼。

如何顯示離線數據庫的使用者映射?

您可以使用sys.databases加入sys.server_principals

SELECT sd.NAME AS databaseName
   ,sp.NAME AS database_owner
FROM sys.databases sd
INNER JOIN sys.server_principals sp ON sd.owner_sid = sp.SID
WHERE sd.state_desc = 'OFFLINE' --> since you want for offline databases !

在此處輸入圖像描述

您甚至可以自行承擔使用風險 –> sp_msloginmappings( <– 未記錄且不受支持:-) )

你在這裡做了一個錯誤的假設

所有細節實際上都應該在主數據庫中,應該有一些我可以執行的東西來告訴我完整的使用者映射是什麼。

考慮一下,如果您將備份從一個實例恢復到另一個實例,則數據庫會帶來所有現有使用者(數據庫詳細資訊),而無需創建登錄名(實例詳細資訊)。

即使您可以查詢主數據庫以獲取有關離線數據庫的使用者資訊,它也只會包含存在登錄名的資訊。任何擁有數據庫使用者帳戶但未登錄的使用者都不會被辨識。

沒有人可以讀取離線數據庫,您唯一的選擇是將數據庫設置為只讀,找到您想要的並將其設置回離線(假設它出於某種原因而離線)

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