SQLServerで非推奨となったデータ型 ntext text image

SQLServerロゴ

SQLServerには他のデータベースと同様に、テーブルの列に設定するための様々なデータ型が用意されています。
例えば数値を管理するための項目であれば、int型やdecimal型。文字列を管理するための項目であれば、varchar型やnvarchar型などです。

普段何気なく使っているこれらのデータ型ですが、SQLServerでは旧バージョンで使用されていたデータ型のうち、非推奨となったデータ型があります。

非推奨となったデータ型

非推奨となったデータ型には、以下の3つがあります。

  • ntext
  • text
  • image

ntext型、text型、image型

Microsoftのドキュメント(Webサイト)には、ntext型、text型、image型について、以下の説明があります。

ntext
文字列の最大長が 2^30 – 1 (1,073,741,823) の可変長の Unicode データを指定します。 ストレージ サイズは、入力する文字列長の 2 倍のバイト長です。 ISO シノニムは、 ntext は national text です。

text
サーバーのコード ページ内の可変長の非 Unicode データを指定します。最大文字列長は 2^31-1 (2,147,483,647) 文字です。 サーバー コード ページで 2 バイト文字が使用されている場合、ストレージのサイズは 2,147,483,647 バイトのままです。 文字列によっては、格納サイズが 2,147,483,647 バイトより少なくなることもあります。

image
0 ~ 2^31-1 (2,147,483,647) バイトの可変長のバイナリ データを指定します。

ntext、text、および image (Transact-SQL)

ntext型、text型、image型はともに、大きいサイズのデータを格納するために用意されていました。

これから新たにテーブルを設計する際は、上記3つのデータ型は使用しないようにした方が良いかと思います。
また、現時点で既に稼働システムで使われているデータベースについても、別のデータ型に変更した方が無難です。(将来、データベースのバージョンアップなどを行った際に動作しなくなる可能性があるので、今のうちに変更しておいた方が良いでしょう。)

ntext型、text型、image型に変わるデータ型

ntext型、text型、image型を使用できなくなると、大きいサイズのデータを格納するための別のデータ型を使わなければなりません。
Microsoftのドキュメントには

varchar(max) 、nvarchar(max) 、および varbinary(max) データ型を使用してください。

と記載されています。
ですので、今後は「text型ならvarchar(max) 型」「ntext型ならnvarchar(max)型」「image型ならvarbinary(max) 型」を使用することになります。

SQLServerの非推奨機能

Microsoftのドキュメントには、データ型以外にも非推奨となった機能が記載されています。
SQLServerを用いてデータベースを管理しているバックエンドのエンジニアの方は、一度確認をしておいた方が良いかと思います。
SQL Server 2016 データベース エンジンの非推奨の機能