Ich habe eine riesige INSERT
-Anweisung mit 200 Spalten und plötzlich bekomme ich die gefürchtete Error converting data type varchar to numeric
. Kann ich irgendwo die tatsächliche Spalte sehen, die den Wert "varchar" enthält? Ich weiß, dass ich eine der Spalten auf einmal entfernen kann, bis der Fehler verschwindet, aber es ist sehr langweilig.
Sie geben keine SQL Server Version oder Anzahl der Zeilen an.
Für SQL2005 + das Hinzufügen der OUTPUT
-Klausel zum INSERT könnte helfen, die Rogue-Zeile zu identifizieren, indem sie die eingefügten Zeilen ausgibt, bis ein Fehler auftritt, so dass die nächste Zeile diejenige mit dem Problem
Gibt
zurück %Vor%Leider ist dieser Fehler ein ernster Schmerz und es gibt keinen einfachen Weg, ihn zu beheben. Wenn ich es in der Vergangenheit gesehen habe, musste ich immer nur Spaltengruppen kommentieren, bis ich den Schuldigen gefunden habe.
Ein anderer Ansatz könnte darin bestehen, die ISNUMERIC () - Funktion in T-SQL zu verwenden, um den Täter zu finden. Unter der Annahme, dass jede Spalte in der Zieltabelle numerisch ist (entsprechend anpassen, wenn dies nicht der Fall ist), können Sie Folgendes versuchen:
%Vor%Dadurch wird die Zeile angezeigt, die Ihren nicht-numerischen Wert enthält, und es sollte ziemlich klar sein, in welcher Spalte es sich befindet. Ich weiß, es ist mühsam, aber zumindest hilft es Ihnen, den tatsächlichen Wert zusätzlich zu der Spalte zu finden Probleme verursachen.
Nun, das ist nur eine Ahnung, aber was ist mit dem Einfügen der Daten in eine temporäre Tabelle und der Verwendung der GUI, um die Daten in die andere Tabelle zu migrieren? Wenn es immer noch einen Fehler erzeugt, sollten Sie zumindest mehr Rückmeldung zu dieser nicht-numerischen Spalte erhalten ...
Wenn es nicht funktioniert, versuchen Sie dies.
Prost!
Tags und Links sql-server