Announcement

Collapse
No announcement yet.

MS SQL 2005 - Linked Server Umlauteproblem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MS SQL 2005 - Linked Server Umlauteproblem

    Hallo,

    ich habe folgendes Problem (ist in gewissen Punkten ähnlich zu diesem Thema:
    Auf unserem MS SQL 2005 Server haben wir einen "Linked Server" definiert, der auf eine Oracle DB (Version 10.2) zugreift. Die Verbindung steht und SQL-STMTs via OpenQuery funktionieren soweit tadellos. Allerdings haben wir das Problem, dass Umlaute einfach gekappt werden. Also aus einem "Ü" -> "U", "ä" -> "a", "Ö" -> "O", ... So wir aus einer "Störung" ein Storung, ...

    Die Einstellungen des Linked Servers sind wie folgt:
    Provider: Microsoft OLE DB Provider for Oracle
    ProductName: XXXX
    Datasource: (DESCRIPTION=(SDU=32768)(ADDRESS_LIST=(ADDRESS=(CO MMUNITY=SAP.WORLD)(PROTOCOL=TCP)(HOST=XXX.XXX.XXX. XXX)(PORT=1504)))(CONNECT_DATA=(SID=BWP)(GLOBAL_NA ME=BWP.WORLD)))
    Server Options:
    - Collation Compatible = false
    - Use Remote Collation = false
    - Collation Name = SQL_Latin1_General_CP437_CS_AS

    Diesbezüglich habe ich auch schon im Oracle Forum nachgefragt, woran der Fehler liegen könnte. Diese wollen jedoch immer, dass ich einen Oracle Client auf dem SQL Server installiere, ich hingegen möchte ja nur den MS SQL nutzen, logischerweise über den MS SQL Dataprovider auf Oracle zugreifen.

    Nun kommt jedoch das interessante: Wenn ich aus Visual Studio eine Verbindung via .Net Provider for Oracle herstelle, bekomme ich alle Umlaute korrekt geliefert.

    Diesen ".Net Provider for Oracle" habe ich jedoch leider im MS SQL in der Providerauswahl nicht zur Verfügung. Ist es möglich, diesen da einzubauen? Hat jemand Erfahrung mit diesem "Umlauteproblem"? Sonstige Tipps/Hinweise?

    Danke!

  • #2
    ich hingegen möchte ja nur den MS SQL nutzen, logischerweise über den MS SQL Dataprovider auf Oracle zugreifen
    Logisch finde ich das nicht.
    Du musst auf dem Server ja nur die Treiber installieren, nicht irgendwie die Tools oder sonstigen Overhead.
    Und ich traue Oracle eher zu richtiger mit der DB zu kommunizieren, als den MS Treiber (naja, in den ORA Treibern haben wir bisher immer einen Bug gefunden )
    Neben Internitas gibt es sogar "sichtbare" Unterschiede. Werf mal den Import-Assistenten an, nimm mal MS und mal ORA Treiber und wähle dann die zu importierenden Tabellen aus.
    MS zeigt sie sortiert an, ORA nicht. Also liefern beide schon mal unterschiedliche Ergebnisse.

    Ist es möglich, diesen da einzubauen?
    Nein, ist nicht möglich. Der MS SQL kann für LinkedServer nur "unmanaged" Treiber verwenden und keine aus .NET.
    Das ginge nur in CLR / Assembly.

    Was die Umlaute betrifft, habe ich leider keinen direkten Rat.
    Wir nutzen zwar auch ORA, aber nicht über Linked Server und auf den anderen Wegen funktioniert es.
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Danke, die zweite Aussage hilft mir schon mal deutlich weiter .. bzw. macht klar, dass es mit meinem "Wunschansatz" nicht geht

      Du musst auf dem Server ja nur die Treiber installieren, nicht irgendwie die Tools oder sonstigen Overhead.
      Verstehe ich dich richtig, dass ich dann via definierter ODBC-Verbindung (in der ich über den Treiber gehe) diese im MS SQL angebe? Das war nämlich unser erster Versuch, jedoch im Ergebnis auch ohne Umlaute.

      Auf Grund von fehlenden Registry Einträgen (gemäss Oracle-Forum) wäre dann höchstens möglich, dass der Treiber nicht 100% installiert ist. Aber ob sich der MS-SQL bzw. die ODBC-Verbindung für die Registry Einträge von Oracle interessiert!? ... hm ...

      Comment


      • #4
        via definierter ODBC-Verbindung (in der ich über den Treiber gehe)
        Du kannst über ODBC gehen, aber das ist nur eine unnötige Zwischenschicht (und Fehlerquelle).

        Statt dem "Microsoft OLE DB Provider for Oracle" nimmst Du den "Oracle Provider for OLE DB" für den LinkedServer; der ist natürlich erst nach Installation des Treiber verfügbar. TNSnames.ora nicht vergessen!
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          Danke! werde ich gleich am Montag probieren, wenn der SQL-Serveradmin wieder zurück ist

          Comment


          • #6
            es ist geschafft, die Umlaute kommen richtig an!

            Der Weg:
            - Download des Oracle 10.2 Treibers
            - Installation der Treiber auf dem SQL-Server, Reboot
            - Setzen der Environment-Variablen "Oracle_Home" und "TNS_Admin":
            ORACLE_HOME = C:\ORACLE\ODAC10_2
            TNS_ADMIN = %ORACLE_HOME%\network\admin

            - Reboot (damit die Einstellungen wirksam werden)
            - Das Einrichten des Linked Servers über "Oracle Provider for OLE DB" schlug dann jedoch immer noch mit einer "Nichtssagenden" Fehlermeldung fehl
            - Hingegen konnte der Linked Server über den "Microsoft OLE DB Provider für Oracle" erstellt werden und siehe da, die Umlaute werden korrekt geliefert. Anscheinend installiert der Oracle Treiber auch Updates für den MTS-Oracle Treiber von Microsoft
            - Die TNSNames.ora konnten wir leer lassen, den Connection-String inkl. Parameter haben wir dann dem Linked Server übergeben. Ab Version 10.1. geht dies.

            Danke und Grüsse

            Comment

            Working...
            X