Поделиться через


Уровень совместимости инструкции ALTER DATABASE (Transact-SQL)

 

Определяет поведение конкретных баз данных для совместимости с указанной версией SQL Server.Полный список параметров инструкции ALTER DATABASE см. в разделе ALTER DATABASE (Transact-SQL).

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Область применения: SQL Server (начиная с SQL Server 2008 до текущей версии), База данных SQL Azure.

Синтаксис

ALTER DATABASE database_name 
SET COMPATIBILITY_LEVEL = { 90 | 100 | 110 | 120 }

Аргументы

  • database_name
    Имя изменяемой базы данных.

  • COMPATIBILITY_LEVEL {80 | 90 | 100 | 110 | 120 }
    Версия SQL Server, с которой необходимо обеспечить совместимость базы данных.Это должно быть одно из следующих значений.

    Значение

    Описание

    Область применения

    80

    SQL Server 2000

    С SQL Server 2008 по SQL Server 2008 R2 включительно

    90

    SQL Server 2005

    С SQL Server 2008 по SQL Server 2012 включительно

    100

    SQL Server 2008 и SQL Server 2008 R2

    С SQL Server 2008 по SQL Server 2014 включительно

    110

    SQL Server 2012

    С SQL Server 2012 по SQL Server 2014 включительно

    120

    SQL Server 2014

    С SQL Server 2014 по SQL Server 2014 включительно

Заметки

Для всех установок SQL Server 2014 предусмотренным по умолчанию уровнем совместимости является 120.Для баз данных, созданных в SQL Server 2014, он устанавливается в это же значение, если для базы данных model не установлен более низкий уровень совместимости.При обновлении базы данных до SQL Server 2014 с более ранней версии SQL Server база данных сохраняет свой существующий уровень совместимости, если его значение не меньше 100.Обновление базы данных с уровнем совместимости 90 приведет к установке уровня совместимости 100.Это относится и к системным, и к пользовательским базам данных.Чтобы изменить уровень совместимости базы данных, используется инструкция ALTER DATABASE.Чтобы просмотреть текущий уровень совместимости базы данных, можно запросить столбец compatibility_level представления каталога sys.databases.

Использование уровня совместимости для обеспечения обратной совместимости

Уровень совместимости влияет на поведение только указанных баз данных, а не всего сервера.Уровень совместимости обеспечивает лишь частичную обратную совместимость с ранними версиями SQL Server.Используйте уровень совместимости в качестве промежуточной меры в процессе устранения проблем, возникших из-за различий в поведении между версиями, которые определяются соответствующей настройкой уровня совместимости.Если на существующие приложения SQL Server оказывают влияние различия поведения SQL Server 2014, настройте приложение для работы должным образом.Затем с помощью инструкции ALTER DATABASE измените значение уровня совместимости на 120.Новая настройка уровня совместимости вступит в силу в следующий раз, когда база данных будет сделана текущей (либо в качестве базы данных по умолчанию для имени входа, либо при указании в инструкции USE).

Рекомендации

Изменение уровня совместимости в то время, когда пользователи подключены к базе данных, может привести к формированию неверных результирующих наборов для активных запросов.Например, если уровень совместимости изменится во время компиляции плана запроса, скомпилированный план может основываться на обоих, старом и новом, уровнях совместимости, что в результате даст неверный план и потенциально неточные результаты.Более того, проблема может стать еще более запутанной, если план будет помещен в кэш планов и повторно использован для последующих запросов.Чтобы запросы не выдавали неверных результатов, рекомендуется воспользоваться следующей процедурой для изменения уровня совместимости базы данных.

  1. Перевести базу данных в однопользовательский режим работы с помощью инструкции ALTER DATABASE SET SINGLE_USER.

  2. Изменить уровень совместимости базы данных.

  3. Перевести базу данных в многопользовательский режим работы с помощью инструкции ALTER DATABASE SET MULTI_USER.

  4. Дополнительные сведения об установлении режимов работы базы данных см. в разделе ALTER DATABASE (Transact-SQL).

