Критические изменения в функциях компонента ядра СУБД в SQL Server 2014

В этом разделе описываются критические изменения в ядре СУБД SQL Server 2014 и более ранних версиях SQL Server. Эти изменения могут нарушать работу приложений, скриптов или механизмов, основанных на более ранних версиях SQL Server. При обновлении могут возникнуть следующие проблемы. Дополнительные сведения см. в разделе Use Upgrade Advisor to Prepare for Upgrades.

Критические изменения в SQL Server 2014

Новые версии отсутствуют.

Критические изменения в SQL Server 2012

Transact-SQL

Функция Описание
Выбор в столбцах и таблицах с именем NEXT Последовательности используют функцию ANSI NEXT VALUE FOR стандарта ANSI. Если таблица или столбец называется NEXT и таблица или столбец имеет псевдоним VALUE, а стандарт ANSI AS опущен, результирующий оператор может вызвать ошибку. Чтобы избежать этой проблемы, используйте ключевое слово AS по стандарту ANSI. Например, запрос SELECT NEXT VALUE FROM Table следует переписать в виде SELECT NEXT AS VALUE FROM Table, а запрос SELECT Col1 FROM NEXT VALUE ― в виде SELECT Col1 FROM NEXT AS VALUE.
Оператор PIVOT Оператор PIVOT запрещен в запросах рекурсивного обобщенного табличного выражения (CTE), если уровень совместимости базы данных установлен в значение 110. Перепишите запрос или измените уровень совместимости на 100 или ниже. Использование оператора PIVOT в запросах рекурсивного обобщенного табличного выражения (CTE) приводит к неверным результатам, если на каждое группирование приходится больше одной строки.
sp_setapprole и sp_unsetapprole Параметр OUTPUT куки-файла для sp_setapprole в настоящее время описан в документации как varbinary(8000), что верно определяет его максимальную длину. Однако текущая реализация возвращает varbinary(50). Дальнейшее резервирование varbinary(8000) в приложениях необходимо для обеспечения правильного продолжения работы в случае увеличения размера куки-файлов в последующих выпусках. Дополнительные сведения см. в статье sp_setapprole (Transact-SQL).
EXECUTE AS Параметр OUTPUT куки-файла для инструкции EXECUTE AS в настоящее время описан в документации как varbinary(8000), что верно определяет его максимальную длину. Однако текущая реализация возвращает varbinary(100). Дальнейшее резервирование varbinary(8000) в приложениях необходимо для обеспечения правильного продолжения работы в случае увеличения размера куки-файлов в последующих выпусках. Дополнительные сведения см. в разделе EXECUTE AS (Transact-SQL).
sys.fn_get_audit_file, функция Добавлены два дополнительных столбца (user_defined_event_id и user_defined_information) для поддержки определяемых пользователем событий аудита. Приложения, не выбирающие столбцы по имени, могут возвращать больше столбцов, чем ожидается. Либо выбирайте столбцы по имени, либо доработайте приложение, чтобы оно принимало эти дополнительные столбцы.
Зарезервированное ключевое слово WITHIN WITHIN теперь является зарезервированным ключевым словом. Ссылки на объекты или столбцы с именем «within» работать не будут. Переименуйте объект или столбец либо заключите имя столбца в разграничители с помощью квадратных скобок или кавычек. Например, SELECT * FROM [within].
Операции CAST и CONVERT над вычисляемыми столбцами типа time или datetime2 В более ранних версиях SQL Server для операций timedatetime2 CAST и CONVERT по умолчанию использовался стиль 121, за исключением случаев, когда в выражении вычисляемого столбца используется любой из типов. Для вычисляемых столбцов используемый по умолчанию стиль — 0. Это поведение влияет на вычисляемые столбцы при их создании и использовании в запросах с автоматической параметризацией, а также при использовании в определениях ограничений.

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

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

«сервер.база_данных.схема.таблица»

«.база_данных.схема.таблица»

«..схема.таблица»

