[C#/MSSQL] Linked server naar AS400 DB2 traag

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Krysa
  • Registratie: Juni 2010
  • Laatst online: 07-10 18:02
Op dit moment ben ik bezig met het aanleggen van een directe verbinding met een DB2 op een AS/400 vanuit SQL server.
Het komt voor dat wij data nodig hebben uit bepaalde tabellen en op dit moment werkt dat via Access "tooltjes".

Deze linked server zou de oplossing moeten bieden tegen talloze tooltjes waarbij het bijhouden waanzin is.
We zijn in het bezit van een Progress DataDirect ODBC driver waarmee de verbinding gelegd wordt.
Ik heb het op 2 manieren geprobeerd, namelijk:

C#
Ik run in C# een query met de volgende code:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
static void Main(string[] args)
        {
            // Set up connection string
            string connString = @"dsn=PROGRESS;UID=####;PWD=###";
            // Set up query string
            string sql = @"SELECT * FROM ### WHERE ### < ###";
            // Declare connection and data reader variables
            OdbcConnection conn = null;
            OdbcDataReader reader = null;
            try
            {
                // Open connection
                conn = new OdbcConnection(connString);
                conn.Open();
                // Execute the query
                OdbcDataAdapter cmd = new OdbcDataAdapter(sql, conn);
                DataSet ds = new DataSet();
                cmd.Fill(ds);

            }
            catch (Exception e)
            {
                Console.WriteLine("Error: " + e);
            }
            finally
            {
                // Close connection
                reader.Close();
                conn.Close();
            }
        }

Dit duurt ongeveer 30 seconden en dan heb ik het resultaat klaar.

MSSQL
De linked server is aangemaakt en de verbinding is succesvol. Ik run de volgende query:

SQL:
1
SELECT * FROM OPENQUERY([AS400E],'SELECT * FROM ### WHERE ## > ##')

Sorry, ik kan niet te veel detail geven :X

Dit duurt ruim 8(!) minuten.Het is een pass-through query dus ik verwacht dat de WHERE al uitgevoerd wordt op de AS400.

Vraag concreet is: hoe kan dit verschil zo enorm groot zijn? Ik zou het liefste de linked server optie hebben, maar 8 is voor onze requirements onacceptabel.

Beste antwoord (via Krysa op 26-01-2017 09:48)


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Krysa schreef op donderdag 26 januari 2017 @ 09:06:
[...]


Ik ga dit gelijk even proberen. Dit is eigenlijk een alternatief op de Progress DataDirect driver als ik het goed begrijp? IBM is niet echt duidelijk hoe het precies te downloaden is.. misschien is het nog vroeg
IBM heeft zelf ook een AS400 provider for ADO.NET. Hoef je geen dure DataDirect te kopen. (Zit in iSeries Access for Windows, een addon die je kunt downloaden van IBM als je AS400 klant bent). http://www.ibm.com/suppor...k/rzaikdotnetprovider.htm

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com

Alle reacties


Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Krysa schreef op woensdag 25 januari 2017 @ 15:32:
C#:
1
string sql = @"SELECT * FROM ### WHERE ### < ###";

Dit duurt ongeveer 30 seconden en dan heb ik het resultaat klaar.

SQL:
1
SELECT * FROM OPENQUERY([AS400E],'SELECT * FROM ### WHERE ## > ##')
Ik zie in ieder geval 2 verschillende queries ;) (De ene is ## < ##, de ander ## > ##). Zeker dat daar niet 't / 'n verschil in zit? ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Krysa
  • Registratie: Juni 2010
  • Laatst online: 07-10 18:02
RobIII schreef op woensdag 25 januari 2017 @ 15:35:
[...]


Ik zie in ieder geval 2 verschillende queries ;) (De ene is ## < ##, de ander ## > ##). Zeker dat daar niet 't / 'n verschil in zit? ;)
Slordigheid inderdaad, gaat wel een minuutje vanaf. Ik probeer echter naar < 40 sec te komen

Acties:
  • 0 Henk 'm!

  • Wallie
  • Registratie: Januari 2000
  • Laatst online: 09-10 21:26

Wallie

Herr

Leuk probleem... ik heb in het verleden ook wel eens van de hele SQL Server, een query moeten uitvoeren op een andere, via een linked-server, deed er 20 min (!) over. Was toen niet zo'n probleem, maar het lijkt er wel op dat zo'n linked server nou niet echt efficiënt is...

Dat is niet gênant, dat is professioneel.


Acties:
  • 0 Henk 'm!

  • frG
  • Registratie: Augustus 2004
  • Laatst online: 05-10 12:31

frG

Ik zou dan toch kijken voor een OleDb driver (als het om een iSeries gaat).

http://www-01.ibm.com/support/docview.wss?uid=nas8N1014514

Wij gebruiken deze zelf, en deze is enorm snel.

Edit:
Ik moet er wel bijzeggen dat wij direct vanuit c# de OleDb aanroep doen, en we gebruiken geen linkedServer principes van SQL server.

[ Voor 27% gewijzigd door frG op 25-01-2017 20:56 ]


Acties:
  • 0 Henk 'm!

  • Krysa
  • Registratie: Juni 2010
  • Laatst online: 07-10 18:02
frG schreef op woensdag 25 januari 2017 @ 20:51:
Ik zou dan toch kijken voor een OleDb driver (als het om een iSeries gaat).

http://www-01.ibm.com/support/docview.wss?uid=nas8N1014514

Wij gebruiken deze zelf, en deze is enorm snel.
Ik ga dit gelijk even proberen. Dit is eigenlijk een alternatief op de Progress DataDirect driver als ik het goed begrijp? IBM is niet echt duidelijk hoe het precies te downloaden is.. misschien is het nog vroeg

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Krysa schreef op donderdag 26 januari 2017 @ 09:06:
[...]


Ik ga dit gelijk even proberen. Dit is eigenlijk een alternatief op de Progress DataDirect driver als ik het goed begrijp? IBM is niet echt duidelijk hoe het precies te downloaden is.. misschien is het nog vroeg
IBM heeft zelf ook een AS400 provider for ADO.NET. Hoef je geen dure DataDirect te kopen. (Zit in iSeries Access for Windows, een addon die je kunt downloaden van IBM als je AS400 klant bent). http://www.ibm.com/suppor...k/rzaikdotnetprovider.htm

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com

Pagina: 1