Creare, modificare e rilasciare FileTablesCreate, Alter, and Drop FileTables

Viene descritto come creare una nuova tabella FileTable o modificarne o eliminarne una esistente.Describes how to create a new FileTable, or alter or drop an existing FileTable.

Creazione di una tabella FileTable Creating a FileTable

Una tabella FileTable è una tabella utente specializzata con uno schema predefinito e fisso.A FileTable is a specialized user table that has a pre-defined and fixed schema. In questo schema sono archiviati dati FILESTREAM, informazioni su file e directory e attributi dei file.This schema stores FILESTREAM data, file and directory information, and file attributes. Per informazioni sullo schema FileTable, vedere FileTable Schema.For information about the FileTable schema, see FileTable Schema.

È possibile creare una nuova tabella FileTable tramite Transact-SQL o SQL Server Management StudioSQL Server Management Studio.You can create a new FileTable by using Transact-SQL or SQL Server Management StudioSQL Server Management Studio. Poiché una tabella FileTable ha uno schema fisso, non è necessario specificare un elenco di colonne.Since a FileTable has a fixed schema, you do not have to specify a list of columns. La sintassi semplice per la creazione di una tabella FileTable consente di specificare gli elementi seguenti:The simple syntax for creating a FileTable lets you specify:

  • Nome di directory.A directory name. Nella gerarchia di cartelle FileTable questa directory a livello di tabella diventa il figlio della directory dei database specificata a livello di database e il padre delle directory o dei file archiviati nella tabella.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.

  • Nome delle regole di confronto da utilizzare per i nomi di file nella colonna Name della tabella FileTable.The name of the collation to be used for file names in the Name column of the FileTable.

  • Nomi da utilizzare per i 3 vincoli di chiave primaria e univoci creati automaticamente.The names to be used for the 3 primary key and unique constraints that are automatically created.

Procedura: Creazione di una tabella FileTable How To: Create a FileTable

Creare una tabella FileTable tramite Transact-SQLCreate a FileTable by Using Transact-SQL
Creare una tabella FileTable chiamando l'istruzione CREATE TABLE (Transact-SQL) con l'opzione AS FileTable.Create a FileTable by calling the CREATE TABLE (Transact-SQL) statement with the AS FileTable option. Poiché una tabella FileTable ha uno schema fisso, non è necessario specificare un elenco di colonne.Since a FileTable has a fixed schema, you do not have to specify a list of columns. È invece possibile specificare le impostazioni seguenti per la nuova tabella FileTable:You can specify the following settings for the new FileTable:

  1. FILETABLE_DIRECTORY.FILETABLE_DIRECTORY. Specifica la directory che serve come directory radice per tutti i file e le directory archiviata in FileTable.Specifies the directory that serves as the root directory for all the files and directories stored in the FileTable. Questo nome deve essere univoco tra tutti i nomi di directory FileTable nel database.This name should be unique among all the FileTable directory names in the database. Nel confronto dell'univocità non viene applicata la distinzione tra maiuscole e minuscole, indipendentemente dalle impostazioni delle regole di confronto correnti.Comparison for uniqueness is case-insensitive, regardless of the current collation settings.

    • Questo valore è di tipo nvarchar(255) e usa regole di confronto fisse 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.

    • Il nome di directory specificato deve essere conforme ai requisiti del file system relativi ai nomi di directory validi.The directory name that you provide must comply with the requirements of the file system for a valid directory name.

    • Questo nome deve essere univoco tra tutti i nomi di directory FileTable nel database.This name should be unique among all the FileTable directory names in the database. Nel confronto dell'univocità non viene applicata la distinzione tra maiuscole e minuscole, indipendentemente dalle impostazioni delle regole di confronto correnti.Comparison for uniqueness is case-insensitive, regardless of the current collation settings.

    • Se non si fornisce un nome di directory quando si crea la tabella FileTable, allora il suo nome viene utilizzato come nome di directory.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_FILENAME.FILETABLE_COLLATE_FILENAME. Specifica il nome delle regole di confronto da applicare alla colonna Name della tabella FileTable.Specifies the name of the collation to be applied to the Name column in the FileTable.

    1. Nelle regole di confronto specificate deve essere fatta una distinzione tra maiuscole e minuscole affinché siano conformi alla semantica di denominazione file di Windows.The specified collation must be case-insensitive to comply with Windows file naming semantics.

    2. Se non si specifica un valore per FILETABLE_COLLATE_FILENAMEo si specifica database_default, la colonna eredita le regole di confronto del database corrente.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. Se nelle regole di confronto del database corrente viene applicata la distinzione tra maiuscole e minuscole, viene generato un errore e l'operazione CREATE TABLE non viene completata.If the current database collation is case-sensitive, an error is raised and the CREATE TABLE operation fails.

  3. È inoltre possibile specificare i nomi da utilizzare per i 3 vincoli di chiave primaria e univoci creati automaticamente.You can also specify the names to be used for the 3 primary key and unique constraints that are automatically created. Se non si forniscono nomi, vengono generati dal sistema come descritto più avanti in questo argomento.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

    EsempiExamples

    Nell'esempio seguente viene creata una nuova tabella FileTable e vengono specificati valori definiti dall'utente sia per FILETABLE_DIRECTORY che per FILETABLE_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  

