Applies ToSQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Enterprise Core

摘要

當您無法建立 Microsoft SQL Server 2012 AlwaysOn 可用性群組接聽程式時,通常是您無法在 Active Directory 中建立物件,或在 DNS 中登錄 IP 位址的其他問題的徵兆。因為網域原則,或因為缺乏權限給 Windows 叢集互動 Active Directory 或 DNS,通常會發生這些問題。當您在 SQL Server 中建立的接聽程式時,Windows 叢集就會建立用戶端存取點資源。如果 SQL Server 無法建立接聽程式,可能無法報告原因,因為 Windows 叢集建立資源。 在此情況下,您可以收集 Windows 叢集記錄檔和 Windows 系統事件日誌以診斷的原因。如果您無法建立接聽程式,則它通常是由於下列原因之一︰

  • 您沒有足夠的 Windows 叢集權限來建立及變更使用中的目錄叢集名稱的帳戶。

  • 您無法在 DNS 中登錄的 IP 位址,因為涉及重複或無效的 IP 位址的特定問題。

  • 您違反 Windows 原則。

本文將告訴您可以執行為了診斷失敗的嘗試建立接聽程式,如果 SQL Server 無法報告原因的步驟。此外,本文會列出一些您可能會看到可用性群組接聽程式建立失敗時的錯誤訊息。

更多的資訊

當您無法建立可用性群組接聽程式時,SQL Server 可能會不報告原因

當您可以使用 SQL Server Management Studio 的 [加入接聽程式] 對話方塊,以建立可用性群組接聽程式時,您可能會收到錯誤訊息,其中包含錯誤,可以幫助您解決問題的原因的相關資訊。例如,您會收到不正確的 IP 位址,類似下列的子網路的相關錯誤訊息︰

指定的 IP 位址 ' <IP 位址>' 中的叢集允許 IP 範圍無效。請檢查網路系統管理員,以選取適合的叢集允許 IP 範圍的值。(Microsoft SQL Server,錯誤碼︰ 19457)

Image 1 不過,您也可能會收到錯誤訊息,不會說明為何您不能在其中建立群組接聽程式。例如,當您嘗試建立可用性群組接聽程式,您會收到類似下列,不會指定實際的錯誤原因的錯誤訊息︰

訊息 19471,層次 16,狀態 0,第 2 行WSFC 叢集可能無法讓 DNS 名稱 ' <DNS 名稱>' 線上與網路名稱資源。DNS 名稱可能已被或有衝突,以與現有的名稱服務,或 WSFC 的叢集服務可能並未執行,或可能無法存取。如果要解決名稱衝突,使用不同的 DNS 名稱,或檢查 WSFC 叢集記錄檔,如需詳細資訊。

訊息 19476,層次 16,狀態第 4 行 2嘗試建立網路名稱和 IP 位址,接聽程式失敗。WSFC 服務可能並未執行,或可能無法存取位於目前的狀態或提供給網路名稱的值,且 IP 位址可能不正確。檢查 WSFC 叢集的狀態,並驗證的網路名稱和 IP 位址與網路系統管理員。

Image 2

之所以發生這個問題,是因為的 Windows 無法建立叢集,並將其連線用戶端存取點也就是叢集的資源。當您遇到這個問題時,您可以從 Windows 叢集記錄檔和 Windows 系統事件日誌收集相關資訊,以找出原因。要執行這項操作,請依照下列步驟執行。

步驟 1︰ 請注意在問題發生的確切時間執行任何步驟所需重現問題,並請注意這個問題發生的時間。

步驟 2: Review Windows 叢集記錄檔中的資料 (Cluster.log)搜尋您指定給群組的接聽程式的網路名稱 Cluster.log 檔。注意事項

  • Cluster.log 檔項目中會記錄在國際標準時間 (UTC)。

  • 若要使用系統管理的命令提示字元,在 Windows Server 2008 R2 或較新版的 Windows Server 產生 Windows 叢集記錄檔,執行下列命令︰

    Cluster log /g

    Image 4

  • 若要使用 Windows PowerShell 產生 Windows 叢集記錄檔,請在提高權限 PowerShell 視窗中執行下列指令程式︰

    Get-ClusterLog

    Image 5

  • 根據預設,記錄檔會建立在 %windir%\cluster\reports。

步驟 3︰ 檢閱 Windows 系統事件日誌中的資料檢閱 Windows 系統事件記錄檔接聽程式建立嘗試使用您在步驟 1 中記下的時間與相關的項目。

