Procedure Backup

15/10/2003 - 01:06 por Diego Uribe | Informe spam
Hola todos tengo el siguiente procedure que se totea, alguna idea de porque
estara botando:

Servidor: mensaje 203, nivel 16, estado 2, procedimiento DGU_Backup, línea
32

Gracias desde ya

Diego

/***************************************************************************
**/

CREATE PROCEDURE DGU_Backup
@Path varchar(255)
AS
BEGIN
DECLARE @sql varchar(2000);
DECLARE @pth varchar(50);
DECLARE @bd varchar(50);
DECLARE @cont int;
DECLARE @max int;

SET CONCAT_NULL_YIELDS_NULL OFF;
Set @sql='';
Set @cont=1
Select @max=count(*) From sysdatabases Where dbid >= 7;
DECLARE bd_cur CURSOR FOR
Select sysdatabases.name From sysdatabases Where dbid >= 7;
OPEN bd_cur;
FETCH NEXT FROM bd_cur INTO @bd;
WHILE ( @cont <= @max )
BEGIN
Set @pth = @path + @bd;
Set @sql='BACKUP DATABASE [' + @bd + '] ';
Set @sql=@sql + 'TO DISK = N''' + @pth + ''' WITH INIT , NOUNLOAD , ';
Set @sql=@sql + 'NAME = N''Copia de seguridad ' + @bd + ''', SKIP ,
STATS = 10, NOFORMAT ';
Set @sql=@sql + 'DECLARE @i INT select @i = position from msdb..backupset
';
Set @sql=@sql + 'where database_name=''' + @bd + '''and ';
Set @sql=@sql + 'type!=''F'' and backup_set_id=(select max(backup_set_id)
';
Set @sql=@sql + 'from msdb..backupset ';
Set @sql=@sql + 'where database_name=''' + @bd + ''') ';
Set @sql=@sql + 'RESTORE VERIFYONLY FROM DISK = N''' + @pth + ''' WITH
FILE = @i';
insert into test values (@sql);
Exec @sql;
Set @cont = ( @cont + 1 );
FETCH NEXT FROM bd_cur INTO @bd;
End;
CLOSE bd_cur;
DEALLOCATE bd_cur;
END;

/***************************************************************************
**/
 

Leer las respuestas

#1 Javier Loria
15/10/2003 - 04:58 | Informe spam
Hola Diego:
A mi me corrio bien tu codigo, (excepto que le elimine el INSERT INTO
Test).
Sera posible que tengas algo en particular con las BD, nombres muy
largos o con simbolos especiales incompatibles con el Sistema Operativo?

Saludos,



Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Diego Uribe escribio:
Hola todos tengo el siguiente procedure que se totea, alguna idea de
porque estara botando:

Servidor: mensaje 203, nivel 16, estado 2, procedimiento DGU_Backup,
línea 32

Gracias desde ya

Diego




/***************************************************************************
**/

CREATE PROCEDURE DGU_Backup
@Path varchar(255)
AS
BEGIN
DECLARE @sql varchar(2000);
DECLARE @pth varchar(50);
DECLARE @bd varchar(50);
DECLARE @cont int;
DECLARE @max int;

SET CONCAT_NULL_YIELDS_NULL OFF;
Set @sql='';
Set @cont=1
Select @max=count(*) From sysdatabases Where dbid >= 7;
DECLARE bd_cur CURSOR FOR
Select sysdatabases.name From sysdatabases Where dbid >= 7;
OPEN bd_cur;
FETCH NEXT FROM bd_cur INTO @bd;
WHILE ( @cont <= @max )
BEGIN
Set @pth = @path + @bd;
Set @sql='BACKUP DATABASE [' + @bd + '] ';
Set @sql=@sql + 'TO DISK = N''' + @pth + ''' WITH INIT ,
NOUNLOAD , '; Set @sql=@sql + 'NAME = N''Copia de seguridad ' +
@bd + ''', SKIP ,
STATS = 10, NOFORMAT ';
Set @sql=@sql + 'DECLARE @i INT select @i = position from
msdb..backupset ';
Set @sql=@sql + 'where database_name=''' + @bd + '''and ';
Set @sql=@sql + 'type!=''F'' and backup_set_id=(select
max(backup_set_id) ';
Set @sql=@sql + 'from msdb..backupset ';
Set @sql=@sql + 'where database_name=''' + @bd + ''') ';
Set @sql=@sql + 'RESTORE VERIFYONLY FROM DISK = N''' + @pth + '''
WITH FILE = @i';
insert into test values (@sql);
Exec @sql;
Set @cont = ( @cont + 1 );
FETCH NEXT FROM bd_cur INTO @bd;
End;
CLOSE bd_cur;
DEALLOCATE bd_cur;
END;




/***************************************************************************
**/

Preguntas similares