テーブルの変更 (XML)
xml データ型は ALTER TABLE ステートメントでサポートされています。たとえば、文字列型の列を 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 から型指定された 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
注意 |
---|
このスクリプトは AdventureWorks データベースに対して実行されます。これは、XML スキーマ コレクション Production.ProductDescriptionSchemaCollection が AdventureWorks データベースの一部として作成されるからです。 |
上記の例では、列に保存されているすべてのインスタンスは指定したコレクションの XSD スキーマで検証と型指定が行われます。指定したスキーマに適合しない XML インスタンスが列に含まれている場合、ALTER TABLE ステートメントは失敗するので、型指定されていない XML 列を型指定された XML に変更することができません。
注意 |
---|
大きなテーブルの場合、xml 型の列を変更すると処理の負担が大きくなることがあります。これは、各ドキュメントについて、形式が正しいか、型指定された XML であるかどうかを検証する必要があるためです。 |
型指定された XML の詳細については、「型指定された XML と型指定されていない XML の比較」を参照してください。