Я надеюсь, что вы можете указать мне в правильном направлении. Я не частый пользователь T-SQL, но я немного погуглил и нашел скрипт ниже. Я немного исправил сценарий.
Я хочу, чтобы скрипт:
- Выбрать все базы данных, кроме системных БД.
- Чтобы восстановить простой.
- Чтобы сжать файлы журнала для каждого БД (.ldf), кроме системного БД
Сценарий:
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
Ответы:
Используйте Script для сжатия файлов журнала всех баз данных, кроме системных.
источник
------...
приведет к ошибке, но подсветка синтаксиса дала мне подсказку о том, что на самом деле произойдет. Ухоженная!У меня всегда было такое отвращение к курсорам, что я написал это, поскольку я могу лучше понять это. Это полностью основано на ответе AA.SC (спасибо, кстати), просто так, как я думаю. Если это сочетается с тем, что думают другие, тогда отлично. Обратите внимание, я не вернул его в режим полного восстановления после этого.
источник