zor*_*con 0 sql sql-server-2008 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];
Run Code Online (Sandbox Code Playgroud)
此语法适用于SQL Server 2000,但从那时起已被弃用.如果你使用80兼容模式,你可以在2005年,2008年和2008年R2中使用它.从SQL Server 2012开始,您不能再使用80 compat模式,因此上述代码将失败:
消息102,级别15,状态1,行3
'*='附近的语法不正确.
在2008年,您将收到此错误消息:
消息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;
Run Code Online (Sandbox Code Playgroud)
这似乎是一个延伸.但是如果没有一些真实的信息,那就是我唯一的猜测.
| 归档时间: |
|
| 查看次数: |
8768 次 |
| 最近记录: |