locked
Criar Cursor RRS feed

  • Pergunta

  •  

    Olá pessoal, estou precisando criar um Cursor para rodar o seguinte comando :

    Use 'NOME_DATABASE'

    Dump transaction 'NOME_DATABASE' with no_log

    Para pegar todos os databases, utilizo o comando abaixo :

    select name from master.dbo.sysdatabases

    A idéia é de criar um cursor para rodar o DUMP em todos os Databases do servidor... Alguém poderia me dar um help ?

    Estou fazendo isso, pois o backup do Log, não está limpando os databases, somente se rodo o DUMP antes...

    sábado, 4 de novembro de 2006 02:13

Respostas

  •  

     

    O dump roda no 2000 so para manter a compatibilidade, o correto e usar o backup log truncate only segue script sem cursor mais usando while que eu acho mais leve que cursor.

     

     


     Declare @Db Table (idx int identity(1,1), DbName Varchar(100))

     Insert into @Db (DbName) Select Name From Master..SysDatabases Where DbId >=5 order by Dbid

     Declare @Start Int
     Declare @End Int
     Declare @Command Varchar(1000)
     Select @start = 1, @End = Max(idx) From @Db

     While @Start <= @End
     Begin
     
      Select @Command = 'Backup Log ' + DbName + ' With Truncate_Only ' From @Db Where Idx = @Start
      exec(@Command)
      Select @Start = @Start + 1
     End
     

    Abs.

    segunda-feira, 6 de novembro de 2006 02:34
  • veja se o auto srhink to seu banco esta ativo ( nas propriedades do banco na tab options ), ele nao vai truncar na hora mais depois ele reduz, o que vc. dazer e forcar um dbcc srhinkfile () e colocar dois exec´s dentro do mesmo loop.;

     

    Abs;

    segunda-feira, 6 de novembro de 2006 16:00

Todas as Respostas

  •  

     

    O dump roda no 2000 so para manter a compatibilidade, o correto e usar o backup log truncate only segue script sem cursor mais usando while que eu acho mais leve que cursor.

     

     


     Declare @Db Table (idx int identity(1,1), DbName Varchar(100))

     Insert into @Db (DbName) Select Name From Master..SysDatabases Where DbId >=5 order by Dbid

     Declare @Start Int
     Declare @End Int
     Declare @Command Varchar(1000)
     Select @start = 1, @End = Max(idx) From @Db

     While @Start <= @End
     Begin
     
      Select @Command = 'Backup Log ' + DbName + ' With Truncate_Only ' From @Db Where Idx = @Start
      exec(@Command)
      Select @Start = @Start + 1
     End
     

    Abs.

    segunda-feira, 6 de novembro de 2006 02:34
  •  

    Marcelo,

    Quando faço o backup do Transaction log, o sistema não limpa o Log... Então, ele só limpa depois que rodo o Dump Transaction e depois dou o Shrink... Tem alguma idéia ?

    Mais valeu pelo script, vai me ajudar muito...

    segunda-feira, 6 de novembro de 2006 15:10
  • veja se o auto srhink to seu banco esta ativo ( nas propriedades do banco na tab options ), ele nao vai truncar na hora mais depois ele reduz, o que vc. dazer e forcar um dbcc srhinkfile () e colocar dois exec´s dentro do mesmo loop.;

     

    Abs;

    segunda-feira, 6 de novembro de 2006 16:00