В предыдущих версиях при задании формата «сервер.база_данных.схема.таблица» возникала ошибка 4902. Формат «.база_данных.схема.таблица» или «..схема.таблица» обрабатывался успешно. Чтобы устранить эту проблему, используйте четырехкомпонентный префикс.
Просмотр метаданных Запросы к представлению с помощью предложения FOR BROWSE или SET NO_BROWSETABLE ON теперь возвращают метаданные представления, а не метаданные базового объекта. Это поведение теперь такое же, как и у других методов просмотра метаданных.
SOUNDEX При уровне совместимости базы данных 110 функция SOUNDEX реализует новые правила, при применении которых значения, вычисляемые функцией, могут отличаться от тех значений, которые были вычислены при другом уровне совместимости. После обновления до уровня совместимости 110, возможно, придется перестроить индексы, кучи или ограничения CHECK, в которых используется функция SOUNDEX. Дополнительные сведения см. в разделе SOUNDEX (Transact-SQL)
Сообщение о количестве строк для инструкций DML, завершившихся ошибкой В SQL Server 2012 году ядро СУБД будет последовательно отправлять токен TDS DONE с RowCount: 0 клиентам при сбое инструкции DML. В более ранних версиях SQL Server клиенту отправляется неверное значение -1, если инструкция DML, которая завершается сбоем, содержится в блоке TRY-CATCH и либо автоматически определяется ядром СУБД, либо блок TRY-CATCH находится не на том же уровне, что и неудачная инструкция. Например, если блок TRY-CATCH вызывает хранимую процедуру и инструкция DML в процедуре завершается ошибкой, клиент получит ошибочное значение -1.

Приложения, работа которых зависит от этого неверного поведения, будут завершены с ошибками.
SERVERPROPERTY ('Edition') Установленный выпуск продукта экземпляра SQL Server 2012. Используйте значения этого свойства для определения возможностей и ограничений, таких как максимальное количество процессоров, которые поддерживаются установленным продуктом.

В зависимости от установленного выпуска Enterprise это может возвращать "выпуск Enterprise" или "выпуск Enterprise: лицензирование на основе ядер". Выпуски Enterprise различаются в зависимости от максимальной вычислительной мощности по одному экземпляру SQL Server. Дополнительные сведения об ограничениях вычислительной емкости в SQL Server 2012 г. см. в статье Ограничения вычислительной мощности по выпускам SQL Server.
CREATE LOGIN Параметр CREATE LOGIN WITH PASSWORD = 'пароля' HASHED нельзя использовать с хэшами, созданными SQL Server 7 или более ранними версиями.
Для операций CAST и CONVERT datetimeoffset При преобразовании типов даты и времени в datetimeoffset поддерживаются только стили 0 и 1. Все другие стили преобразования возвращают ошибку 9809. Например, следующий код возвращает ошибку 9809.

SELECT CONVERT(date, CAST('7070-11-25 16:25:01.00986 -02:07' as datetimeoffset(5)), 107);

Динамические административные представления

Представление Описание
sys.dm_exec_requests Тип столбца command меняется с nvarchar(16) на nvarchar(32).
sys.dm_os_memory_cache_counters Следующие столбцы были переименованы:

single_pages_kb теперь:
pages_kb

multi_pages_kb
is now: pages_in_use_kb
sys.dm_os_memory_cache_entries Столбец pages_allocated_count был переименован pages_kb.
sys.dm_os_memory_clerks Столбец multi_pages_kb удален.

Столбец single_pages_kb столбец переименован pages_kb.
sys.dm_os_memory_nodes Следующие столбцы были переименованы:

single_pages_kb теперь:
pages_kb

multi_pages_kb теперь:
foreign_committed_kb
sys.dm_os_memory_objects Следующие столбцы были переименованы.

pages_allocated_count теперь:
pages_in_bytes

max_pages_allocated_count теперь: max_pages_in_bytes
sys.dm_os_sys_info Следующие столбцы были переименованы:

physical_memory_in_bytes теперь:
physical_memory_kb

bpool_commit_target теперь:
committed_target_kb

bpool_visible теперь:
visible_target_kb

virtual_memory_in_bytes теперь:
virtual_memory_kb

bpool_commited теперь:
committed_kb
sys.dm_os_workers Столбец локали был удален.

Представления каталога

Представление Описание
sys.data_spaces

sys.partition_schemes

sys.filegroups

sys.partition_functions
В функции sys.data_spaces и sys.partition_functions добавлен новый столбец is_system. (sys.partition_schemes и sys.filegroups наследуют столбцы от sys.data_spaces.)

