sql-server-2005 – SqlBulkInsert – 如何设置Fire Triggers,Check Constraints?

前端之家收集整理的这篇文章主要介绍了sql-server-2005 – SqlBulkInsert – 如何设置Fire Triggers,Check Constraints?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用具有有限权限的数据库用户,使用ADO.NET 2.0 sqlBulkCopy对象从C#方法执行批量插入到MS sql 2005数据库.当我尝试运行该操作时,我收到错误消息:

Bulk copy Failed. User does not have
ALTER TABLE permission on table
‘theTable’. ALTER
TABLE permission is required on the
target table of a bulk copy operation
if the table has triggers or check
constraints,but 'FIRE_TRIGGERS' or
'CHECK_CONSTRAINTS' bulk hints are not
specified as options to the bulk copy
command.

我读了一些文档,并用构造函数创建了批量复制对象,让我指定这样的东西:

sqlBulkCopy bc = new sqlBulkCopy(
        System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"],sqlBulkCopyOptions.FireTriggers & sqlBulkCopyOptions.CheckConstraints);

但这并不会改变任何东西 – 我收到与以前一样的错误信息.我尝试使用一些其他sqlBulkCopyOptions值,但没有运气.我真的以为这会解决这个问题,我错过了什么吗?

我在表上向我的用户授予ALTER后测试过程,操作成功.然而,这不是我的情况的选择.

解决方法

解决了!看起来我需要刷新标志枚举.当我应该将它们进行ORing时,我正在对这个枚举值进行比较.
sqlBulkCopyOptions.FireTriggers & sqlBulkCopyOptions.CheckConstraints

评估为零(相当于sqlBulkCopyOptions.Default.)

sqlBulkCopyOptions.FireTriggers | sqlBulkCopyOptions.CheckConstraints

正确工作,并允许批量插入完成.

猜你在找的MsSQL相关文章