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
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.
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.
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
Excelente la explicación.
ResponderBorrarMuchas gracias
de nada, que bueno que te gusto
Borrarhola 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
ResponderBorrarBuenos dias amigo, el SQL SERVER puedes descargarlo aquí https://www.microsoft.com/es-mx/sql-server/sql-server-downloads,
Borrartambié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
Este blog ha sido eliminado por un administrador de blog.
ResponderBorrarEste comentario ha sido eliminado por el autor.
ResponderBorrarSaludos..al momento de ejecutar el sql para OFFline me visualiza el error de Database 'd2db2' cannot be opened because it is offline.
ResponderBorraren ese caso que se debe hacer?
gracias