Значение 1 в этом столбце показывает, что объект используется для фрагментов полнотекстового индекса.

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

Типы данных среды CLR в SQL (geometry, geography и hierarchyid)

Сборка Microsoft.SqlServer.Types.dll, которая содержит пространственные типы данных и тип hierarchyid, обновлена с версии 10.0 до версии 11.0. Пользовательские приложения, ссылающиеся на эту сборку, могут завершаться с ошибками, если выполняются следующие условия.

  • При перемещении пользовательского приложения с компьютера, на котором установлено SQL Server 2008 R2, на компьютер, на котором установлено только SQL Server 2014, приложение завершится сбоем, так как указанная версия 10.0 сборки SqlTypes отсутствует. Может отображаться следующее сообщение об ошибке: "Could not load file or assembly 'Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified."

  • При ссылке на сборку SqlTypes версии 11.0 и также установлена версия 10.0, может появись следующее сообщение об ошибке: "System.InvalidCastException: Unable to cast object of type 'Microsoft.SqlServer.Types.SqlGeometry' to type 'Microsoft.SqlServer.Types.SqlGeometry'."

  • При ссылке на сборку SqlTypes версии 11.0 из пользовательского приложения, предназначенного для .NET 3.5, 4 или 4.5, приложение завершится сбоем, так как SqlClient по умолчанию загружает версию 10.0 сборки. Эта ошибка возникает, когда приложение вызывает один из следующих методов:

    • Метод GetValue класса SqlDataReader.

    • Метод GetValues класса SqlDataReader.

    • индексный оператор квадратных скобок [] из класса SqlDataReader

    • Метод ExecuteScalar класса SqlCommand.

Для разрешения этой проблемы можно воспользоваться одним из следующих методов:

  • Эту проблему можно обойти в коде, вызвав GetSqlBytes метод вместо методов Get, перечисленных выше, для получения SQL Server системных типов СРЕДЫ CLR, как показано в следующем примере:

    string query = "SELECT [SpatialColumn] FROM [SpatialTable]";  
          using (SqlConnection conn = new SqlConnection("..."))  
          {  
                SqlCommand cmd = new SqlCommand(query, conn);  
    
                conn.Open();  
                SqlDataReader reader = cmd.ExecuteReader();  
    
                while (reader.Read())  
                {  
                      // In version 11.0 only  
                      SqlGeometry g =   
    SqlGeometry.Deserialize(reader.GetSqlBytes(0));  
    
                      // In version 10.0 or 11.0  
                      SqlGeometry g2 = new SqlGeometry();  
                      g.Read(new BinaryReader(reader.GetSqlBytes(0).Stream));  
                }  
          }  
    
  • Для разрешения этой проблемы можно воспользоваться перенаправлением сборок в файле конфигурации, как показано в следующем примере.

    <runtime>  
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
        ...  
        <dependentAssembly>  
            <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />  
            <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />  
        </dependentAssembly>  
        ...  
    </assemblyBinding>  
    <runtime>  
    
  • Для разрешения этой проблемы в строке подключения можно указать значение «SQL Server 2012» для атрибута «Type System Version», что обеспечивает в SqlClient принудительную загрузку версии 11.0 сборки. Этот атрибут строки подключения доступен только в платформе .NET 4.5 и выше.

  • Тег assemblyBinding должен быть заключен в тег runtime.

Поддержка AWE

Поддержка 32-разрядных расширений AWE прекращена. Это может приводить к снижению производительности в 32-разрядных операционных системах. Для установок, где используется большой объем памяти, следует выполнить переход на 64-разрядную операционную систему.

В функциях XQuery учитываются суррогаты

Рекомендация W3C для функций и операторов XQuery требует, чтобы суррогатная пара в них, представляющая символ Юникода из старших диапазонов, считалась единым глифом в кодировке UTF-16. Однако в версиях SQL Server до SQL Server 2012 г. строковые функции не распознали суррогатные пары как один символ. Некоторые строковые операции, такие как вычисления длины строки и извлечение подстроки, возвращали неверные результаты. SQL Server 2012 г. теперь полностью поддерживает UTF-16 и правильную обработку суррогатных пар.

