Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
              van toepassing op:SQL Server
Azure SQL Database-
Microsoft SQLXML 4.0 SP1 bevat verschillende updates en verbeteringen. In dit onderwerp vindt u een overzicht van de updates en vindt u koppelingen naar meer gedetailleerde informatie, waar beschikbaar. SQLXML 4.0 SP1 biedt extra verbeteringen ter ondersteuning van de nieuwe gegevenstypen die zijn geïntroduceerd in SQL Server 2008 (10.0.x). Dit onderwerp bevat de volgende onderwerpen:
SQLXML 4.0 SP1 installeren
Problemen met side-by-side-installaties
SQLXML 4.0 en MSXML
SQLXML 4.0 opnieuw distribueren
Ondersteuning voor SQL Server Native Client
Ondersteuning voor gegevenstypen die zijn geïntroduceerd in SQL Server 2005 (9.x)
Wijzigingen voor bulksgewijs laden van XML voor SQLXML 4.0
Registersleutelwijzigingen voor SQLXML 4.0
Migratieproblemen
SQLXML 4.0 SP1 installeren
Vóór SQL Server 2008 (10.0.x) werd SQLXML 4.0 uitgebracht met SQL Server en maakte deel uit van de standaardinstallatie van alle SQL Server-versies, met uitzondering van SQL Server Express. Vanaf SQL Server 2008 (10.0.x) is de nieuwste versie van SQLXML (SQLXML 4.0 SP1) niet meer opgenomen in SQL Server. Als u SQLXML 4.0 SP1 wilt installeren, downloadt u deze van installatielocatie voor SQLXML 4.0 SP1.
De SQLXML 4.0 SP1-bestanden worden geïnstalleerd op de volgende locatie:
%PROGRAMFILES%\SQLXML 4.0\
Notitie
Alle juiste registerinstellingen voor SQLXML 4.0 worden gemaakt als onderdeel van het installatieproces.
Als u wilt toestaan dat 32-bits SQLXML-toepassingen worden uitgevoerd onder Windows in Windows (WOW64) op 64-bits Windows-besturingssystemen, voert u het 64-bits SQLXML 4.0 SP1-pakket uit met de naam sqlxml4.msi, dat u kunt vinden in het Downloadcentrum.
SQLXML 4.0 SP1 verwijderen
Er bestaan gedeelde registersleutels tussen SQLXML 3.0 SP3, SQLXML 4.0 en SQLXML 4.0 SP1. Als de latere versies van SQLXML worden verwijderd op dezelfde computer die SQLXML 3.0 SP3 bevat, moet u SQLXML 3.0 SP3 mogelijk opnieuw installeren.
Side-by-Side installatieproblemen
Het installatieproces voor SQLXML 4.0 verwijdert de bestanden die zijn geïnstalleerd door eerdere versies van SQLXML niet. Daarom kunt u DLL's hebben voor verschillende versie-onderscheidende installaties van SQLXML op uw computer. U kunt de installaties naast elkaar uitvoeren. SQLXML 4.0 bevat zowel versie-onafhankelijke als versieafhankelijke PROGID's. Alle productietoepassingen moeten versieafhankelijke PROGID's gebruiken.
SQLXML 4.0 SP1 en MSXML
SQLXML 4.0 installeert MSXML niet. SQLXML 4.0 maakt gebruik van MSXML 6.0, die is geïnstalleerd als onderdeel van de installatie van SQL Server 2005 (9.x) of hoger.
SQLXML 4.0 SP1 opnieuw distribueren
U kunt SQLXML 4.0 SP1 distribueren met behulp van het herdistribueerbare installatiepakket. Een manier om meerdere pakketten te installeren in wat voor de gebruiker als een enkele installatie lijkt, is het gebruik van chainer en bootstrapper technologie. Zie Een aangepast Bootstrapper-pakket maken voor Visual Studio 2005 en aangepaste vereisten toevoegen voor meer informatie.
Als uw toepassing is gericht op een ander platform dan het platform waarop het is ontwikkeld, kunt u versies van sqlncli.msi voor x64, Itanium en x86 downloaden via het Microsoft Downloadcentrum.
Er zijn ook afzonderlijke herdistributie-installatieprogramma's voor MSXML 6.0 (msxml6.msi). Deze vindt u op de installatie-CD van SQL Server op de volgende locatie:
%CD%\Setup\
Deze installatiebestanden kunnen worden gebruikt om MSXML 6.0 rechtstreeks vanaf de cd te installeren. Ze kunnen ook worden gebruikt om MSXML 6.0 vrij te distribueren, samen met SQLXML 4.0 SP1 met uw eigen aangepaste toepassingen.
U moet sql Server Native Client ook opnieuw distribueren als u deze gebruikt als de gegevensprovider met uw toepassing. Zie Sql Server Native Client installerenvoor meer informatie.
Ondersteuning voor SQL Server Native Client
SQLXML 4.0 ondersteunt zowel de SQLOLEDB- als SQL Server Native Client-providers. Het wordt aanbevolen om dezelfde versie van sql Server Native Client-provider en SQL Server te gebruiken, omdat SQL Server Native Client is ontwikkeld ter ondersteuning van nieuwe gegevenstypen die worden verzonden op de server, zoals de Date, Time, DateTime2en dateTimeOffset gegevenstypen in SQL Server 2008 (10.0.x) en ondersteund door sql Server Native Client.
Notitie
SQL Server Native Client is verwijderd in SQL Server 2022 (16.x).
SQL Server Native Client is een technologie voor gegevenstoegang die is geïntroduceerd in SQL Server 2005 (9.x). Het combineert de SQLOLEDB-provider en het SQLODBC-stuurprogramma in één systeemeigen DLL (Dynamic Link Library), en biedt ook nieuwe functionaliteit die gescheiden en verschilt van de Microsoft Data Access Components (MDAC).
SQL Server Native Client kan worden gebruikt om nieuwe toepassingen te maken of bestaande toepassingen te verbeteren die moeten profiteren van functies die zijn geïntroduceerd in SQL Server die niet worden ondersteund door SQLOLEDB en SQLODBC in MDAC en Microsoft Windows. SQL Server Native Client is bijvoorbeeld vereist voor SQLXML-functies aan de clientzijde, zoals FOR XML, om het xml- gegevenstype te gebruiken. Zie XML-opmaak aan de clientzijde (SQLXML 4.0), ADO gebruiken om SQLXML 4.0-query's uit te voerenen SQL Server Native Client Programming-.
Notitie
SQLXML 4.0 is niet volledig achterwaarts compatibel met SQLXML 3.0. Vanwege enkele bugfixes en andere functionele wijzigingen, met name het verwijderen van SQLXML ISAPI-ondersteuning, kunt u geen virtuele IIS-mappen gebruiken met SQLXML 4.0. Hoewel de meeste toepassingen worden uitgevoerd met kleine wijzigingen, moet u ze testen voordat u ze in productie plaatst met SQLXML 4.0.
Ondersteuning voor gegevenstypen die zijn geïntroduceerd in SQL Server 2005 en SQL Server 2008
SQL Server 2005 (9.x) heeft het xml- gegevenstype geïntroduceerd en SQLXML 4.0 ondersteunt het xml- gegevenstype. Zie xml-gegevenstypeondersteuning in SQLXML 4.0voor meer informatie.
Raadpleeg de voorbeelden in de volgende onderwerpen voor het gebruik van het XML- gegevenstype in SQLXML bij het toewijzen van XML-weergaven, het bulkmatig laden van XML of het uitvoeren van XML-updategrammen.
SQL Server 2008 (10.0.x) heeft de Date, Time, DateTime2en DateTimeOffset gegevenstypen geïntroduceerd. SQLXML 4.0 SP1 maakt deze vier nieuwe gegevenstypen mogelijk als ingebouwde scalaire typen wanneer deze worden gebruikt met SQL Server Native Client OLE DB Provider (SQLNCLI11), die wordt geleverd in SQL Server 2012 (11.x).
Belangrijk
SQL Server Native Client (SNAC) wordt niet geleverd met:
- SQL Server 2022 (16.x) en latere versies
 - SQL Server Management Studio 19 en latere versies
 
