Мне нужно программно (ADO.Net) копировать записи из таблицы в одной базе данных в таблицу в другой базе данных на другом сервере. Это очень похоже на "How can I copy data records between two instances of an SQLServer database", за исключением того, что мне не разрешено создавать ссылку на целевой сервер, поэтому принятый ответ на этот вопрос не будет работать для меня.Как копировать записи данных между двумя экземплярами базы данных SQLServer
ответ
Вот как я это сделал. Спасибо другим респондентам за вдохновение. Код, который создает сопоставления, не требуется, если схемы двух таблиц идентичны.
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);
}
}
}
}
Вы можете использовать SqlBulkCopy класс
Класс SqlBulkCopy предложенный santiiii очень эффективен, но он создает не-авторизовались операции. Я должен был сделать это один раз, но моя целевая база данных участвовала в репликации, поэтому мне потребовалась полная регистрация операции. То, что я, по сути, делал, это выбор набора данных из исходной базы данных.
Select * from SourceDatabaseTable where (some clause to get the right records)
Затем создать пустой набор данных из таблицы назначения с этим утверждением
Select * from DestinationDatabaseTable where 1<>1
Тогда у меня было два набора данных. Первый с записями, которые я хотел скопировать, а второй - пустым. Затем я просто сделал вложенный цикл foreach, чтобы скопировать записи из одного набора данных в другой. Вот псевдокод для функции основной копии:
foreach(datarow sourcedr in sourcetable)
{
datarow destdr = destdatatable.createrow();
foreach(datacolumn in sourcedatatable)
{
destdr[datacolumn]=Sourcedr[datacolum];
}
}
Наконец, я просто использовал адаптер данных представить изменения в целевой базе данных.
- 1. Как копировать записи данных между двумя экземплярами базы данных SQLServer
- 2. копировать/вставлять между двумя экземплярами консоли vim
- 3. TSQL: Как перемещать данные между экземплярами SQLServer?
- 4. Основная разница в производительности между двумя экземплярами базы данных Oracle
- 5. Репликация между двумя экземплярами SolrCloud
- 6. Разница между двумя экземплярами времени
- 7. Связь базы данных между двумя базами данных
- 8. SQLServer 2008 - настройка Service Broker между экземплярами
- 9. Копировать базовую базу данных данных между двумя iphone
- 10. Как надежно копировать базу данных Cassandra между двумя серверами?
- 11. Теория базы данных - взаимосвязь между двумя таблицами
- 12. Как перемещать данные между экземплярами базы данных Azure SQL
- 13. Ошибка базы данных восстановления SqlServer
- 14. Сбой базы данных SQLServer CE
- 15. Синхронизация данных между экземплярами EC2
- 16. SQLserver Database Синхронизация между двумя серверами
- 17. Связывание данных между экземплярами Vue
- 18. Обмен базовой базой данных между двумя экземплярами контроллера табличного представления
- 19. Общая база данных между двумя экземплярами приложений на разных серверах
- 20. динамический обмен данных между двумя экземплярами класса COpenGLControl
- 21. Передача данных между двумя экземплярами WinForms в C#
- 22. Создание образца данных в инструменте базы данных @ sqlserver
- 23. Синхронизация базы данных между двумя хостами
- 24. Как очистить записи базы данных базы данных или записи?
- 25. Как фильтровать между двумя базами данных?
- 26. Базы данных WebSQL между двумя разными страницами?
- 27. взаимосвязь базы данных onetoone между двумя таблицами?
- 28. Синхронизация базы данных mySQL между двумя компьютерами
- 29. соединяются между двумя значениями базы данных
- 30. Переноса база данных между экземплярами SQL Server