我在SSRS中创建了一个包含多个数据源的报告。SSRS - 忽略数据库不存在
在极少数情况下,其中一个数据源可能已被分离。最近发生了这种情况,因为SSAS数据库暂时分离在开发服务器上以释放大量工作的内存。 (rsErrorExecutingCommand) 用户'UserName'不能访问'DBName'数据库,或者数据库不存在
是否有修改数据集或数据源中的查询,以便如果查询失败(因为数据库已关闭/分离),它仍然运行其他所有数据,但可能在报告中显示错误。
[编辑]
从布舍尔援助 - 这就是我最终使用:
1)在SQL Server上(应该始终是向上) - 我创建了一个链接服务器的SSAS实例
2)改变我的SSRS数据源指向SQL Server而不是SSAS实例
3)使用此查询(请参阅下文)检查SSAS链接的服务器是否启动 - 我无法使用SSAS进行测试,但它确实有效! (如果有人读这是用同样的方法,你只需要更换我的“SELECT DISTINCT ...等”用自己的查询)
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
感谢布舍尔指着我在正确的方向。
您可以在存储过程中构建数据集,然后使用Try/Catch语句从可能分离的数据库中提取数据。如果尝试失败,只需返回任何数据,或只是列标题。 – bushell