SQL Server: ¿cómo cambiar el nombre de la instancia default?

dev 18 de nov. de 2021

No se puede.

Se puede cambiar el nombre del servidor, pero ese no era mi problema. Mi asunto es que estoy trabajando en un proyecto que tiene todos los web.config apuntando a localhost\sqlexpress y yo tengo sql server developer edition en mi máquina, entonces hice una googleada y nada, no hay chanza de ponerle nombre de instancia a una instancia default, así que fue más fácil instalar una instancia nueva y ponerle de nombre sqlexpress, así, tengo un sql developer edition con nombre de express :P

para migrar los datos sólo hay que detach y re-attach. recomiendo NO poner las bases de datos como "single user" ni ninguna otra cosa, porque si tienes un chingo de datos como yo (más de 100GB) se va a tardar un buen esa madre. esta operación sólo es cosa de segundos.

saludos y suerte.

/* ejecutar en server origen */
SELECT DISTINCT'exec sp_detach_db ''' + DB_NAME(dbid) + ''';' FROM master.dbo.sysaltfiles
WHERE dbid > 4
GO
/* ejecutar results server origen*/

WITH mdf
AS (
    SELECT
      dbid,
      DB_NAME(dbid) db_name,
      fileid,
      filename
    FROM master.dbo.sysaltfiles
    WHERE dbid > 4
      AND DATABASEPROPERTYEX(DB_NAME(dbid), 'Status') = 'ONLINE'
   )
SELECT
  db_name,
  'exec sp_detach_db @DB = N''' + db_name + ''';' Detach,
  'exec sp_attach_db @DB = N''' + db_name + '''' + (SELECT
    ', @F' + CAST(fileid AS varchar) + '=N''' + filename + ''''
  FROM mdf WHERE mdf.dbid = logs.dbid FOR xml PATH (''))+ ';' AS Attach
FROM (SELECT DISTINCT dbid, db_name FROM mdf) logs
/* ejecutar results en server destino*/

Etiquetas