Ho avuto lo stesso problema, anche dopo aver aumentato le dimensioni delle colonne problematiche nella tabella.
tl; dr: potrebbe essere necessario aumentare anche la lunghezza delle colonne corrispondenti nei tipi di tabella corrispondenti.
Nel mio caso, l'errore proveniva dal servizio di esportazione dei dati in Microsoft Dynamics CRM, che consente di sincronizzare i dati CRM con un DB di SQL Server o un database SQL di Azure.
Dopo una lunga indagine, ho concluso che il servizio di esportazione dei dati deve utilizzare parametri a valori di tabella :
È possibile utilizzare i parametri con valori di tabella per inviare più righe di dati a un'istruzione Transact-SQL o a una routine, ad esempio una stored procedure o una funzione, senza creare una tabella temporanea o molti parametri.
Come puoi vedere nella documentazione sopra, i tipi di tabella vengono utilizzati per creare la procedura di inserimento dati:
CREATE TYPE LocationTableType AS TABLE (...);
CREATE PROCEDURE dbo.usp_InsertProductionLocation
@TVP LocationTableType READONLY
Sfortunatamente, non c'è modo di modificare un tipo di tabella, quindi deve essere eliminato e ricreato del tutto. Poiché la mia tabella ha oltre 300 campi (😱), ho creato una query per facilitare la creazione del tipo di tabella corrispondente in base alla definizione delle colonne della tabella (basta sostituire [table_name]
con il nome della tabella):
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;
Dopo aver aggiornato il tipo di tabella, il servizio di esportazione dei dati ha ripreso a funzionare correttamente! :)