FileTable の作成、変更、および削除Create, Alter, and Drop FileTables

適用対象: はいSQL Server いいえAzure SQL Database いいえAzure Synapse Analytics (SQL DW) いいえParallel Data Warehouse APPLIES TO: YesSQL Server NoAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

新しい FileTable の作成や、既存の FileTable の変更または削除を行う方法について説明します。Describes how to create a new FileTable, or alter or drop an existing FileTable.

FileTable の作成Creating a FileTable

FileTable は、定義済みおよび固定のスキーマがある特殊なユーザー テーブルです。A FileTable is a specialized user table that has a pre-defined and fixed schema. このスキーマは、FILESTREAM データ、ファイルとディレクトリの情報、およびファイルの属性を格納します。This schema stores FILESTREAM data, file and directory information, and file attributes. FileTable スキーマの詳細については、「 FileTable Schema」を参照してください。For information about the FileTable schema, see FileTable Schema.

Transact-SQL または SQL Server Management StudioSQL Server Management Studioを使用して、新しい FileTable を作成することができます。You can create a new FileTable by using Transact-SQL or SQL Server Management StudioSQL Server Management Studio. FileTable には固定スキーマがあるため、列の一覧を指定する必要はありません。Since a FileTable has a fixed schema, you do not have to specify a list of columns. FileTable を作成するため、簡単な構文を指定することができます。The simple syntax for creating a FileTable lets you specify:

  • ディレクトリ名。A directory name. FileTable フォルダー階層において、このテーブル レベルのディレクトリは、データベース レベルで指定されたデータベース ディレクトリの子になると同時に、テーブルに格納されるファイルまたはデータベースの親になります。In the FileTable folder hierarchy, this table-level directory becomes the child of the database directory specified at the database level, and the parent of the files or directories stored in the table.

  • FileTable の Name 列のファイル名に対して使用される照合順序の名前。The name of the collation to be used for file names in the Name column of the FileTable.

  • 自動的に作成される 3 つの主キーと一意の制約で使用する名前。The names to be used for the 3 primary key and unique constraints that are automatically created.

方法:FileTable を作成するHow To: Create a FileTable

Transact-SQL を使用して FileTable を作成するCreate a FileTable by Using Transact-SQL
FileTable を作成するには、AS FileTable オプションを指定して CREATE TABLE (Transact-SQL) ステートメントを呼び出します。Create a FileTable by calling the CREATE TABLE (Transact-SQL) statement with the AS FileTable option. FileTable には固定スキーマがあるため、列の一覧を指定する必要はありません。Since a FileTable has a fixed schema, you do not have to specify a list of columns. 新しい FileTable には次の設定を指定できます。You can specify the following settings for the new FileTable:

  1. FILETABLE_DIRECTORYFILETABLE_DIRECTORY. FileTable に格納されたすべてのファイルおよびディレクトリのルート ディレクトリとなるディレクトリを指定します。Specifies the directory that serves as the root directory for all the files and directories stored in the FileTable. この名前は、データベース内のすべての FileTable ディレクトリ名の中で一意である必要があります。This name should be unique among all the FileTable directory names in the database. 一意性の比較では、現在の照合順序の設定とは関係なく、大文字と小文字は区別されません。Comparison for uniqueness is case-insensitive, regardless of the current collation settings.

    • この値は、 nvarchar(255) のデータ型であり、 Latin1_General_CI_AS_KS_WSの固定の照合順序を使用します。This value has a data type of nvarchar(255) and uses a fixed collation of Latin1_General_CI_AS_KS_WS.

    • 指定するディレクトリ名は、ファイル システムの有効なディレクトリ名に関する要件を満たしている必要があります。The directory name that you provide must comply with the requirements of the file system for a valid directory name.

    • この名前は、データベース内のすべての FileTable ディレクトリ名の中で一意である必要があります。This name should be unique among all the FileTable directory names in the database. 一意性の比較では、現在の照合順序の設定とは関係なく、大文字と小文字は区別されません。Comparison for uniqueness is case-insensitive, regardless of the current collation settings.

    • FileTable を作成するときにディレクトリ名を指定しなかった場合は、FileTable そのものの名前がディレクトリ名として使用されます。If you do not provide a directory name when you create the FileTable, then the name of the FileTable itself is used as the directory name.

  2. FILETABLE_COLLATE_FILENAMEFILETABLE_COLLATE_FILENAME. FileTable の Name 列に適用される照合順序の名前を指定します。Specifies the name of the collation to be applied to the Name column in the FileTable.

    1. 指定した照合順序は、Windows のファイル名のセマンティクスに準拠するために、 大文字と小文字を区別しない 設定にする必要があります。The specified collation must be case-insensitive to comply with Windows file naming semantics.

    2. FILETABLE_COLLATE_FILENAMEの値を指定しない場合、または、 database_defaultを指定した場合は、現在のデータベースの照合順序が列に継承されます。If you do not provide a value for FILETABLE_COLLATE_FILENAME, or you specify database_default, the column inherits the collation of the current database. 現在のデータベースの照合順序で大文字と小文字が区別される場合は、エラーが発生し、 CREATE TABLE 操作は失敗します。If the current database collation is case-sensitive, an error is raised and the CREATE TABLE operation fails.

  3. 自動的に作成される 3 つの主キーと一意の制約で使用する名前を指定することもできます。You can also specify the names to be used for the 3 primary key and unique constraints that are automatically created. 名前を指定しなかった場合、このトピックで後述するように、システムで名前が自動生成されます。If you do not provide names, then the system generates names as described later in this topic.

    • FILETABLE_PRIMARY_KEY_CONSTRAINT_NAMEFILETABLE_PRIMARY_KEY_CONSTRAINT_NAME

    • FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAMEFILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME

    • FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAMEFILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME

使用例Examples

次の例では、新しい FileTable を作成し、 FILETABLE_DIRECTORYFILETABLE_COLLATE_FILENAMEの両方に対してユーザー定義の値を指定します。The following example creates a new FileTable and specifies user-defined values for both FILETABLE_DIRECTORY and FILETABLE_COLLATE_FILENAME.

CREATE TABLE DocumentStore AS FileTable  
    WITH (   
          FileTable_Directory = 'DocumentTable',  
          FileTable_Collate_Filename = database_default  
         );  
GO  

次の例も、新しい FileTable を作成するものです。The following example also creates a new FileTable. ユーザー定義の値が指定されていないため、 FILETABLE_DIRECTORY の値が FileTable の名前に、 FILETABLE_COLLATE_FILENAME の値が database_default になります。また、主キーと一意の制約にはシステムで生成された名前が指定されます。Since user-defined values are not specified, the value of FILETABLE_DIRECTORY becomes the name of the FileTable, the value of FILETABLE_COLLATE_FILENAME becomes database_default, and the primary key and unique contraints receive system-generated names.

CREATE TABLE DocumentStore AS FileTable;  
GO  

SQL Server Management Studio を使用して FileTable を作成するCreate a FileTable by Using SQL Server Management Studio
オブジェクト エクスプローラーで、選択したデータベースのオブジェクトを展開し、 [テーブル] フォルダーを右クリックして [新しい FileTable] をクリックします。In Object Explorer, expand the objects under the selected database, then right-click on the Tables folder, and then select New FileTable.

このオプションを選択すると、新しいスクリプト ウィンドウが開き、FileTable を作成するためにカスタマイズして実行できる Transact-SQL スクリプト テンプレートが表示されます。This option opens a new script window which contains a Transact-SQL script template that you can customize and run to create a FileTable. [クエリ] メニューの [テンプレート パラメーターの値の指定] オプションを使用すると、スクリプトを簡単にカスタマイズできます。Use the Specify Values for Template Parameters option on the Query menu to customize the script easily.

