Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Describe cómo crear una nueva FileTable. O bien, modificar o quitar una FileTable existente.
Crear una FileTable
Una FileTable es una tabla de usuario especializada que tiene un esquema predefinido y fijo. Este esquema almacena los datos FILESTREAM, la información de directorios y archivos, así como los atributos de archivos. Para obtener información acerca del esquema de FileTable, vea FileTable Schema.
Puede crear una nueva FileTable con Transact-SQL o SQL Server Management Studio. Dado que fileTable tiene un esquema fijo, no es necesario especificar una lista de columnas. La sintaxis simple para crear una FileTable permite especificar:
Un nombre de directorio. En la jerarquía de carpetas de FileTable, este directorio de nivel de tabla se convierte en el elemento secundario del directorio de la base de datos especificado en el nivel de base de datos y en el elemento primario de los archivos o directorios almacenados en la tabla.
Nombre de la intercalación que se va a usar para los nombres de archivo de la
Namecolumna de FileTable.Los nombres que se van a utilizar para la clave principal 3 y las restricciones únicas que se crean automáticamente.
Creación de una FileTable con Transact-SQL
Cree una FileTable llamando a la instrucción CREATE TABLE con la AS FILETABLE opción . Dado que fileTable tiene un esquema fijo, no es necesario especificar una lista de columnas. Puede especificar los siguientes valores para la nueva FileTable:
FILETABLE_DIRECTORY. Especifica el directorio que actúa como directorio raíz de todos los archivos y directorios almacenados en la FileTable. Este nombre debe ser único entre todos los nombres de directorio de FileTable en la base de datos. La comparación de unicidad no distingue mayúsculas de minúsculas, independientemente de la configuración de intercalación actual.Este valor tiene un tipo de datos de nvarchar(255) y usa una intercalación fija de
Latin1_General_CI_AS_KS_WS.El nombre de directorio que proporcione debe cumplir los requisitos del sistema de archivos de un nombre de directorio válido.
Este nombre debe ser único entre todos los nombres de directorio de FileTable en la base de datos. La comparación de unicidad no distingue mayúsculas de minúsculas, independientemente de la configuración de intercalación actual.
Si no proporciona un nombre de directorio al crear la FileTable, el nombre de FileTable se usa como nombre de directorio.
FILETABLE_COLLATE_FILENAME. Especifica el nombre de la intercalación que se va a aplicar a la columnaNamede FileTable.La intercalación especificada no debe distinguir mayúsculas de minúsculas para cumplir la semántica de nomenclatura de archivo de Windows.
Si no proporciona un valor para
FILETABLE_COLLATE_FILENAME, o especifica un valor paradatabase_default, la columna hereda la intercalación actual de la base de datos. Si la intercalación de la base de datos actual distingue mayúsculas de minúsculas, se genera un error y la operaciónCREATE TABLEfalla.
También puede especificar los nombres que se van a utilizar para la clave principal 3 y las restricciones únicas que se crean automáticamente. Si no proporciona nombres, el sistema genera nombres como se describe más adelante en este artículo.
FILETABLE_PRIMARY_KEY_CONSTRAINT_NAMEFILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAMEFILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME
Examples
En el ejemplo siguiente se crea una nueva FileTable y se especifican valores definidos por el usuario tanto para FILETABLE_DIRECTORY como para FILETABLE_COLLATE_FILENAME.
CREATE TABLE DocumentStore AS FILETABLE
WITH (
FILETABLE_DIRECTORY = 'DocumentTable',
FILETABLE_COLLATE_FILENAME = database_default
);
GO
El siguiente ejemplo también crea una nueva FileTable. Dado que no se especifican valores definidos por el usuario, el valor de FILETABLE_DIRECTORY se convierte en el nombre de FileTable, el valor de FILETABLE_COLLATE_FILENAME se convierte en database_default y las restricciones principales y únicas reciben nombres generados por el sistema.
CREATE TABLE DocumentStore AS FILETABLE;
GO
Creación de una FileTable con SQL Server Management Studio
En el Explorador de objetos, expanda los objetos situados debajo de la base de datos seleccionada, haga clic con el botón derecho en la carpeta Tablas y, luego, seleccione Nueva FileTable.
Esta opción abre una nueva ventana de script, que contiene una plantilla de script de Transact-SQL que puede personalizar y ejecutar para crear una FileTable. Use la opción Especificar valores para parámetros de plantilla en el menú Consulta para personalizar el script fácilmente.
Requisitos y restricciones para crear una FileTable
No se puede modificar una tabla existente para convertirla en una FileTable.
El directorio primario especificado anteriormente en el nivel de base de datos debe tener un valor distinto de NULL. Para obtener información sobre cómo especificar el directorio de nivel de base de datos, consulte Habilitación de los requisitos previos para FileTable.
Una FileTable requiere un grupo de archivos FILESTREAM válido, ya que una FileTable contiene una columna FILESTREAM. Opcionalmente, puede especificar un grupo de archivos FILESTREAM válido como parte del
CREATE TABLEcomando para crear una FileTable. Si no especifica un grupo de archivos, FileTable usa el grupo de archivos FILESTREAM predeterminado para la base de datos. Si la base de datos no tiene un grupo de archivos FILESTREAM, se genera un error.No se puede crear una restricción de tabla como parte de una
CREATE TABLEinstrucción ...AS FILETABLE. Sin embargo, puede agregar la restricción más adelante mediante unaALTER TABLEinstrucción .No se puede crear una FileTable en la
tempdbbase de datos ni en ninguna de las otras bases de datos del sistema.No se puede crear una FileTable como tabla temporal.
Modificar una FileTable
Dado que una FileTable tiene un esquema predefinido y fijo, no puede agregar ni cambiar sus columnas. No obstante, puede agregar índices personalizados, desencadenadores, restricciones y opciones adicionales a una FileTable.
Para obtener información sobre cómo usar la ALTER TABLE instrucción para habilitar o deshabilitar el espacio de nombres FileTable, incluidas las restricciones definidas por el sistema, vea Administrar FileTables.
Cambiar el directorio de una FileTable mediante Transact-SQL
Llame a la instrucción ALTER TABLE y proporcione a la opción SET un nuevo valor válido para FILETABLE_DIRECTORY.
Example
ALTER TABLE filetable_name SET (FILETABLE_DIRECTORY = N'directory_name');
GO
Cambiar el directorio de una FileTable mediante SQL Server Management Studio
En el Explorador de objetos, haga clic con el botón derecho en el objeto FileTable y seleccione Propiedades para abrir el cuadro de diálogo Propiedades de la tabla . En la página FileTable , escriba un nuevo valor para Nombre del directorio de FileTable.
Requisitos y restricciones para modificar una FileTable
No se puede modificar el valor de
FILETABLE_COLLATE_FILENAME.No se pueden cambiar, quitar ni deshabilitar las columnas definidas por el sistema de una FileTable.
No se pueden agregar nuevas columnas de usuario, columnas calculadas ni columnas calculadas persistentes a una FileTable.
Eliminar una FileTable
Puede quitar una FileTable mediante la sintaxis normal de la instrucción DROP TABLE .
Cuando se quita una FileTable, también se quitan los objetos siguientes:
También se quitan todas las columnas de la FileTable y todos los objetos asociados con la tabla, por ejemplo, índices, restricciones y desencadenadores.
El directorio FileTable y los subdirectorios que contenía desaparecen del archivo FILESTREAM y la jerarquía de directorios de la base de datos.
El DROP TABLE comando produce un error si hay identificadores de archivo abiertos en el espacio de nombres de archivo de FileTable. Para obtener información sobre cómo cerrar identificadores abiertos, vea Administrar FileTables.
Se crean otros objetos de base de datos al crear una FileTable
Cuando cree una nueva FileTable, también se crean algunas restricciones y algunos índices definidos por el sistema. No se pueden modificar ni quitar estos objetos; solo desaparecen cuando se quita la propia FileTable. Para ver la lista de estos objetos, consulte la vista de catálogo sys.filetable_system_defined_objects.
--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
Índices que se crean al crear una nueva FileTable
Cuando cree una nueva FileTable, también se crean los siguiente índices definidos por el sistema:
| Columnas | Tipo de índice | Clustered |
|---|---|---|
[path_locator] ASC |
Clave principal | No |
[parent_path_locator] ASC, [name] ASC |
Unique | No |
[stream_id] ASC |
Unique | No |
Restricciones que se crean al crear una nueva FileTable
Cuando cree una nueva FileTable, también se crean las siguiente restricciones definidas por el sistema:
| Restricciones | Aplica |
|---|---|
Restricciones predeterminadas en las siguiente columnas:creation_timeis_archiveis_directoryis_hiddenis_offlineis_readonlyis_systemis_temporarylast_access_timelast_write_timepath_locatorstream_id |
Las restricciones predeterminadas definidas por el sistema aplican valores predeterminados a las columnas especificadas. |
| Restricciones CHECK | Las restricciones CHECK definidas por el sistema se aplican a los siguientes requisitos: Nombres de archivo válidos. Atributos de archivo válidos. El objeto primario debe ser un directorio. La jerarquía del espacio de nombres se bloquea durante la manipulación de archivos. |
Convención de nomenclatura para las restricciones definidas por el sistema
Las restricciones definidas por el sistema descritas anteriormente se denominan en el formato <constraintType>_<tablename>[_<columnname>]_<uniquifier> donde:
'<constraint_type> es CK (restricción check), DF (restricción predeterminada), FK (clave externa), PK (clave principal) o UQ (restricción única).
<uniquifier>es una cadena generada por el sistema para que el nombre sea único. Esta cadena puede contener el nombre de FileTable y un identificador único.