109 votes

Créer un script SQL qui crée la base de données et les tables

J'ai une base de données et des tables SQL que je voudrais répliquer dans un autre serveur SQL. Je voudrais créer un script SQL qui crée la base de données et les tables dans un seul script.

Je peux créer "Create" script en utilisant le SQL Management Studio pour chaque cas (Base de données et Tables), mais je voudrais savoir si combiner les deux script "Create" en un seul script serait suffisant.

Merci.

26 votes

Pourriez-vous modifier la réponse acceptée ?

1 votes

@skolima d'accord, la réponse acceptée (par Clayton) finira par donner le résultat, mais la réponse de CJM est beaucoup plus rapide.

389voto

CJM Points 6117

Bien que la réponse de Clayton vous permette d'y parvenir (éventuellement), en SQL2005/2008/R2/2012, vous disposez d'une option bien plus simple :

Cliquez avec le bouton droit de la souris sur la base de données, sélectionnez Tasks y luego Generate Scripts qui lancera l'assistant script. Cela vous permet de générer un seul script qui peut recréer la base de données complète, y compris les tables/index et contraintes/procédures stockées/fonctions/utilisateurs/etc. Il existe une multitude d'options que vous pouvez configurer pour personnaliser la sortie, mais la plupart sont explicites.

Si les options par défaut vous conviennent, vous pouvez effectuer l'ensemble du travail en quelques secondes.

Si vous voulez recréer les données dans la base de données (comme une série d'INSERTS), je recommande également Pack d'outils SSMS (Gratuit pour la version SQL 2008, payant pour la version SQL 2012).

5 votes

C'est excellent, je viens de le faire et ça m'a fait gagner beaucoup de temps.

0 votes

@CJM Je pense que je vous aime presque ! :-P

0 votes

J'ai suivi ces étapes à la lettre mais j'ai toujours des tonnes d'erreurs et je ne peux pas les corriger. Je peux vous aider ?

22voto

Clayton Points 2464

Dans SQL Server Management Studio, vous pouvez cliquer avec le bouton droit de la souris sur la base de données que vous voulez répliquer et sélectionner "script Database as" pour que l'outil crée le fichier SQL approprié pour répliquer cette base de données sur un autre serveur. Vous pouvez répéter ce processus pour chaque table que vous souhaitez créer, puis fusionner les fichiers en un seul fichier SQL. N'oubliez pas d'ajouter une instruction using après avoir créé votre base de données mais avant toute création de table.

Dans les versions plus récentes de SQL Server, vous pouvez obtenir tout cela en un seul fichier dans SSMS.

  1. Faites un clic droit sur une base de données.
  2. Tâches
  3. Générer des scripts

Cela lancera un assistant où vous pouvez script la base de données entière ou seulement des portions. Il ne semble pas y avoir de moyen T-SQL de faire cela.

Generate SQL Server Scripts

183 votes

Continuez à faire défiler... La méthode de CJM est meilleure à 99,99999 %.

0 votes

La réponse de CJM n'est toujours pas suffisante. Après avoir appliqué la méthode de CJM, vous devez également appliquer la méthode de Shawna Jacobs.

0 votes

Il est possible de faire cela en utilisant le SQL standard de mysql par exemple ?

10voto

HelloImKevo Points 53

Une excellente explication peut être trouvée ici : Générer script dans SQL Server Management Studio

Courtoisie Ali Issa Voici ce que vous devez faire :

  1. Cliquez avec le bouton droit de la souris sur la base de données (pas la table) et sélectionnez tasks --> generate scripts.
  2. Ensuite --> sélectionner la ou les tables demandées (à partir de select specific database objects)
  3. Ensuite --> cliquez sur avancé --> types de données à script = schéma et données.

Si vous voulez créer un script qui génère juste les tableaux (pas de données), vous pouvez sauter la partie avancée des instructions !

7voto

Shawna Jacobs Points 126

Je ne sais pas pourquoi SSMS ne prend pas en compte l'ordre d'exécution, mais ce n'est pas le cas. Ce n'est pas un problème pour les petites bases de données mais que se passe-t-il si votre base de données contient 200 objets ? Dans ce cas, l'ordre d'exécution a de l'importance car il n'est pas vraiment facile de passer en revue tous ces objets.

Pour les scripts non ordonnés générés par SSMS, vous pouvez suivre la procédure suivante

a) Exécuter script (certains objets seront insérés, d'autres non, il y aura des erreurs)

b) Supprimer tous les objets du script qui ont été ajoutés à la base de données.

c) Revenir au point a) jusqu'à ce que tout soit exécuté.

Une autre option consiste à utiliser un outil tiers tel que ApexSQL script ou tout autre outil déjà mentionné dans ce fil (SSMS toolpack, Red Gate et autres).

Tous ces éléments se chargeront des dépendances pour vous et vous feront gagner encore plus de temps.

1voto

duffymo Points 188155

Oui, vous pouvez ajouter autant d'instructions SQL que vous le souhaitez dans un seul script. Une seule chose à noter : l'ordre a de l'importance. Vous ne pouvez pas INSÉRER dans une table avant de la CRÉER ; vous ne pouvez pas définir une clé étrangère avant d'avoir inséré la clé primaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X