Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Probleme mit dem Lesen von nvarchar-Daten bei SSIS

Frage Entwicklung Datenbanken

Mitglied: mischn1980

mischn1980 (Level 2) - Jetzt verbinden

18.03.2011 um 09:02 Uhr, 7367 Aufrufe, 16 Kommentare

Hallo Forum,

ich habe ein kleines Problem mit den SSIS.

Vorhanden ist eine Sybase-Datenbank. Aus dieser Datenbank soll eine Tabelle exportiert und in MS-SQL importiert werden.

Dafür soll von Microsoft SSIS eingesetzt werden. Die Verbindung zu beiden Datenbanken steht.

Es werden auch ohne Probleme Informationen von dem Typen INT und DateTime ex- und importiert.

Das Problem sind die Datentypen NVarchar. Der Fehler tritt hier auch schon beim exportieren auf.

Zum Exportieren verwende ich einen Data-Reader.

Ich habe bereits einen Datenkonvertierer zwischen dem Reader und dem Writer eingebaut. Leider ohne Erfolg.

Der Witz am Ganzen ist eigentlich, dass wenn ich über die gleiche Datenbankverbindung über Access einen Import mache bekomme ich eine 1 zu1 Abbildung der Tabelle in Access.

Kann mir jemand weiterhelfen?

Gruss

Michael
Mitglied: AndreasHoster
18.03.2011 um 10:28 Uhr
Der Fehler tritt hier auch schon beim exportieren auf.
Ist ja schön, daß es dabei auch nur genau ein einziger, eindeutiger Fehler auftreten kann und der so allgemein bekannt ist, daß ihn jeder kennt.

Also, was für ein Fehler tritt auf? Log-Einträge könnten da auch ganz hilfreich sein.
Bitte warten ..
Mitglied: mischn1980
18.03.2011 um 10:36 Uhr
Hi,

mit Log-Einträgen kann ich leider nicht dienen.

Es wird das Programm gestartet. Der Data-Reader fängt an zu lesen und bricht sofort ab. Ich bekomme keine Fehlermeldung und keinen sinnvollen Eintrag ins Systemlogbuch.
Der Eintrag der gemacht wird ist:

Fehler beim Paket 'XYZ'.
Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie unter http://go.microsoft.com/fwlink/events.asp.

Also nicht wirklich hilfreich.

Gruss

Michael
Bitte warten ..
Mitglied: AndreasHoster
18.03.2011 um 11:01 Uhr
Das ist wirklich nicht sonderlich hilfreich.
Da bleibt wohl nur die im Moment neblige Kristallkugel übrig.
Mal so ins Blaue geraten:
Möglicherweise ist das Zielfeld nicht groß genug? Weil möglicherweise die Erkennung ob Unicode oder nicht nicht richtig tut?
Bitte warten ..
Mitglied: mischn1980
18.03.2011 um 11:03 Uhr
Das Zielfeld hat wie die Quelle als Größe 20 eingestellt.
Habe eben auch mal das Zielfeld auf nvarchar(max) umgestellt. Leider ohne Erfolg.
Bitte warten ..
Mitglied: mischn1980
18.03.2011 um 11:08 Uhr
So jetzt habe ich doch noch eine weitere Information gefunden die vielleicht helfen kann.

Warnung: 0x800470C8 bei Datenflusstask, OLE DB-Ziel [18740]: Die externe Metadatenspaltenauflistung ist nicht mit den Datenquellspalten synchronisiert. DieXYZ-Spalte muss in der externen Metadatenspaltenauflistung aktualisiert werden.

