Dies ist ein leichtes Überprüfung (nur Metadaten), die Ihre Suche nach unten auf die Liste der Spalten verengen werden, die möglicherweise das Problem verursacht - als die
die Spalten, in denen die max_length in der Zieltabelle kleiner sind die max_length des Anpassungs Ausdruck in der Quellabfrage.
Erstellen Sie eine leere Tabelle basierend auf den Ergebnissen Ihrer Quellabfrage und vergleichen Sie die Metadaten.
Beispiel:
create table src (str1 varchar(11),str2 varchar(3));
create table trg (str1 varchar(7),str2 varchar(3));
insert into src values ('Hi','XY'),('Hello world','XY'),('Hi','XYZ')
insert into trg (str1,str2) select str1,str2 + 'D' from src
Msg 8152, Level 16, State 14, Line 10
String or binary data would betruncated.
select str1,str2+'D' as str2 into tmp from src where 1=2;
select *
from (select c.name
,min(case o.name when 'tmp' then t.name end) as tmp_type
,min(case o.name when 'trg' then t.name end) as trg_type
,min(case o.name when 'tmp' then c.max_length end) as tmp_max_length
,min(case o.name when 'trg' then c.max_length end) as trg_max_length
from sys.objects as o
join sys.columns as c
on c.object_id = o.object_id
join sys.types as t
on t.system_type_id = c.system_type_id
and t.user_type_id = c.user_type_id
where o.name in ('tmp','trg')
and ( c.collation_name is not null
or c.name in ('binary','varbinary')
)
group by c.name
) c
where tmp_max_length > trg_max_length
order by c.name
;
+------+----------+----------+----------------+----------------+
| name | tmp_type | trg_type | tmp_max_length | trg_max_length |
+------+----------+----------+----------------+----------------+
| str1 | varchar | varchar | 11 | 7 |
+------+----------+----------+----------------+----------------+
| str2 | varchar | varchar | 4 | 3 |
+------+----------+----------+----------------+----------------+
Es gibt einige andere Frage auf SO: http://stackoverflow.com/questions/6388756/sql-server-string-or-binary-data-would -be-abgeschnitten. Sie können auch hier klicken: http://blogs.lessthandot.com/index.php/datamgmt/datadesign/how-to-find-was-Spalte/ – Klinger