Je dois copier par programme (ADO.Net) les enregistrements d'une table dans une base de données vers une table d'une autre base de données sur un serveur différent. Ceci est très similaire à "How can I copy data records between two instances of an SQLServer database", sauf que je ne suis pas autorisé à créer un lien vers le serveur de destination, donc la réponse acceptée à cette question ne fonctionnera pas pour moi.Comment copier des enregistrements de données entre deux instances d'une base de données SQLServer?
Comment copier des enregistrements de données entre deux instances d'une base de données SQLServer?
Répondre
Voici comment je l'ai fait. Merci aux autres répondants pour l'inspiration. Le code qui génère les mappages n'est pas nécessaire si les schémas des deux tables sont identiques.
public void CopyTables(string sourceConnectionString, string destConnectionString)
{
string sql = "Select * From SourceTable";
using (SqlConnection sourceConn = new SqlConnection(sourceConnectionString))
using (SqlCommand sourceCmd = new SqlCommand(sql, sourceConn)) {
sourceConn.Open();
using (SqlDataReader reader = sourceCmd.ExecuteReader())
using (SqlBulkCopy copier = new SqlBulkCopy(destConnectionString)) {
copier.DestinationTableName = "DestinationTable";
copier.BulkCopyTimeout = 300;
DataTable schema = reader.GetSchemaTable();
copier.ColumnMappings.Clear();
foreach (DataRow row in schema.Rows) {
copier.ColumnMappings.Add(row["ColumnName"].ToString(), row["ColumnName"].ToString());
}
copier.WriteToServer(reader);
}
}
}
}
Vous pouvez utiliser la classe SqlBulkCopy
La classe SqlBulkCopy proposée par santiiii est très efficace, mais il crée une opération non-connecté. Je devais le faire une fois mais ma base de données cible participait à la réplication, j'avais donc besoin que l'opération soit entièrement enregistrée. Ce que j'ai essentiellement fini par faire était de sélectionner un ensemble de données de la base de données source.
Select * from SourceDatabaseTable where (some clause to get the right records)
créer ensuite un ensemble de données vide de la table de destination avec cette déclaration
Select * from DestinationDatabaseTable where 1<>1
Puis j'avais deux ensembles de données. Le premier avec les enregistrements que je voulais copier et le second qui est vide. Ensuite, je viens de faire une boucle foreach imbriquée pour copier les enregistrements d'un ensemble de données à l'autre. Voici le pseudo-code pour la fonction de copie de base:
foreach(datarow sourcedr in sourcetable)
{
datarow destdr = destdatatable.createrow();
foreach(datacolumn in sourcedatatable)
{
destdr[datacolumn]=Sourcedr[datacolum];
}
}
Enfin, je viens d'utiliser un adaptateur de données pour soumettre les modifications sur la base de données de destination.
- 1. Copier la base de données de données de base entre deux iphone
- 2. Glisser des données entre instances
- 3. Comment copier un grand ensemble de données dans SQLServer db
- 4. Tri des enregistrements de base de données
- 5. Partager des données de base entre applications
- 6. Théorie de la base de données - relation entre deux tables
- 7. Copier des enregistrements à partir de deux bases de données dans sqlite
- 8. Comment copier une table d'une base de données mysql vers une autre base de données mysql
- 9. Copie de données uniquement entre deux bases de données
- 10. Comment copier des enregistrements d'une base de données à une autre?
- 11. Comment puis-je transférer des données vers une autre base de données dans SQLServer 2000!
- 12. Copier des enregistrements d'une base de données MS Access à une autre?
- 13. Comment puis-je rechercher des données comprises entre deux dates?
- 14. transfering MySQL Les enregistrements de base de données à la base de données
- 15. comment copier des données?
- 16. différences entre deux instantanés de base de données SQL Server
- 17. Comment partager des valeurs entre deux instances de View Controller?
- 18. Création de données d'exemple dans l'outil de base de données @ sqlserver
- 19. Comment portez-vous une base de données SqlServer sur MySQL?
- 20. relation entre deux instances de modèle
- 21. Indexation des enregistrements de base de données dans lucene
- 22. Importer des données de la base de données Microsoft Works dans SqlServer
- 23. Transférer des données entre des bases de données avec PostgreSQL
- 24. Différence de données entre deux bases de données
- 25. données de base enregistrements manquants iphone
- 26. Comment copier les vues d'une base de données vers une autre base de données
- 27. Outils pour générer des enregistrements de base de données
- 28. Remplir DataTable avec des enregistrements de la base de données?
- 29. La mise en miroir de base de données peut-elle être configurée sur MS SQLServer entre deux clusters?
- 30. Insérer des données dans la base de données sqlserver 2000, le changement de commande, pourquoi?