Condividi tramite


Abilitazione dei prerequisiti per la tabella FileTable

Viene descritto come abilitare i prerequisiti per la creazione e l'utilizzo di tabelle FileTable.

Abilitazione dei prerequisiti per la tabella FileTable

Per abilitare i prerequisiti per la creazione e l'utilizzo di tabelle FileTable, abilitare gli elementi seguenti:

Abilitazione di FILESTREAM a livello di istanza

Le tabelle FileTable estendono le funzionalità della funzionalità FILESTREAM di SQL Server. È quindi necessario abilitare FILESTREAM per l'accesso di I/O file a livello di Windows e nell'istanza di SQL Server prima di poter creare e usare Tabelle FileTable.

Procedura: Abilitazione di FILESTREAM a livello di istanza

Per informazioni su come abilitare FILESTREAM, vedere Abilitare e configurare FILESTREAM.

Quando si chiama sp_configure per abilitare FILESTREAM a livello di istanza, è necessario impostare l'opzione filestream_access_level su 2. Per altre informazioni, vedere Opzione di configurazione del server filestream access level.

Procedura: Abilitazione di FILESTREAM attraverso il firewall

Per informazioni sull'abilitazione di FILESTREAM attraverso il firewall, vedere Configure a Firewall for FILESTREAM Access.

Fornitura di un filegroup FILESTREAM a livello di database

Per poter creare FileTable in un database, è necessario che il database disponga di un filegroup FILESTREAM. Per altre informazioni su questo prerequisito, vedere Creare un database abilitato per FILESTREAM.

Abilitazione dell'accesso non transazionale a livello di database

Le tabelle FileTable consentono alle applicazioni di Windows di ottenere un handle di file Windows per i dati FILESTREAM senza che sia necessaria una transazione. Per consentire l'accesso non transazionale ai file archiviati in SQL Server, è necessario specificare il livello desiderato di accesso non transazionale a livello di database per ogni database che conterrà tabelle FileTable.

Procedura: Verifica dell'abilitazione dell'accesso non transazionale nei database

Eseguire query sulla visualizzazione catalogo sys.database_filestream_options (Transact-SQL) e controllare le colonne non_transacted_access e non_transacted_access_desc .

SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc  
    FROM sys.database_filestream_options;  
GO  

Procedura: Abilitazione dell'accesso non transazionale a livello di database

I livelli disponibili di accesso non transazionale sono FULL, READ_ONLY e OFF.

Specificare il livello di accesso non transazionale tramite Transact-SQL

```sql  
CREATE DATABASE database_name  
    WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' )  
```  
  • Quando si modifica un database esistente, chiamare l'istruzione ALTER DATABASE (Transact-SQL) con l'opzione NON_TRANSACTED_ACCESS FILESTREAM.

    ALTER DATABASE database_name  
        SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' )  
    

Specificare il livello di accesso non transazionale tramite SQL Server Management Studio
È possibile specificare il livello di accesso non transazionale nel campo Accesso FILESTREAM non transazionale della pagina Opzioni della finestra di dialogo Proprietà database . Per altre informazioni su questa finestra di dialogo, vedere Proprietà del database (pagina Opzioni).

Specifica di una directory per tabelle FileTable a livello di database

Quando si abilita l'accesso non transazionale ai file a livello di database, è anche possibile specificare simultaneamente un nome di directory usando l'opzione DIRECTORY_NAME . Se non si specifica un nome di directory quando si abilita l'accesso non transazionale, è necessario specificarlo in seguito prima di poter creare le tabelle FileTable nel database.

Nella gerarchia di cartelle FileTable questa directory a livello di database diventa l'elemento figlio del nome di condivisione specificato per FILESTREAM a livello di istanza e l'elemento padre delle tabelle FileTable create nel database. Per altre informazioni, vedere Work with Directories and Paths in FileTables.

Procedura: Specifica di una directory per tabelle FileTable a livello di database

Il nome specificato deve essere univoco in tutta l'istanza per le directory a livello di database.

Specificare una directory per tabelle FileTable tramite Transact-SQL

```sql  
CREATE DATABASE database_name  
    WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );  
GO  
```  
  • Quando si modifica un database esistente, chiamare l'istruzione ALTER DATABASE (Transact-SQL) con l'opzione DIRECTORY_NAME FILESTREAM. Quando si usano queste opzioni per modificare il nome di directory, è necessario bloccare il database in modo esclusivo, senza handle di file aperti.

    ALTER DATABASE database_name  
        SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );  
    GO  
    
  • Quando si collega un database, chiamare l'istruzione CREATE DATABASE (SQL Server Transact-SQL) con l'opzione FOR ATTACH e con l'opzione DIRECTORY_NAME FILESTREAM.

    CREATE DATABASE database_name  
        FOR ATTACH WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );  
    GO  
    
  • Quando si ripristina un database, chiamare l'istruzione RESTORE (Transact-SQL) con l'opzione DIRECTORY_NAME FILESTREAM.

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

Specificare una directory per tabelle FileTable tramite SQL Server Management Studio
È possibile specificare un nome di directory nel campo Nome di directory FILESTREAM della pagina Opzioni della finestra di dialogo Proprietà database . Per altre informazioni su questa finestra di dialogo, vedere Proprietà del database (pagina Opzioni).

Procedura: Visualizzazione dei nomi di directory esistenti per l'istanza

Per visualizzare l'elenco dei nomi di directory esistenti per l'istanza, eseguire una query sulla vista del catalogo sys.database_filestream_options (Transact-SQL) e controllare la colonna filestream_database_directory_name .

SELECT DB_NAME ( database_id ), directory_name  
    FROM sys.database_filestream_options;  
GO  

Requisiti e restrizioni per la directory a livello di database

  • L'impostazione di DIRECTORY_NAME è facoltativa quando si chiama CREATE DATABASE o ALTER DATABASE. Se non si specifica un valore per DIRECTORY_NAME, il nome di directory rimane Null. Non è tuttavia possibile creare tabelle FileTable nel database se prima non si specifica un valore per DIRECTORY_NAME a livello di database.

  • Il nome di directory specificato deve essere conforme ai requisiti del file system relativi ai nomi di directory validi.

  • Quando il database contiene tabelle FileTable, non è possibile reimpostare DIRECTORY_NAME su un valore Null.

  • Quando si collega o ripristina un database, l'operazione non riesce se il nuovo database include un valore per DIRECTORY_NAME già presente nell'istanza di destinazione. Specificare un valore univoco per DIRECTORY_NAME quando si chiama CREATE DATABASE FOR ATTACH o RESTORE DATABASE.

  • Quando si aggiorna un database esistente a SQL Server 2014, il valore di DIRECTORY_NAME è Null.

  • Quando si abilita o disabilita l'accesso non transazionale a livello di database, l'operazione non verifica se è stato specificato il nome di directory o se questo è univoco.

  • Quando si elimina un database abilitato per tabelle FileTable, vengono rimosse la directory a livello di database e tutte le strutture di directory di tutte le tabelle FileTable in essa contenute.