• I have to agree with the previous posters, using the GUI to generate the change script is the best approach. The column being changed stays in the same ordinal position, the script runs inside a transaction, and preserves all the indexes, constraints etc.

    You can't have users in the db when you're making this type of change, so you can't avoid having at least some downtime.