Přemýšleli jste někdy, že váš SQL server může fungovat jako souborový server? Šance jsou, že jste nevěděl – ani já, dokud jsem se snažil FileTable funkce poprvé zavedeny v SQL Server 2012. Na FileTable funkce je dalším krokem v FILESTREAM technologie, která umožňuje ukládat soubory a složky ve speciální tabulky, ale přístup k nim pomocí tradiční Windows SMB protokolu – uživatelé mohou vytvářet/číst/upravit/smazat soubory z generic sdílení souborů, aniž by si toho byli vědomi základní SQL příkazy. Jinými slovy, FileTables nám umožňují používat SQL tabulky pro non-transakční přístup.
podle mého názoru je jednou z největších výhod funkce FileTables ukládání atributů souborů (například Last-WriteTime, Last_AccessTime atd.), který umožňuje správcům audit operací přístupu k souborům pomocí odpovídajících sloupců v souborových souborech. V tomto článku bych vám rád ukázal, jak lze SQL Server 2012-2016 použít pro ukládání souborů a jaké auditorské mechanismy mohou být využity pro soubory a složky umístěné ve sdílených souborech SQL. Před vytvořením tabulek souborů v databázi musí být splněny některé předpoklady a projdeme všechny kroky potřebné k přípravě tabulek souborů, poté vytvoříme několik tabulek a uvidíme, jak s nimi můžeme pracovat.
Pojďme začít od povolení FILESTREAM pro SQL 2012 instance a vytvoření nové databáze FILESTREAM:
https://msdn.microsoft.com/en-us/library/gg509097%28v=sql.120%29.aspx
Povolit FILESTREAM v systému Windows na úrovni
- Otevřete SQL správce Konfigurace:
- ujistěte Se, že následující zaškrtávací políčka jsou vybrány:
II Povolit FILESTREAM v Instance SQL úroveň:
- V SQL Server Management Studio, klepněte na tlačítko Nový Dotaz zobrazit Editor Dotazů.
- V Query Editor, zadejte následující Transact-SQL kód:
EXEC sp_configure filestream_access_level, 2
KONFIGURACI
III Poskytují FILESTREAM Filegroup na Úrovni Databáze,
dříve Než můžeme vytvořit FileTables v databázi, databáze musí mít FILESTREAM skupina souborů. Další informace o této podmínce naleznete v části Vytvořit databázi s podporou FILESTREAM.
Vzhledem k tomu, že budu vytvářet nové databáze jsem se nejprve vytvořte složku obsahovat FileTables:
a pak definovat Filestream filegroup v tento kód:
VYTVOŘENÍ DATABÁZE, FILESERVER
PRIMÁRNÍ (NAME = FS
FILENAME = ‚c:\FILESERVER\FSdat.mdf‘),
FILEGROUP FileStreamFS OBSAHUJE FILESTREAM(NAME = FSgr,
FILENAME = ‚c:\FILESERVER\fs1‘)
PŘIHLASTE se (JMÉNO = FSlog, FILENAME = c:\ FILESERVER \FSlog.ldf‘)
GO
pozor! Jak říká MS: „Pro soubor FILESTREAM filegroup, název souboru odkazuje na cestu. Cesta k poslední složce musí existovat a poslední složka nesmí existovat.“V předcházejícím kódu, c:\FILESERVER musí existovat, ale fs1 nesmí v době spuštění příkazu Vytvořit databázi.
Filegroups databáze majetku stránka nyní zobrazuje FileStreamFS filestream pro FILESERVER databáze:
IV Povolit Non-Transakční Přístup na Úrovni Databáze,
Jakmile máme databázi vytvořenou poslední krok v přípravě to pro FileTables je enbable non-transakční přístup na úrovni databáze.
FileTables umožňují aplikacím systému Windows získat popisovač souborů systému Windows pro FILESTREAM data bez nutnosti transakce. Chcete-li povolit tento non-transakční přístup k souborům uloženým v SQL Serveru, musíte určit požadovanou úroveň non-transakční přístup na úrovni databáze pro každou databázi, která bude obsahovat FileTables. Pokud spustíme následující Kód –
vyberte ze sys DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
.database_filestream_options;
…uvidíme, že žádné databáze mají non-transakční přístup povolen:
povolit non-transakční přístup k souborům na úrovni databáze (pro FILESERVER databáze v tomto případě) ještě jedna možnost musí být uvedeno – adresář pro FileTables: to je adresář jsem vytvořil v začátku článku – C:\FILESERVER, ale název adresáře by měl být napsaný bez písmene jednotky a symbol „\“:
ALTER DATABASE FILESERVER
SADA FILESTREAM ( NON_TRANSACTED_ACCESS = PLNÝ, DIRECTORY_NAME = N’FILESERVER‘ )
„V FileTable hierarchii složek, tato databáze-adresář úroveň se stává dítě sdílet název zadaný pro FILESTREAM na úrovni instance, a rodiče FileTab les vytvořil v databázi“ – to znamená, FILESERVER bude podsložky MSSQLSERVER podíl jako nemám ani to změnili v kroku I-2. Pro více informací, prosím, viz Práce s Adresáře a Cesty v FileTables
Provádění tohoto kódu znovu ukáže non-transakční přístup byl povolen úspěšně:
VYBERTE DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
Z sys.database_filestream_options;
následující kód zobrazuje název adresáře pro FILESERVER databse:
Vyberte DB_NAME ( database_id), direcory_name
Z sys.database_filestream_options;
Tady je „SQL“ soubor sdílet, že uživatelé mohou nyní používat na ukládání svých souborů a složek:
Pokud jsem měl přejmenoval výchozím nastavení MSSQLSERVER podíl v něco jako SHARE1 v kroku I-2, tam by byl žádné informace o tom SQL Server zapojen – z pohledu uživatele by to být jen obyčejné sdílení souborů.
všechny předpoklady pro vytvoření souborů jsou nyní splněny a můžeme pokračovat ve vytváření souborů.
práce s tabulkami souborů SQL Server-část 2