Behandle data lag ved hjælp af SQL Server Error



Udviklere stræber efter at korrekt håndtere uventede, så brugerne ikke behøver at bekymre sig om himmelske-lignende system fejlmeddelelser. Af denne grund, håndtering undtagelse er hver. NET applikationer en standard del. Prøv / catch-blok tillader dig at fange undtagelser og kontrol ansøgning fra det punkt af gennemførelsen. Interagere med databasen vil opstå, når en masse fejl, men mange udviklere ikke ved hvordan man skal behandle med databasen lag for fejl. I denne afhandling vil vi undersøge, hvordan man bruger SQLServer og T-SQL-kode til at håndtere fejl i din database.

Håndtering fejl i T-SQL

SQLServer's SQL dialog gør det nemt at håndtere processen kan opbevares, funktion i ikke-fatal fejl opstod, men ikke alle fejl er lettere at håndtere. Faktisk er fatal og ikke-fatal fejl mange. Hvad der er dødelig, hvad ikke-dødelige, det er ikke meget veldokumenteret, men din ansøgning kode kan altid bruge try / catch-blok til at håndtere fatal database fejl. For alle andre fejl, kan du bruge følgende teknik.

Services

Du skal bruge den transaktion kode i databasen for at sikre, at alt ikke er noget problem, når alle ændringer er blevet gennemført. SQLServer-line hjælp til opgaven af en transaktion, der er beskrevet som en logisk enhed, der består af en række erklæringer (vælg, indsætte, opdatere eller slette osv.). Hvis transaktionen ikke forekomme i nogen fejl, så alle de ændringer, fusionen vil blive en permanent del af databasen. Hvis der opstår en fejl i denne periode og vil ikke foretage ændringer i databasen.

Tjenester, der indgår i BEGIN TRANSACTION og END TRANSACTION erklæringer mellem. ROLLBACK TRANSACTION erklæring kan annullere alle ændringer, så eventuelle ændringer vil ikke opstå. COMMIT TRANSACTION erklæring kan bruges til varige ændringer. Lad os fokusere på, hvordan man håndterer T-SQL fejl i den.

@ @ Fejl

@ @ Fejl funktion, så du kan gennemføre T-SQL fejlhåndtering. Det vil returnere fejlkode returneres af systemet. Hvis der ikke fejl returneres "0". @ @ Fejl funktion skal straks kaldt umiddelbart efter en erklæring, fordi det vil være efter hver T-SQL-sætning fjernes.

RAISERROR

RAISERROR erklæring giver dig mulighed for at generere en brugerdefineret fejlmeddelelse, eller brug en form på indersiden er sysmessages nyheder. Du kan se dets syntaks online, men dens mest grundlæggende form indeholder en meddelelse (for brugerdefinerede besked) eller besked id (eksisterende kilder) og dens sværhedsgrad og tilstand. SQLServer bruger ikke staten, så let gik det et nummer på den. Alvorlighed, at alvoren af de fejl for 0 til-18 brugere, mens 19-25 er forbeholdt administratorer.

I liste A, gemt prøven procedure anvendes til at ajourføre disse funktioner en prøve Northwind database som helhed:

CREATE PROCEDURE sp_UpdateCustomerPhone (@ id nvarchar (5), @ telefonen nvarchar (24), @ retvalueint output) ASBEGINBEGIN TRANSACTIONUPDATE [DBO]. [Kunder] SET [Telefon] = @ telefonen WHERE ([KundeID] = @ id) IF (@ @ FEJL 0) - en ikke-negativ værdi signaler en errorBEGINROLLBACK transaktion - ændringer er ikke permanentRAISERROR ('Update Kunder fejl', 1,1) - giver anledning til en brugerdefineret fejlmeddelelse - Custom fejlmeddelelse vises, hvis løber fra consoleSET @ retvalue = -1 - tilbage negativ værdi til signalproblemsENDCOMMIT TRANSACTION - gøre ændringerne permanente, så record er updatedSET @ retvalue = 1 - et positivt afkast værdi signalssuccessRETURNEND

Liste A

Hvis der ikke sker fejl, det tog telefonnummer anførte nummer er indstillet til en værdi, der sendes til processen. Det bruger en returværdi parameter, hvis der er problemer det giver en negativ værdi, hvis alle de ting med gennemførelsen af nogen problemer, vil det returnere en positivt.

Brug lagrede procedure returværdier

Gennem den lagrede procedure returværdi, kan vi bruge det i vores. NET kode i årevis. SqlCommand objekt giver dig mulighed for nemt at tilføje en parameter til forarbejde og opbevare den returnerede værdi. Parametre Direction ejendom anvendes til at modtage værdien fra lagrede procedure opkald. Den har to ejendomme værdier: InputOutput og Output. I vores eksempel vil vi bruge Output til at modtage statens værdi.

Denne kode er en simpel ASP.NET side for Northwind databasen bruges til at overføre en kunde til en datatabel i den nye værdi. Den id værdi er faktisk gemt i et skjult felt, hvor du let kan videregives til den form, men dette felt bruges til at beskrive. Indtast værdien i tekstfeltet bruges til at opdatere databasen bordet, hvor telefonnummeret felt.

Parameter er tilføjet til SqlCommand objekt (de skal være nøjagtigt opfylde den lagrede procedure parametre). Kommando gennem ExecuteNonQuery metode SqlCommand objekt er udført. Når det er blevet henrettet, returværdien kan være parametre for at hente.

Kode kontrol returværdien (-1 angivet et problem), og en besked vil blive vist i en Label kontrol i. Derudover, så prøv a / catch-blok bruges til at fange interagere med den database, som kan opstå under driften af en fatal fejl. Se liste B:

Nyt nummer: OnCommand = "btnUpdatePhone_Click" runat = "server" / ALFKI

Liste B

Liste C i den tilsvarende VB.NET kode:

Nyt nummer: OnCommand = "btnUpdatePhone_Click" runat = "server" / ALFKI

Liste C

Databasen omfatter alle

Brugt try / catch blok til at håndtere. NET ansøgning kode i undtagelsen er en simpel proces, men du kan overvåge databasen lag undtagelse. SQLServer's T-SQL sproget exception handling kode til at give dig alt hvad du behøver.