Megosztás a következőn keresztül:


Fájltábla létrehozása, módosítása vagy elvetése

A következőkre vonatkozik:SQL Server

Bemutatja, hogyan hozhat létre új FileTable-t, illetve hogyan módosíthatja vagy elvetheti a meglévő FileTable-t.

Fájltábla létrehozása

A FileTable egy speciális felhasználói tábla, amely előre definiált és rögzített sémával rendelkezik. Ez a séma a FILESTREAM-adatokat, a fájl- és könyvtáradatokat, valamint a fájlattribútumokat tárolja. A FileTable sémával kapcsolatos információkért tekintse meg a FileTable-sémát.

Új FileTable-t Transact-SQL vagy SQL Server Management Studióval hozhat létre. Mivel a FileTable egy rögzített sémával rendelkezik, nem kell megadnia az oszlopok listáját. A FileTable létrehozásának egyszerű szintaxisa lehetővé teszi a következőket:

  • Könyvtárnév. A FileTable mappahierarchiában ez a táblaszintű könyvtár lesz az adatbázis szintjén megadott adatbáziskönyvtár gyermekkönyvtára, valamint a táblában tárolt fájlok vagy könyvtárak szülője.

  • A Fájltábla oszlopában a Name fájlnevekhez használandó rendezés neve.

  • A 3 elsődleges kulcshoz használandó nevek és az automatikusan létrehozott egyedi korlátozások.

Fájltábla létrehozása Transact-SQL segítségével

Hozzon létre egy Fájltáblát úgy, hogy meghívja a CREATE TABLE utasítást a AS FILETABLE beállítással. Mivel a FileTable egy rögzített sémával rendelkezik, nem kell megadnia az oszlopok listáját. Az új FileTable következő beállításait adhatja meg:

  1. FILETABLE_DIRECTORY. Megadja azt a könyvtárat, amely a Fájltáblában tárolt összes fájl és könyvtár gyökérkönyvtáraként szolgál. Ennek a névnek egyedinek kell lennie az adatbázisban található összes FileTable könyvtárnév között. Az egyediség összehasonlítása nem érzékeny a kis- és nagybetűkre, függetlenül az aktuális kódolási beállításoktól.

    • Ez az érték nvarchar(255) adattípussal rendelkezik, és rögzített rendezést Latin1_General_CI_AS_KS_WShasznál.

    • A megadott címtárnévnek meg kell felelnie a fájlrendszer érvényes könyvtárnévre vonatkozó követelményeinek.

    • Ennek a névnek egyedinek kell lennie az adatbázisban található összes FileTable könyvtárnév között. Az egyediség összehasonlítása kis- és nagybetűkre érzéketlen, függetlenül az aktuális sorrend beállításoktól.

    • Ha nem ad meg könyvtárnevet a FileTable létrehozásakor, akkor a rendszer maga a FileTable nevet használja a címtárnévként.

  2. FILETABLE_COLLATE_FILENAME. Megadja a Fájltábla Name oszlopára alkalmazandó kolláció nevét.

    1. A megadott rendezésnek nem kell megkülönböztetnie a kis- és nagybetűket, hogy megfeleljen a Windows fájlnevezési elveknek.

    2. Ha nem ad meg értéket FILETABLE_COLLATE_FILENAME, vagy megadja database_default, az oszlop örökli az aktuális adatbázis kollációját. Ha a jelenlegi adatbázis-rendezés megkülönbözteti a kis- és nagybetűkre vonatkozó adatokat, a rendszer hibát jelez, és a CREATE TABLE művelet meghiúsul.

  3. Megadhatja a 3 elsődleges kulcshoz használandó neveket és az automatikusan létrehozott egyedi korlátozásokat is. Ha nem ad meg neveket, akkor a rendszer a jelen cikk későbbi részében ismertetett módon hoz létre neveket.

    • FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME
    • FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME
    • FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME

Példák

Az alábbi példa létrehoz egy új FileTable-t, és felhasználó által definiált értékeket ad meg mind a FILETABLE_DIRECTORY, mind a FILETABLE_COLLATE_FILENAME számára.

CREATE TABLE DocumentStore AS FILETABLE
WITH (
    FILETABLE_DIRECTORY = 'DocumentTable',
    FILETABLE_COLLATE_FILENAME = database_default
);
GO

Az alábbi példa egy új FileTable-t is létrehoz. Mivel a felhasználó által megadott értékek nincsenek megadva, az érték FILETABLE_DIRECTORY a FileTable neve lesz, az érték FILETABLE_COLLATE_FILENAME database_default lesz, és az elsődleges kulcs és az egyedi korlátozások rendszer által generált neveket kapnak.

CREATE TABLE DocumentStore AS FILETABLE;
GO

FileTable létrehozása az SQL Server Management Studióval

Az Object Explorerben bontsa ki az objektumokat a kijelölt adatbázis alatt, majd kattintson a jobb gombbal a Táblák mappára, majd válassza az Új fájltábla lehetőséget.

Ez a beállítás megnyit egy új szkriptablakot, amely egy Transact-SQL parancsfájlsablont tartalmaz, amelyet testre szabhat és futtathat a FileTable létrehozásához. A szkript egyszerű testreszabásához használja a Lekérdezés menüben a Sablonparaméterek értékeinek megadása lehetőséget.

