Wie kann ich capture die einzige Zeile Wert aus der Task SQL Ausführen verwendet einen Ausdruck?
Habe ich einen Task SQL Ausführen mit diesem Ausdruck:
@[User::SQLExportError] + (DT_WSTR,30)@[User::Id]
Der Ausdruck ist korrekt:
select count(*) as ErrorTableCount from [myschema].Error
where SPName in ('export/INSERT','export/DELETE') and Id = 1000
In diesem gleichen sql-Aufgabe, die ich aufnehmen möchten, die as ErrorTableCount
in eine einzelne Zeile-ResultSet mit der ResultName genannt: ErrorTableCount Variable Name genannt: User::ErrorTableCount
Ich bin immer der rote Kreis/x Kreuz sagt mir:
There were errors during task validation.
Scheint es einen Konflikt zwischen der Verwendung von ein Ausdruck für den sql-source-und in diesem Ausdruck, in dem die den Beinamen count name definiert, unter dem ResultSet. Irgendwelche Tipps/Ideen?
- es wird eine variable namens SQLExportError verkettet mit der Id-variable.
- Sie sollten überprüfen Sie die Verbindung testen, wenn es ok ist, konfigurieren Sie die "Result Set" "Single-row" setzen Sie die variable in der "Result Set" - Seite, setzen Sie den Ausdruck in die SQLStatementSource-und wenn das immer noch nicht funktioniert, brauchen wir mehr Informationen um dir zu helfen. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin nicht in der Lage herauszufinden, was den Fehler verursacht, in Ihrem Szenario. Ich habe versucht, neu zu erstellen das Szenario basierte auf der Frage. Das Beispiel könnte dir helfen, herauszufinden, was anders ist an Ihr Ende.
Erstellen Sie eine einfache Tabelle namens dbo.Fehler
Füllen Sie die Tabelle mit ein paar Beispiel-Daten mit dem Skript unten.
Auf das SSIS-Paket erstellen eines Verbindungs-manager-oder data-source-Verbindung zu der Datenbank, in denen die oben erwähnte Tabelle ist gehostet. In diesem Beispiel habe ich ein OLE DB-Verbindungs-manager, weil das die empfohlene Anbieter für SQL Server-Datenbanken und dem Namen der Verbindungs-manager als Praxis.
Erstellen Sie die folgenden Variablen auf das Paket.
Legen Sie die variable
Id
auf den Wert 1000, so dass die Abfrage ausgeführt wird in der Execute-SQL-Task holt mindestens zwei Zeilen.Legen Sie die variable
SQLExportError
der folgenden Abfrage:Wählen Sie die variable
SQLFetch
und drücken Sie F4 zum anzeigen der Eigenschaften. Setzen Sie die Eigenschaft EvaluateAsExpression zu Wahr. Klicken Sie auf die Schaltfläche mit den Auslassungspunkten gegen die Ausdruck - Eigenschaft, und legen Sie den folgenden Ausdruck.Drag-and-drop eine Execute-SQL-Task auf der Registerkarte Ablaufsteuerung. Konfigurieren der Seite "allgemein" des tasks SQL Ausführen, wie unten gezeigt, um die SQL-Abfrage ausführen, gespeichert in dem Ausdruck variable.
Konfigurieren der Seite ResultSet zu akzeptieren, den Wert von der Abfrage zurückgegeben und speichern es in die variable.
Fügen Sie ein Skript-task, um den Wert in der Variablen gespeichert. Konfigurieren Sie das Skript-task zum Lesen der variable
ErrorTableCount
Fügen Sie den folgenden C# - code, um das Skript Aufgabe.
Schließen Sie den Skript-editor für den task. Ablaufsteuerung würde in etwa so Aussehen.
Wenn Sie das Paket ausführen, wird das Meldungsfeld sollte angezeigt werden mit der Anzahl 2, denn das ist die Anzahl der Zeilen in der sample-Daten, die Id wird auf den Wert 1000.
Hoffe, das hilft Ihnen, zu finden, was falsch ist mit Ihrer Konfiguration.