Skip site navigation (1) Skip section navigation (2)

Re: Migration SQL Serveur 2008 vers PostgreSQL

From: Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
To: "F(dot) BROUARD \/ SQLpro" <sqlpro(at)club-internet(dot)fr>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Migration SQL Serveur 2008 vers PostgreSQL
Date: 2012-01-04 10:46:49
Message-ID: 87ipkrhhie.fsf@hi-media-techno.com (view raw or flat)
Thread:
Lists: pgsql-fr-generale
"F. BROUARD / SQLpro" <sqlpro(at)club-internet(dot)fr> writes:
>> J'ai vu quelques outils et/ou scripts sur le net, mais j'aurai bien aimé avoir
>> une retour d'expérience d'une personne qui aurait déjà fait ce travail pour
>> prendre une direction sérieuse sans trop perdre de temps.
>
> il n'existe aucun outil capable de traduire automatiquement les fonctions,
> triggers et procédures de l'un vers l'autre.

Je ne sais pas à quel point cela est vrai, mais à mon avis il faut
commencer par cataloguer les fonctionnalités MS SQL utilisées et voir si
PostgreSQL propose une équivalence.

> En sus, PG étant très limité :

C'est exagérer.  Les fonctions PostgreSQL sont très avancées et
permettent de faire de nombreuses choses.  En particulier il est
possible de les implémenter dans de nombreux languages, ce qui est
parfois utile (j'ai un cas de migration avec du pljava relativement
intéressant sous la main).

> - au niveau des procédures stockées (en fait elle n'existent pas, seule des
> fonctions atomiques existant dans PG) ce qui pose problème si des
> transactions sont encapsulées dans les PS.

Il s'agit ici d'un vrai problème à détecter au plus tôt dans le plan de
migration, en effet.

> - au niveau des triggers, car PG n'autorise pas la mise à jour de la table
> cible et de même que pour les PS il n 'est pas possible de piloter la
> transaction à l'intérieur du déclencheur.

Comme le dit Guillaume, il est tout à fait possible de mettre à jour la
table cible depuis un trigger avec PostgreSQL.

La seule vrai grande limite apparente serait donc le contrôle des
transactions depuis une procédure stockée.  Il existe des contournements
afin de réaliser cela avec PostgreSQL, comme dblink et plproxy.

> Enfin, il y a une grande différence de syntaxe entre PG et MS SQL Server.
> Bref, il faudra sans doute recoder toutes les routines...

Il existe un outil permettant de convertir automatiquement depuis la
syntaxe PLSQL de Oracle vers la syntaxe de PostgreSQL.  Il existe aussi
une implémentation de PLSQL dans PostgreSQL, en tant que langage de
procédure stockées.

Il est certainement possible de réaliser le même genre d'outils pour les
procédures stockées de MS SQL (pl/tsql), il reste à déterminer si cela
est une option rentable pour votre projet de migration et à plus long
terme (cela ajoute une dépendance dans le cas de pl/tsql, mais peut être
un bon compromis afin de démarrer au plus tôt sous PostgreSQL et de
terminer le portage de l'application dans des délais raisonnables).

Si cela n'était pas rentable, effectivement, une conversion manuelle me
semble la piste à retenir.

-- 
Dimitri Fontaine
http://2ndQuadrant.fr     PostgreSQL : Expertise, Formation et Support

In response to

Responses

pgsql-fr-generale by date

Next:From: Hervé PiedvacheDate: 2012-01-04 10:51:29
Subject: Re: Migration SQL Serveur 2008 vers PostgreSQL
Previous:From: David TECHERDate: 2012-01-04 10:35:33
Subject: Re : Migration SQL Serveur 2008 vers PostgreSQL

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group