Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/05/2011, 15h49   #1
Invité de passage
 
Inscription : mars 2011
Messages : 16
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 16
Points : 1
Points : 1
Par défaut Dump SQL-Server vers Oracle

Bonjour,

Est il possible de faire un DUMP de plusieurs bases SQL SERVER (2005 & 2008) vers des bases Oracle ? (sans que ça pose problème).

Cordialement,
BIMAN
BIMAN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 16h05   #2
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Bonjour,

Non car dans la majorité des cas voir tous les cas une réécriture de code s'impose entre les 2 moteurs.

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 02/05/2011, 16h25   #3
Invité de passage
 
Inscription : mars 2011
Messages : 16
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 16
Points : 1
Points : 1
Par défaut DUMP

Merci Mikedavem pour votre réponse rapide.

Donc j'ai un serieux problème : les applications sont sous SQL-Server et nous souhaitons faire un DUMP vers les bases Oracle (SGBD imposé).

D'ou mon interrogation de sortir de ces principes en décidant de faire un DUMP de SQL-Server vers une autre base SQL-Server.


Par contre, On me dit que :

- Oracle est plus solide que SQL-Server : nous sommes sur des bases de quelques 20 millions d'enregistrements par an (purge touts les 5 ans) donc bases de 100 millions d'enregistrement (avant purge) - Est ce que SQL-Server supporte (sans problèmes) ces volumes ?

- les fonctionnalités de Oracle sont plus poussées que sur SQL-Server. Quelques fonctionnalités nous interesse comme :

Code sql :
CREATE TABLE TABLE2 AS SELECT * FROM TABLE1;
qui à priori est disponible sous Oracle et qui permet de copier la structure + données + Index + Clé etc.

Sur SQL-Server nous pouvons utiliser
Code sql :
SELECT *  INTO NouvelleTable FROM TableACopier
qui à priori est disponible sous SQL-Server et qui permet de copier structure + données mais pas les clés + Index
> Comment faire pour récupérer les Clés + Index.

Cordialement,
BIMAN
BIMAN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 17h01   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 442
Points : 10 442
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Citation:
Envoyé par BIMAN Voir le message
- Oracle est plus solide que Sql Server : nous sommes sur des bases de quelques 20 millions d'enregistrements par an (purge touts les 5 ans) donc bases de 100 millions d'enregistrement (avant purge) - Est ce que Sql Server supporte (sans problèmes) ces volumes ?
100 millions d'enregistrements ne poseront de problème à aucun des deux SGBD.

Citation:
Envoyé par BIMAN Voir le message
Code sql :
CREATE TABLE TABLE2 AS SELECT * FROM TABLE1;
Ne copie que la table et les données.
Rien au niveau des index, clefs, déclencheurs et privilèges.
C'est donc très semblable au SELECT * INTO que vous évoquez.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 02/05/2011, 17h04   #5
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Citation:
- Oracle est plus solide que Sql Server : nous sommes sur des bases de quelques 20 millions d'enregistrements par an (purge touts les 5 ans) donc bases de 100 millions d'enregistrement (avant purge) - Est ce que Sql Server supporte (sans problèmes) ces volumes ?
Bon le but ici n'est pas de faire un débat supplémentaire entre oracle et SQL Server mais la différence qu'il existait avant entre Oracle et SQL Server n'est plus vraiment valable maintenant. Ici vous parlez de volume en lignes de données mais il faudrait avoir le volume en Go voir To de vos données. Sachez que SQL Server peut travailler avec des volumétries de l'ordre du Téra sans problème. J'ai moi même administré une base faisant environ 2 To.

Citation:
les fonctionnalités de Oracle sont plus poussées que sur Sql Server. Quelques fonctionnalités nous interesse comme :
Une des mes connaissances proches (qui se reconnaitra) m'a fourni dernièrement un comparatif effectué par le groupe Crimson Consulting qui compare la dernière version de SQL Server avec les autres SGBD du marché et cela confirme bien qu'en terme de fonctionnalités SQL Server n'a plus rien à envier à ses concurrents.

