我有一个包含多个参数的SSRS(SQL Server 2008 R2)报告。我遇到一个问题,其中一个参数在首次加载报表时没有始终如一地选择其默认值。
具体来说,它在BIDS中工作正常,但是一旦部署到IIS并在IE中查看,它就会间歇性地工作(在一台服务器上工作,但不能在另一台服务器上工作)。间歇性地,我的意思是它在我部署它的服务器上工作,但当我将RDS文件复制到另一台服务器时,我的参数的默认行为被破坏了。
详情
该参数具有一系列在“可用值”部分中指定的指定(常量)整数值,这些值表示一系列固定报告周期。默认值具有单个指定值,该值与其中一个可用值匹配。
选项:数据类型为整数,无空值,无多个值,参数可见,自动确定何时刷新。
为什么我会看到这种行为?
答案 0 :(得分:28)
确实如此,一旦将报告部署到服务器,则参数将在服务器级别进行控制 但是,一旦要注意的是,如果您重新部署报告并更改默认值,则不会在服务器上更改它们!必须删除并部署报告才能使新默认值生效 如果您不想删除报告,请在报告服务器上手动更改默认值。
答案 1 :(得分:11)
我发现了自己对这个问题的回答。我在这里详细介绍了SSRS可能会被相同行为混淆的其他任何人。可以与RDL文件分开管理参数,并且可以在将报告部署到服务器后覆盖默认值。要管理服务器上的参数:
答案 2 :(得分:2)
无需删除报告的另一个解决方案(删除报告时的问题是日志也被删除)是使用ReportBuilder(Modifier dansleGénérateurderapports)打开新部署的报告。
只需保存报告,默认值就会更改。
答案 3 :(得分:0)
假设您的报告名称为xyz.rdl 如果您已设置默认参数并立即将其部署到服务器,则它不会在服务器上更改。 我建议3个选项 1.更改参数'默认'通过右键单击报告上的管理,在服务器上显示值 2.删除服务器上的报告并重新部署 3.部署具有相同名称的虚拟报告或旧版本报告,例如' xyz.rdl'没有这个参数,执行此操作将删除服务器上的报告参数,报告保持不变。然后使用默认参数部署新版本报告,现在应该可以正常工作。
答案 4 :(得分:0)
我有类似的问题。当报表已部署到服务器“无”默认值,并且您随后在Visual Studio中修改此报表并更改相同参数以具有默认值时,服务器将不会拾取修改报表现在具有默认值。
我解决这个难题的方法是创建一个虚拟参数并将其放在列表的顶部。然后,我使用新的伪参数重新部署报告,并使用默认参数重新部署相同的修改参数。这次服务器选择了我感兴趣的参数作为默认值。然后我继续在visual studio中删除虚拟参数并重新部署报告。我感兴趣的参数仍然是默认值。
如果我走了那条路,为了解决我的困境,我阻止删除报告并添加订阅。
答案 5 :(得分:0)
正确处理所有各种场景需要一些工作,但 (至少从Sql Server 2012开始)可以通过加载.rdl文件来更新脚本中的参数作为xml文件,并将其与ReportingService2010.GetItemParameters
的SSRS management web service方法中提供的各种设置进行比较根据该比较,您可以使用ReportingService2010.SetItemParameters方法更新SSRS服务器上的参数。
最后,还有一个连接问题" Report parameter defaults not updated during deployment"在范围上有一点限制,只允许自动更新参数默认值。
答案 6 :(得分:0)
我注意到,这仅是在更新静态参数值(Value "1"
)时出现的问题。 表达式参数值似乎很容易更新(Value "=iif(1=1, 1, 0)"
。下面的截图示例。
我建议使用一个表达式。或者,如果它是静态值,则在管理器页面中键入。例如:
// ssrsdev / Reports / manage / catalogitem / parameters / Accounts%20应收款/账单%20of%20Lading%20比较
此外,我通常使用ReportServerTools powershell cmdlet部署报告,因此我不知道它们的部署是否可以通过更新参数更好地完成工作。因此,您可以尝试使用该工具而不是从Visual Studio进行安装和部署。
Write-RsRestCatalogItem
#------------------------------------------------------
# --1,FILES: Add
# Upload file from disk to server
#------------------------------------------------------
## TARGET FOLDER
$rsFolder= "/Accounts Receivables" #Datasets #Cost
$rsReportPortalUri= "http://ssrsname/Reports/"
$locDir= "C:\MyPath\Solution\Report Project\"
Get-variable rsReportPortalUri; Get-variable rsFolder; get-variable locDir
## SOURCE ITEM
$rsItem= "Bill of Lading Comparison.rdl"
$locPath= $locDir + $rsItem
Get-variable locPath
## Write-RsRestCatalogItem (1)
Write-RsRestCatalogItem -Path $locPath -RsFolder $rsFolder -ReportPortalUri $rsReportPortalUri -RestApiVersion "v1.0" -Overwrite "true" -verbose
参数-“静态”与“表达式”