Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Export d'une base SQL2008 vers SQL 2005

17 réponses
Avatar
Bill2
Bonjour à tous,

Je me trouve confronté à un joli pb.
Nous travaillons "en local" sur une base de données, pour tester une appli.
Cette base tourne sur SQL2008.

Dans cette base, nous importons un grand nb de données, histoire de vérifier
que tout fonctionne correctement.
Cette phase d'importation est assez longue, et nécessite la MAJ de plusieurs
tables.

Afin de ne pas nous embêter à refaire toutes les manips sur le serveur de
prod, je souhaiterai exporter les tables modifiées sur le serveur test, pour
les réimporter sur le serveur de prod.

Or le serveur de prod est un SQL2005.

J'ai tender un backup/restore de la base, mais j'ai une erreur :
La famille de support sur l'unité d:\....\MaBase.bak est incorrecte

Lors du backup, je précise pourtant à SQL2008 que je veux une base en
version SQL2005, mais rien n'a faire, pas moyen d'importer mes données.

Je ne peux pas simplement exporter mes tables dans des fichiers csv, j'ai
besoin de conserver la structure des tables.
Et bien entendu, les 2 serveurs ne sont pas connectables entre eux ...

Quelle solution me proposez vous ?

Merci d'avance.

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/

10 réponses

1 2
Avatar
Med Bouchenafa
Cela m'intirgue de savoir comment tu specifies á la commande BACKUP que tu
veux un format 2005
Tu veux peut-etre parler du mode de compatibilité qui est une option de la
base de données
ALTER DATABASE [DatabaseName] SET COMPATIBILITY_LEVEL = 90

Dans ce ca tu peux juste la detacher, faire une copie des fichiers et la
reattacher en prod

Bien cordialement
Med Bouchenafa

"Bill2" wrote in message
news:
Bonjour à tous,

Je me trouve confronté à un joli pb.
Nous travaillons "en local" sur une base de données, pour tester une
appli.
Cette base tourne sur SQL2008.

Dans cette base, nous importons un grand nb de données, histoire de
vérifier que tout fonctionne correctement.
Cette phase d'importation est assez longue, et nécessite la MAJ de
plusieurs tables.

Afin de ne pas nous embêter à refaire toutes les manips sur le serveur de
prod, je souhaiterai exporter les tables modifiées sur le serveur test,
pour les réimporter sur le serveur de prod.

Or le serveur de prod est un SQL2005.

J'ai tender un backup/restore de la base, mais j'ai une erreur :
La famille de support sur l'unité d:....MaBase.bak est incorrecte

Lors du backup, je précise pourtant à SQL2008 que je veux une base en
version SQL2005, mais rien n'a faire, pas moyen d'importer mes données.

Je ne peux pas simplement exporter mes tables dans des fichiers csv, j'ai
besoin de conserver la structure des tables.
Et bien entendu, les 2 serveurs ne sont pas connectables entre eux ...

Quelle solution me proposez vous ?

Merci d'avance.

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/



Avatar
Bill2
Med Bouchenafa wrote:
Cela m'intirgue de savoir comment tu specifies á la commande BACKUP
que tu veux un format 2005
Tu veux peut-etre parler du mode de compatibilité qui est une option
de la base de données
ALTER DATABASE [DatabaseName] SET COMPATIBILITY_LEVEL = 90



Oui, j'ai réglé ça dans la fenêtre de propriétés de la base.
Je pensais que le backup se ferait aussi à ce format, mais ce n'est donc pas
le cas.

Dans ce ca tu peux juste la detacher, faire une copie des fichiers et
la reattacher en prod



Hum. Je crois que j'avais essayé ça, mais en partant des fichiers v2008.
Je vais retenter la chose demain.

Merci

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/


"Bill2" wrote in message
news:
Bonjour à tous,

Je me trouve confronté à un joli pb.
Nous travaillons "en local" sur une base de données, pour tester une
appli.
Cette base tourne sur SQL2008.

Dans cette base, nous importons un grand nb de données, histoire de
vérifier que tout fonctionne correctement.
Cette phase d'importation est assez longue, et nécessite la MAJ de
plusieurs tables.

Afin de ne pas nous embêter à refaire toutes les manips sur le
serveur de prod, je souhaiterai exporter les tables modifiées sur le
serveur test, pour les réimporter sur le serveur de prod.

