ВЫПОЛНЕНИЕ ОПЕРАЦИЙ НАД НЕСКОЛЬКИМИ ИЛИ ВСЕМИ БАЗАМИ MS SQL
ВЫПОЛНЕНИЕ ОПЕРАЦИЙ НАД НЕСКОЛЬКИМИ ИЛИ ВСЕМИ БАЗАМИ MS SQL
--select * from [master].[sys].[databases]
--кого пропустить ('master','tempdb','model','msdb')
--логи правильно чистить так: DBCC SHRINKFILE ('+@name+ '_log, X) where X is the target size in MB.
--Также после запуска этого скрипта все базы станут с моделью восстановления FULL даже если до этого они были SIMPLE
declare @name nvarchar(512)
declare @cmd nvarchar(512)
DECLARE @Cursor CURSOR
SET @Cursor = CURSOR FOR
select name from [master].[sys].[databases]
where not name in ('master','tempdb','model','msdb')
OPEN @Cursor
FETCH NEXT FROM @Cursor INTO @name
WHILE (@@FETCH_STATUS = 0)
BEGIN
print @name
set @cmd =
'USE ['+@name+']
ALTER DATABASE '+@name+' SET RECOVERY SIMPLE
DBCC SHRINKFILE (N'''+@name+ '_log'', 0, TRUNCATEONLY)
ALTER DATABASE '+@name+' SET RECOVERY FULL'
print @cmd
exec (@cmd)
FETCH NEXT FROM @Cursor INTO @name
end
Т.е. выполняется‘USE [‘+@name+‘]
ALTER DATABASE ‘+@name+‘ SET RECOVERY SIMPLE
DBCC SHRINKFILE (N’”+@name+ ‘_log’‘, 0, TRUNCATEONLY)’
ALTER DATABASE '+@name+' SET RECOVERY FULL
над всеми базами, кроме ‘master’,’tempdb’,’model’,’msdb’
ВАЖНО!: Также после запуска этого скрипта все базы станут с моделью восстановления FULL даже если до этого они были SIMPLE !!
--кого пропустить ('master','tempdb','model','msdb')
--логи правильно чистить так: DBCC SHRINKFILE ('+@name+ '_log, X) where X is the target size in MB.
--Также после запуска этого скрипта все базы станут с моделью восстановления FULL даже если до этого они были SIMPLE
declare @name nvarchar(512)
declare @cmd nvarchar(512)
DECLARE @Cursor CURSOR
SET @Cursor = CURSOR FOR
select name from [master].[sys].[databases]
where not name in ('master','tempdb','model','msdb')
OPEN @Cursor
FETCH NEXT FROM @Cursor INTO @name
WHILE (@@FETCH_STATUS = 0)
BEGIN
print @name
set @cmd =
'USE ['+@name+']
ALTER DATABASE '+@name+' SET RECOVERY SIMPLE
DBCC SHRINKFILE (N'''+@name+ '_log'', 0, TRUNCATEONLY)
ALTER DATABASE '+@name+' SET RECOVERY FULL'
print @cmd
exec (@cmd)
FETCH NEXT FROM @Cursor INTO @name
end
Т.е. выполняется‘USE [‘+@name+‘]
ALTER DATABASE ‘+@name+‘ SET RECOVERY SIMPLE
DBCC SHRINKFILE (N’”+@name+ ‘_log’‘, 0, TRUNCATEONLY)’
ALTER DATABASE '+@name+' SET RECOVERY FULL
над всеми базами, кроме ‘master’,’tempdb’,’model’,’msdb’
ВАЖНО!: Также после запуска этого скрипта все базы станут с моделью восстановления FULL даже если до этого они были SIMPLE !!