Compartir a través de


Habilitar los requisitos previos de FileTables

Describe cómo habilitar los requisitos previos para crear y usar FileTables.

Habilitar los requisitos previos para FileTable

Para habilitar los requisitos previos para crear y usar FileTables, habilite los siguientes elementos:

Habilitar FILESTREAM en el nivel de instancia

FileTables amplía las funcionalidades de la característica FILESTREAM de SQL Server. Por lo tanto, debe 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.

Cómo: 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, tiene que establecer la opción filestream_access_level en 2. Para obtener más información, vea filestream access level (opción de configuración del servidor).

Habilitar 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, debe especificar el nivel deseado de acceso no transaccional en el nivel de base de datos para cada base de datos que contendrá FileTables.

Cómo: comprobar si el acceso no transaccional está habilitado en las bases de datos

Consulte la vista de catálogo sys.database_filestream_options (Transact-SQL) y compruebe 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  

Cómo: 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

```sql  
CREATE DATABASE database_name  
    WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' )  
```  
  • Al modificar una base de datos existente, llame a la instrucción ALTER DATABASE (Transact-SQL) con la opción NON_TRANSACTED_ACCESS FILESTREAM.

    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
Puede 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 obtener más información sobre este cuadro de diálogo, vea Propiedades de la base de datos (página Opciones) .

Especificar un directorio para FileTables en el nivel de base de datos

Cuando habilite el acceso no transaccional a archivos en el nivel de base de datos, puede indicar el nombre de un directorio opcionalmente al mismo tiempo mediante la opción DIRECTORY_NAME . Si no proporciona ningún directorio cuando habilite el acceso no transaccional, debe proporcionarlo posteriormente antes de que pueda 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

```sql  
CREATE DATABASE database_name  
    WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );  
GO  
```  
  • Al modificar una base de datos existente, llame a la instrucción ALTER DATABASE (Transact-SQL) con la opción DIRECTORY_NAME FILESTREAM. 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  
    
  • Al adjuntar una base de datos, llame a la instrucción CREATE DATABASE (SQL Server Transact-SQL) con la opción FOR ATTACH y con la opción DIRECTORY_NAME FILESTREAM.

    CREATE DATABASE database_name  
        FOR ATTACH WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );  
    GO  
    
  • Al restaurar una base de datos, llame a la instrucción RESTORE (Transact-SQL) con la opción DIRECTORY_NAME FILESTREAM.

    RESTORE DATABASE database_name  
        WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );  
    GO  
    

Especificar un directorio para las FileTables mediante 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 obtener más información sobre este cuadro de diálogo, vea Propiedades de la base de datos (página Opciones) .

Cómo: ver los nombres de directorio existentes para la instancia

Para ver la lista de nombres de directorio existentes para la instancia, consulte la vista de catálogo sys.database_filestream_options (Transact-SQL) y compruebe 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 base de datos

  • Establecer el valor de DIRECTORY_NAME es opcional cuando llame a CREATE DATABASE o a ALTER DATABASE. Si no especifica ningún valor para DIRECTORY_NAME, el nombre del directorio continúa siendo NULL y no podrá crear FileTables en la base de datos hasta que especifique 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 puede volver a establecer el valor de DIRECTORY_NAME en NULL.

  • Cuando adjunte o restaure 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. Especifique un valor único para DIRECTORY_NAME cuando llame a CREATE DATABASE FOR ATTACH o a RESTORE DATABASE.

  • Al actualizar una base de datos existente a SQL Server 2014, el valor de DIRECTORY_NAME es NULL.

  • Cuando habilite o deshabilite 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 quite 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.