gpt4 book ai didi

sql - SSRS - 如果数据库不存在则忽略

转载 作者:搜寻专家 更新时间:2023-10-30 22:30:11 24 4
gpt4 key购买 nike

我有一个在 SSRS 中创建的报告,其中有许多数据源。

在极少数情况下,其中一个数据源可能已分离。这是最近发生的,因为 SSAS 数据库在开发服务器上暂时分离,以便为大型作业释放内存。

发生这种情况时,整个报表拒绝运行,抛出错误“数据集‘DatasetName’的查询执行失败(rsErrorExecutingCommand)用户“UserName”无权访问“DBName”数据库,或者该数据库不存在。

是否有修改数据集或数据源中的查询的方法,以便如果查询失败(因为数据库已关闭/分离)它仍然可以运行其他所有内容,但可能会在报告中显示错误.

[编辑]

在 Bushell 的帮助下——这就是我最终使用的:

1) 在 SQL Server 上(它应该始终处于运行状态)- 我创建了一个指向 SSAS 实例的链接服务器

2) 将我在 SSRS 中的数据源更改为指向 SQL Server 而不是 SSAS 实例

3) 使用此查询(见下文)检查 SSAS 链接服务器是否已启动 - 我无法在 SSAS 关闭时进行测试,但它在启动时确实有效!(如果任何阅读本文的人使用相同的方法,您只需要用您自己的查询替换我的“Select Distinct ... etc.”)

BEGIN TRY
EXEC sp_testlinkedserver N'SSAS_LinkedServer';

EXEC sp_executesql N'SELECT * FROM OPENQUERY(SSAS_LinkedServer,
''SELECT
DISTINCT
[CATALOG_NAME] as [Database],
[CUBE_NAME],
DIMENSION_CAPTION AS [Dimension],
DIMENSION_CARDINALITY AS [Count]
FROM $system.MDSchema_Dimensions
ORDER BY DIMENSION_CARDINALITY DESC;'');';
END TRY

BEGIN CATCH
SELECT
'' as [Database],
'' as [CUBE_NAME],
'' AS [Dimension],
'' AS [Count]
END CATCH

感谢 Bushell 为我指明了正确的方向。

最佳答案

我会将您的数据集移动到可调用的存储过程中,然后使用 TRY/CATCH block 来确定选择是否正确运行。在出现错误的情况下,只返回列标题而不返回行。

BEGIN TRY
SELECT * FROM dbo.DetachedDB
END TRY

BEGIN CATCH
SELECT '' as [Column1], '' as [Column2]; etc....
END CATCH;

然后在您的 SSRS 报告中,如果数据集的行数为零,则切换表格的可见性,并显示一条错误消息,该错误消息可以设置为显示。

关于sql - SSRS - 如果数据库不存在则忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45355727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com