Как написать скрипт для сжатия баз данных через MSSQL, исключая системные?
Как написать скрипт для сжатия баз данных через MSSQL, исключая системные?
привет. Напиши скрипт для регламентного сжатия всех баз (кроме системных) на сервере через MSSQL.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
sql
DECLARE @dbName NVARCHAR( 256 )
DECLARE @sql NVARCHAR( MAX)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM sys. databases
WHERE database_id > 4 -- Исключаем системные базы ( master, tempdb, model, msdb)
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @dbName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'USE [' + @dbName + ']; ' +
'DBCC SHRINKDATABASE ([' + @dbName + '], 10);' -- Сжимаем базу до 10 % свободного места
EXEC sp_executesql @sql
FETCH NEXT FROM db_cursor INTO @dbName
END
CLOSE db_cursor
DEALLOCATE db_cursor
Этот скрипт проходит по всем базам данных на сервере, исключая системные, и выполняет команду DBCC SHRINKDATABASE
, которая сжимает базу данных, оставляя 10% свободного места. Вы можете изменить процент, если это необходимо.
Для ответа в этой теме необходимо авторизоваться.