Мастер, обработка DEPO: сообщение «джоба уже есть / создана»; при непрошедшей проверке — что проверить (процедуры, джоба и Agent, пользователь SYSDBA)

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-05 14:25:08 +03:00
parent df643e8c60
commit 69611b6098
2 changed files with 12 additions and 4 deletions
+1 -1
View File
@@ -807,7 +807,7 @@ func depoJobPing(ctx context.Context, db *sql.DB, wait time.Duration) (bool, str
}
time.Sleep(3 * time.Second)
}
return false, fmt.Sprintf("проверочное событие BJ_PING не обработано за %s — обработчик не запущен (или процедура не знает BJ_PING)", wait)
return false, fmt.Sprintf("проверочное событие BJ_PING не обработано за %s. Проверьте по порядку: 1) в базе DEPO есть процедуры обработки (FTV_M2M_JOB и FTV_M2M_PROCESS_*) — без них джоба запускается и падает; 2) джоба bj2depo есть и включена, служба SQL Server Agent запущена (история джобы в SSMS покажет ошибку); 3) пользователь, от имени которого работают процедуры (SYSDBA), есть в базе", wait)
}
// depoJobCheck — проверка готовности выбранного способа обработки.
+11 -3
View File
@@ -138,13 +138,21 @@ func (h *setupHandlers) wizardDepoJob(w http.ResponseWriter, r *http.Request) {
}
ctx, cancel := context.WithTimeout(r.Context(), 90*time.Second)
defer cancel()
jobNote := ""
if mode == "sql-auto" && r.FormValue("action") != "check" {
if err := depoJobCreateAgent(ctx, h.rc, r.FormValue("admin_user"), r.FormValue("admin_password")); err != nil && !strings.Contains(err.Error(), "уже существует") {
wizDepoGo(w, r, "job", "джоба не создана — "+err.Error(), false)
return
if err := depoJobCreateAgent(ctx, h.rc, r.FormValue("admin_user"), r.FormValue("admin_password")); err != nil {
if !strings.Contains(err.Error(), "уже существует") {
wizDepoGo(w, r, "job", "джоба не создана — "+err.Error(), false)
return
}
// джобы хранятся в msdb: при восстановлении базы DEPO из копии джоба остаётся — не пересоздаём
jobNote = "джоба " + depoJobName + " на сервере уже есть (bj её не пересоздавал). "
} else {
jobNote = "джоба " + depoJobName + " создана. "
}
}
msg, ok := depoJobCheck(ctx, h.rc)
msg = jobNote + msg
s = h.rc.Snapshot().Fancy
s.DepoJobCheck, s.DepoJobCheckOK, s.DepoJobCheckAt = msg, ok, time.Now()
_ = h.rc.UpdateFancy(s)