Vývoj aplikací: Programování aplikací serveru

7 7 7

Režimy řízení provádění 7rutin CLR (common language run time) (klauzule 7EXECUTION CONTROL)

7

Jako administrátor databáze nebo vývojář aplikace budete 7zřejmě chtít chránit sestavení přidružená k externím rutinám 7produktu 7DB2 7Universal Database (UDB) před nevítanými zásahy omezením 7akcí rutiny na dobu běhu. Rutiny .NET CLR produktu 7DB2 7podporují specifikaci režimu řízení provedení, který určuje, 7jaký typ akcí může rutina v době běhu provádět. V době běhu může produkt DB2 UDB 7zjistit, zda se rutina pokusila provést akci mimo obor 7svého režimu řízení provedení, což může být užitečné 7při určování, zda bylo sestavení kompromitováno.

7

Chcete-li nastavit režim řízení provedení rutiny 7CLR, zadejte pro tuto rutinu do příkazu CREATE 7volitelnou klauzuli EXECUTION CONTROL. Platné režimy 7jsou následující:

7 7

Chcete-li změnit režim řízení provedení 7v existující rutině CLR, proveďte příkaz ALTER PROCEDURE 7nebo ALTER FUNCTION.

7

Pokud není klauzule EXECUTION CONTROL pro 7rutinu CLR zadána, bude rutina CLR standardně 7spuštěna v nejvíce omezujícím režimu řízení 7provedení - SAFE. Rutiny vytvořené v tomto 7režimu řízení provedení mají přístup pouze ke 7zdrojům řízeným správcem databází. Méně omezující 7režimy řízení provedení umožňují rutině přístup 7k souborům v lokálním souborovém systému (FILEREAD nebo 7FILEWRITE) nebo v síti. Režim řízení provedení UNSAFE 7určuje, že chování rutiny nemá být žádným 7způsobem omezeno. Rutiny definované v režimu 7řízení provedení UNSAFE mohou spouštět binární 7kód.

7

Tyto režimy řízení reprezentují hierarchii 7povolených akcí. Režim řízení na vyšší úrovni vždy 7obsahuje akce, které jsou v hierarchii pod ním 7povoleny. Například režim řízení provedení NETWORK 7povoluje rutině přístup k souborům v síti, 7k souborům v lokálním souborovém systému a ke 7zdrojům, které jsou spravovány správcem 7databází. Používejte vždy nejvíce omezující režim 7řízení provedení a vyhýbejte se používání režimu 7UNSAFE.

7

Pokud produkt DB2 UDB v době běhu zjistí, že se 7rutina CLR pokouší o akci mimo obor svého režimu 7řízení provedení, vrátí produkt DB2 UDB chybu (SQLSTATE 38501).

7

Klauzule EXECUTION CONTROL může být zadána pouze 7pro rutiny CLR LANGUAGE. 7Obor použitelnosti klauzule EXECUTION CONTROL je 7omezen pouze na rutinu CLR 7.NET a není možné jej rozšířit na žádné další rutiny, 7které lze volat.

7 7 7

Maximální přesnost a počet desetinných míst 7v rutinách CLR (common language run time)

7

Datový typ DECIMAL je v produktu DB2 Universal Database (UDB) reprezentován přesností na 31 číslic s 28 desetinnými 7místy. Datový typ .NET CLR System.Decimal je omezen na 7přesnost 29 číslic a 28 desetinných míst. 7Proto 7nesmí externí rutiny CLR produktu DB2 UDB přiřadit do proměnné datového typu System.Decimal hodnotu větší 7než (2^96)-1, což je největší 7hodnota, kterou lze reprezentovat pomocí 29 platných 7číslic a 28 desetinných míst. Pokud k takovému přiřazení dojde, produkt DB2 UDB vydá běhovou 7chybu (SQLSTATE 22003, SQLCODE -413).

7

Je-li při provádění příkazu rutiny CREATE 7definován parametr datového typu DECIMAL s větším 7počtem desetinných míst než 28, produkt DB2 UDB 7ohlásí chybu (SQLSTATE 742611, SQLCODE -604).

[ Začátek stránky |Předchozí stránka | Další stránka | Obsah ]