SQL FileStream - využití v systému Helios Orange

PříspěvekNapsal: 06.05.2014 11:33
od jan.havranek
Co je FILESTREAM?
FileStream je technologie MSSQL Serveru, která umožňuje ukládat a číst binární data (např. obrázky nebo dokumenty) z fyzického disku přímo do SQL dotazu, aniž by byly tyto soubory uloženy v tabulce v SQL databázi. Soubory jsou ukládány a čteny z vyhrazeného prostoru (FileStream filegroup) přímo na lokálním disku (NTFS). Tento prostor (adresář) se stává součástí struktury SQL databáze.

Výhodou uložení souborů do FileStream je rychlejší přístup k těmto datům (týká se souborů >2MB) a celkově menší zátěž zdrojů SQL Serveru. Obsah FileStream se také nezapočítává do limitu velikosti SQL databáze.
Obsluha nemusí (a ani standardně nemá) mít přímý přístup do adresáře FileStreamu, to zajišťuje služba SQL.
Obsah FileStream prostoru je součástí zálohy databáze (full backup)!
Více o technologii viz http://technet.microsoft.com/en-us/library/bb895234(v=sql.105).aspx

Jak se dá FILESTREAM použít v Helios Orange?
Pomocí registrovaného pluginu File Stream je možné založit v databázi FileStream prostor a do něj přesměrovat vybrané atributy vybraných tabulek. Například je možné sem přesměrovat ukládání Dokumentů. Funguje to tak že veškeré informace o dokumentu zůstavají v tabulce v databázi, ale samotný dokument (binární soubor) je uložen přímo na disk.
Z pohledu obsluhy nedojde k žádným změnám ve funkcionalitě systému.

Registrovaný plugin lze získat formou placené služby - naši konzultanti Vám umožní tento plugin stáhnout a pomohou Vám jej zprovoznit. Obracejte se prosím na hotline Helios Orange.

Jaké jsou podmínky použití?
1/ získání pluginu File Stream a jeho zprovoznění je podmíněno nákupem služby
2/ FileStream musí být povolen na úrovni služeb SQL
3/ FileStream musí být nastaven v konfiguraci samotného SQL Serveru
4/ FileStream vyžaduje instalaci minimálně SQLNCLI 2008 na jednotlivých počítačích, které spouští Helios
* informace k podporovaným verzím SQLNCLI najdete zde:
https://public.helios.eu/inuvio/doc/cs/index.php?title=Instalace_SQL_Native_Client_-_Spole%C4%8Dn%C3%A9_kapitoly
5/ v rámci FileStream prostoru na disku není možné ručně mazat jakékoliv soubory - smazání způsobí poškození konzistence databáze
6/ FileStream je možné nastavit pouze na těchto atributech:
* TabDokumenty.Dokument (přehled Pomocné číselníky - Dokument)
* TabDokumHistorie.Dokument (přehled Pomocné číselníky - historie Dokumentu)
* TabDokumenty.SignedDoc (přehled Pomocné číselníky - podpis nebo časové razítko Dokumentu)
* TabKmenZbozi.Obrazek (přehled Zboží a služby - Obrázek uložený na kartě)
* TabCisObr.obrazek (přehled Číselník obrázků [TPV - Vyráběné dílce] - Obrázek)
* TabVyrDokum.Dokument (přehled Výrobní dokumentace [TPV] - Dokument)

Co dělat když je smazán soubor na disku a dojde k poškození databáze?
Pokud se vymaže soubor uložený ve FileStream přímo na disku, dochází k porušení konzistence databáze a přehled s takovými daty nelze v Helios Orange zobrazit. V takovém případě je nutné konzistenci dat opravit. Oprava vždy odstraní z tabulky záznam, který se odkazuje na smazaný soubor!

Pro opravu je nutné na SQL Server spustit následující skript. V danou chvíli nesmí být nikdo ani v Helios Orange ani v databázi. Uživatel, který opravu spouští musí být systémový administrátor.
[místo HelioXXX je třeba uvést skutečné jméno poškozené databáze]

Kód: Vybrat vše
USE master
GO
ALTER DATABASE HeliosXXX SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
USE HeliosXXX
GO
DBCC CHECKTABLE (TabDokumenty, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS
GO
ALTER DATABASE HeliosXXX SET MULTI_USER
GO