Espero que puedas señalarme en la dirección correcta. No soy un usuario frecuente de T-SQL, pero busqué en Google y encontré el script a continuación. Corregí un poco el guión.
Quiero que el guión:
- Para seleccionar todas las bases de datos, excepto las bases de datos del sistema.
- Para establecer la recuperación a simple.
- Para reducir los archivos de registro para cada db (.ldf), excepto el sistema db
La secuencia de comandos:
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
Respuestas:
Use Script para reducir los archivos de registro de todas las bases de datos que no sean las bases de datos del sistema.
fuente
------...
provocaría un error, pero el resaltado de sintaxis me dio una pista sobre lo que realmente sucedería. ¡Ordenado!Siempre tuve tanta aversión a los cursores, que escribí esto porque puedo entenderlo mejor. Está totalmente basado en la respuesta de AA.SC (gracias por cierto), solo de una manera que creo. Si esto coincide con lo que otros piensan, entonces genial. Tenga en cuenta que no lo puse nuevamente en modo de recuperación completa después.
fuente