Condividi tramite


Abilitazione dei prerequisiti per la tabella FileTable

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

Contenuto dell'argomento

Per

  • Abilitazione dei prerequisiti per la tabella FileTable

  • Abilitazione di FILESTREAM a livello di istanza

    • Procedura: Abilitazione di FILESTREAM a livello di istanza

    • Procedura: Abilitazione di FILESTREAM attraverso il firewall

  • Fornitura di un filegroup FILESTREAM

  • Abilitazione dell'accesso non transazionale a livello di database

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

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

  • Specifica di una directory per tabelle FileTable a livello di database

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

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

    • Requisiti e restrizioni per la directory a livello di database

Abilitazione dei prerequisiti per la tabella FileTable

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

  • A livello di istanza:

    • Abilitazione di FILESTREAM a livello di istanza
  • A livello di database:

    • Fornitura di un filegroup FILESTREAM a livello di database

    • Abilitazione dell'accesso non transazionale a livello di database

    • Specificare una directory per tabelle FileTable a livello di database

[TORNA ALL'INIZIO]

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 I/O ai file a livello di Windows e nell'istanza di SQL Server prima di poter creare e utilizzare le tabelle FileTable.

Procedura: Abilitazione di FILESTREAM a livello di istanza

Per informazioni su come abilitare FILESTREAM, vedere Abilitazione e configurazione di FILESTREAM.

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

[INIZIO PAGINA]

Procedura: Abilitazione di FILESTREAM attraverso il firewall

Per informazioni sull'abilitazione di FILESTREAM attraverso il firewall, vedere Configurare un firewall per l'accesso FILESTREAM.

[INIZIO PAGINA]

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 ulteriori informazioni su questo prerequisito, vedere Creazione di un database abilitato per FILESTREAM.

[INIZIO PAGINA]

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 questo 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à le tabelle FileTable.

Procedura: Verifica dell'abilitazione dell'accesso non transazionale 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

[TORNA ALL'INIZIO]

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

    • Quando si crea un nuovo database, chiamare l'istruzione CREATE DATABASE (Transact-SQL) con l'opzione FILESTREAM NON_TRANSACTED_ACCESS.

      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 FILESTREAM NON_TRANSACTED_ACCESS.

      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 in transazioni della pagina Opzioni della finestra di dialogo Proprietà database. Per ulteriori informazioni su questa finestra di dialogo, vedere Proprietà database (pagina Opzioni).

[TORNA ALL'INIZIO]

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 utilizzando 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 ulteriori informazioni, vedere Utilizzare directory e percorsi in FileTable.

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

    • Quando si crea un nuovo database, chiamare l'istruzione CREATE DATABASE (Transact-SQL) con l'opzione FILESTREAM DIRECTORY_NAME.

      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 FILESTREAM DIRECTORY_NAME. Quando si utilizzano 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 (Transact-SQL) con l'opzione FOR ATTACH e con l'opzione FILESTREAM DIRECTORY_NAME.

      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 FILESTREAM DIRECTORY_NAME.

      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 ulteriori informazioni su questa finestra di dialogo, vedere Proprietà database (pagina Opzioni).

[INIZIO PAGINA]

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

Per visualizzare l'elenco di 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

[INIZIO PAGINA]

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 2012, 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.

[TORNA ALL'INIZIO]