Изменение таблиц (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.