C# 如何将SqlBulkCopy与SchemaName有句点的表一起使用?

C# 如何将SqlBulkCopy与SchemaName有句点的表一起使用?,c#,sql-server,.net-3.5,sqlbulkcopy,C#,Sql Server,.net 3.5,Sqlbulkcopy,我正在使用以下代码将数据插入MS SQL 2008服务器: //filter the data have only the latest values DataTable table = GetFilteredTable(id, maxTime); //upload these values using (SqlBulkCopy blk = new SqlBulkCopy(con)) { blk.BulkCopyTimeout = 600; blk.DestinationTableName

我正在使用以下代码将数据插入MS SQL 2008服务器:

//filter the data have only the latest values
DataTable table = GetFilteredTable(id, maxTime);

//upload these values
using (SqlBulkCopy blk = new SqlBulkCopy(con))
{
 blk.BulkCopyTimeout = 600;
 blk.DestinationTableName = tableName;
 blk.WriteToServer(table);
}
这些表由企业中间件在SQLServer中创建,因此在架构名称中有一个句点。完整的表名类似于[j.doe].[FOOBAR],其中j.doe是模式名,FOOBAR是实际的表名

当我运行上述代码时,它失败了,出现了一个异常,这意味着“无法获取目标表中列的排序信息”。我没有附上确切的错误消息,因为服务器的语言环境是法语的,异常也是法语的

在我的代码中,变量tableName的值是[j.doe].[FOOBAR]

为了确保错误出现在表名中,我在另一个模式(即[dbo].[FOOBAR])中创建了同一个表,并且在插入到该表时,相同的代码运行没有任何问题

我更愿意使用正确的编程方式将行插入此表。因此,请建议我应该如何更改代码,而不是在服务器上的数据库中更改或添加新表


当架构名称有句点时,如何使用SqlBulkCopy?

可以接受在临时表中使用大容量插入吗?如果是这样的话,您可以在之后简单地将它们插入到实际表中。不幸的是,没有。我有几千行,需要尽快将它们插入到该表中。这就是为什么我使用SqlBulkCopy而不是单个insert语句,我可能有点不清楚。您可以将SqlBulkCopy与临时表一起使用,然后执行1个insert,将临时表复制到实际表中。不是每行插入一次,基本上可以这样做:插入到realtable SELECT*FROM中temptable@LasseV.Karlsen:如果我不必执行此附加步骤,并且可以直接插入到所需的表中,则我更愿意这样做。这是因为很难向我们的DBA证明这种“黑客行为”是正当的,因为可能有一种正确的方法可以做到这一点。错误发生在CreateAndExecuteInitialQuery中。那里的解析逻辑非常时髦,我至少可以发现一个bug。