【问题标题】:DTS - Problem With Fully Qualified Table NamesDTS - 完全限定表名的问题
【发布时间】:2011-03-04 14:17:25
【问题描述】:

我有一个在 SQL Server 2005 数据库上运行的 SQL DTS 包,在大多数情况下,它可以正常工作。但是,有时它会失败,我不知道为什么。

该包由一个 SQL 任务组成,该任务创建一堆临时表、一堆数据转换,最后是另一个 SQL 任务以删除在第一步中创建的临时表。

由于找不到转换数据任务中引用的临时表之一,尽管该表是第一步中创建的临时表之一,但该包时常失败。

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

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

谁能解释这里可能存在什么问题,或者我如何取消目标表名的限定?

谢谢

【问题讨论】:

  • 能否添加打包失败时抛出的错误信息的详细信息?
  • 我刚刚关闭了 Management Studio(回家的时间!),但任务在转换数据任务之一上失败,说表“CoreServices.dbo.TempBranchDivision”无效,或者它不能找不到,我不记得确切的措辞了。

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


【解决方案1】:

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

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

【讨论】:

  • 如果您要在进程中创建和删除表,那么一定要使用真正的临时表,而不是临时表的破解版本。
  • 你是对的,它们在技术上不是临时表。然而,我没有创建这个包,也没有时间重写它,因为它是为了一个被搁置的项目,所以我的优先事项在别处。如果我运行创建表的 SQL 任务,它每次都会创建它们,但是当我运行整个 DTS 包时,有时会说找不到一个特定的表。
  • 此外,每个表的创建表语法都是相同的,当然,除了表名之外,包只会在其中一个表上失败,其他表每次都成功创建和填充。
【解决方案2】:

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

不同的人是否在不同的用户帐户下运行软件包而不是在工作中?可能没有权限在该架构中创建表。

【讨论】:

  • 该表是使用 Create Table 语句创建的 - 如果我手动运行包含 Create Table 语句的任务,它每次都会成功创建,但是当我运行整个包时,它有时会说该表不存在。我能看到的唯一区别是这个表和所有其他表(包中有大约 20 个任务,每个更新不同的表)是这个表使用完全限定的表名而其他表没有.
  • 实时服务器上的作业每天在服务帐户下运行。它通常会成功,但时不时地在这张桌子上失败。我在本地 SQL Server 上运行它时遇到完全相同的问题,它只在一个表上失败,其他所有都很好。
  • 奇怪的是 if 每次都不会失败,如果完全限定名称是问题,我会期望这种行为。它是另一个服务器的完全限定名称吗?如果是这样,与其他服务器的连接可能会定期关闭。
  • 名称只有数据库和模式名称,即。 MyDatabase.dbo.MyTable - 这似乎很奇怪,因为它运行的数据库总是具有相同的名称,无论它在什么服务器上。连接设置会根据它是在开发机器上还是在生产服务器上而更改,但数据库名称始终相同。此外,DTS 托管在执行它的 SQL Server 上,因此不存在链接服务器不可用或类似情况的问题。真是令人费解!
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2018-06-21
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多