none
Windows Server 2012R2 クラスター上のSQL Server 2012のFileStreamについて RRS feed

  • 質問

  • お世話になっております。

    Windows Server 2012R2で2Nodeのクラスターを組み、SQL Server 2012(SP2)をインストールしております。
    別のWebサーバーからリモートでアクセスしてデータ更新を行うつもりでいます。

    ManagementStudioからインスタンスにアクセスが出来、Webサイトからデータ閲覧/更新が出来ているので
    DBエンジンについては問題なく動作しているようなのですが、FileStreamの更新が出来ない状態となっております。
    SQLサーバー構成マネージャの「FileStream」タブの設定は出来ており、filestream_access_levelも2に設定出来ております。
    同様のクラスター構成でWindows Server 2008R2, SQL Server 2012 の構成では問題なくFileStreamの使用が出来ているため
    Windows Server 2012R2クラスターの構成に問題があると推測していますが解決できずにおります。

    クラスターイベントにはFile Shareのリソース(FileStreamの実体?)が失敗しているイベントが記録されています(イベントID:1069)

    また、SQL Server 2012のインストールにFileStreamを含める構成ではインストールエラーが発生したため、インストール時はFileStreamを含めず、
    DBエンジンのインストール終了後SP2を当ててから構成マネージャーを用いてFileStreamを有効にしておりました。

    <https://connect.microsoft.com/SQLServer/feedback/details/739809/sql-server-2012-filestream-error-blocks-fci-install-on-windows-server-2008-beta>
    上記ページで類似の現象が報告されていると思っていますが、これ以上の情報が掴めていない状況です。
    次善の策として、SQL Server 2012 SP2のインストーラを入手して再度インストールを行う予定でいます。

    追加情報としては、
    クラスターではない通常のインストールでは問題なくFileStreamがインストール/使用できています。
    (SQL Server 2012/Windows Server 2012R2)

    問題点、解決方法など提案頂ければ幸いです。

    よろしくお願いいたします。


    • 編集済み Koba33 2015年7月28日 10:52
    2015年7月23日 14:18

回答

  • 本件、自己解決できましたので記載させて頂きます。

    以下、Clusterの構成まで出来ていることが前提です
    1. Windows Server 2012 R2 Failover Cluster に対してSQL Server 2012 with SP2をFileStreamオプション有でインストールする
      (インスタンス:SQLHoge, Windows共有名:Hoge)
      ※SQL Server 2012 のインストーラを用いる場合はFileStreamオプションを除いてインストールし、終了後にSP2を当ててから
      構成マネージャーでFileStreamを有効にしてサービスを再起動する
    2. SQL Server Management Studioを起動して、filestream_access_levelを2に設定する
      また、検証用のFileStream型のTableを持つDBを復元しておく
    3. Failover Cluster ManagerのSQL Server役割(SQL Server(SQLHoge))を右クリックして「ファイル共有の追加」を選択して「新しい共有ウィザード」を起動する
    4. 「新しい共有ウィザード」のプロファイルの選択で、「SMB共有-アプリケーション」を選択する
    5. 「新しい共有ウィザード」の共有の場所で、サーバー名としてSQLサーバーのコンピューターアカウントを選択し、 共有の場所はBLOBを格納したいボリュームを選択する(例えばFドライブ)
      ※予めClusterサービスに記憶域を追加する必要あり
    6. 「新しい共有ウィザード」の共有名の指定で、共有名としてFileStreamの構成時に設定したWindows共有名「Hoge」を入力する
      以下、自動で設定されます
        ※共有するローカルパス:F:\Shares\Hoge → この設定ではNGですが、ここではどうにもならないのでこのまま
        ※共有するリモートパス:\\[ComputerAccount]\Hoge
    7. 「新しい共有ウィザード」のアクセス許可で、リモートアクセスするWindowsアカウントを追加登録
    8. 「新しい共有ウィザード」の設定内容を確認して作成
    9. Failover Cluster ManagerのSQL Server役割(SQL Server(SQLHoge)で共有タブが見えるようになり、上記で設定した構成内容が反映されていることが確認できます。
      しかし、共有するローカルパスの設定がこのままではダメなのでSQL Serverのサービスを再起動する
    10. SQL Server のサービスを再起動するとClusterのFileStreamリソースが「オフライン」になるので「オンライン」に変更する
      すると、共有するローカルパスが「\\?GLOBALROOT\Device\RsFx0201\<localmachine>\Hoge」となりリモートでFileStreamの読書きが出来るようになります。

    私はずっとFileStreamの設定と「新しい共有ウィザード」の関係性が理解できておらず時間がかかってしまいました。
    PS等のコマンドラインを使えばもっとシンプルに設定出来そうな気がしますが知見が無かったためGUIで対処しました。

    以上、参考まで


    • 回答としてマーク Koba33 2015年8月24日 18:52
    • 編集済み Koba33 2015年9月8日 4:08
    2015年8月24日 18:51