首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sqlbulkcopyoptions.firetriggers不会触发表中的触发器

Sqlbulkcopyoptions.firetriggers不会触发表中的触发器
EN

Stack Overflow用户
提问于 2017-06-29 01:18:27
回答 2查看 1.2K关注 0票数 0

我有一个新添加了触发器的表。

当我尝试运行批处理文件并使用SqlBulkCopy上传文件时,它不起作用。

在读到添加SqlBulkCopyOptions.FireTriggers将触发设置到表中的触发器之后,我添加了它。

但我仍然收到相同的错误-‘大容量复制失败。用户没有对表的ALTER table权限。如果大容量复制操作的目标表具有触发器或检查约束,但未将'FIRE_TRIGGERS’或'CHECK_CONSTRAINTS‘大容量提示指定为大容量复制命令的选项,则需要对该表具有ALTER TABLE权限。‘

你知道该怎么做吗?任何帮助都将不胜感激

EN

回答 2

Stack Overflow用户

发布于 2017-06-29 03:14:09

SQL Server需要ALTER TABLE权限才能在不使用FireTriggers和CheckConstraint选项以及使用KeepIdentity选项的情况下大容量插入数据,以帮助防止具有最低特权的用户违反SQL Server强制执行的数据完整性规则。参见What permission do I need to use SqlBulkCopy in SQL Server 2008?

默认情况下,SqlBulkCopy的FireTriggers和CheckConstraint选项处于禁用状态,以最大化性能。应用程序有责任确保数据完整性,否则当这些选项关闭时,这些数据完整性将由约束和触发器强制执行。在没有这些选项的情况下大容量复制数据后,Foreign key和check约束变得不受信任,并且必须在以后使用ALTER TABLE...CHECK CONSTRAINT` `重新验证,SQL Server才会再次信任这些约束。

当FireTriggers和CheckConstraint选项为on且KeepIdentity选项为off时,除SELECT/INSERT外没有使用SqlBulkCopy的特殊权限。

票数 0
EN

Stack Overflow用户

发布于 2017-06-29 05:14:11

我也尝试添加Checkconstraints,但它显示相同的错误。

使用(var bulkCopy =新连接(SqlBulkCopy,SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints))

有没有别的办法呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44808904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档