Database Collation problem when comparing two databases
First: Collations for columns are stored per-each column.

Second: The ALTER DATABASE ... COLLATE ... statement changes only the default collation of the database itself. It does not change the collation of any existing columns within the database. This change affects:


database-level meta-data (mostly names of database-level objects: tables, columns, procedures, functions, triggers, indexes, users, views, constraints, etc, etc) except in Contained databases (where the DB-level meta-data is always Latin1_General_100_CI_AS_KS_WS_SC)
new string columns that do not specify a COLLATE clause. New via:


CREATE TABLE ...
ALTER TABLE ... ADD
DECLARE @TableVariable TABLE ... (these default to the database's collation, not [tempdb]'s collation)

altered string columns that do not specify a COLLATE clause (i.e. ALTER TABLE ... ALTER COLUMN ...)
new or altered columns that do specify COLLATE using DATABASE_DEFAULT
string literals and variables


For an in-depth look at changing database-level (and even instance-level) collations, please see my post:

Changing the Collation of the Instance, the Databases, and All Columns in All User Databases: What Could Possibly Go Wrong?

For more info on working with collations in general, please visit: Collations Info