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 错误:没有与此查询的执行关联的结果行集_Sql Server_Ssis_Runtime Error_Constraints - Fatal编程技术网

Sql server 错误:没有与此查询的执行关联的结果行集

Sql server 错误:没有与此查询的执行关联的结果行集,sql-server,ssis,runtime-error,constraints,Sql Server,Ssis,Runtime Error,Constraints,应作为变量存储在执行SQL任务中的查询: Use [Reporting] Go DECLARE @current_month DATETIME, @current_year DATETIME, @current_year_final AS INT, @previous_period_final VARCHAR(2), @test_period AS VARCHAR (2), @previous_period_final_2 VARCHAR(2) SET @current_month

应作为变量存储在执行SQL任务中的查询:

Use [Reporting]
Go

DECLARE 
@current_month DATETIME, 
@current_year DATETIME, 
@current_year_final AS INT, 
@previous_period_final VARCHAR(2),
@test_period AS VARCHAR (2),
@previous_period_final_2 VARCHAR(2)

SET @current_month = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()),0)
SET @current_year = DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE()),0)
SET @current_year_final = CASE WHEN LEFT(RIGHT(CONVERT(VARCHAR, GETDATE(),112),4),2) = '01' THEN LEFT(CONVERT(VARCHAR,@current_year,112),4)-1 ELSE LEFT(CONVERT(VARCHAR,@current_year,112),4) END
SET @previous_period_final = CASE
 WHEN CAST(LEFT(RIGHT(CONVERT(VARCHAR, GETDATE(),112),4),2) AS INT) - 1 BETWEEN 10 AND 11 THEN  CAST(CAST(LEFT(RIGHT(CONVERT(VARCHAR, GETDATE(),112),4),2) AS INT) - 1 AS VARCHAR)  -- Type Varchar
 WHEN CAST(LEFT(RIGHT(CONVERT(VARCHAR, GETDATE(),112),3),1) AS INT) - 1 BETWEEN 1  AND 8  THEN '0' + CAST(CAST(LEFT(RIGHT(CONVERT(VARCHAR, GETDATE(),112),3),1) AS INT) - 1 AS VARCHAR)
 WHEN CAST(LEFT(RIGHT(CONVERT(VARCHAR, GETDATE(),112),4),2) AS INT) - 1 = 9 THEN '09'
 WHEN      LEFT(RIGHT(CONVERT(VARCHAR, GETDATE(),112),4),2) = '01'          THEN '12'
 ELSE 'Invalid formula' END
SET @previous_period_final_2 = CAST(LEFT(RIGHT(CONVERT(VARCHAR, GETDATE(),112),4),2) AS INT) - 1 

-- ### Returns: 
--    1 = 'identical' = row numbers match
--    0 = 'mis-matched' = row numbers do not match
select sum(rows_identical) as rows from

(
select CAST(CAST(case when count_rows_raw = count_rows_facts then 1 else 0 end as bit)as int) as rows_identical 
--,SQL_VARIANT_PROPERTY(CAST(CAST(case when count_rows_raw = count_rows_facts then 1 else 0 end as bit)as int),'BaseType') -- ### EXCELLENT WAY TO RETRIEVE DATATYPE ###
from
(
 select
 (
  select SUM(#rows_facts) as #rows_facts from 
  (            
   select COUNT(ID) as #rows_facts, 'finalized_entries_facts_table' as type from facts_reporting  
 where YearMonthID in (select YearMonthID from dim_year_month as yyMM  
        where yyMM.YearMonth = CAST(@current_year_final AS Varchar)+'_'+CAST(@previous_period_final AS Varchar))
 and SourceID IN (select SourceID from dbo.dim_source where Source = 'Unlocks')

union

   select COUNT(ID) as #rows_facts, 'missing_entries_facts_table' as type from missing_ids_Unlocks_raw 
 where YearMonthID in (select YearMonthID from dim_year_month as yyMM  
        where yyMM.YearMonth = CAST(@current_year_final AS Varchar)+'_'+CAST(@previous_period_final AS Varchar))
 and SourceID IN (select SourceID from dbo.dim_source where Source = 'Unlocks')         
  ) as rows
 ) as count_rows_facts,
 (
SELECT count(*)as #rows_raw from UnlocksRawCSV_table as raw
Where Year_Month_inserted = CAST(@current_year_final AS Varchar) + '_' + @previous_period_final
 ) as count_rows_raw
)
as row_checks
)
as count_check 
--where rows_identical <> 0
SSIS中的变量定义和结果集映射:

在执行SQL任务中,我选择了结果集=单行。我也没有试过。我在执行SQL任务上设置了一个执行后断点,得到了以下结果:

==如果直接在SQL Server中执行上述查询,为什么在SSIS中得到0作为值,而在SSIS中得到1

后续任务中的优先约束如下所示:

编辑1:将此表达式更改为@RowCheck==0不会更改任何内容,因为任务在执行时仍然失败,并出现相同错误:

错误:没有与此查询的执行关联的结果行集

编辑:2:将优先级约束编辑器中的值从成功更改为失败是可行的,但我不明白任务本身为什么失败,以及为什么它会生成上述错误消息?但是,尽管继续处理包,变量RowCheck显示的值没有任何意义,因为它始终为零,而不管查询返回

编辑3:执行SQL语句的常规选项卡屏幕我也尝试了单行和上述结果集映射:


在执行SQL任务中,尝试将SET NOCOUNT添加到SQL的顶部,可能是行计数干扰了变量赋值,导致变量赋值不为1。是的,我这样做了,但不幸的是,这没有起到作用。我仍然总是得到一个0作为变量值。你能发布一个执行SQL任务属性的常规选项卡的屏幕截图吗?您是否也尝试过使用探查器来验证包执行的SQL是否符合预期?并返回您期望的结果?@TabAlleman我在相应选项卡的上方发布了一张图片。不知道你的意思是什么。我在哪里能找到它?我刚刚在SQLServerStudio中执行了SQL,在那里我得到了预期的结果/值。您在测试中可能错过了很多东西,这些东西只能在发生时被捕获。有时,包或包中的对象似乎被损坏,而销毁和重新创建它们是修复它们的唯一方法。