Typy danych obrazu w instrukcji SELECT zawierającej klauzulę DISTINCT. W zależności od używanej wersji SQL Server, istnieje kilka sposobów na pokonanie tego ograniczenia.
W przypadku SQL Server 2000 kolumnę TEXT można przekonwertować na typ danych VARCHAR, kolumnę NTEXT można przekonwertować na typ danych NVARCHAR, a typ danych IMAGE można przekonwertować na typ danych VARBINARY. Wcześniejsze instrukcje SELECT zawierające klauzulę DISTINCT można przepisać w następujący sposób i uniknąć komunikatu o błędzie:
SELECT DISTINCT [TytułKsiążki], CAST([PodsumowanieKsiążki] AS NVARCHAR(4000)) AS [PodsumowanieKsiążki]FROM [dbo].[Książka]
SELECT DISTINCT [BookTitle], CAST([BookImage] AS VARBINARY(8000)) AS [BookImage]FROM [dbo].[Book]Dla SQL Server 2005 i SQL Server 2008 (i nowszych), zamiast ograniczać NVARCHAR do 4000 znaków lub VARCHAR lub VARBINARY do 8000 znaków, w jego miejsce można użyć specyfikatora MAX, jak widać w następujących instrukcjach SELECT:
SELECT DISTINCT [TytułKsiążki], CAST([PodsumowanieKsiążki] AS NVARCHAR(MAX)) AS [PodsumowanieKsiążki]FROM [dbo].[Książka]
SELECT DISTINCT [BookTitle], CAST([BookImage] AS VARBINARY(MAX)) AS [BookImage]FROM [dbo].[Book]W przypadku korzystania z SQL Server 2005 lub SQL Server 2008 (lub nowszego), inny sposób na obejście tego ograniczenia i ten komunikat o błędzie bez użycia funkcji CAST lub CONVERT do konwersji typów danych text, ntext i image odpowiednio na varchar, nvarchar i varbinary, polega na zmianie typów danych kolumn na VARCHAR(MAX), NVARCHAR(MAX) i VARBINARY (MAX). Typy danych TEXT, NTEXT i IMAGE zostaną usunięte w przyszłej wersji Microsoft SQL Server i należy unikać używania tych typów danych.
Odniesienie:http://www.sql-server-helper .com/komunikaty-o-błędach/msg-421.aspx