Тип данных XML в SQL Server допускает только правильно сформированные суррогатные пары. Однако некоторые функции все еще могут в некоторых обстоятельствах возвращать неопределенные или непредвиденные результаты, поскольку может оказаться, что в функцию XQuery в качестве строковых значений переданы неправильные или неполные суррогатные пары. При использовании XQuery в SQL Server рассмотрим следующие методы создания строковых значений:

  • Предоставление константного строкового значения в качестве двоичного значения. При использовании этого метода по-прежнему остается возможность передачи недопустимых или неполных суррогатных пар.

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

  • Импортируйте внешние значения с помощью sql:column или sql:variable. При использовании этих методов по-прежнему остается возможность введения недопустимых или неполных суррогатных пар.

Затрагиваемые функции и операторы XQuery

Следующие функции и операторы XQuery теперь правильно обрабатывают пары суррогатов UTF-16 в SQL Server 2012:

  • fn:string-length. Однако если недопустимая или частичная суррогатная пара передается в качестве аргумента, поведение длины строки не определено.

  • fn:substring.

  • fn:contains. Однако если часть суррогатной пары передается в качестве значения, функция содержит может возвращать непредвиденные результаты, так как может найти частичную суррогатную пару, содержащуюся в правильно сформированной суррогатной паре.

  • fn:concat. Однако если частичная суррогатная пара передается в виде значения, сцепление может создавать неправильные суррогатные пары или частичные суррогатные пары.

  • Операторы сравнения и предложение order by . Операторы сравнения включают +, <, , <>=, >=, eq, , lt, gtleи ge.

Вызовы распределенных запросов к системной процедуре

Распределенные вызовы запросов через OPENQUERY некоторые системные процедуры завершаются ошибкой при вызове с одного сервера SQL Server 2012 на другой. Это происходит, когда компонент Database Engine не может обнаружить метаданные для процедуры. Например, SELECT * FROM OPENQUERY(..., 'EXEC xp_loginfo').

Уровень изоляции и sp_reset_connection

Уровень изоляции для подключений обрабатывается драйверами клиента следующим образом:

  • Все собственные драйверы (SNAC, MDAC, ODBC) задают уровень изоляции (на основании параметров приложения) при sp_reset_connection.

  • Для ADO.NET можно по сути получить случайный уровень изоляции в зависимости от того, какое подключение можно получить из пула (и того, использует ли приложение другой уровень изоляции). Так как пул ADO.NET может повторно использовать подключения внутренне и незаметно для пользователей, невозможно предсказать результат работы пула.

  • Для драйвера JDBC характерно такое же поведение, что и для ADO.NET

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

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

Для сохранения обратной совместимости это новое поведение применяется только для последних клиентов, начиная с TDS 7.4.

Backward Compatibility

Применение нового поведения зависит от уровня совместимости

Следующие функции и операторы ведут себя описанным выше образом (по-новому) только при уровне совместимости 110 и выше.

  • fn:contains.

  • fn:concat.

  • операторы сравнения и предложение order by

Применение нового поведения зависит от URI-кода пространства имен по умолчанию для функций

Следующие функции демонстрируют новое поведение, описанное выше, http://www.w3.org/2005/xpath-functionsтолько если URI пространства имен по умолчанию соответствует пространству имен в окончательной рекомендации, то есть . Если уровень совместимости равен 110 или выше, по умолчанию SQL Server 2012 привязывает пространство имен функции по умолчанию к этому пространству имен. Однако, если используется это пространство имен, функции ведут себя по-новому, независимо от уровня совместимости.

  • fn:string-length

  • fn:substring

Критические изменения в SQL Server 2008 и SQL Server 2008R2

В этом разделе содержатся критические изменения, внесенные в SQL Server 2008. В SQL Server 2008 R2 изменения не вносились.

Параметры сортировки

Функция Описание
Новые параметры сортировки SQL Server 2008 вводятся новые параметры сортировки, которые полностью соответствуют параметрам сортировки, предоставляемым Windows Server 2008. Эти 80 новых параметров сортировки имеют улучшенную точность индексирования и отмечены пометками версии *_100. При выборе новых параметров сортировки для сервера или базы данных помните, что они могут не распознаваться клиентами со старыми драйверами. Нераспознанные параметры сортировки могут привести к возвращению ошибок и сбою приложения. Рассмотрите следующие решения.

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

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

