Ответ
Да, работал с MS SQL Server в рамках DevOps-практик. Основные задачи включали автоматизацию развертывания изменений схемы и обеспечение отказоустойчивости.
Автоматизация деплоя: Мы использовали SQL Server Data Tools (SSDT) для создания DACPAC-пакетов. В пайплайне Azure DevOps (или Jenkins) запускался sqlpackage.exe для публикации изменений на целевые инстансы (dev, staging, production). Это гарантировало, что миграции выполняются идемпотентно и согласованно.
# Пример шага в Azure DevOps Pipeline (PowerShell)
$connectionString = "Server=tcp:${{ parameters.server }}.database.windows.net;Database=${{ parameters.database }};User ID=${{ variables.sqlUser }};Password=${{ secrets.sqlPassword }};"
."sqlpackage.exe" /Action:Publish /SourceFile:"$(Build.SourcesDirectory)/Database/bin/Release/MyAppDb.dacpac" /TargetConnectionString:"$connectionString" /p:BlockOnPossibleDataLoss=false
Высокая доступность и мониторинг: Для production-сред настраивал группы доступности AlwaysOn. Мониторинг осуществлялся через встроенные динамические административные представления (DMV), данные из которых выгружались в Prometheus через экспортер sql_exporter для отображения в Grafana (отслеживание блокировок, роста файлов, производительности запросов). Резервное копирование было автоматизировано через Maintenance Plans и dbatools PowerShell модуль с последующей выгрузкой бэкапов в облачное хранилище.