viernes, 17 de abril de 2020

Cambiar el nombre lógico de una base de Datos

Buenos días, seguimos en cuarentena queridos lectores. El día de hoy veremos cómo cambiar el nombre lógico a una base de datos. Así es, el nombre lógico es distinto al nombre físico y el día de hoy veremos cómo cambiarlo.

El nombre físico de una base de datos es el nombre propiamente, el nombre que vemos en el management studio, aquél que colocamos seguido del comando USE, ese es el nombre físico, sin embargo, una base de datos está formada por diversos archivos, por lo menos dos (DATA y LOG), pero podrían ser más, incluso podrían haber varios archivos de data y varios archivos de LOG, cada uno de esos archivos tiene un nombre y éstos forman el nombre lógico de una base de datos. Pero veamos los ejemplos que es como aprendemos y lo que nos gusta.



Supongamos que tenemos una base de datos productiva, abriremos una nueva sucursal y queremos copiar la estructura de la base de datos productiva actual para tener una nueva base de datos, ya con las tablas, procedimientos, vistas, etc., igual a la productiva, pues lo que haríamos sería Clonar la base de datos de producción, sin embargo después de clonar, podemos ver que el nombre físico de la base de datos esta correcto, sin embargo los nombres lógicos no, pues al clonar se clonaron también los archivos con los nombres originales. Para darnos cuenta de esto, utilizaremos algunas vistas del sistema.

Primero obtendremos la lista de base de datos del Sistema


select name, database_id, is_read_only from sys.databases
where name in ('AGUASCALIENTES', 'STACATARINA')


Con la vista del sistema sys.databases, obtendremos la lista de bases de datos de la instancia, y alguna otra información, como el id y si la base de datos es de solo lectura yo lo filtre por esas dos, porque Aguascalientes era la original y STACATARINA el Clone y vamos a ilustrar el ejemplo


Como podemos apreciar, los id de las bases de datos son 14 y 22, STACATARINA es de solo lectura porque es el Clone de AGUASCALIENTES y recordemos que al realizar el CLONE, la base de datos que resulta, queda como solo lectura.

Ahora viene lo interesante, los nombres lógicos, y para eso, haremos uso de otra vista de sistema.


select database_id, type_desc, name, physical_name from sys.master_files
where database_id in (14,22)


Con la vista de sistema sys.masterfiles, obtenemos la información de los archivos de la base de datos, hay mucha más información, pero de momento nos quedaremos con estas columnas.


Como podemos apreciar, cada base de datos tiene dos archivos, el de datos o ROWS, y el LOG, pero fíjense en el campo name, se llaman igual, tienen los mismos nombres lógicos y diferentes nombres físicos en el campo de physical_name, eso precisamente es lo que vamos a solucionar en éste post

Primero signamos a la base de datos el modo de usuario único, para que únicamente la sesión que estamos controlando pueda utilizar la base de datos:

USE master
GO
ALTER DATABASE STACATARINA SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

Una vez hecho esto, ahora ponemos la base de datos fuera de línea mediante la siguiente instrucción

ALTER DATABASE STACATARINA  SET OFFLINE --Pone fuera de linea la base de datos
go


Una vez hecho esto procedemos a cambiar los nombre lógicos

ALTER DATABASE STACATARINA  MODIFY FILE (NAME=N'AGUASCALIENTES', NEWNAME=N'SANTACATARINA')
GO

ALTER DATABASE STACATARINA  MODIFY FILE (NAME=N'AGUASCALIENTES_log', NEWNAME=N'SANTACATARINA_LOG')
GO


Y por último, ponemos en línea la base de datos

ALTER DATABASE STACATARINA  SET ONLINE --Reactiva la base de datos

Una vez realizado esto, volvemos a los masterfiles, para verificar que todo quedo correcto.


Ya solo queda poner la base de datos como multi_user y tenemos el problema solucionado

ALTER DATABASE STACATARINA SET multi_user
GO

Hasta aquí el post queridos lectores, espero haya sido de su agrado y utilidad, cualquier duda estoy a la orden. Compartan, comenten o den clic en algún anuncio patrocinado. 

Muchas gracias


5 comentarios:

  1. Excelente la explicación.
    Muchas gracias

    ResponderEliminar
  2. hola amigo gracias por estos tips una pregunta como descarga sql server y me podrias copiar tu base de datos para poder practicar aca en mi casa porfa

    ResponderEliminar
    Respuestas
    1. Buenos dias amigo, el SQL SERVER puedes descargarlo aquí https://www.microsoft.com/es-mx/sql-server/sql-server-downloads,

      también puedes consultar este post donde adjunto una base de datos de ejemplos
      https://www.respuestasit.com.mx/2015/06/script-base-de-datos-de-ejemplo.html.

      Espero haberte ayudado

      Eliminar
  3. Luis Emmanuel Uriasabril 20, 2020 11:53 a.m.

    Este blog ha sido eliminado por un administrador de blog.

    ResponderEliminar

Crear un JOB (Tarea Automática) en SQL SERVER

Buenas noches queridos lectores, el día de hoy les explicare los JOBS  en SQL SERVER, un post que tenía tiempo queriendo hacer, pero no hab...