Mostrando entradas con la etiqueta 2005. Mostrar todas las entradas
Mostrando entradas con la etiqueta 2005. Mostrar todas las entradas

martes, 29 de noviembre de 2011

[Solucionado] Crear un Trabajo de Respaldo (backup Job) en SQL Server y guarde en una carpeta con el nombre de la fecha del respaldo

Algo muy importante en un servidor es realizar respaldos automáticos, a continuación un ejemplo paso a paso para: realizar una tarea programada que realice un trabajo a una hora determinada, cree una carpeta con la fecha con formato YYYYMMDD (Y=Año/Year , M=Mes/Month , D=Día/Day) y dentro de la misma guardar el respaldo de la base de datos.


1. Ingresar en Microsoft SQL Server Management Studio.

2. En el explorador de objetos (Object Explorer), hacer clic con el botón derecho sobre Trabajo (Job), clic en Nuevo Trabajo (New Job...).

3. Escriba el nombre que tendrá el trabajo en el campo Nombre (Name), luego seleccione el Propietario (Owner).

4. Haga clic en la página de Pasos (Steps) y luego clic en el botón Nuevo...(New).

5. Escriba el nombre del paso (Step Name), todos los demás campos se pueden dejar igual, en el comando debe escribir los siguientes comandos para poder crear una carpeta utilizando comandos TSQL.
declare @MD varchar(100), @wk_no varchar(100)
set @wk_no = 'C:\Respaldos\' + Convert(VarChar(4),DatePart(Year,GetDate()))+Right('0'+Convert(VarChar(2),DatePart(Month,GetDate())),2)+Right('0'+Convert(VarChar(2),DatePart(Day,GetDate( ))),2)
SET @MD = ' mkdir ' + @wk_no
EXEC xp_cmdshell @MD, no_output


6. Hacer clic en Aceptar (Ok), yse debe hacer clic en el botón de Nueva Consulta, para ejecutar un comando para permitir utilizar el xp_cmdshell.

7. Se debe ejecutar la siguiente sentencia SQL para permitir realizar cambios, de lo contrario aparecería un error.
EXEC sp_configure 'allow updates', 0;
RECONFIGURE;
El error que aparecería si omitimos este paso sería:
Msg 5808, Level 16, State 1, Line 1
Ad hoc update to system catalogs is not supported.

8. Escribir EXEC sp_configure 'xp_cmdshell', 1 y luego clic en el botón de Ejecutar. 
En el cuadro de mensajes aparecerá: Configuration option 'xp_cmdshell' changed from 0 to 1. Run the RECONFIGURE statement to install.
Si hemos omitido el paso anterior a este pudiera aparecer el siguiente mensaje:

Msg 5808, Level 16, State 1, Line 1
Ad hoc update to system catalogs is not supported.


9. Una vez realizado lo indicado anteriormente, se procede a crear un nuevo paso (Step). Para ello dar doble click sobre el nombre del Trabajo (Job), luego clic en Pasos (Steps) y clic en el botón Nuevo (New)

10. Escriba el siguiente comando para realizar el respaldo de una base de datos dentro de la carpeta con la fecha del día que se está ejecutando.


Declare @Ruta VarChar(100)
SET @Ruta = 'C:\Respaldos\'  + Convert(VarChar(4),DatePart(Year,GetDate()))+Right('0'+Convert(VarChar(2),DatePart(Month,GetDate())),2)+Right('0'+Convert(VarChar(2),DatePart(Day,GetDate( ))),2) + '\'
Set @Ruta=@Ruta+'prueba_'+Convert(VarChar(4),DatePart(Year,GetDate()))+Right('0'+Convert(VarChar(2),DatePart(Month,GetDate())),2)+Right('0'+Convert(VarChar(2),DatePart(Day,GetDate( ))),2)

BACKUP DATABASE nombrebasededatosprueba TO DISK = @Ruta WITH INIT


11. Clic en Aceptar (Ok).


Si al tratar de ejecutar el comando EXEC sp_configure 'xp_cmdshell', 1 llega a aparecer el siguiente error:
SQL 2005 Msg 15123, Level 16, State 1, Procedure sp_configure, Line 51  The configuration option 'xp_cmdshell' does not exist, or it may be an advanced option.

Debes ejecutar la siguiente consulta en SQL:
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO



NOTA:
Para ahorrar espacio cuando se hacen los respaldos se puede activar la compresión (sólo aplica a partir de SQL Sver 2008 en adelante):

sp_configure 'backup compression',1
go
reconfigure;
go


[Solucionado] Crear carpetas utilizando SQL Server (TSQL) comando xp_cmdshell

En SQL Server (cualquier versión), es posible programas trabajos (Jobs) que se ejecuten a una hora determinada, por ejemplo si queremos hacer algún respaldo de una base de datos. Si queremos ser muy organizados podemos crear una carpeta con la fecha y guardar dentro todos los respaldos.

Si tratamos de hacer un respaldo dentro de una carpeta que no existe aparecerá el siguiente error en SQL:

Date: 11/28/2011 11:00:00 PM
Log: Job History (prueba)
Step ID: 1
Server: NOMBRE_SERVIDOR\INSTANCIASQL
Job Name: prueba_yolosolucionoasi.blogspot.com
Step Name: prueba
Duration: 00:00:00
Sql Severity: 16
Sql Message ID: 3013
Operator Emailed
Retries Attempted: 0
Message: Executed as user: NT AUTHORITY\SYSTEM. Cannot open backup device 'C:\Respaldos\prueba\basededatos_20111128'. Operating system error 3(The system cannot find the path specified.). [SQLSTATE 42000] (Error 3201)  BACKUP DATABASE is terminating abnormally. [SQLSTATE 42000] (Error 3013).  The step failed.

Para solucionar esto debemos crear un Trabajo (Job), ejecutando un comando de DOS para crear la carpeta con el nombre deseado, por ejemplo:


declare @MD varchar(100), @wk_no varchar(100)
set @wk_no = 'C:\Respaldos\' + Convert(VarChar(4),DatePart(Year,GetDate()))+Right('0'+Convert(VarChar(2),DatePart(Month,GetDate())),2)+Right('0'+Convert(VarChar(2),DatePart(Day,GetDate( ))),2)
SET @MD = ' mkdir ' + @wk_no
EXEC xp_cmdshell @MD, no_output


Esto crearía una carpeta con la fecha de la siguiente forma: c:\respaldos\yyyymmdd

Luego de crear el trabajo antes de comenzar a ejecutarlo se debe autorizar al servidor para que pueda ejecutar comandos 'xp_cmdshell', de lo contrario aparecería el siguiente error:
Date: 11/29/2011 3:14:19 PM
Log:  Job History (Respaldos)
Step ID: 1
Server: NOMBRE_SERVIDOR\INSTANCIASQL
Job Name: Respaldos
Step Name: Crear carpeta para respaldo
Duration: 00:00:00
Sql Severity: 16
Sql Message ID: 15281
Operator Emailed
Retries Attempted: 0
Message: Executed as user: NT AUTHORITY\SYSTEM. SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', see "Surface Area Configuration" in SQL Server Books Online. [SQLSTATE 42000] (Error 15281).  The step failed.

Para permitir ejecutar xp_shell:
EXEC sp_configure 'xp_cmdshell', 1



Más información:
[Solucionado] Crear un Trabajo de Respaldo (backup Job) en SQL Server y guarde en una carpeta con el nombre de la fecha del respaldo
http://yolosolucionoasi.blogspot.com/2011/11/solucionado-crear-un-trabajo-de.html