8
votes

Scripts T-SQL pour copier toutes les contraintes de table

J'ai créé de nombreuses tables sur ma base de données locale et les ai déplacées vers la base de données de production.

Maintenant, je travaille maintenant sur la réglage précis de la base de données et j'ai créé de nombreuses contraintes sur mes tables de base de données locales telles que PK, FK, Valeurs par défaut, Index, etc.

Maintenant, je voudrais uniquement copier ces contraintes à la base de données de production. Y a-t-il un moyen de le faire?

Veuillez noter que mes tables de base de données de production déjà remplies de données. Donc, je ne peux pas les laisser tomber et les recréer.


0 commentaires

6 Réponses :


2
votes

la porte rouge SQL Comparer est une populaire, non libres façon de faire cela.


0 commentaires

3
votes

Le meilleur moyen serait de stocker tout votre code DDL dans un contrôle source. Puis déployez-le à la production à l'aide d'outils tels que dbghost (mon préféré) ou SQL Comparez


2 commentaires

J'ai utilisé Dbghost depuis 10 ans et je ne me laisse jamais tomber, je n'essayerais pas de développement SQL à grande échelle sans cela.


Une autre option que j'ai utilisée pendant une longue période est ADEPTSQL DIFF. Pas gratuit mais ce schéma et des données se compare, sont très rapides et peuvent générer des scripts de mise à jour et les exécuter directement dans l'application. Obtenir vos scripts sous la version Le contrôle est également important.



16
votes

Si vous ne voulez pas acheter d'outils (qui valent totalement leur prix, BTW), vous pouvez toujours interroger les vues du catalogue du système et extraire les informations de là pour créer des scripts que vous pouvez exécuter sur votre nouvelle base de données.

dans le cas d'ex. Les contraintes par défaut, cette requête vous indique une liste de toutes les contraintes par défaut de votre base de données: xxx

et en fonction de cela, vous pouvez bien sûr créer une requête qui émettrait une requête t -SQL Déclarations pour recréer ces contraintes par défaut sur votre serveur cible: xxx

Vous obtiendriez quelque chose comme ceci (pour le Aventureworks échantillon dB): xxx

Bien sûr, vous pouvez modifier le T-SQL résultant étant donné à votre goût - mais essentiellement, copiez et collez les résultats de la requête à votre nouvelle base de données et que vous allez. .

Bien sûr, il existe des vues similaires de catalogue de systèmes pour les relations clés étrangères (sys.forign_keys), vérifiez les contraintes (sys.check_constraints), index (sys.indexes et sys.index_columns) et beaucoup plus. < / p>

C'est un peu de travail - mais cela peut être fait à votre heure et vous apprendrez beaucoup sur SQL Server dans le processus.

C'est donc une "marque ou Achetez "Décision à nouveau: -)

Marc


0 commentaires

0
votes

Un bon et gratuit Microsoft Tool. Vous pouvez exporter le schéma et les données.

Microsoft SQL Server Publication Wizard


0 commentaires

0
votes

essayez dbsourcetools. http://dbsourcetools.CodePlex.com
Il a la fonction de comparaison de schéma qui vous aidera à créer un script de mise à jour.
N'importe empêche cependant que vous devriez utiliser le contrôle de code source sur toute votre base de données.
C'est ce que DBSourcetools a été conçu pour faire - aider les développeurs à apporter leurs bases de données sous contrôle source.


0 commentaires

1
votes

Bien sûr, c'est un ancien post, mais aucun des scripts dans toutes les réponses ci-dessus ne propose également les schémas de la table. Donc, cela n'a pas fonctionné dans la case pour ma base de données.

Celui-ci le fait, donc il l'a fait: xxx

Je l'ai adapté de Donabel Santos's blog ici .

Modifier NB: Assurez-vous d'exécuter les deux parties de la requête et de sauvegarder le deuxième ensemble de résultats (c.-à-d. Ajouter une contrainte S) avant de supprimer vos contraintes par défaut, sinon vous ne pourrez plus les recréer à nouveau ( Non, je n'ai pas fait ça:)


0 commentaires