SqlBulkCopy错误仅在暂存阶段
本文关键字:错误 SqlBulkCopy | 更新日期: 2023-09-27 18:06:48
当我们使用SqlBulkCopy
时,我们得到以下错误(仅在登台服务器上)。存储过程具有执行权限。它们在我们的测试环境中工作正常。那么在舞台环境中需要纠正什么设置才能正常工作呢?请分享你的想法。
ALTER TABLE权限需要在大容量的目标表上复制操作如果表有触发器或检查约束,但是"FIRE_TRIGGERS"或'CHECK_CONSTRAINTS'批量提示没有指定为选项到大容量复制命令。
很难确切地说,因为您没有提供任何SP/Table定义,但似乎您需要指定SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints
才能使其工作…和/或给用户ALTER TABLE
权限…如果这在一个环境中有效,而在另一个环境中不起作用,那么SP/Table定义和/或用户权限一定存在差异…
问题的根本原因是需要ALTER TABLE权限。我们可以用下面两种方法中的一种来解决这个问题。
为指定的用户组授予ALTER TABLE权限或按照指示执行
- 约束被禁用,这是默认行为。保持在CHECK_CONSTRAINTS中使用-h选项提示
- 触发器被禁用,这是默认行为。解雇触发器,使用-h选项与FIRE_TRIGGERS提示。
- 使用-E选项从数据文件中导入标识值。
这个错误在我看来很明显。在暂存环境中,执行SQL命令的用户对批量加载到的表没有ALTER TABLE权限。根据你问题的措辞,想必还有其他一些环境在起作用。在这些环境中,用户确实具有ALTER TABLE访问权限。
选项,如错误消息中指定的,包括在批量加载命令中发出FIRE_TRIGGERS和/或CHECK_CONSTRAINTS选项。关于如何做到这一点,请参阅此处:http://msdn.microsoft.com/en-us/library/aa225968(v=sql.80).aspx