none
MSSQL Linked Server to DB2 iSeries - Performance RRS feed

  • Frage

  • Hallo,

    Ich greife über MSSQL- Server 2008 Linked - Server auf eine DB2 iSeries Datenbank.

    Mein Problem ist die Performance der Abfrage. Die Abfrage auf dem MSSQL-Server dauert sehr sehr sehr lange zu Vergleich wenn ich die gleiche Abfrage direkt im iSeries ausführe dauert das ca. 50ms -- MSSQL- Server 30sec.

    Hat irgendwer eine Ahnung warum das so ist? Kann man die Performance erhöhen?

    (ODBC Treiber ist der aktuellste, Felder sind indexiert)

    Danke

    Gruß Danijel

    Freitag, 19. Februar 2016 12:18

Antworten

  • Hallo Danijel,

    ein häufiges Problem sind die Sortierungen (nicht ORDER BY, sondern COLLATION). Je nach genauen Daten hilft es, diese in den Statements mit anzugeben.

    SELECT t1.Spalte1,
           t1.Spalte2,
           t2.Spalte1,
           t2.Spalte2
    FROM   Tabelle1 t1
           INNER JOIN LinkedServer.Katalogname.Schema.Tabelle AS t2 ON t2.SpalteX COLLATE SQL_Latin1_General_CP1250_CI_AS = t1.SpalteX
    

    oder auch:

    SELECT t2.Spalte1,
           t2.Spalte2
    FROM   LinkedServer.Katalogname.Schema.Tabelle AS t2
    WHERE  t2.SpalteX COLLATE SQL_Latin1_General_CP1250_CI_AS = 'Abc'

    Welche Sortierung Du bei COLLATE angeben musst, müsstest Du mit demjenigen klären, der die DB2 Datenbank verwaltet. Weitere Infos zu COLLATION findest Du bspw. hier:

      https://msdn.microsoft.com/de-de/library/ms180175(v=sql.105).aspx ff.

    Ggfs. hilft es auch, im Verbindungsserver die Sortierungskompatibilität zu aktivieren. Gehe dazu auf den Verbindungsserver, dann

    rechte Maustaste
     -> Eigenschaften
       -> Reiter "Serveroptionen"
         -> "Kompatibel mit Sortierung"
           -> auf "True" setzen


    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

    Freitag, 19. Februar 2016 12:46
    Moderator

Alle Antworten

  • Hallo Danijel,

    ein häufiges Problem sind die Sortierungen (nicht ORDER BY, sondern COLLATION). Je nach genauen Daten hilft es, diese in den Statements mit anzugeben.

    SELECT t1.Spalte1,
           t1.Spalte2,
           t2.Spalte1,
           t2.Spalte2
    FROM   Tabelle1 t1
           INNER JOIN LinkedServer.Katalogname.Schema.Tabelle AS t2 ON t2.SpalteX COLLATE SQL_Latin1_General_CP1250_CI_AS = t1.SpalteX
    

    oder auch:

    SELECT t2.Spalte1,
           t2.Spalte2
    FROM   LinkedServer.Katalogname.Schema.Tabelle AS t2
    WHERE  t2.SpalteX COLLATE SQL_Latin1_General_CP1250_CI_AS = 'Abc'

    Welche Sortierung Du bei COLLATE angeben musst, müsstest Du mit demjenigen klären, der die DB2 Datenbank verwaltet. Weitere Infos zu COLLATION findest Du bspw. hier:

      https://msdn.microsoft.com/de-de/library/ms180175(v=sql.105).aspx ff.

    Ggfs. hilft es auch, im Verbindungsserver die Sortierungskompatibilität zu aktivieren. Gehe dazu auf den Verbindungsserver, dann

    rechte Maustaste
     -> Eigenschaften
       -> Reiter "Serveroptionen"
         -> "Kompatibel mit Sortierung"
           -> auf "True" setzen


    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

    Freitag, 19. Februar 2016 12:46
    Moderator
  • Hallo Stefan,

    ich habe das gleich probiert: 

    rechte Maustaste
     -> Eigenschaften
       -> Reiter "Serveroptionen"
         -> "Kompatibel mit Sortierung"
           -> auf "True" setzen

    Und es funktioniert genau so schnell wie auf der iSeries.

    Vielen Dank!!!!!!

    Gruß Danijel

    Freitag, 19. Februar 2016 13:24