这个是使用SqlBulkCopy进行批量复制导致的异常,此问题涉及大容量导入数据时,控制大容量导入操作是否执行(触发)触发器。大容量导入操作应只对包含支持多行插入的 INSERT 和 INSTEAD OF 触发器的表执行触发器。

SqlBulkCopy(insert bulk)命令语句在默认情况下会禁用触发器,可以启用FIRE_TRIGGERS;报错“如果某个大容量复制操作的目标表具有触发器或检查约束,但未指定“fire_triggers”或“check_constraints”大容量提示,则需要对该表具有“alter table”权限。”已说明并未指定fire_triggers且目标表有触发器,指定SqlBulkCopyOptions.FireTriggers即可启用,语句为:SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction | SqlBulkCopyOptions.FireTriggers)。

至此,该异常的原因和解决办法就是这样。

另外,MSDN表示“大容量导入数据时,您可以控制大容量导入操作是否执行(触发)触发器。大容量导入操作应只对包含支持多行插入的 INSERT 和 INSTEAD OF 触发器的表执行触发器”,所以对触发器是有要求的,一是insert触发器,二是instead of。

上面搞清楚之后,就是另外一个话题:一次插入多条数据,触发器在必要时需要使用游标来实现所需功能。

ALTER TABLE permission is required on the target table of a bulk copy operation if the table has triggers or check constraints, but 'FIRE_TRIGGERS' or 'CHECK_CONSTRAINTS' bulk hints are not specified的更多相关文章

  1. jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.

    jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the ...

  2. Netfilter 之 table、rule、match、target

    概述 本文主要分析table,rule,match,target的作用和其数据结构之间的关系,为后面的匹配流程做铺垫,通过本文中代码流程的分析,可以得到如下的关系图: 详细分析 table iptab ...

  3. 解决xcode10打包报错:That command depends on command in Target ‘xxx’:scrpit phase"[CP] Copy Pods Resources"

    问题:使用xcode10打包报错,提示 error:Multiple commands produce ‘xxxx/xxx.app’ 1)Target ‘xx’ has create director ...

  4. 容器中使用iptables报错can't initialize iptables table Permission denied (you must be root)

    背景 在docker容器中部署了一微服务,该服务需要docker push镜像到docker registry.因此,docker容器中需要安装docker服务.但在启动容器的时候,却报错: can' ...

  5. ORACLE的Copy命令和create table,insert into的比较

    在数据表间复制数据是Oracle DBA经常面对的任务之一,Oracle为这一任务提供了多种解决方案,SQL*Plus Copy 命令便是其中之一.SQL*Plus Copy 命令通过SQL*Net在 ...

  6. 在 aws emr 上,将 hbase table A 的数据,对 key 做 hash,写到另外一张 table B

    先 scan 原表,然后 bulkload 到新表. 采坑纪录1. bulkload 产生 hfile 前,需要先对 hash(key) 做 repartition,在 shuffle 的 read ...

  7. Sybase中的load table的用法

    Sybase中的load table的用法 用sybase iq作为数据仓库的存储,确实有其独特的特点和优势,但是在数据ETL的时候,如果用insert.update方式,速度太慢,大概是2秒钟左右一 ...

  8. Overview of Flashback Technology

    Oracle Flashback Query : SELECT AS OFOracle Flashback Version Query :DBMS_FLASHBACK PackageOracle Fl ...

  9. Microsoft SQL Server Version List(SQL Server 版本)

    原帖地址 What version of SQL Server do I have? This unofficial build chart lists all of the known Servic ...

随机推荐

  1. I/O:DataInput

    DataInput: boolean readBoolean() :读取一个输入字节,如果该字节不是零,则返回 true,如果是零,则返回 false. byte readByte() :读取并返回一 ...

  2. Maven(三)使用 IDEA 创建一个 Maven 项目

    利用 IDEA 创建一个 Maven 项目 创建 Maven 项目 选择 File --> New --> Project 选中 Maven 填写项目信息 选择工作空间 目录结构 ├─sr ...

  3. Lucene03--字段属性

    Lucene03--字段属性 1.Field 1.1  Field相当于Javabean的属性. 1.2  不同的Field的构造方法参数不一样: 大多数Field的构造函数有三个参数: a)第一个参 ...

  4. Vue杂谈

    <div id="app"> <input type="text" ref="input1"/> <butto ...

  5. HashMap源码__tableSizeFor方法解析

    tableSizeFor(int cap)方法返回不小于指定参数cap的最小2的整数次幂,具体是怎么实现的呢?看源码! /** * Returns a power of two size for th ...

  6. 回顾二分与bfs(或者说是递推)和简单模拟

    今天,阳光正好,适合敲代码,诸事皆宜. 先来两道简单的模拟题. 第一道 机器翻译 输出为5. 代码思路:很明显需要用到队列来存单词,在建立一个bool数组来存储队列中有没有这个单词,需不需要向外界查询 ...

  7. 以for循环的方式了解var与let的区别

    var是ES5定义变量的一种声明方式. let是ES6定义变量的一种声明方式---可定义局部变量,即定义块级作用域. 以下列简单的函数进行表现二者作用域的不同 在ES6之前,我们都是用var来声明变量 ...

  8. SpringBoot2.1.6 + Shiro1.4.1 + Thymeleaf + Jpa整合练习

    首先,添加maven依赖,完整的pom文件如下: <?xml version="1.0" encoding="UTF-8"?> <projec ...

  9. web设计_7_页面缺失图片或CSS的情况下仍然易读

    1. 在任何可能使用背景图片的地方应设置同样的颜色的背景色. 防止图片不能加载的情况下,页面内容同样保持较好可读性. 例如文字为白色,背景图为深色,如果不设置背景色,当背景图未成功加载, 而浏览器多数 ...

  10. ES 22 - Elasticsearch中如何进行日期(数值)范围查询

    目录 1 范围查询的符号 2 数值范围查询 3 时间范围查询 3.1 简单查询示例 3.2 关于时间的数学表达式(date-math) 3.3 关于时间的四舍五入 4 日期格式化范围查询(format ...