Analýza databáze před převodem na MS SQL 2012
Napsal: 12.04.2013 09:56
Standardní databázi bez externích dolňků převedete na verzi MS SQL 2012 prostou zálohou a obnovou databáze. Pokud však databáze Helios Orange obsahuje zakázkové (externí) doplňky (externí akce, pluginy, externí triggery atd.), je třeba převodu těchto řešení věnovat speciální pozornost.
Obecné informace k problematice kompatibility z MS SQL 2012 naleznete zde:
https://public.helios.eu/inuvio/doc/cs/index.php?title=Kompatibilita_Helios_Orange_a_MS_SQL_2012
Problematický je zejména výskyt již nepodporované syntaxe zápisu příkazu RAISERROR.
Následujícím skriptem lze prohledat SQL objekty v databázi, které nepovolenou syntaxi obsahují:
Výskyt v řešeních typu plugin, je nutno řešit na úrovni zdrojových kódů tohoto řešení (je tedy nutné je mít k dispozici). Následující skript udělá seznam pluginů v databázi, které stojí za to prověřit:
Upozornění:
Tento článek si neklade za cíl kompletně popsat všechny možné případy a situace, které je třeba zohlednit při přechodu na MS SQL 2012. Bezchybný převod databáze je plně na zodpovědnosti a odborné způsobilosti realizátora.
Obecné informace k problematice kompatibility z MS SQL 2012 naleznete zde:
https://public.helios.eu/inuvio/doc/cs/index.php?title=Kompatibilita_Helios_Orange_a_MS_SQL_2012
Problematický je zejména výskyt již nepodporované syntaxe zápisu příkazu RAISERROR.
Následujícím skriptem lze prohledat SQL objekty v databázi, které nepovolenou syntaxi obsahují:
- Kód: Vybrat vše
SELECT
OBJECT_NAME(s.[object_id])
,o.[type]
,CASE o.[type]
WHEN 'P' THEN 'SQL Stored Procedure'
WHEN 'RF' THEN 'Replication-filter-procedure'
WHEN 'V' THEN 'View'
WHEN 'TR' THEN 'SQL DML trigger'
WHEN 'FN' THEN 'SQL scalar function'
WHEN 'IF' THEN 'SQL inline table-valued function'
WHEN 'TF' THEN 'SQL table-valued-function'
WHEN 'R' THEN 'Rule (old-style, stand-alone)'
WHEN 'D' THEN 'DEFAULT (stand-alone)'
ELSE '(unknown)'
END as Typ_Objektu
,s.[definition]
FROM sys.sql_modules s
INNER JOIN sys.objects o ON s.[object_id] = o.[object_id]
WHERE s.[definition] LIKE N'%RAISERROR [0-9@]%' -- N'%RAISERROR [^(]%' / druhá varianta
ORDER BY OBJECT_NAME(s.[object_id]) ASC;
Výskyt v řešeních typu plugin, je nutno řešit na úrovni zdrojových kódů tohoto řešení (je tedy nutné je mít k dispozici). Následující skript udělá seznam pluginů v databázi, které stojí za to prověřit:
- Kód: Vybrat vše
SELECT DISTINCT
SUBSTRING(UP,1,(CHARINDEX(N'.',UP))-1) as NazevDLL
,ISNULL((SELECT TOP 1 NazevVerejny FROM TabPluginInfo WHERE NazevSys = SUBSTRING(UP,1,(CHARINDEX(N'.',UP))-1)),
(SELECT TOP 1 (ISNULL((SELECT TOP 1 SUBSTRING(H.Hlaska,1,255) FROM TabExtHlasky H WHERE H.Jazyk = 1 AND H.GUIDText = E.Popis),E.Popis))
FROM TabExtKom E WHERE E.UP = TabExtKom.UP ORDER BY E.Popis ASC)) as NazevReseni
,ISNULL((SELECT TOP 1 VerzePluginu FROM TabPluginInfo WHERE NazevSys = SUBSTRING(UP,1,(CHARINDEX(N'.',UP))-1)),N'(neznámá)') as Verze
FROM TabExtKom
WHERE Typ = 3;
Upozornění:
Tento článek si neklade za cíl kompletně popsat všechny možné případy a situace, které je třeba zohlednit při přechodu na MS SQL 2012. Bezchybný převod databáze je plně na zodpovědnosti a odborné způsobilosti realizátora.