Okay, otra alternativa para recorer los registros en insertarlos en una temporal que tenga un identity y por medio de el ir leyendo los campos en variables, registro por registro, incluso podrias consultar la variable @@rowcount al insertar para saber cuantos hay sin hacer la cuenta a la temporal.
Esto seria menos pesado ya que no consumirias menos recursos, pero aun asi seria mas tardado que hacerlo de forma masiva...
Suerte con tu desarrollo..

Saludos!