Перейти к содержимому

mssql

Как сделать синхронизацию Agent-джобов между узлами Always On (AG )

Что делает скрипт

Скрипт автоматически поддерживает одинаковый набор заданий SQL Server Agent на всех узлах группы доступности Always On (AG с листенером shr-db04). Он определяет, какая нода сейчас Primary, а какие — Secondary, и:

  1. Бэкапит все текущие джобы на каждой ноде AG (и Primary, и Secondary) перед внесением любых изменений.
  2. Сравнивает список джобов на Primary и на каждой Secondary-ноде.
  3. Копирует на Secondary недостающие джобы, которые есть на Primary (в отключённом виде — -DisableOnDestination, чтобы они не начали выполняться сразу на резервном узле).
  4. Удаляет с Secondary джобы, которых больше нет на Primary (устаревшие/удалённые задания).
  5. Логирует каждый шаг — какие
Читать далее

Как сделать автоматическое восстановление нескольких баз данных SQL Server из сетевых бэкапов с уведомлениями по email и очисткой старых логов

Данный PowerShell-скрипт (требуется версия 7+) позволяет автоматизировать процесс восстановления списка баз данных на целевой SQL Server из последних полных бэкапов, расположенных на сетевом ресурсе. Скрипт:

  • параллельно (с ограничением по числу потоков) обрабатывает базы, используя модуль dbatools;

  • автоматически удаляет существующие базы перед восстановлением (с опцией WithReplace);

  • динамически определяет файлы данных и логов из бэкапа и переносит их в заданные каталоги (DataPathLogPath) с генерацией уникальных имён при конфликтах;

  • ведёт подробный журнал выполнения (RestoreLog_*.log) и транскрипт всей сессии (RestoreTranscript_*.log) в папке C:\temp;

  • очищает старые логи (старше заданного числа дней, по умолчанию 14)

Читать далее

Как найти и безопасно удалить старые .bak/.trn файлы бэкапов MSSQL с помощью PowerShell

Описание

Готовый PowerShell-скрипт для администраторов баз данных и системных администраторов Windows, который помогает держать диски с бэкапами MSSQL в порядке. Скрипт находит файлы резервных копий (.bak, .trn, .dif) старше заданного количества дней, выводит их в виде таблицы с путём, датой изменения и размером (отсортировано от самых больших к самым маленьким), сохраняет отчёт в CSV и, при необходимости, удаляет найденные файлы с записью в лог.

Возможности скрипта:

  • поиск бэкапов старше N дней на любом указанном диске или в папке;
  • вывод результатов с сортировкой по размеру файла;
  • сохранение отчёта в CSV для аудита перед удалением;
  • гибкий список папок-исключений
Читать далее

Как привести к стандарту файлы tempdb на всех серверах SQL Server

На практике конфигурация tempdb почти на каждом сервере отличается: где-то 4 файла, где-то 8, размеры и MAXSIZE выставлены «исторически», кто-то когда-то добавил файл вручную и забыл про него. Единый скрипт ниже решает эту проблему: приводит количество файлов, их имена, размер и ограничения к одному стандарту сразу на всех серверах, при этом безопасно — с учётом того, что физическая структура tempdb пересоздаётся заново при каждом старте службы SQL Server.

Идея скрипта в двух словах

tempdb — единственная системная база, которая не подгружается с диска при старте службы, а создаётся заново по описанию в системном каталоге (sys.master_files). Это значит: изменить … Читать далее

Как копировать данных между SQL Server с фильтром по дате при помощи PowerShell и dbatools

Задача: перенести данные из таблицы на одном сервере SQL Server на другой, оставив только записи за последние N месяцев, с автоматическим созданием структуры таблицы на приёмнике.

Решение: PowerShell 7 + модуль dbatools. Скрипт сам определяет столбцы с датой, предлагает выбрать нужный (если их несколько), формирует фильтр и выполняет высокопроизводительное копирование через SqlBulkCopy.

Возможности скрипта

  • ✅ Автоматическое создание таблицы на целевом сервере (если её нет).

  • ✅ Очистка целевой таблицы перед вставкой (опционально).

  • ✅ Сохранение значений IDENTITY (опционально).

  • ✅ Выбор столбца для фильтрации, если в таблице несколько дата-столбцов.

  • ✅ Настройка периода (например, последние 3, 6, 12 месяцев).

  • ✅ Контроль производительности

Читать далее

