当我尝试通过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();
}当原因不是点符号时,有没有其他人遇到过这个问题?我怀疑这是权限问题,但我并不完全信服。
谢谢。
发布于 2012-12-13 23:16:40
我不知道为什么这会有什么不同,但是当我在database Properties / Permissions下为用于连接到数据库的帐户授予了授予View Definition权限的权限时,错误就消失了。
https://stackoverflow.com/questions/13845412
复制相似问题