Dela via


Komma åt FileTables med API:er för fil Input-Output

gäller för:SQL Server

Beskriver hur filsystem-I/O fungerar på en FileTable.

Kom igång med fil-I/O-API:er med FileTables

Den primära användningen av FileTables förväntas ske via Windows-filsystemet och fil-I/O-API:er. FileTables stöder icke-transaktionell åtkomst via den omfattande uppsättningen tillgängliga fil-I/O-API:er.

  1. Fil-I/O-API-åtkomst börjar vanligtvis med att hämta en logisk UNC-sökväg för filen eller katalogen. Program kan använda en Transact-SQL-instruktion med funktionen GetFileNamespacePath (Transact-SQL) för att hämta den logiska sökvägen för filen eller katalogen. Mer information finns i Arbeta med kataloger och sökvägar i FileTables.

  2. Sedan använder programmet den här logiska sökvägen för att hämta ett handtag till filen eller katalogen och göra något med objektet. Sökvägen kan skickas till alla filsystems-API-funktioner som stöds, till exempel CreateFile() eller CreateDirectory(), för att skapa eller öppna en fil och få ett filhandtag. Handtaget kan sedan användas för att strömma data, räkna upp eller organisera kataloger, hämta eller ange filattribut, ta bort filer eller kataloger och så vidare.

Skapa filer och kataloger i en Filtabell

En fil eller katalog kan skapas i en FileTable genom att anropa fil-I/O-API:er som CreateFile eller CreateDirectory.

  • Alla skapandeflaggor, delningslägen och åtkomstlägen stöds. Detta inkluderar filskapande, borttagning och ändring på plats. Det finns också stöd för uppdateringar av filnamnområdet, t.ex. skapande/borttagning av katalog, byt namn på och flyttåtgärder.

  • Skapandet av en ny fil eller katalog motsvarar skapandet av en ny rad i den underliggande FileTable.

  • För filer lagras dataströmmen i kolumnen file_stream. för kataloger är den här kolumnen null.

  • För filer innehåller kolumnen is_directory värdet false. För kataloger innehåller den här kolumnen true.

  • Delning och samtidig åtkomst framtvingas när flera samtidiga I/O-åtgärder eller Transact-SQL åtgärder påverkar samma fil eller katalog i hierarkin.

Läsa filer och kataloger i en filtabell

Read Committed-isoleringssemantik tvingas fram i SQL Server för all fil-I/O-åtkomst på strömdata och attributdata.

Skriva och uppdatera filer och kataloger i en Filtabell

  • Alla fil-I/O-skriv- eller uppdateringsåtgärder på en FileTable är icke-transaktionella. Det innebär att ingen SQL Server-transaktion är bunden till dessa åtgärder och inga ACID-garantier tillhandahålls.

  • Fil-I/O-strömning och uppdateringar på plats stöds för FileTable.

  • Uppdateringar av FILESTREAM-data eller attribut via fil-I/O-API:er resulterar i uppdateringar av motsvarande kolumner för file_stream och filattribut i FileTable.

Ta bort filer och kataloger i en filtabell

Alla I/O-API-semantiker för Windows tillämpas när du tar bort en fil eller katalog.

  • Det går inte att ta bort en katalog om katalogen innehåller filer eller underkataloger.

  • Om du tar bort en fil eller katalog tas motsvarande rad bort från FileTable. Detta motsvarar att ta bort raden via en Transact-SQL åtgärd.

Filsystemåtgärder som stöds

FileTables stöder filsystem-API:er som är relaterade till följande filsystemåtgärder:

  • Kataloghantering

  • Filhantering

FileTables stöder inte följande åtgärder:

  • Diskhantering

  • Volymhantering

  • Transaktionell NTFS

Ytterligare överväganden för fil-I/O-åtkomst till FileTables

Använda virtuella nätverksnamn (VNN) med AlwaysOn-tillgänglighetsgrupper