Nell'esempio seguente viene inoltre creata una nuova tabella FileTable.The following example also creates a new FileTable. Poiché non sono specificati valori definiti dall'utente, il valore di FILETABLE_DIRECTORY diventa il nome della tabella FileTable, il valore di FILETABLE_COLLATE_FILENAME diventa database_default e tramite i vincoli di chiave primaria e univoci si ricevono i nomi generati dal sistema.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  

Creare una tabella FileTable tramite SQL Server Management StudioCreate a FileTable by Using SQL Server Management Studio
In Esplora oggetti espandere gli oggetti inclusi nel database selezionato, fare clic con il pulsante destro del mouse sulla cartella Tabelle , quindi scegliere Nuova FileTable.In Object Explorer, expand the objects under the selected database, then right-click on the Tables folder, and then select New FileTable.

Verrà visualizzata una nuova finestra di script contenente un modello di script Transact-SQL, che è possibile personalizzare ed eseguire per creare una tabella FileTable.This option opens a new script window which contains a Transact-SQL script template that you can customize and run to create a FileTable. Per personalizzare facilmente lo script, utilizzare l'opzione Imposta valori per parametri modello dal menu Query .Use the Specify Values for Template Parameters option on the Query menu to customize the script easily.

Requisiti e restrizioni per la creazione di una tabella FileTable Requirements and Restrictions for Creating a FileTable

  • Non è possibile modificare una tabella esistente per convertirla in tabella FileTable.You cannot alter an existing table to convert it into a FileTable.

  • La directory padre specificata precedentemente a livello di database deve includere un valore diverso da Null.The parent directory previously specified at the database level must have a non-null value. Per informazioni sulla specifica della directory a livello di database, vedere Abilitazione dei prerequisiti per la tabella FileTable.For information about specifying the database-level directory, see Enable the Prerequisites for FileTable.

  • Poiché una tabella FileTable contiene una colonna FILESTREAM, tale tabella richiede un filegroup FILESTREAM valido.A FileTable requires a valid FILESTREAM filegroup, since a FileTable contains a FILESTREAM column. È eventualmente possibile specificare un filegroup FILESTREAM valido come parte del comando CREATE TABLE per la creazione di una tabella FileTable.You can optionally specify a valid FILESTREAM filegroup as part of the CREATE TABLE command for creating a FileTable. Se non si specifica un filegroup, la tabella FileTable utilizza il filegroup FILESTREAM predefinito per il database.If you do not specify a filegroup, then the FileTable uses the default FILESTREAM filegroup for the database. Se il database non include un filegroup FILESTREAM, viene generato un errore.If the database does not have a FILESTREAM filegroup, then an error is raised.

  • Non è possibile creare un vincolo di tabella come parte di un'istruzione CREATE TABLE…AS FILETABLE .You cannot create a table constraint as part of a CREATE TABLE…AS FILETABLE statement. Sarà tuttavia possibile aggiungere il vincolo in seguito utilizzando un'istruzione ALTER TABLE .However you can add the constraint later by using an ALTER TABLE statement.

  • Non è possibile creare una tabella FileTable nel database tempdb o in qualsiasi altro database di sistema.You cannot create a FileTable in the tempdb database or in any of the other system databases.

  • Non è possibile creare una tabella FileTable come tabella temporanea.You cannot create a FileTable as a temporary table.

