Когда вы получаете эту ошибку, первое, что вы спрашиваете, какой столбец? К сожалению, SQL Server не помогает здесь. Таким образом, вы начинаете делать проб и ошибок. Ну, сейчас у меня есть такое утверждение:
INSERT tbl (A, B, C, D, E, F, G)
SELECT A, B * 2, C, D, E, q.F, G
FROM tbl
,othertable q
WHERE etc etc
Обратите внимание, что
- Некоторые значения изменены или связаны с другой таблицей, но большинство значений поступает из исходной таблицы, поэтому они не могут вызвать усечение, возвращаясь к тому же полю (о котором я знаю) .
- Удаление полей по одному в конечном итоге приводит к исчезновению ошибки, если я делаю это кумулятивно, , но - а вот кикер - не имеет значения, какие поля я исключаю, Как будто SQL Server возражает против общей длины строки, в чем я сомневаюсь, поскольку всего около 40 полей и ничего большого.
Кто-нибудь когда-либо видел это раньше?
Спасибо.
ОБНОВЛЕНИЕ: Я также провел "горизонтальное" тестирование, отфильтровав SELECT, с почти таким же результатом. Другими словами, если я скажу
- WHERE ID между 1 и 100: ошибка
- WHERE ID между 1 и 50: нет ошибки
- WHERE ID между 50 и 100: нет ошибки
Я перепробовал много комбинаций, и его нельзя ограничить одной строкой.