У меня проблема с использованием SqlBulkCopy, когда участвуют обнуляемые столбцы. Звучит так, как будто SqlBulkCopy не знает, как обращаться со столбцами, которые можно обнулять, и выдает ошибку недопустимого размера, когда встречается столбец нулевой длины. Ошибка: «Получена недопустимая длина столбца от клиента bcp ...»
Мне интересно, как лучше всего справляться с этим. Это , похоже, хороший пост на форуме, описывающий эту проблему и способы ее решения для чтения файла csv.
Я думаю, что моя ситуация довольно типична и проста. Мне нужно переместить неизвестное количество данных из одной таблицы базы данных в другую базу данных. Для меня более простым ответом было бы использовать SSIS / DTS или связанные серверы на сервере sql, однако клиент хочет, чтобы приложение выполняло перемещение данных.
Существует ли известное решение этой проблемы или лучшее решение для обработки паром для перемещения данных с обнуляемыми полями?
//access db
string src_db = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\SourceDB.mdb;Jet OLEDB ";
//sql db
string dest_db = @"Data Source=.\TEST;Initial Catalog=testdb;User Id=user;Password=password;";
string sql = "";
OleDbConnection sdb = new OleDbConnection( src_db );
OleDbCommand cmd = new OleDbCommand( sql, sdb );
OleDbDataReader rs = null;
SqlConnection db = new SqlConnection( dest_db );
SqlCommand clear = null;
SqlBulkCopy bulk_load = null;
// Read in the source table
sql = "select * from someTable";
sdb.Open();
cmd = new OleDbCommand( sql, sdb );
rs = cmd.ExecuteReader();
// Import into the destination table
bulk_load = new SqlBulkCopy( db );
bulk_load.DestinationTableName = "test";
bulk_load.WriteToServer( rs );