Einfügen einer einzelnen Zeile und gibt die Primärschlüssel
In SSIS, Wie benutze ich den task SQL ausführen zum einfügen einer einzigen Zeile ohne Parameter und erhalten den Primärschlüssel zurück, so dass ich können Sie Benutzer-Variablen? Meine insert-Abfrage ist einfach:
INSERT INTO [AdWords.ImportData] (EndDate) VALUES (null)
- OLE DB-oder ADO.NET Verbindung?
- OLE DB-bitte. Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gute Frage, hat mich ein paar versucht es herauszufinden. Deklarieren Sie ein SSIS-variable vom Typ Int32 (es sei denn, Sie müssen die Dimensionierung für ein bigint oder numerisch). Ich wählte tablePk wie bei mir.
Option 1
Task SQL ausführen
ResultSet: Keine
SQL
Variable Name: User::tablePk
Richtung: Ausgang
Datentyp: Long
Parameter Name: 0
Parameter Größe: -1
Option 2
War dies die ursprüngliche Lösung, wie ich konnte nicht verstehen, wie man den Platzhalter
?
im normalen Abfrage. Es konnte nicht so einfach als das, was ich hatte vor, außer es war.Der einzige Unterschied ist die Abfrage verwendet
SQL
Option 3
Wenn Sie einen Datenfluss skizziere ich ein Konzept für So Fügen Sie das Ergebnis einer T-SQL-Anweisung, um einen Datenfluss? kurz gesagt, Sie müssen zum hinzufügen einer Spalte in der Daten-flow vor ein OLE DB-Befehl. Innerhalb der OLE DB-Befehl, werden Sie anzeigen, die leere Spalte in eine
OUTPUT
parameter aus der gespeicherten Prozedur und dann, wie die gespeicherte Prozedur feuert, ersetzt es die Spalte mit dem Wert aus der Prozedur.Alternativ zu bilinkc die version ohne Parameter:
Task SQL ausführen
Registerkarte "allgemein"
ResultSet: Einzelne Zeile
SQL
In der mapping-von der single-row ResultSet, geben Sie LastId in das Ergebnis Feld name ein, und ordnen Sie Ihre Variablen.
Kann gut sein, geringfügig schneller mit einem einzigen output-parameter (bilinkc version), hängt davon ab, wie SSIS tut es "unter der Haube" ist und ob es wird eine vollständige datareader im Vergleich zu einem einzelnen Aufruf von sp_ExecuteSQL mit output-parameter.
Hier ist eine weitere alternative, die ich denke, ist sehr sauber.
Es nutzt AUSGABE-syntax und das Ergebnis, statt der Parameter-Mapping, die erfordert weniger Konfiguration.
Id
in diese Erklärung mit den Namen Ihrer identity-Spalte.tab: Ergebnis Name:
0
(d.h. die erste Spalte) und wählen Sie Ihre Variablen-Namen z.B.User::tablePk
(Variable-Typ: Int32)