Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Viene descritto come abilitare i prerequisiti per la creazione e l'utilizzo di tabelle FileTable.
Attivazione dei prerequisiti per FileTable
Per abilitare i prerequisiti per la creazione e l'utilizzo di tabelle FileTable, abilitare gli elementi seguenti:
A livello di istanza:
A livello di database:
Abilitazione di FILESTREAM a livello di istanza
Le tabelle FileTable estendono le funzionalità della caratteristica FILESTREAM di SQL Server. Pertanto, è necessario abilitare FILESTREAM per l'accesso di I/O ai file a livello di Windows e nell'istanza di SQL Server prima di poter creare e usare tabelle FileTable.
Procedura: Abilitare 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 a livello di accesso filestream.
Procedura: Consentire FILESTREAM tramite 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: Verificare se l'accesso non transazionale è abilitato nei database
Eseguire una query sulla vista del 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: Abilitare l'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
- Quando si crea un nuovo database, chiamare l'istruzione CREATE DATABASE (SQL Server Transact-SQL) con l'opzione NON_TRANSACTED_ACCESS FILESTREAM.
```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 non transazionale FILESTREAM 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 FileTable a livello di database
Quando si abilita l'accesso non transazionale ai file a livello di database, è possibile specificare contemporaneamente 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 un secondo momento prima di poter creare 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: Specificare 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 le tabelle FileTable usando Transact-SQL
- Quando si crea un nuovo database, chiamare l'istruzione CREATE DATABASE (SQL Server Transact-SQL) con l'opzione DIRECTORY_NAME FILESTREAM.
```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' ); GOQuando si collega un database, chiamare l'istruzione CREATE DATABASE (SQL Server Transact-SQL) con l'opzione FOR ATTACH e utilizzando l'opzione FILESTREAM DIRECTORY_NAME.
CREATE DATABASE database_name FOR ATTACH WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' ); GOQuando 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 FileTable usando 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: Visualizzare i 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 Database-Level
L'impostazione del DIRECTORY_NAME è facoltativa quando si chiama CREATE DATABASE o ALTER DATABASE. Se non si specifica un valore per DIRECTORY_NAME, il nome della directory rimane Null. Tuttavia, non è possibile creare tabelle FileTable nel database finché 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 impostare nuovamente il DIRECTORY_NAME su un valore Null.
Quando si collega o si ripristina un database, l'operazione ha esito negativo se il nuovo database ha un valore per DIRECTORY_NAME già esistente 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 si disabilita l'accesso non transazionale a livello di database, l'operazione non verifica se il nome della directory è stato specificato o se è univoco.
Quando si elimina un database abilitato per le tabelle FileTable, la directory a livello di database e tutte le strutture di directory di tutte le tabelle FileTable sottostanti vengono rimosse.