Выберите существующие параметры сортировки, сопоставленные с кодовой страницей клиента.

Среда CLR

Функция Описание
Сборки среды CLR При обновлении базы данных до SQL Server 2008 автоматически устанавливается сборка Microsoft.SqlServer.Types для поддержки новых типов данных. Правила помощника по обновлению обнаружат все пользовательские типы данных или сборки с конфликтующими именами. Помощник по обновлению посоветует переименовать все конфликтующие сборки и либо переименовать все конфликтующие типы данных, либо использовать в программном коде двухкомпонентные имена для ссылок на существующие определяемые пользователем типы данных.

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

Если во время обновления обнаруживается пользовательский тип данных с конфликтующим именем, никаких специальных шагов не предпринимается. После обновления будут существовать как старый пользовательский тип, так и новый системный тип данных. Пользовательский тип данных будет доступен только с применением двухкомпонентных имен.
Сборки среды CLR SQL Server 2008 устанавливает платформа .NET Framework 3.5 с пакетом обновления 1 (SP1), который обновляет библиотеки в глобальном кэше сборок (GAC). Если у вас есть неподдерживаемые библиотеки, зарегистрированные в базе данных SQL Server, приложение SQL Server может перестать работать после обновления до SQL Server 2008. Это связано с тем, что обслуживание или обновление библиотек в GAC не приводит к обновлению сборок в SQL Server. Если сборка существует как в базе данных SQL Server, так и в глобальном кэше сборок, две копии сборки должны точно совпадать. Если они не совпадают, при использовании сборки SQL Server интеграции со средой CLR возникнет ошибка. Дополнительные сведения см. в разделе Поддерживаемые библиотеки платформа .NET Framework.

После обновления базы данных обновите копию сборки в SQL Server базах данных с помощью инструкции ALTER ASSEMBLY. Дополнительные сведения см. в статье базы знаний 949080.

Чтобы определить, используется ли в приложении неподдерживаемая библиотека платформы .NET Framework, в базе данных следует выполнить следующий запрос:

SELECT name FROM sys.assemblies WHERE clr_name LIKE '%publickeytoken=b03f5f7f11d50a3a,%';
Подпрограммы CLR Использование олицетворения в определяемых пользователем функциях CLR, определяемых пользователем агрегатах или определяемых пользователем типах может привести к сбою приложения с ошибкой 6522 после обновления до SQL Server 2008. Следующие сценарии успешно выполняются в SQL Server 2005 г., а в SQL Server 2008 г. — сбоем. Для каждого сценария указаны способы разрешения.

Определяемая пользователем функция CLR, определяемый пользователем агрегат или определяемый пользователем метод, использующий олицетворение, имеет параметр типа nvarchar(max), varchar(max), varbinary(max)ntext, text, image, или большой определяемый пользователем тип и не имеет атрибута DataAccessKind.Read метода. Чтобы устранить эту проблему, добавьте атрибут DataAccessKind.Read в метод , перекомпилируйте сборку и повторно разверните подпрограмму и сборку.

Возвращающая табличное значение функция CLR, которая имеет метод Init , выполняющий олицетворение. Чтобы устранить эту проблему, добавьте атрибут DataAccessKind.Read в метод , перекомпиляйте сборку и повторно разверните подпрограмму и сборку.

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

Динамические административные представления

Представление Описание
sys.dm_os_sys_info Удалены столбцы cpu_ticks_in_ms и sqlserver_start_time_cpu_ticks.
sys.dm_exec_query_resource_semaphoressys.dm_exec_query_memory_grants Столбец resource_semaphore_id не является уникальным идентификатором в SQL Server 2008. Данное изменение может повлиять на устранение проблем в запросах. Дополнительные сведения см. в разделе sys.dm_exec_query_resource_semaphores (Transact-SQL).

Ошибки и события

Функция Описание
Ошибки имени входа В SQL Server 2005 возвращается ошибка 18452, когда имя входа SQL используется для подключения к серверу, настроенного для использования только проверки подлинности Windows. В SQL Server 2008 возвращается ошибка 18456.

Showplan