FileTable を作成するための要件と制限Requirements and Restrictions for Creating a FileTable

  • 既存のテーブルは、変更して FileTable に変換することはできません。You cannot alter an existing table to convert it into a FileTable.

  • データベース レベルで前もって指定する親ディレクトリには、null ではない値を指定する必要があります。The parent directory previously specified at the database level must have a non-null value. データベースレベルのディレクトリを指定する方法については、「 FileTable の前提条件の有効化」を参照してください。For information about specifying the database-level directory, see Enable the Prerequisites for FileTable.

  • FileTable には、FILESTREAM 列が含まれているため、有効な FILESTREAM ファイル グループが必要です。A FileTable requires a valid FILESTREAM filegroup, since a FileTable contains a FILESTREAM column. 必要に応じて、FileTable を作成する CREATE TABLE コマンドの一部として、FILESTREAM ファイル グループを指定することもできます。You can optionally specify a valid FILESTREAM filegroup as part of the CREATE TABLE command for creating a FileTable. ファイル グループが指定されていない場合、FileTable はデータベースの既定の FILESTREAM ファイル グループを使用します。If you do not specify a filegroup, then the FileTable uses the default FILESTREAM filegroup for the database. データベースに FILESTREAM ファイル グループがない場合は、エラーが発生します。If the database does not have a FILESTREAM filegroup, then an error is raised.

  • CREATE TABLE...AS FILETABLE ステートメントの一部としてテーブルの制約を作成することはできません。You cannot create a table constraint as part of a CREATE TABLE...AS FILETABLE statement. ただし、制約を追加するには、後で ALTER TABLE ステートメントを使用します。However you can add the constraint later by using an ALTER TABLE statement.

  • tempdb データベースまたはその他のシステム データベースに FileTable を作成することはできません。You cannot create a FileTable in the tempdb database or in any of the other system databases.

  • 一時テーブルとして、FileTable を作成することはできません。You cannot create a FileTable as a temporary table.

FileTable の変更Altering a FileTable

FileTable は、定義済みおよび固定のスキーマがあるため、その列を追加または変更することはできません。Since a FileTable has a pre-defined and fixed schema, you cannot add or change its columns. ただし、カスタム インデックス、トリガー、制約、およびその他のオプションを FileTable に追加することはできます。However, you can add custom indexes, triggers, constraints, and other options to a FileTable.

ALTER TABLE ステートメントを使用して FileTable 名前空間 (システム定義の制約を含む) を有効または無効にする方法の詳細については、「 FileTable の管理」を参照してください。For information about using the ALTER TABLE statement to enable or disable the FileTable namespace, including the system-defined constraints, see Manage FileTables.

方法:FileTable のディレクトリを変更するHow To: Change the Directory for a FileTable

Transact-SQL を使用して FileTable のディレクトリを変更するChange the Directory for a FileTable by Using Transact-SQL
ALTER TABLE ステートメントを呼び出し、有効な新しい値を FILETABLE_DIRECTORY SET オプションに指定します。Call the ALTER TABLE statement and provide a valid new value for the FILETABLE_DIRECTORY SET option.

Example

ALTER TABLE filetable_name  
    SET ( FILETABLE_DIRECTORY = N'directory_name' );  
GO  

SQL Server Management Studio を使用して FileTable のディレクトリを変更するChange the Directory for a FileTable by Using SQL Server Management Studio
オブジェクト エクスプローラーで、FileTable を右クリックし、 [プロパティ] をクリックして、 [テーブルのプロパティ] ダイアログ ボックスを開きます。In Object Explorer, right-click on the FileTable and select Properties to open the Table Properties dialog box. [FileTable] ページで、 [FileTable ディレクトリ名] に新しい値を入力します。On the FileTable page, enter a new value for FileTable directory name.

FileTable を変更するための要件と制限Requirements and Restrictions for Altering a FileTable

  • FILETABLE_COLLATE_FILENAMEの値を変更することはできません。You cannot alter the value of FILETABLE_COLLATE_FILENAME.

  • FileTable のシステムで定義された列を変更、削除、または無効にすることはできません。You cannot change, drop, or disable the system-defined columns of a FileTable.

  • 新しいユーザー列、計算列、または保存される計算列を FileTable に追加することはできません。You cannot add new user columns, computed columns, or persisted computed columns to a FileTable.

FileTable の削除Dropping a FileTable

FileTable を削除するには、DROP TABLE (Transact-SQL) ステートメントの通常の構文を使用します。You can drop a FileTable by using the ordinary syntax for the DROP TABLE (Transact-SQL) statement.

FileTable を削除すると、次のオブジェクトも削除されます。When you drop a FileTable, the following objects are also dropped:

  • FileTable のすべての列に加え、インデックス、制約、トリガーなどテーブルに関連付けられているすべてのオブジェクトが削除されます。All the columns of the FileTable and all the objects associated with the table, such as indexes, constraints, and triggers, are also dropped.

  • FileTable ディレクトリと、その下位にあったサブディレクトリも、データベースの FILESTREAM ファイルとディレクトリ階層から消失します。The FileTable directory and the sub-directories that it contained disappear from the FILESTREAM file and directory hierarchy of the database.

