Sql-Server

登錄伺服器突然失去了與數據庫中使用者的映射

  • January 15, 2018

我的是永遠線上的可用性環境。我有 3 個 SQL 2014 伺服器(主要和 2 個副本)。一年以來,所有登錄都在伺服器中正常工作。有些突然,我從應用程序伺服器收到錯誤,指出 PIDS 無法訪問數據庫。PIDS 成功登錄伺服器,但無法訪問數據庫。我檢查了伺服器中登錄的映射。我看到沒有檢查數據庫。我不知道它是如何失去與數據庫中使用者的映射的。

當我檢查數據庫中的使用者時,我可以看到該使用者存在於數據庫中並且也具有分配給該使用者的所有必需權限。

注意:我嘗試重新啟動解決問題的伺服器 2 小時,然後我們又遇到了同樣的問題。我刪除了所有這些使用者(從登錄中失去了映射)並重新創建了它們,並在所有三台伺服器中同步了所有 SID。這暫時解決了我的問題。但我想知道問題的根本原因。

問題 1:我的使用者如何突然失去了登錄後的映射,這些映射自1 YEAR以來工作得非常好。

問題 2:簡單的伺服器重啟如何解決幾個小時的問題,以及問題再次出現的原因。

問題 1:我的使用者如何突然失去了登錄後的映射,這些映射自 1 年以來一直執行良好。

AG 內部沒有任何東西可以做到這一點。這必須由某人或某事完成。登錄名和使用者通過他們的 SID 進行映射,因此如果映射不再有效(不同的 SID),它們可能變得不同的唯一方法是最初設置不正確或有人/某事更改了它。您可以嘗試查看預設跟踪並查看它是否有任何數據,但如果您沒有對其進行審核,您可能無法追溯找到它,因為 SQL Server 不保存該類型的數據。

問題 2:簡單的伺服器重啟如何解決幾個小時的問題,以及問題再次出現的原因。

“簡單重啟”只是掩蓋了問題。如果您重新啟動了主副本,那麼主副本將會更改 - 可能會更改為具有工作映射的副本。如果重新啟動時它是輔助設備,則可讀連接(如果使用只讀路由)將被斷開,並且重新連接將轉到映射可能正常的另一個輔助設備。

重啟並沒有“修復”任何東西,你很幸運並“掩蓋”了它。這完全取決於您完成此操作時每個副本的確切狀態。

當我檢查數據庫中的使用者時,我可以看到該使用者存在於數據庫中並且也具有分配給該使用者的所有必需權限。

是的,它應該。如果沒有,那麼有人刪除了使用者並重新創建了它。

使用者存在數據庫中,因此他們的資訊被發送到每個副本。但是,登錄是儲存在其中的伺服器級對象master,因此不是 AG 流量的一部分,因為它超出了數據庫的範圍。這就是發生這種情況的方式(不匹配的 SID)。

此外,這只是 SQL 登錄的問題 - 因為 Windows 登錄從活動目錄獲取其 SID 並且不應更改(請注意,它可以但需要管理員干預和命令)。

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