Tilbage til: SQL Server Selvstudium For Begyndere og Professionelle
Hvordan til At Hæve Fejl Eksplicit i SQL Server
I denne artikel, Jeg kommer til at diskutere, hvordan man kan hæve fejl eksplicit i SQL Server med nogle eksempler på, sammen med at vi vil også drøfte de forskellige muligheder, som vi kan bruge med Raiserror i SQL Server., Læs vores tidligere artikel, hvor vi diskuterede realtidseksemplet på Raise Error system-funktionen. Som en del af denne artikel skal vi diskutere følgende tip.
- hvordan hæves fejl eksplicit I S ?l Server?
- Raise fejl ved hjælp af RAISERROR erklæring i SQL Server
- Raise Fejl ved hjælp af throw-sætning i SQL Server
- Hvad er forskellen mellem RAISERROR funktion og kaste erklæring?
- forståelse af RaiseError-sætningen med Logindstilling.
- Sådan hæves fejl ved at gemme fejlmeddelelsen i sysmessage-tabellen.,
hvordan hæves fejl eksplicit I S ?l Server?
Generelt fejl, der er rejst i et program på foruddefinerede årsager gerne dividere et tal med nul, overtrædelse af primær nøgle, overtrædelse af check, overtrædelse af referentiel integritet, osv. Men hvis vi vil, kan vi også hæve en fejl i dine programmer på to forskellige måder.,
- Raiserror erklæring
- throw-sætning (nye funktion i SQL Server 2012)
Raiserror Syntaks: Raiserror (errorid/errormsg, SVÆRHEDSGRAD, stat)
smide Syntaks: Kaste errorid, errormsg, tilstand
Eksempel: Raise fejl ved hjælp af RAISERROR erklæring i SQL Server.
i den følgende lagrede Procedure hæver vi en fejl, når divisionen er 1 ved hjælp af RAISERROR-sætningen.,
Eksempel på udførelse: EXEC spDivideBy1 10, 1
Eksempel: Raise Fejl ved hjælp af throw-sætning i SQL Server.
ovenstående procedure kan også omskrives ved hjælp af en kastesætning i stedet for Raiserror som følgende.,
UDFØRELSE: EXEC spDivideBy2 10, 1
Hvad er forskellen mellem RAISERROR funktion og kaste erklæring?
Hvis vi bruger en af de to udsagn i et program for at hæve en fejl, uden at forsøge at fange blokke, RAISERROR erklæring, efter at hæve den fejl vil stadig fortsætte udførelsen af programmet, der henviser til, at smide erklæring vil afslutte programmet unormalt på denne linje., Men hvis de bruges under prøveblok, vil begge opføre sig på samme måde, som det vil hoppe direkte for at fange blok fra hvor fejlen blev rejst.
RAISERROR-sætningen giver mulighed for at angive sværhedsgraden af fejlmeddelelsen, mens vi ikke har denne mulighed i tilfælde af kasteopsætning, hvor alle fejlmeddelelser vil have en standard sværhedsgrad på 16.,
i tilfælde af RAISERROR er der en chance for at optage fejlmeddelelsen i serverlogfilen ved at bruge indstillingen med log, mens vi ikke kan gøre dette i tilfælde af en kasteopsætning.
i tilfælde af kast skal vi angive både fejlmeddelelsen og fejlmeddelelsen for at hæve fejlen, mens vi i tilfælde af RAISERROR kan angive enten id eller besked., Hvis id ‘ et ikke er angivet, er fejl-id 50000, men hvis vi kun vil angive fejl-id først, skal vi tilføje fejlmeddelelsen i sysmessage-tabellen ved at angive et unikt id til tabellen.
VALG MED RAISERROR ERKLÆRING:
Med Log: Ved at bruge denne indstilling i RAISERROR sætning, vi kan registrere fejlmeddelelse i SQL Server log fil, så hvis fejl er fatal database administrator kan tage sig af fastsættelsen af disse fejl.,
hvis sværhedsgraden af fejlen er større end 20, er det obligatorisk at specificere indstillingen med Log. For at teste dette ALTER procedure spDivideBy1 ved at ændre raiserror sætning som følgende:
RAISERROR (‘DIVISOR IKKE kan VÆRE EN’, 16, 1) MED LOG
Nedenstående er den komplette procedure
Nu udføre proceduren, og når som helst given fejl hæver vi kan se de fejlmeddelelser, der er registreret i henhold til SQL Server log fil. For at se logfilen., I object e .plorer skal du gå til management node s .l Server log node og åbne den aktuelle logfil ved at dobbeltklikke på den som vist nedenfor.,g
RAISERROR (‘ANTAL %d kan IKKE OPDELES AF %d’,16, 1, @No1 @No2 -)MED LOG
Raise Fejl Ved lagring af den Fejlmeddelelse i SysMessage tabel:
Vi kan hæve en fejl, uden at fejlmeddelelse i RAISERROR erklæring, men i stedet for den fejlmeddelelse, vi har brug for den angive fejl-id og angive fejlen id-vi er nødt til at registrere, at fejl id med fejlmeddelelsen i SysMessage tabel ved hjælp af det system, der er defineret procedure “SP_ADDMESSAGE”., 16, “DEL-VED EN FEJL OPSTOD”
Nu ændre proceduren ved at ændre RAISERROR sætning som følgende:
RAISERROR (51000,16, 1)MED LOG
Sletning af fejlmeddelelser fra sysmessages tabel:
Syntaks: SP_DROPMESSAGE <fejl id>
Eksempel: EXEC sp_dropMessage 51000
I den næste artikel, jeg vil diskutere den try-catch-implementering i SQL Server til at håndtere fejl i SQL Server., Her i denne artikel forsøger jeg at forklare, hvordan man eksplicit hæver fejl i s .l Server trin for trin med nogle eksempler.