2010-09-28 1 views
4

Экспериментируя с новыми функциями T-SQL, я столкнулся с загадкой. Вот несколько новых синтаксисов, поддерживаемых SQL 2008, и я ожидаю, что он будет работать с базами данных, установленными для режима совместимости 100 (т. Е. 2008), а не работать для режима совместимости 80 (т. Е. 2000). Тем не менее, это работает для набора базы данных для SQL SERVER режима совместимости с 2000 по экземпляру стандартной версии SQL 2008:Почему новый T-SQL SQL Server 2008 работает с базой данных в режиме совместимости 80?

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', '[email protected]', 50000.00), 
    ('Jisun', '[email protected]', 225000.00), 
    ('Alice', '[email protected]', 75000.00), 
    ('Sam', '[email protected]', 45000.00) 

SELECT * FROM dbo.Employees 
drop table dbo.Employees 

ответ

1

Настройка режима совместимости используется для управления определенными относительно неясных (имхо) аспектов databae поведения двигателя. Он не блокирует и не предотвращает использование расширений на языке T-SQL в базах данных, перенесенных из предыдущих версий - например, база данных, резервная копия SQL 2000 и восстановленная на SQL 2008, будет поддерживать CTE и новый мульти- значение INSERT.

Фактические детали того, что находится под контролем режима совместимости базы захоронены в нескольких статьях в Books Online; this является хорошим отправным местом для изучения этого.

0

Я не вижу, как это может работать в режиме Compat 80. Попробуйте добавить эту строку, прежде чем создавать ваш стол:

sp_dbcmptlevel 'MDS' 

Он возвращает 80?

+0

Да, это так. Я запускаю сценарий в базе данных с «уровнем совместимости», установленным в «SQL Server 200 (80) на MS SQL Server 2008 R2 –

2

Я заметил это слишком, и нашел this statement on MSDN:

Устанавливает определенное поведение базы данных, чтобы быть совместим с указанной версией в SQL Server.

Режим совместимости влияет на «определенные» поведения, а не на ВСЕ поведение. Подробности см. На странице ALTER DATABASE documentation.