![](/img/trans.png)
[英]Can SQL Server 2012 Express coexist with SQL Server 2008 Express
[英]Moving from SQL Server 2008 to SQL Server 2012 Express
我正在将一个应用程序从SQL Server 2008迁移到SQL Server 2012 Express,一切都很好,但是几个存储过程说我有语法错误。 我在网上查看并没有找到答案-SQL Server 2008(标准版)中是否支持某些语法类型,但SQL Server 2012 Express中不支持?
我猜有一种可能,如果在2008年您使用的是2000兼容模式,并且您的存储过程具有旧式的外部联接:
SELECT o.name, c.name
FROM sys.objects AS o, sys.columns AS c
WHERE o.[object_id] *= c.[object_id];
此语法在SQL Server 2000中有效,但此后不推荐使用。 在2005、2008和2008 R2中,如果使用80兼容模式,您可以试一下。 从SQL Server 2012开始,您将无法再使用80兼容模式,因此上述代码将因以下原因而失败:
Msg 102,第15级,状态1,第3行
'* ='附近的语法不正确。
在2008年,您将收到以下错误消息:
Msg 4147,第15级,状态1,第3行
该查询使用非ANSI外部联接运算符("*=" or "=*"
)。 要不加修改地运行此查询,请使用ALTER DATABASE的SET COMPATIBILITY_LEVEL选项将当前数据库的兼容性级别设置为80。 强烈建议使用ANSI外部联接运算符(LEFT OUTER JOIN,RIGHT OUTER JOIN)重写查询。 在SQL Server的将来版本中,即使在向后兼容模式下也将不支持非ANSI连接运算符。
但是,如果您按照错误消息中的建议更改数据库,则它将起作用:
ALTER DATABASE foo SET COMPATIBILITY_LEVEL = 80;
这似乎是一个拉伸。 但是没有一些真实的信息,这是我唯一的猜测。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.