了解SQL Server中的COMPATIBILITY_LEVEL

noo*_*and 9 database sql-server compatibility database-design

我知道在您的本机之前将数据库设置为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
Run Code Online (Sandbox Code Playgroud)

但这张桌子创造了完美 - 任何想法?我本以为某种错误信息或警告是合适的

Mik*_*son 8

在这里,您可以了解兼容级别80,90和100之间的差异.ALTER DATABASE兼容级别

显然,新数据类型不受影响.我认为兼容性水平是为了使SQL Server"表现得像"旧版本,而不是阻止你做新的花哨的东西.


GSe*_*erg 8

BOL说:

兼容级别仅提供与早期版本的SQL Server的部分向后兼容性.

也:

新功能可能在较旧的兼容级别下工作,但SET选项可能需要调整.

我相信这是你的情况.