Я надеюсь, что вы можете указать мне в правильном направлении. Я не частый пользователь 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
Почему, почему, почему? И что такое «правильное направление»? Скрипт не работает? Если так, то как? Вы получаете сообщение об ошибке? Что это? Вероятно, нужна команда USE в последнем блоке. Но опять же: почему, почему, почему?
—
Аарон Бертран
Потому что файлы .ldf занимают 70% дискового пространства на сервере. Но если вы знаете лучший способ, пожалуйста, просветите меня. Я не знаю, работает ли скрипт, я просто не могу его запустить. Я должен быть уверен, что это работает в первую очередь, поскольку это производственная среда.
—
Арвиддк
У вас нет среды разработки или тестирования, где вы можете это проверить? Честно говоря, я бы ничего не взял отсюда, независимо от того, кто написал это, и применил бы это к производству, основываясь только на заверениях незнакомцев в Интернете ...
—
Аарон Бертран
@Arviddk Знаете ли вы, каковы последствия изменения модели восстановления с FULL / BULK LOGGED на SIMPLE? Если вы знаете, продолжайте и сделайте это.
—
BuahahaXD
Я просто хотел прокомментировать, почему будущие читатели, возможно, хотят сделать то же самое. Мы привыкли делать полное резервное копирование SQL с резервными копиями журналов транзакций. С тех пор мы перешли на использование Dell AppAssure для создания резервных копий, что позволяет нам не создавать резервных копий журнала транзакций. Теперь у нас остались сотни баз данных на нескольких серверах, по-прежнему без всякой причины заполненные терабайтами файлов LDF. Это влияет на резервное копирование / восстановление, а также на другие вещи, связанные с репликацией и тому подобным.
—
Торин