Habilitar los requisitos previos de FileTable
Se aplica a: SQL Server
Describe cómo habilitar los requisitos previos para crear y usar FileTables.
Habilitar los requisitos previos de FileTables
Para habilitar los requisitos previos para crear y usar FileTables, habilite los siguientes elementos:
En el nivel de instancia:
En el nivel de base de datos:
Habilitar FILESTREAM en el nivel de instancia
Las FileTables amplían las capacidades de la característica FILESTREAM de SQL Server. Debes habilitar FILESTREAM para el acceso de E/S de archivos en el nivel de Windows y en la instancia de SQL Server antes de poder crear y usar FileTables.
Habilitar FILESTREAM en el nivel de instancia
Para obtener información sobre cómo habilitar FILESTREAM, vea Habilitar y configurar FILESTREAM.
Cuando se llama a sp_configure
para habilitar FILESTREAM en el nivel de instancia, tienes que establecer la opción filestream_access_level
en 2
. Para obtener más información, consulta FILESTREAM access level (opción de configuración del servidor).
Permitir FILESTREAM a través del firewall
Para obtener información acerca de cómo habilitar FILESTREAM a través del firewall, vea Configure a Firewall for FILESTREAM Access.
Proporcionar un grupo de archivos de FILESTREAM en el nivel de base de datos
Para poder crear tablas FileTable en una base de datos, esta debe tener un grupo de archivos FILESTREAM. Para obtener más información sobre este requisito previo, vea Crear una base de datos habilitada para FILESTREAM.
Habilitar el acceso no transaccional en el nivel de base de datos
Las FileTables permiten que las aplicaciones Windows obtengan un identificador de archivo de Windows en los datos FILESTREAM sin que sea necesaria ninguna transacción. Para permitir este acceso no transaccional a los archivos almacenados en SQL Server, debes especificar el nivel deseado de acceso no transaccional en el nivel de base de datos para cada base de datos que contenga FileTables.
Comprobar si el acceso no transaccional está habilitado en las bases de datos
Consulta la vista de catálogo sys.database_filestream_options (Transact-SQL) y comprueba las columnas non_transacted_access
y non_transacted_access_desc
.
SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
FROM sys.database_filestream_options;
GO
Habilitar el acceso no transaccional en el nivel de base de datos
Los niveles disponibles de acceso no transaccional son FULL, READ_ONLY y OFF.
Especificar el nivel de acceso no transaccional mediante Transact-SQL
Cuando cree una base de datos nueva, llama a la instrucción CREATE DATABASE (Transact-SQL de SQL Server) con la opción de FILESTREAM NON_TRANSACTED_ACCESS
.
CREATE DATABASE database_name
WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
Cuando modifiques una base de datos existente, llama a la instrucción ALTER DATABASE (Transact-SQL) con la opción de FILESTREAM NON_TRANSACTED_ACCESS
.
ALTER DATABASE database_name
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
Especificar el nivel de acceso no transaccional mediante SQL Server Management Studio
Puedes especificar el nivel de acceso no transaccional en el campo Acceso sin transacciones de FILESTREAM de la página Opciones del cuadro de diálogo Propiedades de la base de datos . Para más información sobre este cuadro de diálogo, consulte Propiedades de la base de datos (página Opciones).
Especificar un directorio para FileTables en el nivel de base de datos
Cuando habilites el acceso no transaccional a archivos en el nivel de base de datos, puedes indicar el nombre de un directorio opcionalmente al mismo tiempo mediante la opción DIRECTORY_NAME
. Si no proporcionas ningún directorio cuando habilites el acceso no transaccional, debes proporcionarlo posteriormente antes de que puedas crear FileTables en la base de datos.
En la jerarquía de carpetas de FileTable, este directorio de nivel de base de datos se convierte en el secundario del nombre del recurso compartido especificado para FILESTREAM en el nivel de instancia y en el primario de las FileTables creadas en la base de datos. Para más información, consulte Work with Directories and Paths in FileTables.
especificar un directorio para FileTables en el nivel de base de datos
El nombre que especifique debe ser único en toda la instancia para los directorios de base de datos.
Especificar un directorio para FileTables mediante Transact-SQL
Cuando cree una base de datos nueva, llama a la instrucción CREATE DATABASE (Transact-SQL de SQL Server) con la opción de FILESTREAM DIRECTORY_NAME
.
CREATE DATABASE database_name
WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
GO
Cuando modifiques una base de datos existente, llama a la instrucción ALTER DATABASE (Transact-SQL) con la opción de FILESTREAM DIRECTORY_NAME
. Cuando use estas opciones para cambiar el nombre del directorio, la base de datos se debe bloquear de forma exclusiva y sin identificadores de archivo abiertos.
ALTER DATABASE database_name
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
GO
Cuando adjuntes una base de datos, llama a la instrucción CREATE DATABASE (Transact-SQL de SQL Server) con la opción FOR ATTACH
y con la opción de FILESTREAM DIRECTORY_NAME
.
CREATE DATABASE database_name
FOR ATTACH WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO
Cuando restaures una base de datos, llama a la instrucción RESTORE (Transact-SQL) con la opción de FILESTREAM DIRECTORY_NAME
.
RESTORE DATABASE database_name
WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO
Especificar un directorio para las FileTables con SQL Server Management Studio
Puede especificar el nombre de un directorio en el campo Nombre de directorio de FILESTREAM de la página Opciones del cuadro de diálogo Propiedades de la base de datos . Para más información sobre este cuadro de diálogo, consulte Propiedades de la base de datos (página Opciones).
Ver los nombres de directorio existentes para la instancia
Para ver la lista de nombres de directorio existentes de la instancia, consulta la vista de catálogo sys.database_filestream_options (Transact-SQL) y comprueba la columna filestream_database_directory_name
.
SELECT DB_NAME ( database_id ), directory_name
FROM sys.database_filestream_options;
GO
Requisitos y restricciones para el directorio de nivel de base de datos
Configurar el
DIRECTORY_NAME
es opcional cuando se llama aCREATE DATABASE
oALTER DATABASE
. Si no especificas ningún valor paraDIRECTORY_NAME
, el nombre del directorio continúa siendo null. Sin embargo, no podrás crear FileTables en la base de datos hasta que especifiques un valor paraDIRECTORY_NAME
en el nivel de base de datos.El nombre de directorio que proporcione debe cumplir los requisitos del sistema de archivos de un nombre de directorio válido.
Cuando la base de datos contenga FileTables, no puedes volver a establecer el valor de
DIRECTORY_NAME
en NULL.Cuando adjuntes o restaures una base de datos, se produce un error en la operación si la nueva base de datos tiene un valor para
DIRECTORY_NAME
que ya existe en la instancia de destino. Especifica un valor único paraDIRECTORY_NAME
cuando llames aCREATE DATABASE FOR ATTACH
oRESTORE DATABASE
.Cuando actualices una base de datos existente, el valor de
DIRECTORY_NAME
será null.Cuando habilites o deshabilites el acceso no transaccional en el nivel de base de datos, la operación no comprueba si se ha especificado el nombre del directorio o si es único.
Cuando quita una base de datos habilitada para FileTables, se quitan el directorio de nivel de base de datos y todas las estructuras de directorio de todas las FileTables contenidas en él.