J'ai plusieurs centaines (actuellement 466, mais toujours en croissance) de tables que je dois copier d'un serveur à un autre.
Je n'ai jamais eu à le faire auparavant, donc je ne sais pas du tout comment l'aborder. Tous les tableaux sont au même format:Cart<Eight character customer number>
Cela fait partie d'un projet plus vaste dont je fusionne tous ces Cart<Number>
tableaux en un seul Carts
, mais c'est une toute autre question.
Quelqu'un a-t-il une meilleure méthode que je peux utiliser pour copier tous ces tableaux? Les noms de base de données sur les deux serveurs sont les mêmes, si cela vous aide. Et comme je l'ai dit plus tôt, j'ai le sa
compte afin que je puisse faire tout ce qui est nécessaire pour obtenir les données de A à B. Les deux serveurs sont également dans la même batterie de serveurs.
la source
Réponses:
Vous pouvez utiliser la tâche "Exporter les données" de SQL Server Management Studio. Faites un clic droit sur la base de données dans SSMS, sélectionnez Tâches puis "Exporter les données". Il lancera un assistant interactif qui permettra de copier des tables d'un serveur à un autre, mais vous devrez recréer les index vous-même. L'assistant crée un package SSIS temporaire (bien que vous puissiez également choisir de l'enregistrer) et est relativement rapide.
la source
Voici une approche rapide et sale qui n'a besoin que d'un serveur lié, dans chaque direction, avec des privilèges suffisants, la compatibilité de classement et l'accès aux données activé. Vous l'exécutez sur le serveur lié source pour générer le SQL dynamique qui sera exécuté sur le serveur lié de destination.
la source
Si vous voulez que quelque chose qui puisse être scripté soit facilement réexécutable lorsque vous testez cela et apportez des modifications mineures, consultez ma réponse ici:
Importer des données d'une base de données vers un autre script
Cette réponse décrit l'utilisation d'une procédure stockée SQLCLR qui utilise la
SqlBulkCopy
classe dans .NET. L'utilisation de cette procédure stockée peut être effectuée dans un curseur qui parcourt les tables. Cela permet de modifier facilement le processus ainsi que de prendre en compte les nouvelles tables, ou d'exclure facilement une ou plusieurs tables via uneWHERE
condition dans la requête du curseur.la source
Vous pouvez utiliser BCP OUT et BULK INSERT INTO dans la base de données de destination. Vous pouvez utiliser ce script
Vous pouvez également utiliser SSIS (importation / exportation de données) pour effectuer le transfert de données .
la source