sql - 为什么SQL Server 2008的新T-SQL可以在兼容模式80的数据库上工作?

标签 sql sql-server tsql sql-server-2008 compatibility-mode

在尝试 T-SQL 的新功能时,我遇到了一个难题。这是 SQL 2008 支持的一些新语法,我希望它适用于兼容模式 100(即 2008)设置的数据库,而不适用于兼容模式 80(即 2000)。然而,这适用于标准版 SQL 2008 实例上 SQL SERVER 2000 兼容模式的数据库集:

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

最佳答案

我也注意到了这一点,发现this statement on MSDN :

Sets certain database behaviors to be compatible with the specified version of SQL Server.

兼容性模式影响“某些”行为,而不是所有行为。请参阅ALTER DATABASE documentation了解详情。

关于sql - 为什么SQL Server 2008的新T-SQL可以在兼容模式80的数据库上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3813351/

相关文章:

php - fatal error : Call to a member function bind_param() on a non-object using Update Query

mysql - 按不同列排序

SQL 查询日期范围

sql - 在 SQL Server 中如何合并相似的字符串以用于计数目的

mysql - SQL 错误 1215(HY000) 无法添加外键约束。

sql-server - 如何使用 TSQL 获取数据库中所有表的列表?

sql - 等待操作超时。均价

sql-server - 如何使用 CONTAINSTABLE 中的列名作为搜索条件?

SQL Server 未配置数据访问

sql - 如何将单个列值拆分为多个列值?