Mise en place INSERT LOCATION

1

Mettre à jour le fichier interfaces:

L'insert location s'appuie sur une couche client CIS. Il faut donc renseigner le fichier interface de la couche Ct-lib (client ASE).

 Service_Name
        query tcp ether hostname Port

 

Configuration de la connexion serveur

 Première Méthode

La seule condition pour établir un lien entre deux Serveur, pour iq est assez simple, il suffit que le user et son mot de passe sur IQ soit le même sur l'IQ ou ASE source.

Par exemple si le serveur IQ de destination se nome IQ_1, le server ASE ASE_2, base test et table test_location. IQ_2 un second serveur IQ.

 Il faut un compte pour IQ et ASE identique: Ins_Location Pass: test01

Sur ASE il faut que le compte est le droit select sur les tables qui nous intéressent, dans notre cas  test_location: grant select on test_location to Ins_Location (L'idéal étant d'avoir un groupe pour granter le droit de select)

Sur IQ (IQ_2) il faut créer le compte ayant le droit de select/insert sur l'objet: grant insert on test_location to Ins_Location(Dans le cas d'IQ il est très intéressant de créer un groupe pour les objets alimentés par insert location. Ceci permettra de mettre le compte Ins_Location dans le groupe d'insert location et celui du propriétaire des objets. Cela permet de ne plus préfixer les utilisateurs par : .)

Une fois le compte créé, il est possible de faire un insert location

Connection sur IQ_1 avec Ins_Location:

Pour ASE:

insert into  test_location LOCATION 'ASE_2.base test' {select * from test_location}

 Pour IQ:

 insert into  test_location LOCATION 'IQ_2.IQ_2' {select * from test_location}

 Deuxième mèthode

Si cette première méthode fonctionne, il existe un bug qui se manifeste de la façon suivante: Si le serveur source est, pour une raison ou une autre, inaccessible, tous les insert location ne se feront pas si le compte utilisé pour l'insert location ne se fait pas sur la base de ASE ou IQ source.

Pour éviter ceci, il est préférable de déclarer le serveur et de créer un login externe dans la base IQ de destination:

Pour déclarer un server ASE dans IQ:

 create server ASE_2 CLASS 'asejdbc' USING ':'

Pour déclarer un server IQ dans IQ:

  create server IQ_2 CLASS 'asajdbc' USING ':'

Il faut ensuite déclarer un external login:

Pour ASE:

 create externlogin Ins_Location to ASE_2 REMOTE LOGIN Ins_Location identified by test01

Pour IQ:

 create externlogin Ins_Location to IQ_2 REMOTE LOGIN Ins_Location identified by test01

Il suffit après de lancer les insert location.

 Tables systèmes utiles

Vue sysserver

 srvid srvname    srvclass srvinfo                           srvreadonly
-----------------------------------------------------------------------

Vue sysexternlogin

user_id srvid remote_login  remote_password
--------------------------------------------------------

Petite note :

 Il est possible via Sybase Enterprise Connect™ Data Access (ECDA) pour charger des données dans sybase IQ provenant Oracle, IBM DB2, and Microsoft SQL