SqlBulkCopy ошибка только в постановке - PullRequest
0 голосов
/ 29 августа 2011

При использовании SqlBulkCopy мы получаем следующую ошибку (только на промежуточном сервере).Хранимая процедура имеет разрешения на выполнение.И они работают правильно в нашей тестовой среде.Так что же нужно исправить в среде сцены, чтобы она работала правильно?Пожалуйста, поделитесь своими мыслями.

Требуется разрешение ALTER TABLE для целевой таблицы операции массового копирования, если таблица имеет триггеры или проверочные ограничения, но массовые подсказки 'FIRE_TRIGGERS' или 'CHECK_CONSTRAINTS' не указаныв качестве параметров для команды массового копирования.

Ответы [ 3 ]

1 голос
/ 29 августа 2011

Трудно сказать точно, так как вы не предоставляете никакого определения SP / Table, но кажется, что вам нужно указать SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints, чтобы заставить его работать ... и / или дать разрешение пользователя ALTER TABLE ... если это работает в одной среде, а не в другой, то должны быть различия в определениях SP / Table и / или в правах пользователя ...

1 голос
/ 29 августа 2011

Основной причиной данной проблемы является разрешение ALTER TABLE.Мы можем решить проблему одним из следующих 2 решений.

Либо просто предоставьте разрешение ALTER TABLE для указанной группы пользователей, либо следуйте инструкциям

  • Ограничения отключены, чтоповедение по умолчанию.Чтобы оставить ограничения включенными, используйте параметр -h с подсказкой CHECK_CONSTRAINTS
  • Триггеры отключены, что является поведением по умолчанию.Для запуска триггеров используйте параметр -h с подсказкой FIRE_TRIGGERS.
  • Используйте параметр -E для импорта значений идентификаторов из файла данных.
0 голосов
/ 29 августа 2011

Ошибка кажется мне довольно понятной. В вашей промежуточной среде пользователь, для которого вы выполняете команды SQL, не имеет разрешения ALTER TABLE для таблицы, в которую выполняется массовая загрузка. Исходя из формулировки вашего вопроса, предположительно, существует какая-то другая среда, которая работает. В этих средах пользователь имеет доступ ALTER TABLE.

Альтернативы, как указано в сообщении об ошибке, включают выдачу параметров FIRE_TRIGGERS и / или CHECK_CONSTRAINTS с вашей командой массовой загрузки. Смотрите здесь для получения дополнительной информации о том, как это сделать: http://msdn.microsoft.com/en-us/library/aa225968(v=sql.80).aspx

...