BizTalk und SQL Temp-Tabellen arbeiten nicht gut zusammen – hier ist die Lösung

BizTalk und SQL Temp-Tabellen arbeiten nicht gut zusammen? Dafür gibt es aber eine einfache Lösung!

Für diese Fehlermeldung

There was an error in Message_Send Orchestration: Error while sending direct – Bidirectional No.

System.Exception: System.Data.SqlClient.SqlException (0x80131904): Ungültiger Objektname „#tmp_Calc_DESADV“

gibt es eine Lösung:
 

Das ist der Vorgang:

Eine Stored Procedure nimmt Daten vom BizTalk entgegen.

In der Stored Procedure werden mehrere Temp-Tabellen angelegt, um aufwändige Kalkulationen durchzuführen.

Das Ausführen der Stored Procedure über SQL Management Studio funktioniert ohne Fehler.

Greift der BizTalk darauf zu, dann erscheint die obige Fehlermeldung.

   

Die Lösung:

Statt einer Temp-Tabelle einfach eine Tabellen-Variable benutzen!

Also statt dieser Variante: 

CREATE TABLE #tmp_Calc_DESADV (

                orderid nvarchar(50),

                price money

)

Besser diese Option nutzen:

DECLARE @tmp_Calc_DESADV AS TABLE (

                orderid nvarchar(50),

                price money

)

Damit kann der BizTalk umgehen.
Die lästige und verwirrende Fehlermeldung von oben erscheint nicht mehr.