J'ai eu le même problème, même après avoir augmenté la taille des colonnes problématiques du tableau.
tl; dr: La longueur des colonnes correspondantes dans les types de tableaux correspondants peut également devoir être augmentée.
Dans mon cas, l'erreur provenait du service d'exportation de données dans Microsoft Dynamics CRM, qui permet aux données CRM d'être synchronisées avec une base de données SQL Server ou Azure SQL DB.
Après une longue enquête, j'ai conclu que le service d'exportation de données doit utiliser des paramètres de valeur de table :
Vous pouvez utiliser des paramètres table pour envoyer plusieurs lignes de données à une instruction Transact-SQL ou à une routine, telle qu'une procédure ou une fonction stockée, sans créer de table temporaire ou de nombreux paramètres.
Comme vous pouvez le voir dans la documentation ci-dessus, les types de table sont utilisés pour créer la procédure d'ingestion de données:
CREATE TYPE LocationTableType AS TABLE (...);
CREATE PROCEDURE dbo.usp_InsertProductionLocation
@TVP LocationTableType READONLY
Malheureusement, il n'y a aucun moyen de modifier un type de table, il doit donc être supprimé et recréé entièrement. Étant donné que ma table contient plus de 300 champs (😱), j'ai créé une requête pour faciliter la création du type de table correspondant en fonction de la définition des colonnes de la table (il suffit de la remplacer [table_name]
par le nom de votre table):
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;
Après avoir mis à jour le type de table, le service d'exportation de données a recommencé à fonctionner correctement! :)