Tuve el mismo problema, incluso después de aumentar el tamaño de las columnas problemáticas en la tabla.
tl; dr: la longitud de las columnas coincidentes en los tipos de tabla correspondientes también puede necesitar ser aumentada.
En mi caso, el error provenía del servicio de exportación de datos en Microsoft Dynamics CRM, que permite que los datos de CRM se sincronicen con una base de datos SQL Server o Azure SQL DB.
Después de una larga investigación, llegué a la conclusión de que el servicio de exportación de datos debe estar utilizando parámetros con valores de tabla :
Puede usar parámetros con valores de tabla para enviar varias filas de datos a una instrucción Transact-SQL o una rutina, como un procedimiento almacenado o una función, sin crear una tabla temporal o muchos parámetros.
Como puede ver en la documentación anterior, los Tipos de tabla se utilizan para crear el procedimiento de ingestión de datos:
CREATE TYPE LocationTableType AS TABLE (...);
CREATE PROCEDURE dbo.usp_InsertProductionLocation
@TVP LocationTableType READONLY
Desafortunadamente, no hay forma de alterar un tipo de tabla, por lo que debe descartarse y recrearse por completo. Como mi tabla tiene más de 300 campos (😱), creé una consulta para facilitar la creación del Tipo de tabla correspondiente en función de la definición de las columnas de la tabla (solo reemplace [table_name]
con el nombre de su tabla):
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;
Después de actualizar el Tipo de tabla, el servicio de exportación de datos comenzó a funcionar correctamente una vez más. :)