有時候,SQL Server 無法報告為何無法建立群組的接聽程式,因為網域原則的特定資訊。例如,網域原則可以讓依預設建立 10 個電腦帳戶的網域使用者。當您嘗試建立群組接聽程式,而第十一個電腦帳戶時,SQL Server 可以只會報告一般錯誤訊息 「 Msg 19471"和"Msg 19476 > 所討論的 < 其他資訊=""> 一節。若要尋找原因為何您不能在其中建立群組的接聽程式,請檢閱 Windows 系統事件日誌和 Cluster.log 檔。

  • 若要檢視 [Windows 系統事件記錄檔,請依照下列步驟執行︰

    1. 按一下 [開始],指向 [程式集、 指向 [系統管理工具] 中,,然後按一下 [事件檢視器

    2. 在主控台樹狀目錄中,展開 [ Windows 記錄檔時,,,然後按一下 [系統

    3. 在詳細資料窗格中,捲動瀏覽最新的事件,並找出事件 1194年。在 [一般] 索引標籤下幾種原因失敗的原因的建議。

    4. 按一下 [詳細資料] 索引標籤。在 [好記的檢視] 下的 [ EventData ] 區段,您可以看到更特定的錯誤訊息類似下列的︰

      您已經超過允許您在這個網域中建立的電腦帳戶的最大數目。

      Image 6

  • 若要檢閱 Cluster.log 檔中的項目,請依照下列步驟執行︰

    1. 按一下 [開始],指向 [所有程式,都指向Windows PowerShell V2Windows PowerShell ISE,以滑鼠右鍵按一下,然後按一下 [以系統管理員身分執行

    2. 在命令提示字元中,執行下列指令程式,以產生叢集記錄檔︰

      Get-ClusterLog

      Image 5

    3. 在記事本中開啟 Cluster.log 檔。

    4. 按一下 [編輯,然後按一下 [尋找[記事本] 和搜尋字串 「 無法建立電腦物件 <DNS 名稱> 」。檢閱的結果,您可以找到類似下列的訊息︰

      00000d24.00000dc8:: <時間戳記> 資訊 [RES] 網路名稱︰子網域名稱上的 [<網路名稱>] 的 NetUserAdd 物件 <DNS 名稱>: \\網域名稱,結果︰ 8557

      00000d24.00000dc8:: <時間戳記> ERR [RES] 網路名稱: [<網路名稱>] 無法建立電腦物件 <DNS 名稱> 在 Active Directory,也就是錯誤 8557

    5. 若要判斷這項錯誤的表示,請在命令提示字元中,輸入Net helpmsg 8557 ,然後按 Enter 鍵。 Image 9

結論您現在可以推斷問題的原因屬於實際上是在您的環境中的 Active Directory 原則。這種情況下,已驗證的使用者網域中的擁有 「 將工作站加入網域] 使用者權限,可以在網域中建立最多 10 部電腦帳戶。因為您已經超過這個限制,您會收到錯誤訊息。

有時候,SQL Server 無法報告為何無法建立群組的接聽程式,因為 Active Directory 中的權限不足的特定資訊。例如,叢集名稱帳戶需要 「 建立電腦物件 」 權限,當您建立叢集的服務或應用程式。當叢集名稱帳戶並沒有此權限時,則 SQL Server 無法建立可用性群組接聽程式。當您嘗試建立群組接聽程式權限不足時,SQL Server 可以只會報告一般錯誤訊息 「 Msg 19471"和"Msg 19476 > 所討論的 < 其他資訊=""> 一節。若要尋找此問題的原因,檢閱 [Windows 系統事件日誌和 Cluster.log 檔。

  • 檢閱 Windows 系統事件記錄檔。若要執行這項操作,請參考下列步驟:

    1. 按一下 [開始],指向 [程式集、 指向 [系統管理工具] 中,,然後按一下 [事件檢視器

    2. 在主控台樹狀目錄中,請展開 [ Windows 記錄檔時,,,然後按一下 [系統記錄檔包含您想要檢視的事件。

    3. 詳細資料] 索引標籤中,捲動瀏覽最新的事件,找出事件 1194年。在 [一般] 索引標籤下幾個原因被建議的失敗,原因如 「 叢集識別 ' <網域使用者>' 有建立電腦物件的權限。

    4. 按一下 [詳細資料] 索引標籤。在 [好記的檢視] 下的 [ EventData ] 區段,您可以看到更特定的錯誤訊息類似下列的︰

      指定的目錄服務屬性或值不存在。

      Image 12

  • 檢閱 Cluster.log 檔中的項目。若要執行這項操作,請參考下列步驟:

    1. 按一下 [開始],指向 [所有程式,都指向Windows PowerShell V2Windows PowerShell ISE,以滑鼠右鍵按一下,然後按一下 [以系統管理員身分執行

    2. 在命令提示字元中,執行下列指令程式,以產生叢集記錄檔︰

      Get-ClusterLog

      Image 5

    3. 在記事本中開啟 Cluster.log 檔。

    4. 按一下 [編輯],然後按一下 [在 [記事本] 中的 [尋找搜尋字串 「 無法建立電腦物件 <DNS 名稱> 」。檢閱的結果,您可以找到類似下列的訊息︰

      00000d24.000005f8:: <時間戳記> ERR [RES] 網路名稱: [<網路名稱>] 無法建立電腦物件 <DSN 名稱> 在 Active Directory,也就是錯誤 8202

    5. 若要判斷這項錯誤的表示,請在命令提示字元中,輸入Net helpmsg 8202 ,然後按 Enter 鍵。 Image 14

結論您現在可以推斷叢集名稱帳戶並沒有在 Active Directory 使用者和電腦中的 [電腦] 容器中的 「 建立電腦物件 」 權限。

如需有關如何取得足夠的權限,在 Active Directory 中,當您在 SQL Server 中建立可用性群組接聽程式的詳細資訊,請前往下列 Microsoft TechNet 網站︰

如何設定容錯移轉叢集中的 Active Directory 電腦帳戶在建立 Windows 容錯移轉叢集之前,您必須檢查是否正在執行 「 建立叢集精靈 」 的網域使用者帳戶具有 「 建立電腦物件 」

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。