Для усечения строк я нашел следующее решение, чтобы найти максимальную длину всех столбцов:
1) Выбрать все данные во временной таблице (указать имена столбцов, где это необходимо),например,
SELECT col1
,col2
,col3_4 = col3 + '-' + col4
INTO #temp;
2) Запустите следующую инструкцию SQL в том же соединении (при необходимости измените временное имя таблицы):
DECLARE @table VARCHAR(MAX) = '#temp'; -- change this to your temp table name
DECLARE @select VARCHAR(MAX) = '';
DECLARE @prefix VARCHAR(256) = 'MAX(LEN(';
DECLARE @suffix VARCHAR(256) = ')) AS max_';
DECLARE @nl CHAR(2) = CHAR(13) + CHAR(10);
SELECT @select = @select + @prefix + name + @suffix + name + @nl + ','
FROM tempdb.sys.columns
WHERE object_id = object_id('tempdb..' + @table);
SELECT @select = 'SELECT ' + @select + '0' + @nl + 'FROM ' + @table
EXEC(@select);
Будет возвращен набор результатов с именами столбцовс префиксом 'max_' и отображает максимальную длину каждого столбца.
После того, как вы определили неисправный столбец, вы можете запустить другие операторы select, чтобы найти дополнительные длинные строки и при необходимости скорректировать код / данные.