我正在尝试从文件中读取数据并使用批量复制将其插入数据库表中。
当我尝试运行我的代码时,我收到错误:“无法访问目标表”
FlatTable宣言。
System.Data.DataTable flatTableTempData = new System.Data.DataTable("FlatTable");
DataColumn DistrictColumn = new DataColumn();
DistrictColumn.ColumnName = "DistrictName";
// Create Column 3: TotalSales
DataColumn TownColumn = new DataColumn();
TownColumn.ColumnName = "TownName";
DataColumn FarmerColumn = new DataColumn();
FarmerColumn.ColumnName = "FarmerName";
flatTableTempData.Columns.Add(DistrictColumn);
flatTableTempData.Columns.Add(TownColumn);
flatTableTempData.Columns.Add(FarmerColumn);
这是我的代码,连接字符串和使用批量复制的插入:
using (SqlConnection con = new SqlConnection("Data Source=DRTARIQ-PC\\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=TestDB2"))
{
con.Open();
using (SqlBulkCopy s = new SqlBulkCopy(con))
{
s.DestinationTableName = flatTableTempData.TableName;
foreach (var column in flatTableTempData.Columns)
s.ColumnMappings.Add(column.ToString(), column.ToString());
s.BulkCopyTimeout = 500;
s.WriteToServer(flatTableTempData);
}
}
答案 0 :(得分:2)
我遇到了同样的问题。该表存在,SQL用户具有访问权限,但SqlBulkCopy无法访问该表。我的问题结果是我关闭了索引以尝试更快地插入(在批量复制后重建索引),但这使得表无法访问。在我再次启用索引之后,SqlBulkCopy可以访问该表。
答案 1 :(得分:1)
SqlBulkCopy 的 WriteToServer 方法中的表名必须用 [] 符号包围。