Массовая вставка с пакетом "mssql" - PullRequest
0 голосов
/ 25 сентября 2018

При попытке выполнить массовую вставку я получаю эту ошибку:

RequestError: Ошибка массовой копии.У пользователя нет разрешения ALTER TABLE для таблицы 'tableName'.Разрешение 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...