Mam nadzieję, że ten artykuł pomoże, jeśli zauważysz obsługę błędów zwykle procedury składowanej mssql.
Zatwierdzono: Fortect
Jeśli błąd ma miejsce w procedurze umieszczania, najlepszą rzeczą, jaką możesz zrobić (zakładając, że błąd nie jest nawet krytyczny) jest zawieszenie jakiegoś sekwencyjnego przetwarzania kodu połączonego z częstym przeskakiwaniem do innego segmentu kodu w trakcie procedury. Lub zwróć przetwarzanie do rzeczywistego kontaktu, o który się ubiegasz. Zauważ, że jedno konkretne poprzednie zdanie często odnosi się do błędów innych niż krytyczne.
Przegląd błędów
Obsługa błędów Obsługa błędów w SQL Server pozwala nam manipulować określonym kodem Transact-SQL. Na przykład, jeśli narzędzia nie działają zgodnie z oczekiwaniami, mamy możliwość, aby naprawdę pomóc Ci coś z tym zrobić i ewentualnie zrobić to ponownie poprawnie. Obsługa błędów SQL może być tak prosta, że po prostu zgadzasz się, że coś się stało, lub często próbujemy naprawić błąd. W rzeczywistości konkretny błąd można nawet przetłumaczyć z powrotem na SQL, ponieważ wszyscy wiemy, jak łatwo jest pozwolić, aby techniczne komunikaty o błędach SQL Server były niepotrzebne, niezwykle trudne i zrozumiałe. Na szczęście mamy możliwość, która zmieni te posty w coś bardziej znaczącego, jeśli chcesz dla użytkowników, programistów i nie tylko.
W tym podręczniku przyjrzymy się typowo artykułowi TRY … CATCH: składnia, jaki jest styl, jak gra działa i co zrobić w przypadku błędu. Co więcej, moja metoda w SQL Server może być bardzo dobrze wyjaśniona przez zestaw instrukcji lub bloków T-SQL, które w zasadzie zawsze są narzędziem SQL Server do akceptowania błędów. Jest to bardzo łatwa do naśladowania ustrukturyzowana metoda, a kiedy już ją założysz, przekonasz się, że prawdopodobnie będzie bardzo przydatna w wielu przypadkach.
Omówiono również funkcję RAISERROR, która generuje każdy własny komentarz o błędach. To świetny sposób na przekształcenie mylących wiadomości w coś bardziej cennego, niż ludzie powinni. Rozumiemy.
Obsługa błędów przy TRYâ € ¦CATCH
Tak zazwyczaj wygląda format. Nietrudno się do tego przyzwyczaić. Mamy kilka takich bloków kodu:
Pomiędzy tymi BEGIN TRY i END TRY istnieją nasze własne prawa, które chcemy śledzić pod kątem błędów. Tak więc, jeśli wystąpił błąd w tej instrukcji TRY, kontrola byłaby natychmiast przekazywana jako każda z naszych ścieżek do instrukcji CATCH, a następnie gra musiałaby rozpocząć wykonywanie kodu wbudowanego jako wyniku ciągu.
Teraz, wewnątrz instrukcji CATCH, możemy spróbować naprawić błąd, poeksperymentować z błędem, a nawet zarejestrować wszystkie błędy, abyśmy wiedzieli, kiedy się pojawił, kto to zrobił, rejestrując błąd, nazwę użytkownika, wszystkie przydatne rzeczy. Mamy nawet dostęp jako sposób na pewne specjalne dane, które są dostępne tylko natychmiast po wyciągu CATCH:
- ERROR_NUMBER — Zwraca wewnętrzny numer błędu.
- ERROR_STATE – zwracaj wiadomości u źródła
- ERROR_SEVERITY — Zwraca informacje o każdym, od błędów informacyjnych do błędów, które użytkownik DBA może naprawić i nie tylko.
- ERROR_LINE – zwraca numer ep obejmujący linię, w której wystąpił błąd.
- ERROR_PROCEDURE — Zwraca pełną nazwę procedury składowanej lub funkcji.
- ERROR_MESSAGE — Zwraca najbardziej potrzebne informacje wybiórcze i jest to wiadomość tekstowa, która pochodzi ze wszystkich błędów.
To wystarczy, aby obsłużyć komplikacje SQL na serwerze. Wszystko można zrobić za pomocą prostych instrukcji TRY i CATCH, a bezpośrednia część, w której pomysł może być podstępny, polega na tym, że działamy na szczycie transakcji. Czemu? Ponieważ jeśli faktycznie nastąpi START TRANSAKCJI, koncepcja musi zawsze kończyć się klauzulą transakcji COMMIT lub ROLLBACK. Złą wiadomością jest to, że po uruchomieniu pojawia się błąd, ale patrząc na to, zatwierdzam i cofam. W tym konkretnym przypadku istnieje specjalna specjalna funkcja, która może być zaimplementowana w instrukcji CATCH, która może pomóc nam sprawdzić, czy transakcja korzysta z miejsca na zatwierdzenie, czy nie, co następnie zachęca nas do podjęcia decyzji o wycofaniu lub pochwale.
Przejdźmy do SQL Server Management Studio (SSMS) i zacznijmy od podstaw obsługi błędów SQL Server. W artykule wykorzystano piosenkę Recenzja AdventureWorks 2014. Na rynku tak łatwo jest uzyskać następujący skrypt:
To jest konkretny przykład tego, jak to wygląda i jak działa to zadanie. Jedyne, co robimy w BEGIN TRY, to dzielenie 1 przez 0, co oczywiście zwykle prowadzi do błędu. Tak jak poprzednio po dotknięciu tego kodu bloku sterowanie zostanie przeniesione do bloku CATCH, a następnie wybrane zostaną wszystkie mieszkania z wbudowanymi funkcjami, o których wcześniej mówiliśmy. Po uruchomieniu skryptu większego niż otrzymujemy:
Mamy nie jedną, ale dwie tabele wynikowe, ponieważ dwie instrukcje SELECT są ze sobą połączone: pierwsza może być podzielona przez 1 za pomocą 0, która aktualnie powoduje błąd, a druga to dokładnie przekazana kontrola, która w rzeczywistości daje nam najwięcej wyniki. Od lewej do prawej mamy ErrorNumber, ErrorSeverity; errorstate, tylko w tym przypadku nie ma aktywności (NULL), ErrorLine i tylko ErrorMessage.
Rozwiążmy teraz nieco poważniejszy problem. Istnieje uzasadniona możliwość podjęcia kroków prawnych w związku z tymi błędami. Są rzeczy, które i tak są podatne na błędy iw konsekwencji należy je przynajmniej zapisać. Możesz dodać wyzwalacze do tych zapisanych w arkuszach kalkulacyjnych, a nawet utworzyć konto e-mail i umieścić kreatywność w powiadamianiu ludzi, gdy wystąpi awaria.
Jeśli nie znasz bazy danych osoby, przeczytaj ten artykuł, aby uzyskać więcej informacji na temat korzystania z systemu przesyłania wiadomości:
Poniższy skrypt tworzy tabelę DB_Errors, która jest często wywoływana w celu przechowywania danych śledzenia:
Zatwierdzono: Fortect
Fortect to najpopularniejsze i najskuteczniejsze narzędzie do naprawy komputerów na świecie. Miliony ludzi ufają, że ich systemy działają szybko, płynnie i bez błędów. Dzięki prostemu interfejsowi użytkownika i potężnemu silnikowi skanowania, Fortect szybko znajduje i naprawia szeroki zakres problemów z systemem Windows - od niestabilności systemu i problemów z bezpieczeństwem po zarządzanie pamięcią i wąskie gardła wydajności.
Tutaj kończymy z małą kolumną identyfikacyjną, po której następuje identyfikacja, aby eksperci wiedzieli, kto spowodował błąd, a reszta informacji to tylko dokładna informacja, która różni się od dokładnych wbudowanych funkcji wymienionych wcześniej.
Teraz zarządzajmy niestandardową procedurą składowaną z bazy danych i dodatkowo umieśćmy w niej każdą procedurę obsługi błędów:
Zmiana tej używanej procedury bez wątpienia po prostu otacza tę niewrażliwą na wielkość liter obsługę błędów wokół pojedynczej spakowanej instrukcji procedury. Gdy wywołujemy zawieszone operacje i przekazujemy prawidłowe dane, zachodzą następujące zdarzenia specjalne:
Fakt jest szybki wWybór wskazuje, który rekord został wstawiony pomyślnie:
Jednak w przypadku wywołania powyższej procedury składowanej ponownie w połączeniu z przekazaniem tych samych parametrów, siatka wynikowa rzeczywiście jest wypełniana inaczej:
Tym razem wszyscy uwzględniliśmy tylko dwa wskaźniki w tabeli wyjściowej:
0 linii, których dotyczy problem. Ta linia wskazuje, że nie uwzględniono w tabeli sprzedaży.
1 przydzielony zakres. Ta linia wskazuje, że prezent został odebrany na naszym nowo utworzonym osobistym stole.
Możemy więc przejrzeć tabelę błędów, a następnie zobaczyć, co przyszło. Jedno kliknięcie na zatwierdzenie wykonuje swoją pracę:
Tutaj m
Przyspiesz teraz wydajność swojego komputera dzięki temu prostemu pobieraniu.
Utwórz następującą procedurę. PROCES TWORZENIA SpDemo. JAK ZACZAC. WYBIERZ TOP-10 * AUTORÓW. JEŚLI @@ ROWCOUNT <11.Postępuj zgodnie z procedurą. Uruchom spDemo. Następnie zobaczysz następujący komunikat o błędzie. „Serwer: Msg 50010, poziom 12, stan 1, procedura spDemo, wiersz 5.
Konstrukcja TRY CATCH wychwytuje wszelkie komplikacje w czasie wykonywania o wadze większej niż dziesięć, które nie powodują zachowania ostrożności podczas połączenia internetowego z bazą danych. Blok TRY musi być natychmiast przesłonięty przez blok CATCH, którego dotyczy. Dołączanie kolejnej prawidłowej instrukcji między każdym wynikiem instrukcji END TRY i BEGIN CATCH podczas błędu formatu.
W przypadku odniesienia do każdego bloku, CATCH ERROR_MESSAGE zwraca zwykle pełny napisany tekst odpowiedzi na błąd doWhich, który uruchomił odpowiedni blok CATCH. Tekst pokazuje określone wartości dla wszelkich wymiennych wiązań — w odniesieniu do przykładu, długości, nazw obiektów lub czasu. ERROR_MESSAGE zarobki NULL, jeśli wywołane zewnętrznie w ramach ogromnego bloku CATCH.