Критические изменения в функциях компонента ядра СУБД в SQL Server 2012
В этом разделе описаны критические изменения в SQL Server 2012 Компонент Database Engine и предыдущих версиях SQL Server. Эти изменения могут нарушать работу приложений, скриптов или механизмов, основанных на более ранних версиях SQL Server. При обновлении могут возникнуть следующие проблемы. Дополнительные сведения см. в разделе Использование помощника по обновлению для подготовки к обновлениям.
В этом разделе
Критические изменения в SQL Server 2012
Критические изменения в SQL Server 2008 и SQL Server 2008R2
Критические изменения в SQL Server 2005
Критические изменения в SQL Server 2012
Transact-SQL
Компонент |
Описание |
---|---|
Выбор в столбцах и таблицах с именем NEXT. |
Последовательности используют стандартную функцию ANSI NEXT VALUE FOR. Если таблица или столбец имеют имя NEXT, псевдоним VALUE, а также если пропущено ключевое слово AS по стандарту ANSI, то результирующая инструкция может вызвать ошибку. Чтобы избежать этой проблемы, используйте ключевое слово 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) для поддержки определяемых пользователем событий аудита. Приложения, не выбирающие столбцы по имени, могут возвращать больше столбцов, чем ожидается. Либо выбирайте столбцы по имени, либо доработайте приложение, чтобы оно принимало эти дополнительные столбцы. |
Операции CAST и CONVERT над вычисляемыми столбцами типа time или datetime2 |
В предыдущих версиях SQL Server используемый по умолчанию стиль для операций CAST и CONVERT над типами данных time и datetime2 — 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 может потребоваться перестроение индексов, куч или проверочных ограничений, которые используют функцию SOUNDEX. Дополнительные сведения см. в разделе SOUNDEX (Transact-SQL). |
Сообщение о количестве строк для инструкций DML, завершившихся ошибкой |
В SQL Server 2012 компонент Компонент Database Engine будет согласованно отправлять клиентам токен TDS DONE с RowCount: 0 при возникновении сбоя инструкции DML. В предыдущих версиях SQL Server неверное значение -1 отправляется клиенту, когда не завершенная успешно инструкция DML содержится в блоке TRY-CATCH и либо автопараметризуется Компонент Database Engine, либо блок TRY-CATCH находится на разных уровнях с не завершенной успешно инструкцией. Например, если блок TRY-CATCH вызывает хранимую процедуру и инструкция DML в процедуре завершается ошибкой, клиент получит ошибочное значение -1. Приложения, работа которых зависит от этого неверного поведения, будут завершены с ошибками. |
SERVERPROPERTY («Edition») |
Установленный выпуск экземпляра SQL Server 2012. Используйте значения этого свойства для определения возможностей и ограничений, таких как максимальное количество процессоров, которые поддерживаются установленным продуктом. В зависимости от установленного выпуска Enterprise Edition возвращается строка «Enterprise Edition» или «Enterprise Edition: лицензирование по числу ядер». Выпуски Enterprise Edition различаются по максимальной вычислительной мощности на один экземпляр SQL Server. Дополнительные сведения об ограничениях вычислительной мощности в SQL Server 2012 см. в разделе Вычисление производительности выпуска SQL Server. |
CREATE LOGIN |
Параметр CREATE LOGIN WITH PASSWORD = 'password' HASHED нельзя использовать с хэшами, созданными SQL Server 7 или более ранних версий. |
Операции CAST и CONVERT для datetimeoffset |
При преобразовании типов даты и времени в datetimeoffset поддерживаются только стили 0 и 1. Все остальные стили преобразования возвращают ошибку 9809. В следующем примере кода возвращается ошибка 9809.
|
SET ROWCOUNT |
Поведение SET ROWCOUNT было изменено для повышения эффективности большинства обычных запросов и может оказать влияние на планы выполнения запросов для уровней совместимости 110 и выше. Может возникнуть ошибка в том случае, если инструкция SET ROWCOUNT изменит значение ROWCOUNT в 0 или из 0 после инструкции DECLARE CURSOR и перед инструкцией FETCH. Чтобы избежать данной ошибки, установите уровень совместимости базы данных в 100 или установите значение ROWCOUNT за пределами области действия курсорных инструкций. |
Динамические административные представления
Представление |
Описание |
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
sys.dm_exec_requests |
Тип столбца команды меняется с nvarchar(16) на nvarchar(32). |
||||||||||||
sys.dm_os_memory_cache_counters |
Следующие столбцы были переименованы.
|
||||||||||||
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 |
Следующие столбцы были переименованы.
|
||||||||||||
sys.dm_os_memory_objects |
Следующие столбцы были переименованы.
|
||||||||||||
sys.dm_os_sys_info |
Следующие столбцы были переименованы.
|
||||||||||||
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 2012, приложение завершится с ошибкой, поскольку указанная в ссылке версия 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 для получения системных типов CLR SQL Server, как показано в следующем примере.
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. Однако, если в качестве аргумента передана неправильная или неполная суррогатная пара, поведение string-length будет непредвиденным.
fn:substring.
fn:contains. Однако, если в качестве значения передана неполная суррогатная пара, функция contains может возвращать непредвиденные результаты, поскольку она может обнаружить неполную суррогатную пару внутри суррогатной пары правильного формата.
fn:concat. Однако, если в качестве значения передана неполная суррогатная пара, функция concat может выдавать неправильные или неполные суррогатные пары.
Операторы сравнения и предложение order by. К операторам сравнения относятся +, <, >, <=, >=, eq, lt, gt, le и ge.
Вызовы распределенных запросов к системной процедуре
Вызовы распределенных запросов через OPENQUERY к некоторым системным процедурам завершаются ошибкой, если они выполняются от одного сервера к другому. Это происходит тогда, когда компоненту Компонент Database Engine не удается обнаружить метаданные для процедуры. Например, SELECT * FROM OPENQUERY(..., 'EXEC xp_loginfo').
Обратная совместимость
Применение нового поведения зависит от уровня совместимости
Следующие функции и операторы ведут себя описанным выше образом (по-новому) только при уровне совместимости 110 и выше.
fn:contains.
fn:concat.
Операторы сравнения и предложение order by.
Применение нового поведения зависит от URI-кода пространства имен по умолчанию для функций
Следующие функции ведут себя описанным выше образом (по-новому), только если URI пространства имен по умолчанию соответствует пространству имен в заключительной рекомендации, т. е. http://www.w3.org/2005/xpath-functions. Если уровень совместимости составляет 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), которая обновляет библиотеки в глобальном кэше сборок. При наличии неподдерживаемых библиотек, зарегистрированных в базе данных 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 (Transact-SQL). |
Ошибки и события
Компонент |
Описание |
---|---|
Ошибки имени входа |
В 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 также возвращается ошибка. |
||||||||||
GROUP BY |
Предложение GROUP BY не может содержать вложенный запрос в выражении, используемом для списка group by. В предыдущих ранних версиях SQL Server это допускалось. В SQL Server 2008 возвращается ошибка 144. Например, следующий код будет выполнен успешно в SQL Server 2005 и завершится с ошибкой в SQL Server 2008.
|
||||||||||
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.
|
||||||||||
прозрачное шифрование данных |
Прозрачное шифрование данных выполняется на уровне ввода-вывода: структура страницы не шифруется в памяти и зашифровывается только при записи страницы на диск. Шифруются как файлы базы данных, так и файлы журнала. Приложения сторонних производителей, которые обходят обычный механизм SQL Server при доступе к страницам (например, путем прямого просмотра данных или файлов журнала), будут завершены с ошибкой при использовании базой данных прозрачного шифрования данных, так как данные в файлах зашифрованы. Для таких приложений можно эффективно использовать API шифрования Window, чтобы разработать решения для расшифровки данных за пределами 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), которая начинается с двоеточия.
В SQL Server 2008 такое использование не допускается, поскольку это не соответствует стандартам XML. Возвращается ошибка 9341. Удалите начальное двоеточие или укажите префикс для проверки имени, например (n$/CTR02) или (n$/p1:CTR02). |
Соединение
Компонент |
Описание |
---|---|
Соединение с собственным клиентом SQL Server по протоколу SSL |
При соединении через собственный клиент SQL Server те приложения, которые используют параметр "SERVER=shortname; FORCE ENCRYPTION=true" с сертификатом, где в субъекте указано полное доменное имя (FQDN), раньше подключались благодаря ослабленной проверке. SQL Server 2008 R2 расширяет защиту за счет включения в сертификаты предмета FQDN. В приложениях, где используется ослабленная проверка, необходимо предпринять следующие меры.
|
В начало
Критические изменения в SQL Server 2005
Список критических изменений в SQL Server 2005 см. в разделе Критические изменения в функциях компонента Database Engine в SQL Server 2005.
См. также
Справочник
Устаревшие функции компонента Database Engine в SQL Server 2012
Изменения в работе функций компонента Database Engine в SQL Server 2012
Неподдерживаемые функции ядра СУБД в SQL Server 2012
Уровень совместимости инструкции ALTER DATABASE (Transact-SQL)
Другие ресурсы
Обратная совместимость компонента SQL Server Database Engine