1-) MSSQL RMOS - String or binary data would be truncated hatası çözme
nvarchar 3500 den düşük tüm tablolardaki tüm columnları 3500 yapar.
Aşağıdaki script tüm tabloları gezer, nvarchar kolonları bulur vemax length < 3500 ise → 3500 yapar(nvarchar(max) olanlara dokunmaz).
Direkt çalıştırabilirsin 👇
DECLARE @sql NVARCHAR(MAX) = ''
SELECT @sql += '
ALTER TABLE [' + s.name + '].[' + t.name + ']
ALTER COLUMN [' + c.name + '] NVARCHAR(3500) ' +
CASE
WHEN c.is_nullable = 1 THEN 'NULL'
ELSE 'NOT NULL'
END + ';
'
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id = t.object_id
INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
WHERE c.system_type_id = 231 -- nvarchar
AND c.max_length <> -1 -- nvarchar(max) hariç
AND (c.max_length / 2) < 3500 -- zaten büyük olanlara dokunma
PRINT @sql
-- kontrol et, sonra çalıştır:
-- EXEC sp_executesql @sql