What's the best way to add columns to large production tables on SQL Server 2008 R2? According to Microsoft's books online:
The changes specified in ALTER TABLE are implemented immediately. If the changes require modifications of the rows in the table, ALTER TABLE updates the rows. ALTER TABLE acquires a schema modify lock on the table to make sure that no other connections reference even the metadata for the table during the change, except online index operations that require a very short SCH-M lock at the end.
(http://msdn.microsoft.com/en-us/library/ms190273.aspx)
On a large table with millions of rows, this can take a while. Is taking an outage the only option? What's the best way to handle this kind of situation?