I ran into an issue where SQL Server was installed with the wrong collation and a lot of user databases were already attached. I could easily backup the databases, uninstall, reinstall, and restore the databases back, but this could take literally all day. There is a better and much faster way to make this change. This post will go over it….
First, backup all databases (duh)
Next, we’ll verify the current collation. On this server it’s set to Latin1_General_CI_AS and I want to change it to SQL_Latin1_General_CP1_CI_AS.
Next, we’ll double check and make sure we have backups of all databases ?
Open SQL Configuration Manager and turn off all SQL Services:
Open Command Prompt (as administrator) and browse to the BINN directory and type the following command.
sqlservr -m -T4022 -T3659 -q”SQL_Latin1_General_CP1_CI_AS”
-m – starts SQL Server in single user admin mode
-T4022 – bypasses all startup procedures
-T3659 – undocument trace flag. enables logging of all errors to the errorlog during startup
-q – new collation
Before hitting Enter, let’s triple check and make sure those backups exist.
Hit Enter.
SQL will run through its startup routine:
Voila. Recovery is complete.
Close Command Prompt and start the SQL services back up.
Back in SQL Server Management Studio, verify that the collation has changed.
Hey Brady, So what really happened here…can you explain in more detail what the command did. Thanks Go Titans.
Paul, thanks for reaching out. I updated the post so that it explains what is happening in the CMD statement.