Always On 可用性グループで FILESTREAM と FileTable を使用する
適用対象: SQL Server - Windows のみ
この記事には、SQL Server の Always On 可用性グループでの FILESTREAM 機能と FileTable 機能の使用に関する情報が記載されています。
すべての FILESTREAM 機能がサポートされています。 フェールオーバー後、FILESTREAM データは読み取り可能なセカンダリ レプリカと新しいプライマリの両方でアクセスできます。
FileTable 機能は部分的にサポートされています。 フェールオーバー後、FileTable データはプライマリ レプリカ上でアクセスできますが、読み取り可能なセカンダリ レプリカ上ではアクセスできません。
前提条件
- FileTable を使用するかどうかにかかわらず、FILESTREAM を使用するデータベースを可用性グループに追加する前に、その可用性グループの可用性レプリカをホストするすべてのサーバー インスタンスで FILESTREAM が有効になっていることを確認してください。 詳細については、「 Enable and Configure FILESTREAM」をご覧ください。
- Windows Server 2012 ベースのフェールオーバー クラスターでは、Virtual Network 名(VNN) を使用してファイル共有にアクセスするには、「Windows Server 2012 ベースのフェールオーバー クラスターで FILESTREAM と FileTable 機能を使用する場合は、VNN FILESTREAM 共有にアクセスできません」で説明されている修正プログラムを適用する必要があります。 この修正プログラムは、Microsoft Update カタログでも入手できます。
FILESTREAM および FileTable アクセスでのVirtual Network 名 (VNN) の使用
SQL Serverのインスタンスで FILESTREAM を有効にすると、インスタンス レベルでの共有が作成され、FILESTREAM データにアクセスできるようになります。 この共有にアクセスするには、次の形式でコンピューター名を使用します。
\\<computer_name>\<filestream_share_name>
ただし Always On 可用性グループでは、コンピューターの名前が仮想ネットワーク名 (VNN) を使用して仮想化されています。 コンピューターが可用性グループのプライマリ レプリカであり、可用性グループ内のデータベースに FILESTREAM データが格納されている場合、VNN スコープの共有も作成され、FILESTREAM データにアクセスできるようになります。 これは、Transact-SQL による FILESTREAM データへのアクセスには影響しません。 ただし、ファイル システム API を使用するアプリケーションは、次の形式のパスを持つ VNN スコープの共有を使用する必要があります。
\\<VNN>\<filestream_share_name>
この VNN スコープの共有は、次のいずれかのイベントが発生するときに作成されます。
プライマリ レプリカ上にある Always On 可用性グループに FILESTREAM データを格納するデータベースを追加します。 この場合、共有
\\<computer_name>\<filestream_share_name>
は既に存在します。 共有\\<VNN>\<filestream_share_name>
が作成されます。可用性グループが含まれるプライマリ レプリカ上で、ファイル I/O ストリーム アクセスに対して FILESTREAM を有効にします。 次の共有が作成されます。
\\<computer_name>\<filestream_share_name>
。\\<VNN1>\<filestream_share_name>
(可用性グループ 1 向け)。\\<VNN2>\<filestream_share_name>
(可用性グループ 2 向け)。
これらの VNN スコープの共有は、すべてのセカンダリ レプリカにも反映されます。
FILESTREAM データまたは FileTable データを格納するデータベースが Always On 可用性グループに属する場合、次の処理が行われます。
FILESTREAM および FileTable 関数は、コンピューター名ではなく仮想ネットワーク名 (VNN) のやり取りを行います。 関数の詳細情報については、「FILESTREAM および FileTable 関数 (Transact-SQL)」を参照してください。
ファイル システム API を介した FILESTREAM または FileTable データへのすべてのアクセスでは、コンピューター名ではなく VNN を使用する必要があります。
データベースが可用性グループの一部である場合、アプリケーションで \\<computer_name>\<filestream_share_name>
の形式のコンピューター名を使用して共有にアクセスしようとすると、エラーが発生します。
データベースが可用性グループの一部ではない場合、アプリケーションで VNN スコープのパスを使用して共有にアクセスしようとすると、要求が正常に終了します。 この場合、仮想ネットワーク名は、コンピューター名に解決されます。 ただし、可用性グループが削除されると VNN スコープのパスの動作が停止するため、この使用法はお勧めしません。