2010-10-22 40 views
3

J'écris un programme en C# pour exporter les données SQL Server d'une base de données et les importer dans une autre. Comme ces deux serveurs ne sont pas connectés, j'ai besoin de choisir une méthode telle que bcp.SQL Server: BCP vs SQLCMD - quoi de plus efficace?

  1. Quelles sont les différences entre les deux? Est-ce que l'un est plus efficace que l'autre? Et dans quels scénarios?
  2. Quelles sont les limitations/problèmes de compatibilité connus de chacun?
  3. Quelles autres méthodes existent pour exporter des données à partir de SQL Server dans des fichiers et les importer à partir de ces fichiers?
  4. Puis-je activer la compression dans ces fichiers en même temps que de les créer via un commutateur de ligne de commande au lieu de les compresser par la suite?
  5. Veuillez inclure tout autre aspect que vous jugez important au moment de prendre cette décision.

Merci d'avance.

Répondre

2

Ne couvre pas BCP, mais j'ai écrit un blog post en comparant quelques approches pour le chargement en bloc de données dans SQL Server - comparé SqlBulkCopy contre les insertions par lots via SqlDataAdapter.

SqlBulkCopy vaut le coup d'œil - le type de processus que vous utilisez est la base de données de requêtes 1 et récupère un SqlDataReader. Passez ce SqlDataReader à SqlBulkCopy pour conserver ces données à la base de données 2.

+0

Merci beaucoup. Est-ce que je peux faire ceci (Passant le lecteur à persister des données à la base de données 2) même si les deux serveurs de base de données ne sont pas connectés? – Harindaka

+0

@Harindaka - oui vous pouvez évidemment tant que les deux serveurs sont accessibles depuis la machine sur laquelle vous exécutez l'application C#! – AdaTheDev