CREATE TABLE TABLE2 AS SELECT * FROM TABLE1 ;
qui à priori est disponible sous Oracle et qui permet de copier la structure + données + Index + Clé etc.

Citation:
Sur Sql server nous pouvons utiliser
SELECT * INTO NouvelleTable FROM TableACopier
qui à priori est disponible Sous Sql server et qui permet de copier structure + données mais pas les clés + Index
> Comment faire pour récupérer les Clés + Index.
Effectivement mais avec SQL Server vous pouvez tout à fait générer le script du schéma des objets de vos bases + utiliser les outils livrés avec SQL Server pour la partie données qui me semblent qd même plus propre. Pourquoi je dis cela ? Dans votre script oracle (je vous crois sur parole je ne connais pas Oracle) vous récupérez effectivement l'ensemble des éléments de votre schéma mais que se passe t'il si vous avez à faire à une clé étrangère qui référence une table qui n'existe pas ?

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 02/05/2011, 17h17   #6
Invité de passage
 
Inscription : mars 2011
Messages : 16
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 16
Points : 1
Points : 1
Par défaut DUMP

Ok. Merci WALDAR.

J'ai une dernière question mais je ne sais pas si c'est possible

Sur Sql Server comment puis je copier une table vers une autre avec toutes les caractéristiques (Structure + Données + Clés + Index + Droits ) de cette table sans spécifier unitairement les champs à sélectionner et ceux constituant la clé.

(en faisant un CREATE NewTABLE SELECT * WHERE y = 1 FROM TABLE_SOURCE)

Cordialement,
BIMAN
BIMAN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 17h31   #7
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 442
Points : 10 442
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Clic droit sur la table > Générer un script de la table en tant que > CREATE TO.
Modifiez le nom des objets.
Code :
1
2
INSERT INTO Table2
SELECT * FROM TABLE
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/05/2011, 05h28   #8
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 667
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 667
Points : 8 715
Points : 8 715
Bonjour,

Pour générer le script d'une table sans ses données, voici une procédure que j'ai publié ici.

Vous pouvez aussi générer le script d'une liste (ou toutes) les tables de votre base de données, avec leurs contraintes, triggers et indexes à l'aide du générateurs de script de SQL Server Management Studio, comme je l'ai montré ici.

Le problème bien sûr, c'est qu'il vous faudra repasser ensuite pour modifier les instructions.

Une autre solution peut être de générer un fichier plat de la ou les tables à migrer puis de l'intégrer avec un utilitaire d'Oracle.

Enfin comme Mikedavem, j'administre pour un client une base de données de plus de 3TB qui supporte une charge uniquement OLTP (entre 3000 et 5000 utilisateurs aux heures de pointe), hébergée sur un serveur que je trouve pour le moins ridicule en termes de configuration hardware.

La plus grosse table contient presque 500 millions de ligne, pour 133GB de donnés. Comme on est dans le domaine hospitalier, on garde toute les données.
Le client a pas l'air de vraiment se plaindre

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 03/05/2011, 09h31   #9
Modérateur
 
Homme
Administrateur de base de données
Inscription : août 2007
Messages : 1 158
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Belgique

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : août 2007
Messages : 1 158
Points : 1 617
Points : 1 617
La plupart des ETL/ELT disponibles sur le marche permettent de travailler avec des sources heterogenes et peuvent donc ici vous aider a resoudre votre probleme de transfert de donnees d'un environnement a un autre.

BTW, si Oracle est le SGBD impose comme vous le dites, faut il encore a ce moment la se poser les questions de differences de fonctionnalites entre les 2 SGBD ? Je presume que cette analyse a deja ete faite en amount.
Ptit_Dje est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/05/2011, 14h00   #10
Invité de passage
 
Inscription : mars 2011
Messages : 16
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 16
Points : 1
Points : 1
Par défaut DUMp

