DTS - проблема с полностью определенными именами таблиц

У меня есть пакет SQL DTS, работающий в базе данных SQL Server 2005, который, по большей части, работает правильно. Однако иногда это терпит неудачу, и я не могу понять, почему.

Пакет состоит из задачи SQL, которая создает кучу временных таблиц, кучу преобразований данных, а затем еще одну задачу SQL в конце, чтобы удалить временные таблицы, созданные на первом шаге.

Время от времени происходит сбой пакета, поскольку не удается найти одну из временных таблиц, на которые есть ссылка в задаче преобразования данных, несмотря на то, что таблица является одной из временных таблиц, созданных на первом шаге.

Единственное различие, которое я вижу между периодически сбойной задачей и всеми остальными Задачами Преобразования Данных, - это свойство Имя таблицы для Назначения - оно полностью определено, т.е. MyDatabase.dbo.TempTable, тогда как для всех других задач просто указано имя таблицы как TempTable. Я понятия не имею, почему этот отличается или как это исправить. Я предполагаю, что это проблема, так как это единственное, что, кажется, отличается между этой одной задачей и всеми другими.

Кроме того, если я вручную выполняю первый шаг DTS для создания временных таблиц перед полным выполнением пакета, это всегда работает.

Кто-нибудь может пролить свет на то, в чем может быть проблема, или как я могу отменить название таблицы назначения?

Спасибо

3 ответа

Решение

Я выяснил, в чем проблема! Оказывается, что свойства рабочего процесса для сбойной задачи были неправильными и не указали задачу "Создать временные таблицы" в качестве предварительного условия, поэтому время от времени задача выполнялась до создания связанной целевой таблицы. Это случалось не часто, поскольку таблица создавалась второй, поэтому обычно присутствовала до выполнения следующей задачи. Все остальные задачи имели правильные свойства рабочего процесса, но по какой-то причине это было пропущено.

Поскольку он периодически прерывается, проблема в том, что он использует полное имя, вряд ли будет проблемой. Я подозреваю, что проблема заключается в каком-то шаге над ним, и поэтому таблица никогда не создается. Или эта таблица создана с использованием оператора select into, а не таблицы создания? Если это так, и нет записей для выбора, это может привести к периодической проблеме, подобной этой.

Разные люди запускают пакет под разными учетными записями пользователей, а не на работе? Возможно, у человека нет прав на создание таблицы в этой схеме.

Вы ссылаетесь на проблемную таблицу как временную таблицу, но похоже, что это фактическая таблица. Я предполагаю, что вы планируете бросить стол позже в пакете? После сбоя пакета вы убедились, что таблица существует? Правильный ли синтаксис для таблицы?

Кроме того, ваш 2005 год сейчас. Почему бы не обновить пакет до SSIS? Поставщик журналов в SSIS может записывать гораздо больше, чем просто сообщение об ошибке, которое поможет вам понять, в чем заключается настоящая проблема.

Другие вопросы по тегам