仅在暂存时出现SqlBulkCopy错误

时间:2011-08-29 04:44:23

标签: c# .net sql vb.net ado.net-entity-data-model

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

  

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

3 个答案:

答案 0 :(得分:1)

很难准确说明,因为您没有提供任何SP /表定义,但似乎您需要指定SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints才能使其工作...和/或给用户{{1权限...如果这在一个环境中工作而不在另一个环境中工作,则SP /表定义和/或用户权限必须存在差异......

答案 1 :(得分:1)

给定问题的根本原因是需要ALTER TABLE权限。我们可以通过以下两种解决方案之一来解决问题。

要么只是向指定的用户组授予ALTER TABLE权限,要么按照说明进行操作

  • 禁用约束,这是默认行为。保持 启用约束,将-h选项与CHECK_CONSTRAINTS一起使用 提示
  • 禁用触发器,这是默认行为。开火 触发器,将-h选项与FIRE_TRIGGERS提示一起使用。
  • 使用-E选项从数据文件中导入标识值。

答案 2 :(得分:0)

这个错误对我来说非常清楚。在您的临时环境中,您正在执行SQL命令的用户对您要批量加载的表没有ALTER TABLE权限。根据您的问题的措词,可能有一些其他环境正在发挥作用。在这些环境中,用户确实具有ALTER TABLE访问权限。

错误消息中指定的替代方法包括使用bulk load命令发出FIRE_TRIGGERS和/或CHECK_CONSTRAINTS选项。有关如何执行此操作的详细信息,请参阅此处:http://msdn.microsoft.com/en-us/library/aa225968(v=sql.80).aspx