2 votes

Comment mieux scriptdes tables et données sélectionnées sur SQL Server 2008 ?

Le SQL Server Management Studio a la possibilité de générer des scripts. Le problème est qu'il se casse sur les colonnes d'identité. Je ne peux pas trouver un lien vers ce bogue pour le moment, mais Microsoft l'a essentiellement déclaré comme une "fonctionnalité".

Ceci est particulièrement important pour :

  • l'amorçage d'un environnement de développement ou d'un nouvel environnement d'essai ; et
  • Réplication des données de la production vers les tests ou le développement.

Existe-t-il une solution facile qui fonctionne vraiment ?

2voto

K. Brian Kelley Points 8974

Scriptio a bien fonctionné avec SQL Server 2005 et provient de Bill Graziano, MVP de SQL Server. Il semble que vous devrez faire une retouche et recompiler pour SQL Server 2008, cependant.

Si vous recherchez des outils tiers, Comparaison SQL de Red Gate est génial (divulgation complète - je suis un Ami de Red Gate ).

2voto

codeulike Points 988

Ces deux outils Red Gate sont très bons pour comparer les différences entre les bases de données et pour écrire les différences structurelles, ou de données.

Comparaison de Red Gate Sql - pour la comparaison et la réplication des structures

Red Gate Sql Data Compare - pour la comparaison et la réplication des données

Ils vendent un pack SQL qui comprend les deux produits, je crois.

Nous les avons largement utilisés pour mettre en place des bases de données de développement et copier les modifications, etc. Vous pouvez également utiliser le module Data Compare pour synchroniser les données entre les bases de données.

1voto

davidtbernal Points 199

Je n'ai pas encore entièrement examiné cet outil, mais jetez-y un coup d'œil. Il était gratuit lorsque je l'ai téléchargé (il l'est toujours, je crois).

http://www.ssmstoolspack.com/Features.aspx

1voto

Il y a deux parties à cette question.

Tout d'abord, comment copier/déplacer des données avec des champs d'identité ?

Si vous effectuez régulièrement cette opération entre deux ou plusieurs serveurs, vous devez configurer leurs graines d'identité pour qu'elles soient différentes. Par exemple, si deux serveurs partagent une table contenant un petit nombre d'enregistrements, vous pouvez configurer l'un d'eux avec une graine d'identité de 1, et l'autre avec une graine d'identité de 1 000 000. Un serveur commencera son champ d'identité à 1 et augmentera, et l'autre à la valeur la plus élevée. Bien sûr, vous devez toujours garder un œil sur ce point pour vous assurer que vous ne vous retrouvez pas avec des enregistrements qui se chevauchent.

Ensuite, lorsque vous voulez copier des données d'un serveur à un autre, vous préfixez vos insertions avec la commande SET IDENTITY_INSERT comme indiqué ici :

http://msdn.microsoft.com/en-us/library/ms188059.aspx

Vous pouvez ensuite désactiver temporairement le champ d'identité afin de pouvoir pomper des données d'un serveur à l'autre.

Deuxièmement, comment copier/déplacer des données en général ?

Il y a plusieurs façons de le faire :

  • Réplication SQL Server - peut synchroniser automatiquement les données entre plusieurs serveurs. Elle est intégrée au produit et est flexible, mais sa mise en place et sa gestion sont difficiles. Il ne permet pas de synchroniser les environnements de développement et de test comme vous le souhaitez.
  • Scripting avec SQL Server Management Studio - fonctionne, mais manque de flexibilité, et c'est aussi un casse-tête manuel.
  • Comparaisons de données/schémas avec des produits tiers - outils tels que Toad for SQL Server compare les schémas et les données entre deux serveurs et les synchronise. (Avertissement : je travaille pour Quest, les créateurs de Toad).

Si vous déplacez des données entre le serveur de production et le serveur de test, restaurez les données de production sur votre serveur de test sous un autre nom de base de données, puis effectuez vos synchronisations de base de données à cet endroit. Ce sera plus rapide, cela n'aura pas d'impact sur votre boîte de production, et si vous faites quelque chose de mal (comme synchroniser les données dans le mauvais sens), cela ne détruira pas la production.

0voto

Vin Points 3945

Avez-vous essayé le programme de Microsoft Assistant de publication de base de données ?
Avertissement : je ne l'ai utilisé que sur SQL 2005... je ne sais pas s'il fonctionne avec SQL 2008.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X