Jak Pobieranie informacji z jest komunikat o błędzie usługa Broker (Transact SQL)
Wiadomości tego typu https://schemas.Microsoft.com/SQL/ServiceBroker/Error is a Service Broker komunikat o błędzie. Wiadomości tego typu są dokumentów XML, które zawierają wartość kodu liczbowego błąd i opis błędu.
Aby pobrać informacje z komunikat o błędzie usługa Broker
Deklaruje zmienną typu int do przechowywania kodu błędu.
Deklaruje zmienną typu nvarchar(3000) do przechowywania opis błędu.
Deklaruje zmienną typu xml do przechowywania reprezentacji XML w treści wiadomości.
Treść wiadomości z LANE varbinary(max) Aby xmli przypisać do zmiennej typu wyniki xml.
Użycie value Funkcja xml Typ danych do pobierania kodu błędu.
Użycie value Funkcja xml Typ danych w celu pobrania opis błędu.
Obsługi błędu odpowiednie dla danej aplikacji.Błędy z kodów błędów ujemne są generowane przez Service Broker. Błędy z kodów błędów dodatnie są generowane przez programy usługa, które uruchomiono KONWERSACJI END WITH błąd.
Example
-- The variables to hold the error code and the description are
-- provided by the caller.
CREATE PROCEDURE [ExtractBrokerError]
( @message_body VARBINARY(MAX),
@code int OUTPUT,
@description NVARCHAR(3000) OUTPUT )
AS
BEGIN
-- Declare a variable to hold an XML version of the message body.
DECLARE @xmlMessage XML;
-- CAST the provided message body to XML.
SET @xmlMessage = CAST(@message_body AS XML);
SET @code = @@ERROR
IF @@ERROR<>0
RETURN @code
-- Retrieve the error code from the Code element.
SET @code = (
SELECT @xmlMessage.value(
N'declare namespace
brokerns="https://schemas.microsoft.com/SQL/ServiceBroker/Error";
(/brokerns:Error/brokerns:Code)[1]',
'int')
);
-- Retrieve the description of the error from the Description element.
SET @description = (
SELECT @xmlMessage.value(
'declare namespace
brokerns="https://schemas.microsoft.com/SQL/ServiceBroker/Error";
(/brokerns:Error/brokerns:Description)[1]',
'nvarchar(3000)')
);
RETURN 0;
END
GO