Уровни совместимости и хранимые процедуры

При выполнении хранимой процедуры используется текущий уровень совместимости базы данных, в которой она была определена.Когда настройка совместимости базы данных подвергается изменению, все хранимые процедуры этой базы данных автоматически перекомпилируются соответствующим образом.

Различия между уровнем 120 и более низкими уровнями совместимости

В этом разделе описываются новые особенности поведения, обусловленные появлением уровня совместимости 120.

Уровень совместимости 110 и ниже

Установка уровня совместимости 120

Используется старый оптимизатор запросов.

В SQL Server 2014 предусмотрены существенные усовершенствования компонента, предназначенного для создания и оптимизации планов запросов.Эта новая функция оптимизатора запросов зависит от использования уровня совместимости базы данных 120.Новые приложения базы данных необходимо разрабатывать с использованием уровня совместимости базы данных 120, чтобы воспользоваться этими усовершенствованиями.Приложения, перенесенные из предыдущих версий SQL Server, необходимо тщательно тестировать, чтобы убедиться в сохранении или повышении их производительности.Если производительность снизилась, можно задать уровень совместимости базы данных равным 110 или предыдущему значению для использования методологии оптимизатора запросов из прежних версий.

На уровне совместимости базы данных 120 используется новый механизм оценки количества элементов, который настроен для современных рабочих нагрузок, связанных с хранением данных и OLTP.Прежде чем устанавливать уровень совместимости базы данных равным 110 из-за проблем с производительностью, ознакомьтесь с подразделом, посвященным планам запросов, раздела SQL Server 2014Новые возможности (компонент Database Engine).

Если уровни совместимости ниже 120, при преобразовании значения date в строковое параметр языка не учитывается.Обратите внимание, что это поведение специфично только для типа date.Например, следующий запрос не учитывает инструкцию SET LANGUAGE, за исключением выполнения при уровне совместимости 120.

SET DATEFORMAT dmy; 
DECLARE @t2 date = '12/5/2011' ;
SET LANGUAGE dutch; 
SELECT CONVERT(varchar(11), @t2, 106); 
-- Results when the compatibility level is less than 120. 
12 May 2011 
-- Results when the compatibility level is set to 120).
12 mei 2011

Параметр языка не учитывается при преобразовании значения date в строковое.

Рекурсивные ссылки в правой части предложения EXCEPT создают бесконечный цикл.Следующий пример демонстрирует эту ситуацию.

WITH 
cte AS (SELECT * FROM (VALUES (1),(2),(3)) v (a)),
r 
AS (SELECT a FROM Table1
UNION ALL
(SELECT a FROM Table1 EXCEPT SELECT a FROM r) ) 
SELECT a 
FROM r; 

Рекурсивные ссылки в предложении EXCEPT вызывают ошибку в соответствии со стандартом ANSI SQL.

В рекурсивных обобщенных табличных выражениях повторяющиеся имена столбцов разрешены.

В рекурсивных обобщенных табличных выражениях повторяющиеся имена столбцов не разрешены.

Отключенные триггеры активируются при их изменении.

Изменение триггера не меняет состояние триггера (отключен или включен).

Табличное предложение OUTPUT INTO пропускает параметр IDENTITY_INSERT = OFF и позволяет вставлять явные значения.

Нельзя вставить явные значения для столбца идентификаторов в таблице, если параметр IDENTITY_INSERT имеет значение OFF.

Если выбрано частичное включение базы данных, проверка поля $action в предложении OUTPUT инструкции MERGE может вернуть ошибку параметров сортировки.

Параметры сортировки значений, возвращаемых предложением $action инструкции MERGE, — это параметры сортировки базы данных, а не сервера. Ошибка конфликтующих параметров сортировки сервера не возвращается.

Инструкция SELECT INTO всегда создает однопоточную операцию вставки.

