J'espère que vous pourrez m'orienter dans la bonne direction. Je ne suis pas un utilisateur fréquent de T-SQL, mais j'ai fait quelques recherches sur Google et j'ai trouvé le script ci-dessous. J'ai un peu corrigé le script.
Je veux que le script:
- Pour sélectionner toutes les bases de données, à l'exception des bases de données système.
- Pour définir la récupération sur simple.
- Pour réduire les fichiers journaux pour chaque base de données (.ldf), à l'exception de la base de données système
Le scénario:
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
Réponses:
Utilisez Script pour réduire les fichiers journaux de toutes les bases de données autres que les bases de données système.
la source
------...
entraînerait une erreur, mais la mise en évidence de la syntaxe m'a donné un indice sur ce qui se passerait réellement. Soigné!J'ai toujours eu une telle aversion pour les curseurs, que j'ai écrit cela comme je peux mieux le comprendre. C'est totalement basé sur la réponse d'AA.SC (merci en passant), juste d'une manière que je pense. Si cela correspond à ce que les autres pensent, alors tant mieux. Notez cependant que je ne l'ai pas remis en mode de récupération complète par la suite.
la source