Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server-
Beschrijft de mapstructuur waarin de bestanden worden opgeslagen in FileTables.
Handleiding: Werken met mappen en paden in FileTables
U kunt de volgende drie functies gebruiken om te werken met FileTable-mappen in Transact-SQL:
Om dit resultaat te bereiken | Deze functie gebruiken |
---|---|
Verkrijg het UNC-pad op rootniveau voor een specifieke FileTable of voor de huidige database. | FileTableRootPath (Transact-SQL) |
Haal een absoluut of relatief UNC-pad op voor een bestand of map in een FileTable. | GetFileNamespacePath (Transact-SQL) |
Haal de ID-waarde van de padlocator op voor het opgegeven bestand of de opgegeven map in een FileTable, door het pad op te geven. | GetPathLocator (Transact-SQL) |
Relatieve paden gebruiken voor draagbare code
Als u code en toepassingen onafhankelijk van de huidige computer en database wilt houden, vermijdt u het schrijven van code die afhankelijk is van absolute bestandspaden. Haal in plaats daarvan het complete pad van een bestand tijdens uitvoering op met behulp van de functies FileTableRootPath (Transact-SQL) en GetFileNamespacePath (Transact-SQL)) zoals te zien is in het volgende voorbeeld. De functie GetFileNamespacePath
retourneert standaard het relatieve pad van het bestand onder het hoofdpad voor de database.
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
Beperkingen
Nestniveau
Belangrijk
U kunt niet meer dan 15 niveaus van submappen opslaan in de map FileTable. Wanneer u 15 niveaus met submappen opslaat, kan het laagste niveau geen bestanden bevatten, omdat deze bestanden een extra niveau vertegenwoordigen.
Lengte van volledige padnaam
Belangrijk
Het NTFS-bestandssysteem ondersteunt padnamen die veel langer zijn dan de limiet van 260 tekens van de Windows-shell en de meeste Windows-API's. Daarom is het mogelijk om bestanden te maken in de bestandshiërarchie van een FileTable met behulp van Transact-SQL die u niet kunt weergeven of openen met Windows Verkenner of vele andere Windows-toepassingen, omdat de volledige padnaam langer is dan 260 tekens. U kunt deze bestanden echter blijven openen met behulp van Transact-SQL.
Het volledige pad naar een item dat is opgeslagen in een FileTable
Het volledige pad naar een bestand of map die in een FileTable is opgeslagen, begint met de volgende elementen:
De share die is ingeschakeld voor I/O-toegang van FILESTREAM-bestanden op het niveau van het SQL Server-exemplaar.
De
DIRECTORY_NAME
is opgegeven op databaseniveau.De
FILETABLE_DIRECTORY
opgegeven op FileTable-niveau.
De resulterende hiërarchie ziet er als volgt uit:
\\<machine>\<instance-level FILESTREAM share>\<database-level directory>\<FileTable directory>\
Deze maphiërarchie vormt de basis van de bestandsnaamruimte van de FileTable. Onder deze maphiërarchie worden de FILESTREAM-gegevens voor de FileTable opgeslagen als bestanden en als submappen die ook bestanden en submappen kunnen bevatten.
Het is belangrijk om te bedenken dat de directoryhiërarchie, die onder de FILESTREAM-share op het niveau van het exemplaar is aangemaakt, een virtuele directoryhiërarchie is. Deze hiërarchie wordt opgeslagen in de SQL Server-database en wordt niet fysiek weergegeven in het NTFS-bestandssysteem. Alle bewerkingen die toegang hebben tot bestanden en mappen onder de FILESTREAM-share en in de FileTables die deze bevat, worden onderschept en verwerkt door een SQL Server-onderdeel dat is ingesloten in het bestandssysteem.
De semantiek van de hoofdmappen op het niveau van het exemplaar, de database en de FileTable
In deze adreslijsthiërarchie ziet u de volgende semantiek:
De FILESTREAM-share op exemplaarniveau wordt geconfigureerd door een beheerder en opgeslagen als eigenschap van de server. U kunt de naam van deze share wijzigen met behulp van SQL Server Configuration Manager. Een hernoemingsbewerking wordt pas van kracht nadat de server opnieuw is opgestart.
De
DIRECTORY_NAME
op databaseniveau is standaard null wanneer u een nieuwe database maakt. Een beheerder kan deze naam instellen of wijzigen met behulp van de instructieALTER DATABASE
. De naam moet uniek zijn (in een niet-hoofdlettergevoelige vergelijking) in deze context.Doorgaans geeft u de
FILETABLE_DIRECTORY
naam op als onderdeel van de instructieCREATE TABLE
wanneer u een FileTable maakt. U kunt deze naam wijzigen met behulp van de opdrachtALTER TABLE
.U kunt de naam van deze hoofdmappen niet wijzigen via I/O-bewerkingen voor bestanden.
U kunt deze rootmappen niet openen met exclusieve bestandshandvatten.
De kolom is_directory in het FileTable-schema
De volgende tabel beschrijft de interactie tussen de is_directory
kolom en de file_stream
kolom die de FILESTREAM-gegevens in een FileTable bevat.
is_directory waarde | waarde van de bestandsstroom | Gedrag |
---|---|---|
FALSE |
NULL |
Dit is een ongeldige combinatie die wordt gedetecteerd door een door het systeem gedefinieerde beperking. |
FALSE |
<value> |
Het item vertegenwoordigt een bestand. |
TRUE |
NULL |
Het item vertegenwoordigt een map. |
TRUE |
<value> |
Dit is een ongeldige combinatie die wordt gedetecteerd door een door het systeem gedefinieerde beperking. |
Virtuele Netwerk Namen (VNN's) gebruiken met Always On-beschikbaarheidsgroepen
Wanneer de database die FILESTREAM- of FileTable-gegevens bevat, deel uitmaakt van een beschikbaarheidsgroep:
De functies FILESTREAM en FileTable accepteren of retourneren namen van virtuele netwerken (VNN's) in plaats van computernamen. Zie FILESTREAM- en FileTable-functies (Transact-SQL)voor meer informatie over deze functies.
Alle toegang tot FILESTREAM- of FileTable-gegevens via de bestandssysteem-API's moet VNN's gebruiken in plaats van computernamen. Zie FILESTREAM en FileTable met AlwaysOn-beschikbaarheidsgroepen (SQL Server)voor meer informatie.