У меня была такая же проблема, даже после увеличения размера проблемных столбцов в таблице.
tl; dr: Длина соответствующих столбцов в соответствующих типах таблиц также может потребоваться увеличить.
В моем случае ошибка исходила от службы экспорта данных в Microsoft Dynamics CRM, которая позволяет синхронизировать данные CRM с БД SQL Server или Azure SQL DB.
После продолжительного расследования я пришел к выводу, что служба экспорта данных должна использовать табличные параметры :
Вы можете использовать табличные параметры для отправки нескольких строк данных в инструкцию Transact-SQL или подпрограмму, такую как хранимая процедура или функция, без создания временной таблицы или множества параметров.
Как вы можете видеть из документации выше, типы таблиц используются для создания процедуры приема данных:
CREATE TYPE LocationTableType AS TABLE (...);
CREATE PROCEDURE dbo.usp_InsertProductionLocation
@TVP LocationTableType READONLY
К сожалению, нет никакого способа изменить тип таблицы, поэтому он должен быть удален и воссоздан полностью. Поскольку в моей таблице более 300 полей (😱), я создал запрос, чтобы облегчить создание соответствующего типа таблицы на основе определения столбцов таблицы (просто замените [table_name]
его именем таблицы):
SELECT 'CREATE TYPE [table_name]Type AS TABLE (' + STRING_AGG(CAST(field AS VARCHAR(max)), ',' + CHAR(10)) + ');' AS create_type
FROM (
SELECT TOP 5000 COLUMN_NAME + ' ' + DATA_TYPE
+ IIF(CHARACTER_MAXIMUM_LENGTH IS NULL, '', CONCAT('(', IIF(CHARACTER_MAXIMUM_LENGTH = -1, 'max', CONCAT(CHARACTER_MAXIMUM_LENGTH,'')), ')'))
+ IIF(DATA_TYPE = 'decimal', CONCAT('(', NUMERIC_PRECISION, ',', NUMERIC_SCALE, ')'), '')
AS field
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '[table_name]'
ORDER BY ORDINAL_POSITION) AS T;
После обновления типа таблицы служба экспорта данных снова заработала! :)