【发布时间】:2015-05-02 03:57:12
【问题描述】:
我在 .net 中编写了一个程序,它应该将表数据从一台服务器复制到另一台服务器。但是我收到一个错误:
无法访问目标表“mytable”
尽管谷歌搜索并到处寻找,但我找不到解决我遇到的错误的方法
有些帖子提到了权限,我做了以下事情:
GRANT SELECT, UPDATE, DELETE, INSERT TO bulkadmin
但还是没有成功。
我错过了显而易见的事情吗?
非常感谢您的帮助。
编辑
我将 3 个包含 1000 个表的数据库批量复制到 01 个“目标”数据库。 我已经简化了我使用的代码,也没有运气测试。目的是并行执行,但我想让它首先使用一个简单的表
private void TestBulkCopy(string sourceServer, string sourceDatabase, List<string> sourceTables)
{
string connectionStringSource = ConfigurationManager.ConnectionStrings["TestDB"].ConnectionString;
string connectionStringTarget = ConfigurationManager.ConnectionStrings["TestDB"].ConnectionString;
string sqlGetDataFromSource = string.Format("SELECT * FROM {0}", "testTable");
using (var sourceConnection = new SqlConnection(connectionStringSource))
{
sourceConnection.Open();
using (var cmdSource = new SqlCommand(sqlGetDataFromSource, sourceConnection))
using (SqlDataReader readerSource = cmdSource.ExecuteReader())
{
using (var sqlTargetConnection = new SqlConnection(connectionStringTarget))
{
sqlTargetConnection.Open();
using (var bulkCopy = new SqlBulkCopy(sqlTargetConnection, SqlBulkCopyOptions.TableLock, null))
{
bulkCopy.DestinationTableName = "testTable";
bulkCopy.SqlRowsCopied += OnSqlRowsCopied;
bulkCopy.BatchSize = 2600;
bulkCopy.NotifyAfter = 50;
bulkCopy.BulkCopyTimeout = 60;
bulkCopy.WriteToServer(readerSource);
}
}
}
}
}
}
【问题讨论】:
-
没什么可继续的.....你能给我们看一些代码吗?你的桌子是什么样的(结构)?使用
SqlBulkCopy的 C# 代码是什么样的? -
嗨,marc_s,我已经编辑了这个问题,我把我使用的 c# 代码放在了我使用的表中。我有 1000 个表,所以不确定结构是否有帮助,因为我无法修改它们。数据从一个表直接复制到另一个表,结构完全相同。感谢您的宝贵时间
-
还有表结构 ???
标签: c# ado.net sqlbulkcopy