7

我以为 SQL Azure 是建立在 SQL Server 2012 之上的,但是新建数据库时的兼容级别是 100(SQL Server 2008 的兼容级别),而不是 110。

SELECT compatibility_level FROM sys.databases WHERE name = 'Test';

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

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

EXEC sp_dbcmptlevel 'Test', 110;
--> Could not find stored procedure 'sp_dbcmptlevel'.

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

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

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

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

4

2 回答 2

2

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

更新引擎版本:此版本将基础 SQL Azure 数据库引擎版本从 11.0.1477.26 更新到 11.0.1750.34,因为它在数据中心推出。

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

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

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

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

于 2012-05-21T03:05:23.490 回答
2

更新:2015 年 8 月 Azure Sql Database V12 的默认兼容性级别为 120,使用 ALTER DATABASE SET COMPATIBILITY_LEVEL 语法可能会上升到 130 或下降。

于 2015-08-28T15:59:08.753 回答