Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/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 SSIS返回0行_Sql_Ssis_Agent - Fatal编程技术网

Sql SSIS返回0行

Sql SSIS返回0行,sql,ssis,agent,Sql,Ssis,Agent,我有一个问题我想不出来。我创建了一个SSIS包,它使用SQL命令从Server2检索数据。查询非常简单,但是它引用了联接中的视图。如果我在Server1上手动执行SSIS包,它将检索925行并将其插入Server1中相应的表中。当我将此SSIS包安排为每晚运行时,问题就开始了。它在第一步成功(截断Server1上的表以准备从Server2检索行),但是,当我查看该表时,有0行。当我修改查询以删除引用视图的联接(获得不希望的结果)时,计划的SSI工作得很好,尽管我得到的记录集不是我想要的,因为我需

我有一个问题我想不出来。我创建了一个SSIS包,它使用SQL命令从Server2检索数据。查询非常简单,但是它引用了联接中的视图。如果我在Server1上手动执行SSIS包,它将检索925行并将其插入Server1中相应的表中。当我将此SSIS包安排为每晚运行时,问题就开始了。它在第一步成功(截断Server1上的表以准备从Server2检索行),但是,当我查看该表时,有0行。当我修改查询以删除引用视图的联接(获得不希望的结果)时,计划的SSI工作得很好,尽管我得到的记录集不是我想要的,因为我需要该联接。我不认为这是一个权限问题,因为它在没有视图的情况下可以正常工作。有什么我遗漏的吗?谢谢你的帮助

以下查询仅在手动执行SSI时有效:FilteredAccount是一个视图 它应该返回超过900行,如果我手动运行,则返回,但如果通过代理执行SSIS,则返回0

SELECT B.epc_cosmid, A.consultant, A.region
FROM Consultant2TC AS A JOIN FilteredAccount AS B ON A.consultant = B.epc_serviceconsultantidname
如果我将SSIS包中的查询更改为下面的查询并对其进行调度,则可以正常工作:

SELECT A.consultant, A.region
FROM Consultant2TC AS A

由于您从代理作业和您自己的登录中获得不同的结果,因此一个显而易见的开始查找的地方是权限。使用代理的凭据登录时从SSMS运行查询时,您会得到什么结果?

我不是代理方面的专家,但我会检查代理作业运行的上下文是否具有访问视图的必要权限是否有两个FilteredAccount对象?一个在SQL代理使用的帐户的默认架构中,另一个在您的默认架构中?请尝试更改此设置,以确定配置:
选择A.consultant、A.region、@@servername作为SN,db_name()作为db,suser_sname()作为uname FROM Consultant2TC
。隔夜将其加载到表中,以便绝对确定数据来自何处。您也可以同时直接从视图添加负载,以查看该视图在夜间的状态。@ElectricLlama我尝试了您的建议,作业捕获了正确的服务器名称、用户名和数据库名称,并将其插入表中。我只是不知道发生了什么。我已经修改了几十次作业,它执行得很好,但是,每次我引用视图时,它都会在表中插入0行。用于执行作业的帐户是sysadmin帐户,因此,它是否应该具有执行任何视图或函数的权限(视图还包括用户函数)?我已经启用了日志记录,它没有显示任何错误,只是声明“0行已传输”。所以时间不是因素,它只是当您将其作为作业运行时?您能否验证返回的用户是否与您通过SSMS连接的用户相同?我建议您直接从视图将数据加载到SSMS的表中,以便在作为作业运行时检查其内容。我怀疑一种叫做FilteredAccount的观点。你能发布定义吗?它可能根据连接的用户过滤记录,如果该用户不同,您将得到不同的结果。