Crear, modificar y quitar FileTables
Describe cómo crear una nueva FileTable. O bien, modificar o quitar una FileTable existente.
En este tema
Deseo…
Crear una FileTable
Cómo: crear una FileTable
Requisitos y restricciones para crear una FileTable
Modificar una FileTable
Cómo: cambiar el directorio de una FileTable
Requisitos y restricciones para modificar una FileTable
Quitar una FileTable
Más información
- Se crean otros objetos de base de datos cuando se crea una FileTable
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 Esquema de FileTable.
Puede crear una nueva FileTable con Transact-SQL o SQL Server Management Studio. Puesto que una FileTable tiene un esquema fijo, no tiene que especificar ninguna 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.
El nombre de la intercalación que se va usar para los nombres de archivo en la columna Name de la FileTable.
Los nombres que se van a utilizar para la clave principal 3 y las restricciones únicas que se crean automáticamente.
Crear una FileTable
Crear una FileTable con Transact-SQL
Cree una FileTable llamando a la instrucción CREATE TABLE (Transact-SQL) con la opción AS FileTable. Puesto que una FileTable tiene un esquema fijo, no tiene que especificar ninguna 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 de 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 de 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, su nombre se usa como el del directorio.
FILETABLE_COLLATE_FILENAME. Especifica el nombre de la intercalación que se va a aplicar a la columna Name en la 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 database_default, la columna hereda la intercalación de la base de datos actual. Si la intercalación de la base de datos actual distingue mayúsculas de minúsculas, se produce un error en la operación CREATE TABLE.
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 generará los nombres cómo se describe más adelante en este tema.
FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME
FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME
FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME
Ejemplos
El ejemplo siguiente se crea una nueva FileTable y especifica los valores definidos por el usuario para FILETABLE_DIRECTORY y 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. Puesto que no se especifican valores definidos por el usuario, el valor de FILETABLE_DIRECTORY se convierte en el nombre de la FileTable, el valor de FILETABLE_COLLATE_FILENAME se convierte en database_default y la clave principal y las restricciones únicas reciben nombres generados por el sistema.
CREATE TABLE DocumentStore AS FileTable; GO
Crear 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 secundario en la carpeta Tables y, a continuación, seleccione Nueva FileTable.Esta opción abre una nueva ventana de script que contiene una plantilla de script 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.
[ARRIBA]
Requisitos y restricciones para crear una FileTable
No 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, vea Habilitar los requisitos previos de FileTables.
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 comando CREATE TABLE para crear una FileTable. Si no especifica ningún grupo de archivos, la FileTable usa el grupo de archivos FILESTREAM predeterminado para la base de datos. Si la base de datos no tiene ningún grupo de archivos FILESTREAM, se produce un error.
No puede crear ninguna restricción de tabla como parte de una instrucción CREATE TABLE…AS FILETABLE. No obstante, puede agregar la restricción más tarde con una instrucción ALTER TABLE.
No puede crear ninguna FileTable en la base de datos tempdb ni en ninguna de la demás bases de datos del sistema.
No puede crear ninguna FileTable como tabla temporal.
[ARRIBA]
Modificar una FileTable
Puesto 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 acerca del uso de la instrucción ALTER TABLE con el fin de habilitar o deshabilitar el espacio de nombres de FileTable, incluidas las restricciones definidas por el sistema, vea Administrar FileTables.
Cambiar el directorio de un objeto FileTable
Cambiar el directorio de un objeto FileTable mediante Transact-SQL
Llame a la instrucción ALTER TABLE y proporcione un nuevo valor válido para la opción SET de FILETABLE_DIRECTORY.Ejemplo
ALTER TABLE filetable_name SET ( FILETABLE_DIRECTORY = N'directory_name' ); GO
Cambiar el directorio de un objeto FileTable mediante SQL Server Management Studio
En el Explorador de objetos, haga clic con el botón secundario en el objeto TileTable 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.
[ARRIBA]
Requisitos y restricciones para modificar una FileTable
No puede modificar el valor de FILETABLE_COLLATE_FILENAME.
No puede cambiar, quitar ni deshabilitar las columnas definidas por el sistema de una FileTable.
No puede agregar nueva columnas de usuario, columnas calculadas ni columnas calculadas persistentes a una FileTable.
[ARRIBA]
Quitar una FileTable
Puede quitar una FileTable mediante la sintaxis normal de la instrucción DROP TABLE (Transact-SQL).
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 y los subdirectorios de la FileTable que contiene desaparecen de la jerarquía de archivos y directorios de FILESTREAM de la base de datos.
Se produce un error en el comando DROP TABLE si hay identificadores de archivo abiertos en el espacio de nombres de archivo de la FileTable. Para obtener más información sobre cómo cerrar identificadores abiertos, vea Administrar FileTables.
[ARRIBA]
Se crean otros objetos de base de datos cuando se crea una FileTable
Cuando cree una nueva FileTable, también se crean algunas restricciones y algunos índices definidos por el sistema. No puede modificar ni quitar estos objetos; desaparecen solo cuando se quite la propia FileTable. Para ver la lista de estos objetos, consulte la vista de catálogo 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
Índices creados cuando cree una nueva FileTable
Cuando cree una nueva FileTable, también se crean los siguiente índices definidos por el sistema:Columnas
Tipo de índice
[path_locator] ASC
Clave principal, no agrupado
[parent_path_locator] ASC,
[name] ASC
Único, no agrupado
[stream_id] ASC
Único, no agrupado
Restricciones creadas cuando cree 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_time
is_archive
is_directory
is_hidden
is_offline
is_readonly
is_system
is_temporary
last_access_time
last_write_time
path_locator
stream_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
A las restricciones definidas por el sistema descritas anteriormente se les asigna el nombre con 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 UNIQUE).
<uniquifier> es una cadena generada por el sistema para que el nombre sea único. Esta cadena puede contener el nombre de la FileTable y un identificador único.
[ARRIBA]