• It sounds like your concerns are to load data from old table into a new table while mimimizing transaction logging, downtime, and risk.

    Consider this approach.

    1. Using BCP, bulk copy your original table out to a natively formatted file. Becuase we want to conserve disk space, locate the file on a storage drive other than that already used by SQL Server for data or log files. For performance reasons, a locally attached drive would be ideal, if you have one available or can mount one in temporarily.

    https://msdn.microsoft.com/en-us/library/ms191232(v=sql.110).aspx

    2. Create new table with desired schema and indexes (but not foreign keys or triggers at this point).

    3. BCP the file back into the new table. If the new table is initially empty prior to the bulk load, then it should be minimally logged operation. You can read up on MSDN about prerequisites for minimal logging, but this article gives a good summary along with a convenient chart.

    http://www.sqlservercentral.com/articles/Administration/100856/

    4. After successful import, rename the original table, rename the new table to the original name, and then create foreign keys and triggers (if any) on the new table.

    5. Smoke test the application to confirm nothing is broken.

    6. Drop the original table (which also should be minimally logged), and then you're all done.

    "Do not seek to follow in the footsteps of the wise. Instead, seek what they sought." - Matsuo Basho