Cambiar el Collate de la Model, TempDB, Master en SQL 2005

La TempDB, en SQL 2005, es recreada cada vez que el SQL Server es reiniciado utilizando una copia de la base Model. Lo cual tiene su lógica y me obliga a cambiar la Model para cambiar la TempDB.

En caso de haberlo intentado hacerlo desde el T-SQL, recibimos este error:

ALTER DATABASE model COLLATE SQL_Latin1_General_CP1_CI_AS;

Cannot alter the database 'model' because it is a system database. (Microsoft SQL Server, Error: 3708)

Esto sucede porque todas las bases del sistema (incluyendo la model y la tempdb) deben tener el mismo collate que la master ;P
Entonces, para cambiar la tempdb, necesitamos cambiar la model… y para cambiar la model necesitamos cambiar la master!!!

En las versiones anteriores de SQL, lo haríamos con REBUILDM.EXE, pero este no funciona en 2005.
En 2005 necesitamos algo… más oscuro… más del tipo de cosas que nos gustan ;p

La receta:

1. Detener el servicio de SQL

2. Reconstruir las bases de datos del sistema:

start /wait setup.exe /qb INSTANCENAME=[INSTANCE_NAME] REINSTALL=SQL_Engine
REBUILDDATABASE=1 SAPWD=[CLAVE-DE-SA] SQLCOLLATION=[NUEVO-COLLATE]

.
Esto se debe hacer desde el CD de instalación y NO desde la carpeta Setup Bootstrap.
También cabe señalar que la contraseña [CLAVE-DE-SA] debe ser de tipo fuerte, es decir, números minúsculas, mayúsculas y símbolos.
El nombre de la instancia se obtiene con:

Select SERVERPROPERTY('InstanceName')

3. Reiniciar los servicios de SQL en modo normar

Y antes que nada pegarle una mirada a:
http://msdn2.microsoft.com/en-us/library/ms179254.aspx !!!