我有一个新添加了触发器的表。
当我尝试运行批处理文件并使用SqlBulkCopy上传文件时,它不起作用。
在读到添加SqlBulkCopyOptions.FireTriggers将触发设置到表中的触发器之后,我添加了它。
但我仍然收到相同的错误-‘大容量复制失败。用户没有对表的ALTER table权限。如果大容量复制操作的目标表具有触发器或检查约束,但未将'FIRE_TRIGGERS’或'CHECK_CONSTRAINTS‘大容量提示指定为大容量复制命令的选项,则需要对该表具有ALTER TABLE权限。‘
你知道该怎么做吗?任何帮助都将不胜感激
发布于 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的特殊权限。
发布于 2017-06-29 05:14:11
我也尝试添加Checkconstraints,但它显示相同的错误。
使用(var bulkCopy =新连接(SqlBulkCopy,SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints))
有没有别的办法呢?
https://stackoverflow.com/questions/44808904
复制相似问题