As the other say, you need cast the collation on one side, so that SQL Server knows under which rules to perform the =
test.
As for what is best practice, there are two things to consider:
- Correctness. That is, by which rules do you want to run the join? One collation is case-insensitive, the other is binary, that is case-sensitive.
- Performance. When you cast the collation of a column, any index on that column is rendered useless, since the organisation of the index depends on the collation. If one table is big and the other is small, it is better to cast the collation on the small table.
If these two points are in conflict, the first point wins, obviously.