Sql批量复制无法访问目标表

时间:2013-11-21 22:48:03

标签: sql sql-server-express bulkinsert

我正在尝试从文件中读取数据并使用批量复制将其插入数据库表中。

当我尝试运行我的代码时,我收到错误:“无法访问目标表”

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);


    }
}

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。该表存在,SQL用户具有访问权限,但SqlBulkCopy无法访问该表。我的问题结果是我关闭了索引以尝试更快地插入(在批量复制后重建索引),但这使得表无法访问。在我再次启用索引之后,SqlBulkCopy可以访问该表。

答案 1 :(得分:1)

SqlBulkCopy WriteToServer 方法中的表名必须用 [] 符号包围。