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.
Describe cómo crear una nueva FileTable o modificar o quitar una FileTable existente.
Creación de una FileTable
Una FileTable es una tabla de usuario especializada que tiene un esquema predefinido y fijo. Este esquema almacena datos FILESTREAM, información de archivos y directorios y atributos de archivo. Para obtener información sobre el esquema de FileTable, vea Esquema de FileTable.
Puede crear una nueva FileTable mediante Transact-SQL o SQL Server Management Studio. Dado que una FileTable tiene un esquema fijo, no es necesario especificar una lista de columnas. La sintaxis sencilla para crear una FileTable le 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 base de datos especificado en el nivel de base de datos y 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 en la columna Nombre de FileTable.
Los nombres que se usarán para la clave principal 3 y las restricciones únicas que se crean automáticamente.
Cómo: Crear una FileTable
Creación de una FileTable mediante Transact-SQL
Cree una FileTable llamando a la instrucción CREATE TABLE (Transact-SQL) con la opción AS FileTable . Dado que una FileTable tiene un esquema fijo, no es necesario especificar una lista de columnas. Puede especificar la siguiente configuración para la nueva FileTable:
FILETABLE_DIRECTORY. Especifica el directorio que actúa como directorio raíz para todos los archivos y directorios almacenados en 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 el tipo de datos nvarchar(255) y utiliza 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 para 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 clasificació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 columna Name de FileTable.
La clasificación especificada debe ser insensible a mayúsculas y minúsculas para cumplir con la semántica de nomenclatura de archivos 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 genera un error y la operación CREATE TABLE falla.
También puede especificar los nombres que se usarán 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 tema.
FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME
FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME
FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME
Ejemplos
En el ejemplo siguiente se crea una nueva FileTable y se especifican 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
En el ejemplo siguiente también se 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 la clave principal y los contraintes únicos reciben nombres generados por el sistema.
CREATE TABLE DocumentStore AS FileTable;
GO
Crear una FileTable mediante SQL Server Management Studio
En el Explorador de objetos, expanda los objetos de la base de datos seleccionada, haga clic con el botón derecho en la carpeta Tablas y, a continuación, 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, vea Habilitar los requisitos previos para FileTable.
Una FileTable requiere un grupo de archivos FILESTREAM válido, ya que 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 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 CREATE TABLE... AS FILETABLE. Sin embargo, puede agregar la restricción más adelante mediante una instrucción ALTER TABLE .
No se puede crear una FileTable en la base de datos tempdb ni en ninguna de las otras bases de datos del sistema.
No se puede crear una FileTable como una tabla temporal.
Modificar una FileTable
Dado que una FileTable tiene un esquema predefinido y fijo, no puede agregar ni cambiar sus columnas. Sin embargo, puede agregar índices personalizados, desencadenadores, restricciones y otras opciones a una FileTable.
Para obtener información sobre el uso de la instrucción ALTER TABLE para habilitar o deshabilitar el espacio de nombres FileTable, incluidas las restricciones definidas por el sistema, vea Administrar FileTables.
Cómo: Cambiar el directorio de una FileTable
Cambiar el directorio de una FileTable mediante Transact-SQL
Llame a la instrucción ALTER TABLE y proporcione un nuevo valor válido para la opción FILETABLE_DIRECTORY SET.
Ejemplo
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 FileTable y seleccione Propiedades para abrir el cuadro de diálogo Propiedades de tabla. En la página FileTable , escriba un nuevo valor para nombre de directorio de FileTable.
Requisitos y restricciones para modificar una FileTable
No se puede modificar el valor de FILETABLE_COLLATE_FILENAME.
No puede 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.
Quitar una FileTable
Puede quitar una FileTable mediante la sintaxis normal de la instrucción DROP TABLE (Transact-SQL).
Al quitar una FileTable, también se quitan los siguientes objetos:
También se quitan todas las columnas de FileTable y todos los objetos asociados a la tabla, como índices, restricciones y desencadenadores.
El directorio FileTable y los subdirectorios que contenía desaparecen de la jerarquía de directorios y archivos 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 FileTable. Para obtener información sobre cómo cerrar los identificadores abiertos, consulte Administrar FileTables.
Se crean otros objetos de base de datos al crear una FileTable
Al crear una nueva FileTable, también se crean algunos índices y restricciones 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 (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 que se crean al crear una nueva FileTable
Al crear una nueva FileTable, también se crean los siguientes índices definidos por el sistema:
Columnas | Tipo de índice |
[path_locator] ASC | Clave principal, no agrupada |
[parent_path_locator] ASC [name] ASC |
Único, no clúster |
[stream_id] ASC | Único, no clúster |
Restricciones que se crean al crear una nueva FileTable
Al crear una nueva FileTable, también se crean las siguientes restricciones definidas por el sistema:
Restricciones | Aplica |
---|---|
Restricciones predeterminadas en las columnas siguientes: creation_time is_archive is_directory is_hidden is_offline is_readonly is_system is_temporary último_tiempo_de_acceso last_write_time path_locator stream_id |
Las restricciones predeterminadas definidas por el sistema aplican valores predeterminados para las columnas especificadas. |
Restricciones CHECK | Las restricciones de comprobación definidas por el sistema aplican 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 permanece bloqueada 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.