Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.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
ssis临时表执行程序_Ssis_Proc_Validationerror_Global Temp Tables - Fatal编程技术网

ssis临时表执行程序

ssis临时表执行程序,ssis,proc,validationerror,global-temp-tables,Ssis,Proc,Validationerror,Global Temp Tables,这里是SSIS新手 我有一个基于向导创建的SSIS包。我添加了一个SQL任务来运行我之前单独运行的脚本,以便将流程简化为一个步骤。该脚本使用了大量临时表,并在最后使用了一个全局###临时表,以便在进程之外访问结果 当我尝试执行包时,我得到一个复杂的“包验证错误”(错误代码0x80040E14)。我认为错误消息的执行部分是“无效对象名”##roster5” 我刚刚意识到抛出错误的是数据流任务,所以我尝试将另一个SQL任务放在创建表之前,以便数据流任务可以看到表在那里;但它仍然给了我一个错误:“无效

这里是SSIS新手

我有一个基于向导创建的SSIS包。我添加了一个SQL任务来运行我之前单独运行的脚本,以便将流程简化为一个步骤。该脚本使用了大量临时表,并在最后使用了一个全局###临时表,以便在进程之外访问结果

当我尝试执行包时,我得到一个复杂的“包验证错误”(错误代码0x80040E14)。我认为错误消息的执行部分是“无效对象名”##roster5”

我刚刚意识到抛出错误的是数据流任务,所以我尝试将另一个SQL任务放在创建表之前,以便数据流任务可以看到表在那里;但它仍然给了我一个错误:“无效的对象名'##花名册#成员_NEW5.”


我错过了什么/做错了什么?我不知道我不知道什么。这似乎不应该那么复杂(作为一个新手,我知道这可能是…的重复,但我不知道如何提问。)

根据您的回答,另一个选择是在执行独立t-SQL的SQL代理作业中添加t-SQL步骤。您需要重新考虑原始SSIS包的流控制,并将其拆分为两个单独的包。第一个SSIS包将执行T-SQL步骤之前所需的所有操作,下一个步骤将执行聚合所需的实际T-SQL,然后最后一个步骤将调用第二个包,这将完成该过程


我提出这个建议,但要注意这是不可取的。最好的方法是与您的DBA通信,DBA将能够为您提供一个服务帐户,以使用截断流程管理所需的暂存表所需的提升权限来执行SSIS包。

根据您的响应,另一种选择是在执行独立T-SQL的SQL代理作业中添加T-SQL步骤。您需要重新考虑原始SSIS包的流控制,并将其拆分为两个单独的包。第一个SSIS包将执行T-SQL步骤之前所需的所有操作,下一个步骤将执行聚合所需的实际T-SQL,然后最后一个步骤将调用第二个包,这将完成该过程


我提出这个建议,但要注意这是不可取的。最好的方法是与您的DBA通信,DBA将能够为您提供一个服务帐户,以使用截断您的流程管理所需的暂存表所需的提升权限来执行SSIS包。

我实际上想发布一个非答案。我试着尽可能地遵循上面的建议,但没有任何效果。我的脚本应该运行,然后数据泵应该将全局临时文件的内容复制到另一个服务器/表。我将此作为两个步骤来完成,并尝试使用SSIS在一个步骤中完成这一切。实际上不需要在SSI内将值从一个组件传递到另一个组件。看起来这不应该那么难

不管怎样,正如我所说,一切都不起作用。好吧,让我告诉你我认为发生了什么。在犯了很多错误,撤销了很多次,尝试了很多次失败之后,有些东西开始起作用了。我认为其中一个原因是我将resultsetype设置为resultsetype_None,因为我不会使用该步骤中的任何结果。如果有人认为事情不是这样,我很高兴听到现实,因为我想学习


我认为这是一个非回答,因为我没有信心,我是正确的,或者我得到它以外的任何意外。

< P>我实际上想张贴一个非答案。我试着尽可能地遵循上面的建议,但没有任何效果。我的脚本应该运行,然后数据泵应该将全局临时文件的内容复制到另一个服务器/表。我将此作为两个步骤来完成,并尝试使用SSIS在一个步骤中完成这一切。实际上不需要在SSI内将值从一个组件传递到另一个组件。看起来这不应该那么难

不管怎样,正如我所说,一切都不起作用。好吧,让我告诉你我认为发生了什么。在犯了很多错误,撤销了很多次,尝试了很多次失败之后,有些东西开始起作用了。我认为其中一个原因是我将resultsetype设置为resultsetype_None,因为我不会使用该步骤中的任何结果。如果有人认为事情不是这样,我很高兴听到现实,因为我想学习


我认为这是没有答案的,因为我对自己是正确的没有信心,或者除了偶然的意外,我没有得到任何答案。首先告诉我你希望在####罗斯尔#成员#########罗斯尔#成员#新闻5.oops####罗斯特5只是全名的缩写;脚本生成了大约500万行。您将看到一些将#temp表转换为表变量(例如@tentable)的建议。优化器将变量表视为具有单行的表,这将影响性能。您还将看到其他建议,例如设置frmt off()。这也将导致性能下降。我会用一个可识别的模式创建一个暂存表,填充它,然后通过truncate。一个大于5M行的表变量??!??!!我已经尝试添加了一些你发布的帖子所建议的内容。直接在过程中:SET NOCOUNT ON SET FMTONLY OFF SELECT TOP 0 field=CAST(NULL AS INT)IF 1=0 BEGIN--发布元数据选择CAST(NULL AS INT)AS id,CAST(NULL AS NCHAR(10))AS[Name],CAST(NULL AS NCHAR(10))AS SirName END在调用对象中:IF 1=0 BEGIN选择CAST(NULL AS INT)AS Foo END;Exec usp_WaterAllLogic另一件事:在要预创建表的对象中:选择TOP 0 field=CAST(如中所示为NULL