Conversione di colonne esistenti a colonne XMLChange Existing Columns to XML Columns

L'istruzione ALTER TABLE supporta il tipo di dati xml .The ALTER TABLE statement supports the xml data type. Ad esempio, è possibile modificare qualsiasi colonna di tipo string nel tipo di dati xml .For example, you can alter any string type column to the xml data type. Si noti che in questi casi è necessaria la correttezza del formato dei documenti contenuti nella colonna.Note that in these cases, the documents contained in the column must be well formed. 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.Also, if you are changing the type of the column from string to typed xml, the documents in the column are validated against the specified XSD schemas.

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.You can change an xml type column from untyped XML to typed XML. Esempio:For example:

CREATE TABLE T (Col1 int primary key, Col2 xml)  
GO  
INSERT INTO T   
values (1, '<p1:ProductDescription ProductModelID="1"   
xmlns:p1="http://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 AdventureWorks2012AdventureWorks2012 , poiché la raccolta XML Schema Production.ProductDescriptionSchemaCollectionviene creata come parte del database AdventureWorks2012AdventureWorks2012 .The script will run against AdventureWorks2012AdventureWorks2012 database, because the XML schema collection, Production.ProductDescriptionSchemaCollection, is created as part of the AdventureWorks2012AdventureWorks2012 database.

Nell'esempio precedente, tutte le istanze archiviate nella colonna vengono convalidate e tipizzate rispetto agli schemi XSD nella raccolta specificata.In the previous example, all the instances stored in the column are validated and typed against the XSD schemas in the specified collection. 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.If the column contains one or more XML instances that are invalid with regard to the specified schema, the ALTER TABLE statement will fail and you will not be able to change your untyped XML column into typed XML.

Nota

Se una tabella è di grandi dimensioni, la modifica di una colonna di tipo xml può risultare onerosa,If a table is large, modifying an xml type column can be costly. poiché è necessario un controllo di correttezza del formato di ogni documento e, nel caso del codice XML tipizzato, è necessaria anche la convalida.This is because each document must be checked for being well formed and, for typed XML, must also be validated.

Per altre informazioni sul codice XML tipizzato, vedere Confrontare dati XML tipizzati con dati XML non tipizzati.For more information about typed XML, see Compare Typed XML to Untyped XML.