sql >> Base de Datos >  >> RDS >> Sqlserver

Restauración de la base de datos maestra de SQL Server

INTRODUCCIÓN

La base de datos maestra contiene registros de la estructura/configuración tanto de la instancia actual como de todas las demás bases de datos. Cuando ejecuta sp_configure , está escribiendo datos en la base de datos maestra. También contiene la mayoría de las vistas de administración dinámica que son necesarias para monitorear la instancia.

La importancia de la base de datos maestra es crucial. Primero, tiene la información necesaria para abrir todas las demás bases de datos y debe abrirse primero. Luego, involucra a todos los principales de nivel de instancia para la instancia actual.

Es crucial hacer una copia de seguridad de la base de datos maestra diariamente. Igualmente importante es saber cómo restaurar la base de datos maestra a la instancia. Los casos más frecuentes son el bloqueo de la base de datos o la necesidad de restaurar la base de datos maestra a otra instancia cuando ya no se usa la instancia de origen. En este artículo, examinaremos el caso específico de mover la base de datos maestra a otra instancia.

COMPROBAR EL ESTADO DE LOS SERVICIOS DE LA APLICACIÓN

Restaurar la base de datos maestra a otra instancia implicará iniciar la instancia en el modo de usuario único. Por lo tanto, es esencial asegurarse de que la sesión activa sea la única que controle la instancia.

Para eso, impida que todos los servicios de la aplicación accedan a la instancia, especialmente si dichas aplicaciones tienen acceso privilegiado. Pueden surgir problemas si inicia la instancia en el modo de usuario único mientras la aplicación ya ha establecido una sesión. En este caso, no podrá continuar con una sesión interactiva desde SQL Server Management Studio.

DETENER LOS SERVICIOS DEL SERVIDOR SQL

Detenga todos los servicios de SQL Server con el Administrador de configuración de SQL Server:haga clic con el botón derecho en cada servicio y seleccione Detener desde el menú contextual (ver fig. 2).

INICIA EL SERVIDOR SQL EN EL MODO DE USUARIO ÚNICO

Para restaurar la base de datos maestra, necesita la instancia de SQL Server en el modo de usuario único. Siga los siguientes pasos:

  1. Abrir solicitud de CMD
  2. Navegue a C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Binn
  3. Problema sqlservr –m O NET inicie MSSQLServer /c /m /T3604

O

Tenga en cuenta que el paso 2 se refiere al Binn ubicación del directorio. Puede ser diferente en su instalación.

Puede encontrar el directorio necesario consultando la pestaña Servicio de las propiedades del servicio de SQL Server en el Administrador de configuración de SQL Server (consulte la figura 4):

RESTAURAR MAESTRO

Cuando restaura maestro de una instancia a otra, obtiene nuevos principales y nuevos valores en los catálogos del sistema que contienen valores tales como el nombre de la instancia e incluso la ubicación de tempdb.

Antes de restaurar el maestro, asegúrese de que las rutas del servidor de destino estén disponibles para los archivos TempDB según lo definido en el servidor de origen. De lo contrario, la nueva instancia no se iniciará correctamente después de que se complete la restauración.

  1. Abrir SQL Server Management Studio
  2. Ejecute el código del Listado 1 en SQL Server Management Studio
-- Listing 1: Restore Master Database
restore database master from disk ='<full_path_of_backup>' with replace;

Nota: La instancia se cerrará una vez que se complete la restauración.

CAMBIO DE CUENTA DE SERVICIO

Para iniciar SQL Server después de que se complete la restauración, haga lo siguiente:

  1. Cambie la cuenta de servicio de SQL Server a la cuenta actualmente iniciada.
  2. Abra Inicio> Todos los programas> Microsoft SQL Server 2005> Herramientas de configuración> Administrador de configuración de SQL Server
  3. Haga clic derecho en cada servicio y seleccione Propiedades
  4. En Iniciar sesión pestaña, ingrese el nombre de cuenta deseado y la contraseña correspondiente.

NOMBRE DEL SERVIDOR

La base de datos maestra contiene el nombre de la instancia donde se encuentra. Dado que la copia de seguridad restaurada en este escenario es de una instancia diferente, debe actualizar el nombre del servidor mediante procedimientos almacenados, como se muestra en el Listado 2.

-- Listing 2: Change the Instance Name for a SQL Server Instance
-- Check the current server name

select @@SERVERNAME

-- Change the server name as seen by the database

sp_dropserver 'EUK-POSTSVR-01'--Present Server name goes here
go 
sp_addserver 'EUK-POSTBKP-01','local'--New Server name goes here 
go

