2012-06-14 32 views
12

我想在sql server中鏡像一個數據庫。我創建了一個數據庫並對其進行了備份並在另一臺服務器上進行了恢復。但是在完成所有操作並點擊開始鏡像之後,它會顯示以下錯誤。我把「否」給Witness服務器選項enter image description here如何解決錯誤:鏡像時在sql server中的1418

我遵循了這個link的鏡像步驟在這裏說,在STEP 3中使用相同憑證在主體和鏡像服務器上創建用戶。是否需要在兩臺服務器上創建相同的用戶?或者有其他解決方案嗎?

+0

我認爲,上述問題是由於端口numbers.because給INSTANCE1和instance2.The默認端口號原則服務器相同的端口號是5022引起的,鏡子是5023和見證是5024.so檢查一次端口號。 – sandy

回答

17

我也面臨同樣的問題。您需要檢查以下項目一次。

  1. 轉到services.msc並檢查sql server在哪個帳戶下運行。確保sql server和sql server代理服務應該使用相同的憑據運行。

  2. 在鏡像數據庫服務器中,您應該執行與步驟1相同的步驟。提供與主體服務器中相同的憑據。如果該用戶不存在,則在具有相同憑據的兩臺服務器上創建一個新用戶。

  3. 現在得到了主服務器,並在sql server中添加了新的登錄名爲安全 - >登錄。將服務器角色設置爲「系統管理員」和「公共」。也在鏡像服務器上添加相同的用戶。

  4. 現在在主體數據庫中執行鏡像。你沒有得到任何錯誤。

+0

您在Principle和Mirror上說「確保sql server和sql server代理服務應該使用相同的憑據運行」。我沒有在Windows Active Directory域中運行。我的服務必須在本地用戶帳戶下運行。您的答案是否假設用戶是Active Directory用戶? – Dave

+0

謝謝,在域帳戶下運行SQL服務器已經爲我解決了這個問題。有沒有任何不利的地方,而不是本地帳戶? –

+0

通過說相同的憑據,是否需要爲用戶擁有相同的密碼?我試過並沒有成功複製。 pricipal服務器用戶域帳戶和鏡像使用本地管理員具有相同名稱但可能不同的密碼。應該通常工作? – RayofCommand

1

您也可能不會將用於鏡像的副本保留在還原狀態,必須將其保留以打開鏡像。

通常情況下,SQL Server鏡像的方法是:

1)備份的原始數據庫,並將其複製到用於鏡像服務器。

2)備份事務日誌並將其複製到鏡像服務器。

3)選擇從MMC中恢復數據庫並找到數據庫的備份,並將其恢復爲選項設置爲處於非運行狀態而不回退事務。

4)選擇恢復和選擇文件,然後選擇日誌文件,還可以選擇不滾動和無功能恢復日誌文件備份。這是SQL Server 2008選項頁下的第二個單選按鈕。

5)轉到原始數據庫副本服務器並打開鏡像。您需要在兩臺服務器上使用具有sysadmin權限的帳戶才能啓動鏡像會話。

2

同樣的問題,錯誤1418沒有的一切這裏建議:link

事後看來很明顯。當完成MIRRORING> CONFIGURE SECURITY WIZARD時,您會看到一個解釋結果的頁面。看着SQL1和SQL2節點,這條線是關鍵:

On the principal server instance, SQL1 
Listener Port: 5022 
Encryption: **Yes** 


On the mirror server instance, SQL2 
Listener Port: 5022 
Encryption: **No** 

解決方案。完成所有SQL節點上的嚮導後,執行:

drop endpoint Mirroring 
go 


CREATE ENDPOINT Mirroring 
STATE = STARTED 
AS TCP (LISTENER_PORT = 5022) 
FOR DATABASE_MIRRORING 
(ENCRYPTION = DISABLED,ROLE=ALL) 
GO 

點擊開始鏡像,問題已解決。

希望幫助別人 斯科特

0

我遇到過這個問題,所有的驗證通過。 最後使用一個新的端點,它工作。 根本原因是5022可能阻塞其他會話。

0

我的錯誤1418是使用兩臺服務器上相同的驅動器字母解決...

雖然MS建議你可以用不同的字母,我決定使用相同的驅動器字母...

來自MS:

Also, we recommend that, if it is possible, the file path (including the drive letter) of the mirror database be identical to the path of the principal database. If the file paths must differ, for example, if the principal database is on drive 'F:' but the mirror system lacks an F: drive, you must include the MOVE option in the RESTORE statement.

2

在耗盡了上面提到的所有選項之後,我對鏡像環境有了一些變化。我們在Principal-Mirror配置中爲SQL Server 2008貢獻了2014服務器。 2014年的Sql服務器也被用在AlwaysOn配置中,用於其他一些Db的HA。現在在SQL 2008和SQL 2014上命名的終點不同。

得到上述錯誤後,我發現2008年的加密是RC4,而2014年的加密是AES。因此,它與SQL2014端點握手失敗。我使用下面的命令和中提琴改變了加密以匹配SQL 2008的加密!

ALTER ENDPOINT [Hadr_endpoint] 
    FOR DATA_MIRRORING (ENCRYPTION = REQUIRED ALGORITHM RC4) 
0

對於我來說,我有這個問題突然出現,並通過刪除和重建鏡像端點最終解決它(SSMS - >服務器對象 - >端點 - >數據庫鏡像)

0

降端點鏡像

轉到

CREATE ENDPOINT Mirroring 
STATE = STARTED 
AS TCP (LISTENER_PORT = 5022) 
FOR DATABASE_MIRRORING 
(ENCRYPTION = DISABLED,ROLE=ALL) 
GO 

命中開始鏡像,問題就迎刃而解了。

希望幫助別人斯科特

這真的幫我感謝Scott

TNX 麗思

0

如果沒有上述工作,這裏是什麼原因造成我的問題。 運行在兩臺服務器上以下查詢,仔細一看

SELECT @@Version 

我有沒有我的鏡像服務器上安裝了我的主服務器上的一些更新。

此外,您可以看到SQL Server日誌中的其他信息,以說明鏡像無法正常工作的原因。這就是我意識到我在兩臺服務器上都有不同版本的原因。

0

在SQL Server 2016上,解決方案是將您的[域帳戶]作爲系統管理員在主體和鏡像服務器上。然後創建一個新帳戶下列

主服務器的

use [master] 
GO 
CREATE LOGIN [domain\mirrorservername$] FROM WINDOWS 
GO 
GRANT CONNECT ON ENDPOINT::[Mirroring] TO [domain\mirrorservername$] 
GO 

鏡像服務器

use [master] 
GO 
CREATE LOGIN [domain\principalservername$] FROM WINDOWS 
GO 
GRANT CONNECT ON ENDPOINT::[Mirroring] TO [domain\principalservername$] 
GO 

您需要創建的帳戶和CONNECT權限授予那些帳戶期間所使用的那些委託人與鏡像服務器之間的握手。

有關錯誤的詳細信息,請檢查您的SQL錯誤日誌。

希望本貼幫助到某位用戶。

0

我有同樣的問題。我正在嘗試在域設置上設置Windows 2008 R2上的鏡像。正如上面的一位專家所建議的那樣,我檢查了SQLSERVER和SQLSERVERAGENT的SQL Server「登錄」帳戶,併爲兩臺機器上的SQL Server服務使用了相同的域帳戶。我能夠設置鏡像。

感謝您的幫助!

相關問題