Sdílet prostřednictvím


Vytvoření, změna nebo vyřazení tabulky FileTable

platí pro:SQL Server

Popisuje, jak vytvořit novou tabulku FileTable nebo změnit nebo odstranit existující FileTable.

Vytvoření tabulky FileTable

FileTable je specializovaná uživatelská tabulka s předdefinovaným a pevným schématem. Toto schéma ukládá data FILESTREAM, informace o souborech a adresářích a atributy souborů. Informace o schématu FileTable naleznete v tématu Schéma FileTable.

Novou souborovou tabulku můžete vytvořit pomocí Transact-SQL nebo aplikace SQL Server Management Studio. Vzhledem k tomu, že FileTable má pevné schéma, nemusíte zadávat seznam sloupců. Jednoduchá syntaxe pro vytvoření tabulky FileTable umožňuje zadat:

  • Název adresáře. V hierarchii složek FileTable se tento adresář na úrovni tabulky stane podřízeným adresářem databáze zadaným na úrovni databáze a nadřazeným objektem souborů nebo adresářů uložených v tabulce.

  • Název řazení, které se má použít pro názvy souborů ve sloupci Name FileTable.

  • Názvy, které se mají použít pro 3 primární klíče a jedinečná omezení, která se automaticky vytvoří.

Vytvoření tabulky FileTable pomocí Transact-SQL

Vytvořte FileTable voláním příkazu CREATE TABLE s AS FILETABLE možností. Vzhledem k tomu, že FileTable má pevné schéma, nemusíte zadávat seznam sloupců. Pro novou tabulku FileTable můžete zadat následující nastavení:

  1. FILETABLE_DIRECTORY. Určuje adresář, který slouží jako kořenový adresář pro všechny soubory a adresáře uložené v FileTable. Tento název by měl být jedinečný mezi všemi názvy adresářů FileTable v databázi. Porovnání pro jedinečnost nerozlišuje malá a velká písmena a nebere v potaz aktuální nastavení kolace.

    • Tato hodnota má datový typ nvarchar(255) a používá pevnou kolaci Latin1_General_CI_AS_KS_WS.

    • Zadaný název adresáře musí splňovat požadavky systému souborů pro platný název adresáře.

    • Tento název by měl být jedinečný mezi všemi názvy adresářů FileTable v databázi. Porovnání pro zjištění jedinečnosti je nezávislé na velikosti písmen, a to bez ohledu na aktuální nastavení řazení.

    • Pokud při vytváření Tabulky FileTable nezadáte název adresáře, použije se název samotné tabulky FileTable jako název adresáře.

  2. FILETABLE_COLLATE_FILENAME. Určuje název kolace, která má být použita na sloupec Name v tabulce FileTable.

    1. Zadaná kolace musí být nerozlišující velikost písmen, aby byla v souladu se sémantikou pojmenování souborů systému Windows.

    2. Pokud nezadáte hodnotu pro FILETABLE_COLLATE_FILENAME, nebo zadáte database_default, sloupec zdědí kolaci aktuální databáze. Pokud aktuální kolace databáze rozlišují malá a velká písmena, vyvolá se chyba a CREATE TABLE operace selže.

  3. Můžete také zadat názvy, které se mají použít pro 3 primární klíč a jedinečná omezení, která se automaticky vytvoří. Pokud nezadáte názvy, systém vygeneruje názvy, jak je popsáno dále v tomto článku.

    • FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME
    • FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME
    • FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME

Examples

Následující příklad vytvoří novou FileTable a určuje uživatelem definované hodnoty pro obě FILETABLE_DIRECTORY a FILETABLE_COLLATE_FILENAME.

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

Následující příklad také vytvoří novou FileTable. Vzhledem k tomu, že uživatelem definované hodnoty nejsou zadány, hodnota FILETABLE_DIRECTORY se stane názvem FileTable, hodnota FILETABLE_COLLATE_FILENAME se stane database_default a primární klíč a jedinečná omezení obdrží systémem generované názvy.

CREATE TABLE DocumentStore AS FILETABLE;
GO

Vytvoření souborové tabulky pomocí aplikace SQL Server Management Studio

V Průzkumníku objektů rozbalte objekty ve vybrané databázi, potom klikněte pravým tlačítkem myši na složku Tabulky a pak vyberte Nová tabulka FileTable.

Tato možnost otevře nové okno skriptu, které obsahuje šablonu skriptu Transact-SQL, kterou můžete přizpůsobit a spustit a vytvořit FileTable. Pomocí možnosti Zadat hodnoty pro parametry šablony v nabídce Dotaz můžete skript snadno přizpůsobit.

