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


Новые возможности в 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.

Файлы 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 или SQL Server 2008.

Распространение SQLXML 4.0 с пакетом обновления 1 (SP1)

Предусмотрена возможность распространять SQLXML 4.0 с пакетом обновления 1 (SP1) с помощью распространяемого пакета установщика. Один из способов установки нескольких пакетов в одном (с точки зрения пользователя) сеансе установки состоит в применении технологии построителей цепочек и загрузчиков. Дополнительные сведения см. в статьях Authoring a Custom Bootstrapper Package for Visual Studio 2005 (Разработка пакета пользовательского загрузчика для Visual Studio 2005, на английском языке) и Adding Custom Prerequisites (Добавление пользовательских предварительных условий, на английском языке).

Если приложение планируется использовать на платформе, отличной от той, на которой оно разрабатывалось, можно скачать из центра загрузки Майкрософт версии 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 2008.

Собственный клиент 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 2008.

ПримечаниеПримечание

Между 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) позволяет использовать эти четыре новых типа данных в качестве встроенных скалярных типов в поставщике OLE DB версии 10.0 для собственного клиента SQL Server 2008 (SQLNCLI10), который поставляется вместе с SQL Server 2008.

Изменения в 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 должно возвращаться с фигурными скобками (например: {идентификатор 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 &#x09;. This is a line feed and CR &#x0D;&#x0A; 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 &#x0D;
     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 2005 или SQL Server 2008 разрешения на файл массовой загрузки XML предоставляются пользователю, выполняющему операцию массовой загрузки. Разрешения на чтение и запись наследуются из файловой системы. В прежних выпусках SQLXML и SQL Server, массовая загрузка XML на основе SQLXML создавала временные файлы, которые не были защищены и могли быть считаны любым пользователем.

Проблемы миграции для FOR XML на клиентской стороне

Из-за изменений в механизме выполнения SQL Server 2005 и SQL Server 2008 могут возвращать в метаданных для базовой таблицы значения, отличные от возвращаемых при выполнении запроса FOR XML в среде SQL Server 2000. Если это происходит, форматирование результатов запроса FOR XML на стороне клиента будут иными, в зависимости о версии, на которой работал запрос.

Если запрос FOR XML выполняется на клиентской стороне с помощью SQLXML 3.0 над столбцом данных типа xml, данные в результатах будут возвращены как строка с полным преобразованием в сущность. В SQLXML 4.0, если собственный клиент SQL Server (SQLNCLI10) указан как поставщик, данные возвращаются как XML.