Help Changing Collate of ALL databases
I had to do this some years ago for a SQL Server 2005 DB.  It was awful.  I've not had to do it on 2008, thankfully, but as far as I know it still works the same way.

Unless specified explicitly, the collation is copied from the next higher object when an object is created.  So creating a table will copy the database's collation.  Collations are not inherited dynamically at runtime i.e. changing the DB's collation will not change any table's collation.

So you are on the right track.  You have to change the collation at every level from column up.  Moreover you will almost certainly want to change the collation for the system databases (master, model, msdb and tempdb) otherwise you may get collation conflicts when a query plan uses tempdb and you will have such plans.

Furthermore I remember that the new column collations did not take effect until the data had been written.  I ended up performing

update &lt;table&gt;
set &lt;string_column1&gt; = &lt;string_column1&gt;,
    &lt;string_column2&gt; = &lt;string_column2&gt;;


for every table in the database.

If I ever had to do it again I'd install a new instance from scratch with the proper collation, then migrate the tables, then the data, then the constraints.  Hopefully you have good source control in place.