• Ok, in our shop we do the following when working with large tables and transactions.

    --This section strictly creates the table, and nothing else.

    SELECT ColumnOne, ColumnTwo, ColumnThree... INTO TableName_Destination

    FROM TableName_Source

    WHERE 1 = 0

    --This section copies the required data into the newly created table, with no metadata locks.

    INSERT INTO TableName_Destination

    SELECT ColumnOne, ColumnTwo, ColumnThree...

    FROM TableName_Source

    The reason for the (WHERE 1 = 0) is to reduce locking on the metadata tables. The typical locking required when using (WHERE 1= 0) on the metadata tables is less than a second. This should alleviate your problems.

    😀