У мене була така ж проблема навіть після збільшення розміру проблемних стовпців у таблиці.
tl; dr: Довжина відповідних стовпців у відповідних типах таблиць також може бути необхідною для збільшення.
У моєму випадку помилка надходила від служби експорту даних у Microsoft Dynamics CRM, яка дозволяє синхронізувати дані CRM до БД SQL Server або БД Azure SQL.
Після тривалого розслідування я дійшов висновку, що служба експорту даних повинна використовувати параметри табличного значення :
Ви можете використовувати параметри, що оцінюються за таблицею, для надсилання декількох рядків даних до оператора 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;
Після оновлення типу таблиці служба експорту даних знову знову запрацювала! :)