Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
NameFileTable.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í:
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.
FILETABLE_COLLATE_FILENAME. Určuje název kolace, která má být použita na sloupecNamev tabulce FileTable.Zadaná kolace musí být nerozlišující velikost písmen, aby byla v souladu se sémantikou pojmenování souborů systému Windows.
Pokud nezadáte hodnotu pro
FILETABLE_COLLATE_FILENAME, nebo zadátedatabase_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 aCREATE TABLEoperace selže.
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_NAMEFILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAMEFILETABLE_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 TABLEpří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 TABLEpříkazu.Tabulku FileTable nemůžete vytvořit v
tempdbdatabá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_timeis_archiveis_directoryis_hiddenis_offlineis_readonlyis_systemis_temporarylast_access_timelast_write_timepath_locatorstream_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.