Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 server DTS任务中未返回行,但在调试脚本时返回_Sql Server_Ssis_Dts - Fatal编程技术网

Sql server DTS任务中未返回行,但在调试脚本时返回

Sql server DTS任务中未返回行,但在调试脚本时返回,sql-server,ssis,dts,Sql Server,Ssis,Dts,我希望我能正确地解释这一点。我有一个SSIS脚本任务,它非常简单地查询一个视图,用结果填充一个数据表,并输出结果数据表的行数 SqlCommand cmd = new SqlCommand("select .....", conn); using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { da.Fill(dt);

我希望我能正确地解释这一点。我有一个SSIS脚本任务,它非常简单地查询一个视图,用结果填充一个数据表,并输出结果数据表的行数

SqlCommand cmd = new SqlCommand("select .....", conn);
                using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                {
                    da.Fill(dt);
                    output += "Datatable row count " + dt.Rows.Count.ToString() + " \r\n";
                }
在VisualStudio中,这将返回正确的结果/行数(165行)。当我保存包并将其作为SQL Server作业中的一个步骤运行时,它返回的行数为0。(作业运行时没有错误)相同的代码、相同的查询、相同的连接、相同的凭据唯一不同的是,当我在Visual Studio中点击包内的“调试”时,它可以工作,但当我作为SQL Server作业步骤执行包时,它不会工作


快把我逼疯了!有人有什么想法吗?非常感谢。

我建议通过dtexec命令行工具或dtexecUI运行,看看它会产生哪些行为。这将有助于确定是包问题还是作业问题。另外,您是否在SSIS脚本任务中运行此任务?如果是这样的话,SSIS提供了一些构造,以更标准的方式(对SSIS)实现这一点。例如,您可以在数据流中使用OLEDB源,然后使用RowCount任务报告通过管道传递的RowsAffected计数

如果打开探查器,您是否看到连接已打开并执行了相同的查询?谢谢。在Profiler中,我看到批处理开始,textdata显示select查询,然后批处理完成,但没有其他内容(我很少使用Profiler)。我将文本输出到datatable行数的任意一侧,它将输出“conn open”,然后输出rowcount,然后输出“conn closed”。谢谢您的建议。命令行中的dtexec按预期工作。包不起作用的唯一地方是作为SQL作业中的一个步骤。我不知道区别是什么?执行包设置的作业步骤是如何设置的?我假设这是使用“SQLServer集成服务”的步骤类型。一种解决方法是使用SQL作业步骤类型“操作系统(CMDEXE)”。这可能会使用所需参数调用dtexec命令来执行您的包。但要执行此操作,您需要传入dtexec应用程序的完整路径。我还想说的是,我认为作业和包之间可能存在一些权限问题。因此,如果出于某种原因,您需要通过SQL Server Integration Service运行ces作业步骤类型,那么您可能需要深入研究安全模型,以确定有关包执行的更多信息。非常感谢您指出了正确的方向。当我添加代理并使用代理运行包时,它起到了作用。