Sdílet prostřednictvím


Novinky v SQLXML 4.0 SP1

platí pro:SQL Serverazure SQL Database

Microsoft SQLXML 4.0 SP1 obsahuje různé aktualizace a vylepšení. Toto téma shrnuje aktualizace a poskytuje odkazy na podrobnější informace, pokud jsou k dispozici. SQLXML 4.0 SP1 poskytuje další vylepšení pro podporu nových datových typů zavedených v SYSTÉMU SQL Server 2008 (10.0.x). Toto téma obsahuje následující témata:

  • Instalace SQLXML 4.0 SP1

  • Problémy s souběžnou instalací

  • SQLXML 4.0 a MSXML

  • Redistribuce SQLXML 4.0

  • Podpora nativního klienta SQL Serveru

  • Podpora datových typů zavedených v SQL Serveru 2005 (9.x)

  • Změny hromadného načítání XML pro SQLXML 4.0

  • Změny klíče registru pro SQLXML 4.0

  • Problémy s migrací

Instalace SQLXML 4.0 SP1

Před vydáním SQL Serveru 2008 (10.0.x) byl SQLXML 4.0 s SQL Serverem a součástí výchozí instalace všech verzí SQL Serveru s výjimkou SQL Serveru Express. Od verze SQL Server 2008 (10.0.x) už není v SQL Serveru zahrnuta nejnovější verze SQLXML (SQLXML 4.0 SP1). Chcete-li nainstalovat SQLXML 4.0 SP1, stáhněte ho z Umístění instalace pro SQLXML 4.0 SP1.

Soubory SQLXML 4.0 SP1 jsou nainstalovány v následujícím umístění:

%PROGRAMFILES%\SQLXML 4.0\

Poznámka

Všechna odpovídající nastavení registru pro SQLXML 4.0 se provádí jako součást procesu instalace.

Pokud chcete 32bitové aplikace SQLXML povolit spouštění v systému Windows ve Windows (WOW64) v 64bitových operačních systémech Windows, spusťte 64bitový balíček SQLXML 4.0 SP1 s názvem sqlxml4.msi, který najdete na webu Download Center.

Odinstalace SQLXML 4.0 SP1

Mezi SQLXML 3.0 SP3, SQLXML 4.0 a SQLXML 4.0 SP1 existují sdílené klíče registru. Pokud jsou novější verze SQLXML odinstalovány na stejném počítači, který obsahuje SQLXML 3.0 SP3, možná budete muset přeinstalovat SQLXML 3.0 SP3.

Problémy s souběžnou instalací

Proces instalace pro SQLXML 4.0 neodebere soubory, které byly nainstalovány staršími verzemi SQLXML. Proto můžete mít knihovny DLL pro několik různých verzí výrazných instalací SQLXML na vašem počítači. Instalace můžete spouštět vedle sebe. SQLXML 4.0 obsahuje identifikátory PROGID nezávislé na verzi i závislé na verzích. Všechny produkční aplikace by měly používat identifikátory PROGID závislé na verzi.

SQLXML 4.0 SP1 a MSXML

SQLXML 4.0 neinstaluje MSXML. SQLXML 4.0 používá MSXML 6.0, který je nainstalován jako součást instalace SYSTÉMU SQL Server 2005 (9.x) nebo novější.

Redistribuce SQLXML 4.0 SP1

SQLXML 4.0 SP1 můžete distribuovat pomocí distribuovatelného instalačního balíčku. Jedním ze způsobů, jak nainstalovat několik balíčků v tom, co se uživateli jeví jako jedna instalace, je použití technologie chainer a bootstrapper. Další informace najdete v tématu Vytvoření vlastního balíčku bootstrapperu pro Visual Studio 2005 a přidání vlastních požadavků.

Pokud vaše aplikace cílí na jinou platformu, než na které byla vyvinuta, můžete si stáhnout verze sqlncli.msi pro platformu x64, Itanium a x86 z webu Microsoft Download Center.

Existují také samostatné redistribuční instalační programy pro MSXML 6.0 (msxml6.msi). Tyto položky najdete na instalačním disku CD systému SQL Server v následujícím umístění:

%CD%\Setup\

Tyto instalační soubory lze použít k instalaci MSXML 6.0 přímo z disku CD. Lze je také použít k volně redistribuci MSXML 6.0 spolu s SQLXML 4.0 SP1 s vlastními aplikacemi.

Budete také muset distribuovat nativního klienta SQL Serveru, pokud ho používáte jako zprostředkovatele dat s vaší aplikací. Další informace naleznete v tématu Instalace SQL Server Native Client.

Podpora nativního klienta SQL Serveru

