SqlBulkCopy错误仅在暂存阶段

本文关键字:错误 SqlBulkCopy | 更新日期: 2023-09-27 18:06:48

当我们使用SqlBulkCopy时,我们得到以下错误(仅在登台服务器上)。存储过程具有执行权限。它们在我们的测试环境中工作正常。那么在舞台环境中需要纠正什么设置才能正常工作呢?请分享你的想法。

ALTER TABLE权限需要在大容量的目标表上复制操作如果表有触发器或检查约束,但是"FIRE_TRIGGERS"或'CHECK_CONSTRAINTS'批量提示没有指定为选项到大容量复制命令。

SqlBulkCopy错误仅在暂存阶段

很难确切地说,因为您没有提供任何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