Новые возможности в SQLXML 4.0 с пакетом обновления 1 (SP1)
Microsoft SQLXML 4.0 с пакетом обновления 1 (SP1) содержит различные обновления и улучшения. В этом разделе содержится описание всех обновлений и предоставляются ссылки на более подробные сведения (если они доступны). SQLXML 4.0 с пакетом обновления 1 (SP1) предоставляет улучшения для поддержки новых типов данных, появившихся в SQL Server 2008. В этом разделе рассматриваются следующие вопросы.
Установка SQLXML 4.0 с пакетом обновления 1 (SP1)
Проблемы параллельной установки
SQLXML 4.0 и MSXML
Распространение SQLXML 4.0
Поддержка собственного клиента SQL Server
Поддержка новых типов данных SQL Server 2005
Изменения в SQLXML 4.0, относящиеся к массовой загрузке XML
Изменения в SQLXML 4.0, относящиеся к разделам реестра
Проблемы переноса
Установка SQLXML 4.0 с пакетом обновления 1 (SP1)
До версии SQL Server 2008 компонент SQLXML 4.0 распространялся с SQL Server и входил в состав установки по умолчанию всех версий SQL Server, за исключением SQL Server Express. Начиная с SQL Server 2008, последняя версия SQLXML (SQLXML 4.0 с пакетом обновления 1 (SP1)) больше не включается в состав SQL Server. Чтобы установить версию SQLXML 4.0 с пакетом обновления 1 (SP1), загрузите ее из места установки для SQLXML 4.0 с пакетом обновления 1 (SP1).
Файлы SQLXML 4.0 с пакетом обновления 1 (SP1) устанавливаются в следующий каталог:
%PROGRAMFILES%\SQLXML 4.0\
![]() |
---|
Все необходимые настройки реестра для SQLXML 4.0 вносятся в процессе установки. |
Чтобы обеспечить эксплуатацию 32-разрядных приложений SQLXML под управлением WOW64 в 64-разрядных операционных системах Windows, запустите 64-разрядный пакет SQLXML 4.0 с пакетом обновления 1 (SP1), имеющий имя sqlxml4.msi, который можно найти в центре загрузки.
Удаление SQLXML 4.0 с пакетом обновления 1 (SP1)
Для SQLXML 3.0 с пакетом обновления 3 (SP3), SQLXML 4.0 и SQLXML 4.0 с пакетом обновления 1 (SP1) применяются общие разделы реестра. При удалении более поздних версий SQLXML на том же компьютере, где установлен SQLXML 3.0 с пакетом обновления 3 (SP3), может потребоваться повторная установка SQLXML 3.0 с пакетом обновления 3 (SP3).
Проблемы параллельной установки
Процесс установки SQLXML 4.0 не удаляет файлы, установленные для прежних версий SQLXML. Поэтому возможно существование DLL-библиотек для нескольких различающихся версиями установок SQLXML на компьютере. Можно запускать установленные экземпляры параллельно. SQLXML 4.0 содержит как независимые от версии, так и зависимые от версии идентификаторы PROGID. Во всех рабочих приложениях должны использоваться зависимые от версии идентификаторы PROGID.
SQLXML 4.0 с пакетом обновления 1 (SP1) и MSXML
SQLXML 4.0 не устанавливает MSXML. SQLXML 4.0 использует службы MSXML 6.0, которые устанавливаются в составе установки SQL Server 2005 или более поздней установки.
Распространение SQLXML 4.0 с пакетом обновления 1 (SP1)
Предусмотрена возможность распространять SQLXML 4.0 с пакетом обновления 1 (SP1) с помощью распространяемого пакета установщика. Один из способов установки нескольких пакетов в одном (с точки зрения пользователя) сеансе установки состоит в применении технологии построителей цепочек и загрузчиков. Дополнительные сведения см. в статьях Разработка пользовательского пакета загрузчика для Visual Studio 2005 и Добавление настраиваемых необходимых компонентов.
Если приложение планируется использовать на платформе, отличной от той, на которой оно разрабатывалось, можно скачать из центра загрузки Майкрософт версии sqlncli.msi for x64, Itanium и x86.
Существуют также отдельно распространяемые программы установки для MSXML 6.0 (msxml6.msi). Они находятся на установочном компакт-диске SQL Server в следующем каталоге:
%CD%\Setup\
Эти установочные файлы можно использовать для установки MSXML 6.0 непосредственно с компакт-диска. Их можно также использовать для свободного распространения MSXML 6.0 и SQLXML 4.0 с пакетом обновления 1 (SP1) вместе с собственными приложениями.
Нужно также распространить собственный клиент SQL Server, если он используется с приложением как поставщик данных. Дополнительные сведения см. в разделе Установка собственного клиента SQL Server.
Поддержка собственного клиента SQL Server
SQLXML 4.0 поддерживает поставщики данных как SQLOLEDB, так и собственного клиента SQL Server. Рекомендуется использовать одну и ту же версию SQL Server и поставщика данных для собственного клиента SQL Server, поскольку собственный клиент SQL Server поддерживает все новые типы данных, которые предусматриваются сервером, такие как Date, Time, DateTime2 и dateTimeOffset в SQL Server 2008, и поддерживаются собственным клиентом SQL Server 2012.
Собственный клиент SQL Server — это технология доступа к данным, которая введена в SQL Server 2005. Она объединяет поставщика SQLOLEDB и драйвер SQLODBC в одну собственную динамическую библиотеку (DLL), а также предоставляет новую уникальную функциональность, независимую от компонентов доступа к данным MDAC и отличную от них.
Технология собственного клиента SQL Server может применяться для создания новых или усовершенствования существующих приложений, которым требуется доступ к новым функциям SQL Server, которые не поддерживаются SQLOLEDB и SQLODBC в компонентах MDAC и Microsoft Windows. Например, собственный клиент SQL Server необходим для клиентских функций SQLXML, таких как FOR XML, чтобы использовать тип данных xml. Дополнительные сведения см. в разделах Форматирование XML на стороне клиента (SQLXML 4.0), Использование ADO для выполнения запросов SQLXML 4.0 и Программирование собственного клиента SQL Server.
![]() |
---|
Между SQLXML 4.0 и SQLXML 3.0 нет полной обратной совместимости. В результате устранения некоторых ошибок и других функциональных изменений, особенно прекращения поддержки SQLXML ISAPI, нельзя использовать виртуальные каталоги IIS с SQLXML 4.0. Большинство приложений будут работать с небольшими изменениями, но их необходимо проверить перед запуском в рабочей среде с SQLXML 4.0. |
Поддержка типов данных, появившихся в SQL Server 2005 и SQL Server 2008
В SQL Server 2005 появился тип данных xml, и SQLXML 4.0 поддерживает этот тип данных. Дополнительные сведения см. в разделе Поддержка типов данных xml в SQLXML 4.0.
Примеры использования типа данных xml в SQLXML при сопоставлении XML-представлений, массовой загрузке XML и выполнении диаграмм обновления XML приведены в следующих разделах.
В SQL Server 2008 появились типы данных Date, Time, DateTime2 и DateTimeOffset. SQLXML 4.0 с пакетом обновления 1 (SP1) позволяет использовать эти четыре новых типа данных в качестве встроенных скалярных типов в SQL Server 2012 Native Client OLE DB Provider (SQLNCLI10), который поставляется вместе с SQL Server 2012.
Изменения в SQLXML 4.0 с пакетом обновления 1 (SP1), относящиеся к массовой загрузке XML
В SQLXML 4.0 поле переполнения SchemaGen создается с помощью типа данных xml. Дополнительные сведения см. в разделе Модель объектов массовой загрузки SQL Server XML.
Если ранее были созданы приложения Microsoft Visual Basic и нужно использовать SQLXML 4.0, необходимо перекомпилировать приложения со ссылкой на Xblkld4.dll.
Для приложений Visual Basic Scripting Edition необходимо зарегистрировать используемую DLL-библиотеку. В следующем примере, если указаны независимые от версий идентификаторы PROGID, приложение зависит от последней зарегистрированной DLL-библиотеки:
set objBulkLoad = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")
Примечание
Зависимый от версии идентификатор PROGID — SQLXMLBulkLoad.SQLXMLBulkLoad.4.0.
Изменения в SQLXML 4.0, относящиеся к разделам реестра
В SQLXML 4.0 разделы реестра изменились по сравнению с предшествующими выпусками на следующие:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXML4\TemplateCacheSize
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXML4\SchemaCacheSize
Необходимо изменить настройки, чтобы эти разделы были действительны в SQLXML 4.0.
Кроме того, в SQLXML 4.0 появились следующие разделы реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\ReportErrorsWithSQLInfo
По умолчанию SQLXML 4.0 возвращает собственные сведения об ошибке, предоставленные OLE DB и SQL Server, вместо высокоуровневой ошибки (как в случае с прежними версиями SQLXML). Если такое поведение нежелательно, значение типа DWORD этого раздела реестра должно быть установлено в 0 (значение по умолчанию — 1).
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\FORXML_GenerateGUIDBraces
По умолчанию SQLXML возвращает значения идентификатора SQL Server GUID без заключения в фигурные скобки. Если значение идентификатора GUID должно возвращаться с фигурными скобками (например, {some GUID}), значение этого раздела реестра должно быть установлено в 1 (по умолчанию 0).
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\SQL2000CompatMode
По умолчанию, когда средство синтаксического анализа XML загружает данные, пробелы нормализуются в соответствии с правилами XML 1.0. Это приводит к потере некоторых пробельных символов в данных. Таким образом, текстовое представление данных может измениться после синтаксического анализа, хотя семантически данные остаются прежними.
Раздел представлен таким образом, что можно оставить пробельные символы в данных. Если добавить этот раздел реестра и установить его значение равным 0, пробельные символы (возврат каретки, переноса строки и табуляция) в XML-документе возвращаются закодированными для значений атрибутов. Для значений элементов возвращается закодированным только символ возврата каретки.
Например.
CREATE TABLE T( Col1 int, Col2 nvarchar(100)); GO -- Insert data with tab, line feed and carriage return). INSERT INTO T VALUES (1, 'This is a tab . This is a line feed and CR more text'); GO -- Test this query (without the registry key). SELECT * FROM T FOR XML AUTO; -- This is the result (no encoding of special characters). <?xml version="1.0" encoding="utf-8" ?> <r> <T Col1="1" Col2="This is a tab . This is a line feed and CR more text"/> </r> -- Now add registry key with value 0 and execute the query again. -- Note the encoding for carriage return, line-feed and tab in the attribute value. <?xml version="1.0" encoding="utf-8" ?> <r> <T Col1="1" Col2="This is a tab 	. This is a line feed and CR 
 more text"/> </r> -- Update the query and specify ELEMENTS directive SELECT * FROM T FOR XML AUTO, ELEMENTS -- Only the carriage return is returned encoded. <?xml version="1.0" encoding="utf-8" ?> <r> <T> <Col1>1</Col1> <Col2>This is a tab . This is a line feed and CR 
 more text</Col2> </T> </r>