Как сделать Стресс-тест HADR_SYNC_COMMIT и PAGELATCH_UP в SQL Server: PowerShell-скрипт с мониторингом и автоочисткой

  1. Выбор баз – подключается к указанному экземпляру SQL Server, выводит список пользовательских баз в Out-GridView для множественного выбора.
  2. Подготовка окружения – принудительно удаляет/пересоздаёт тестовую таблицу dbo.hadr_stress_test в каждой выбранной базе и глобальную таблицу ##hadr_stress_counter в tempdb.
  3. Генерация нагрузки
    • HADR_SYNC_COMMIT: запускает параллельные потоки INSERT с пакетной вставкой. При синхронном режиме AG возникает ожидание подтверждения от вторичных реплик.
    • PAGELATCH_UP: несколько десятков потоков обновляют одну строку в tempdb, вызывая конкуренцию за latch-и страниц выделения (PFS/SGAM).
  4. Контроль роста – отдельные фоновые потоки выполняют TRUNCATE TABLE каждые 15 секунд с механизмом повторных попыток при блокировках.
  5. Мониторинг в реальном времени – каждые
Читать далее

Как восстановить базы данных SQL Server автоматически с уведомлениями по email с помощью PowerShell

Описание:
В статье представлен готовый PowerShell-скрипт для автоматического восстановления баз данных SQL Server из резервных копий. Скрипт использует модуль dbatools, выполняет параллельное восстановление нескольких баз, автоматически определяет пути для файлов данных и логов, а также отправляет подробные email-отчёты о ходе и результатах операции. Подходит для регулярных задач обновления тестовых сред или восстановления после сбоев. Так же добавляет к имени базы DEV

# ======================================================================
# Автоматическое восстановление баз данных с уведомлениями по email
# ======================================================================
# Требуется: модуль dbatools, доступ к бэкапам и целевому SQL Server
# ======================================================================

# Подключаем модуль dbatools
Import-Module dbatools -ErrorAction Stop

# === Параметры (настраиваемые) ===
Читать далее

Как пересоздать индексы mssql в новую файловую группу с помощью PowerShell и dbatools с логированием и бэкапом.

Описание:
Представляю вашему вниманию PowerShell-скрипт для автоматизации сложной процедуры переноса индексов между файловыми группами в Microsoft SQL Server.
Скрипт решает задачу пересоздания индексов в целевой файловой группе (или ФГ по умолчанию) с учетом всех «подводных камней»: он автоматически пропускает индексы, связанные с полнотекстовым поиском или XML-индексами, создаёт резервные копии (скрипты CREATE) для каждого изменяемого индекса и ведёт детальный лог как в файловой системе, так и в таблице базы данных.

Ключевые возможности:

  • Избирательность: Пересоздаёт только те индексы, которые физически находятся не в целевой файловой группе.

  • Безопасность: Автоматическое создание CREATE-скриптов для быстрого отката. Очистка старых бэкапов (>7 дней).

  • Интеллектуальность: Пропуск индексов

Читать далее

Как сделать проверку бэкапов mssql через Powershell 7 и dbatools.

Задача автоматизировать проверку бэкапов mssql . 

Основные возможности:

  1. Сканирование структуры бэкапов — автоматическое обнаружение резервных копий баз данных в заданной папке

  2. Гибкая настройка именования — возможность переименования баз при восстановлении

  3. Управление дисковым пространством — автоматическое освобождение места при необходимости

  4. Параллельное восстановление — одновременное восстановление нескольких баз для ускорения процесса

  5. Проверка целостности — автоматическая проверка восстановленных баз (DBCC CHECKDB)

  6. Логирование и отчетность — детальное логирование и отправка отчетов по email

  7. Удаление старых баз — различные стратегии удаления существующих баз перед восстановлением

Режимы управления пространством:

  • Calculate/Smart — удаляет только минимально необходимые базы

  • All — удаляет все базы (кроме системных)

  • None — не

Читать далее

Как сделать скрипт для восстановления баз данных из шары.

Задача раз 2 недели восстанавливать базы данных на dev сервер. Бэкап сделаны с помощью ola.hallengren

-- В ночь с субботы на воскресение
--if(datepart(weekday, getdate()) = 1)
-- Для миграции на АГ сметили создание резервных копий для того что бы использовать верфицированые фулл бэкапы в процессе работ
-- В ночь с Пятницу на субботу  (В Субботу в 01.00 создать фулл бекап)

if(datepart(weekday, getdate()) = 7)
begin
    EXECUTE [dbo].[DatabaseBackup]
    @Databases = 'USER_DATABASES,-%_restore',
    @Directory = N'\\ARC03.adminbd.ru\sql_backup$',
    @BackupType = 'FULL',
    @Verify = 'Y',
    @Compress = 'Y',
    @CleanupTime = 312,
    @CleanupMode = 'AFTER_BACKUP',
    @CheckSum = 'Y',
    @LogToTable = 'Y',
    @DatabasesInParallel= 'Y';
end

Скрипт восстановления

# 
Читать далее
Яндекс.Метрика