Поделиться через


Изменение таблиц (XML)

Инструкция ALTER TABLE поддерживает тип данных xml. Например, можно преобразовать столбец любого строкового типа в тип данных xml. Учтите, что в этом случае документы, содержащиеся в этом столбце, должны быть корректными. Также при изменении типа столбца со строкового на типизированный xml, содержащиеся в столбце документы должны проходить проверку по указанным XSD-схемам.

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

Можно изменить тип содержащихся в столбце xml данных с нетипизированного на типизированный XML. Например:

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
ПримечаниеПримечание

Сценарий будет работать с базой данных База данных AdventureWorks2008R2, потому что коллекция XML-схем Production.ProductDescriptionSchemaCollection создана в виде части базы данных База данных AdventureWorks2008R2.

В предыдущем примере все сохраненные в столбце экземпляры проверяются на корректность и типизацию в соответствии с XSD-схемами из указанной коллекции. Если столбец содержит хотя бы один экземпляр XML, не проходящий проверку на соответствие указанной схеме, выполнение инструкции ALTER TABLE завершится ошибкой, и преобразование нетипизированного XML-столбца в типизированный будет невозможно.

ПримечаниеПримечание

Если таблица имеет большой размер, операция изменения столбца типа xml может требовать много ресурсов. Причиной этого является необходимость проверки каждого документа на корректность, а для типизированного XML — также и проверки соответствия схеме.

Дополнительные сведения о типизированном XML см. в разделе Сравнение типизированного и нетипизированного XML.

См. также

Другие ресурсы