Is there any difference between SQL Server r2 backward compatibility msi VS downloaded sql server 2005 backward compatibility msi?
I freshly installed sql server 2008 r2 with selected option to install backward compatibility (add remove programs shows backward compatibility is installed) Then I run my sql script to upgrade the old database but it thrown exception like "The query uses non A开发者_如何学CNSI outer join" (see image for exact error). (SQL profiler said: SQLDMO_1 throwing the error).
But when I installed SQLServer backward compatibility (SQLServer2005_BC.msi downloaded from site) explicitly and did the same upgradation, its worked successfully.
I don't know why its happening?
I compared both SQLDMO.DLLs (Sql servere installation one and SQL server one), but both seems fine. Did any one get same kind issue or any suggestion?
UPDATE: No it was not an issue related to install backward compatibility. Recently same error occurred and I thought it would be solved by installing the bakward compatible msi but it does not solved.
So still the reason is in suspense.
SQL Server 2008+ doesn't support the old style ANSI 89 joins, ie *=
or =*
. These will need to be replaced with left and right outer joins before upgrading to SQL Server 2008 or higher. Any code which contains these can't be compiled without an error being raised.
SQL Server 2005 is the highest version which supports the old style joins.
The compatibility modes 80/90/100 are mainly for when a new keyword are used by a legacy database. This will cause a syntax error, by lowering the compatibility mode removes the new functionality/reserved keywords from the parser which allows time to remove them from the database.
I don't think the error you're getting has anything to do with the Backward Compatibility components; it sounds more like a problem when a database you are running queries against is set for compatibility mode of 80 vs 90 or 100, as the error implies, a query running will work if it set to 80, but not 90 or 100; if you did a fresh install of sql, all the databases will be set to 100; if you did an upgrade, they would remain at the older version, 80 if it was upgraded from SQL 2000.
精彩评论