Функция Описание
Схема XML Showplan В схему Showplan XML добавляется новый элемент SeekPredicateNew , а включающая последовательность xsd (SqlPredicatesType) преобразуется в <элемент xsd:choice> . Вместо одного или нескольких элементов SeekPredicate в Showplan XML может появиться один или несколько элементов SeekPredicateNew . Эти два элемента являются взаимоисключающими. SeekPredicate поддерживается в схеме Showplan XML для обеспечения обратной совместимости; Однако планы запросов, созданные в SQL Server 2008, могут содержать элемент SeekPredicateNew. Приложения, которые должны получить только дочерний элемент SeekPredicate из узла ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple/QueryPlan/RelOp/IndexScan/SeekPredicates, могут завершиться ошибкой, если элемент SeekPredicate не существует. Перепишите приложение, чтобы в этом узле ожидался элемент SeekPredicate или SeekPredicateNew . Дополнительные сведения см. в разделе .
Схема XML Showplan Новый атрибут IndexKind добавляется к сложному типу ObjectType в схеме Showplan XML. Приложения, которые строго проверяют SQL Server планы на соответствие схеме SQL Server 2005, завершатся сбоем.

Transact-SQL

Функция Описание
DDL-событие ALTER_AUTHORIZATION_DATABASE В SQL Server 2005 при ALTER_AUTHORIZATION_DATABASE события DDL значение object возвращается в элементе ObjectType xml EVENTDATA для этого события, когда тип сущности защищаемого объекта в операции языка определения данных (DDL) является объектом. В SQL Server 2008 возвращается фактический тип (например, table или function).
CONVERT Если в функцию CONVERT передан недопустимый стиль, при преобразовании двоичного типа в символьный или символьного в двоичный возвращается ошибка. В более ранних версиях SQL Server недопустимый стиль устанавливается как стиль по умолчанию для преобразования типа binary в символы и символы в двоичные.
Разрешения GRANT/DENY/REVOKE EXECUTE для сборок Для сборок разрешение EXECUTE нельзя предоставить, запретить или отменить. Это разрешение не оказывает влияния и вызывает ошибку. Вместо этого можно предоставить, запретить или отменить разрешение EXECUTE для хранимых процедур или функций, ссылающихся на метод сборки.
Разрешения GRANT/DENY/REVOKE на системные типы Разрешения на системные типы нельзя предоставить, запретить или отменить. В более ранних версиях SQL Server эти инструкции были успешными, но не оказывают никакого влияния. В SQL Server 2008 возвращается ошибка.
GROUP BY Предложение GROUP BY не может содержать вложенный запрос в выражении, используемом для списка group by. В более ранних версиях SQL Server это было разрешено. В SQL Server 2008 возвращается ошибка 144.

Например, следующий код будет выполнен успешно в SQL Server 2005 и завершится с ошибкой в SQL Server 2008.

DECLARE @Test TABLE(a int NOT NULL);
INSERT INTO @Test SELECT 1 union ALL SELECT 2;
SELECT COUNT(*)
FROM @Test
GROUP BY CASE WHEN a IN (SELECT t.a FROM @Test AS t)
THEN 1 ELSE 0
END;
OUTPUT, предложение Во избежание недетерминированного поведения в предложении OUTPUT запрещено ссылаться на столбец из представления или встроенной функции, возвращающей табличное значение, если этот столбец определен одним из следующих методов.

вложенный запрос.

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

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



При обнаружении SQL Server такого столбца в предложении OUTPUT возвращается ошибка 4186. Дополнительные сведения см. в разделе MSSQLSERVER_4186.
Предложение OUTPUT INTO Целевая таблица предложения OUTPUT INTO не может иметь какие-либо включенные триггеры.
Параметр уровня сервера precompute rank Этот параметр не поддерживается в SQL Server 2008. Как можно скорее измените приложения, в настоящее время использующие эту функцию.
Табличное указание READPAST Нельзя задавать указание READPAST при изоляции моментальных снимков.

Если параметру базы данных ALLOW_SNAPSHOT_ISOLATION или READ_COMMITTED_SNAPSHOT, либо обоим этим параметрам присвоено значение ON, то указание READPAST пропускается. Однако если указание READPAST применяется совместно с READCOMMITTEDLOCK, то READPAST будет работать таким же образом, как и при использовании блокирующего указания READCOMMITTED.
sp_helpuser Следующие имена столбцов, возвращаемых в результирующем наборе хранимой процедуры sp_helpuser, изменились:

