Ändern von Tabellen (XML)
Die ALTER TABLE-Anweisung unterstützt den xml-Datentyp. So können Sie z. B. eine beliebige Spalte vom Zeichenfolgentyp in den xml-Datentyp ändern. Beachten Sie, dass die in der Spalte enthaltenen Dokumente dazu wohlgeformt sein müssen. Außerdem werden beim Ändern des Spaltentyps vom Zeichenfolgentyp in den typisierten XML-Typ die Dokumente in der Spalte anhand der angegebenen XSD-Schemas überprüft.
CREATE TABLE T (Col1 int primary key, Col2 nvarchar(max))
GO
INSERT INTO T
VALUES (1, '<Root><Product ProductID="1"/></Root>')
GO
ALTER TABLE T
ALTER COLUMN Col2 xml
GO
Sie können eine nicht typisierte Spalte vom Typ xml in eine typisierte XML-Spalte ändern. Beispiel:
CREATE TABLE T (Col1 int primary key, Col2 xml)
GO
INSERT INTO T
values (1, '<p1:ProductDescription ProductModelID="1"
xmlns:p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">
</p1:ProductDescription>')
GO
-- Make it a typed xml column by specifying a schema collection.
ALTER TABLE T
ALTER COLUMN Col2 xml (Production.ProductDescriptionSchemaCollection)
GO
Hinweis |
---|
Das Skript wird für die AdventureWorks2008R2-Datenbank ausgeführt, da die XML-Schemaauflistung Production.ProductDescriptionSchemaCollection als Teil der AdventureWorks2008R2-Datenbank erstellt wird. |
Im vorherigen Beispiel werden alle in der Spalte gespeicherten Instanzen mit den XSD-Schemas der angegebenen Auflistung überprüft und typisiert. Wenn die Spalte eine oder mehrere in Bezug auf das angegebene Schema ungültige XML-Instanzen enthält, erzeugt die ALTER TABLE-Anweisung einen Fehler, d. h., Sie können die nicht typisierte XML-Spalte nicht in eine typisierte XML-Spalte ändern.
Hinweis |
---|
Bei umfangreichen Tabellen kann das Ändern einer Spalte vom Typ xml äußerst aufwändig werden, da jedes Dokument auf Wohlgeformtheit überprüft und bei typisierten XML-Dokumenten auch eine Überprüfung durchgeführt werden muss. |
Weitere Informationen zu typisiertem XML finden Sie unter Typisiertes XML im Vergleich zu nicht typisiertem XML.