SQLXML 4.0 podporuje jak zprostředkovatele SQLOLEDB, tak SQL Server Native Client. Doporučuje se používat stejnou verzi zprostředkovatele nativního klienta SQL Serveru a SQL Serveru, protože SQL Server Native Client je vyvinut tak, aby podporoval všechny nové datové typy, které jsou dodávány na serveru, jako je datum, čas, DateTime2a dateTimeOffset datové typy v SQL Serveru 2008 (10.0.x) a podporované nativním klientem SQL Serveru.

Poznámka

Sql Server Native Client byl odebrán v SYSTÉMU SQL Server 2022 (16.x).

SQL Server Native Client je technologie přístupu k datům, která byla zavedena v SYSTÉMU SQL Server 2005 (9.x). Kombinuje zprostředkovatele SQLOLEDB a ovladač SQLODBC do jedné nativní dynamické odkazové knihovny (DLL) a zároveň poskytuje nové funkce, které jsou oddělené a odlišné od komponent MICROSOFT Data Access Components (MDAC).

Sql Server Native Client lze použít k vytváření nových aplikací nebo vylepšení stávajících aplikací, které potřebují využívat výhod funkcí zavedených v SQL Serveru, které nejsou podporovány SQLOLEDB a SQLODBC v MDAC a Microsoft Windows. Například sql Server Native Client je vyžadován pro funkce SQLXML na straně klienta, jako je NAPŘÍKLAD FOR XML, k použití xml datového typu. Další informace naleznete v tématu Formátování XML na straně klienta (SQLXML 4.0), použití ADO ke spouštění dotazů SQLXML 4.0a SQL Server Native Client Programming.

Poznámka

SQLXML 4.0 není zcela zpětně kompatibilní s SQLXML 3.0. Vzhledem k některým opravám chyb a dalším funkčním změnám, zejména odebrání podpory ROZHRANÍ ISAPI jazyka SQLXML, nelze použít virtuální adresáře služby IIS s SQLXML 4.0. I když většina aplikací poběží s drobnými úpravami, musíte je otestovat před jejich uvedením do produkčního prostředí pomocí SQLXML 4.0.

Podpora datových typů zavedených v SYSTÉMU SQL Server 2005 a SQL Server 2008

SQL Server 2005 (9.x) zavedl datový typ xml a SQLXML 4.0 podporuje datový typ xml. Další informace naleznete v tématu xml Podpora datových typů v SQLXML 4.0.

Příklady, jak použít datový typ xml v SQLXML při mapování XML zobrazení, hromadném načítání XML nebo spouštění aktualizačních gramů XML, naleznete v následujících tématech.

SQL Server 2008 (10.0.x) zavedl datum, čas, DateTime2a DateTimeOffset datových typů. SQLXML 4.0 SP1 umožní tyto čtyři nové datové typy jako předdefinované skalární typy při použití se zprostředkovatelem OLE DB nativního klienta SQL Serveru (SQLNCLI11), který se dodává v SQL Serveru 2012 (11.x).

Důležitý

SQL Server Native Client (SNAC) není dodáván s:

  • SQL Server 2022 (16.x) a novější verze
  • SQL Server Management Studio 19 a novější verze

Pro vývoj nových aplikací se nedoporučuje nativní klient SQL Serveru (SQLNCLI nebo SQLNCLI11) a starší zprostředkovatel Microsoft OLE DB pro SQL Server (SQLOLEDB).

Pro nové projekty použijte jeden z následujících ovladačů:

Informace o SQLNCLI, které se dodává jako součást databázového stroje SQL Serveru (verze 2012 až 2019), naleznete v tomto support lifecycle exception.

Změny v hromadném načítání XML pro SQLXML 4.0 SP1

  • Pro SQLXML 4.0 se pole SchemaGen pro přetečení vytvoří pomocí datového typu xml. Další informace naleznete v tématu SQL Server XML Bulk Load Object Model.

  • Pokud jste již dříve vytvořili aplikace Microsoft Visual Basic a chcete použít SQLXML 4.0, musíte aplikaci znovu zkompilovat s odkazem na Xblkld4.dll.

  • Pro aplikace Visual Basic Scripting Edition je nutné zaregistrovat knihovnu DLL, kterou chcete použít. Pokud v následujícím příkladu zadáte identifikátory PROGID nezávislé na verzi, aplikace závisí na poslední registrované knihovně DLL:

    set objBulkLoad = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")   
    

    Poznámka

    Verze závislý PROGID je SQLXMLBulkLoad.SQLXMLBulkLoad.4.0.

Změny klíče registru pro SQLXML 4.0

V SQLXML 4.0 se klíče registru změnily z předchozích verzí na následující:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXML4\TemplateCacheSize

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXML4\SchemaCacheSize

Pokud chcete, aby se tyto klíče projevily pro SQLXML 4.0, musíte změnit nastavení.

