Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Beskriver katalogstrukturen där filerna lagras i FileTables.
Anvisningar: Arbeta med kataloger och sökvägar i FileTables
Du kan använda följande tre funktioner för att arbeta med FileTable-kataloger i Transact-SQL:
| Så här hämtar du det här resultatet | Använd den här funktionen |
|---|---|
| Hämta UNC-sökvägen på rotnivå för en specifik FileTable eller för den aktuella databasen. | FileTableRootPath (Transact-SQL) |
| Hämta en absolut eller relativ UNC-sökväg för en fil eller katalog i en FileTable. | GetFileNamespacePath (Transact-SQL) |
| Hämta sökvägslokaliserarens ID-värde för den angivna filen eller katalogen i en FileTable genom att ange sökvägen. | GetPathLocator (Transact-SQL) |
Använda relativa sökvägar för portabel kod
Undvik att skriva kod som förlitar sig på absoluta filsökvägar för att hålla kod och program oberoende av den aktuella datorn och databasen. Hämta i stället den fullständiga sökvägen för en fil vid körning genom att använda funktionerna FileTableRootPath (Transact-SQL) och GetFileNamespacePath (Transact-SQL)) tillsammans, som du ser i följande exempel. Som standardinställning returnerar funktionen GetFileNamespacePath filens relativa sökväg under rotsökvägen för databasen.
USE database_name;
DECLARE @root NVARCHAR(100);
DECLARE @fullpath NVARCHAR(1000);
SELECT @root = FileTableRootPath();
SELECT @fullpath = @root + file_stream.GetFileNamespacePath()
FROM filetable_name
WHERE name = N'document_name';
PRINT @fullpath;
GO
Begränsningar
Hierarkinivå
Viktig
Du kan inte lagra fler än 15 nivåer av underkataloger i katalogen FileTable. När du lagrar 15 nivåer av underkataloger kan den lägsta nivån inte innehålla filer, eftersom dessa filer skulle representera ytterligare en nivå.
Längd på fullständigt sökvägsnamn
Viktig
NTFS-filsystemet stöder sökvägsnamn som är mycket längre än gränsen på 260 tecken för Windows-gränssnittet och de flesta Windows-API:er. Därför är det möjligt att skapa filer i filhierarkin för en FileTable med hjälp av Transact-SQL som du inte kan visa eller öppna med Utforskaren eller många andra Windows-program, eftersom det fullständiga sökvägsnamnet överskrider 260 tecken. Du kan dock fortsätta att komma åt dessa filer med hjälp av Transact-SQL.
Den fullständiga sökvägen till ett objekt som lagras i en FileTable
Den fullständiga sökvägen till en fil eller katalog som lagras i en FileTable börjar med följande element:
En resurs som är aktiverad för "FILESTREAM"-fil-I/O-åtkomst på SQL Server-instansnivå.
Den
DIRECTORY_NAMEsom anges på databasnivå.Den
FILETABLE_DIRECTORYsom anges på FileTable-nivån.
Den resulterande hierarkin ser ut så här:
\\<machine>\<instance-level FILESTREAM share>\<database-level directory>\<FileTable directory>\
Den här kataloghierarkin utgör roten i Filtabellens filnamnområde. Under den här kataloghierarkin lagras FILESTREAM-data för FileTable som filer och som underkataloger som också kan innehålla filer och underkataloger.
Det är viktigt att komma ihåg att kataloghierarkin som skapats under FILSTREAM-resursen på instansnivå är en virtuell kataloghierarki. Den här hierarkin lagras i SQL Server-databasen och representeras inte fysiskt i NTFS-filsystemet. Alla åtgärder som har åtkomst till filer och kataloger under FILESTREAM-resursen och i de FileTables som den innehåller fångas upp och hanteras av en SQL Server-komponent som är inbäddad i filsystemet.
Semantiken för rotkatalogerna på instans-, databas- och FileTable-nivåerna
Den här kataloghierarkin observerar följande semantik:
FILESTREAM-resursen på instansnivå konfigureras av en administratör och lagras som en egenskap för servern. Du kan byta namn på den här resursen med hjälp av SQL Server Configuration Manager. En namnbytesåtgärd börjar inte gälla förrän servern har startats om.
DIRECTORY_NAMEpå databasnivå är null som standard när du skapar en ny databas. En administratör kan ange eller ändra det här namnet med hjälp av instruktionenALTER DATABASE. Namnet måste vara unikt (i en skiftlägesokänslig jämförelse) inom denna instans.Du anger vanligtvis
FILETABLE_DIRECTORYnamn som en del avCREATE TABLE-instruktionen när du skapar en FileTable. Du kan ändra det här namnet med hjälp av kommandotALTER TABLE.Du kan inte byta namn på dessa rotkataloger via fil-I/O-åtgärder.
Du kan inte öppna dessa rotkataloger med unika filhandtag.
Kolumnen is_directory i schemat för FileTable
I följande tabell beskrivs interaktionen mellan kolumnen is_directory och kolumnen file_stream som innehåller FILESTREAM-data i en FileTable.
| Värdet för is_directory | file_stream-värde | Uppförande |
|---|---|---|
FALSE |
NULL |
Det här är en ogiltig kombination som fångas av en systemdefinierad begränsning. |
FALSE |
<value> |
Objektet representerar en fil. |
TRUE |
NULL |
Objektet representerar en katalog. |
TRUE |
<value> |
Det här är en ogiltig kombination som fångas av en systemdefinierad begränsning. |
Använda virtuella nätverksnamn (VNN) med AlwaysOn-tillgänglighetsgrupper
När databasen som innehåller FILESTREAM- eller FileTable-data tillhör en tillgänglighetsgrupp:
Funktionerna FILESTREAM och FileTable accepterar eller returnerar virtuella nätverksnamn (VNN) i stället för datornamn. Mer information om dessa funktioner finns i FILESTREAM- och FileTable Functions (Transact-SQL).
All åtkomst till FILESTREAM- eller FileTable-data via filsystemets API:er bör använda virtuella nätverksnamn (VNNs) i stället för datornamn. Mer information finns i FILESTREAM och FileTable med AlwaysOn-tillgänglighetsgrupper (SQL Server).