2014-01-14 4 views
6

Ich habe ein SSIS-Paket, das in hes OLEDB-Ziel ein NVARCHAR (MAX) -Feld hat. Dieses Feld ist noch nicht einmal vom Datenfluss gefüllt. Der Datenflusstask schlägt mit Fehler fehl "Kann keinen OLE DB-Accessor erstellen. Überprüfen Sie, dass die Spaltenmetadaten gültig sind".SSIS: kann einen OLE DB-Accessor nicht erstellen. Stellen Sie sicher, dass die Spaltenmetadaten gültig sind.

Ich sah diese ähnliche Frage: How do I fix the multiple-step OLE DB operation errors in SSIS? und untersucht meine Metadaten, die es ist Ratschlag. Ich habe festgestellt, dass SSIS die betreffende Spalte als NTEXT anstelle von DT_WSTR abbildet. Ich habe versucht, seinen Typ zu DT_WSTR mit der Länge 8000 zu ändern, aber immer noch den gleichen Fehler. Auch versucht, das Feld mit NULL zu füllen, gleicher Fehler. Die Einstellung "Externe Metadaten validieren" auf "falsch" hat keinen Unterschied gemacht. Irgendwelche Vorschläge, wie man es beheben kann?

Danke.

+0

Welche Datenquellentypen werden an diese Zielspalte übergeben? – Kishore

+3

Sehr irritierender Fehler. Wenn ich mich richtig erinnere, musste ich die Metadaten jeder Quelle/Umwandlung MANUELL im Fluss erzwingen, damit es funktioniert. Quelle erzwingen bedeutet: andere Tabellen auswählen, speichern, alte Tabelle erneut auswählen, speichern. – OzrenTkalcecKrznaric

+0

@Kishore Es gibt keine Quelle, die beleidigende Spalte im Ziel hat keine Quelle :-( – Oscar

Antwort

1

Nur für die Aufzeichnungen, endete ich mit einem. Net Destination, wo dieser Fehler nicht passiert.

4

Ich fand einen anderen (möglicherweise schneller) Weg, um dies zu lösen, aber es ist ein bisschen peinlich. Der Vorbehalt besteht darin, dass Ihre Daten möglicherweise abgeschnitten werden. Ob es sinnvoll ist, sie zu verwenden, hängt davon ab, wofür die Daten verwendet werden.

Angenommen, die fehlerhafte Spaltenausgabe wurde auf Unicode text stream [DT_NTEXT] gesetzt. Fügen Sie einen zweiten Datenkonvertierungsschritt nach dem ersten hinzu, setzen Sie die Ausgaben von der ersten Umwandlung in die zweite und Sie können von Unicode text stream [DT_NTEXT] zu Unicode string [DT_WSTR] (Länge = 4000) zuordnen. Es wird Sie vor der Möglichkeit des Abschneidens warnen, aber jetzt können Sie die Ausgabedaten der zweiten Konvertierung verwenden.

+0

Danke, ist keine schlechte Idee, wenn Trunkierung eine Option ist. Ich habe nur meine eigene Frage beantwortet, nur vergessen, wenn ich das Problem selbst gelöst habe. Danke. – Oscar

0

Ich hatte das gleiche Problem von einer ACCESS-Datenbank, so dass ich Abgeleitete Spalte verwendet und alle erforderlichen Felder (DT_STR, <>, <>) gemacht (mit der Länge der Größe der Tabellenspalte und der Codepage 1252 sein). Dies funktionierte nicht nur in ACCESS, sondern auch in einer EXCEL-Quelle.

Hoffe, das hilft.

0

Ich endete mit dem .NET-Ziel aber das eigentliche Problem war, dass die Zieltabelle Spalten waren veraltet.

Versuchen Sie, sie entweder zu aktualisieren, indem Sie das Ziel in eine andere Tabelle und dann zum vorherigen oder direkt ändern, indem Sie diese Aktion entfernen und dann wieder mit den richtigen Zuordnungen hinzufügen.

1

Ich hatte ein ähnliches Problem. Ich hatte ein SQL-Feld, das von NVARCHAR (MAX) zu NVARCHAR (4000) geändert wurde, gab mir aber den gleichen Fehler, den Sie beschreiben. Unglaublich frustrierend. Ich konnte es beheben, indem Sie die Spalte in dem OLE DB-Ziel, das das Feld falsch als NTEXT auflistet, aufheben. Dann gehen Sie durch jede SSIS-Operation, die vor dem OLE DB-Ziel kam, und wählen Sie Show Advanced Editor ... dann klicken Sie auf Aktualisieren. Nachdem ich dies für jeden vorherigen Schritt getan hatte, ordnete ich die Spalte neu und SSIS erkannte schließlich, dass die Spalte jetzt ein DT_WSTR war.

Verwandte Themen