DTS - 完全合格的表名称问题

时间:2011-03-04 14:17:25

标签: sql-server sql-server-2005 dts

我有一个在SQL Server 2005数据库上运行的SQL DTS包,在大多数情况下,它可以正常工作。但是,有时它失败了,我无法弄清楚原因。

该软件包包含一个SQL任务,它创建了一堆临时表,一堆数据转换,然后是另一个SQL任务,最后删除在第一步中创建的临时表。

程序包一次又一次失败,因为无法找到转换数据任务中引用的临时表之一,尽管该表是第一步中创建的临时表之一。

我在间歇性失败的任务和所有其他转换数据任务之间看到的唯一区别是目标的表名属性 - 它是完全限定的,即。 MyDatabase.dbo.TempTable,而所有其他任务只是将表名指定为TempTable。我不知道为什么这个不同,或者如何解决它。我假设这是问题所在,因为它是这一项任务与所有其他任务之间唯一似乎不同的事情。

另外,如果我在完全执行包之前手动执行DTS的第一步来创建临时表,它总是有效。

任何人都可以了解这里可能存在的问题,或者我如何取消目的地表名称的资格?

由于

3 个答案:

答案 0 :(得分:1)

您将问题表称为临时表,但它看起来好像这是一个实际的表。我猜你打算稍后在包中放下桌子?包失败后,您是否确认该表存在?表的语法是否正确?

另外,你现在在2005年。为什么不将软件包升级到SSIS? SSIS中的日志提供程序可以记录的不仅仅是错误消息,它可以帮助您了解真正的问题。

答案 1 :(得分:1)

由于它间歇性地失败,因此它使用完全限定名称的事实不太可能成为问题。我怀疑问题出在它上面的某个步骤,因此表永远不会被创建。或者是使用select into语句而不是create table创建此表?如果是这样,并且没有要选择的记录,那么可能会导致像这样的间歇性问题。

不同的人是否在不同的用户帐户下而不是在工作中运行包?也许没有权利在该模式中创建表。

答案 2 :(得分:0)

我发现了问题所在!事实证明,失败任务的工作流属性不正确,并且未指定“创建临时表”任务作为先决条件,因此在创建关联目标表之前,任务一次又一次地运行。这种情况并不经常发生,因为该表是第二个要创建的表,因此通常在下一个任务执行之前出现。所有其他任务都具有正确的工作流程属性,但由于某种原因,这个任务已被遗漏。