Инструкция SELECT INTO может создать параллельную операцию вставки.При вставке большого числа строк параллельная операция может увеличить производительность.

Различия между более низкими уровнями совместимости и уровнями 110 и 120

В этом разделе описываются новые особенности поведения, обусловленные появлением уровня совместимости 110.Этот раздел относится также к уровню 120.

Уровень совместимости 100 и ниже

Установка уровня совместимости, по меньшей мере равного 110

Объекты базы данных среды CLR выполняются в среде CLR версии 4.Однако некоторые из особенностей поведения, изменившиеся в версии 4 среды CLR, не используются.Дополнительные сведения см. в разделе новые возможности в интеграции со средой CLR.

Объекты базы данных среды CLR выполняются в среде CLR версии 4.

Функции XQuery string-length и substring считают каждый суррогатный символ за два символа.

Функции XQuery string-length и substring считают каждый суррогатный символ за один символ.

Оператор PIVOT можно использовать в запросах рекурсивного обобщенного табличного выражения.Однако при наличии нескольких строк в группировании запрос возвращает неверные результаты.

Оператор PIVOT нельзя использовать в запросах рекурсивного обобщенного табличного выражения.Возвращается ошибка.

Алгоритм RC4 поддерживается только в целях обратной совместимости.Когда база данных имеет уровень совместимости 90 или 100, новые материалы могут шифроваться только с помощью алгоритмов RC4 или RC4_128.(Не рекомендуется.)В SQL Server 2012 материалы, зашифрованные с помощью алгоритмов RC4 или RC4_128, могут быть расшифрованы на любом уровне совместимости.

Новые материалы нельзя шифровать с помощью RC4 или RC4_128.Используйте вместо этого более новые алгоритмы, например AES.В SQL Server 2012 материалы, зашифрованные с помощью алгоритмов RC4 или RC4_128, могут быть расшифрованы на любом уровне совместимости.

Используемый по умолчанию стиль для операций CAST и CONVERT над типами данных time и datetime2 — 121, кроме случая, когда любой из этих типов используется в выражении вычисляемого столбца.Для вычисляемых столбцов используемый по умолчанию стиль — 0.Это поведение влияет на вычисляемые столбцы при их создании и использовании в запросах с автоматической параметризацией, а также при использовании в определениях ограничений.

В следующем примере показано различие между стилями 0 и 121.В примере не рассматривается описанное выше поведение.Дополнительные сведения о стилях даты и времени см. в разделе Функции CAST и CONVERT (Transact-SQL).

CREATE TABLE t1 (c1 time(7), c2 datetime2); 
INSERT t1 (c1,c2) VALUES (GETDATE(), GETDATE());
SELECT CONVERT(nvarchar(16),c1,0) AS TimeStyle0
       ,CONVERT(nvarchar(16),c1,121)AS TimeStyle121
       ,CONVERT(nvarchar(32),c2,0) AS Datetime2Style0
       ,CONVERT(nvarchar(32),c2,121)AS Datetime2Style121
FROM t1;
-- Returns values such as the following.
TimeStyle0       TimeStyle121     
Datetime2Style0      Datetime2Style121
---------------- ---------------- 
-------------------- --------------------------
3:15PM           15:15:35.8100000 
Jun  7 2011  3:15PM  2011-06-07 15:15:35.8130000

При уровне совместимости 110 стиль по умолчанию для операций CAST и CONVERT над типами данных time и datetime2 всегда имеет значение 121.Если запрос основан на прежнем поведении, следует использовать уровень совместимости ниже 110, либо явно задать в затрагиваемом запросе стиль 0.

Обновление базы данных до уровня совместимости 110 не приведет к изменению пользовательских данных, сохраненных на диске.Следует исправить эти данных соответствующим образом вручную.Например, если бы вы использовали предложение SELECT INTO для создания таблицы на основе источника, содержащего описанное выше выражение вычисляемого столбца, то сохранялись бы данные (благодаря стилю 0), а не само определение вычисляемого столбца.Потребовалось бы вручную обновлять эти данные в соответствии со стилем 121.

