Espero que você possa me apontar na direção certa. Eu não sou um usuário frequente de T-SQL, mas fiz algumas pesquisas no google e encontrei o script abaixo. Corrigi um pouco o script.
Eu quero que o script:
- Para selecionar todos os bancos de dados, exceto os bancos de dados do sistema.
- Para definir a recuperação como simples.
- Para reduzir os arquivos de log para cada banco de dados (.ldf), exceto o banco de dados do sistema
O script:
USE MASTER
declare
@isql varchar(2000),
@dbname varchar(64)
declare c1 cursor for select name from master..sysdatabases where name not in ('master','model','msdb','tempdb','ReportServer','ReportServerTempDB')
open c1
fetch next from c1 into @dbname
While @@fetch_status <> -1
begin
select @isql = 'ALTER DATABASE @dbname SET RECOVERY SIMPLE'
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
exec(@isql)
select @isql='USE @dbname checkpoint'
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
exec(@isql)
select @isql='DBCC SHRINKFILE @dbname.ldf'
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
exec(@isql)
fetch next from c1 into @dbname
end
close c1
deallocate c1
Respostas:
Use o Script para reduzir os arquivos de log de todos os bancos de dados, exceto os DBs do sistema.
fonte
------...
resultaria em erro, mas o destaque da sintaxe me deu uma dica sobre o que realmente aconteceria. Arrumado!Eu sempre tive tanta aversão aos cursores, que escrevi isso para entender melhor. É totalmente baseado na resposta da AA.SC (obrigado por falar nisso), apenas da maneira que eu acho. Se isso combina com o que os outros pensam, então ótimo. Observe que, depois disso, não o coloquei de volta no modo de recuperação total.
fonte