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

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

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...