Подтвердить что ты не робот

Какое разрешение необходимо использовать SqlBulkCopy в SQL Server 2008?

Использование .NET SqlBulkCopy, какое разрешение мне нужно предоставить пользователю в SQL Server 2008?

4b9b3361

Ответ 1

http://msdn.microsoft.com/en-us/library/ms162802.aspx

Для операции bcp out требуется разрешение SELECT для исходной таблицы.

Bcp в действии минимально требует разрешения SELECT/INSERT для целевой таблицы. Кроме того, разрешение ALTER TABLE требуется, если выполняется любое из следующих условий:

  • Ограничения существуют, и подсказка CHECK_CONSTRAINTS не указана. ms162802.note(ru-ru, SQL.100).gifNote: Отключение ограничений является поведением по умолчанию. Чтобы явно включить ограничения, используйте параметр -h с подсказкой CHECK_CONSTRAINTS.

  • Триггеры существуют, и подсказка FIRE_TRIGGER не указана. ms162802.note(ru-ru, SQL.100).gifNote: по умолчанию триггеры не запускаются. Для явного запуска триггеров используйте опцию -h с подсказкой FIRE_TRIGGERS.

  • Вы используете опцию -E для импорта значений идентификаторов из файла данных.

Примечание. Требование разрешения ALTER TABLE для целевой таблицы было впервые введено в SQL Server 2005. Это новое требование может привести к сбоям сценариев bcp, которые не применяют триггеры и проверки ограничений, если у учетной записи пользователя отсутствуют разрешения для таблицы ALTER для целевой таблицы.

Ответ 2

Чтобы указать эти подсказки из .net:

var bulkCopy = new SqlBulkCopy(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"],
        SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints);

Ответ 3

Для успешного выполнения класса SqlBulkCopy необходимы только предварительные настройки SELECT/INSERT. Класс выдает инструкцию INSERT BULK в отношении целевой таблицы SQL Server. Проверено сегодня на одном из наших серверов-разработчиков.