Or le serveur de prod est un SQL2005.

J'ai tender un backup/restore de la base, mais j'ai une erreur :
La famille de support sur l'unité d:....MaBase.bak est incorrecte

Lors du backup, je précise pourtant à SQL2008 que je veux une base en
version SQL2005, mais rien n'a faire, pas moyen d'importer mes
données. Je ne peux pas simplement exporter mes tables dans des fichiers
csv,
j'ai besoin de conserver la structure des tables.
Et bien entendu, les 2 serveurs ne sont pas connectables entre eux
... Quelle solution me proposez vous ?

Merci d'avance.

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/




Avatar
bruno reiter
pas possible d'attacher sur 2K5 une base de 2K8

il faut sans doute créer un package SSIS avec l'assistant export de 2K8

BR

"Bill2" wrote in message
news:%
Med Bouchenafa wrote:
Cela m'intirgue de savoir comment tu specifies á la commande BACKUP
que tu veux un format 2005
Tu veux peut-etre parler du mode de compatibilité qui est une option
de la base de données
ALTER DATABASE [DatabaseName] SET COMPATIBILITY_LEVEL = 90



Oui, j'ai réglé ça dans la fenêtre de propriétés de la base.
Je pensais que le backup se ferait aussi à ce format, mais ce n'est donc
pas le cas.

Dans ce ca tu peux juste la detacher, faire une copie des fichiers et
la reattacher en prod



Hum. Je crois que j'avais essayé ça, mais en partant des fichiers v2008.
Je vais retenter la chose demain.

Merci

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/


"Bill2" wrote in message
news:
Bonjour à tous,

Je me trouve confronté à un joli pb.
Nous travaillons "en local" sur une base de données, pour tester une
appli.
Cette base tourne sur SQL2008.

Dans cette base, nous importons un grand nb de données, histoire de
vérifier que tout fonctionne correctement.
Cette phase d'importation est assez longue, et nécessite la MAJ de
plusieurs tables.

Afin de ne pas nous embêter à refaire toutes les manips sur le
serveur de prod, je souhaiterai exporter les tables modifiées sur le
serveur test, pour les réimporter sur le serveur de prod.

Or le serveur de prod est un SQL2005.

J'ai tender un backup/restore de la base, mais j'ai une erreur :
La famille de support sur l'unité d:....MaBase.bak est incorrecte

Lors du backup, je précise pourtant à SQL2008 que je veux une base en
version SQL2005, mais rien n'a faire, pas moyen d'importer mes
données. Je ne peux pas simplement exporter mes tables dans des fichiers
csv,
j'ai besoin de conserver la structure des tables.
Et bien entendu, les 2 serveurs ne sont pas connectables entre eux
... Quelle solution me proposez vous ?

Merci d'avance.

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/









Avatar
wpher56
Pour importer une base 2008 en 2005, il te faut générer un script dans 2008,
et l'exécuter dans 2005.
Dans SQL 2008, clic droit sur la base, puis tasks --> generate scripts.
Sélectionner la base, et ne pas oublier de cocher la case "Script all
objects in the selected database".
Ensuite sélectionner les options
- script database create
- script for sql version 2005
- script logins
- script object level permissions
- script data
- script triggers

Jusque là, en principe pas trop de problèmes.
Maintenant, si tu as une base d'1 gigabyte, le script peut faire ... 3 Gigas
!
Il faut l'éditer pour changer (éventuellement) les chemins des fichiers dans
le Create Database. J'y suis parvenu avec UltraEdit, mais ces opérations
durent de longues longues minutes, faut de la patience.

Ensuite évidemment tu ne peux pas exécuter ce script dans SQL Server 2005,
message d'erreur du genre "out of memory"...
Le seul moyen, c'est une commande sqlcmd -S <serverinstance> -i <script
name>, qui exécute environ 50 instructions par seconde.
Pas mal, mais si ton script fait 5 à 6 mios d'instructions (c'était mon cas
avec une base de 1 GB), il faut au moins 30 heures pour l'exécuter.

Personnellement, je n'y suis pas parvenu, il y a eu chaque fois un problème
externe qui a stoppé le processus. Je vais retenter le coup ce weekend.

Bonne chance
Pierrot



"Bill2" wrote in message
news:
Bonjour à tous,

Je me trouve confronté à un joli pb.
Nous travaillons "en local" sur une base de données, pour tester une
appli.
Cette base tourne sur SQL2008.