Merci à vous pour vos réponses claires.

La solution ETL est envisagée (et a été étudiée) avec comme gros avantage de solutionner le passage Sql server vers Oracle.

Nous cherchons à proposer un autre scénario

- Faire un DUMP des bases Sql server tous les soirs vers une autre base SQL Server. Nous souhaitons également créer sur cette base de sauvegarde quelques tables pécifiques (alimentées elles aussi tous les soirs).

- Ces tables pécifiques seraient créées par un script sql (exécuté une fois) et alimentées tous les soirs par un autre script sql.Ce script sql d'alimentation réunierait dans un fichier tous les INSERT des différentes tables.

Question : comment constituer ce fichier d'alimentation des tables ? (un fichier peut il contenir l'ensemble des INSERT à faire ?), quel type de fichier doit il être créé ? (Certainement un fichier ".sql" ?) Et comment faire pour que Sql Server le lise et l'exécute tous les soirs à une heure précise ?
BIMAN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 15h30   #11
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
- Faire un DUMP des bases Sql server tous les soirs vers une autre base SQL Server. Nous souhaitons également créer sur cette base de sauvegarde quelques tables pécifiques (alimentées elles aussi tous les soirs).

- Ces tables pécifiques seraient créées par un script sql (exécuté une fois) et alimentées tous les soirs par un autre script sql.Ce script sql d'alimentation réunierait dans un fichier tous les INSERT des différentes tables.

Question : comment constituer ce fichier d'alimentation des tables ? (un fichier peut il contenir l'ensemble des INSERT à faire ?), quel type de fichier doit il être créé ? (Certainement un fichier ".sql" ?) Et comment faire pour que Sql Server le lise et l'exécute tous les soirs à une heure précise ?
Je ne comprends plus, vous êtes bien contraint de migrer en ORACLE non?

Citation:
Et comment faire pour que Sql Server le lise et l'exécute tous les soirs à une heure précise
Tache planifiée, tache de maintenance de l'Agent SQL...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/05/2011, 15h52   #12
Invité de passage
 
Inscription : mars 2011
Messages : 16
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 16
Points : 1
Points : 1
Par défaut DUMP

Si nous voulons rester dans un certain cadre avec une certaine organisation, nous sommes obligé de choisir Oracle comme SGBD pour la copie de base.

Par contre nous pouvons toujours proposer (ça ne coute rien) d'autres alternatives comme de d'utiliser Sql Server.

Question :

L'agent Sql Server est il présent en version Standard (2008) ou faut il avoir la version entreprise de Sql server ?

Ce fichier sql (contenant les INSERT) peut il être stocké dans un répertoire quelconque sur le réseau ?
BIMAN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 15h57   #13
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
L'agent Sql Server est il présent en version Standard (2008) ou faut il avoir la version entreprise de Sql server ?
Oui il est présent de base
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/05/2011, 16h52   #14
Modérateur
 
Homme
Administrateur de base de données
Inscription : août 2007
Messages : 1 158
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Belgique

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : août 2007
Messages : 1 158
Points : 1 617
Points : 1 617
Citation:
Envoyé par BIMAN Voir le message
Ces tables pécifiques seraient créées par un script sql (exécuté une fois) et alimentées tous les soirs par un autre script sql.Ce script sql d'alimentation réunierait dans un fichier tous les INSERT des différentes tables.

Question : comment constituer ce fichier d'alimentation des tables ? (un fichier peut il contenir l'ensemble des INSERT à faire ?), quel type de fichier doit il être créé ? (Certainement un fichier ".sql" ?) Et comment faire pour que Sql Server le lise et l'exécute tous les soirs à une heure précise ?

Dans ce cas, optez pour l'option de faire des dumps de data en utilisant BCP et de les charger de la meme maniere.
Cela vous permet d'avoir des fichiers de data sans devoir surcharges ceux-ci avec d'autres informations.
De plus, ces RAW data peuvent etre utilise par differents systemes.
Ptit_Dje est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/05/2011, 20h02   #15
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Quel est le but de cette copie de base ?

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/05/2011, 14h43   #16
Invité de passage
 
