我已经将CQM模型转换为DQM而没有错误,但是当我打开一些(2/10)报告时 - 他们给了我一个错误。 错误:" XQE-PLN-0131无法生成SQL,因为在子查询中找到循环引用" 我无法弄清楚当模型转换为DQM时为什么子查询将被循环引用。
我正在尝试运行每个查询并查看错误发生但仍无法找到它。
答案 0 :(得分:0)
在从CQM转换为DQM调度程序时尝试解决sql错误是一件混乱的事情。
如果报告很小,请直接从新模型重新创建,并沿途进行测试。
如果报告很大,找到错误可能非常耗时。
我建议,
首先,在您的框架模型中,确保数据库层查询数据源中的主题名称与表名称的名称不完全相同。我只是在他们名字的末尾添加了一个下划线'_'。
这可能会解决您的循环参考问题。
总是会有一些报告仍然失败。我建议你按照趋势建立一个辅助调度员。让您的主要调度员为DQM,但设置CQM调度员。我在同一台服务器上做了这个没有任何问题。
虽然DQM服务器将激活所有服务,但CQM应仅在Cognos Configuration-> Environment-> IBM Cognos Services中将以下设置为True:
代理服务 批量报告服务 送货服务 调度员服务 工作服务 监控服务 查询服务 报告数据服务 报告服务 关系元数据服务
所有剩余服务都应设置为'False'。
在环境设置中,请确保外部应用程序的External Dispatcher URI,Internal Dispatcher URI和Dispatcher URI具有与DQM安装不同的端口号。对我来说,DQM是默认的9300,而CQM使用的是9301。
您的CQM可以指向同一个通知商店,HTAS商店作为您的DQM。
在Cognos Gateway上,不要将CQM调度程序添加到Gateway的Dispatcher URI列表中。这会导致请求在DQM忙碌时随时转到CQM调度程序,这会导致许多请求失败。请求将使用路由规则路由到CQM。
在“调度程序和服务”下的Congnos配置中,为您的DQM和CQM调度程序分别提供不同的“服务器组”名称。
编辑包上的属性,选中“高级路由”,然后编辑路由集。您可以在此处定义新的路由集。您可以将您的软件包发布两次,一次作为DQM软件包,再次作为CQM软件包(不同的名称,即将_CQM添加到名称中)。对于DQM,添加“DQM报告”的“类型路由集”。对于CQM,添加“CQM报告”的“类型路由集”。
接下来,回到Cognos Administration。
来自“调度员和服务” - > “指定路由规则”(顶部的图标) 设置将DQM报告发送到DQM Dispatchers Server Group的包路由规则。设置将CQM报告发送到CQM Dispatchers Server Group的路由规则。然后设置一个路由规则,将任何包发送到底部的DQM Dispatchers Group作为Catch-All。
现在您可以进入报告,将它们指向DQM包。如果他们工作,请将他们留在那里。如果没有,请将它们指向CQM包,并将它们添加到列表中。
现在,您可以使所有报告正常工作,将报告转换为DQM不会阻碍您的迁移项目。现在浏览一下CQM包列表,一次使用DQM包重新创建它们。
如果您这样做,并确保所有新报告都是DQM,最终您将完成CQM包。当那辉煌的一天到来时,您可以简单地关闭CQM调度员服务,您将获得100%DQM 64位优势。