Reinicie SQL Server desde el Administrador de configuración de SQL Server para que se aplique el cambio de nombre.

INICIO DE SESIÓN DEL SERVICIO

La base de datos maestra también registra todos los inicios de sesión asociados con la instancia de origen. En la nueva instancia, debe limpiar los inicios de sesión innecesarios. Después de eso, puede agregar los grupos de SQL Server predeterminados locales a la instancia actual.

-- Listing 3: Remove Unnecessary Logins
drop login [EUK-POSTSVR-01\SQLServer2005MSSQLUser$EUK-POSTSVR-01$MSSQLSERVER]
drop login [EUK-POSTSVR-01\SQLServer2005MSFTEUser$EUK-POSTSVR-01$MSSQLSERVER]
drop login [EUK-POSTSVR-01\SQLServer2005SQLAgentUser$EUK-POSTSVR-01$MSSQLSERVER]

-- Listing 4: Add local default SQL Server Groups
create login [EUK-POSTBKP-01\SQLServer2005MSSQLUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;
create login [EUK-POSTBKP-01\SQLServer2005SQLAgentUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;
create login [EUK-POSTBKP-01\SQLServer2005MSFTEUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;

Nota: Asegúrese de que las cuentas de servicio del servidor y del agente pertenezcan a sus respectivos grupos en el nivel del sistema operativo y que estos grupos de sistemas operativos tengan los permisos necesarios. La tabla 1 muestra los permisos para las cuentas de servicio de SQL Server.

S/No Privilegio Requerido por
1. Iniciar sesión como servicio Cuenta de servicio de SQL Server Cuenta de servicio de Agente SQL Cuenta de servicio de integración
2. Actuar como parte del sistema operativo Cuenta de servicio de SQL Server Cuenta de servicio de SQL Agent
3 Iniciar sesión como un trabajo por lotes Cuenta de servicio de SQL Server Cuenta de servicio de SQL Agent
4. Reemplazar un token de nivel de proceso Cuenta de servicio de SQL Server Cuenta de servicio de SQL Agent
5. Omitir comprobación de poligonal Cuenta de servicio de SQL Server Cuenta de servicio de Agente SQL Cuenta de servicio de integración
6. Ajustar las cuotas de memoria para un proceso Cuenta de servicio de SQL Server Cuenta de servicio de SQL Agent
7. Crear objetos globales Cuenta de servicio de integración
8. Bloquear páginas en memoria (AWE) Cuenta de servicio del servidor SQL

Una vez que se complete la limpieza en el nivel de la base de datos, vuelva a la cuenta de servicio regular. Reinicie la instancia una vez más desde el Administrador de configuración de SQL Server.

En este punto, puede iniciar los servicios de la aplicación.

CONCLUSIONES

Durante la ejecución del escenario anterior, pueden producirse errores. A continuación, verá la información sobre estos errores.

Si soluciona los problemas, puede usar herramientas como ProcMon de SysInternal. Aíslan los problemas de permisos de archivos al iniciar SQL Server (consulte la figura 7).

S/N Error Causa/Solución
1. No se pudo iniciar SQLServerAgent (motivo:no se puede conectar al servidor '(local)'; SQLServerAgent no se puede iniciar). Crear inicios de sesión para todas las cuentas de servicios locales
2. El proveedor de conexión local del servidor no pudo escuchar en [ \\.\pipe\SQLLocal\MSSQLSERVER ]. Error:0x5 La inicialización de TDSSNIClient falló con el error 0x5, código de estado 0x40. La inicialización de TDSSNIClient falló con el error 0x5, código de estado 0x1. SQL Server no pudo generar el subproceso FRunCM. Consulte el registro de errores de SQL Server y los registros de eventos de Windows para obtener información sobre posibles problemas relacionados. No se pudo iniciar la biblioteca de red debido a un error interno en la biblioteca de red. Para determinar la causa, revise los errores inmediatamente anteriores a este en el registro de errores. SQL Server se inició anteriormente con una cuenta de servicio diferente y se canceló a la fuerza. Ocurre durante la restauración de la base de datos maestra. Para corregir esto, inicie la instancia con la cuenta de servicio utilizada en el paso 3 y luego detenga el servicio correctamente. Después de eso, puede comenzar con la cuenta de servicio regular.
3. No se pudo iniciar SQLServerAgent (motivo:Error al crear una nueva sesión). Otorgue los permisos apropiados a la cuenta del Agente SQL

REFERENCIAS

Base de datos maestra