One of our Dotnetnuke sites couldn't access the Site Log in the administrator section. The site displayed something along the lines of 'Critical error has occurred' but after logging in as host I found the full description to be:
Cannot resolve the collation conflict between SQL_Latin1_General_CP1_CI_AS and Latin1_General_CI_AS
This helpful post on the community forums led to the solution. To sum it up, the Dotnetnuke database had a different collation to that of the tempdb and server. So for Dotnetnuke to function properly all three collation settings need to be the same. In my case, the server default and tempdb collation was set as Latin1_General_CI_AS while the Dotnetnuke database had a collation of SQL_Latin1_General_CP1_CI_AS. You can use the following SQL to determine the existing collation settings of the three:
SELECT
DATABASEPROPERTYEX( '[Name of DNN database]' , 'Collation' ) AS DotNetNukeDB_Collation,
DATABASEPROPERTYEX( 'tempdb' , 'Collation' ) AS TempDB_Collation,
SERVERPROPERTY( 'Collation' ) AS Server_Default_Collation
So I needed to change the collation of my Dotnetnuke database. It is possible to use the ALTER DATABASE SQL command to do this but certain objects will retain the old collation (see the remarks on this MSDN article). The only way to completely change the collation of all objects is to create a new database with the desired collation and copy all the data across. I used the 'Import Data' functionality in SQL 2005 Management Studio, making the task relatively painless. I had to remember to transfer logins, stored procedures and functions also (I did this using the 'Generate Scripts' wizard).
Jimmy