Учёт DEPO: задание SQL Server Agent — своё у каждой базы (bj2depo_<база>), имя в мастере

На одном сервере бывает несколько баз DEPO (боевая и тестовая): общее имя
bj2depo давало ложную зелёную проверку — тестовой базе засчитывалось боевое
задание, а своё не создавалось.
- Имя задания — настройка DepoJobName; в мастере, пункт 3, поле «Имя задания
  SQL Server Agent», по умолчанию bj2depo_<имя базы> (меняется вместе с базой,
  пока его не поправили). Установки старше — bj2depo, как было.
- Скрипт до любых изменений останавливается, если задание с этим именем
  обрабатывает другую базу или эту базу уже обрабатывает задание с другим именем
  (иначе двойная обработка событий).
- Проверка задания сравнивает его базу (sp_help_jobstep) с базой bj.
Синтаксис проверен на SQL Server без выполнения (SET PARSEONLY); проверка
задания на боевом сервере — зелёная (bj2depo ↔ BJ_DEPO_DATA).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-10-06 16:09:14 +03:00
parent 42524f6a4f
commit 21d87fb530
8 changed files with 135 additions and 25 deletions
+5
View File
@@ -177,6 +177,7 @@ type WizardData struct {
DepoUser string // шаг 3, «скрипт администратору»: логин bj, который создаст скрипт
DepoPass string // и его пароль (сохранённый или придуманный сейчас — сохраняется со скриптом)
DepoMode string // выбранный способ подготовки базы: auto|script|existing
DepoJobName string // имя задания SQL Server Agent для этой базы (пусто — по имени базы, считает экран)
ValidataVer string // версия установленной «Валидаты Клиент L» (пусто — не установлена)
CryptoSvc string // состояние службы bj-crypto (systemctl is-active)
PGSummary string // куда подключена база bj, без пароля
@@ -329,6 +330,10 @@ func (h *setupHandlers) renderWizard(w http.ResponseWriter, r *http.Request) {
} else if s.Fancy.User != d.DepoUser || d.DepoPass == "" {
d.DepoPass = depoGenPassword()
}
d.DepoJobName = s.Fancy.DepoJobName
if d.DepoJobName == "" && s.Fancy.DepoJobMode == "sql-auto" && s.Fancy.User != "" {
d.DepoJobName = depoJobNameLegacy // установка старше имён по базе: её задание — bj2depo
}
d.DepoMode = "auto"
if s.Fancy.DepoTablesMode == "script" {
d.DepoMode = "script"