Intégration de données entre IBM AS400 et la database SQL Server

Je suis un développeur Web qui a été chargé de créer une sorte de mécanisme pour déplacer des données d'un server IBM AS400 vers un server SQL. Malheureusement, les servers liés sont hors de question dans ce cas car SQL Server est juste Standard Edition (les fournisseurs db2 ne sont pas disponibles dans cette version) et le server AS400 est sur un server séparé. J'ai recherché l'ajout d'un triggersur sur la table AS400 qui appelle un service Web qui insère des données dans le server SQL, mais cela ne semble pas être la meilleure méthode. Quelqu'un at-il des suggestions sur le process pour get datatables de l'AS400 à SQL Server quand il est engagé dans l'AS400?

Cette solution suppose que vous êtes familier avec SQL Server Integration Services (SSIS):

login à AS400

  1. Créer un nouveau gestionnaire de connections ADO.Net
  2. Définir le fournisseur sur Fournisseur .Net -> Fournisseur de données ODBC
  3. Créer un DSN (Panneau de configuration -> devises d'administration -> Sources de données ODBC -> DSN système)
  4. Dans le gestionnaire de connections pour la spécification de la source de données, select le DSN créé. Fournissez les informations de connection.
  5. Testez la connection.

Source de stream de données:

  1. Utilisez la source DataReader
  2. Dans Advanced Editor, select le gestionnaire de connections Ado.Net que vous venez de créer.
  3. Dans l'onglet properties du composant -> properties personnalisées, dans SQLCommand, spécifiez la string de requête requirejse (select * dans DatabaseName.TableName)
  4. Vérifiez les mappages de colonnes pour plus de précision
  5. Allez dans properties d'input et de sortie -> Sortie du lecteur de données -> Colonnes externes (Sélectionnez les colonnes de type varchar dans la table, elles seront maintenant du type UnicodeSsortingng (DT_WSTR), car DataReader lit par défaut les strings en tant que strings Unicode, ce qui implique que dans la table de destination SQL, ces colonnes doivent être de type Unicode, c'est-à-dire NVARCHAR au lieu de VARCHAR)

Réponse provenant de http://www.sqlservercentral.com/Forums

Je synchronise mes applications Web avec un IBM i. Mais j'ai ma propre design de database et ai écrit un programme de synchronisation du côté de Windows.

Ayant la même design de database, je me request pourquoi j'aurais besoin d'une copy sur le server SQL. J'accéderais directement à IBM. Installez les pilotes comme suggéré par @Kamran Farzami et utilisez-les. De cette façon, il n'y aurait pas de décalage entre les écritures sur le mainframe et vos requêtes.

Si un décalage est acceptable pour vous et que vous ne pouvez pas accéder directement à IBM i, trois options principales s'affichent:

  1. Tirez datatables de votre système Windows avec le pilote OLE DB. À l'aide du pilote .NET, vous pouvez utiliser le numéro d'logging relatif (RRN) pour vous souvenir de l'endroit où vous avez arrêté la synchronisation.
  2. Lisez les files journaux et rendez-les disponibles en créant un service Web sur IBM i .
  3. Lisez les files journaux dans un travail planifié et transmettez les modifications du journal à un service Web qui met à jour le server SQL.

L'option 1 ne fonctionne que si les files que vous synchronisez ne sont pas réorganisés. La command RGZPFM modifie les numéros d'logging. Si c'est OK, vous pouvez get le RRN dans votre instruction SELECT: select *, RRN(MYTABLE) as RRNMYTABLE from MYTABLE

Le server de service Web est inclus dans OS400 depuis V5R4. Vous devriez donc pouvoir utiliser l'option 2.