2009-07-28 3 views
3

Ich habe eine sehr einfache Komponente, die alle führenden und nachfolgenden Leerzeichen aus (lesen/schreiben) Zeichenfolgen in einer Pipeline schneidet. Soweit ich sehen kann, habe ich nur eine Binärdatei dieser DLL auf meiner Entwicklungsmaschine. Ich übertrage es auf einen anderen Entwicklungscomputer und registriere es im GAC, aber wenn ich ein Paket öffne, das ich auf den zweiten Rechner kopiert habe, erhalte ich folgende Warnung:Ursache von SSIS Custom Dataflow Component Fehler - kann nicht aktualisiert werden

Fehler 1 Validierungsfehler. Datenflusstask: DTS.Pipeline: Die Komponentenmetadaten für "component" TrimColumnsComponent "(1909)" konnten nicht auf die neuere Version der Komponente aktualisiert werden. Die PerformUpgrade-Methode ist fehlgeschlagen. LD_CXSUM.dtsx 0 0

Ich habe die Komponente in der Toolbox, und ich kann eine andere auf die Datenflut ziehen und es scheint kein Problem zu haben.

Dies ist SQL Server 2005 und Visual Studio 2005 auf beiden Computern.

Auf der zweiten Maschine kann ich ein Paket von Grund auf neu erstellen und es wird auf der Maschine geladen, die die Komponente gebaut hat (aber das Symbol ist das Standard-Benutzerkomponentensymbol, das gleiche wie auf der zweiten Maschine). Wenn ich ein Paket von Grund auf neu auf dem Erstellungscomputer erstellen, hat es das richtige Symbol aber es gibt die Aktualisierungsnachricht auf dem non-build-Computer. Die Dateien sind im Komponentenverzeichnis identisch, sie haben dieselbe Komponentenklassen-ID und sind im GAC registriert.

Ich habe die dtsx-Dateien manuell überprüft, indem ich das XML und in den Paketen untersucht habe, die auf der Erstellungsmaschine und der Nicht-Erstellungsmaschine erstellt wurden, die Klassenidentifikation und der öffentliche Schlüssel sind zwischen Maschinen identisch.

Was kann das verursachen?

+0

Gehst du von 2005 bis 2008 oder umgekehrt? Ich habe diesen Schluckauf oft gesehen, wenn das der Fall ist. – Eric

+0

SQL Server 2005 und VS 2005 auf beiden Computern. –

Antwort

1

Im Allgemeinen bedeutet dies, dass die Komponente aktualisiert wurde, nachdem das Paket gespeichert wurde, und hat daher die falsche Versionsnummer. Sie müssen die Komponente leider neu hinzufügen, 1.

Sie können das Paket möglicherweise als neue Version speichern und versuchen, diese zu migrieren. Dies kann das Problem lösen, dass das automatische Upgrade aufgerufen wird (und anschließend fehlschlägt).

+0

Dieses spezielle Paket war zum Zeitpunkt der Erstellung der Komponente noch nicht vorhanden, daher bin ich mir nicht sicher, ob es jemals andere Versionen der Komponente (die zuletzt vor 7 Monaten geändert wurde) gesehen hat. Ich werde einige Experimente mit einem neuen Paket von einer Maschine zur anderen versuchen. –

+0

Ist es möglich, dass .NET Framework Versionsunterschiede dies beeinflussen? Ich habe das nicht überprüft. –

+1

Das könnte durchaus der Fall sein. Wenn Sie von .NET 3.5 nach .NET 2 gehen.0, ruft die Komponente einige Bibliotheken auf, die nicht existieren oder neuere Versionen der .NET-Bibliotheken erwarten. – Eric

1

Sind Sie zu 100% überzeugt, dass die Kopie der Komponente im GAC mit der Kopie im Ordner Programme \ Microsoft SQL Server \ 90 \ DTS \ PipelineComponents übereinstimmt? Die GAC-Kopie wird zur Laufzeit verwendet, und die Kopie unter PipelineComponents wird von der VS IDE verwendet. Wenn Sie auf einem x64-Computer ausgeführt werden, würde ich sicherstellen, dass Sie es in den Ordner PipelineComponents sowohl im normalen Ordner Programme als auch im x86-Ordner kopieren.

+0

Auf allen Computern verwenden wir die Komponente aus der SSIS/BI-IDE und nicht mit dtexec. Die GAC-Kopie scheint dieselbe zu sein - sie hat denselben öffentlichen Schlüssel. Jetzt hat der auf den Maschinen, die später installiert wurden, ein Änderungsdatum in dem GAC, als es zu dem GAC hinzugefügt wurde. –

+0

Es ist nicht unbedingt der öffentliche Schlüssel, Sie können die Version einer Komponente ändern, ohne den Schlüssel zu ändern. Ich würde empfehlen, die Komponente aus dem GAC zu entfernen, sie in den entsprechenden Programmdateien-Ordner zu kopieren und sie dann im GAC neu zu installieren, indem Sie gacutil auf die Kopie im Ordner "Programme" zeigen, um sicherzustellen, dass es dieselbe Version ist. –

0

Einschließlich Client Tools SDK und Client Tools Rückwärtskompatibilität in der SQL Server-Installation löste das Upgrade Problem für mich.

1

Ich hatte das gleiche Problem, der Weg für mich war die Bereitstellung des gesamten Projekts statt eines einzelnen Pakets. Dadurch wurde das Problem behoben und das Paket konnte normal ausgeführt werden.

Verwandte Themen