Share via


Modifica di tabelle (XML)

L'istruzione ALTER TABLE supporta il tipo di dati xml. Ad esempio, è possibile modificare qualsiasi colonna di tipo string nel tipo di dati xml. Si noti che in questi casi è necessaria la correttezza del formato dei documenti contenuti nella colonna. Se inoltre si sta modificando il tipo della colonna da stringa a XML tipizzato, i documenti nella colonna vengono convalidati rispetto agli schemi XSD specificati.

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

È possibile modificare una colonna di tipo xml da XML non tipizzato a XML tipizzato. Esempio:

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

Nota

Lo script verrà eseguito sul database AdventureWorks2008R2, poiché l'insieme di schemi XML Production.ProductDescriptionSchemaCollection viene creato come parte del database AdventureWorks2008R2.

Nell'esempio precedente, tutte le istanze archiviate nella colonna vengono convalidate e tipizzate rispetto agli schemi XSD nell'insieme specificato. Se la colonna contiene una o più istanze XML non valide rispetto allo schema specificato, l'istruzione ALTER TABLE avrà esito negativo e non sarà possibile modificare il tipo della colonna da XML non tipizzato a XML tipizzato.

Nota

Se una tabella è di grandi dimensioni, la modifica di una colonna di tipo xml può risultare onerosa, poiché è necessario un controllo di correttezza del formato di ogni documento e, nel caso del codice XML tipizzato, è necessaria anche la convalida.

Per ulteriori informazioni sul codice XML tipizzato, vedere Dati XML tipizzati confrontati con dati XML non tipizzati.