Professional Documents
Culture Documents
IDAT-CHICLAYO 25/01/2012
Si las copias de seguridad las vamos a hacer escribiendo el comando desde el SQL Management Studio, esta cuenta debemos asignarla al motor de SQL Server. Si, como es ms comn, las copias de seguridad sern automatizadas con el agente de SQL Server, es este servicio el que debe ejecutarse con esta cuenta. En cualquier caso (y sin ser especialista en absoluto en SQL Server), mi recomendacin sera que pusisemos ambos servicios a ejecutarse bajo esta cuenta.
GO -- Habilitar la caracterstica xp_cmdshell EXEC sp_configure 'xp_cmdshell', 1 GO -- Refrescar para que el cambio surta efecto RECONFIGURE GO
Ya est.
Lo que estamos haciendo es poner el lenguaje actual en ingls. Yo suelo usar siempre el ingls para todo y tengo los sistemas en este idioma porque considero que tiene muchas ventajas pero t, claro est, puedes usar el idioma que prefieras. El hecho de establecer el idioma es para asegurarnos de que si transportamos el Script a otro servidor diferente los nombres de los archivos de copia de seguridad van a tener nombres consistentes, ya que usaremos el nombre del da de la semana para crear un archivo .bak cada da (lunes, martes, y as sucesivamente). El comando xp_cmdshell de la segunda lnea habilita la conexin a la carpeta de red \backups\SQL que est en nuestro NAS, con direccin IP 192.168.1.1. Podramos haber usado el nombre de red (por ejemplo \\NAS o similar), pero con la IP nos aseguramos de que siempre va a funcionar, pues lo otro a veces he detectado que da problemas. En esta lnea, por tanto, debes poner la ruta de red que queires usar e indicar la clave y nombre de usuario que usaremos para acceder (ver paso 2). Las dos siguientes lneas declaran el nombre y la ruta del archivo de backup que vamos a crear. Lo que yo hago aqu es ponerle como sufijo el nombre del da de la semana en ingls, de forma que se me crean copias de seguridad diarias con el nombre "MiBaseDeDatos_Monday.bak", "MiBaseDeDatos_Tuesday.bak", y as sucesivamente. Con esto consigo tener una copia completa cada da de la semana, con una retencin de 7 das, que se va sobrescribiendo automticamente cuando pasa una semana. Para mi esto es ms que suficiente, pero si quisieras ms retencin o ms de una copia diaria al da tendras que buscar una forma alternativa para nombrar los archivos. La siguiente lnea es una instruccin T-SQL normal y corriente para crear una copia de seguridad, slo que en este caso ya se har directamente sobre la carpeta de red, y no en local, que es lo que desebamos.Finalmente con xp_cmdshell, nos desconectamos del recurso de red. Esto es necesario para que no queden conexiones abiertas y nos impidan volver a reconectar en sucesivas ocasiones.
1. Inicie la instancia de servidor en modo de usuario nico. Para obtener informacin acerca de cmo especificar el parmetro de inicio de usuario nico (-m), vea Cmo configurar opciones de inicio del servidor (Administrador de configuracin de SQL Server). 2. Para restaurar una copia de seguridad de base de datos completa de la base de datos maestra, use la siguiente instruccin RESTORE DATABASETransact-SQL: RESTORE DATABASE master FROM <backup_device> WITH REPLACE La opcin REPLACE indica que SQL Server restaure la base de datos especificada incluso cuando ya exista otra con el mismo nombre. La base de datos existente, si existe, se elimina. En el modo de usuario nico, es recomendable introducir la instruccin RESTORE DATABASE en la utilidad sqlcmd. Para obtener ms informacin, vea Usar la utilidad sqlcmd. IMPORTE: Despus de que la base de datos maestra se haya restaurado, la instancia de SQL Server se cierra y finaliza el proceso sqlcmd. Antes de reiniciar la instancia de servidor, quite el parmetro de inicio de usuario nico. Para obtener ms informacin, vea Cmo configurar opciones de inicio del servidor (Administrador de configuracin de SQL Server). 3. Reinicie la instancia del servidor y contine con otros pasos de la recuperacin, por ejemplo, restaurando otras bases de datos, adjuntando bases de datos y corrigiendo incoherencias de los usuarios. Ejemplo El ejemplo siguiente restaura la base de datos master en la instancia de servidor predeterminada. En el ejemplo se asume que la instancia de servidor ya se ejecuta en modo de usuario nico. El ejemplo inicia sqlcmd y ejecuta una instruccin RESTORE DATABASE que restaura una copia de seguridad de base de datos completa de master desde un dispositivo de disco: Z:\SQLServerBackups\master.bak. NOTA: En una instancia con nombre, el comando sqlcmd debe especificar la opcin S<nombreDeEquipo>\<nombreDeInstancia>. C:\> sqlcmd 1> RESTORE DATABASE master FROM DISK = 'Z:\SQLServerBackups\master.bak' WITH REPLACE;2> GO