Zpět na: SQL Server Výukový program Pro Začátečníky a Profesionály,
Jak Zvýšit Chyby Výslovně v SQL Serveru
V tomto článku Budu diskutovat o tom, jak zvýšit chyby výslovně v SQL Serveru s některými příklady spolu s budeme také diskutovat o různé možnosti, které můžeme použít s Raiserror v SQL Server., Přečtěte si náš předchozí článek, kde jsme diskutovali o příkladu systému Raise Error v reálném čase. V rámci tohoto článku budeme diskutovat o následujících ukazatelích.
- jak explicitně vyvolat chyby v SQL Serveru?
- Raise error using RAISERROR statement in SQL Server
- Raise Error using throw statement in SQL Server
- jaký je rozdíl mezi funkcí RAISERROR a příkazem throw?
- pochopení příkazu RaiseError s volbou Log.
- jak zvýšit chyby uložením chybové zprávy v tabulce SysMessage.,
jak explicitně vyvolat chyby v SQL Serveru?
Obecně platí, že chyby vychován v programu na předdefinovaných důvodů, jako je dělení čísla nulou, porušení primární klíč, porušení kontroly, porušení referenční integrity, atd. Ale pokud chceme, můžeme také vyvolat chybu ve vašich programech dvěma různými způsoby.,
- Raiserror
- hodit prohlášení (nová funkce SQL Serveru 2012)
Raiserror Syntaxe: Raiserror (errorid/errormsg, ZÁVAŽNOSTI, státní)
hodit Syntaxi: Hodit errorid, errormsg, stát
Příklad: Zvýšit při použití RAISERROR v SQL Server.
v následujícím uloženém postupu vyvoláme chybu, když je rozdělení 1 pomocí příkazu RAISERROR.,
Příklad provedení: EXEC spDivideBy1 10, 1
Příklad: Zvýšit Chybu pomocí hodit SQL Server.
výše uvedený postup lze také přepsat pomocí příkazu hodu namísto Raiserror jako následující.,
provedení: EXEC spDivideBy2 10, 1
jaký je rozdíl mezi funkcí RAISERROR a příkazem throw?
pokud použijeme některý ze dvou příkazů v programu pro vyvolání chyby bez pokusu a zachycení bloků, prohlášení RAISERROR po zvýšení chyby bude i nadále pokračovat v provádění programu, zatímco příkaz throw ukončí program abnormálně na tomto řádku., Ale pokud jsou použity v rámci pokusu bloku oba se budou chovat stejným způsobem, který je bude skákat přímo chytit blok od místa, kde došlo k chybě zvýšil.
příkaz RAISERROR poskytne možnost specifikovat závažnost chybové zprávy, zatímco tuto možnost nemáme v případě příkazu throw, kde všechny chybové zprávy budou mít výchozí závažnost 16.,
v případě RAISERROR existuje možnost zaznamenat chybovou zprávu do souboru protokolu serveru pomocí možnosti s log, zatímco to nemůžeme udělat v případě prohlášení o hodu.
V případě hodit, potřebujeme určit, jak errorid a chybová zpráva zvýšit chybová vzhledem k tomu, že v případě RAISERROR můžeme zadat buď id nebo do zprávy., Pokud id není zadáno výchozí ID chyby je 50000, ale pokud chceme nejprve zadat pouze ID chyby, musíme do tabulky sysmessage přidat chybovou zprávu zadáním jedinečného id do tabulky.
VOLBY S RAISERROR:
S Log: pomocí této možnosti v RAISERROR můžeme zaznamenat chybová zpráva v SQL Server soubor protokolu tak, že pokud jsou chyby fatální správce databáze může postarat o opravě těchto chyb.,
Pokud závažnost chyb je vyšší než 20 uvedením Log možností je povinné. Tento test ZMĚNIT postup spDivideBy1 změnou raiserror jako následující.
RAISERROR (‚DĚLITEL NEMŮŽE BÝT JEDNA‘, 16, 1) S LOG
Níže je kompletní postup,
Nyní spustit postup a vždy, když danou chybu vyvolává můžeme sledovat chybové zprávy zaznamenány v protokolu serveru SQL Server soubor. Chcete-li zobrazit soubor protokolu., V Průzkumníku objektů přejděte do uzlu protokolu serveru SQL Server a otevřete aktuální soubor protokolu dvojitým kliknutím na něj, jak je uvedeno níže.,g
RAISERROR (‚číslo %d nelze dělit o %d‘,16, 1, @No1, @No2)s logem
zvyšování chyb uložením chybové zprávy v tabulce sysmessage:
můžeme vyvolat chybu, aniž bychom uvedli chybovou zprávu v prohlášení raiserror, ale místo chybové zprávy potřebujeme zadat id chyby a určit ID chyby musíme zaznamenat toto ID chyby pomocí chybové zprávy v tabulce SYSMESSAGE pomocí systému definovaného postupu „sp_addmessage“., 16,“vydělte jednou zjištěnou chybou“
nyní změňte postup změnou příkazu RAISERROR jako následující
RAISERROR (51000,16, 1)s logem
odstranění chybových zpráv z tabulky sysmessages:
syntaxe: sp_dropmessage <id chyby>
příklad: Exec sp_dropmessage 51000
v dalším článku budu diskutovat o implementaci try-catch v SQL serveru, abych zvládl chybu v SQL serveru., Zde se v tomto článku snažím vysvětlit, jak explicitně vyvolat chyby v serveru SQL Server krok za krokem s některými příklady.