A FileTable létrehozásának követelményei és korlátozásai

  • A meglévő táblákat nem módosíthatja fájltáblává alakításához.

  • Az adatbázis szintjén korábban megadott szülőkönyvtárnak nem null értékűnek kell lennie. Az adatbázisszintű címtár megadásáról további információt a FileTable előfeltételeinek engedélyezése című témakörben talál.

  • A Fájltáblákhoz érvényes FILESTREAM-fájlcsoport szükséges, mivel a FileTable fájlstream oszlopot tartalmaz. Opcióként megadhat egy érvényes FILESTREAM-fájlcsoportot a FileTable létrehozásához szükséges CREATE TABLE utasítás részeként. Ha nem ad meg fájlcsoportot, akkor a FileTable az adatbázis alapértelmezett FILESTREAM fájlcsoportját használja. Ha az adatbázis nem rendelkezik FILESTREAM-fájlcsoporttal, a rendszer hibát jelez.

  • Az CREATE TABLE...AS FILETABLE utasítás részeként nem hozhat létre táblakorlátozást. A kényszert azonban később is hozzáadhatja egy ALTER TABLE utasítással.

  • Az adatbázisban vagy a többi rendszeradatbázisban nem hozhat létre Fájltáblát tempdb .

  • A FileTable nem hozható létre ideiglenes táblaként.

Fájltábla módosítása

Mivel a FileTable előre definiált és rögzített sémával rendelkezik, az oszlopok nem vehetők fel és nem módosíthatók. Azonban hozzáadhat egyéni indexeket, eseményindítókat, korlátozásokat és egyéb beállításokat a FileTable-hoz.

A FileTable névtér engedélyezésére vagy letiltására vonatkozó utasítással ALTER TABLE kapcsolatos információkért, beleértve a rendszer által meghatározott korlátozásokat, olvassa el a FileTables kezelése című témakört.

Fájltábla könyvtárának módosítása a Transact-SQL használatával

Hívja meg a ALTER TABLE utasítást, és adjon meg egy érvényes új értéket a SET beállításhoz a FILETABLE_DIRECTORY részére.

Example

ALTER TABLE filetable_name SET (FILETABLE_DIRECTORY = N'directory_name');
GO

Fájltábla könyvtárának módosítása az SQL Server Management Studióval

Az Objektumkezelőben kattintson a jobb gombbal a Fájltáblára, és válassza a Tulajdonságok lehetőséget a Táblázat tulajdonságai párbeszédpanel megnyitásához. A FileTable lapon adjon meg egy új értéket a FileTable könyvtárnévhez.

A FileTable módosításának követelményei és korlátozásai

  • A (z) FILETABLE_COLLATE_FILENAMEértéke nem módosítható.

  • A FileTable rendszer által definiált oszlopait nem módosíthatja, nem helyezheti el vagy tilthatja le.

  • Nem adhat hozzá új felhasználói oszlopokat, számított oszlopokat vagy megőrzött számított oszlopokat a FileTable-hoz.

Fájltábla elvetése

A FileTable elvetése a DROP TABLE utasítás szokásos szintaxisával történik.

Fájltábla elvetésekor a következő objektumok is el lesznek vetve:

  • A fájltábla összes oszlopa és a táblához társított összes objektum( például indexek, megkötések és triggerek) szintén el lesz ejtve.

  • A FileTable könyvtár és a benne lévő alkönyvtárak eltűnnek az adatbázis FILESTREAM-fájljából és könyvtárhierarchiájából.

A DROP TABLE parancs meghiúsul, ha a Fájltábla fájlnévterében nyitott fájlleírók találhatók. A nyitott leírók bezárásáról további információt a Fájltáblák kezelése című témakörben talál.

Fájltábla létrehozásakor más adatbázis-objektumok is létrejönnek

Új FileTable létrehozásakor a rendszer által definiált indexek és korlátozások is létrejönnek. Ezeket az objektumokat nem módosíthatja és nem helyezheti el; csak akkor tűnnek el, ha maga a FileTable el van dobva. Az objektumok listájának megtekintéséhez kérdezze le a katalógusnézetet 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

Új FileTable létrehozásakor létrehozott indexek

Új FileTable létrehozásakor a rendszer a következő rendszer által definiált indexeket is létrehozza:

Columns Index típusa Clustered
[path_locator] ASC Elsődleges kulcs Nem
[parent_path_locator] ASC, [name] ASC Unique Nem
[stream_id] ASC Unique Nem

Új FileTable létrehozásakor létrehozott korlátozások

Új FileTable létrehozásakor a rendszer a következő rendszer által meghatározott korlátozásokat is létrehozza:

Constraints Érvényesíti
Az alábbi oszlopok alapértelmezett korlátozásai:

creation_time
is_archive
is_directory
is_hidden
is_offline
is_readonly
is_system
is_temporary
last_access_time
last_write_time
path_locator
stream_id
A rendszer által definiált alapértelmezett korlátozások a megadott oszlopok alapértelmezett értékeit kényszerítik ki.
Korlátozások ellenőrzése A rendszer által meghatározott ellenőrzési korlátozások a következő követelményeket érvényesítik:

Érvényes fájlnevek.
Érvényes fájlattribútumok.
A szülőobjektumnak könyvtárnak kell lennie.
A névtérhierarchia zárolva van a fájlkezelés során.

Elnevezési konvenció a rendszer által meghatározott korlátozásokhoz

A korábban ismertetett rendszer által definiált korlátozások neve olyan formátumban <constraintType>_<tablename>[_<columnname>]_<uniquifier> van, ahol:

  • `<constraint_type> lehet CK (ellenőrzési kényszer), DF (alapértelmezett kényszer), FK (idegen kulcs), PK (elsődleges kulcs) vagy UQ (egyedi kényszer).

  • <uniquifier> egy rendszer által létrehozott sztring, amely egyedivé teszi a nevet. Ez a sztring a FileTable nevet és egy egyedi azonosítót tartalmazhat.