Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Есть задача сделать shrinkdatabase для всех баз данных MSSQL 2008  [new]
GenSys
Member

Откуда:
Сообщений: 3
Изначально установил всем базам AUTO_SHRINK ON выполнив следующее

DECLARE @databasename varchar(100)
DECLARE @sqlAlterStatement varchar(500)

DECLARE NastyCursorThing CURSOR READ_ONLY FOR
SELECT name FROM sys.databases
WHERE database_id >  4 AND DATABASEPROPERTYEX(name, 'IsAutoShrink') = 0

OPEN NastyCursorThing
FETCH NEXT FROM NastyCursorThing INTO @databasename
WHILE @@FETCH_STATUS = 0
	BEGIN
	SET @sqlAlterStatement ='ALTER DATABASE [' + @databasename + '] SET AUTO_SHRINK ON WITH NO_WAIT' + CHAR(10)
	print @sqlAlterStatement
	EXEC(@sqlAlterStatement)
	FETCH NEXT FROM NastyCursorThing INTO @databasename
	END

CLOSE NastyCursorThing
DEALLOCATE NastyCursorThing

Сейчас нужно выполнить шринк...
Вот как я это думаю сделать...

DECLARE @databasename varchar(255)


DECLARE NastyCursorThing CURSOR FOR
SELECT name FROM sys.databases 
WHERE is_read_only=0 and state=0 AND name not in ('master','model','tempdb','msdb')

OPEN NastyCursorThing
FETCH NEXT FROM NastyCursorThing INTO @databasename
WHILE @@FETCH_STATUS = 0
  BEGIN
  EXEC SP_dboption @databasename,'trunc. log on chkpt.','true' 
  DBCC shrinkdatabase (@databasename)
  FETCH next from NastyCursorThing into @databasename
  END


CLOSE NastyCursorThing
DEALLOCATE NastyCursorThing


Подскажите, все ли правильно?
6 окт 11, 12:44    [11393956]     Ответить | Цитировать Сообщить модератору
 Re: Есть задача сделать shrinkdatabase для всех баз данных MSSQL 2008  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Все неправильно.
6 окт 11, 12:46    [11393973]     Ответить | Цитировать Сообщить модератору
 Re: Есть задача сделать shrinkdatabase для всех баз данных MSSQL 2008  [new]
GenSys
Member

Откуда:
Сообщений: 3
спасибо.
А что именно?
6 окт 11, 12:47    [11393982]     Ответить | Цитировать Сообщить модератору
 Re: Есть задача сделать shrinkdatabase для всех баз данных MSSQL 2008  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
GenSys,

если базы лежат без дела и к ним обращаются раз в пятилетку то может при некотором везении от AUTO_SHRINK будет толк, иначе вы себе нажили кучу геморроя и советую сразу бежать в аптеку за свечками:)
6 окт 11, 12:49    [11394002]     Ответить | Цитировать Сообщить модератору
 Re: Есть задача сделать shrinkdatabase для всех баз данных MSSQL 2008  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
GenSys
А что именно?
Все.

Автошринк - зло злое, забудьте о нем.
Сбрасывать всем базам модель в SIMPLE и рвать цепочку восстановления бэкапов - вот радости-то будет всем вокруг.
И самое главное, нафига шринк вообще делать?

Сообщение было отредактировано: 6 окт 11, 12:50
6 окт 11, 12:49    [11394006]     Ответить | Цитировать Сообщить модератору
 Re: Есть задача сделать shrinkdatabase для всех баз данных MSSQL 2008  [new]
iljy
Member

Откуда:
Сообщений: 8711
GenSys
спасибо.
А что именно?

Все- это значит все. Начиная с самой задачи: сжимать БД нужно только в самых крайних случаях, и уж никак не автоматически.
6 окт 11, 12:50    [11394008]     Ответить | Цитировать Сообщить модератору
 Re: Есть задача сделать shrinkdatabase для всех баз данных MSSQL 2008  [new]
GenSys
Member

Откуда:
Сообщений: 3
есть задача, автошринк ставиться на базы разработки, они не критичны, но размеры колоссальны!
Автошринк уже стоит, свечки закуплены.
Теперь по делу. Нужно все же шринкануть все базы данных.
Получиться ли это сделать при условии использования приведенной квари?
6 окт 11, 13:00    [11394113]     Ответить | Цитировать Сообщить модератору
 Re: Есть задача сделать shrinkdatabase для всех баз данных MSSQL 2008  [new]
iljy
Member

Откуда:
Сообщений: 8711
GenSys,

нет
6 окт 11, 13:01    [11394118]     Ответить | Цитировать Сообщить модератору
 Re: Есть задача сделать shrinkdatabase для всех баз данных MSSQL 2008  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
GenSys
есть задача, автошринк ставиться на базы разработки, они не критичны, но размеры колоссальны!
Автошринк уже стоит, свечки закуплены.

Может у вам просто стоит полная модель восстановления,а бекапы не делаются.

Сообщение было отредактировано: 6 окт 11, 14:33
6 окт 11, 13:55    [11394591]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить