首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSRS参数数据参数在数据驱动订阅上失败

SSRS参数数据参数在数据驱动订阅上失败
EN

Stack Overflow用户
提问于 2017-09-14 20:15:01
回答 1查看 483关注 0票数 0

我想知道是否有人能帮上忙。

我有一套数据驱动的订阅,它使用下面的SQL代码来计算参数。这也是报表使用的同一个SQL Server数据源。

代码语言:javascript
复制
 select cast(dateadd(day,case when datepart(dw,getdate()) in (5,6) then 4 else 2 end,getdate()) as date) [parameter]

报告中的参数的类型为date。

它已经工作了15个月,没有问题,但在上周服务器升级后,它现在停止工作。在调查时,错误日志显示上面没有给出有效的日期。如果我在报告中手动输入日期,它就可以正常工作。如果我在订阅中指定一个硬编码的日期,并查看报表,结果现在似乎颠倒了日期的月和日部分(当该选项提供有效日期时)。

作为关键报告中的一个临时解决办法,我已经设法将结果转换为格式为'yyyy-MM-dd‘的varchar,并将代码更改为:

代码语言:javascript
复制
select left(convert(varchar,dateadd(day,case when datepart(dw,getdate()) in (5,6) then 4 else 2 end,getdate()),126),10) [parameter]

由于受影响的报告量很大,因此对所有报告执行此操作并不一定实用。

对于原因和潜在的修复方法有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-09-14 21:29:50

我可以看到你的代码产生错误的原因。由于SET DATEFIRST在服务器上的配置,您可能会得到错误的结果。

首先,使用以下命令检查您的数据目录

代码语言:javascript
复制
SELECT @@DATEFIRST  

并像这样在代码中设置它

代码语言:javascript
复制
DECLARE @Date date = '20170914' -- Thursday


SET DATEFIRST 1 ; 
SELECT datepart(dw,@Date) 
--Result 4 

SET DATEFIRST 2 ; 
SELECT datepart(dw,@Date) 
--Result 3

SET DATEFIRST 3 ; 
SELECT datepart(dw,@Date) 
--Result 2

SET DATEFIRST 4 ; 
SELECT datepart(dw,@Date) 
--Result 1

SET DATEFIRST 5 ; 
SELECT datepart(dw,@Date) 
--Result 7

SET DATEFIRST 6 ; 
SELECT datepart(dw,@Date) 
--Result 6

SET DATEFIRST 7 ; 
SELECT datepart(dw,@Date) 
--Result 5

SET DATEFIRST (Transact-SQL)

SET DATEFORMAT

SET LANGUAGE (Transact-SQL)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46218861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档