diff --git a/internal/lkgateway/depoevents.go b/internal/lkgateway/depoevents.go index 7c65e51..f23a5bf 100644 --- a/internal/lkgateway/depoevents.go +++ b/internal/lkgateway/depoevents.go @@ -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 — проверка готовности выбранного способа обработки. diff --git a/internal/lkgateway/wizard_depo.go b/internal/lkgateway/wizard_depo.go index 45e7f5a..d755c3c 100644 --- a/internal/lkgateway/wizard_depo.go +++ b/internal/lkgateway/wizard_depo.go @@ -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)