What is the most efficient way to alter a column definition in a table with millions of rows
Would it be faster to:


Create a new table with the correct definition for Column1
INSERT INTO &lt;NewTable&gt; SELECT * FROM &lt;OriginalTable&gt;;
Rename OriginalTable to OriginalTable_old; Rename NewTable to OriginalTable
Validate and Drop OriginalTable_old


The advantage here is that you do not hold a lock on the Original table for the duration of the operation. The table should only be locked during the rename phase. (It assumes that SQL Server supports an object level rename.)