@bobnoordam

Resolving coalation conflicts with temporary tables

When writing long query’s or stored procedures using temporary tables, you may run into an error like:

Cannot resolve the collation conflict between “Latin1_General_CI_AS” and “SQL_Latin1_General_CP1_CI_AS” in the equal to operation.

The cause of this error is that the tables you are querying against have a different collation then the server default. This causes the temporary tables in TempDb.. to have a different collation too. To specify the collation your database has during the creation of your temptable, implement it like this:

-- Clear out temp. table if it already exists
begin try
    drop table #sometable
end try
begin catch
end catch
  
-- Create with enforced collation
create table #sometable (
field1 nvarchar(50) collate Latin1_General_CI_AS,
field2 nvarchar(50) collate Latin1_General_CI_AS,
.....
)