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 u een nieuwe FileTable maakt of een bestaande FileTable wijzigt of neer zet.
Een filetable maken
Een FileTable is een gespecialiseerde gebruikerstabel met een vooraf gedefinieerd en vast schema. In dit schema worden FILESTREAM-gegevens, bestands- en mapgegevens en bestandskenmerken opgeslagen. Zie FileTable-schema voor meer informatie over het FileTable-schema.
U kunt een nieuwe FileTable maken met behulp van Transact-SQL of SQL Server Management Studio. Omdat een FileTable een vast schema heeft, hoeft u geen lijst met kolommen op te geven. Met de eenvoudige syntaxis voor het maken van een FileTable kunt u het volgende opgeven:
Een mapnaam. In de maphiërarchie van FileTable wordt deze map op tabelniveau het onderliggende element van de databasemap die is opgegeven op databaseniveau en het bovenliggende element van de bestanden of mappen die zijn opgeslagen in de tabel.
De naam van de sortering die moet worden gebruikt voor bestandsnamen in de
Namekolom van de FileTable.De namen die moeten worden gebruikt voor de 3 primaire sleutel en unieke beperkingen die automatisch worden gemaakt.
Een FileTable maken met Transact-SQL
Maak een FileTable door de instructie CREATE TABLE aan te roepen met de AS FILETABLE optie. Omdat een FileTable een vast schema heeft, hoeft u geen lijst met kolommen op te geven. U kunt de volgende instellingen opgeven voor de nieuwe FileTable:
FILETABLE_DIRECTORY. Hiermee geeft u de map die fungeert als de hoofdmap voor alle bestanden en mappen die zijn opgeslagen in de FileTable. Deze naam moet uniek zijn voor alle bestandstabelmapnamen in de database. Vergelijking voor uniekheid is niet hoofdlettergevoelig, ongeacht de huidige sorteringsinstellingen.Deze waarde heeft een gegevenstype nvarchar(255) en maakt gebruik van een vaste sortering van
Latin1_General_CI_AS_KS_WS.De mapnaam die u opgeeft, moet voldoen aan de vereisten van het bestandssysteem voor een geldige mapnaam.
Deze naam moet uniek zijn voor alle bestandstabelmapnamen in de database. Vergelijking voor uniekheid is niet hoofdlettergevoelig, ongeacht de huidige sorteringsinstellingen.
Als u geen mapnaam opgeeft wanneer u de FileTable maakt, wordt de naam van de FileTable zelf gebruikt als mapnaam.
FILETABLE_COLLATE_FILENAME. Hiermee geeft u de naam van de sortering die moet worden toegepast op deNamekolom in de FileTable.De opgegeven sortering moet hoofdletterongevoelig zijn om te voldoen aan de semantiek van Windows-bestandsnamen.
Als u geen waarde opgeeft voor
FILETABLE_COLLATE_FILENAMEof als u opgeeftdatabase_default, neemt de kolom de sortering van de huidige database over. Als de huidige databasesortering hoofdlettergevoelig is, wordt er een fout gegenereerd en mislukt deCREATE TABLEbewerking.
U kunt ook de namen opgeven die moeten worden gebruikt voor de 3 primaire sleutel en unieke beperkingen die automatisch worden gemaakt. Als u geen namen opgeeft, genereert het systeem namen zoals verderop in dit artikel wordt beschreven.
FILETABLE_PRIMARY_KEY_CONSTRAINT_NAMEFILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAMEFILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME
Voorbeelden
In het volgende voorbeeld wordt een nieuwe FileTable gemaakt en worden door de gebruiker gedefinieerde waarden opgegeven voor zowel FILETABLE_DIRECTORYFILETABLE_COLLATE_FILENAMEals .
CREATE TABLE DocumentStore AS FILETABLE
WITH (
FILETABLE_DIRECTORY = 'DocumentTable',
FILETABLE_COLLATE_FILENAME = database_default
);
GO
In het volgende voorbeeld wordt ook een nieuwe FileTable gemaakt. Omdat door de gebruiker gedefinieerde waarden niet worden opgegeven, wordt de waarde van FILETABLE_DIRECTORY de naam van de FileTable, de waarde van FILETABLE_COLLATE_FILENAME wordt database_default, en ontvangen de primaire sleutel en unieke beperkingen door het systeem gegenereerde namen.
CREATE TABLE DocumentStore AS FILETABLE;
GO
Een FileTable maken met SQL Server Management Studio
Vouw in Objectverkenner de objecten onder de geselecteerde database uit, klik met de rechtermuisknop op de map Tabellen en selecteer vervolgens New FileTable.
Met deze optie opent u een nieuw scriptvenster met een Transact-SQL scriptsjabloon die u kunt aanpassen en uitvoeren om een FileTable te maken. Gebruik de optie Waarden opgeven voor sjabloonparameters in het menu Query om het script eenvoudig aan te passen.
Vereisten en beperkingen voor het maken van een FileTable
U kunt een bestaande tabel niet wijzigen om deze te converteren naar een FileTable.
De bovenliggende map die eerder op databaseniveau is opgegeven, moet een niet-null-waarde hebben. Zie Vereisten voor FileTable inschakelen voor informatie over het opgeven van de map op databaseniveau.
Een FileTable vereist een geldige FILESTREAM-bestandsgroep, omdat een FileTable een FILESTREAM-kolom bevat. U kunt desgewenst een geldige FILESTREAM-bestandsgroep opgeven als onderdeel van de opdracht voor het
CREATE TABLEmaken van een FileTable. Als u geen bestandsgroep opgeeft, gebruikt FileTable de standaard FILESTREAM-bestandsgroep voor de database. Als de database geen FILESTREAM-bestandsgroep heeft, wordt er een fout gegenereerd.U kunt geen tabelbeperking maken als onderdeel van een
CREATE TABLE...AS FILETABLE-instructie. U kunt de beperking echter later toevoegen met behulp van eenALTER TABLEinstructie.U kunt geen FileTable maken in de
tempdbdatabase of in een van de andere systeemdatabases.U kunt een FileTable niet maken als een tijdelijke tabel.
Een bestandstabel wijzigen
Omdat een FileTable een vooraf gedefinieerd en vast schema heeft, kunt u de kolommen niet toevoegen of wijzigen. U kunt echter aangepaste indexen, triggers, beperkingen en andere opties toevoegen aan een FileTable.
Zie ALTER TABLE beheren voor informatie over het gebruik van de instructie om de FileTable-naamruimte in of uit te schakelen, inclusief de door het systeem gedefinieerde beperkingen.
De map voor een filetable wijzigen met behulp van Transact-SQL
Roep de ALTER TABLE instructie aan en geef een geldige nieuwe waarde op voor de SET optie voor FILETABLE_DIRECTORY.
Example
ALTER TABLE filetable_name SET (FILETABLE_DIRECTORY = N'directory_name');
GO
De map voor een FileTable wijzigen met behulp van SQL Server Management Studio
Klik in Objectverkenner met de rechtermuisknop op de FileTable en selecteer Eigenschappen om het dialoogvenster Tabeleigenschappen te openen. Voer op de pagina FileTable een nieuwe waarde in voor de mapnaam van FileTable.
Vereisten en beperkingen voor het wijzigen van een FileTable
U kunt de waarde van
FILETABLE_COLLATE_FILENAMEniet wijzigen.U kunt de door het systeem gedefinieerde kolommen van een FileTable niet wijzigen, verwijderen of uitschakelen.
U kunt geen nieuwe gebruikerskolommen, berekende kolommen of persistente berekende kolommen toevoegen aan een FileTable.
Een FileTable verwijderen
U kunt een FileTable verwijderen met behulp van de gewone syntaxis voor de instructie DROP TABLE .
Wanneer u een FileTable neerhaalt, worden de volgende objecten ook verwijderd:
Alle kolommen van de FileTable en alle objecten die aan de tabel zijn gekoppeld, zoals indexen, beperkingen en triggers, worden ook verwijderd.
De map FileTable en de submappen die deze bevat, verdwijnen uit het FILESTREAM-bestand en de maphiërarchie van de database.
De DROP TABLE opdracht mislukt als er geopende bestandsingangen zijn in de bestandsnaamruimte van de FileTable. Zie FileTables beheren voor informatie over het sluiten van geopende ingangen.
Andere databaseobjecten worden gemaakt wanneer u een FileTable maakt
Wanneer u een nieuwe FileTable maakt, worden er ook enkele door het systeem gedefinieerde indexen en beperkingen gemaakt. U kunt deze objecten niet wijzigen of verwijderen; ze verdwijnen alleen wanneer de FileTable zelf wordt verwijderd. Als u de lijst met deze objecten wilt bekijken, voert u een query uit op de catalogusweergave sys.filetable_system_defined_objects.
--View all objects for all filetables, unsorted
SELECT *
FROM sys.filetable_system_defined_objects;
GO
--View sorted list with friendly names
SELECT OBJECT_NAME(parent_object_id) AS 'FileTable',
OBJECT_NAME(object_id) AS 'System-defined Object'
FROM sys.filetable_system_defined_objects
ORDER BY FileTable, 'System-defined Object';
GO
Indexen die worden gemaakt wanneer u een nieuwe FileTable maakt
Wanneer u een nieuwe FileTable maakt, worden ook de volgende door het systeem gedefinieerde indexen gemaakt:
| Columns | Index type | Clustered |
|---|---|---|
[path_locator] ASC |
Primaire sleutel | Nee. |
[parent_path_locator] ASC, [name] ASC |
Uniek | Nee. |
[stream_id] ASC |
Uniek | Nee. |
Beperkingen die worden gemaakt wanneer u een nieuwe FileTable maakt
Wanneer u een nieuwe FileTable maakt, worden ook de volgende door het systeem gedefinieerde beperkingen gemaakt:
| Constraints | Dwingt |
|---|---|
Standaardbeperkingen voor de volgende kolommen:creation_timeis_archiveis_directoryis_hiddenis_offlineis_readonlyis_systemis_temporarylast_access_timelast_write_timepath_locatorstream_id |
Met de door het systeem gedefinieerde standaardbeperkingen worden standaardwaarden afgedwongen voor de opgegeven kolommen. |
| Beperkingen controleren | De door het systeem gedefinieerde controlebeperkingen dwingen de volgende vereisten af: Geldige bestandsnamen. Geldige bestandskenmerken. Bovenliggend object moet een map zijn. De naamruimtehiërarchie wordt vergrendeld tijdens het bewerken van bestanden. |
Naamconventie voor de door het systeem gedefinieerde beperkingen
De eerder beschreven beperkingen die door het systeem zijn gedefinieerd, hebben een naam in de indeling <constraintType>_<tablename>[_<columnname>]_<uniquifier> waarin:
'<constraint_type> is CK (controlebeperking), DF (standaardbeperking), FK (refererende sleutel), PK (primaire sleutel) of UQ (unieke beperking).
<uniquifier>is een door het systeem gegenereerde tekenreeks om de naam uniek te maken. Deze tekenreeks kan de FileTable-naam en een unieke ID bevatten.