Fehler: 0xC0209029 bei Datenflusstask, DataReader-Quelle [20347]: SSIS-Fehlercode 'DTS_E_INDUCEDTRANSFORMFAILUREONERROR'. Fehler bei 'Komponente 'DataReader-Quelle' (20347)' aufgrund des Fehlercodes 0x80131937, und die Fehlerzeilendisposition in 'Ausgabespalte 'XYZ' (25229)' gibt an, dass bei einem Fehler der Vorgang fehlschlägt. Im angegebenen Objekt in der angegebenen Komponente ist ein Fehler aufgetreten. Möglicherweise wurden bereits Fehlermeldungen veröffentlicht, die weitere Fehlerinformationen beinhalten.
Fehler: 0xC02090F5 bei Datenflusstask, DataReader-Quelle [20347]: 'Komponente 'DataReader-Quelle' (20347)' konnte die Daten nicht verarbeiten.
Fehler: 0xC0047038 bei Datenflusstask: SSIS-Fehlercode 'DTS_E_PRIMEOUTPUTFAILED'. Die PrimeOutput-Methode in 'Komponente 'DataReader-Quelle' (20347)' hat den Fehlercode 0xC02090F5 zurückgegeben. Die Komponente gab einen Fehlercode zurück, als das Pipelinemodul 'PrimeOutput()' aufgerufen hat. Die Bedeutung des Fehlercodes wird von der Komponente definiert. Der Fehler ist jedoch schwerwiegend, und die Ausführung der Pipeline wurde beendet. Möglicherweise wurden bereits Fehlermeldungen veröffentlicht, die weitere Fehlerinformationen beinhalten.
Fehler: 0xC0047021 bei Datenflusstask: SSIS-Fehlercode 'DTS_E_THREADFAILED'. Der Thread 'SourceThread0' wurde mit dem Fehlercode 0xC0047038 beendet. Möglicherweise wurden bereits Fehlermeldungen veröffentlicht, die weitere Informationen zum Beenden des Threads beinhalten.
Fehler: 0xC0047039 bei Datenflusstask: SSIS-Fehlercode 'DTS_E_THREADCANCELLED'. Der Thread 'WorkThread0' hat ein Signal zum Herunterfahren erhalten und wird beendet. Der Benutzer hat das Herunterfahren angefordert, oder ein Fehler in einem anderen Thread hat dazu geführt, dass die Pipeline heruntergefahren wird. Möglicherweise wurden bereits Fehlermeldungen veröffentlicht, die weitere Informationen zum Abbruch des Threads beinhalten.
Fehler: 0xC0047021 bei Datenflusstask: SSIS-Fehlercode 'DTS_E_THREADFAILED'. Der Thread 'WorkThread0' wurde mit dem Fehlercode 0xC0047039 beendet. Möglicherweise wurden bereits Fehlermeldungen veröffentlicht, die weitere Informationen zum Beenden des Threads beinhalten.

Hilft das weiter? Mir pers. im Moment leider nicht wirklich!
Bitte warten ..
Mitglied: AndreasHoster
18.03.2011 um 11:55 Uhr
Klingt fast so, als ob sich die Spaltenstruktur geändert hat, seitdem das Transformationspaket erstellt wurde.
Könnte das sein?
Bitte warten ..
Mitglied: mischn1980
18.03.2011 um 12:00 Uhr
Nein die Splatenstruktur ist nicht geändert.

Die obere Warung konnte ich inzwischen beheben.

Die restlichen Fehler sind weiterhin vorhanden.
Bitte warten ..
Mitglied: mischn1980
18.03.2011 um 13:53 Uhr
Habe als Ziel jetzt mal versucht eine Text-Datei anzugeben.

Dabei bekomme ich dann folgenden Fehler:

Fehler: 0xC0209029 bei Datenflusstask, DataReader-Quelle [20347]: SSIS-Fehlercode 'DTS_E_INDUCEDTRANSFORMFAILUREONERROR'. Fehler bei 'Komponente 'DataReader-Quelle' (20347)' aufgrund des Fehlercodes 0x80131937, und die Fehlerzeilendisposition in 'Ausgabespalte 'XYZ'(25376)' gibt an, dass bei einem Fehler der Vorgang fehlschlägt. Im angegebenen Objekt in der angegebenen Komponente ist ein Fehler aufgetreten. Möglicherweise wurden bereits Fehlermeldungen veröffentlicht, die weitere Fehlerinformationen beinhalten.
Fehler: 0xC02090F5 bei Datenflusstask, DataReader-Quelle [20347]: 'Komponente 'DataReader-Quelle' (20347)' konnte die Daten nicht verarbeiten.
Fehler: 0xC0047038 bei Datenflusstask: SSIS-Fehlercode 'DTS_E_PRIMEOUTPUTFAILED'. Die PrimeOutput-Methode in 'Komponente 'DataReader-Quelle' (20347)' hat den Fehlercode 0xC02090F5 zurückgegeben. Die Komponente gab einen Fehlercode zurück, als das Pipelinemodul 'PrimeOutput()' aufgerufen hat. Die Bedeutung des Fehlercodes wird von der Komponente definiert. Der Fehler ist jedoch schwerwiegend, und die Ausführung der Pipeline wurde beendet. Möglicherweise wurden bereits Fehlermeldungen veröffentlicht, die weitere Fehlerinformationen beinhalten.
Fehler: 0xC0047021 bei Datenflusstask: SSIS-Fehlercode 'DTS_E_THREADFAILED'. Der Thread 'SourceThread0' wurde mit dem Fehlercode 0xC0047038 beendet. Möglicherweise wurden bereits Fehlermeldungen veröffentlicht, die weitere Informationen zum Beenden des Threads beinhalten.
Fehler: 0xC0047039 bei Datenflusstask: SSIS-Fehlercode 'DTS_E_THREADCANCELLED'. Der Thread 'WorkThread0' hat ein Signal zum Herunterfahren erhalten und wird beendet. Der Benutzer hat das Herunterfahren angefordert, oder ein Fehler in einem anderen Thread hat dazu geführt, dass die Pipeline heruntergefahren wird. Möglicherweise wurden bereits Fehlermeldungen veröffentlicht, die weitere Informationen zum Abbruch des Threads beinhalten.
Fehler: 0xC0047021 bei Datenflusstask: SSIS-Fehlercode 'DTS_E_THREADFAILED'. Der Thread 'WorkThread0' wurde mit dem Fehlercode 0xC0047039 beendet. Möglicherweise wurden bereits Fehlermeldungen veröffentlicht, die weitere Informationen zum Beenden des Threads beinhalten.
Bitte warten ..
Mitglied: AndreasHoster
18.03.2011 um 14:04 Uhr
Eine kurze Google Suche nach 'DTS_E_INDUCEDTRANSFORMFAILUREONERROR' ergibt:
http://support.microsoft.com/kb/943655/en-us
http://connect.microsoft.com/SQLServer/feedback/details/369365/empty-nv ...

Zweiter Link verweist zwar auf eine Ingres Datenbank, aber ich vermute, daß es bei Dir auch an einem leeren nvarchar Feld liegt.
Bitte warten ..
Mitglied: Biber
18.03.2011 um 14:13 Uhr
Moin mischn1980,

hast du schon mal beim sympathischen Weltmarktführer nachgelesen?
Auch falls wider Erwarten das angegebene Servicepack schon bei dir nachgerüstet sein sollte,
verwette ich das Lieblingsfusskettchen meiner Lieblingspraktikantin darauf, dass in der Sybase-Quelle das angesprochene NVarChar()-Feld NULLABLE ist.

Leg doch einen Eins-zu-Eins-View mit CHAR-Typen und fester Feldlänge an für den Export, und sei es nur, um die Fehlerursache zu verifizieren.

Grüße
Biber
[Edit] @MissionImpossible
Zu deiner Antwort gerade:
Es war nicht gefragt, ob die Spalte in jedem Satz einen Wert hat, sondern ob die NULLABLE ist.
[/Edit]
Bitte warten ..
Mitglied: mischn1980
18.03.2011 um 14:17 Uhr
Leider muss ich dir Wiedersprechen.

Die Spalte mit dem nvarchar, die ich versuche zu importiern hat in jeder Zeile einen Wert eingetragen.
Habe extra eben nochmal die Spalte geprüft.
Bitte warten ..
Mitglied: mischn1980
18.03.2011 um 14:21 Uhr
Hallo Biber,

auch dich muss ich leider enttäuschen.

Das Feld in der Sybase-Quelle ist nicht NULLABLE.

Bei meinem SQL handelt es sich leider auch noch um einen MS-SQL 2000.

Gruss

Michael

[Edit]
Ohne Worte
[/Edit]
Bitte warten ..
Mitglied: Biber
18.03.2011 um 14:30 Uhr
Moin mischn1980,

die Ursache dürfte nicht SQLServer2000/2005/2008-spezifisch sein, so wie ich es lese.
Sondern irgendwo in dem zusammengeschlamperten OBDC-Treiber liegen.
Und den und/oder die .NET-Versionen kannst du bestimmt auch separat aktualisieren.