Любые столбцы удаленных таблиц типа smalldatetime, фигурирующих в секционированном представлении, сопоставляются с типом datetime.Соответствующие им столбцы локальных таблиц (столбцы, занимающие те же порядковые позиции в списке выбора) должны иметь тип datetime.

Любые столбцы удаленных таблиц типа smalldatetime, фигурирующих в секционированном представлении, сопоставляются с типом smalldatetime.Соответствующие им столбцы локальных таблиц (столбцы, занимающие те же порядковые позиции в списке выбора) должны иметь тип smalldatetime.

После обновления до уровня совместимости 110 произойдет сбой распределенного секционированного представления из-за несоответствия типа данных.Данную проблему вы можете решить путем изменения типа данных в удаленной таблице на datetime или задав уровень совместимости локальной базы данных равным 100 или ниже.

Функция SOUNDEX реализует следующие правила.

  1. Символы H и W в верхнем регистре игнорируются, если они разделяют 2 согласные, которые имеют одинаковый номер в коде SOUNDEX.

  2. Если первые 2 символа character_expression имеют одинаковый номер в коде SOUNDEX, включаются оба символа.Иначе, если набор последовательных согласных в коде SOUNDEX имеет тот же номер, все они исключаются, кроме первого символа.

Функция SOUNDEX реализует следующие правила.

  1. Если буквы (в верхнем регистре) H или W разделяют две согласные буквы, которые имеют одинаковый номер в коде SOUNDEX, то согласная буква, которая находится справа, игнорируется.

  2. Если набор последовательных согласных имеет тот же номер в коде SOUNDEX, то все они исключаются, кроме первого символа.

Функция SOUNDEX реализует дополнительные правила, при применении которых значения, вычисляемые функцией, могут отличаться от тех значений, которые были вычислены при другом уровне совместимости.После обновления до уровня совместимости 110, возможно, придется перестроить индексы, кучи или ограничения CHECK, в которых используется функция SOUNDEX.Дополнительные сведения см. в разделе SOUNDEX (Transact-SQL).

Различия между уровнями совместимости 90 и 100

В этом разделе описываются новые особенности поведения, обусловленные появлением уровня совместимости 100.

Установка уровня совместимости 90

Установка уровня совместимости 100

Вероятность влияния

Параметр QUOTED_IDENTIFER всегда имеет значение ON для возвращающих табличное значение функций, состоящих из нескольких инструкций, если эти функции созданы без учета параметра сеансового уровня.

Значение параметра сеанса QUOTED IDENTIFIER учитывается при создании возвращающих табличное значение функций, состоящих из нескольких инструкций.

Средний

При создании или изменении функции секционирования литералы datetime и smalldatetime в функции вычисляются на основе предположения, что параметры языка имеют значение US_English.

Текущие параметры языка используются для вычисления литералов datetime и smalldatetime в функции секционирования.

Средний

Предложение FOR BROWSE допускается (и не учитывается) в инструкциях INSERT и SELECT INTO.

Предложение FOR BROWSE не допускается в инструкциях SELECT INTO и INSERT.

Средний

Полнотекстовые предикаты допускаются в предложении OUTPUT.

Полнотекстовые предикаты не допускаются в предложении OUTPUT.

Низкий

Инструкции CREATE FULLTEXT STOPLIST, ALTER FULLTEXT STOPLIST и DROP FULLTEXT STOPLIST не поддерживаются.Системный список стоп-слов автоматически связывается с новыми полнотекстовыми индексами.

Инструкции CREATE FULLTEXT STOPLIST, ALTER FULLTEXT STOPLIST и DROP FULLTEXT STOPLIST поддерживаются.

Низкий

MERGE не рассматривается как зарезервированное ключевое слово.

MERGE является полностью зарезервированным ключевым словом.Инструкция MERGE поддерживается на обоих уровнях совместимости, 100 и 90.

