SQL Azure兼容级别

use*_*823 7 sql-server-2012 azure-sql-database

我认为SQL Azure是在SQL Server 2012之上构建的,但是在创建新数据库时的兼容性级别是100(SQL Server 2008的兼容级别),而不是110.

SELECT compatibility_level FROM sys.databases WHERE name = 'Test';
Run Code Online (Sandbox Code Playgroud)

我尝试使用我所知道的两种方法将其更改为110:

ALTER DATABASE Test SET COMPATIBILITY_LEVEL = 110;
--> Incorrect syntax near 'SET'.

EXEC sp_dbcmptlevel 'Test', 110;
--> Could not find stored procedure 'sp_dbcmptlevel'.
Run Code Online (Sandbox Code Playgroud)

这对我来说是个问题的原因是因为SQL 2008不支持跨越半球的地理形状,因此如果缩小地图以查看世界并尝试存储地图的边界,它将失败.很傻吧?

我认为这不会是SQL Azure中的问题,因为它已在SQL Server 2012中修复,但是当我尝试创建跨越半球的形状时,我收到以下错误:

Microsoft.SqlServer.Types.GLArgumentException:24205:指定的输入不代表有效的地理实例,因为它超过了单个半球.每个地理实例必须适合单个半球.此错误的常见原因是多边形具有错误的环方向.要创建大于半球的地理实例,请升级SQL Server的版本并将数据库兼容级别更改为至少110.

所以它告诉我改变兼容性级别,就像它知道这已经修复了,但我无法弄清楚如何在SQL Azure中做到这一点.有人建议尝试一下吗?或者让我知道它现在是否可能?

Avk*_*han 2

很难说当前的 SQL Azure 是基于 SQL Server 2008 还是 2012,但是 2011 年 11 月的更新在 SQL Server 2008 和 2012 中添加了许多新功能。有关数据库引擎版本的更多信息:

更新的引擎版本:随着跨数据中心的推出,此版本将底层 SQL Azure 数据库引擎版本从 11.0.1477.26 更新到 11.0.1750.34。

以下链接讨论了 SQL Azure 与 SQL Server 2008 和 SQL Server 2008 R2 相比支持和不支持的内容:

http://msdn.microsoft.com/en-us/library/windowsazure/ff394115

以下链接添加了有关 SQL Server 2012 中 SQL Azure 中添加的新可编程性增强功能的更多信息:

http://msdn.microsoft.com/en-us/library/windowsazure/hh987034.aspx