Požadavky a omezení pro vytvoření tabulky FileTable

  • Existující tabulku nelze změnit a převést ji na FileTable.

  • Nadřazený adresář, který byl dříve zadán na úrovni databáze, nesmí být null. Informace o určení adresáře na úrovni databáze naleznete v tématu Povolení požadavků pro FileTable.

  • FileTable vyžaduje platnou skupinu souborů FILESTREAM, protože FileTable obsahuje sloupec FILESTREAM. Volitelně můžete zadat platnou skupinu souborů FILESTREAM jako součást CREATE TABLE příkazu pro vytvoření FileTable. Pokud nezadáte skupinu souborů, použije FileTable výchozí skupinu souborů FILESTREAM pro databázi. Pokud databáze nemá skupinu souborů FILESTREAM, dojde k chybě.

  • Omezení tabulky nelze vytvořit jako součást CREATE TABLEpříkazu ...AS FILETABLE . Omezení ale můžete přidat později pomocí ALTER TABLE příkazu.

  • Tabulku FileTable nemůžete vytvořit v tempdb databázi ani v žádné jiné systémové databázi.

  • Tabulku FileTable nelze vytvořit jako dočasnou tabulku.

Upravit FileTable

Vzhledem k tomu, že FileTable má předdefinované a pevné schéma, nemůžete přidávat ani měnit jeho sloupce. Do tabulky FileTable ale můžete přidat vlastní indexy, triggery, omezení a další možnosti.

Informace o použití příkazu ALTER TABLE k povolení nebo zakázání oboru názvů FileTable, včetně systémově definovaných omezení, naleznete v tématu Správa souborových tabulek.

Změna adresáře pro FileTable pomocí Transact-SQL

Zavolejte příkaz ALTER TABLE a zadejte platnou SET novou hodnotu pro možnost .FILETABLE_DIRECTORY

Example

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

Změna adresáře pro FileTable pomocí aplikace SQL Server Management Studio

V Průzkumníku objektů klikněte pravým tlačítkem na Souborovou tabulku a vyberte Vlastnosti a otevřete dialogové okno Vlastnosti tabulky . Na stránce FileTable zadejte novou hodnotu pro název adresáře FileTable.

Požadavky a omezení pro změnu tabulky FileTable

  • Nemůžete změnit hodnotu FILETABLE_COLLATE_FILENAME.

  • Sloupce definované systémem v tabulce FileTable nemůžete měnit, vyřadit ani zakázat.

  • Do Tabulky FileTable nemůžete přidávat nové sloupce uživatelů, počítané sloupce ani trvalé počítané sloupce.

Přetažení tabulky FileTable

FileTable můžete odstranit pomocí běžné syntaxe příkazu DROP TABLE .

Při odstranění FileTable jsou také odstraněny následující objekty:

  • Odstraní se také všechny sloupce FileTable a všechny objekty přidružené k tabulce, jako jsou indexy, omezení a triggery.

  • Adresář FileTable a podadresáře, které obsahoval, zmizí ze souboru FILESTREAM a hierarchie adresáře databáze.

Příkaz DROP TABLE selže, pokud jsou v oboru názvů souborů FileTable otevřené popisovače souborů. Informace o zavření otevřených popisovačů najdete v tématu Správa tabulek souborů.

Další databázové objekty se vytvoří při vytváření tabulky FileTable.

Při vytváření nové tabulky FileTable se vytvoří také některé indexy a omezení definované systémem. Tyto objekty nelze změnit ani odstranit; zmizí pouze v případech, kdy se samotná tabulka FileTable zahodí. Pokud chcete zobrazit seznam těchto objektů, zadejte dotaz na zobrazení katalogu 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

Indexy vytvořené při vytváření nové tabulky FileTable

Při vytváření nové FileTable se vytvoří také následující systémem definované indexy:

Columns Typ indexu Clustered
[path_locator] ASC Primární klíč Ne
[parent_path_locator] ASC, [name] ASC Jedinečný Ne
[stream_id] ASC Jedinečný Ne

Omezení vytvořená při vytváření nové tabulky FileTable

Při vytváření nové tabulky FileTable se vytvoří také následující systémově definovaná omezení:

Constraints Vynucuje
Výchozí omezení pro následující sloupce:

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
Výchozí omezení definovaná systémem vynucuje výchozí hodnoty pro zadané sloupce.
Kontrola omezení Omezení kontroly definovaná systémem vynucují následující požadavky:

Platné názvy souborů.
Platné atributy souboru.
Nadřazený objekt musí být adresář.
Hierarchie názvového prostoru je při manipulaci se soubory uzamčena.

Zásady vytváření názvů pro systémově definovaná omezení

Systémově definovaná omezení popsaná výše jsou pojmenována ve formátu <constraintType>_<tablename>[_<columnname>]_<uniquifier> , kde:

  • < Constraint_type> je CK (kontrola omezení), DF (výchozí omezení), FK (cizí klíč), PK (primární klíč) nebo UQ (jedinečné omezení).

  • <uniquifier> je systémem vygenerovaný řetězec, který vytvoří jedinečný název. Tento řetězec může obsahovat název FileTable a jedinečný identifikátor.