Низкий

При использовании аргумента <dml_table_source> в инструкции INSERT возникает синтаксическая ошибка.

Можно собрать результаты предложения OUTPUT во вложенных инструкциях INSERT, UPDATE, DELETE или MERGE и вставить эти результаты в целевую таблицу или представление.Это выполняется с помощью аргумента <dml_table_source> инструкции INSERT.

Низкий

Если не указано предложение NOINDEX, инструкции DBCC CHECKDB и DBCC CHECKTABLE выполняют проверку физической и логической согласованности для одной таблицы или индексированного представления, а также для всех некластеризованных индексов и XML-индексов.Пространственные индексы не поддерживаются.

Если не указано предложение NOINDEX, инструкции DBCC CHECKDB и DBCC CHECKTABLE выполняют проверку физической и логической согласованности для одной таблицы и всех ее некластеризованных индексов.Однако в XML-индексах, пространственных индексах и индексированных представлениях по умолчанию выполняются только проверки физической согласованности.

Если указан параметр WITH EXTENDED_LOGICAL_CHECKS, выполняются логические проверки в индексированных представлениях, XML-индексах и пространственных индексах (при их наличии).По умолчанию проверки физической согласованности выполняются раньше, чем проверки логической согласованности.Если также указан параметр NOINDEX, выполняются только проверки логической согласованности.

Низкий

Если предложение OUTPUT используется в инструкции DML и при выполнении инструкции возникает ошибка времени выполнения, то завершается вся транзакция и происходит откат.

Если предложение OUTPUT используется в инструкции DML и при выполнении инструкции возникает ошибка времени выполнения, дальнейшие поведение системы зависит от параметра SET XACT_ABORT.Если параметр SET XACT_ABORT имеет значение OFF, то аварийное прекращение выполнения инструкции из-за ошибки, возникшей при выполнении инструкции DML, в которой используется предложение OUTPUT, приводит к завершению инструкции, но выполнение пакета продолжается и откат транзакции не происходит.Если параметр SET XACT_ABORT имеет значение ON, то при возникновении любых ошибок времени выполнения, вызванных инструкцией DML, в которой используется предложение OUTPUT, происходит завершение пакета и в транзакции происходит откат.

Низкий

CUBE и ROLLUP не рассматриваются как зарезервированные ключевые слова.

CUBE и ROLLUP являются зарезервированными ключевыми словами в предложении GROUP BY.

Низкий

К элементам типа XML anyType применяется строгая проверка.

К элементам типа XML anyType применяется нестрогая проверка.Дополнительные сведения см. в разделе Компоненты-шаблоны и проверка достоверности содержимого.

Низкий

К специальным атрибутам xsi:nil и xsi:type нельзя выполнять запросы или вносить в них изменения с помощью инструкций DML.

Это означает, что выражение /e/@xsi:nil оканчивается неудачей, несмотря на то, что в предложении /e/@* атрибуты xsi:nil и xsi:type пропускаются.Однако предложение /e возвращает атрибуты xsi:nil и xsi:type для согласованности с инструкцией SELECT xmlCol, даже если xsi:nil = "false".

Специальные атрибуты xsi:nil и xsi:type хранятся как обычные атрибуты, и к ним можно выполнять запросы и вносить в них изменения.

