Bilddatatyper i en SELECT-sats som innehåller DISTINCT-satsen. Beroende på vilken version av SQL Server som används finns det några sätt att övervinna denna begränsning.
För SQL Server 2000 kan en TEXT-kolumn konverteras till en VARCHAR-datatyp, en NTEXT-kolumn kan konverteras till en NVARCHAR-datatyp medan en IMAGE-datatyp kan konverteras till VARBINARY-datatyp. SELECT-satserna tidigare som innehåller DISTINCT-satsen kan skrivas om enligt följande och undviker felmeddelandet:
SELECT DISTINCT [BookTitle], CAST([BookSummary] AS NVARCHAR(4000)) AS [BookSummary]FRÅN [dbo].[Book]
SELECT DISTINCT [BookTitle], CAST([BookImage] AS VARBINARY(8000)) AS [BookImage]FRÅN [dbo].[Book]För SQL Server 2005 och SQL Server 2008 (och senare), istället för att begränsa NVARCHAR till 4000 tecken eller VARCHAR eller VARBINARY till 8000 tecken, kan MAX-specifikationen användas i dess ställe, vilket kan ses i följande SELECT-satser:
VÄLJ DISTINCT [BookTitle], CAST([BookSummary] AS NVARCHAR(MAX)) AS [BookSummary]FRÅN [dbo].[Bok]
VÄLJ DISTINCT [BookTitle], CAST([BookImage] AS VARBINARY(MAX)) AS [BookImage]FRÅN [dbo].[Book]Om du använder SQL Server 2005 eller SQL Server 2008 (eller senare), ett annat sätt att övervinna denna begränsning och detta felmeddelande utan att använda CAST- eller CONVERT-funktionen för att konvertera text-, ntext- och bilddatatyperna till varchar, nvarchar respektive varbinary, är att ändra kolumnernas datatyper till VARCHAR(MAX), NVARCHAR(MAX) och VARBINARY (MAX). Datatyperna TEXT, NTEXT och IMAGE kommer att tas bort i en framtida version av Microsoft SQL Server och användning av dessa datatyper bör undvikas.
Referens:http://www.sql-server-helper .com/error-messages/msg-421.aspx