Inscription : mars 2011
Messages : 16
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 16
Points : 1
Points : 1
Par défaut SQL SERVER => ORACLE

Citation:
Envoyé par mikedavem Voir le message
Quel est le but de cette copie de base ?

++

Copie de base pour sauvegarde + alléger la base de production utilisée pour faire des reports.

J'ai une dernière question:

Dans le scénario d'une copie de base SQL Server vers Oracle , nous pouvons effecrtivement passer par des fichiers plats.

Est ce que d'après vous cette solution est viable ? pouvons nous avoir des fichiers plats de plus de 2/3 millions d'enregistrements ? Quel est le délai d'intégration de tel fichier sous Oracle ?
BIMAN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 14h55   #17
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 442
Points : 10 442
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Les fichiers plats en tant que moyen d'échange entre deux sociétés, ça fonctionne bien et ça permet une grande traçabilité, maintenant en interne vous allez construire des étapes supplémentaires pour pas grand'chose.

Liez vos deux serveurs Oracle et Microsoft par un linked server ou un DBLink, et faites transiter vos données par ce biais.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/05/2011, 15h22   #18
Invité de passage
 
Inscription : mars 2011
Messages : 16
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 16
Points : 1
Points : 1
Citation:
Envoyé par Waldar Voir le message
Les fichiers plats en tant que moyen d'échange entre deux sociétés, ça fonctionne bien et ça permet une grande traçabilité, maintenant en interne vous allez construire des étapes supplémentaires pour pas grand'chose.

Liez vos deux serveurs Oracle et Microsoft par un linked server ou un DBLink, et faites transiter vos données par ce biais.

C'est un fonctionnement intéressant.

Dans le cas de figure (base Sql server vers Oracle), je suppose que le "DbLink" est créé depuis Oracle vers Sql Server. Par contre est ce qu'un Db Link est fiable ? pouvons nous l'utiliser avec n'importe quel version de SGBD ? (
Exemple en source : 1 base Oracle (versionxxxx) récupére certaines tables d'1 base Sql server 2005 et 1 base Sql server 2008 ? une supervision est elle nécessaire ?
BIMAN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 16h45   #19
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Citation:
Copie de base pour sauvegarde + alléger la base de production utilisée pour faire des reports.
Dans ce cas si vous restez sur une solution Full SQL Server vous pouvez tout à fait adopter des solutions de type log shipping ou mirroring asysnchrone qui vous permettent d'avoir une copie de vos données sur un autre serveur + possibilités de reporting sur ce même serveur afin d'alléger la charge sur votre production

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/05/2011, 16h59   #20
Invité de passage
 
Inscription : mars 2011
Messages : 16
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 16
Points : 1
Points : 1
Par défaut ETL

Citation:
Envoyé par mikedavem Voir le message
Dans ce cas si vous restez sur une solution Full SQL Server vous pouvez tout à fait adopter des solutions de type log shipping ou mirroring asysnchrone qui vous permettent d'avoir une copie de vos données sur un autre serveur + possibilités de reporting sur ce même serveur afin d'alléger la charge sur votre production

++
Si on opte pour une solution Full Sql Server : je pense que nous avons assez d'éléments pour faire quelque chose de bien.

Si on opte pour des solution avec SGBD hétérogènes et plus précisement pour l'emploi d'un ETL (informatica, talend etc.), ma question est la suivante :

Imaginons qu'une table récupérée et envoyée vers un autre SGBD grâce à un ETL évolue (ajouts de nouvelles colonnes).

l'ETL peut il (tout seul) détectée que la structure a évolué et envoyer les nouvelles colonnes automatiquement ?
BIMAN est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h20.


 
 
 
 
Partenaires

Hébergement Web