Почему новый T-SQL SQL Server 2008 работает с базой данных в режиме совместимости 80?
-
26-09-2019 - |
Вопрос
Экспериментируя с новыми функциями T-SQL, я столкнулся с головоломкой.Вот некоторый новый синтаксис, поддерживаемый SQL 2008, и я бы ожидал, что он будет работать с базами данных, настроенными на режим совместимости 100 (т. Е.2008) и не работает для режима совместимости 80 (т. е.2000).Тем не менее, это работает для базы данных, установленной для режима совместимости SQL SERVER 2000 в экземпляре SQL 2008 Standard edition:
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
Решение
Настройка режима совместимости используется для управления некоторыми относительно неясными (imho) аспектами поведения движка databae.Это не блокирует и не предотвращает использование расширений языка T-SQL в базах данных, перенесенных из предыдущих версий - например, база данных, созданная из SQL 2000 и восстановленная в SQL 2008, будет поддерживать CTE и новые операторы вставки нескольких значений.
Фактические детали того, что контролируется режимом совместимости с базой данных, описаны в нескольких статьях в книгах онлайн; это это хорошая отправная точка для исследования этого вопроса.
Другие советы
Я тоже это заметил, и нашел Это утверждение на MSDN:
Устанавливает определенное поведение базы данных для совместимости с указанной версией SQL Server.
Режим совместимости влияет на «определенные» поведение, а не все поведения. Увидеть ALL DOANABY DOCUSTORY для деталей.
Я не вижу, как это может работать в режиме Compat 80. Попробуйте добавить эту строку перед созданием таблицы:
sp_dbcmptlevel 'MDS'
Это вернет 80?