Sql-Server

鏡像伺服器上相同 SQL 登錄的登錄問題在主體伺服器上正常工作

  • January 28, 2017

我會盡力描述這種情況,而我們一直在努力解決這個問題:

我們有這個 SQL 登錄

$$ LA $$在 sql 錯誤日誌中顯示主體伺服器上的成功連接$$ connection made from various apps $$. 此登錄在其鏡像伺服器上也顯示成功連接。 現在,這是另一個登錄

$$ LB $$在主體伺服器上連接成功,但在鏡像伺服器上連接失敗。$$ same application as above login LA connects $$ 已完成故障排除:

  1. 在兩台伺服器上執行 sp_help_revlogin 並匹配用於登錄的散列密碼

$$ LB $$. 因此,就主體和鏡像的 SQL 登錄而言,此登錄的確認密碼相同。 2. 兩台伺服器的登錄 SID 相同,因此這也不應該成為問題。 3. 應用程序使用相同的憑據連接到主體,這是成功的,但在鏡像伺服器上顯示登錄失敗。

由於某些原因導致登錄嘗試失敗,因此登錄一直被鎖定。

在將其作為應用程序問題傳遞給應用程序所有者之前,作為 DBA,我還能檢查什麼?

請幫我解決這個問題的根本原因,謝謝。

如果登錄被鎖定,則表明密碼不正確。伺服器記錄了錯誤的登錄密碼,或者客戶端提供了錯誤的密碼。

由於這是一個鏡像環境,我敢打賭客戶端對兩個實例使用相同的密碼;意思是mirror上的登錄密碼和master上的登錄密碼不同。

使用已知正確的密碼(即不是散列版本)在鏡像伺服器上重新創建登錄。

確保從此查詢中獲得正確的 sid(使用複制和粘貼),針對主體伺服器執行:

SELECT sp.name
   , sp.sid
FROM sys.server_principals sp
WHERE sp.name = 'login_name';

CREATE LOGIN在您在鏡像上執行的語句中使用該 sid :

CREATE LOGIN login_name
WITH PASSWORD = 'thepassword'
   , SID = 0x000000000000 --put the real sid here.
   , DEFAULT_DATABASE = tempdb;

sid 之所以重要,是因為它將登錄名連結到數據庫中的使用者。

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