在 SSIS 中获取最后一个多维数据集处理日期
Get last cube processed date in SSIS
我需要在 SSIS 中获取 SSAS 多维数据集的最后处理日期并将其保存到变量中。
我试过 "Execute SQL task":
SELECT LAST_DATA_UPDATE as LAST_DT FROM $system.mdschema_cubes
WHERE CUBE_NAME = 'CubeName'
它在 MSSQL 管理工作室 MDX 查询中工作正常 window 但在 SSIS 中它说:结果集绑定上不支持的数据类型。
然后我试过了:
WITH MEMBER [Measures].[LastProcessed] AS ASSP.GetCubeLastProcessedDate() SELECT [Measures].[LastProcessed] ON 0 FROM [CubeName]
它说'[ASSP].[GetCubeLastProcessedDate]'函数不存在。
有什么办法吗?
谢谢
链接服务器可能是您的最佳选择;
使用以下内容创建链接服务器,并根据需要进行更改:
EXEC master.dbo.sp_addlinkedserver
@server = N'LINKED_SERVER_OLAP_TEST', --Change to a suitable name
@srvproduct='', --Creates the productname as blank
@provider=N'MSOLAP', --Analysis Services
@datasrc=N'localhost', --Change to your datasource
@catalog=N'TESTCUBE' --Change to set the default cube
更改执行 SQL 任务的数据源以确保它指向托管链接服务器的任何数据库,即不要使用分析服务数据源使用标准 OLE DB。然后在执行 SQL 任务中执行以下内容(根据需要更改)。
SELECT *
FROM OpenQuery(LINKED_SERVER_OLAP_TEST,'SELECT LAST_DATA_UPDATE as LAST_DT FROM $system.mdschema_cubes
WHERE CUBE_NAME = ''CUBENAME''')
设置变量为DATETIME,结果集为单行。
可能还有其他方法可以做到这一点,但我一直认为这种方法最直接。
我需要在 SSIS 中获取 SSAS 多维数据集的最后处理日期并将其保存到变量中。
我试过 "Execute SQL task":
SELECT LAST_DATA_UPDATE as LAST_DT FROM $system.mdschema_cubes
WHERE CUBE_NAME = 'CubeName'
它在 MSSQL 管理工作室 MDX 查询中工作正常 window 但在 SSIS 中它说:结果集绑定上不支持的数据类型。
然后我试过了:
WITH MEMBER [Measures].[LastProcessed] AS ASSP.GetCubeLastProcessedDate() SELECT [Measures].[LastProcessed] ON 0 FROM [CubeName]
它说'[ASSP].[GetCubeLastProcessedDate]'函数不存在。
有什么办法吗? 谢谢
链接服务器可能是您的最佳选择;
使用以下内容创建链接服务器,并根据需要进行更改:
EXEC master.dbo.sp_addlinkedserver
@server = N'LINKED_SERVER_OLAP_TEST', --Change to a suitable name
@srvproduct='', --Creates the productname as blank
@provider=N'MSOLAP', --Analysis Services
@datasrc=N'localhost', --Change to your datasource
@catalog=N'TESTCUBE' --Change to set the default cube
更改执行 SQL 任务的数据源以确保它指向托管链接服务器的任何数据库,即不要使用分析服务数据源使用标准 OLE DB。然后在执行 SQL 任务中执行以下内容(根据需要更改)。
SELECT *
FROM OpenQuery(LINKED_SERVER_OLAP_TEST,'SELECT LAST_DATA_UPDATE as LAST_DT FROM $system.mdschema_cubes
WHERE CUBE_NAME = ''CUBENAME''')
设置变量为DATETIME,结果集为单行。
可能还有其他方法可以做到这一点,但我一直认为这种方法最直接。