Convertire colonne esistenti in colonne XML

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

L'istruzione ALTER TABLE supporta il tipo di dati xml . Ad esempio, è possibile modificare qualsiasi colonna di tipo string nel tipo di dati xml . 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;

È possibile modificare una colonna di tipo xml da XML non tipizzato a XML tipizzato. Ad 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);

Nota

Lo script verrà eseguito sul database AdventureWorks2022 , poiché la raccolta XML Schema Production.ProductDescriptionSchemaCollectionviene creata come parte del database AdventureWorks2022 .

Nell'esempio precedente, tutte le istanze archiviate nella colonna vengono convalidate e tipizzate rispetto agli schemi XSD nella raccolta specificata. 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.

Vedi anche