Понимание уровня совместимости в SQL Server
Я понял, что установка базы данных на уровень 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
но эта таблица создает совершенно-любые идеи? Я бы подумал, что какое-то сообщение об ошибке или предупреждение было бы уместно
3 ответов
вы можете прочитать о различиях между уровнем совместимости 80, 90 и 100. изменить уровень совместимости базы данных
по-видимому, новые типы данных не затрагиваются. Я думаю, что уровень совместимости должен заставить SQL Server "вести себя" как более старая версия, а не мешать вам делать новые причудливые вещи.
бол говорит:
уровень совместимости обеспечивает только частичная обратная совместимость с более ранние версии SQL Server.
также:
новая функция может работать под старые уровни совместимости, но параметры могут потребовать корректировки.
Я считаю, что это ваш случай.
Я понимаю, что это старый пост, но для тех, кто заканчивается здесь, как и я, больше информации всегда полезно.
возможно также, что новая совместимость не вступила в силу до запуска инструкции create table.
" новый параметр совместимости для базы данных вступает в силу, когда база данных USE выдается или Новый логин обрабатывается с этой базой данных по умолчанию база данных." (https://msdn.microsoft.com/en-us/library/bb510680.aspx)