Dela via


Aktivera förutsättningarna för FileTable

gäller för:SQL Server

Beskriver hur du aktiverar förutsättningarna för att skapa och använda FileTables.

Aktivera förutsättningar för FileTable

Aktivera följande objekt för att aktivera förutsättningarna för att skapa och använda FileTables:

Aktivera FILESTREAM på instansnivå

FileTables utökar funktionerna i FILESTREAM-funktionen i SQL Server. Du måste aktivera FILESTREAM för fil-I/O-åtkomst på Windows-nivå och på SQL Server-instansen innan du kan skapa och använda FileTables.

Aktivera FILESTREAM på instansnivå

Information om hur du aktiverar FILESTREAM finns i Aktivera och konfigurera FILESTREAM-.

När du anropar sp_configure för att aktivera FILESTREAM på instansnivå måste du ange alternativet filestream_access_level till 2. Mer information finns i FILESTREAM-åtkomstnivå (serverkonfigurationsalternativ).

Tillåt FILESTREAM via brandväggen

Information om hur du tillåter FILESTREAM via brandväggen finns i Konfigurera en brandvägg för FILESTREAM-åtkomst.

Ange en FILESTREAM-filgrupp på databasnivå

Innan du kan skapa FileTables i en databas måste databasen ha en FILESTREAM-filgrupp. Mer information om den här förutsättningen finns i Skapa en FILESTREAM-Enabled Databas.

Aktivera icke-transaktionell åtkomst på databasnivå

Med FileTables kan Windows-program hämta en Windows-filreferens till FILESTREAM-data utan att kräva en transaktion. Om du vill tillåta den här icke-transaktionella åtkomsten till filer som lagras i SQL Server måste du ange önskad nivå av icke-transaktionell åtkomst på databasnivå för varje databas som ska innehålla FileTables.

Kontrollera om icke-transaktionell åtkomst är aktiverad på databaser

Fråga katalogvyn sys.database_filestream_options (Transact-SQL) och kontrollera kolumnerna non_transacted_access och non_transacted_access_desc.

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

Aktivera icke-transaktionell åtkomst på databasnivå

De tillgängliga nivåerna för icke-transaktionell åtkomst är FULL, READ_ONLY och OFF.

Ange nivån för icke-transaktionell åtkomst med Transact-SQL

När du skapar en ny databas, anropar du kommandot CREATE DATABASE (SQL Server Transact-SQL) med alternativet NON_TRANSACTED_ACCESS FILESTREAM.

CREATE DATABASE database_name
  WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );

När du ändra en befintlig databasanropar du instruktionen ALTER DATABASE (Transact-SQL) med alternativet NON_TRANSACTED_ACCESS FILESTREAM.

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

Ange nivån för icke-transaktionell åtkomst med SQL Server Management Studio

Du kan ange nivån för icke-transaktionell åtkomst i fältet FILESTREAM Icke-transacted Access på sidan Alternativ i dialogrutan Databasegenskaper. Mer information om den här dialogrutan finns i Databasegenskaper (alternativsida).

Ange en katalog för FileTables på databasnivå

När du aktiverar icke-transaktionell åtkomst till filer på databasnivå kan du ange ett katalognamn samtidigt med alternativet DIRECTORY_NAME. Om du inte anger ett katalognamn när du aktiverar icke-transaktionell åtkomst måste du ange det senare innan du kan skapa FileTables i databasen.

I mapphierarkin FileTable blir den här katalogen på databasnivå underordnad det resursnamn som angetts för FILESTREAM på instansnivå och överordnad för filetables som skapats i databasen. Mer information finns i Arbeta med kataloger och sökvägar i FileTables.

Ange en katalog för FileTables på databasnivå

Namnet som du anger måste vara unikt för instansen för kataloger på databasnivå.

Ange en katalog för FileTables med Transact-SQL

När du skapa en ny databasanropar du instruktionen CREATE DATABASE (SQL Server Transact-SQL) med alternativet DIRECTORY_NAME FILESTREAM.

CREATE DATABASE database_name
  WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
GO

När du ändrar en befintlig databasanropar du instruktionen ALTER DATABASE (Transact-SQL) med alternativet DIRECTORY_NAME FILESTREAM. När du använder de här alternativen för att ändra katalognamnet måste databasen vara exklusivt låst, utan öppna filhandtag.

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

När du kopplar en databasanropar du instruktionen CREATE DATABASE (SQL Server Transact-SQL) med alternativet FOR ATTACH och alternativet DIRECTORY_NAME FILESTREAM.

CREATE DATABASE database_name
    FOR ATTACH WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO

När du återställer en databas, anropa instruktionen RESTORE (Transact-SQL) med alternativet DIRECTORY_NAME FILESTREAM.

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

Ange en katalog för FileTables med SQL Server Management Studio

Du kan ange ett katalognamn i fältet FILESTREAM-katalognamn på sidan Alternativ i dialogrutan Databasegenskaper. Mer information om den här dialogrutan finns i Databasegenskaper (alternativsida).

Visa befintliga katalognamn för instansen

Om du vill visa listan över befintliga katalognamn för instansen frågar du katalogvyn sys.database_filestream_options (Transact-SQL) och kontrollerar kolumnen filestream_database_directory_name.

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

Krav och begränsningar för katalogen på databasnivå

  • Det är valfritt att ange DIRECTORY_NAME när du anropar CREATE DATABASE eller ALTER DATABASE. Om du inte anger något värde för DIRECTORY_NAMEförblir katalognamnet null. Du kan dock inte skapa FileTables i databasen förrän du anger ett värde för DIRECTORY_NAME på databasnivå.

  • Det katalognamn som du anger måste uppfylla kraven i filsystemet för ett giltigt katalognamn.

  • När databasen innehåller FileTables kan du inte ange DIRECTORY_NAME tillbaka till ett null-värde.

  • När du kopplar eller återställer en databas misslyckas åtgärden om den nya databasen har ett värde för DIRECTORY_NAME som redan finns i målinstansen. Ange ett unikt värde för DIRECTORY_NAME när du anropar CREATE DATABASE FOR ATTACH eller RESTORE DATABASE.

  • När du uppgraderar en befintlig databas är värdet för DIRECTORY_NAME null.

  • När du aktiverar eller inaktiverar icke-transaktionell åtkomst på databasnivå kontrollerar åtgärden inte om katalognamnet har angetts eller om det är unikt.

  • När du släpper en databas som har aktiverats för FileTables tas katalogen på databasnivå och alla katalogstrukturer för alla FileTables under den bort.