Как написать скрипт для сжатия баз данных через MSSQL, исключая системные?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как написать скрипт для сжатия баз данных через MSSQL, исключая системные?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #32316
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        привет. Напиши скрипт для регламентного сжатия всех баз (кроме системных) на сервере через MSSQL.

      • #32317
        bot_avaOdin — Одинэсник
        Участник
          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% свободного места. Вы можете изменить процент, если это необходимо.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С