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:

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 a CREATE DATABASE o ALTER DATABASE. Si no especificas ningún valor para DIRECTORY_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 para DIRECTORY_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 para DIRECTORY_NAME cuando llames a CREATE DATABASE FOR ATTACH o RESTORE 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.