Dans cette base, nous importons un grand nb de données, histoire de
vérifier que tout fonctionne correctement.
Cette phase d'importation est assez longue, et nécessite la MAJ de
plusieurs tables.

Afin de ne pas nous embêter à refaire toutes les manips sur le serveur de
prod, je souhaiterai exporter les tables modifiées sur le serveur test,
pour les réimporter sur le serveur de prod.

Or le serveur de prod est un SQL2005.

J'ai tender un backup/restore de la base, mais j'ai une erreur :
La famille de support sur l'unité d:....MaBase.bak est incorrecte

Lors du backup, je précise pourtant à SQL2008 que je veux une base en
version SQL2005, mais rien n'a faire, pas moyen d'importer mes données.

Je ne peux pas simplement exporter mes tables dans des fichiers csv, j'ai
besoin de conserver la structure des tables.
Et bien entendu, les 2 serveurs ne sont pas connectables entre eux ...

Quelle solution me proposez vous ?

Merci d'avance.

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/



Avatar
Bill2
wpher56 wrote:

Ensuite évidemment tu ne peux pas exécuter ce script dans SQL Server
2005, message d'erreur du genre "out of memory"...
Le seul moyen, c'est une commande sqlcmd -S <serverinstance> -i
<script name>, qui exécute environ 50 instructions par seconde.
Pas mal, mais si ton script fait 5 à 6 mios d'instructions (c'était
mon cas avec une base de 1 GB), il faut au moins 30 heures pour
l'exécuter.




Merci à tous pour ces infos.
Au final, j'ai retenu la solution scriptée, qui a pafaitement fonctionné
(avec un sqlcmd, comme indiqué)

Ma base faisait environ 250Mo, le script génére 1 Go, mais tout c'est bien
passé !

Encore merci pour votre aide !


--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/
Avatar
Med Bouchenafa
-Script data !!!
Ils ont fait vraiment fort en 2008

Bruno
Effectivement, cela me marche pas d'attacher une base avec une version
ulterieure
SQL Server fait une distinction entre la compatibility level et la version
de la base de données

--
Bien cordialement
Med Bouchenafa


"wpher56" a écrit :

Pour importer une base 2008 en 2005, il te faut générer un script dans 2008,
et l'exécuter dans 2005.
Dans SQL 2008, clic droit sur la base, puis tasks --> generate scripts.
Sélectionner la base, et ne pas oublier de cocher la case "Script all
objects in the selected database".
Ensuite sélectionner les options
- script database create
- script for sql version 2005
- script logins
- script object level permissions
- script data
- script triggers

Jusque là, en principe pas trop de problèmes.
Maintenant, si tu as une base d'1 gigabyte, le script peut faire ... 3 Gigas
!
Il faut l'éditer pour changer (éventuellement) les chemins des fichiers dans
le Create Database. J'y suis parvenu avec UltraEdit, mais ces opérations
durent de longues longues minutes, faut de la patience.

Ensuite évidemment tu ne peux pas exécuter ce script dans SQL Server 2005,
message d'erreur du genre "out of memory"...
Le seul moyen, c'est une commande sqlcmd -S <serverinstance> -i <script
name>, qui exécute environ 50 instructions par seconde.
Pas mal, mais si ton script fait 5 à 6 mios d'instructions (c'était mon cas
avec une base de 1 GB), il faut au moins 30 heures pour l'exécuter.

Personnellement, je n'y suis pas parvenu, il y a eu chaque fois un problème
externe qui a stoppé le processus. Je vais retenter le coup ce weekend.

Bonne chance
Pierrot



