Ich habe eine gespeicherte Prozedur, die XML generiert. Es funktioniert gut in DEV, aber in anderen Umgebungen schlägt es mit der folgenden Ausnahmebedingungsnachricht fehl.Gespeicherte Prozedur schlägt fehl, da CONCAT_NULL_YIELDS_NULL nicht korrekt ist
Dies ist ein neuer Fehler für mich. Ich lese verschiedene Blogs zu dem Thema, aber ich bin mir nicht sicher, ob ich es schon vollständig verstanden habe. Jeder Rat würde geschätzt werden.
Dank
Die Ausnahme sieht wie folgt aus:
Das ist mein gespeicherte Prozedur:
ALTER PROCEDURE [dbo].[usp_OutboundEventMessage_CREATE]
(@EventName NVARCHAR(200),
@Force bit = 0,
@TopicFilter NVARCHAR(100),
@EventContexts XML,
@MessageBody XML OUTPUT)
AS
BEGIN
SET NOCOUNT ON;
----------------------
-- DETECT FORAMATTING: ContextKey
----------------------
IF (SELECT @EventContexts.exist('(//Contexts)')) = 0
BEGIN
DECLARE @Contexts XML = '<Contexts>' + CONVERT(NVARCHAR(MAX), @EventContexts) + '</Contexts>';
SET @EventContexts = @Contexts;
END
----------------------
-- CREATE FORAMATTING: DataSource
----------------------
DECLARE @EmptyGuid UNIQUEIDENTIFIER = (SELECT CAST(0x0 AS UNIQUEIDENTIFIER));
DECLARE @DataSource XML = (SELECT (SELECT SERVERPROPERTY(N'MachineName')) AS '@machineName', (SELECT Name FROM sys.databases WHERE database_id = DB_ID()) FOR XML PATH('DataSource'))
DECLARE @Topic XML = (SELECT @TopicFilter AS Filter FOR XML PATH('Topic'))
----------------------
-- GENERATE: MessageBody
--
-- ATTRIBUTES: Are added through as simle columns (see below)
----------------------
SET @MessageBody = (SELECT
@EmptyGuid AS '@auditId',
CASE @Force WHEN 0 THEN 'false' ELSE 'true' END AS '@force',
GETUTCDATE() AS '@CreatedOn',
@DataSource,
@Topic,
Name = @EventName,
@EventContexts
FOR XML PATH('Event'))
END
Es stellt sich heraus, dass die verschiedenen Umgebungen anders konfiguriert sind ... also ja ... Ich musste dies hinzufügen. Vielen Dank –