From 69611b6098768c6ee56aa4928240a87881094d44 Mon Sep 17 00:00:00 2001 From: zuevav Date: Mon, 5 Oct 2026 14:25:08 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9C=D0=B0=D1=81=D1=82=D0=B5=D1=80,=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B0=20DEPO:=20?= =?UTF-8?q?=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20=C2=AB?= =?UTF-8?q?=D0=B4=D0=B6=D0=BE=D0=B1=D0=B0=20=D1=83=D0=B6=D0=B5=20=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20/=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0=C2=BB;=20=D0=BF=D1=80=D0=B8=20=D0=BD=D0=B5=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=88=D0=B5=D0=B4=D1=88=D0=B5=D0=B9=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BA=D0=B5=20=E2=80=94=20=D1=87=D1=82=D0=BE?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=B8=D1=82=D1=8C=20(?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D0=B4=D1=83=D1=80=D1=8B,=20?= =?UTF-8?q?=D0=B4=D0=B6=D0=BE=D0=B1=D0=B0=20=D0=B8=20Agent,=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=20?= =?UTF-8?q?SYSDBA)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi --- internal/lkgateway/depoevents.go | 2 +- internal/lkgateway/wizard_depo.go | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) 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)