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-
Hierin wordt beschreven hoe I/O van het bestandssysteem werkt op een FileTable.
Aan de slag met bestands-I/O-API's met FileTables
Het primaire gebruik van FileTables wordt verwacht via het Windows-bestandssysteem en de I/O-API's van het Windows-bestandssysteem. FileTables biedt ondersteuning voor niet-transactionele toegang via de uitgebreide set beschikbare I/O-API's voor bestanden.
Toegang tot bestands-I/O-API begint meestal met het verkrijgen van een logisch UNC-pad voor het bestand of de map. Toepassingen kunnen een Transact-SQL instructie gebruiken met de GetFileNamespacePath (Transact-SQL) functie om het logische pad voor het bestand of de map te verkrijgen. Zie Werken met mappen en paden in FileTablesvoor meer informatie.
Vervolgens gebruikt de toepassing dit logische pad om een ingang voor het bestand of de map te verkrijgen en iets met het object te doen. Het pad kan worden doorgegeven aan elke ondersteunde API-functie van het bestandssysteem, zoals CreateFile() of CreateDirectory(), om een bestand te maken of te openen en een ingang te verkrijgen. De ingang kan vervolgens worden gebruikt om gegevens te streamen, mappen te inventariseren of te organiseren, bestandskenmerken op te halen of in te stellen, bestanden of mappen te verwijderen, enzovoort.
Bestanden en mappen maken in een FileTable
Een bestand of map kan worden gemaakt in een FileTable door I/O-API's voor bestanden aan te roepen, zoals CreateFile of CreateDirectory.
Alle aanmaaksoptievlaggen, deelmodi en toegangsmodes worden ondersteund. Dit omvat het maken, verwijderen en in-place wijzigen van bestanden. Ook ondersteund zijn bestandsnaamruimte-updates, zoals het maken/verwijderen van mappen, het wijzigen en verplaatsen van bewerkingen.
Het maken van een nieuw bestand of een nieuwe map komt overeen met het maken van een nieuwe rij in de onderliggende FileTable.
Voor bestanden worden de streamgegevens opgeslagen in de kolom file_stream; voor mappen is deze kolom null.
Voor bestanden bevat de kolom is_directoryonwaar. Voor mappen bevat deze kolom waar.
Delen en gelijktijdigheid van toegang worden afgedwongen wanneer meerdere gelijktijdige I/O-bewerkingen van bestanden of Transact-SQL bewerkingen van invloed zijn op hetzelfde bestand of dezelfde map in de hiƫrarchie.
Bestanden en mappen lezen in een FileTable
Semantiek voor Read Committed-isolatie wordt afgedwongen in SQL Server voor alle bestandstoegangsbewerkingen voor I/O op stream- en attribuutgegevens.
Bestanden en mappen schrijven en bijwerken in een FileTable
Alle schrijf- of updatebewerkingen voor bestanden in een FileTable zijn niet-transactioneel. Dat wil gezegd, er is geen SQL Server-transactie gebonden aan deze bewerkingen en er worden geen ACID-garanties geboden.
Ondersteuning wordt geboden voor alle streaming en in-place updates van bestands-I/O in de FileTable.
Updates van de FILESTREAM-gegevens of -kenmerken via I/O-API's van bestanden resulteren in updates van de bijbehorende kolommen file_stream en bestandskenmerken in de FileTable.
Bestanden en mappen verwijderen in een FileTable
Alle I/O API-semantiek van Windows-bestanden worden afgedwongen wanneer u een bestand of map verwijdert.
Het verwijderen van een map mislukt als de map bestanden of submappen bevat.
Als u een bestand of map verwijdert, wordt de bijbehorende rij uit de FileTable verwijderd. Dit komt overeen met het verwijderen van de rij via een Transact-SQL bewerking.
Ondersteunde bestandssysteembewerkingen
FileTables ondersteunt de bestandssysteem-API's met betrekking tot de volgende bestandssysteembewerkingen:
Directorybeheer
Bestandsbeheer
FileTables bieden geen ondersteuning voor de volgende bewerkingen:
Schijfbeheer
Volumebeheer
Transactionele NTFS
Aanvullende overwegingen voor bestands-I/O-toegang tot FileTables
VN's (Virtual Network Names) gebruiken met AlwaysOn-beschikbaarheidsgroepen
Wanneer de database met FILESTREAM- of FileTable-gegevens deel uitmaakt van een Always On-beschikbaarheidsgroep, moeten alle toegangsmethoden tot FILESTREAM- of FileTable-gegevens via de bestandsysteem-API's VNN's gebruiken in plaats van computernamen. Zie FILESTREAM en FileTable met AlwaysOn-beschikbaarheidsgroepen (SQL Server)voor meer informatie.
Gedeeltelijke updates
Een beschrijfbare ingang die is verkregen voor FILESTREAM-gegevens in een FileTable met behulp van de GetFileNamespacePath (Transact-SQL) functie kan worden gebruikt om in-place, gedeeltelijke updates voor de FILESTREAM-inhoud te maken. Dit gedrag verschilt van de transacted FILESTREAM-toegang via een ingang die is verkregen door OpenSQLFILESTREAM() aan te roepen en een expliciete transactiecontext door te geven.
Transactionele semantiek
Wanneer u de bestanden in een FileTable opent met behulp van I/O-API's voor bestanden, zijn deze bewerkingen niet gekoppeld aan gebruikerstransacties en hebben de volgende aanvullende kenmerken:
Omdat niet-transactede toegang tot FILESTREAM-gegevens in een FileTable niet is gekoppeld aan een transactie, heeft deze geen specifieke isolatiesemantiek. SQL Server kan echter gebruikmaken van interne transacties om semantiek voor vergrendeling of gelijktijdigheid af te dwingen op de FileTable-gegevens. Interne transacties van dit type worden uitgevoerd met gelezen-gecommitteerde isolatie.
Er zijn geen ACID-garanties voor deze niet-transactie bewerkingen op FILESTREAM-gegevens. De consistentiegaranties zijn vergelijkbaar met die voor bestandsupdates die worden uitgevoerd door toepassingen in het bestandssysteem.
Deze wijzigingen kunnen niet worden teruggedraaid.
De kolom FILESTREAM in een FileTable kan echter ook worden geopend met transactionele FILESTREAM-toegang door OpenSqlFileStream()aan te roepen. Dit soort toegang kan volledig transactioneel zijn en zal consistent alle transactionele niveaus respecteren die momenteel worden ondersteund.
Gelijktijdigheidsbeheer
SQL Server dwingt gelijktijdigheidsbeheer af voor FileTable-toegang tussen bestandssysteemtoepassingen en tussen bestandssysteemtoepassingen en Transact-SQL toepassingen. Dit gelijktijdigheidsbeheer wordt bereikt door de juiste vergrendelingen op de rijen van de FileTable toe te passen.
Triggers
Het maken, wijzigen of verwijderen van bestanden of mappen of hun kenmerken via het bestandssysteem resulteert in bijbehorende invoeg-, update- of verwijderbewerkingen in de FileTable. Alle gekoppelde Transact-SQL DML-triggers worden geactiveerd als onderdeel van deze bewerkingen.
Bestandssysteemfunctionaliteit ondersteund in FileTables
Vermogen | Ondersteund | Opmerkingen |
---|---|---|
Oplocks | Ja | Er is ondersteuning voor oplocks op niveau 2, niveau 1, batch en filter. |
uitgebreide kenmerken | Nee | |
reparsepunten | Nee | |
permanente ACL's | Nee | |
Benoemde Streams | Nee | |
Sparse bestanden | Ja | Sparseness kan alleen worden ingesteld op bestanden en is van invloed op de opslag van de gegevensstroom. Omdat FILESTREAM-gegevens worden opgeslagen op NTFS-volumes, ondersteunt de functie FileTable sparse-bestanden door de aanvragen door te sturen naar het NTFS-bestandssysteem. |
Compressie | Ja | |
versleuteling | Ja | |
TxF | Nee | |
bestands-ids | Nee | |
Object-ID's | Nee | |
Symbolische koppelingen | Nee | |
vaste koppelingen | Nee | |
korte namen | Nee | |
meldingen voor adreslijstwijziging | Nee | |
bytebereikvergrendeling | Ja | Aanvragen voor bytebereikvergrendeling worden doorgegeven aan het NTFS-bestandssysteem. |
geheugengekoppelde bestanden | Nee | |
Annuleer I/O | Ja | |
Beveiliging | Nee | Beveiliging op Windows-shareniveau en SQL Server-tabel en beveiliging op kolomniveau worden afgedwongen. |
USN-logboek | Nee | Metagegevenswijzigingen in bestanden en mappen in een FileTable zijn DML-bewerkingen in een SQL Server-database. Daarom worden ze geregistreerd in het bijbehorende databaselogboekbestand. Ze worden echter niet geregistreerd in het NTFS USN-logboek (met uitzondering van wijzigingen in grootte). Sql Server-mogelijkheden voor het bijhouden van wijzigingen kunnen worden gebruikt om vergelijkbare informatie vast te leggen. |
Zie ook
Bestanden laden in FileTables
werken met mappen en paden in FileTables
Access FileTables met Transact-SQL-
FileTable DDL, Functies, Opgeslagen procedures en weergaven