目次

テーブルの列の型を ntext, text から nvarchar(max). varchar(max) に変更する - SQL Server

テーブルの列の型を ntext, text から nvarchar(max). varchar(max) に変更する手順を紹介します。

概要

テーブルの ntext,text型は今後のSQL Serverで削除される予定のため、今後の継続性を考えると、新しい型に変更する必要があります。
(参考URL:https://docs.microsoft.com/ja-jp/sql/t-sql/data-types/ntext-text-and-image-transact-sql?view=sql-server-ver15)

新しいバージョンでは、ntext型は nvarchar(max) を text型は varchar(max) 使用します。
この記事では、ntext,text 型の列を nvarchar(max), varchar(max) 型に変更する手順を紹介します。

手順

テーブルの再作成を防ぐため、SQLコマンドを実行する方法が短い時間で変更できます。
次のコマンドを実行します。
alter table (操作対象テーブル) alter column (データ型を変更する列名) nvarchar(max)

または
alter table (操作対象テーブル) alter column (データ型を変更する列名) varchar(max)

alter tableコマンドによる列の型の変更の詳細はこちらの記事を参照してください。

実行例

Contents テーブルの document 列の型を ntext型から nvarchar(max)型に変換します。
次のSQLコマンドを実行します。
alter table Contents alter column document nvarchar(max)


エラーが発生しました。
エラーメッセージ
メッセージ 7614、レベル 16、状態 1、行 1
列 'document' ではフルテキスト検索が有効なので、変更または削除できません。

フルテキストインデックスが有効になっている場合は、列の型を変更できないようです。


フルテキストインデックスを削除します。以下のSQL文を実行します。
フルテキストインデックスの削除の詳細はこちらの記事を参照してください。
DROP FULLTEXT INDEX Contents



再度、alter table コマンドを実行します。列の型が変更され、document 列の型が、 nvarchar(max) に変更されたことが確認できます。


著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2022-02-17
作成日: 2022-02-17
iPentec all rights reserverd.