Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Managed Instance
Uma mensagem do tipo https://schemas.microsoft.com/SQL/ServiceBroker/Error é uma mensagem de erro do Service Broker. Mensagens desse tipo são documentos XML que contêm um código numérico para o erro e uma descrição do erro.
Recuperar as informações de uma mensagem de erro do Service Broker
Declare uma variável do tipo int para conter o código de erro.
Declare uma variável do tipo nvarchar(3000) para manter a descrição do erro.
Declare uma variável do tipo xml para manter uma representação XML do corpo da mensagem.
CASTO corpo da mensagem de varbinary(max) para XML e atribua os resultados à variável do tipo xml.Use a função value do tipo de dados xml para recuperar o código de erro.
Use a função value do tipo de dados xml para recuperar a descrição do erro.
Manipule o erro conforme apropriado para seu aplicativo. Erros com códigos de erro negativos são gerados pelo Service Broker. Erros com códigos de erro positivos são gerados por programas de serviço que executaram
END CONVERSATION WITH ERRORo .
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