De SQL Server Native Client (SQLNCLI of SQLNCLI11) en de verouderde Microsoft OLE DB-provider voor SQL Server (SQLOLEDB) worden niet aanbevolen voor de ontwikkeling van nieuwe toepassingen.
Gebruik een van de volgende stuurprogramma's voor nieuwe projecten:
Voor SQLNCLI die als onderdeel van SQL Server Database Engine (versies 2012 tot en met 2019) wordt geleverd, raadpleegt u deze uitzondering voor de levenscyclus van ondersteuning.
Wijzigingen voor bulksgewijs laden van XML voor SQLXML 4.0 SP1
Voor SQLXML 4.0 wordt het overloopveld SchemaGen gemaakt met behulp van het xml- gegevenstype. Zie SQL Server XML Bulk Load Object Modelvoor meer informatie.
Als u eerder Microsoft Visual Basic-toepassingen hebt gemaakt en u SQLXML 4.0 wilt gebruiken, moet u de toepassing opnieuw compileren met verwijzing naar Xblkld4.dll.
Voor Visual Basic Scripting Edition-toepassingen moet u het DLL-bestand registreren dat u wilt gebruiken. Als u in het volgende voorbeeld versie-onafhankelijke PROGID's opgeeft, is de toepassing afhankelijk van de laatste geregistreerde DLL:
set objBulkLoad = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")Notitie
De versieafhankelijke PROGID is SQLXMLBulkLoad.SQLXMLBulkLoad.4.0.
Registersleutelwijzigingen voor SQLXML 4.0
In SQLXML 4.0 zijn de registersleutels gewijzigd van de eerdere versies in het volgende:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXML4\TemplateCacheSize
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXML4\SchemaCacheSize
U moet de instellingen wijzigen als u wilt dat deze sleutels van kracht zijn voor SQLXML 4.0.
Daarnaast introduceert SQLXML 4.0 de volgende registersleutels:
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\ReportErrorsWithSQLInfoSQLXML 4.0 retourneert standaard systeemeigen foutgegevens die worden geleverd door OLE DB en SQL Server in plaats van een SQLXML-fout op hoog niveau (zoals in eerdere versies van SQLXML). Als u dit gedrag niet wilt, moet de waarde van deze registersleutel van het type DWORD worden ingesteld op 0 (de standaardwaarde is 1).
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\FORXML_GenerateGUIDBraces
SQLXML retourneert standaard GUID-waarden van SQL Server zonder de omhullende accolades. Als u de GUID-waarde wilt retourneren met de accolades (bijvoorbeeld {sommige GUID-}), moet de waarde van deze registersleutel worden ingesteld op 1 (standaard is 0).
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\SQL2000CompatMode
Wanneer de XML-parser de gegevens laadt, worden witruimten standaard genormaliseerd volgens de XML 1.0-regels. Dit leidt tot verlies van enkele witruimtetekens in uw gegevens. De tekstuele weergave van uw gegevens is dus mogelijk niet hetzelfde na het parseren, hoewel de gegevens semantisch hetzelfde zijn.
Deze sleutel wordt geïntroduceerd, zodat u ervoor kunt kiezen om de spatietekens in de gegevens te behouden. Als u deze registersleutel toevoegt en de waarde ervan instelt op 0, worden witruimtetekens (LF, CR en tab) in de XML gecodeerd geretourneerd bij kenmerkwaarden. In het geval van elementwaarden wordt alleen CR gecodeerd geretourneerd.
Bijvoorbeeld:
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>
Migratieproblemen
Hier volgen problemen die van invloed kunnen zijn op de migratie van uw verouderde SQLXML-toepassingen naar SQLXML 4.0.
ADO- en SQLXML 4.0-queries
In eerdere versies van SQLXML is ondersteuning geboden voor queryuitvoering op basis van URL's met behulp van virtuele IIS-mappen en is het ISAPI-filter SQLXML opgegeven. Voor toepassingen die gebruikmaken van SQLXML 4.0 is deze ondersteuning niet meer beschikbaar.
In plaats daarvan kunnen SQLXML-query's, sjablonen en updategrammen worden uitgevoerd met behulp van de SQLXML-extensies voor ActiveX-gegevensobjecten (ADO) die voor het eerst zijn geïntroduceerd in Microsoft Data Access Components (MDAC) 2.6 en hoger.
Zie ADO gebruiken om SQLXML 4.0-query's uit te voerenvoor meer informatie.
Ondersteuning voor SQLXML 3.0 ISAPI en gegevenstypen die zijn geïntroduceerd in SQL Server 2005
Omdat ISAPI-ondersteuning is verwijderd uit SQLXML 4.0, als voor uw oplossing uitgebreide functies voor gegevenstypen zijn vereist die zijn geïntroduceerd in SQL Server 2005 (9.x), zoals het xml-gegevenstype of door de gebruiker gedefinieerde gegevenstypen (UDT's) en webtoegang, moet u een andere oplossing gebruiken, zoals beheerde SQLXML-klassen of een ander type HTTP-handler, zoals systeemeigen XML-webservices voor SQL Server 2005.
Als u deze typeextensies niet nodig hebt, kunt u ook SQLXML 3.0 blijven gebruiken om verbinding te maken met SQL Server 2005-installaties (9.x) en SQL Server 2008 (10.0.x). De ISAPI-ondersteuning voor SQLXML 3.0 werkt in deze latere versies, maar biedt geen ondersteuning voor het XML- gegevenstype of ondersteuning voor UDT-typen die is geïntroduceerd in SQL Server 2005 (9.x).
Beveiligingswijzigingen voor bulksgewijs laden van XML voor tijdelijke bestanden
Voor SQLXML 4.0 en SQL Server worden xml-bestandsmachtigingen voor bulksgewijs laden verleend aan de gebruiker die de bulksgewijs laden uitvoert. Lees- en schrijfmachtigingen worden overgenomen van het bestandssysteem. In eerdere versies van SQLXML en SQL Server zou XML Bulk Load onder SQLXML tijdelijke bestanden maken die niet zijn beveiligd en die door iedereen kunnen worden gelezen.
Migratieproblemen voor Client-Side FOR XML
Vanwege wijzigingen in de uitvoeringsengine retourneert SQL Server mogelijk andere waarden in de metagegevens voor een basistabel dan zou worden geretourneerd als de FOR XML-query werd uitgevoerd onder SQL Server 2000 (8.x). In gevallen waarin dit gebeurt, heeft de opmaak aan de clientzijde van de FOR XML-queryresultaten verschillende uitvoer, afhankelijk van de versie waarop de query wordt uitgevoerd.
Als een FOR XML-query wordt uitgevoerd aan de clientzijde met behulp van SQLXML 3.0 via een xml- gegevenstypekolom, worden de gegevens in de resultaten als een volledig getitiseerde tekenreeks geretourneerd. Als in SQLXML 4.0 de SQL Server Native Client (SQLNCLI11) is opgegeven als de provider, worden de gegevens geretourneerd als XML.