P.S. Hat auch sein Gutes,wenn ich mich mit der NULLABLE-Eigenschaft geirrt habe.
Dann kann ich das Fusskettchen behalten.

Grüße
Biber
Bitte warten ..
Mitglied: mischn1980
18.03.2011 um 15:05 Uhr
Die Frage die sich mir stellt ist:

Wenn es am Treiber liegen sollte. Was macht dann Access 2010 so viel anders wie SSIS? Denn bei Access 2010 kann ich die Tabelle mit dem gleichen Treiber auslesen und in Access2010 anlegen.

Das sollte doch dann auch nicht funktionieren. Oder?
Bitte warten ..
Mitglied: Biber
18.03.2011 um 15:49 Uhr
Moin mischn1980,

Zitat von mischn1980:
Die Frage die sich mir stellt ist:

Wenn es am Treiber liegen sollte. Was macht dann Access 2010 so viel anders wie SSIS? Denn bei Access 2010 kann ich die Tabelle
mit dem gleichen Treiber auslesen und in Access2010 anlegen.

Das sollte doch dann auch nicht funktionieren. Oder?
Nicht zwangsläufig. Der SSIS hat ja noch eine künstliche Zwischenebene mehr als das relativ schlichte Access.
Beide laufen über den native ODBC-Treiber des Fremd-Systems (in deinem Fall den Sybase-Treiber).
SSIS allerdings ruft den auf über den halbabstrakten System.Data.ODBC managed driver, der wiederum die Intention hat
"Hey, im Prinzip haben doch alle Datenbanken einen gemeinsamen kleinsten Nenner. Und auf der Ebene sprech ich mit denen."

Bedeutet allerdings konkret bei NVarChar()-Feldern und wahrscheinlich auch bei Timestamp-Feldern, dass

a) die tatsächlich zum Inhalt gehörige Länge im Quellsystem XY und im Zielsystem SQLServer unterschiedlich sein kann. Weil... N[Var]Chars eben je nach Zeichensatz/Unicode/Ascii 1, 2, 3 oder 4 Byte belegen könnten

b) der Sauger, in diesem Falle SSIS muss also den Quellstring nicht in der Länge des Ziel-Feldes abholen, auch nicht mit Len(vonDemQuellString), sondern mit LenW(vonDemQuellStr).

c) und genau da scheint der Fehler zu liegen - WENN denn das NVarChar-Feld leer (=ein Leerstring), aber nicht NULL ist, dann wird offensichtlich die Sauger-Funktion mit einem Read-Befehl für das Quellfeld tätig in dem steht "Gib mir den Quellfeld-Inhalt in der Länge 0 Byte in den bereitgestellten Buffer der Länge 0"---> und da grätscht der native ODBC-Treiber ab.

Und wie ich die Redmonder PraktikantInnen einschätze werden die sagen "Okay, End-User, muttu warten, bis Sybase/mySQL/InGres/Hu-Ewwer ihre native ODBC-Driver darauf umgestellt haben, dass die auch mal einen etwas kleineren Buffer als sonst, also in Länge 0, für ihre Daten hingestellt bekommen."

--> Auf der/dem M$-Seiten stehen auch als mögliche Workarounds ein paar tipps, die darauf hinauslaufen, dass die Felder auf der ZIEL-Seite halt nicht WSTR, also NVarChar-felder sein sollten.
Ich würde zwar (siehe oben) genau anders vorgehen und die Quelle ändern, aber gehen sollte es auch.

Grüße
Biber
Bitte warten ..
Mitglied: mischn1980
21.03.2011 um 12:41 Uhr
Hallo Leute,

das Problem ist gelöst.

Hier ist der Link mit der Lösung.

Lösung

Danke für Eure Hilfe.

Gruss

Michael
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows 7
gelöst Sind euch verstärkte Probleme bei Windows 7 Updates aufgefallen? (4)

Frage von RadioHam zum Thema Windows 7 ...

Cloud-Dienste
gelöst OwnCloud 8 Probleme mit Vorschaubildern auf Mobilgeräten (1)

Frage von zeroblue2005 zum Thema Cloud-Dienste ...

Backup
gelöst Datensicherung von Daten, auf denen die ganze Zeit gearbeitet wird (8)

Frage von Windows11 zum Thema Backup ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...