När databasen som innehåller FILESTREAM- eller FileTable-data tillhör en AlwaysOn-tillgänglighetsgrupp bör all åtkomst till FILESTREAM- eller FileTable-data via filsystemets API:er använda virtuella nätverk i stället för datornamn. Mer information finns i FILESTREAM och FileTable med AlwaysOn-tillgänglighetsgrupper (SQL Server).

Partiella uppdateringar

En skrivbar referens som hämtas för FILESTREAM-data i en FileTable med hjälp av funktionen GetFileNamespacePath (Transact-SQL) kan användas för att göra partiella uppdateringar på plats av FILESTREAM-innehållet. Det här beteendet skiljer sig från den transaktionsbaserade FILESTREAM-åtkomsten via ett handtag som erhålls genom att anropa OpenSQLFILESTREAM() och överföra en explicit transaktionskontext.

Transaktionssemantik

När du kommer åt filerna i en FileTable med hjälp av fil-I/O-API:er är dessa åtgärder inte associerade med några användartransaktioner och har följande ytterligare egenskaper:

  • Eftersom åtkomst till FILESTREAM-data i en FileTable inte är associerad med någon transaktion, har den inga specifika isoleringsregler. SQL Server kan dock använda interna transaktioner för att framtvinga låsning eller samtidighetssemantik på FileTable-data. Alla interna transaktioner av den här typen görs med läsbekräftad isolering.

  • Det finns inga ACID-garantier för dessa icke-transakterade åtgärder på FILESTREAM-data. Konsekvensgarantierna liknar dem för filuppdateringar som görs av program i filsystemet.

  • Dessa ändringar kan inte återställas.

Men filestream-kolumnen i en FileTable kan också nås med transaktionell FILESTREAM-åtkomst genom att anropa OpenSqlFileStream(). Den här typen av åtkomst kan vara helt transaktionell och kommer att konsekvent uppfylla alla nivåer av transaktioner som för närvarande stöds.

Samtidighetskontroll

SQL Server tillämpar samtidighetskontroll för FileTable-åtkomst mellan filsystemprogram och mellan filsystemprogram och Transact-SQL program. Den här samtidighetskontrollen uppnås genom att lämpliga lås tas på FileTable-raderna.

Utlösare

Att skapa, ändra eller ta bort filer eller kataloger eller deras attribut via filsystemet resulterar i motsvarande infognings-, uppdaterings- eller borttagningsåtgärder i FileTable. Alla associerade Transact-SQL DML-utlösare utlöses som en del av dessa åtgärder.

Filsystemfunktioner som stöds i FileTables

Förmåga Stödd Kommentarer
Oplocks Ja Det finns stöd för oplocks på nivå 2, nivå 1, batch och filter.
utökade attribut Nej
Omställningspunkter Nej
Beständiga ACL:er Nej
namngivna strömmar Nej
Sparse Files Ja Gleshet kan endast anges för filer och påverkar lagringen av dataströmmen. Eftersom FILESTREAM-data lagras på NTFS-volymer stöder funktionen FileTable glesa filer genom att vidarebefordra begäranden till NTFS-filsystemet.
komprimering Ja
Kryptering Ja
TxF Nej
Fil-ID Nej
Objekt-ID Nej
symboliska länkar Nej
Hårda länkar Nej
Korta namn Nej
Meddelanden om ändringar av kataloger Nej
byteintervalllåsning Ja Begäranden om byteintervalllåsning skickas till NTFS-filsystemet.
minnesmappade filer Nej
Avbryt I/O Ja
Säkerhet Nej Säkerhet på Windows-resursnivå och säkerhet på SQL Server-tabell- och kolumnnivå tillämpas.
USN journal Nej Metadataändringar i filer och kataloger i en FileTable är DML-åtgärder i en SQL Server-databas. Därför loggas de i motsvarande databasloggfil. De loggas dock inte i NTFS USN-journalen (förutom ändringar i storlek).

Sql Server-funktioner för ändringsspårning kan användas för att samla in liknande information.

Se även

Läsa in filer i FileTables
Arbeta med kataloger och sökvägar i FileTables
Åtkomst till FileTables med Transact-SQL
FileTable DDL, Functions, Lagrade procedurer och vyer