Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
Ett meddelande av typen https://schemas.microsoft.com/SQL/ServiceBroker/Error är ett service broker-felmeddelande. Meddelanden av den här typen är XML-dokument som innehåller en numerisk kod för felet och en beskrivning av felet.
Hämta informationen från ett service broker-felmeddelande
Deklarera en variabel av typen int för att lagra felkoden.
Deklarera en variabel av typen nvarchar(3000) för att lagra felbeskrivningen.
Deklarera en variabel av typen xml för att lagra en XML-representation av meddelandetexten.
CASTmeddelandetexten från varbinary(max) till xml och tilldela resultatet till variabeln av typen xml.Använd värdefunktionen för xml-datatypen för att hämta felkoden.
Använd värdefunktionen för xml-datatypen för att hämta felbeskrivningen.
Hantera felet efter behov för ditt program. Fel med negativa felkoder genereras av Service Broker. Fel med positiva felkoder genereras av tjänstprogram som körde
END CONVERSATION WITH ERROR.
Examples
-- 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 AS 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