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
SSIS包写入了0行_Ssis_Sql Server 2012 - Fatal编程技术网

SSIS包写入了0行

SSIS包写入了0行,ssis,sql-server-2012,Ssis,Sql Server 2012,是的,我读了关于同一主题的其他问题,但它们不涉及我的问题 我们运行两个环境;DEV和Prod。这两个版本上周进行了同步,这意味着它们应该包含相同的数据,运行相同的SSIS包,并提供相同的源数据 然而,今天我们在PROD上有一个包,它完成了它的“常规步骤”(3个表被截断,然后从OLEDB源加载到OLEDB目标,一个接一个)。包完成时没有抛出错误,前两个表包含数据,而最后一个表不包含数据 在德夫身上,一切看起来都很好 我查看了包历史记录,它实际上显示它写了0行: 然而,昨天它却如期发挥了作用:

是的,我读了关于同一主题的其他问题,但它们不涉及我的问题

我们运行两个环境;DEV和Prod。这两个版本上周进行了同步,这意味着它们应该包含相同的数据,运行相同的SSIS包,并提供相同的源数据

然而,今天我们在PROD上有一个包,它完成了它的“常规步骤”(3个表被截断,然后从OLEDB源加载到OLEDB目标,一个接一个)。包完成时没有抛出错误,前两个表包含数据,而最后一个表不包含数据

在德夫身上,一切看起来都很好

我查看了包历史记录,它实际上显示它写了0行:

然而,昨天它却如期发挥了作用:

当我手动运行包时,它会写入数据。当我单击“预览”时,它显示数据。当我手动运行源查询时,它每次都会一致地返回相同行数的数据。SSIS目录尚未更新(从昨天到今天,PROD未部署任何更改)

源查询不使用表变量,但使用CTE。我已经看到了添加
设置NOCOUNT的建议,愿意接受这可能是一种解释。然而,这些答案似乎表明该包从未写入任何数据,而该包以前工作过,并且在DEV上工作过


有人对我如何向我的客户解释我不知道为什么一个软件包突然选择不写入任何数据,以及我如何确保这不会再次发生在这个软件包或任何其他软件包上有任何解释吗

这可能很棘手。请尝试以下操作:

  • 集成服务目录->SSIDB->project->(右键单击)报告->标准报告->所有执行下
    。如果ETL作业在任何时候与仓库失去联系,请检查此处 2.如果已启用日志记录,请尝试查看程序包开始返回0的任务名称:

    select 
        data_stats_id,
        execution_id,
        package_name,
        task_name,
        source_component_name,
        destination_component_name,
        rows_sent
    from 
        ssisdb.catalog.execution_data_statistics
    
  • 您如何处理事务和检查点?如果您想知道此问题的根本原因,这一点很重要。可能会发生这样的情况:由于失去连接,用户被迫回滚任何在仓库中写入的操作

  • 事实证明,这个问题是由疏忽引起的

    因为我们在同一个服务器上运行DEV和PROD(我们知道,并且至少建议客户考虑使用不同的实例),所以我们使用变量,我们指向适当的环境(在环境变量中设置)。p> 提供这个特定包的查询被更新了,显然没有使用变量切换数据库,而是硬编码的(可能是测试的结果,然后忘记了更新变量)。DEV和PROD的加载同时运行,我们怀疑PROD准备就绪时,DEV仍在处理源表,因此返回了0行

    我们今天才发现这一点,因为直到今天早上,货物再次正常运转。我太晚了,无法使用Profiler捕获它,但因为它只是这个包,我检查了一下,发现了对_DEV的硬编码引用


    谢谢大家的来电

    您是否检查了数据源是否在执行生产DTS时发生了更改(查询结果为0),然后进入返回结果的状态?我建议您在运行查询时分析源数据库。你可能会发现一些意想不到的过滤是错误的ocurring@EzequielLópezPetrucci-我们首先运行了一个登台过程,并从那里获得了资源。当启动此特定包时,暂存表中不再发生任何更改。@Nick.McDermaid除了我们在包/组件的源中添加的内容外,不应该发生任何筛选。这就是我手动运行的查询,它生成了一个一致的结果集。当您分析SQL时,它可能会变得更清晰。例如,您可能会发现它在错误的数据库中运行,或者是在其他数据库中运行。所有后续软件包均按预期工作。在这1天里,这1个包中的这1个任务决定不写任何行。SSIS包中也没有事务或检查点。一个简单的select语句,带有派生列,然后将结果推送到目标。很高兴您得到了它!