Sql-Server
SQL Server 2012 AlwaysOn 可用性組在節點之間切換時伺服器登錄失敗
我正在設置一個 3 節點集群作為可用性組的一部分。
最初,我使用 SQL Management Studio 測試了節點之間的故障轉移,當我停止一個節點時,一切都成功地進行了故障轉移,我仍然能夠編寫查詢。
我開始使用一個使用 SQL 使用者連接的應用程序進行測試,每當我切換節點時,我都會登錄失敗。
我相信這個問題的原因是因為與數據庫綁定的伺服器登錄 SID 與導致登錄失敗的其他節點上的伺服器登錄不同。如果我沒有正確理解這一點,請糾正我。
如果我理解正確,如何確保節點之間的伺服器登錄 SID 相同?有沒有辦法複製這個或者這應該怎麼做?
我讀了一些關於包含數據庫的內容,我可以在數據庫本身上設置登錄名而不是創建伺服器登錄名,但我寧願不走那條路。
你的直覺可能是正確的。您可以通過執行以下命令來驗證節點之間的 SID 是否不同:
select name, sid from sys.server_principals
在每個節點上並比較它們。
至於您應該如何使它們保持同步,請在創建時這樣做(不幸的是,我不知道事後更改 SID)。也就是說,該
create login
語句有一個可選子句來提供 SID。所以我會這樣做:-- on node 1 create login [foobar] with password = 'str0ngp@ssword!'; select sid from sys.server_principals where name = 'foobar'; -- on subsequent nodes create login [foobar] with password = 'str0ngp@ssword!', sid = <the sid you obtained from node 1>;
我已經這樣做了,以便生成自己的 SID 並將其傳遞給節點 1(以便在所有伺服器上執行相同的腳本),但我將其作為練習留給讀者。:)