Hi,
I have noticed some rather strange and rather alarming behaviour during our test migration to XIr2 and was wondering whether anyone had come accross the issue…
Migration using either to upgrading to 6.5 repo or using the all in one upgrade from 6.1b made no difference to the problem, described below.
ODBC or OLEDB connection strings made no difference either.
Using Ansi or Non-Ansi settings also made no difference, results below are using universe parameter ANSI set to ‘Yes’
SQL Server Configuration Details:-
Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: ) Service Pack 3 ODBC Driver 2000.85.1025.00
OLEDB Business Objects XIr2
Check that rather funky Oracle syntax, suprisingly does not work too well with our SQL Server… 8)
SQL Generated when ANSI Parameter set to Yes Incorrectly generated SQL.
SELECT
count(distinct(dbo.MEMBER.ACCT_NUM)),
dbo.GROUPING_TENURE.TENURE_GROUPING_BY_6,
dbo.PROMOTION.PRIMARY_PARTNER,
dbo.CURRENT_PRICE_INDEX.CURRENT_PACKAGE_GROUP
FROM
dbo.MEMBER INNER JOIN dbo.MEMBER_SNAPSHOT ON (dbo.MEMBER.MEMBER_KEY=dbo.MEMBER_SNAPSHOT.MEMBER_KEY)
INNER JOIN dbo.PROMOTION ON (dbo.MEMBER_SNAPSHOT.PROMOTION_KEY=dbo.PROMOTION.PROMOTION_KEY)
INNER JOIN dbo.CURRENT_PRICE_INDEX ON (dbo.MEMBER_SNAPSHOT.CURRENT_PRICE_INDEX_KEY=dbo.CURRENT_PRICE_INDEX.CURRENT_PRICE_INDEX_KEY)
INNER JOIN dbo.GROUPING_TENURE ON (dbo.MEMBER_SNAPSHOT.REG_CYCLE_AGE=dbo.GROUPING_TENURE.TENURE_GROUP_KEY)
WHERE
(
dbo.GROUPING_TENURE.TENURE_GROUPING_BY_6+' '+dbo.PROMOTION.PRIMARY_PARTNER+' '+dbo.CURRENT_PRICE_INDEX.CURRENT_PACKAGE_GROUP IN (SELECT
dbo.GROUPING_TENURE.TENURE_GROUPING_BY_6+' '+dbo.PROMOTION.PRIMARY_PARTNER+' '+dbo.CURRENT_PRICE_INDEX.CURRENT_PACKAGE_GROUP
FROM
dbo.MEMBER_FLAG INNER JOIN dbo.MEMBER_SNAPSHOT ON (dbo.MEMBER_SNAPSHOT.MEMBER_FLAG_KEY=dbo.MEMBER_FLAG.MEMBER_FLAG_KEY)
INNER JOIN dbo.PROMOTION ON (dbo.MEMBER_SNAPSHOT.PROMOTION_KEY=dbo.PROMOTION.PROMOTION_KEY)
INNER JOIN dbo.CURRENT_PRICE_INDEX ON (dbo.MEMBER_SNAPSHOT.CURRENT_PRICE_INDEX_KEY=dbo.CURRENT_PRICE_INDEX.CURRENT_PRICE_INDEX_KEY)
INNER JOIN dbo.GROUPING_TENURE ON (dbo.MEMBER_SNAPSHOT.REG_CYCLE_AGE=dbo.GROUPING_TENURE.TENURE_GROUP_KEY)
WHERE
(
dbo.MEMBER_FLAG.MEMBER_STATUS = 'Active'
)
)
AND dbo.GROUPING_TENURE.TENURE_GROUPING_BY_6+' '+dbo.PROMOTION.PRIMARY_PARTNER+' '+dbo.CURRENT_PRICE_INDEX.CURRENT_PACKAGE_GROUP IN (SELECT
dbo.GROUPING_TENURE.TENURE_GROUPING_BY_6+' '+dbo.PROMOTION.PRIMARY_PARTNER+' '+dbo.CURRENT_PRICE_INDEX.CURRENT_PACKAGE_GROUP FROM
dbo.PROMOTION INNER JOIN dbo.MEMBER_SNAPSHOT ON (dbo.MEMBER_SNAPSHOT.PROMOTION_KEY=dbo.PROMOTION.PROMOTION_KEY)
INNER JOIN dbo.CURRENT_PRICE_INDEX ON (dbo.MEMBER_SNAPSHOT.CURRENT_PRICE_INDEX_KEY=dbo.CURRENT_PRICE_INDEX.CURRENT_PRICE_INDEX_KEY)
INNER JOIN dbo.GROUPING_TENURE ON (dbo.MEMBER_SNAPSHOT.REG_CYCLE_AGE=dbo.GROUPING_TENURE.TENURE_GROUP_KEY)
WHERE
(
CASE WHEN dbo.PROMOTION.CURRENT_BOUNTY_PARTNER = 'CURRENT BNTY PARTNER' THEN dbo.PROMOTION.PRIMARY_PARTNER END = 'Alba plc'
)
)
)
GROUP BY
dbo.GROUPING_TENURE.TENURE_GROUPING_BY_6,
dbo.PROMOTION.PRIMARY_PARTNER,
dbo.CURRENT_PRICE_INDEX.CURRENT_PACKAGE_GROUP
Correct SQL is Generated when ANSI Parameter set to Yes and Member Status and Current Bounty Partner Objects that are conditions in the where clause in the example above are added to Select objects in the query panel.
SELECT
count(distinct(dbo.MEMBER.ACCT_NUM)),
dbo.GROUPING_TENURE.TENURE_GROUPING_BY_6,
dbo.PROMOTION.PRIMARY_PARTNER,
dbo.CURRENT_PRICE_INDEX.CURRENT_PACKAGE_GROUP,
dbo.MEMBER_FLAG.MEMBER_STATUS,
CASE WHEN dbo.PROMOTION.CURRENT_BOUNTY_PARTNER = 'CURRENT BNTY PARTNER' THEN dbo.PROMOTION.PRIMARY_PARTNER END
FROM
dbo.MEMBER INNER JOIN dbo.MEMBER_SNAPSHOT ON (dbo.MEMBER.MEMBER_KEY=dbo.MEMBER_SNAPSHOT.MEMBER_KEY)
INNER JOIN dbo.MEMBER_FLAG ON (dbo.MEMBER_SNAPSHOT.MEMBER_FLAG_KEY=dbo.MEMBER_FLAG.MEMBER_FLAG_KEY)
INNER JOIN dbo.PROMOTION ON (dbo.MEMBER_SNAPSHOT.PROMOTION_KEY=dbo.PROMOTION.PROMOTION_KEY)
INNER JOIN dbo.CURRENT_PRICE_INDEX ON (dbo.MEMBER_SNAPSHOT.CURRENT_PRICE_INDEX_KEY=dbo.CURRENT_PRICE_INDEX.CURRENT_PRICE_INDEX_KEY)
INNER JOIN dbo.GROUPING_TENURE ON (dbo.MEMBER_SNAPSHOT.REG_CYCLE_AGE=dbo.GROUPING_TENURE.TENURE_GROUP_KEY)
WHERE
(
dbo.MEMBER_FLAG.MEMBER_STATUS = 'Active'
AND CASE WHEN dbo.PROMOTION.CURRENT_BOUNTY_PARTNER = 'CURRENT BNTY PARTNER' THEN dbo.PROMOTION.PRIMARY_PARTNER END = 'Alba plc'
)
GROUP BY
dbo.GROUPING_TENURE.TENURE_GROUPING_BY_6,
dbo.PROMOTION.PRIMARY_PARTNER,
dbo.CURRENT_PRICE_INDEX.CURRENT_PACKAGE_GROUP,
dbo.MEMBER_FLAG.MEMBER_STATUS,
CASE WHEN dbo.PROMOTION.CURRENT_BOUNTY_PARTNER = 'CURRENT BNTY PARTNER' THEN dbo.PROMOTION.PRIMARY_PARTNER END
Other Findings During this Exercise :-
OLEDB set up is poor, if the details are not entered correctly, the first time you attempt to set up the connection, you have to start completely from scratch as Designer seems to not recognise that the details have been amended and refuses to connect to the server.
Sometimes when exporting a universe to the CMS, Designer behaves although it is running a query and goes into Analysing phase like when a user is running a query in Desktop Intelligence. This causes a delay in export, although the universe seems to update OK.
Changing / removing universe cardinalities in some cases also resolved the problem with correct SQL being generated.
Creating Deski queries from scratch also produced the incorrect syntax.
Going to check the above still happens with a SQL Server 2005 test box.
This does not seem to be a problem with Oracle based universes
Have passed on the query to Business Objects, will post here how it goes…
Mak 1 (BOB member since 2005-01-06)