GroupName теперь имеет значение:
RoleName

Group_name теперь:
Role_name

Group_id теперь:
Role_id

Users_in_group теперь:
Users_in_role
прозрачное шифрование данных. Прозрачное шифрование данных (TDE) выполняется на уровне ввода-вывода: структура страницы остается в памяти незашифрованной и шифруется только при записи страницы на диск. Шифруются как файлы базы данных, так и файлы журнала. Сторонние приложения, которые обходят обычный механизм SQL Server для доступа к страницам (например, путем непосредственного сканирования файлов данных или журналов), будут завершаться ошибкой, если база данных использует TDE, так как данные шифруются в файлах. Такие приложения могут использовать API шифрования Окна для разработки решения для расшифровки данных за пределами SQL Server.

XQuery

Функция Описание
Поддержка типа данных datetime В SQL Server 2005 года типы xs:timeданных , xs:dateи xs:dateTime не поддерживают часовой пояс. Данные часового пояса сопоставляются с часовым поясом времени в формате UTC. SQL Server 2008 обеспечивает стандартное поведение, что приводит к следующим изменениям:

Данные без часового пояса проходят проверку.

Предоставленный часовой пояс или его отсутствие сохраняются.

Изменяется внутреннее представление хранилища.

Увеличивается разрешение хранимых значений.

Отрицательные значения года запрещены.



Примечание. Измените приложения и выражения XQuery для учета новых значений типов.
Выражения XQuery и Xpath В SQL Server 2005 разрешены шаги в выражении XQuery или XPath, начинающиеся с двоеточия (':'). Например, следующая инструкция содержит в пределах выражения пути проверку имени (CTR02), которое начинается с двоеточия.

SELECT FileContext.query('for n$ in //CTR return <C>{data )(n$/:CTR02)} </C>) AS Files FROM dbo.MyTable;

В SQL Server 2008 г. это использование запрещено, так как оно не соответствует стандартам XML. Возвращена ошибка 9341. Удалите начальное двоеточие или укажите префикс для проверки имени, например (n$/CTR02) или (n$/p1:CTR02).

Соединение

Функция Описание
Подключение из SQL Server Native Client по протоколу SSL При подключении с помощью SQL Server Native Client приложения, использующие "SERVER=shortname; FORCE ENCRYPTION=true" с сертификатом, субъекты которого указывают полные доменные имена (FQDN) были подключены в прошлом из-за неоплаченной проверки. SQL Server 2008 R2 расширяет защиту за счет включения в сертификаты предмета FQDN. В приложениях, где используется ослабленная проверка, необходимо предпринять следующие меры.

Используйте полное доменное имя в строке подключения.

-Этот параметр не требует повторной компиляции приложения, если ключевое слово SERVER строки подключения настроены за пределами приложения.

Этот параметр не работает для приложений, для которых жестко заданы строки подключения.

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

Этот параметр работает даже для приложений, для которых жестко заданы строки подключения.

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

Этот параметр подходит для всех приложений.

Критические изменения в SQL Server 2005

Мы собираем и храним документацию для очень старых версий Microsoft SQL Server в наборе архивных веб-страниц. Архивные веб-страницы не обрабатываются поисковыми системами, такими как Bing.com и Google.com. Но эти архивы можно просмотреть по адресу предыдущих версий документации:

В них входит документация, по крайней мере, по следующим старым версиям:

  • SQL Server 2014
  • SQL Server 2012
  • SQL Server 2008 R2
  • SQL Server 2008
  • SQL Server 2005

SQL Server 2014 документация архивирована и больше не обрабатывается поисковыми системами. Статьи 2014 года теперь заявляют о себе с NOINDEX и NOFOLLOW.

Последняя версия SQL Server, наряду с другими последними версиями, описана здесь.

См. также:

Устаревшие функции компонента Database Engine в SQL Server 2014
Изменения в работе функций ядра СУБД в SQL Server 2014
Неподдерживаемые функции ядра СУБД в SQL Server 2014
Обратная совместимость компонента ядра СУБД SQL Server
Уровень совместимости инструкции ALTER DATABASE (Transact-SQL)
Критические изменения в функциях средств управления в SQL Server 2014