Pokročilé hledání             

HELIOS iNuvio      FAQ     Uživatelský panel    

Registrovat     Přihlásit se

    Obsah fóra> Časté dotazy> Systémové dotazy
    Verze pro tisk

Záplatování pro SQL procedury, funkce a triggery

Zapisují se opakující se dotazy na řešení systémových problémů z provozu Helios Orange. Patří sem dotazy typu "Po instalaci SQL serveru se nemohu přihlásit do Heliosu." apod.

Moderátor: orange_moderator

Odeslat odpověď
Příspěvek: 1 • Stránka 1 z 1
  • Odpovědět s citací

Záplatování pro SQL procedury, funkce a triggery

Příspěvekod jan.zocek v 30.01.2019 11:25

Záplatování pro SQL procedury, funkce a triggery
V rámci lednové (2019) verze byla uvolněna funkcionalita, která umožňuje záplatovat SQL procedury, funkce a triggery, aniž by uživatel musel spouštět každý den HELIOS pomocí HQL skriptu.

Nová tabulka
V systémové (nulté) databázi je nově tabulka TabHeliosPatches, do které se nainsertuje opravená verze dané procedury, funkce či triggeru. HELIOS pak při kontrole konzistence (probíhá každý den při prvním spuštění HELIOSu) nahradí definici zalinkovanou natvrdo do programu tou, která bude ve výše uvedené tabulce, a pak teprve provede porovnání vůči databázi. Toto zafunguje i při tvorbě nové databáze.

Tabulka obsahuje sloupce Verze, Popis a Skript. Verze je verze programu, pro kterou je daný skript platný. Skripty pro jinou verzi se neberou v potaz, neuplatní se. Popis je jakýkoliv popisný text, není nijak vyžadován.

Skript obsahuje vlastní CREATE skript pro danou proceduru, funkci či trigger. MUSÍ začínat (bez mezer) CREATE PROC nebo CREATE FUNCTION nebo CREATE TRIGGER. Jiné texty se neuplatní.

Tabulka může obsahovat více skriptů pro danou verzi a daný SQL objekt, při kontrole konzistence se ale uplatní pouze ten poslední (tříděno podle ID).

Přehled opravných skriptů je možno zobrazit akcí Záplaty nad přehledem databází v systémové konfiguraci.

Sloupce tabulky TabHeliosPatches:
Popis NVARCHAR(255) - libovolný popis, může být prázdný
Verze NVARCHAR(12) - verze programu (např. 030020180979)
Skript NTEXT - vlastní skript

POZOR!
U skriptu pro tvorbu triggeru se nesmí použít prefix dbo. před názvem triggeru či tabulky!! Správně: CREATE TRIGGER ht_..... ON Tab... FOR

Skript s úpravou
Pro zjednodušení zápisu skriptu do databáze je připravena uložená procedura dbo.hp_AplikujZaplatu s parametry @Verze NVARCHAR(12), @Popis NVARCHAR(255), @Skript NVARCHAR(MAX). Stačí vytvořit HQL skript, který zavolá tuto proceduru a spustit ho nejlépe v systémové (nulté) databázi.

Např. EXEC dbo.hp_AplikujZaplatu N'030020181200', N'muj popis - neni povinny', N'CREATE PROC dbo.hp_............'
Uložená procedura provede následující:
* zapíše skript do tabulky TabHeliosPatches v systémové databázi
* projde všechny online databáze dané instalace a provede
** pokud sedí verze DB a programu, tak ALTER (procedury, funkce nebo triggeru)
** zapíše do TabHeliosPatches, pokud tato existuje
Toto snižuje časovou náročnost aplikování úpravy hlavně u vícedatových instalací.
Zapisování uvozovek do těla procedury při její tvorbě musí být zdvojené:
* tvorba procedury = N'CREATE PROC ... ''text v uvozovkách'' pokračování procedury'
* vzniklá procedura = CREATE PROC ... 'text v uvozovkách' pokračování procedury

Případné problémy
Pokud se jedná např. o účetní firmu, kde některé databáze jsou systémovými databázemi jiných licencí HELIOSu, může dojít k nekonzistenci úpravy v případě, že je umožněn přístup nové licenci po aplikování úpravy.

Nová licence si totiž vytvoří svoji tabulku TabHeliosPatches, která ale neobsahuje danou úpravu a ta se tak při kontrole konzistence neuplatní a provede se návrat na původní verzi upraveného objektu.

V tomto případě je nutné spustit v systémové databázi účetní firmy (nikoliv v systémové nové licence!!) uloženou proceduru dbo.hp_RozkopirujZaplaty, která rozkopíruje existující záplaty tam, kde chybí. Tedy EXEC dbo.hp_RozkopirujZaplaty.
jan.zocek
 
Příspěvky: 126
Registrován: 10.06.2013 07:47
Firma: ASOL
Nahoru

Odeslat odpověď
Příspěvek: 1 • Stránka 1 z 1

Zpět na Systémové dotazy

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 8 návštevníků

         
  • Tým • Smazat všechny cookies z fóra • Všechny časy jsou v UTC + 1 hodina
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group, Český překlad – phpBB.cz

© copyright 2024 Asseco Solutions, a.s.