我刚刚安装了sql server2008SQL server2008 r2并选择了安装向后兼容性的选项(添加删除程序显示安装了向后兼容性),然后我运行我的sql脚本来升级旧的数据库,但它抛出了异常,如“查询使用非ANSI外部连接”(确切错误请参见图片)。(SQL profiler说: SQLDMO_1抛出错误)。
但是当我显式地安装SQLServer向后兼容性(从站点下载的SQLServer2005_BC.msi)并进行相同的升级时,它成功地工作了。
我不知道为什么会这样?
我比较了两种SQLDMO.DLLs (Sql servere安装版和SQL server安装版),但两者似乎都很好。有没有人收到类似的问题或建议?
更新:不,这不是与安装向后兼容性有关的问题。最近,同样的错误发生了,我以为可以通过安装bakward兼容的msi来解决它,但它没有解决。
因此,原因仍然悬而未决。
发布于 2011-07-27 20:19:38
SQL Server 2008+不支持旧式的ANSI89连接,即*=
或=*
。在升级到SQL Server 2008或更高版本之前,需要将这些连接替换为左连接和右连接。任何包含这些内容的代码在编译时都会引发错误。
SQL Server2005是支持旧式联接的最高版本。
兼容模式80/90/100主要用于遗留数据库使用新关键字时。这将导致语法错误,通过降低兼容模式从解析器中删除新的功能/保留关键字,从而有时间将它们从数据库中删除。
发布于 2011-07-11 00:13:06
我不认为您得到的错误与向后兼容性组件有任何关系;当您正在运行查询的数据库设置为兼容模式80vs 90或100时,这听起来更像是一个问题,正如错误所暗示的那样,运行的查询将在设置为80而不是90或100的情况下运行;如果您重新安装了sql,则所有数据库都将设置为100;如果您进行了升级,则它们将保留为旧版本,如果是从SQL 2000升级的,则为80。
https://stackoverflow.com/questions/6634045
复制相似问题