Tablodaki sorunlu sütunların boyutunu artırdıktan sonra bile aynı sorunu yaşadım.
tl; dr: İlgili Tablo Türlerindeki eşleşen sütunların uzunluğunun da artırılması gerekebilir.
Benim durumumda, hata, CRM verilerinin bir SQL Server DB veya Azure SQL DB ile senkronize edilmesine izin veren Microsoft Dynamics CRM'deki Veri Dışa Aktarma hizmetinden geliyordu.
Uzun bir araştırmadan sonra Veri Dışa Aktarma hizmetinin Tablo Değerli Parametreler kullanması gerektiği sonucuna vardım :
Geçici bir tablo veya birçok parametre oluşturmadan, Transact-SQL deyimine veya saklı yordam veya işlev gibi bir yordama birden çok veri satırı göndermek için tablo değerli parametreler kullanabilirsiniz.
Yukarıdaki belgelerde de görebileceğiniz gibi, veri alma prosedürünü oluşturmak için Tablo Türleri kullanılır:
CREATE TYPE LocationTableType AS TABLE (...);
CREATE PROCEDURE dbo.usp_InsertProductionLocation
@TVP LocationTableType READONLY
Ne yazık ki, bir Tablo Tipini değiştirmenin bir yolu yoktur, bu yüzden tamamen bırakılmalı ve yeniden oluşturulmalıdır. Masamın 300'den fazla alanı (😱) olduğundan, tablonun sütun tanımına bağlı olarak karşılık gelen Tablo Türünün oluşturulmasını kolaylaştırmak için bir sorgu oluşturdum (sadece [table_name]
tablonuzun adıyla değiştirin ):
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;
Tablo Türünü güncelledikten sonra, Veri Dışa Aktarma hizmeti bir kez daha düzgün çalışmaya başladı! :)