FileTables (SQL Server)

適用対象:SQL Server

FileTable 機能は、SQL Server に格納されているファイル データに対して Windows ファイル名前空間のサポートと Windows アプリケーションとの互換性を提供します。 FileTable により、アプリケーションは、ストレージとデータ管理コンポーネントを統合し、非構造化データおよびメタデータに対する統合 SQL Server サービス (フルテキスト検索、セマンティック検索など) を提供できます。

つまり、ファイルおよびドキュメントを FileTable と呼ばれる SQL Server の特殊なテーブルに保存しておき、ファイル システムに格納されているかのように、Windows アプリケーションからこれらのファイルおよびドキュメントにアクセスできるということです。このとき、クライアント アプリケーションに変更を加える必要はありません。

FileTable の機能は、SQL Server の FILESTREAM テクノロジをベースとして構築されています。 FILESTREAM の詳細については、「FILESTREAM (SQL Server)」を参照してください。

FileTable 機能の利点

FileTable 機能の目的は、次のとおりです。

  • SQL Server データベース内に格納されたファイル データに対する Windows API の互換性。 Windows API の互換性は、次のとおりです。

    • 非トランザクション ストリーム アクセスと FILESTREAM データのインプレース更新。

    • ディレクトリおよびファイルの階層構造の名前空間。

    • 作成日や更新日などのファイル属性の保管。

    • Windows ファイルおよびディレクトリ管理 API のサポート。

  • FILESTREAM およびファイル属性データに対する管理ツール、サービス、リレーショナル クエリなど、他の SQL Server 機能との互換性。

このようにして、FileTable は、現在ファイル サーバーにファイルとして格納されている非構造化データを SQL Server で保管および管理するうえでの大きな障壁を取り除きます。 企業は、このデータをファイル サーバーから FileTable に移動して、SQL Server が提供する統合管理およびサービスを活用できます。 それと同時に、ファイル システムでこのデータをファイルとして認識する既存の Windows アプリケーションとの互換性を維持することもできます。

FileTable とは

SQL Server は、データベース内のファイルとディレクトリのストレージを必要とするアプリケーションに対して、Windows API の互換性および非トランザクション アクセスによって、特殊な ファイルのテーブル( FileTableと呼ばれます) を提供します。 FileTable は、FILESTREAM データ、ファイルとディレクトリの階層の情報、ファイル属性を保存するための定義済みのスキーマを持つ、特殊なユーザー テーブルです。

FileTable には、次の機能が含まれています。

  • FileTable は、ディレクトリおよびファイルの階層を表します。 含まれるディレクトリおよびファイルの両方について、その階層のすべてのノードに関連するデータを格納します。 この階層は、FileTable を作成するときに指定するルート ディレクトリから始まります。

  • FileTable のどの行も、ファイルまたはディレクトリを表します。

  • 各行には次のアイテムが含まれます。 FileTable のスキーマの詳細については、「 FileTable スキーマ」を参照してください。

    • ストリーム データの file_stream 列と stream_id (GUID) 識別子。 (file_stream 列はディレクトリでは NULL です。)

    • 現在のアイテム (ファイルまたはディレクトリ) およびディレクトリ階層を表して保持するための、path_locator 列と parent_path_locator 列の両方。

    • ファイル I/O API で便利な、作成日や更新日などの 10 のファイル属性。

    • ファイルやドキュメント全体に対するフルテキスト検索およびセマンティック検索をサポートする型列。

  • FileTable は、ファイル名前空間のセマンティクスを維持するため、特定のシステム定義の制約とトリガーを適用します。

  • 非トランザクション アクセスでデータベースが構成されている場合、FileTable で表されるファイルおよびディレクトリの階層は、SQL Server インスタンスに構成された FILESTREAM 共有の下で公開されます。 これにより、Windows アプリケーションはファイル システムにアクセスできるようになります。

FileTable のその他の特性

  • FileTable に格納されているファイルおよびディレクトリ データは、Windows API ベースのアプリケーションが非トランザクション ファイル アクセスを行うための Windows 共有によって公開されます。 Windows アプリケーションでは、これは通常のファイルおよびディレクトリの共有のように見えます。 アプリケーションは、豊富な Windows API のセットを使用して、この共有のファイルおよびディレクトリを管理できます。

  • 共有によって公開されるディレクトリ階層は、FileTable 内で保持されている、純粋に論理的なディレクトリ構造です。

  • Windows 共有によるファイルまたはディレクトリの作成または変更の呼び出しは、SQL Server コンポーネントによってインターセプトされ、FileTable の対応するリレーショナル データに影響します。

  • Windows API の操作は、本質的には非トランザクションであり、ユーザー トランザクションに関連しません。 ただし、通常のテーブルの FILESTREAM 列の場合のように、FileTable に格納されている FILESTREAM データへのトランザクション アクセスは、完全にサポートされます。 複数の接続から頻繁にファイルを変更し、適切なファイル保護を確保する必要がある場合は、Windows API レベルの排他ファイル ロックではなく、OpenSqlFilestream() 経由のトランザクション FILESTREAM アクセスを使用します。

  • FileTable に対して、通常の Transact-SQL アクセスによってクエリおよび更新を実行することもできます。 また、FileTable は、SQL Server 管理ツールや、バックアップなどの機能と統合されています。

  • データベース メールを介してメールの要求を送信し、FILESTREAM ディレクトリ内のファイルを添付することはできません (そのため FileTable 内のファイルも添付できません)。 ファイル システム フィルター ドライバーの RsFx0420 は、FILESTREAM フォルダーに出入りする着信 I/O 要求を検査します。 SQLServer 実行可能ファイルと FILESTREAM コードのいずれの要求でもない場合、その要求は明示的に許可されません。

FileTable の使用に関するその他の考慮事項

管理に関する考慮事項

FILESTREAM と FileTable について

FileTable は FILESTREAM とは別に構成します。 したがって、非トランザクション アクセスの有効化や FileTable の作成を行うことなく、FILESTREAM 機能を使用し続けることができます。

FileTable を介した場合を除き、FILESTREAM データへの非トランザクション アクセスは存在しません。 そのため、非トランザクション アクセスを有効にしても、既存の FILESTREAM 列およびアプリケーションの動作は影響を受けません。

FileTable と非トランザクション アクセスについて

非トランザクション アクセスは、データベース レベルで有効または無効にできます。

非トランザクション アクセスをオフにしたり、読み取り専用または完全な読み取り/書き込みアクセスを有効にしたりすることによって、データベース レベルで非トランザクション アクセスを構成または調整することができます。

FileTable ではメモリ マップ ファイルはサポートされていません

FileTable ではメモリ マップ ファイルはサポートされていません。 メモ帳とペイントの 2 つは、メモリ マップ ファイルを使用するアプリケーションの一般的な例です。 これらのアプリケーションを SQL Server と同じコンピューターで使用して、FileTable に保存されているファイルを開くことはできません。 ただし、これらのアプリケーションをリモート コンピューターで使用すると、メモリ マッピング機能が使用されないため、FileTable に保存されているファイルを開くことができます。