Kromě toho SQLXML 4.0 zavádí následující klíče registru:

  • HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\ReportErrorsWithSQLInfo

    Ve výchozím nastavení vrátí SQLXML 4.0 nativní informace o chybě poskytované OLE DB a SQL Server místo chyby SQLXML vysoké úrovně (jak tomu bylo v dřívějších verzích SQLXML). Pokud toto chování nechcete, musí být hodnota tohoto klíče registru typu DWORD nastavená na hodnotu 0 (výchozí hodnota je 1).

  • HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\FORXML_GenerateGUIDBraces

    SqlXML ve výchozím nastavení vrací hodnoty GUID ze SQL Serveru bez obklopujících složených závorek. Pokud chcete vrátit hodnotu GUID se složenými závorkami (například {nějaký identifikátor GUID}), hodnota tohoto klíče registru musí být nastavená na 1 (výchozí hodnota je 0).

  • HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\SQL2000CompatMode

    Když analyzátor XML načte data, jsou ve výchozím nastavení normalizovány prázdné znaky podle pravidel XML 1.0. Výsledkem je ztráta některých prázdných znaků v datech. Textová reprezentace dat proto nemusí být po analýze stejná, i když jsou data sémanticky stejná.

    Tento klíč je zaveden, abyste se mohli rozhodnout zachovat prázdné znaky v datech. Pokud přidáte tento klíč registru a nastavíte jeho hodnotu na 0, mezerové znaky (LF, CR a tab) v XML budou zakódovány u hodnot atributů. V případě hodnot prvků je vrácen kódován pouze CR.

    Například:

    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>  
    

Problémy s migrací

Následující problémy můžou mít vliv na migraci starších aplikací SQLXML do SQLXML 4.0.

Dotazy ADO a SQLXML 4.0

Ve starších verzích SQLXML byla k dispozici podpora spouštění dotazů založených na adrese URL pomocí virtuálních adresářů služby IIS a filtru ISAPI pro SQLXML. U aplikací, které používají SQLXML 4.0, už tato podpora není k dispozici.

Místo toho je možné spouštět dotazy SQLXML, šablony a aktualgramy pomocí rozšíření SQLXML pro datové objekty ActiveX (ADO) poprvé představené v microsoft Data Access Components (MDAC) 2.6 a novější.

Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.

Podpora pro SQLXML 3.0 ISAPI a datové typy zavedené v SQL Serveru 2005

Vzhledem k tomu, že podpora ISAPI byla odebrána z SQLXML 4.0, Pokud vaše řešení vyžaduje rozšířené funkce zadávání dat zavedené v SQL Serveru 2005 (9.x), jako je datový typ XML nebo uživatelem definované datové typy (UDT) a webový přístup, budete muset použít jiné řešení, jako je spravované třídy SQLXML nebo jiný typ obslužné rutiny HTTP, například nativní webové služby XML pro SQL Server 2005.

Alternativně, pokud tato rozšíření typů nepotřebujete, můžete dál používat SQLXML 3.0 k připojení k SQL Serveru 2005 (9.x) a SQL Serveru 2008 (10.0.x). Podpora ROZHRANÍ ISAPI pro SQLXML 3.0 bude fungovat s těmito novějšími verzemi, ale nepodporuje ani nerozpozná xml datový typ nebo podporu typu UDT zavedenou v SYSTÉMU SQL Server 2005 (9.x).

Změny zabezpečení hromadného načítání XML pro dočasné soubory

Pro SQLXML 4.0 a SQL Server jsou uživateli, který provádí hromadnou operaci načítání, udělena oprávnění xml hromadného načtení souboru. Oprávnění ke čtení a zápisu se dědí ze systému souborů. V předchozích verzích SQLXML a SQL Serveru by hromadné načítání XML v rámci SQLXML vytvořilo dočasné soubory, které nebyly zabezpečené a mohly by být čitelné kýmkoli.

Problémy s migrací pro Client-Side FOR XML

Kvůli změnám v prováděcím modulu může SQL Server vracet různé hodnoty v metadatech základní tabulky, než by se vrátilo, pokud byl dotaz FOR XML proveden v rámci SQL Serveru 2000 (8.x). V případech, kdy k tomu dojde, bude mít formátování výsledků dotazu FOR XML na straně klienta rozdílný výstup v závislosti na verzi, pro kterou verzi se dotaz spouští.

Pokud je dotaz FOR XML proveden na straně klienta pomocí SQLXML 3.0 přes xml sloupec datového typu, data ve výsledcích se vrátí jako plně entitizovaný řetězec. Pokud je v SQLXML 4.0 zadaný nativní klient SQL Serveru (SQLNCLI11) jako zprostředkovatel, vrátí se data jako XML.