Wie vs_needsnewmetadata Fehler in Datenfluss-Task zu überwinden?


5

Ich habe ein SSIS-Paket, das die Daten in einer Tabelle von einem SQL Server 2005 zu einem anderen SQL Server 2005 kopiert. Ich tue dies mit einer "Datenfluss" Aufgabe. In der Paketkonfigurationsdatei lege ich den Zieltabellennamen offen.

Problem ist, wenn ich den Namen der Zieltabelle in der Konfigurationsdatei (über Notizblock) ändern Ich erhalte den folgenden Fehler "vs_needsnewmetadata". Ich glaube, ich verstehe das Problem ... Die Zuordnung der Zieltabellenspalte ist beim ersten Einrichten des Pakets behoben.

Frage: Was ist der einfachste Weg, um das oben genannte mit einem SSIS-Paket zu tun?

Ich habe online gelesen über die Einrichtung der Metadaten programmgesteuert und alle, aber ich möchte dies vermeiden. Außerdem habe ich eine C# -Konsolen-App geschrieben, die alles gut macht ... alle Tabellen usw. sind in der app.config angegeben ... aber anscheinend ist diese Lösung nicht gut genug.

0

Wenn Sie nur Daten von einem SQL2005-Server zu einem anderen kopieren, würde ich nur einen Linked Server erstellen und einen gespeicherten Prozess verwenden, um die Daten zu kopieren. Ein SSIS-Paket ist Overkill.

How to Create linked server

Sobald der Verbindungsserver Sie erstellt würde nur Programm so etwas wie ...

INSERT INTO server1.dbo.database1.table1(id,name) 
SELECT id, name FROM server2.dbo.database1.table1 

Was das SSIS-Paket Ich habe immer wieder öffnen musste und das Paket wieder aufbauen, so dass die Meta Daten werden aktualisiert, wenn die Spalteneigenschaften der Tabelle geändert werden.


1

Überprüfen Sie, ob die neue Zieltabelle dieselben Spalten wie die alte hat.

Ich glaube der Fehler tritt auf, wenn die Spalten unterschiedlich sind, und das Ziel kann seine Eingabespalten nicht mehr den Tabellenspalten zuordnen. Wenn zwei Tabellen dasselbe Schema haben, sollte dieser Fehler nicht auftreten.


6

Haben Sie DelayValidation in den Datenquellenzieleigenschaften auf False gesetzt? Wenn nicht, versuche es.

Edit: Natürlich sollte DelayValidation zu True sein, also geht es einfach weiter und versucht eher als zu prüfen. Anstatt das Paket in Notepad zu ändern, setzen Sie den Tabellennamen auch in eine Variable, setzen Sie die Variable in einen Ausdruck am Ziel und setzen Sie die Variable dann in einer .DtsConfig-Konfigurationsdatei frei. Dann kannst du das ohne Gefahr ändern.


2

Passende Quellzielspalte mit Groß- und Kleinschreibung hat die Arbeit für mich erledigt.

wie in meinem Fall SrNo_prod war Spalte in dev und dessen Verwendung wir die Dtsx entwickelt, während es als SrNo_Prod in prod erstellt worden ist, nach Änderung vornehmen Fall P-p, wir haben die erfolgreiche Ausführung des Pakets.