none
SQL Server 2016でのミラーリング設定

    質問

  • SQL Server 2016 Stdでミラーリングの設定がうまくいきません。
    諸先輩方からご教授頂きたく投稿いたします。


    今までSQL Server 2012で同じような環境で同じようにミラーリングの設定をしてきましたが
    今回のようなエラーが起きたことがない為苦戦しています。
    うまくいかないので権限など出来るだけシンプルにして設定しようとしています。



    環境・確認済みの事柄
    ・ドメイン環境を構築し、プリンシパル・ミラー・ミラー監視共に同じドメインに参加
    ・プリンシパル・ミラーの両サーバはSQLのみ。ミラー監視はDCを兼任
    ・サービスアカウントは ドメイン\administrator(構成マネージャーより何度も確認
    ・ミラー側サーバはHyper-Vのホストとして動作。
    ・対象DBは新規作成しただけの中身のないものを使用
    ・原因切り分けの為ファイアウォールは無効に設定中 ←追記

    設定手順

    ・プリンシパルで完全バックアップ・トランザクションログを追記でバックアップ
    ・ミラー側で上記バックアップよりDBを復元
     オプションで 復旧状態:RESTORE WITH NORECOVERY を選択。
     復元完了のウィンドウが出てDBは(復元しています...)となる。
    ・プリンシパル側で[タスク]→[ミラー]よりセキュリティ構成ウィザードを使用して構成
     各インスタンスを選択。ポート・チェック・エンドポイント名などはデフォルト
    ・エンドポイントの構成 ではエラーは出ず成功する。
    ・ミラーリングの開始 を行うと以下のエラーが出る。

    失敗した後各サーバで【DROP ENDPOINT XXX】を実行し、何度も試しています。




    ===================================

    ミラーリングの開始中にエラーが発生しました。

    ===================================

    データベース 'mirrorTEST' のAlterに失敗しました。  (Microsoft.SqlServer.Smo)

    ------------------------------
    ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=14.0.17119.0+((SSMS_Rel).170517-0412)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Alter+Database&LinkId=20476 をクリック

    ------------------------------
    プログラムの場所:

       場所 Microsoft.SqlServer.Management.Smo.SqlSmoObject.AlterImpl()
       場所 Microsoft.SqlServer.Management.SqlManagerUI.DBPropMirroring.StartMirroring(Object sender, EventArgs e)

    ===================================

    Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.ConnectionInfo)

    ------------------------------
    プログラムの場所:

       場所 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType, Boolean retry)
       場所 Microsoft.SqlServer.Management.Smo.ExecuteSql.ExecuteImmediate(String query)
       場所 Microsoft.SqlServer.Management.Smo.ExecuteSql.GetDataProvider(StringCollection query, Object con, StatementBuilder sb, RetriveMode rm)
       場所 Microsoft.SqlServer.Management.Smo.SqlObjectBase.FillData(ResultType resultType, StringCollection sql, Object connectionInfo, StatementBuilder sb)
       場所 Microsoft.SqlServer.Management.Smo.SqlObjectBase.FillDataWithUseFailure(SqlEnumResult sqlresult, ResultType resultType)
       場所 Microsoft.SqlServer.Management.Smo.SqlObjectBase.BuildResult(EnumResult result)
       場所 Microsoft.SqlServer.Management.Smo.SqlObjectBase.GetData(EnumResult erParent)
       場所 Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData()
       場所 Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData(Request req, Object ci)
       場所 Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.GetData(Object connectionInfo, Request request)
       場所 Microsoft.SqlServer.Management.Smo.ExecutionManager.GetEnumeratorDataReader(Request req)
       場所 Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitChildLevel(Urn levelFilter, ScriptingPreferences sp, Boolean forScripting)
       場所 Microsoft.SqlServer.Management.Smo.SmoCollectionBase.InitializeChildCollection(Boolean refresh, ScriptingPreferences sp)
       場所 Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_Count()
       場所 Microsoft.SqlServer.Management.Smo.Database.ScriptDbScopedConfigurations(StringCollection query, ScriptingPreferences sp)
       場所 Microsoft.SqlServer.Management.Smo.Database.ScriptAlter(StringCollection alterQuery, ScriptingPreferences sp)
       場所 Microsoft.SqlServer.Management.Smo.SqlSmoObject.AlterImplWorker()
       場所 Microsoft.SqlServer.Management.Smo.SqlSmoObject.AlterImpl()

    ===================================

    データベース 'mirrorTEST' を開けません。復元中です。 (.Net SqlClient Data Provider)

    ------------------------------
    ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=13.00.4001&EvtSrc=MSSQLServer&EvtID=927&LinkId=20476 をクリック

    ------------------------------
    サーバー名: HRSV03
    エラー番号: 927
    重大度: 14
    状態: 2
    行番号: 1


    ------------------------------
    プログラムの場所:

       場所 Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction action, Object execObject, DataSet fillDataSet, Boolean catchException)
       場所 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType, Boolean retry)



    エラー番号を検索すると
    ・TDE環境の際に出ることがある
    ・サービスアカウントがおかしい
    という情報があるのですがサービスアカウントは切り分けの為ドメインのadministratorで行っていますし
    TDE環境ではない(と思いますが確認方法がわからず)と思っています。

    他に何か考えられることや確認すべき個所がありますか?

    ご教授お願いいたします。



    • 編集済み T.Tappu 2017年6月20日 10:48 追記です
    2017年6月20日 10:01

回答

  • 自己解決いたしましたのでご報告です。

    その後OSをWindows 2012 R2にしてみたり
    ミラー側をHyper-Vではなく物理サーバにしてみたり
    ミラー監視をDC兼任ではなくしたり
    ミラー対象のデータベースのレベルを2016から2012にしてみたり
    色々やりましたがことごとくエラーで開始できませんでしたが
    ひょんなことからManagement Studioを2016にしてミラーを構成したら
    何のエラーもなく正常に動作し始めました。

    開始できなかった時のManagement Studioは最新版の
    SQL Server Management Studio 17.1
    でした。

    SQL Serverのインストーラからのリンクでダウンロードできるバージョンですので
    まさかManagement Studioが原因とは思っておりませんでした。

    きっかけは本当に偶然ですが解決できてよかったと思います。


    ミラーリングの設定ができなかった組み合わせ
    SQL Server 2016 with SP1
    SQL Server Management Studio 17.1


    以上、報告でした。
    • 回答としてマーク T.Tappu 2017年6月23日 2:58
    2017年6月23日 2:57