Terug naar: SQL Server Tutorial Voor Beginners en Professionals
over het Verhogen van Fouten Expliciet in SQL Server
In dit artikel, Ik ben dan ook van plan om te bespreken hoe te verhogen fouten expliciet in SQL Server met een aantal voorbeelden, samen met ook bespreken we de verschillende opties die we kunnen gebruiken met Raiserror in SQL Server., Lees ons vorige artikel waar we het real-time voorbeeld van Raise Error system-functie hebben besproken. Als onderdeel van dit artikel gaan we de volgende aanwijzingen bespreken.
- Hoe maak je expliciet fouten in SQL Server?
- Raise error using RAISERROR statement in SQL Server
- Raise Error using throw statement in SQL Server
- Wat is het verschil tussen raiserror functie en throw statement?
- het RaiseError statement met de Log optie begrijpen.
- Hoe maak je fouten door het opslaan van de Foutmelding in SysMessage tabel.,
Hoe maak je expliciet fouten in SQL Server?
in het algemeen worden fouten gemaakt in een programma om vooraf gedefinieerde redenen, zoals het delen van een getal door nul, schending van primaire sleutel, schending van controle, schending van referentiële integriteit, enz. Maar als we willen dan kunnen we ook een fout in uw programma ‘ s op twee verschillende manieren.,
- raiserror statement
- throw statement (new feature of SQL Server 2012)
Raiserror syntaxis: Raiserror (errorid/errorsg, SEVERITY, state)
throw syntaxis: throw errorid, errorsg, State
voorbeeld: Raise Error met behulp van raiserror statement in SQL Server.
in de volgende opgeslagen Procedure geven we een fout wanneer de deling 1 is met behulp van het raiserror statement.,
voorbeeld van uitvoering: EXEC spDivideBy1 10, 1
voorbeeld: Raise error using throw statement in SQL Server.
de bovenstaande procedure kan ook worden herschreven met behulp van een throw statement in plaats van Raiserror als volgt.,
uitvoering: EXEC spDivideBy2 10, 1
Wat is het verschil tussen RAISERROR functie en throw statement?
als we een van de twee statements in een programma gebruiken voor het verhogen van een fout zonder try and catch blokken, zal RAISERROR statement na het verhogen van de fout nog steeds doorgaan met de uitvoering van het programma, terwijl throw statement Het programma abnormaal zal beëindigen op die regel., Maar als ze worden gebruikt onder try block beide zullen zich gedragen op dezelfde manier dat is zal direct springen om te vangen blok van waar de fout werd verhoogd.
het raiserror statement geeft een optie om de ernst van de Foutmelding op te geven, terwijl we deze optie niet hebben in het geval van throw statement waar alle foutmeldingen standaard een ernst van 16 hebben.,
in het geval van RAISERROR is er een kans dat de foutmelding wordt opgenomen in het logbestand van de server door gebruik te maken van de optie met log, terwijl we dit niet kunnen doen in het geval van een throw statement.
in het geval van throw moeten we zowel de errorid als de foutmelding specificeren om de fout te verhogen, terwijl in het geval van RAISERROR we ofwel id of bericht kunnen specificeren., Als de id niet is opgegeven, is standaard fout-id 50000, maar als we alleen fout-id willen opgeven, moeten we eerst de Foutmelding in de sysmessage-tabel toevoegen door een unieke id aan de tabel op te geven.
opties met RAISERROR STATEMENT:
met Log: door deze optie in het raiserror statement te gebruiken, kunnen we de Foutmelding in het logbestand van de SQL Server opnemen, zodat als de fouten fataal zijn, de databasebeheerder deze fouten kan oplossen.,
als de ernst van de fout groter is dan 20 is het opgeven van de optie met Log verplicht. Om dit te testen verander je de procedure spDivideBy1 door het raiserror statement te wijzigen als volgt:
RAISERROR (‘deler kan niet één zijn’, 16, 1) met LOG
hieronder staat de volledige procedure
Voer nu de procedure uit en wanneer de opgegeven fout verhoogt we kunnen de foutmeldingen opgenomen onder SQL Server logbestand bekijken. Om het logbestand te bekijken., Ga In object explorer naar het beheerknooppunt SQL Server log knooppunt en open het huidige logbestand door erop te dubbelklikken zoals hieronder getoond.,g
RAISERROR (‘DE NUMMER %d NIET kan WORDEN GEDEELD DOOR %d’,16, 1, @No1, @No2)LOG
het Verhogen van Fouten Door het opslaan van het Foutbericht in SysMessage tabel:
We kunnen verhogen van een fout, zonder dat het foutbericht in RAISERROR verklaring, maar in plaats van het foutbericht we moeten het opgeven van de fout-id en geef de fout-id moeten we opnemen dat fout-id met het foutbericht in SysMessage tabel door het systeem gedefinieerde procedure “SP_ADDMESSAGE”., 16, ‘DELEN DOOR EEN FOUT OPGETREDEN’
Nu wijzigen van de procedure door het wijzigen van de instructie RAISERROR als volgende
RAISERROR (51000,16, 1)MET LOG
het Verwijderen van de foutberichten uit de sysmessages tabel:
Syntax: SP_DROPMESSAGE <fout-id>
Voorbeeld: EXEC sp_dropMessage 51000
In het volgende artikel ga ik bespreken met de try-catch-uitvoering in SQL Server voor het verwerken van de fout in SQL Server., Hier, in dit artikel, probeer ik uit te leggen hoe om fouten expliciet in SQL Server stap voor stap met een aantal voorbeelden.