Michael Firsov

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

  1. Otevřete SQL správce Konfigurace:
    02
  2. ujistěte Se, že následující zaškrtávací políčka jsou vybrány:
    03

II Povolit FILESTREAM v Instance SQL úroveň:

  1. V SQL Server Management Studio, klepněte na tlačítko Nový Dotaz zobrazit Editor Dotazů.
  2. V Query Editor, zadejte následující Transact-SQL kód:
    EXEC sp_configure filestream_access_level, 2
    KONFIGURACI04

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:
01
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.

05

10

Filegroups databáze majetku stránka nyní zobrazuje FileStreamFS filestream pro FILESERVER databáze:
07

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:
08

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‘ )

09

„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;

09-1

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;

11

Tady je „SQL“ soubor sdílet, že uživatelé mohou nyní používat na ukládání svých souborů a složek:10-1110-12

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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.