DTS — проблема с полными именами таблиц

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

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

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

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

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

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

Спасибо


person TabbyCool    schedule 04.03.2011    source источник
comment
Можете ли вы добавить подробности сообщения об ошибке, выдаваемого при сбое пакета?   -  person Ed Harper    schedule 04.03.2011
comment
Я только что закрыл Management Studio (домашнее время!), но задача не удалась в одной из задач преобразования данных, говоря, что таблица CoreServices.dbo.TempBranchDivision недействительна или что ее не удалось найти, я не могу вспомнить точная формулировка.   -  person TabbyCool    schedule 04.03.2011


Ответы (3)


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

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

person brian    schedule 04.03.2011
comment
Если вы собираетесь создавать и удалять таблицы в процессе, то обязательно используйте настоящие временные таблицы, а не взломанную версию временной таблицы. - person HLGEM; 04.03.2011
comment
Вы правы, технически это не временные таблицы. Тем не менее, я не создавал пакет, и у меня нет времени переписывать его в данный момент, поскольку он предназначен для проекта, который был приостановлен, поэтому мои приоритеты лежат в другом месте. Если я запускаю задачу SQL, которая создает таблицы, она создает их все каждый раз, но когда я запускаю весь пакет DTS, он иногда говорит, что не удается найти одну конкретную таблицу. - person TabbyCool; 07.03.2011
comment
Кроме того, синтаксис создания таблицы для каждой таблицы идентичен, за исключением, конечно, имени таблицы, однако пакет всегда дает сбой только в одной из таблиц, остальные каждый раз успешно создаются и заполняются. - person TabbyCool; 07.03.2011

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

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

person HLGEM    schedule 04.03.2011
comment
Таблица создается с помощью оператора Create Table - если я вручную запускаю задачу, содержащую оператор Create Table, она каждый раз успешно создается, но когда я запускаю весь пакет, иногда он говорит, что таблица не существует. Единственное, что я вижу, что отличается между этой таблицей и всеми остальными (в пакете около 20 задач, каждая из которых обновляет другую таблицу), это тот факт, что эта таблица использует полное имя таблицы, а другие нет. . - person TabbyCool; 07.03.2011
comment
Задание на рабочем сервере выполняется ежедневно под служебной учетной записью. Обычно это удается, но время от времени это терпит неудачу на этом одном столе. У меня точно такая же проблема с запуском на моем локальном SQL Server, он всегда дает сбой только на одной таблице, все остальные в порядке. - person TabbyCool; 07.03.2011
comment
Что так странно, так это то, что если не происходит сбой каждый раз, что является поведением, которое я ожидал бы, если бы проблема была в полном имени. Это полное имя для другого сервера? Если это так, возможно, соединение с другим сервером периодически отключается. - person HLGEM; 07.03.2011
comment
Имя просто имеет имя базы данных и схемы, т.е. MyDatabase.dbo.MyTable - кажется странным, что это может быть проблемой, поскольку база данных, на которой она работает, всегда имеет одно и то же имя, независимо от того, на каком сервере она находится. Параметры подключения изменяются в зависимости от того, находится ли он на машине разработки или на рабочем сервере, но имя базы данных всегда одно и то же. Кроме того, DTS размещается на сервере SQL, где он выполняется, поэтому нет проблем с недоступными связанными серверами или чем-то подобным. Это действительно озадачивает! - person TabbyCool; 07.03.2011

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

person TabbyCool    schedule 08.03.2011