Проблемы переноса
Ниже перечислены проблемы, которые могут повлиять на перенос прежних приложений SQLXML на SQLXML 4.0.
Запросы ADO и SQLXML 4.0
В предыдущих версиях SQLXML выполнение запросов на основе URL-адресов поддерживалось с помощью виртуальных каталогов IIS и ISAPI-фильтра SQLXML. Для приложений, использующих SQLXML 4.0, эта функция больше не поддерживается.
Вместо этого запросы, шаблоны и диаграммы обновления SQLXML могут выполняться с помощью расширений SQLXML для объектов данных ActiveX (ADO), появившихся в компонентах доступа к данным MDAC 2.6 и более поздних.
Дополнительные сведения см. в разделе Использование ADO для выполнения запросов SQLXML 4.0.
Поддержка SQLXML 3.0 ISAPI и новых типов данных в SQL Server 2005
Поддержка ISAPI удалена, начиная с версии SQLXML 4.0, поэтому, если для работы решения необходимы улучшенные функции типизации данных, введенные в SQL Server 2005, такие как тип данных xml или определяемые пользователем типы данных и веб-доступ, необходимо использовать другое решение, например управляемые классы SQLXML, или обработчик HTTP другого типа, например собственные XML-веб-службы для SQL Server 2005.
Если же эти расширения типов не требуются, можно по-прежнему подключаться к экземплярам SQL Server 2005 и SQL Server 2008 с помощью SQLXML 3.0. Средства поддержки ISAPI, реализованные в SQLXML 3.0, будут работать с более поздними версиями, но не поддерживают и не распознают тип данных xml и определяемые пользователем типы данных, поддержка которых появилась в SQL Server 2005.
Изменения в массовой загрузке XML для временных файлов
Для SQLXML 4.0 и SQL Server разрешения на файл массовой загрузки XML предоставляются пользователю, выполняющему операцию массовой загрузки. Разрешения на чтение и запись наследуются из файловой системы. В прежних выпусках SQLXML и SQL Server, массовая загрузка XML на основе SQLXML создавала временные файлы, которые не были защищены и могли быть считаны любым пользователем.
Проблемы миграции для FOR XML на клиентской стороне
Из-за изменений в механизме выполнения SQL Server могут возвращать в метаданных для базовой таблицы значения, отличные от возвращаемых при выполнении запроса FOR XML в среде SQL Server 2000. Если это происходит, форматирование результатов запроса FOR XML на стороне клиента будут иными, в зависимости о версии, на которой работал запрос.
Если запрос FOR XML выполняется на клиентской стороне с помощью SQLXML 3.0 над столбцом данных типа xml, данные в результатах будут возвращены как строка с полным преобразованием в сущность. В SQLXML 4.0, если собственный клиент SQL Server (SQLNCLI11) указан как поставщик, данные возвращаются как XML.