none
Fehler bei Datenkonvertierung von Unicode-Text der das Zeichen # enthält RRS feed

  • Frage

  • Hallo,

    ich möchte über den Microsoft OLE DB Provider für DB2 eine DB2-Tabelle auslesen, die u.a. eine Textspalte enthält, die zum Teil mit Texten gefüllt ist, die am Ende ein #-Zeichen stehen haben. Jeglicher Versuch der Datenkonvertierung ist bisher mit der Meldung fehlgeschlagen, dass "ein oder mehrere Zeichen hatte(n) auf der Zielcodeseite keine Entsprechung" haben.

    Hat jemand eine Idee, wie ich das Problem lösen kann? Es ist leider zwingend notwendig, dass das #-Zeichen mit in meine SQL Server 2008 R2 Tabelle geschrieben wird.

    Danke

    Alex


    Donnerstag, 18. August 2011 14:18

Alle Antworten

  • Hi,

    welchen Datentyp hast Du denn im SQL Server für die Spalte vergeben?

    Wie versuchst Du die Daten zu konvertieren?

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Donnerstag, 18. August 2011 14:24
    Moderator
  • Hi Stefan,

    der Datentyp der Spalte ist char. Die Konvertierung versuche ich mit dem Datenfluss-Task "Datenkonvertierung" durchzuführen.

    Noch kurz zum Hintergrund. Ich befinde mich gerade in einer Umstellungsphase, in der ich unsere alten DTS-Pakete ablösen will. Mit den DTS-Paketen hat der Zugriff auf die DB2-Daten immer problemlos funktioniert.

    Gruß

    Alex

    Donnerstag, 18. August 2011 14:45
  • Hallo Alex,
    der Datentyp der Spalte ist char.

    Öhm. Sind das wirklich immer Inhalte mit einer festen Anzahl an Zeichen? Falls nicht, willst Du wirklich alles mit Leerzeichen auffüllen?

    Wenn überhaupt, wäre aber nchar das richtige, falls das oben genannte nicht gewollt ist, nvarchar.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Donnerstag, 18. August 2011 15:07
    Moderator
  • Moin Stefan,

    Du hast vollkommen Recht, es handelt sich um keine feste Anzahl Zeichen, weshalb ich den Datentyp auf nvarchar umgestellt habe. Die Daten werden nun ohne Fehler in die SQL Server Tabelle geschrieben. Allerdings ohne das #-Zeichen, das wird scheinbar einfach abgeschnitten.

    Weitere Recherchen in SAP haben ergeben, dass wenn ich mir die Tabelle im Data Browser anschaue, das #-Zeichen angezeigt wird. Mache ich allerdings eine Abfrage im SSMS über den Verbindungsserver, wird mir das #-Zeichen nicht angezeigt. Bevor das mit dem Verbindungsserver funktioniert hat, habe ich früher immer mit WinSQL auf die Daten zugegriffen. Dies habe ich jetzt auch nochmal gemacht und erhielt folgendes Ergebnis "... nach Durchgang stets  ".

    Ich vermute nun, dass es gar nicht das #-Zeichen an sich ist, sonder vielmehr das, was SAP scheinbar im "Hintergrund" daraus macht "" (Wenn man das so sagen kann.). Ich habe nun auch eine Anfrage an unsere SAP-Basis geschickt, dass die sich das mal anschauen, da dies nicht die einzige Tabelle ist, wo das #-Zeichen genutzt wir. Allerdings ist es bisher die einzige, die dieses Problem verursacht hat. Bei einem Test mit einer anderen Tabelle, wurde das #-Zeichen problemlos mit übernommen. In diesem Zusammenhang muss ich meine Aussage "Mit den DTS-Paketen hat der Zugriff auf die DB2-Daten immer problemlos funktioniert." etwas einschränken, da ich wusste, dass eigentlich in allen betroffenen Tabellen die #-Zeichen immer angekommen sind. Bei genauerer Betrachtung der aktuellen Problemtabelle musste ich allerdings fesstellen, dass das DTS-Paket das gleiche Ergebnis wie WinSQL liefert und in meine SQL Server-Tabelle geschrieben hat "... nach Durchgang stets  ".

    Kannst Du Dir einen Reim darauf machen?

    Alex


    Freitag, 19. August 2011 07:46
  • Hallo Alex,

    wenn im SSMS DataGrid ein □ Zeichen angezeigt wird, dann liegt es meistens daran, das diese Unicode Zeichen im fürs Grid verwendete Zeichensatz nicht enthalten ist. Du könntest in den "Extras" => "Optionen" vom SSMS einen anderen Font auswählen oder schalte mal übers Menü "Abfrage" => "Ergebnis in" => "Ergebnis in Text" um (einfacher: Strg + T) die Ausgabe um; im Standard wird dort Courier verwendet und erfahrungsgemäß enthält der Font sehr viele Unicode Zeichen; dann könnte das eigentliche Zeichen angezeigt werden.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing
    Freitag, 19. August 2011 17:05
  • Moin Olaf,

    das □ Zeichen wird mir im SSMS nicht angezeigt. Das SSMS scheint dies einfach abzuschneiden bzw. nicht zu erfassen. Das □ Zeichen habe ich zu sehen bekommen, als ich die Abfrage über WinSQL gemacht habe und bei der Kontrolle, was das DTS Paket aus dem in SAP angezeigtem #-Zeichen beim Schreiben in die SQL-Server-Tabelle macht. Ein Ändern des Fonts sowie das Umstellen auf "Ergebnis als Text" hat leider  keine Änderung gebracht. Nachwievor, wird das □ Zeichen im SSMS nicht angezeigt.

    Gruß, Alex

    Montag, 22. August 2011 08:05