2016-08-19 4 views
0

Ich muss eine Tabelle in meiner Staging-Datenbank, basierend auf der Max(ID) aus einer Tabelle in meiner Zieldatenbank neu formatieren.Identitätsspalte in SSIS erneut

Also habe ich eine Abfrage erstellt, die eine SELECT MAX(ID) AS MaxID From Tablename tut, und das ging in die Ergebnismenge und nannte den ResultName als maxID. (Eine SQL-Komponente ausführen).

Ich erstellte dann eine zweite Execute SQL-Komponente und ordnet den Parameter aus der vorherigen Komponente einem Parameter namens MaxID (Parametergröße: 0, Datentyp: Dezimal).

Die SQL-Anweisung für die zweite Komponente ist:

DBCC CHECKIDENT (Person, RESEED, ?) 

ich folgende Fehlermeldung erhalte:

[Execute SQL Task] Error: Executing the query "DBCC CHECKIDENT (Person, RESEED, ?)" failed with the following error: "The type for parameter '@P1' cannot be deduced in this context.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

Jede mögliche Anleitung oder Hilfe wäre toll.

edit: Ich versuche, die folgende SQL in meinem Task SQL ausführen zu verwenden:

DECLARE @Sql VARCHAR(100) = 'DBCC CHECKIDENT (Person, RESEED, ' + CAST(100 AS VARCHAR) + ')' 
EXEC (@Sql) 

Aber immer einen Fehler:

[Execute SQL Task] Error: Executing the query "DECLARE @Sql VARCHAR(100) = 'DBCC CHECKIDENT (Pers..." failed with the following error: "Parameter name is unrecognized.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

+0

Verwenden Sie _expression_, um den SQL-Wert festzulegen –

+0

Aber Vorsicht ... Es gibt viele Gründe, dass die IDs im Ziel nicht mit th synchronisiert werden die Quelle. Sie sollten stattdessen 'SET IDENTITY_INSERT OFF' verwenden. –

+0

Danke @ Nick.McDeermaid - Ich bin mir nicht sicher, wie man den Ausdruck auf der 'Execute SQL' Aufgabe verwendet. Ich sehe, es gibt eine Expressions-Eigenschaft - aber nicht sicher, wie ich den SQL-Befehl von dort aus setzen kann, und den Wert von meiner zuvor ausgeführten "Select Max ..." -Komponente verwenden. – Craig

Antwort

-3

Versuchen Sie, die SQL-Abfrage zu konstruieren, und führen Sie es mit dynamic sql

+0

Ich habe das gerade jetzt versucht, bekomme aber einen Fehler. Ich habe die Frage geändert, um dies zu berücksichtigen. – Craig