我正在使用以下代码将数据插入 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);
}
这些表是由企业中间件在 SQL Server 中制作的,因此在架构名称中有一个句点。完整的表名称类似于[j.doe].[FOOBAR]
j.doe 是模式名称而 FOOBAR 是实际表名称。
当我运行上面的代码时,它失败并出现异常,这意味着'无法获取目标表中列的排序信息。(我没有附上确切的错误消息,因为服务器有法语语言环境,而且法语也是例外。)
在我的代码中,变量的tableName
值为[j.doe].[FOOBAR]
只是为了确保错误出现在表名中,我在另一个模式中创建了同一个表,即[dbo].[FOOBAR]
,当插入到这个表时,相同的代码运行没有任何问题。
我宁愿使用正确的编程方式将行插入此表。所以请建议我应该如何更改我的代码,而不是在服务器上的数据库中更改或添加新表。
架构名称有句点时如何使用 SqlBulkCopy?