查询在ssis包中的执行SQL任务中不起作用
此查询在SQLServer2005的查询窗口中工作正常,但在ssis包中的执行SQL任务中运行时抛出错误查询在ssis包中的执行SQL任务中不起作用,ssis,Ssis,此查询在SQLServer2005的查询窗口中工作正常,但在ssis包中的执行SQL任务中运行时抛出错误 declare @VarExpiredDays int Select @VarExpiredDays= Value1 From dbo.Configuration(nolock) where Type=11 DECLARE @VarENDDateTime datetime,@VarStartDateTime datetime
declare @VarExpiredDays int
Select @VarExpiredDays= Value1 From dbo.Configuration(nolock) where Type=11
DECLARE @VarENDDateTime datetime,@VarStartDateTime datetime
SET @VarStartDateTime= GETDATE()- @VarExpiredDays
SET @VarENDDateTime=GETDATE();
select @VarStartDateTime
select @VarENDDateTime
SELECT * FROM
(SELECT CONVERT(Varchar(11),@VarStartDateTime,106) AS VarStartDateTime) A,
(SELECT CONVERT(Varchar(11),@VarENDDateTime,106) AS VarENDDateTime) B
这里有什么问题?您有多个输出类型。您有两个变量和一个查询。 您只需要在“resultset”属性中选择一个 您是否将这些映射到输出参数
select @VarStartDateTime
select @VarENDDateTime
您有多个输出类型。您有两个变量和一个查询。 您只需要在“resultset”属性中选择一个 您是否将这些映射到输出参数
select @VarStartDateTime
select @VarENDDateTime
您的目的是检索start和end的值,并将它们分配到SSIS变量中 正如上面提到的@Diego,这两个选择将带来麻烦。在执行SQL任务时,结果集选项包括无、单行、完整结果集和XML。放弃XML选项是因为我不想处理它,放弃None选项是因为我们想要返回行,我们的选项是单行或全行。我们可以使用Full,但是我们需要返回相同数据类型的值,这样处理就会变得复杂得多 通过消去过程,我们可以使用单行的结果集 查询语句 我通过简单地删除前面提到的两个选项来更正提供的查询。最终选择可以简化为以下内容(无需将其放入派生表中) 下面使用了完整的查询
declare @VarExpiredDays int
-- I HARDCODED THIS
Select @VarExpiredDays= 10
DECLARE @VarENDDateTime datetime,@VarStartDateTime datetime
SET @VarStartDateTime= GETDATE()- @VarExpiredDays
SET @VarENDDateTime=GETDATE();
/*
select @VarStartDateTime
select @VarENDDateTime
*/
SELECT * FROM
(SELECT CONVERT(Varchar(11),@VarStartDateTime,106) AS VarStartDateTime) A,
(SELECT CONVERT(Varchar(11),@VarENDDateTime,106) AS VarENDDateTime) B
验证执行SQL任务是否按预期运行。此时,只需将输出连接到SSIS变量。正如您在下面的结果窗口中所看到的,我创建了两个包级别变量StartDateText和EndDateText,类型为String,默认值为空字符串。您可以在“局部变量”窗口中看到,它们分配的值对应于所提供的源查询中的@VarExpiredDays=10
要做到这一点,只需配置执行SQL任务的结果集选项卡。其中最困难的部分是确保在源系统类型和SSIS类型之间有正确的映射。使用OLE DB连接时,结果名称与查询中调用的列无关。这只是一个按顺序位置引用列的问题(基于0的计数)。
最后,我发现最好保持基本类型,比如datetime数据类型,并让接口将其格式化为漂亮的本地化值 您的目的是检索start和end的值,并将它们分配到SSIS变量中 正如上面提到的@Diego,这两个选择将带来麻烦。在执行SQL任务时,结果集选项包括无、单行、完整结果集和XML。放弃XML选项是因为我不想处理它,放弃None选项是因为我们想要返回行,我们的选项是单行或全行。我们可以使用Full,但是我们需要返回相同数据类型的值,这样处理就会变得复杂得多 通过消去过程,我们可以使用单行的结果集 查询语句 我通过简单地删除前面提到的两个选项来更正提供的查询。最终选择可以简化为以下内容(无需将其放入派生表中) 下面使用了完整的查询
declare @VarExpiredDays int
-- I HARDCODED THIS
Select @VarExpiredDays= 10
DECLARE @VarENDDateTime datetime,@VarStartDateTime datetime
SET @VarStartDateTime= GETDATE()- @VarExpiredDays
SET @VarENDDateTime=GETDATE();
/*
select @VarStartDateTime
select @VarENDDateTime
*/
SELECT * FROM
(SELECT CONVERT(Varchar(11),@VarStartDateTime,106) AS VarStartDateTime) A,
(SELECT CONVERT(Varchar(11),@VarENDDateTime,106) AS VarENDDateTime) B
验证执行SQL任务是否按预期运行。此时,只需将输出连接到SSIS变量。正如您在下面的结果窗口中所看到的,我创建了两个包级别变量StartDateText和EndDateText,类型为String,默认值为空字符串。您可以在“局部变量”窗口中看到,它们分配的值对应于所提供的源查询中的@VarExpiredDays=10
要做到这一点,只需配置执行SQL任务的结果集选项卡。其中最困难的部分是确保在源系统类型和SSIS类型之间有正确的映射。使用OLE DB连接时,结果名称与查询中调用的列无关。这只是一个按顺序位置引用列的问题(基于0的计数)。
最后,我发现最好保持基本类型,比如datetime数据类型,并让接口将其格式化为漂亮的本地化值 为什么您的问题会被标记为
c#
?如果您发布抛出的错误,您可能会得到更多帮助。此外,在进行比较时,请检查以确保您使用SSI和SSM连接到同一个数据库/数据库服务器。为什么您的问题会标记为c
?如果您发布抛出的错误,您可能会得到更多帮助。另外,在进行比较时,可以检查以确保您使用SSI和SSM连接到同一个数据库/数据库服务器。