Усеченная таблица служб SSIS не работает;удалить из успешно - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть пакет служб SSIS, в котором я хочу очистить промежуточную таблицу и снова заполнить ее.Я создал задачу «Выполнение SQL» с кодом TRUNCATE TABLE TABLE_NAME, которая завершается с ошибкой:

Таблица не существует или у вас нет разрешения

Если я изменяю задачучтобы сделать DELETE FROM TABLE_NAME это работает как шарм.Если я вхожу в систему как пользователь, с которым я соединяюсь и выполняю TRUNCATE TABLE TABLE_NAME, это также работает как чудо.Может ли кто-нибудь помочь мне понять, почему я не могу выполнить усечение в задании SSIS, но я могу как пользователь?Потому что я бы предпочел урезать таблицу, а не удалять.

1 Ответ

0 голосов
/ 02 февраля 2019

Вы можете разделить ошибку на две части:

  1. Таблица не существует
  2. Нет разрешения

Так что если вы уверены, чтотаблица существует (поскольку вы говорите, что операции DELETE работают хорошо) , это проблема с правами, проверьте администратора базы данных, возможно, у вас нет разрешения на усечение данных из этой таблицы.

Обратите внимание, что для TRUNCATE TABLE требуется больше разрешений, чем для операций DELETE .На основании официальной документации :

Требуемое минимальное разрешение - ALTER для table_name.Разрешения TRUNCATE TABLE по умолчанию принадлежат владельцу таблицы, членам предопределенной роли сервера sysadmin, а также предопределенным ролям базы данных db_owner и db_ddladmin и не подлежат передаче.Однако вы можете включить оператор TRUNCATE TABLE в модуль, например хранимую процедуру, и предоставить соответствующие разрешения модулю с помощью предложения EXECUTE AS.

С другой стороны, Операция DELETE требует меньше разрешений .На основании официальной документации :

Требуются разрешения DELETE для целевой таблицы.Разрешения SELECT также требуются, если в операторе содержится предложение WHERE.

Разрешения DELETE по умолчанию для членов предопределенной роли сервера sysadmin, предопределенных ролей базы данных db_owner и db_datawriter и владельца таблицы.Члены ролей sysadmin, db_owner и db_securityadmin, а также владелец таблицы могут передавать разрешения другим пользователям.

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