Modifica di una tabella FileTable Altering a FileTable

Poiché una tabella FileTable ha uno schema predefinito e fisso, non è possibile aggiungere colonne o modificarle.Since a FileTable has a pre-defined and fixed schema, you cannot add or change its columns. È invece possibile aggiungere indici, trigger, vincoli e altri elementi personalizzati a una tabella FileTable.However, you can add custom indexes, triggers, constraints, and other options to a FileTable.

Per informazioni sull'uso dell'istruzione ALTER TABLE per abilitare o disabilitare lo spazio dei nomi FileTable, inclusi i vincoli definiti dal sistema, vedere Gestione di tabelle FileTable.For information about using the ALTER TABLE statement to enable or disable the FileTable namespace, including the system-defined constraints, see Manage FileTables.

Procedura: Modifica della directory per una tabella FileTable How To: Change the Directory for a FileTable

Modificare la directory per una tabella FileTable tramite Transact-SQLChange the Directory for a FileTable by Using Transact-SQL
Chiamare l'istruzione ALTER TABLE e specificare un nuovo valore valido per l'opzione SET di FILETABLE_DIRECTORY .Call the ALTER TABLE statement and provide a valid new value for the FILETABLE_DIRECTORY SET option.

EsempioExample

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

Modificare la directory per una tabella FileTable tramite SQL Server Management StudioChange the Directory for a FileTable by Using SQL Server Management Studio
In Esplora oggetti fare clic con il pulsante destro del mouse sulla tabella FileTable e selezionare Proprietà per aprire la finestra di dialogo Proprietà tabella .In Object Explorer, right-click on the FileTable and select Properties to open the Table Properties dialog box. Nella pagina FileTable immettere un nuovo valore per Nome di directory FileTable.On the FileTable page, enter a new value for FileTable directory name.

Requisiti e restrizioni per la modifica di una tabella FileTable Requirements and Restrictions for Altering a FileTable

  • Non è possibile modificare il valore di FILETABLE_COLLATE_FILENAME.You cannot alter the value of FILETABLE_COLLATE_FILENAME.

  • Non è possibile modificare, eliminare o disabilitare le colonne definite dal sistema di una tabella FileTable.You cannot change, drop, or disable the system-defined columns of a FileTable.

  • Non è possibile aggiungere nuove colonne utente, colonne calcolate o colonne calcolate persistenti a una tabella FileTable.You cannot add new user columns, computed columns, or persisted computed columns to a FileTable.

Eliminazione di una tabella FileTable Dropping a FileTable

È possibile eliminare una tabella FileTable tramite la sintassi ordinaria dell'istruzione DROP TABLE (Transact-SQL).You can drop a FileTable by using the ordinary syntax for the DROP TABLE (Transact-SQL) statement.

