据我所知,将数据库设置为COMPATIBILITY_LEVEL先于本机数据库会阻止特性被使用。然而,情况似乎并非如此。看看下面的SQL脚本:
CREATE DATABASE Foo
GO
USE Foo
GO
ALTER DATABASE Foo SET COMPATIBILITY_LEVEL = 80
GO
CREATE TABLE Bar
(
Id UNIQUEIDENTIFIER NOT NULL,
TestNvcMax NVARCHAR (MAX) NOT NULL, -- Arrived in SQL 2005
TestDateTime2 DATETIME2 (7) NOT NULL -- Arrived in SQL 2008
)
GO但是这张桌子创造了完美的--有什么想法吗?我认为某种类型的错误消息或警告应该是合适的。
发布于 2011-04-12 00:26:29
在这里,您可以了解兼容性级别80、90和100之间的差异。ALTER DATABASE Compatibility Level
显然,新的数据类型不受影响。我认为兼容级别是为了让SQL Server像旧版本一样“表现”,而不是阻止你做新的花哨的事情。
发布于 2011-04-12 00:28:03
BOL说:
兼容级别仅提供与早期版本的SQL Server的部分向后兼容性。
另外:
新功能可能在较旧的兼容级别下工作,但设置选项可能需要进行调整。
我相信这就是你的情况。
发布于 2016-07-26 23:20:10
我知道这是一个古老的帖子,但对于像我一样最终来到这里的其他人来说,更多的信息总是有帮助的。
也可能是新的兼容性在运行create table语句之前没有生效。
“数据库的新兼容性设置在发出使用数据库或使用该数据库作为默认数据库处理新登录时生效。”(https://msdn.microsoft.com/en-us/library/bb510680.aspx)
https://stackoverflow.com/questions/5624262
复制相似问题