2016-07-11 17 views
0

ein Ausführungs sql Aufgabe definiert wurde auszuführen als below.The Parameterzuordnung ist System: Benutzername Eingabe VARCHAR 0 -1 System: Paketeingang VARCHAR 1 -1sql Aufgabe Fehler

DECLARE @DataLoaderUsername VARCHAR(100) 
DECLARE @PackageName VARCHAR(100) 
DECLARE @Code VARCHAR(5) 
DECLARE @RunNumber INT 

SET @DataLoaderUsername = ? 
SET @PackageName = ? 
SET @Code = 'bbb' 


INSERT INTO tBL_Log 
(LoadDateTime,DataLoaderUsername,PackageName,Code) 
SELECT GetDate(),@DataLoaderUsername,@PackageName ,@Code 

SELECT @RunNumber = Max(RunNumber) 
FROM tBL_Log 

SELECT @RunNumber As LoadID 

Es zeigt einen Fehler

Execute SQL Task] Error: Executing the query "DECLARE @DataLoaderUsername VARCHAR(100) 

die gleiche Abfrage in SSMS ausgeführt und es funktioniert gut (mit einem fest codierten Benutzername)

Antwort

1

Put Semikolons am Ende jeder SQL-com mand. Wenn SSIS den Befehl an SQL Server sendet, sendet er es als eine einzige Zeile. Daher werden Semikolons benötigt, um SQL Server anzuzeigen, wo jeder neue Befehl beginnt.

+0

Dank für this.Still gleichen Fehler – user1254579

+2

Es sollte mehr auf die Fehlermeldung sein. Kannst du die gesamte Nachricht posten? –

0

Ihr Code in der Task SQL ausführen sollte nur Folgendes enthalten.

INSERT INTO tBL_Log 
(LoadDateTime,DataLoaderUsername,PackageName,Code) 
SELECT GetDate(),? ,?, 'bbb' 

SELECT LoadID = Max(RunNumber) 
FROM tBL_Log 

In der Seite Allgemein stellen Sie sicher, ResultSet Set einreihige haben, und die DB-Verbindung auch auf einen gültigen Verbindungsmanager eingestellt.

enter image description here

Ich glaube, Sie haben bereits Setup Ihre Parameters Seite, nur sicherstellen, dass sie wie folgt aussehen. Denken Sie daran, der Index für die Parameter beginnt bei 0 und ist in der Parameter Name Box angegeben (Nicht intuitiv, ich weiß. Es stolperte mich am Anfang, als ich SSIS lernte).

enter image description here

Schließlich, um den LoadId Wert zu erhalten, die Sie in der letzten Anweisung auswählen, erstellen Sie eine Variable diesen Wert in der ResultSet Scheibe zu halten. Das ResultSet sollte 0 genannt werden.

enter image description here

So sieht es wie folgt aus.

enter image description here