带有节点“ mssql”包的批量插入

时间:2018-09-25 12:36:19

标签: node.js bulkinsert node-mssql

在尝试进行批量插入时,出现此错误:

  

RequestError:批量复制失败。用户对表'tableName'没有ALTER TABLE权限。如果表具有触发器或检查约束,则需要对该表具有触发器或检查约束的目标表具有ALTER TABLE权限,但是未将“ FIRE_TRIGGERS”或“ CHECK_CONSTRAINTS”批量提示指定为批量复制命令的选项。

下面是代码段。

            const table = new sql.Table('tableName');
            table.create = true
            table.columns.add('c1', sql.BigInt, { nullable: false, primary: true })
            table.columns.add('c2', sql.VarChar(40), { nullable: false })
            table.columns.add('c3', sql.VarChar(40), { nullable: false })

            _.forEach(result, function (row) {
                table.rows.add(row.c1data, row.c2data, row.c3data);
            });
            await pool.request().bulk(table, async (err, result) => {
                if (err) {
                    log.error("Error in bulk insert " + err);
                    sql.close();
                }
                else {
                    log.info("Successfully inserted");
                    status = true;
                    sql.close();
                }
            });

这在用户具有所有访问权限的较低环境中正常工作,但在用户打算具有有限访问权限的较高环境中不起作用。我们能否像下面提到的那样指定选项CHECK_CONSTRAINTS和FIRE_TRIGGER:

https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2005/ms188365(v=sql.90)#permissions

0 个答案:

没有答案