Quando si elimina una tabella FileTable, anche i seguenti oggetti vengono eliminati:When you drop a FileTable, the following objects are also dropped:

  • Vengono inoltre rilasciate tutte le colonne della tabella FileTable e tutti gli oggetti a essa associati, come gli indici, i vincoli e i trigger.All the columns of the FileTable and all the objects associated with the table, such as indexes, constraints, and triggers, are also dropped.

  • La directory FileTable e le sottodirectory in essa contenute scompaiono dal file FILESTREAM e dalla gerarchia di directory del database.The FileTable directory and the sub-directories that it contained disappear from the FILESTREAM file and directory hierarchy of the database.

    Il comando DROP TABLE ha esito negativo se nello spazio dei nomi dei file della tabella FileTable sono presenti handle di file aperti.The DROP TABLE command fails if there are open file handles in the FileTable’s file namespace. Per informazioni sulla chiusura di handle aperti, vedere Gestione di tabelle FileTable.For information about closing open handles, see Manage FileTables.

Quando si crea una tabella FileTable, vengono creati altri oggetti di database Other Database Objects Are Created When You Create a FileTable

Quando si crea una nuova tabella FileTable, vengono creati anche alcuni indici e vincoli definiti dal sistema.When you create a new FileTable, some system-defined indexes and constraints are also created. Non è possibile modificare o eliminare questi oggetti, che verranno eliminato solo all'eliminazione della tabella FileTable stessa.You cannot alter or drop these objects; they disappear only when the FileTable itself is dropped. Per visualizzare l'elenco di questi oggetti, eseguire una query sulla vista del catalogo 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  

Indici creati durante la creazione di una nuova tabella FileTableIndexes that are created when you create a new FileTable
Quando si crea una nuova tabella FileTable, vengono creati anche gli indici definiti dal sistema seguenti:When you create a new FileTable, the following system-defined indexes are also created:

ColonneColumns Tipo di indiceIndex type
[path_locator] ASC[path_locator] ASC Chiave primaria, non clusterPrimary Key, non-clustered
[parent_path_locator] ASC,[parent_path_locator] ASC,

[name] ASC[name] ASC
Univoco, non clusterUnique, non-clustered
[stream_id] ASC[stream_id] ASC Univoco, non clusterUnique, non-clustered

Vincoli creati durante la creazione di una nuova tabella FileTableConstraints that are created when you create a new FileTable
Quando si crea una nuova tabella FileTable, vengono creati anche i vincoli definiti dal sistema seguenti:When you create a new FileTable, the following system-defined constraints are also created:

VincoliConstraints ImposizioniEnforces
Vincoli predefiniti sulle seguenti colonne: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
I vincoli predefiniti definiti dal sistema applicano valori predefiniti per le colonne specificate.The system-defined default constraints enforce default values for the specified columns.
Vincoli CHECKCheck constraints I vincoli CHECK definiti dal sistema applicano i requisiti seguenti:The system-defined check constraints enforce the following requirements:

Nomi file validi.Valid filenames.

Attributi di file validi.Valid file attributes.

L'oggetto padre deve essere una directory.Parent object must be a directory.

La gerarchia dello spazio dei nomi è bloccata durante la modifica dei file.Namespace hierarchy is locked during file manipulation.

Convenzione di denominazione per i vincoli definiti dal sistemaNaming convention for the system-defined constraints
I vincoli definiti dal sistema descritti in precedenza vengono denominati usando il formato <tipovincolo><nometabella>[\<nomecolonna>]_<identificatoreunivoco>, dove:The system-defined constaints described above are named in the format <constraintType><tablename>[\<columnname>]_<uniquifier> where:

  • è CK (vincolo CHECK), DF (vincolo DEFAULT), FK (chiave esterna), PK (chiave primaria) o UQ (vincolo UNIQUE). is CK (check constraint), DF (default constraint), FK (foreign key), PK (primary key), or UQ (unique constraint).

  • <identificatoreunivoco è una stringa generata dal sistema per specificare un nome univoco.<uniquifier> is a system-generated string to make the name unique. È possibile che questa stringa contenga il nome della tabella FileTable e un identificatore univoco.This string may contain the FileTable name and a unique identifier.

Vedere ancheSee Also

Gestione di tabelle FileTableManage FileTables