Obsługa błędów w do serwera zdalnego przechowywanych procedur

Podczas uruchamiania zdalnego procedur przechowywanych i instancji z lokalnego wystąpienie SQL Server do klient może wystąpić instrukcja i błędy przerwanie partia:

  • Gdy wystąpi błąd przerwania instrukcji, instrukcja, która spowodowała błąd zostanie zakończone, ale wykonanie zdalna procedura składowana lub partia w dalszym ciągu.

  • Gdy wystąpi błąd przerwania partia, wykonanie z pełną zdalna procedura składowana lub kończy partia.

  • Kiedy zdalnego procedur przechowywanych i partie są wykonywane w ramach zakres blok TRY, błędy przerwanie partia może być obsługiwane przez konstrukcja TRY…CATCH.

Zachowanie zdalnych procedur przechowywanych i instancje wynikającego z deklaracji i błędy przerwanie partia zależy od ustawienia zestaw XACT_ABORT serwera lokalnego.

zestaw XACT_ABORT jest wyłączona

Jeśli XACT_ABORT zestaw jest wyłączona na serwerze lokalnym, żadnych instrukcja Przerwij błędów w zdalna procedura składowana jest przekazywana jako błędy przerwania instrukcja przez lokalny serwer do klient.Instrukcja, która spowodowała błąd zostanie przerwane.Klient odbiera komunikaty o błędach, które odpowiadają błędy przerwania instrukcja.Ponadto jeśli zdalna procedura składowana serii, dopóki nie zostanie wypełnione, błąd @@ zwraca wartość 0.Jeśli ten błąd występuje w ramach zakres blok TRY, kontynuuje wykonywanie i blok CATCH nie jest wywoływany.

Każda partia przerwać błędów w zdalna procedura składowana są propagowane przez lokalny serwer do klient.instrukcja wykonać, która wywołała zdalna procedura składowana kończy się, ale wsadowego lub procedura przechowywana, które zawierały instrukcja wykonać kontynuuje działanie.Dlatego błąd @@ zwraca kod błędu, który odpowiada błędu, które zakończone zdalna procedura składowana, a procedura przechowywana wartość zwracana jest wartość NULL.Gdy zdalna procedura składowana, generuje błąd jest wykonywany w zakresie blok TRY na serwerze lokalnym, błąd powoduje, że formant do przekazywania do blok CATCH zawierający informacje o ostatnim błędzie na serwerze zdalnym.

Podczas rozwiązywania problemów z błędami, wykonać zdalna procedura składowana z wewnątrz blok TRY a TRY…CATCH konstruowania.Jeśli zdalna procedura składowana jest zakończona niepomyślnie, wykonanie przeskoczy do skojarzonego blok CATCH na serwerze lokalnym z informacjami o ostatni błąd na serwerze zdalnym.Jeśli zdalna procedura składowana zostanie ukończona pomyślnie, wykonywanie jest kontynuowane blok TRY na serwerze lokalnym, jak i wartości zwracanej przez zdalna procedura składowana mogą być używane.

Można także podczas wykonywania zdalna procedura składowana poza zasięgiem blok TRY zbadać @@ błąd na końcu zdalna procedura składowana do ustalenia, czy remote procedure jest ukończona.Jeżeli błąd @@ wynosi 0, zdalna procedura składowana została wykonana pomyślnie, można używać wartości zwracanej przez procedura przechowywana.Jeśli błąd @@ nie jest zero, zdalnego procedura przechowywana nie została ukończona pomyślnie i nie można używać wartości zwracanej przez procedura przechowywana.

zestaw XACT_ABORT jest

Jeśli XACT_ABORT zestaw jest włączone na serwerze lokalnym, ustawienia te będą propagowane do serwer połączony.Wszystkie instrukcja i partia przerwać błędów w zdalna procedura składowana są konwertowane na błędy przerwanie partia na serwerze lokalnym.Dlatego wykonanie partia lub procedura przechowywana, o nazwie zdalnego procedura przechowywana jest zakończony wraz ze zdalna procedura składowana.Gdy zdalna procedura składowana, generuje błąd jest wykonywany w zakresie blok TRY na serwerze lokalnym, błąd powoduje, że formant do przekazywania do blok CATCH zawierający informacje o ostatnim błędzie na serwerze zdalnym.

Gdy zdalna procedura składowana wykonać jest poza zakresem blok TRY, nie można zbadać wartości @@ błąd, aby określić, że wystąpił błąd partia, ponieważ instrukcja znajdującej się po instrukcja wykonać nie wykonuje.W związku z tym, które powinno być wykonane zdalna procedura składowana z wewnątrz blok TRY a TRY…CATCH konstruowania.Jeśli zdalna procedura składowana nie zostanie zakończona pomyślnie, wykonanie przechodzi do skojarzonego blok CATCH na serwerze lokalnym z informacjami o ostatni błąd na serwerze zdalnym.Jeśli zdalna procedura składowana zakończy się pomyślnie, wykonywanie jest kontynuowane blok TRY na serwerze lokalnym, jak i wartości zwracanej przez zdalna procedura składowana mogą być używane.

Instrukcji RAISERROR i TRY…CATCH

Wywołanie RAISERROR o ważności mniej niż 20 z wewnątrz zdalnego procedura przechowywana powoduje błąd przerwania instrukcja na serwerze zdalnym.Konstrukcja TRY…CATCH uchwyty lokalnego serwera zdalnego instancji przerwać tylko błędy.zdalna procedura składowana wywołuje RAISERROR o ważności mniej niż 20 zdalnego procedura przechowywana jest objęty zakresem blok TRY na serwerze lokalnym, RAISERROR nie spowoduje, że formant do przekazywania do blok CATCH konstrukcji TRY…CATCH.Jednak RAISERROR o ważności 20 lub większa na serwerze zdalnym spowoduje przerwanie połączenia i wykonywania na lokalnym serwerze przekazuje do blok CATCH.