¿Cómo averiguar qué columna genera un error de desbordamiento aritmético al insertarlo?

Imagina una tabla con un centenar de columnas diferentes. Imagine, entonces, que tengo una tabla de datos de usuario desde donde quiero copiar datos a la tabla base. Entonces escribí esta simple declaración de inserción-selección y aparece este error. Entonces, ¿cuál es la forma más elegante de descubrir qué columna genera el error?

Mis pensamientos iniciales sobre la solución son sobre envolverlo en una transacción que finalmente revertiré y usaré una especie de enfoque Divide and Conquer:

begin tran

insert into BaseTable (c1,c2,c3,...,cN)
select c1,c2,c3,...,cN 
from UserTable

rollback tran

Y esto obviamente falla. Entonces dividimos el conjunto de columnas por la mitad de esta manera:

begin tran

insert into BaseTable (c1,c2,c3,...,cK) --where K = N/2
select c1,c2,c3,...,cK --where K = N/2
from UserTable

rollback tran

Y si falla, la columna que falla está en la otra mitad. Y continuamos el proceso, hasta que encontremos la molesta columna.

¿Algo más elegante que eso?

Nota: También encontré un casi duplicado de esta pregunta pero apenas la responde.

Respuestas a la pregunta(5)

Su respuesta a la pregunta