Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server DTS-完全限定表名的问题_Sql Server_Sql Server 2005_Dts - Fatal编程技术网

Sql server DTS-完全限定表名的问题

Sql server DTS-完全限定表名的问题,sql-server,sql-server-2005,dts,Sql Server,Sql Server 2005,Dts,我有一个运行在SQLServer2005数据库上的SQLDTS包,它在大多数情况下都能正常工作。然而,有时它失败了,我不知道为什么 该包由一个SQL任务组成,该任务创建一组临时表、一组数据转换,然后在最后执行另一个SQL任务以删除第一步中创建的临时表 由于找不到转换数据任务中引用的一个临时表(尽管该表是在第一步中创建的临时表之一),因此包会不时失败 在间歇性失败的任务和所有其他转换数据任务之间,我能看到的唯一区别是目标的Table Name属性-它是完全限定的,即MyDatabase.dbo.A

我有一个运行在SQLServer2005数据库上的SQLDTS包,它在大多数情况下都能正常工作。然而,有时它失败了,我不知道为什么

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

由于找不到转换数据任务中引用的一个临时表(尽管该表是在第一步中创建的临时表之一),因此包会不时失败

在间歇性失败的任务和所有其他转换数据任务之间,我能看到的唯一区别是目标的Table Name属性-它是完全限定的,即MyDatabase.dbo.Attendable,而所有其他任务都只是将表名指定为Attendable。我不知道为什么这一个是不同的,或如何修复它。我假设这就是问题所在,因为这是这项任务和所有其他任务之间唯一不同的地方

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

谁能解释一下这里可能存在什么问题,或者我如何取消目标表名的资格


感谢您将问题表称为临时表,但它看起来好像是一个实际的表。我猜你打算晚些时候把桌子放在包裹里?包失败后,您是否已验证表是否存在?表的语法正确吗


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

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


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

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

能否添加包失败时抛出的错误消息的详细信息?我刚刚关闭了Management Studio(home time!),但任务在其中一个Transform Data任务上失败,表示表“CoreServices.dbo.TempBranchDivision”是无效的,或者找不到,我记不起确切的措辞。如果您要在进程中创建并删除表,那么请务必使用真正的临时表,而不是临时表的黑客版本。您是对的,它们在技术上不是临时表。然而,我没有创建这个包,现在也没有时间重写它,因为它是为了一个已经搁置的项目,所以我的优先权在别处。如果我运行创建表的SQL任务,它每次都会创建所有表,但是当我运行整个DTS包时,有时会说找不到一个特定的表。此外,每个表的创建表语法都是相同的,当然除了表名之外,包只会在其中一个表上失败,其他的每次都会成功创建和填充。该表是使用Create table语句创建的-如果我手动运行包含Create table语句的任务,则每次都会成功创建该表,但当我运行整个包时,有时会说该表不存在。我能看到的唯一区别是,这一个表和所有其他表(包中大约有20个任务,每个任务更新一个不同的表)都使用完全限定的表名,而其他表则不使用。live server上的作业每天都在服务帐户下运行。它通常会成功,但在这张桌子上,它时不时会失败。我在本地SQL Server上运行它时遇到了完全相同的问题,它只会在一个表上失败,其他所有表都没有问题。最奇怪的是,如果不是每次都失败,那么如果完全限定名是问题所在,我会期望这种行为。它是另一台服务器的完全限定名吗?如果是这样的话,与另一台服务器的连接可能会定期中断。该名称仅包含数据库和架构名称,即.MyDatabase.dbo.MyTable-这似乎很奇怪,因为它运行的数据库总是具有相同的名称,而不管它在哪个服务器上。连接设置会根据它是在开发人员计算机上还是在生产服务器上而更改,但数据库名称始终相同。此外,DTS托管在执行它的SQL Server上,因此不存在链接服务器不可用或诸如此类的问题。这真令人费解!