Критические изменения в функциях компонента Database Engine в SQL Server 2008
В этом разделе описываются критические изменения компонента Database Engine. Эти изменения могут привести к сбоям в работе приложений, сценариев или функций, основанных на более ранних версиях SQL Server. Пользователи могут сталкиваться с этими проблемами при обновлениях. Дополнительные сведения см. в разделе Использование помощника по обновлению для подготовки к обновлениям.
Параметры сортировки
Функция |
Описание |
---|---|
Новые параметры сортировки |
В 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), которая обновляет библиотеки в глобальном кэше сборок. При наличии неподдерживаемых библиотек, зарегистрированных в базе данных SQL Server, приложение SQL Server может прекратить работу после обновления до версии SQL Server 2008. Это происходит вследствие того, что обслуживание или обновление библиотек в глобальном кэше сборок не обновляет сборки внутри SQL Server. Если сборка существует и в базе данных SQL Server, и в глобальном кэше сборок, то обе копии сборки должны полностью совпадать. Если они не совпадают, то при использовании сборки с интеграцией со средой SQL Server CLR возникает ошибка. Дополнительные сведения см. в разделе Поддерживаемые библиотеки платформы .NET Framework. После обновления базы данных следует выполнить обслуживание или обновление копии сборки внутри баз данных SQL Server с помощью инструкции ALTER ASSEMBLY. Дополнительные сведения см. в статье 949080 базы знаний Майкрософт. Чтобы определить, используется ли в приложении неподдерживаемая библиотека платформы .NET Framework, в базе данных следует выполнить следующий запрос:
|
Подпрограммы CLR |
Использование олицетворения в определяемых пользователем функциях CLR, определяемых пользователем статистических функциях CLR или определяемых пользователем типах CLR после обновления до SQL Server 2008 может вызвать завершение приложений с ошибкой 6522. Следующие сценарии выполняются успешно в SQL Server 2005, но завершаются ошибкой в SQL Server 2008. Для каждого сценария указаны способы разрешения.
|
Динамические административные представления
Представление |
Описание |
---|---|
sys.dm_os_sys_info |
Удалены столбцы cpu_ticks_in_ms и sqlserver_start_time_cpu_ticks. |
sys.dm_exec_query_resource_semaphores sys.dm_exec_query_memory_grants |
Столбец resource_semaphore_id не является уникальным идентификатором в SQL Server 2008. Данное изменение может повлиять на устранение неполадок при выполнении запроса. Дополнительные сведения см. в разделе sys.dm_exec_query_resource_semaphores. |
Ошибки и события
Функция |
Описание |
---|---|
Ошибки имени входа |
В SQL Server 2005 ошибка 18452 возвращается при использовании имени входа SQL для соединения с сервером, настроенным для использования проверки подлинности Windows. В SQL Server 2008 вместо этого возвращается ошибка 18456. |
Showplan
Функция |
Описание |
---|---|
Схема XML Showplan |
В схему XML Showplan добавляется новый элемент SeekPredicateNew, и заключенная XSD-последовательность (SqlPredicatesType) преобразуется в элемент <xsd:choice>. Теперь вместо одного или нескольких элементов SeekPredicate в схеме XML Showplan может появиться один или несколько элементов SeekPredicateNew. Эти два элемента являются взаимоисключающими. Элемент SeekPredicate поддерживается в схеме XML Showplan для обратной совместимости. Однако планы запросов, созданные в SQL Server 2008, могут содержать элемент SeekPredicateNew. Приложения, ожидающие получения только дочернего элемента SeekPredicate из узла ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple/QueryPlan/RelOp/IndexScan/SeekPredicatesShowPlanXML/BatchSequence/Batch/Statements/StmtSimple/QueryPlan/RelOp/IndexScan/SeekPredicates, могут завершиться с ошибкой в случае отсутствия элемента SeekPredicate. Необходимо переписать приложение, чтобы оно ожидало в этом узле элемент SeekPredicate или элемент SeekPredicateNew. Дополнительные сведения см. в разделе Улучшенные возможности обработки запросов для секционированных таблиц и индексов. |
Схема XML Showplan |
Новый атрибут IndexKind добавляется в сложный тип ObjectType схемы XML Showplan. Работа приложений, выполняющих строгую проверку планов SQL Server по отношению к схеме SQL Server 2005, будет завершаться с ошибкой. |
Язык Transact-SQL
Функция |
Описание |
---|---|
DDL-событие ALTER_AUTHORIZATION_DATABASE |
Если тип сущности защищаемого объекта в операции языка описания данных DDL является объектом, то в SQL Server 2005 при срабатывании DDL-события ALTER_AUTHORIZATION_DATABASE значение 'object' возвращается в элемент ObjectType EVENTDATA XML для данного события. В SQL Server 2008 возвращается действительный тип (например, 'table' или 'function'). |
CONVERT |
Если в функцию CONVERT передан недопустимый стиль, при преобразовании двоичного типа в символьный или символьного в двоичный возвращается ошибка. В предыдущих версиях SQL Server недопустимый стиль устанавливается на стиль по умолчанию для преобразований «двоичный в символьный» и «символьный в двоичный». |
Разрешения GRANT/DENY/REVOKE EXECUTE для сборок |
Для сборок разрешение EXECUTE нельзя предоставить, запретить или отменить. Это разрешение не оказывает влияния и вызывает ошибку. Вместо этого можно предоставить, запретить или отменить разрешение EXECUTE для хранимых процедур или функций, ссылающихся на метод сборки. |
Разрешения GRANT/DENY/REVOKE на системные типы |
Разрешения на системные типы нельзя предоставить, запретить или отменить. В предыдущих версиях SQL Server данные инструкции завершаются успешно, но не оказывают влияния. В SQL Server 2008 также возвращается ошибка. |
Предложение OUTPUT |
Чтобы предотвратить недетерминированное поведение, предложение OUTPUT не может ссылаться на столбец из представления или встроенной возвращающей табличное значение функции, если этот столбец определен одним из следующих методов.
При обнаружении SQL Server такого столбца в предложении OUTPUT возвращается ошибка 4186. Дополнительные сведения см. в разделе MSSQLSERVER_4186. |
Предложение OUTPUT INTO |
Целевая таблица предложения OUTPUT INTO не может иметь какие-либо включенные триггеры. |
Параметр уровня сервера precompute rank |
Этот параметр не поддерживается в SQL Server 2008. Как можно скорее измените приложения, в настоящее время использующие эту функцию. |
Табличная подсказка READPAST |
Табличная подсказка READPAST не может быть указана, если параметр базы данных READ_COMMITTED_SNAPSHOT установлен в ON и выполняется одно из следующих условий.
Чтобы в этих случаях указать подсказку READPAST, удалите табличную подсказку READCOMMITTED (если существует) и включите в запрос табличную подсказку READCOMMITTEDLOCK. |
sp_helpuser |
Изменены следующие имена столбцов, возвращаемые в результирующем наборе хранимой процедуры sp_helpuser.
Предыдущее имя столбцаНовое имя столбца
GroupNameRoleName
Group_nameRole_name
Group_idRole_id
Users_in_groupUsers_in_role
|
Прозрачное шифрование данных |
Прозрачное шифрование данных выполняется на уровне ввода-вывода: структура страницы не шифруется в памяти и зашифровывается только при записи страницы на диск. Зашифровываются и файлы базы данных, и файлы журнала. Приложения сторонних производителей, которые обходят обычный механизм SQL Server при доступе к страницам (например, путем прямого просмотра данных или файлов журнала), будут завершены с ошибкой при использовании базой данных прозрачного шифрования данных, так как данные в файлах зашифрованы. Для таких приложений можно эффективно использовать API шифрования Window, чтобы разработать решения для расшифровки данных за пределами SQL Server. |
XQuery
Функция |
Описание |
---|---|
Поддержка типа данных datetime |
В SQL Server 2005 типы данных xs:time, xs:date и xs:dateTime не поддерживают часовой пояс. Данные часового пояса сопоставляются с часовым поясом времени в формате UTC. SQL Server 2008 обеспечивает соответствующее стандартное поведение, приводящее к следующим изменениям.
Внесите изменения в приложения и выражения языка XQuery для учета новых значений типа. Дополнительные сведения см. в разделе Использование XML с типами данных time, date, datetime2 и datetimeoffset. |
Выражения XQuery и Xpath |
В SQL Server 2005 в выражении XQuery и XPath допускаются шаги, начинающиеся с двоеточия (:). Например, следующая инструкция содержит в пределах выражения пути проверку имени (CTR02), которая начинается с двоеточия.
В SQL Server 2008 такое использование не допускается, поскольку это не соответствует стандартам XML. Возвращается ошибка 9341. Удалите начальное двоеточие или укажите префикс для проверки имени, например (n$/CTR02) или (n$/p1:CTR02). |
Журнал изменений
Обновления |
---|
Добавлено критическое изменение в выражениях XQuery и Xpath. |
См. также