"Bill2" wrote in message
news:
> Bonjour à tous,
>
> Je me trouve confronté à un joli pb.
> Nous travaillons "en local" sur une base de données, pour tester une
> appli.
> Cette base tourne sur SQL2008.
>
> Dans cette base, nous importons un grand nb de données, histoire de
> vérifier que tout fonctionne correctement.
> Cette phase d'importation est assez longue, et nécessite la MAJ de
> plusieurs tables.
>
> Afin de ne pas nous embêter à refaire toutes les manips sur le serveur de
> prod, je souhaiterai exporter les tables modifiées sur le serveur test,
> pour les réimporter sur le serveur de prod.
>
> Or le serveur de prod est un SQL2005.
>
> J'ai tender un backup/restore de la base, mais j'ai une erreur :
> La famille de support sur l'unité d:....MaBase.bak est incorrecte
>
> Lors du backup, je précise pourtant à SQL2008 que je veux une base en
> version SQL2005, mais rien n'a faire, pas moyen d'importer mes données.
>
> Je ne peux pas simplement exporter mes tables dans des fichiers csv, j'ai
> besoin de conserver la structure des tables.
> Et bien entendu, les 2 serveurs ne sont pas connectables entre eux ...
>
> Quelle solution me proposez vous ?
>
> Merci d'avance.
>
> --
> Bill2
> Utilisez Process Manager, gestionnaire de processus automatique :
> http://www.bill2-software.com/processmanager/
>




Avatar
wpher56
"Med Bouchenafa" wrote in message
news:
-Script data !!!
Ils ont fait vraiment fort en 2008




Bof... J'ai une table History qui compte près de 2 mios de lignes; le Script
Data génère donc 2 mios d'Inserts, à exécuter séquentiellement ! Comme je le
disais, à raison de 50 par seconde, cela fait quand même 10 heures rien que
pour ça. Espérons que dans SQL 2012 il y aura un "Script Data Bulk Insert" !

Pierrot
Avatar
bruno reiter
bcp.exe est ton ami ;-)

br

"wpher56" wrote in message
news:

"Med Bouchenafa" wrote in message
news:
-Script data !!!
Ils ont fait vraiment fort en 2008




Bof... J'ai une table History qui compte près de 2 mios de lignes; le
Script Data génère donc 2 mios d'Inserts, à exécuter séquentiellement !
Comme je le disais, à raison de 50 par seconde, cela fait quand même 10
heures rien que pour ça. Espérons que dans SQL 2012 il y aura un "Script
Data Bulk Insert" !

Pierrot


Avatar
wpher56
Il me semble que bcp n'est pas intégré au générateur de script: pour autant
que j'aie pu en juger, bcp fonctionne au niveau table. J'en ai 308 dans ma
base, liées entre elles par des clés secondaires et une centaine de
triggers. Et quand je dis "ma" base, il s'agit en fait d'une base de données
d'une application de gestion du parc informatique d'un fournisseur externe.

Pierrot

"bruno reiter" wrote in message
news:
bcp.exe est ton ami ;-)

br

"wpher56" wrote in message
news:

"Med Bouchenafa" wrote in message
news:
-Script data !!!
Ils ont fait vraiment fort en 2008




Bof... J'ai une table History qui compte près de 2 mios de lignes; le
Script Data génère donc 2 mios d'Inserts, à exécuter séquentiellement !
Comme je le disais, à raison de 50 par seconde, cela fait quand même 10
heures rien que pour ça. Espérons que dans SQL 2012 il y aura un "Script
Data Bulk Insert" !

Pierrot





Avatar
zoltix
On 23 fév, 07:40, "wpher56" wrote:
Il me semble que bcp n'est pas intégré au générateur de script: p our autant
que j'aie pu en juger, bcp fonctionne au niveau table. J'en ai 308 dans m a
base, liées entre elles par des clés secondaires et une centaine de
triggers. Et quand je dis "ma" base, il s'agit en fait d'une base de donn ées
d'une application de gestion du parc informatique d'un fournisseur extern e.

Pierrot

"bruno reiter" wrote in message

news:

> bcp.exe est ton ami ;-)

> br

> "wpher56" wrote in message
>news:

>> "Med Bouchenafa" wrote in message
>>news:
>>> -Script data !!!
>>> Ils ont fait vraiment fort en 2008

>> Bof... J'ai une table History qui compte près de 2 mios de lignes; l e
>> Script Data génère donc 2 mios d'Inserts, à exécuter séquent iellement !
>> Comme je le disais, à raison de 50 par seconde, cela fait quand mê me 10
>> heures rien que pour ça. Espérons que dans SQL 2012 il y aura un " Script
>> Data Bulk Insert" !

>> Pierrot



Sur nos serveur de production, on est en 2005 et en test et deve on
est 2008.

On a fait un test de transfert de données entre 2008 vers 2005 avec
une table de 78 millions de donnée avec +300 champs varchar et 50
Boleans. On utilise le wizard import et export des données avec
l'option de recréation de la table. Ca a duré moins de 15
minutes......
1 2