Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Managed Instance
Un message de type https://schemas.microsoft.com/SQL/ServiceBroker/Error est un message d’erreur Service Broker. Des messages de ce type sont des documents XML contenant une description de l'erreur et un code numérique pour celle-ci.
Récupérer les informations d’un message d’erreur Service Broker
Déclarez une variable de type int pour contenir le code d’erreur.
Déclarez une variable de type nvarchar(3000) pour contenir la description de l’erreur.
Déclarez une variable de type xml pour contenir une représentation XML du corps du message.
CASTcorps du message de varbinary(max) en xml, puis affectez les résultats à la variable de type xml.Utilisez la fonction valeur du type de données xml pour récupérer le code d’erreur.
Utilisez la fonction valeur du type de données xml pour récupérer la description de l’erreur.
Corrigez l'erreur comme il convient pour votre application. Les erreurs dotées de codes d'erreur négatifs sont générées par Service Broker. Les erreurs avec des codes d’erreur positifs sont générées par les programmes de service qui ont exécuté
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