FileTable のファイルの名前空間内に開いているファイル ハンドルがある場合、DROP TABLE コマンドは失敗します。The DROP TABLE command fails if there are open file handles in the FileTable's file namespace. 開いているハンドルを閉じる方法の詳細については、「 FileTable の管理」を参照してください。For information about closing open handles, see Manage FileTables.

FileTable を作成したときに作成されるその他のデータベース オブジェクトOther Database Objects Are Created When You Create a FileTable

新しい FileTable を作成すると、システム定義のインデックスと制約もいくつか作成されます。When you create a new FileTable, some system-defined indexes and constraints are also created. これらのオブジェクトを変更または削除することはできません。これらは、FileTable 自体が削除されると一緒に削除されます。You cannot alter or drop these objects; they disappear only when the FileTable itself is dropped. これらのオブジェクトの一覧を表示するには、カタログ ビュー sys.filetable_system_defined_objects (Transact-SQL) に対してクエリを実行します。To see the list of these objects, query the catalog view sys.filetable_system_defined_objects (Transact-SQL).

--View all objects for all filetables, unsorted  
SELECT * FROM sys.filetable_system_defined_objects;  
GO  
  
--View sorted list with friendly names  
SELECT OBJECT_NAME(parent_object_id) AS 'FileTable', OBJECT_NAME(object_id) AS 'System-defined Object'  
    FROM sys.filetable_system_defined_objects  
    ORDER BY FileTable, 'System-defined Object';  
GO  

新しい FileTable を作成するときに作成されるインデックスIndexes that are created when you create a new FileTable
新しい FileTable を作成すると、次に示すシステム定義のインデックスも作成されます。When you create a new FileTable, the following system-defined indexes are also created:

[列]Columns [インデックスの種類]Index type
[path_locator] ASC[path_locator] ASC 主キー、非クラスター化Primary Key, nonclustered
[parent_path_locator] ASC、[parent_path_locator] ASC,

[name] ASC[name] ASC
一意、非クラスター化Unique, nonclustered
[stream_id] ASC[stream_id] ASC 一意、非クラスター化Unique, nonclustered

新しい FileTable を作成するときに作成される制約Constraints that are created when you create a new FileTable
新しい FileTable を作成すると、次に示すシステム定義の制約も作成されます。When you create a new FileTable, the following system-defined constraints are also created:

制約Constraints 強制Enforces
次の列の既定の制約Default constraints on the following columns:

creation_timecreation_time

is_archiveis_archive

is_directoryis_directory

is_hiddenis_hidden

is_offlineis_offline

is_readonlyis_readonly

is_systemis_system

is_temporaryis_temporary

last_access_timelast_access_time

last_write_timelast_write_time

path_locatorpath_locator

stream_idstream_id
システム定義の既定の制約によって、指定した列に既定値が適用されます。The system-defined default constraints enforce default values for the specified columns.
CHECK 制約Check constraints システム定義の CHECK 制約によって、次の要件が適用されます。The system-defined check constraints enforce the following requirements:

有効なファイル名。Valid filenames.

有効なファイル属性。Valid file attributes.

親オブジェクトをディレクトリにする。Parent object must be a directory.

名前空間の階層は、ファイル操作中にロックされる。Namespace hierarchy is locked during file manipulation.

システム定義の制約の名前付け規則Naming convention for the system-defined constraints
上で説明したシステム定義の制約は、 <constraintType>_<tablename>[_<columnname>]_<uniquifier> という形式で名前が付けられます。The system-defined constraints described above are named in the format <constraintType>_<tablename>[_<columnname>]_<uniquifier> where:

  • <constraint_type> は CK (CHECK 制約)、DF (DEFAULT 制約)、FK (外部キー)、PK (主キー)、または UQ (一意制約) です。<constraint_type> is CK (check constraint), DF (default constraint), FK (foreign key), PK (primary key), or UQ (unique constraint).

  • <uniquifier> は、名前を一意にする、システムによって生成された文字列です。<uniquifier> is a system-generated string to make the name unique. この文字列には、通常、FileTable の名前と一意の識別子が含まれています。This string may contain the FileTable name and a unique identifier.

参照See Also

FileTable の管理Manage FileTables