Например, выполнение запроса SELECT x.query('a/b/@*') возвращает все атрибуты, включая xsi:nil и xsi:type. Чтобы исключить эти типы из запроса, замените предложение @* предложением @*[namespace-uri(.) != "insert xsi namespace uri" and not (local-name(.) = "type" or local-name(.) ="nil".

Низкий

Определяемая пользователем функция, которая преобразует строковое значение константы XML в тип SQL Server datetime, отмечается как детерминированная.

Определяемая пользователем функция, которая преобразует строковое значение константы XML в тип SQL Server datetime, отмечается как недетерминированная.

Низкий

Объединение XML и типы списков поддерживаются не полностью.

Объединение и типы списков поддерживаются полностью, включая следующие функциональные возможности.

  • Объединение списков

  • Объединение объединений

  • Список атомарных типов

  • Список объединений

Низкий

Проверка правильности параметров SET, требуемых для метода xQuery, не выполняется, если метод содержится в представлении или во встроенной возвращающей табличное значение функции.

Проверка правильности параметров SET, требуемых для метода xQuery, выполняется, если метод содержится в представлении или во встроенной возвращающей табличное значение функции.Если параметры SET метода заданы неправильно, возникает ошибка.

Низкий

Значения XML-атрибута, которые содержат символы конца строки (символы возврата каретки и перевода строки), не нормализованы согласно стандарту XML.Таким образом, возвращаются оба символа вместо одного символа перевода строки.

Значения XML-атрибута, которые содержат символы конца строки (символы возврата каретки и перевода строки), нормализованы согласно стандарту XML.Таким образом, все символы конца строки во внешних проанализированных сущностях (включая сущность документа), нормализуются на входе, преобразуя двухсимвольные последовательности #xD #xA и символы #xD, за которыми не следует символ #xA, в единственный символ #xA.

Приложения, в которых используются атрибуты для переноса строковых значений, содержащих символы конца строки, не получают эти символы назад в том виде, в каком они были переданы.Чтобы предотвратить выполнение этого процесса нормализации, используйте числовые сущности-символы XML для кодирования всех символов конца строки.

Низкий

Свойства столбца ROWGUIDCOL и IDENTITY могут быть неправильно именованы как ограничения.Например, инструкция CREATE TABLE T (C1 int CONSTRAINT MyConstraint IDENTITY) выполняется, но имя ограничения не сохраняется и не доступно для пользователя.

Свойства столбца ROWGUIDCOL и IDENTITY не могут быть именованы как ограничения.Возвращается ошибка 156.

Низкий

Обновление столбцов с использованием двухстороннего присваивания, такого как UPDATE T1 SET @v = column_name = <expression>, может привести к получению непредвиденных результатов, поскольку активное значение переменной может использоваться в других предложениях, таких как WHERE и ON, во время выполнения инструкции вместо начального значения в инструкции.Это может стать причиной того, что значения предикатов будут изменяться непредсказуемым образом при переходе от строки к строке.

Такое поведение применимо, только если уровень совместимости равен 90.

Обновление столбцов с использованием двухстороннего присваивания приводит к получению ожидаемых результатов, поскольку во время выполнения инструкции происходит доступ только к начальному значению столбца в инструкции.

Низкий

Присваивание значения переменной допускается в инструкции, содержащей оператор UNION верхнего уровня, но возвращает непредвиденные результаты.Например, в следующих инструкциях локальной переменной @v присваивается значение столбца BusinessEntityID из объединения двух таблиц.Если инструкция SELECT возвращает более одного значения, переменной присваивается последнее возвращенное значение.В этом случае переменной правильно присваивается последнее значение, но происходит также возврат результирующего набора инструкции SELECT UNION.

ALTER DATABASE AdventureWorks2012
SET compatibility_level = 90;
GO
USE AdventureWorks2012;
GO
DECLARE @v int;
SELECT @v = BusinessEntityID FROM HumanResources.Employee
UNION ALL
SELECT @v = BusinessEntityID FROM HumanResources.EmployeeAddress;
SELECT @v;

Присваивание значения переменной не допускается в инструкции, содержащей оператор UNION верхнего уровня.Возвращается ошибка 10734.

Чтобы устранить эту ошибку, перепишите запрос, как показано в следующем примере.

DECLARE @v int;
SELECT @v = BusinessEntityID FROM 
    (SELECT BusinessEntityID FROM HumanResources.Employee
     UNION ALL
     SELECT BusinessEntityID FROM HumanResources.EmployeeAddress) AS Test;
SELECT @v;

Низкий

В функции ODBC {fn CONVERT()} используется применяемый в языке по умолчанию формат даты.Для некоторых языков форматом по умолчанию является «ГДМ», что может привести к ошибкам преобразования, если функция CONVERT() применяется в сочетании с другими функциями, такими как {fn CURDATE()}, которые предполагают использование даты в формате «ГМД».

В функции ODBC {fn CONVERT()} используется стиль 121 (независимый от языка формат «ГМД») при преобразовании в такие типы данных ODBC, как SQL_TIMESTAMP, SQL_DATE, SQL_TIME, SQLDATE, SQL_TYPE_TIME и SQL_TYPE_TIMESTAMP.

Низкий

Функция ODBC {fn CURDATE()} возвращает только даты в формате «ГГГГ-ММ-ДД».

Функция ODBC {fn CURDATE()} возвращает и дату, и время, например «ГГГГ-ММ-ДД ЧЧ:ММ:СС».

Низкий

Для таких встроенных средств работы со значениями даты и времени, как DATEPART, не требуется, чтобы строковые введенные значения были допустимыми литералами даты и времени.Например, компиляция инструкции SELECT DATEPART (year, '2007/05-30') выполняется успешно.

Для таких встроенных средств работы со значениями даты и времени, как DATEPART, необходимо, чтобы строковые введенные значения были допустимыми литералами даты и времени.Возвращается ошибка 241 при использовании недопустимого литерала даты и времени.

Низкий

Зарезервированные слова

Настройка совместимости также определяет ключевые слова, зарезервированные компонентом Компонент Database Engine.В следующей таблице показаны зарезервированные ключевые слова, представленные каждым из уровней совместимости.

Настройка уровня совместимости

Зарезервированные ключевые слова

120

Нет.

110

WITHIN GROUP, TRY_CONVERT, SEMANTICKEYPHRASETABLE, SEMANTICSIMILARITYDETAILSTABLE, SEMANTICSIMILARITYTABLE

100

CUBE, MERGE, ROLLUP

90

EXTERNAL, PIVOT, UNPIVOT, REVERT, TABLESAMPLE

На данном уровне совместимости зарезервированные ключевые слова включают в себя все ключевые слова, представленные на этом уровне или ниже.Таким образом, например, для приложений на уровне 110, все ключевые слова, перечисленные в предыдущей таблице, являются зарезервированными.На более низких уровнях совместимости ключевые слова уровня 100 остаются допустимыми именами объектов, но функции языка уровня 110, соответствующие этим ключевым словам, недоступны.

Будучи однажды представленным, ключевое слово остается зарезервированным.Например, зарезервированное ключевое слово PIVOT, которое было введено на уровне совместимости 90, является также зарезервированным на уровнях 100, 110 и 120.

Если приложение использует идентификатор, зарезервированный в качестве ключевого слова на его уровне совместимости, работа приложения приведет к ошибке.Чтобы обойти эту проблему, заключите идентификатор в квадратные скобки ([]) или кавычки (""); например, чтобы обновить приложение, использующее идентификатор EXTERNAL, до уровня совместимости 90, можно изменить идентификатор до вида [EXTERNAL] или "EXTERNAL".

Дополнительные сведения см. в разделе Зарезервированные ключевые слова (Transact-SQL).

Разрешения

Необходимо разрешение ALTER на базу данных.

Примеры

A.Изменение уровня совместимости

В следующем примере изменяется уровень совместимости базы данных AdventureWorks2012 до 110,SQL Server 2012.

ALTER DATABASE AdventureWorks2012
SET COMPATIBILITY_LEVEL = 110;
GO

См. также

ALTER DATABASE (Transact-SQL)
Зарезервированные ключевые слова (Transact-SQL)
CREATE DATABASE (SQL Server Transact-SQL)
DATABASEPROPERTYEX (Transact-SQL)
sys.databases (Transact-SQL)
sys.database_files (Transact-SQL)