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-
U kunt XML-gegevens op verschillende manieren overbrengen naar SQL Server. Bijvoorbeeld:
Als u uw gegevens in een kolom [n]tekst of afbeelding in een SQL Server-database hebt, kunt u de tabel importeren met behulp van Integration Services. Wijzig het kolomtype in XML met behulp van de instructie ALTER TABLE.
U kunt uw gegevens bulksgewijs kopiƫren uit een andere SQL Server-database door bcp uit te voeren en de gegevens vervolgens bulksgewijs in te voegen in de latere versiedatabase met behulp van bcp in.
Als u gegevens in relationele kolommen in een SQL Server-database hebt, maakt u een nieuwe tabel met een [n]tekstkolom en eventueel een primaire-sleutelkolom voor een rij-id. Gebruik programmeren aan de clientzijde om de XML op de server op te halen met FOR XML en deze naar de [n]tekst kolom te schrijven. Gebruik vervolgens de eerder genoemde technieken om gegevens over te dragen naar een latere versiedatabase. U kunt ervoor kiezen om de XML rechtstreeks in een XML-kolom in de database met latere versies te schrijven.
XML-gegevens bulksgewijs laden
U kunt XML-gegevens bulksgewijs laden in de server met behulp van de mogelijkheden voor bulksgewijs laden van SQL Server, zoals bcp. MET OPENROWSET kunt u gegevens vanuit bestanden in een XML-kolom laden. In het volgende voorbeeld ziet u dit punt.
Voorbeeld: XML laden uit bestanden
In dit voorbeeld ziet u hoe u een rij in tabel T invoegt. De waarde van de XML-kolom wordt geladen vanuit het bestand C:\MyFile\xmlfile.xml als CLOB en de kolom geheel getal krijgt de waarde 10.
INSERT INTO T
SELECT 10, xCol
FROM (SELECT *
FROM OPENROWSET (BULK 'C:\MyFile\xmlfile.xml', SINGLE_BLOB)
AS xCol) AS R(xCol);
Tekstcodering
SQL Server slaat XML-gegevens op in Unicode (UTF-16). XML-gegevens die van de server worden opgehaald, worden geleverd in UTF-16-codering. Als u een andere codering wilt, moet u de vereiste conversie uitvoeren op de opgehaalde gegevens. Soms bevinden de XML-gegevens zich in een andere codering. Als dat zo is, moet u voorzichtig zijn tijdens het laden van gegevens. Bijvoorbeeld:
Als uw tekst-XML zich in Unicode bevindt (UCS-2, UTF-16), kunt u deze zonder problemen toewijzen aan een XML-kolom, variabele of parameter.
Als de codering niet Unicode is en impliciet is vanwege de broncodepagina, moet de tekenreekscodepagina in de database hetzelfde zijn als of compatibel zijn met de codepunten die u wilt laden. Gebruik indien nodig COLLATE. Als er geen dergelijke servercodepagina bestaat, moet u een expliciete XML-declaratie met de juiste codering toevoegen.
Als u een expliciete codering wilt gebruiken, gebruikt u het varbinary() type, dat geen interactie heeft met codepagina's of een tekenreekstype van de juiste codepagina gebruikt. Wijs vervolgens de gegevens toe aan een XML-kolom, -variabele of -parameter.
Voorbeeld: Expliciet een codering opgeven
Stel dat u een XML-document, vcdoc, hebt opgeslagen als varchar(max) die geen expliciete XML-declaratie heeft. Met de volgende instructie wordt een XML-declaratie met de codering 'iso8859-1' toegevoegd, wordt het XML-document samengevoegd, wordt het resultaat omgezet in varbinary(max) zodat de byteweergave behouden blijft en ten slotte wordt geconverteerd naar XML. Hierdoor kan de XML-processor de gegevens parseren op basis van de opgegeven codering 'iso8859-1' en de bijbehorende UTF-16-weergave voor tekenreekswaarden genereren.
SELECT CAST(
CAST (('<?xml version="1.0" encoding="iso8859-1"?>'+ vcdoc) AS VARBINARY (MAX))
AS XML);
Tekenreekscoderingsincompatibiliteit
Als u XML kopieert en plakt als een letterlijke tekenreeks in het venster Queryeditor in SQL Server Management Studio, kunt u te maken hebben met [n]varchar tekenreekscoderingsproblemen. Dit is afhankelijk van de codering van uw XML-exemplaar. In veel gevallen kunt u de XML-declaratie verwijderen. Bijvoorbeeld:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema ...
Vervolgens moet u de tekenreeks vooraf laten gaan door een N om het XML-exemplaar een exemplaar van Unicode te maken. Bijvoorbeeld:
-- Assign XML instance to a variable.
DECLARE @X XML
SET @X = N'...'
-- Insert XML instance into an xml type column.
INSERT INTO T VALUES (N'...')
-- Create an XML schema collection
CREATE XML SCHEMA COLLECTION XMLCOLL1 AS N'<xsd:schema ... '