Tôi đã có cùng một vấn đề, ngay cả sau khi tăng kích thước của các cột có vấn đề trong bảng.
tl; dr: Độ dài của các cột khớp trong Các loại bảng tương ứng cũng có thể cần phải tăng lên.
Trong trường hợp của tôi, lỗi xuất phát từ dịch vụ Xuất dữ liệu trong Microsoft Dynamics CRM, cho phép dữ liệu CRM được đồng bộ hóa với SQL Server DB hoặc Azure SQL DB.
Sau một cuộc điều tra dài, tôi đã kết luận rằng dịch vụ Xuất dữ liệu phải được sử dụng Tham số có giá trị theo bảng :
Bạn có thể sử dụng các tham số có giá trị bảng để gửi nhiều hàng dữ liệu tới câu lệnh Transact-SQL hoặc một thường trình, chẳng hạn như một thủ tục hoặc hàm được lưu trữ, mà không tạo một bảng tạm thời hoặc nhiều tham số.
Như bạn có thể thấy trong tài liệu trên, Các loại bảng được sử dụng để tạo thủ tục nhập dữ liệu:
CREATE TYPE LocationTableType AS TABLE (...);
CREATE PROCEDURE dbo.usp_InsertProductionLocation
@TVP LocationTableType READONLY
Thật không may, không có cách nào để thay đổi Loại bảng, vì vậy nó phải được loại bỏ & tái tạo hoàn toàn. Vì bảng của tôi có hơn 300 trường (), tôi đã tạo một truy vấn để tạo thuận lợi cho việc tạo Loại bảng tương ứng dựa trên định nghĩa cột của bảng (chỉ cần thay thế [table_name]
bằng tên bảng của bạn):
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;
Sau khi cập nhật Loại bảng, dịch vụ Xuất dữ liệu bắt đầu hoạt động bình thường trở lại! :)