V on-line pokyny pro skript, který vytváří TSQLTutorJoins ukázkové databáze z mých dřívějších sloupce, doporučuji použít osql.exe spustit skript z příkazového řádku. Prokázat, proč jsem založila tento měsíc sloupec na RAISERROR a cool trik jsem se naučil o použití RAISERROR stavu parametru. Pomocí speciální hodnoty parametru RAISERROR state můžete vynutit ukončení složitého skriptu a zabránit jeho provedení v nesprávné databázi.,
RAISERROR má tři primární složky: chybový text, závažnost a stav. Chybový text může být buď hard-kódované nebo parametrizované zprávy nebo číslo chyby z trvalé uživatelem definované zprávy. Chcete-li vytvořit vlastní trvalé zprávy, viz SQL Server Books Online (BOL) o tom, jak používat systémově uložený postup sp_addmessage.
závažnost má několik definovaných úrovní. Chyby definované vývojářem se pohybují v závažnosti od 1 do 16, přičemž 16 je nejběžnější a výchozí. Ne všechna oddělení však fungují stejným způsobem., Tabulka 1 zobrazuje kategorie závažnosti, jak zobrazují zprávy v analyzátoru dotazů a jak jsou volitelně přihlášeny do protokolu aplikací Prohlížeče událostí. Do zprávy protokolu v Prohlížeči Událostí, můžete použít S LOG ve vašem RAISERROR nebo vytvořit trvalé zprávu pomocí sp_addmessage s with_log parametr nastaven na „TRUE“. Druhá volba zapíše každý výskyt této chyby do protokolu aplikace Prohlížeče událostí, i když RAISERROR neurčuje s logem., Zjednodušený RAISERROR syntaxe je
RAISERROR (error, severity, state) WITH LOG
například,
RAISERROR ('Test Severity 16', 16, 1) WITH LOG
vrátí následující chybové zprávy okně Query Analyzer:
Error Number InfoServer: Msg 50000, Level 16, State 1, Line 1Error Text Test Severity 16
první řádek je Číslo Chyby Info, jako Tabulka 1 popisuje. Dotaz Analyzer nezobrazuje tyto informace pro závažnost 10. Barva displeje se mění z černé na severity 1 až 9 na červenou na 11 a vyšší. Ukázkový skript v seznamu 1 zobrazuje další syntaxi a nápady pro použití RAISERROR, včetně použití více jazyků a parametrizace., Pro více informací o použití RAISERROR a různých závažností, viz BOL v následujících tématech: chybové zprávy, úrovně závažnosti chybové zprávy, RAISERROR, pomocí RAISERROR, FORMATMESSAGE, a xp_logevent.
kromě závažnosti podporuje RAISERROR také stav. Mnoho skriptů pro vytváření objektů vytváří databázi a poté tabulky, postupy a tak dále v nově vytvořené databázi. Ale co když skript nevytvořil databázi správně? Všechny další objekty (např.,, tabulky, postupy) by byly vytvořeny ve vaší výchozí databázi, která by pro správce systémů mohla být master. Vytváří všechny uživatelem definované objekty v databázi v hlavní databázi je přesně to, co nechceš, tak až budeš skriptování automatizovaný proces, můžete zahrnout hodnoty pro stát, která ukončí skript, pokud je fatální (podle vaší definice), dojde k chybě.
nastavení hodnoty stavu se však nemusí vždy jevit jako ukončení relace. Aplikace, jako je analyzátor dotazů, se mohou automaticky znovu připojit, když je připojení přerušeno., Chcete-li plně vidět výhodu možnosti státu, musíte použít nástroj, jako je osql.exe, který se po přerušení připojení automaticky nepřipojí. Zde je způsob, jak otestovat možnost státu. Z příkazového řádku zadejte
osql -E -q"RAISERROR('Test Severity 16', 16, 1) WITH LOG"
Tento kód vrátí
Test Severity 161>
a zůstávají v osql.exe. Spuštěna následující řádek z příkazového řádku:
osql -E -q"RAISERROR('Test State 127', 16, 127) WITH LOG"
vrátí chybovou zprávu
Test State 127
a vrátí se do příkazového řádku, ukončení z osql.exe. Pokud používáte osql.,exe zvýšit chybová stavu 127 po vytvoření databáze selže, chyba státu, ukončí spojení a v důsledku toho, zbytek skriptu, takže se nemusíte vytvářet objekty ve špatném databáze.
na začátku skriptu vytváření databáze TSQLTutorJoins.sql, k dispozici od „ke Stažení Kód“ odkaz v horní části stránky, je následující kód:
Pokud databáze není vytvořena, spojení je přerušeno a objektu-vytvoření části skript nespustí. Nastavil jsem to tak, abyste zjistili, jaké jsou chyby (např.,, mimo místo na disku, nesprávná cesta) před spuštěním zbytku skriptu. Bez tohoto kódu, pokud vytvoření databáze selže a skript pokračuje, vytvoří všechny testovací objekty ve výchozí databázi.
při automatizaci skriptů může být velmi užitečné ukončit provádění závažné chyby. Zvýšením chyby s vysokou závažností, přihlášením do protokolu aplikací Prohlížeče událostí a důležitějším zvýšením stavu 127 zajistíte, že v nesprávné databázi nebudou vytvořeny žádné objekty skriptu., Navíc po přihlášení do aplikačního protokolu Prohlížeče událostí máte auditní stopu události.