DISTINCT 句を含む SELECT ステートメントのイメージ データ型。使用している SQL Server のバージョンに応じて、この制限を克服する方法がいくつかあります。
SQL Server 2000 の場合、TEXT 列は VARCHAR データ型に変換でき、NTEXT 列は NVARCHAR データ型に変換でき、IMAGE データ型は VARBINARY データ型に変換できます。 DISTINCT 句を含む以前の SELECT ステートメントは、次のように書き直して、エラー メッセージを回避できます。
SELECT DISTINCT [BookTitle], CAST([BookSummary] AS NVARCHAR(4000)) AS [BookSummary]FROM [dbo].[Book]
SELECT DISTINCT [BookTitle], CAST([BookImage] AS VARBINARY(8000)) AS [BookImage]FROM [dbo].[Book] SQL Server 2005 および SQL Server 2008 (およびそれ以降) の場合、NVARCHAR を 4000 文字に制限する代わりにまたは VARCHAR または VARBINARY を 8000 文字まで使用する場合、次の SELECT ステートメントに見られるように、代わりに MAX 指定子を使用できます:
SELECT DISTINCT [BookTitle], CAST([BookSummary] AS NVARCHAR(MAX)) AS [BookSummary]FROM [dbo].[Book]
SELECT DISTINCT [BookTitle], CAST([BookImage] AS VARBINARY(MAX)) AS [BookImage]FROM [dbo].[Book] SQL Server 2005 または SQL Server 2008 (またはそれ以降) を使用している場合、この制限を克服する別の方法とこのエラー メッセージは、CAST 関数または CONVERT 関数を使用して text、ntext、および image データ型をそれぞれ varchar、nvarchar、および varbinary に変換しない場合、列のデータ型を VARCHAR(MAX)、NVARCHAR(MAX)、および VARBINARY に変更することを意味します。 (最大)。 TEXT、NTEXT、および IMAGE データ型は、Microsoft SQL Server の将来のバージョンで削除される予定であり、これらのデータ型の使用は避ける必要があります。
参照:http://www.sql-server-helper .com/error-messages/msg-421.aspx