为什么SQL Server 2008中的工作在兼容模式下80数据库新的T-SQL?
-
26-09-2019 - |
题
与T-SQL的新特性做实验,我碰到的一个难题。下面是2008年SQL支持一些新的语法,我会期待它工作在兼容模式100(即2008年),而不是工作设置兼容模式80(即2000年)的数据库。然而,这个作品对于SQL Server 2000兼容模式下数据库上一套标准版的SQL 2008实例:
use MDS -- this db is compat mode 80
go
CREATE TABLE dbo.Employees
(
Name VARCHAR(50) NULL,
Email VARCHAR(50) NULL,
Salary money NULL
)
INSERT INTO dbo.Employees(Name, Email, Salary)
VALUES('Scott', 'scott@example.com', 50000.00),
('Jisun', 'jisun@example.com', 225000.00),
('Alice', 'al@example.com', 75000.00),
('Sam', 'sam@example.com', 45000.00)
SELECT * FROM dbo.Employees
drop table dbo.Employees
解决方案
在兼容模式设置用于控制发动机databae行为的某些相对模糊(IMHO)方面。它不会阻止或防止利用扩展的T-SQL语言的从从以前的版本迁移的数据库使用 - 例如,数据库从SQL 2000备份和恢复2008年的SQL支持热膨胀系数和新的多值INSERT语句。
什么是数据库兼容模式控制的实际细节都埋在联机丛书几篇文章; 此是一个很好的起点为研究此。
其他提示
我注意到了这一点过了,发现 MSDN上这样的说法:
设定某些数据库行为是 与指定的版本兼容 的SQL Server。
在兼容模式影响“某些”的行为,而不是所有的行为。请参阅 ALTER DATABASE文档获取详细信息。
我不明白这是如何在兼容模式80.尝试加入这一行的工作在你创建表之前:
sp_dbcmptlevel 'MDS'
是否返回80?
不隶属于 StackOverflow