0

当我尝试通过 SqlBulkCopy 和 DataTable 对象将行写入表时出现此错误。

在继续之前,让我说我知道下面的 Microsoft 知识库文章。关于此错误的每篇文章都引用了该文章。但是,我的表或模式名称中没有点。该表存在于用户帐户的默认架构中,因此仅表名就足够了。

http://support.microsoft.com/kb/944389

这是执行批量写入操作的代码:

SqlConnection cn = new SqlConnection(cs);
cn.Open();

SqlTransaction tr = cn.BeginTransaction();

try
{
    using (SqlBulkCopy copy = new SqlBulkCopy(cn, SqlBulkCopyOptions.Default, tr))
    {
        copy.DestinationTableName = CircCountTableName;
        copy.ColumnMappings.Add("CirculationRangeID", "CirculationRangeID");
        copy.ColumnMappings.Add("GeographyID", "GeographyID");
        copy.ColumnMappings.Add("CircCountModelID", "CircCountModelID");
        copy.ColumnMappings.Add("Monday", "Monday");
        copy.ColumnMappings.Add("Tuesday", "Tuesday");
        copy.ColumnMappings.Add("Wednesday", "Wednesday");
        copy.ColumnMappings.Add("Thursday", "Thursday");
        copy.ColumnMappings.Add("Friday", "Friday");
        copy.ColumnMappings.Add("Saturday", "Saturday");
        copy.ColumnMappings.Add("Sunday", "Sunday");
        copy.ColumnMappings.Add("DataSource", "DataSource");
        copy.ColumnMappings.Add("DataSourceID", "DataSourceID");
        copy.ColumnMappings.Add("CreateDate", "CreateDate");
        copy.ColumnMappings.Add("LastUpdateDate", "LastUpdateDate");
        copy.ColumnMappings.Add("LastUpdateUser", "LastUpdateUser");

        copy.WriteToServer(circCounts);

        tr.Commit();
    }
}
catch (Exception ex)
{
    tr.Rollback();
}
finally
{
    cn.Close();
}

当原因不是点符号时,还有其他人遇到过这个问题吗?我怀疑这是一个权限问题,但我并不完全相信。

谢谢你。

4

1 回答 1

2

我不知道为什么这会有所不同,但是当我为用于连接到数据库的帐户授予授予视图定义权限的权利时 - 在数据库属性/权限下 - 错误消失了。

于 2012-12-13T15:16:39.790 回答