Determine the status of the executable T-Sql script
You are not moving the data, is it some kind of cursor? If you are moving one record at a time, it can take days or months, even depending on how much data you have. Now, if you have a lot of data to move, you may want a loop, but still not one record at a time, but a loop that processes a batch of records. It is often faster to insert a million records, 1000 at a time, than all millions at once.
If everything is currently in the same transaction, you may also run into problems if you need to stop and rethink this long_running process as it will have to rollback everything. This can take a long time.
Unless you've fixed this with logging or some other easy way to track progress, I think the suggestion to monitor counter (*) on inserted tables is a good one (and maybe you're only a real choice). Just make sure you are not using a lock, or the results may not return until after the insert is complete. Also check if blocking happens, often when something like this happens for too long some other processes will block it.
a source to share