From d119420db7041bd9091133f715f92c4beee56dfb Mon Sep 17 00:00:00 2001 From: zuevav Date: Mon, 5 Oct 2026 15:05:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D1=87=D1=91=D1=82=20DEPO,=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=B0=20=D0=B2=20msdb:=20=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=20bj,=20=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D0=B2=D1=88=D0=B8=D0=B9=D1=81=D1=8F=20=D0=BE?= =?UTF-8?q?=D1=82=20=D0=BF=D1=80=D0=B5=D0=B6=D0=BD=D0=B5=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=BB=D0=BE=D0=B3=D0=B8=D0=BD=D0=B0,=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=BF=D1=80=D0=B8=D0=B2=D1=8F=D0=B7=D1=8B=D0=B2=D0=B0?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=8F=20=D0=BA=20=D0=BD=D1=8B=D0=BD=D0=B5?= =?UTF-8?q?=D1=88=D0=BD=D0=B5=D0=BC=D1=83=20(=D0=B8=D0=BD=D0=B0=D1=87?= =?UTF-8?q?=D0=B5=20bj=20=D0=B2=D1=85=D0=BE=D0=B4=D0=B8=D1=82=20=D0=BA?= =?UTF-8?q?=D0=B0=D0=BA=20guest=20=D0=B8=20=D0=BD=D0=B5=20=D0=B2=D0=B8?= =?UTF-8?q?=D0=B4=D0=B8=D1=82=20=D0=B4=D0=B6=D0=BE=D0=B1=D1=83)?= 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 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/lkgateway/depoevents.go b/internal/lkgateway/depoevents.go index 984856f..58db951 100644 --- a/internal/lkgateway/depoevents.go +++ b/internal/lkgateway/depoevents.go @@ -779,6 +779,8 @@ ELSE GO -- Логину bj — чтение списка джоб и их истории: bj проверяет, что джоба запускается по расписанию. +-- (пользователь, оставшийся от прежнего логина с тем же именем, перепривязывается к нынешнему) +IF EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N'%[5]s' AND type = 'S' AND sid <> SUSER_SID(N'%[5]s')) ALTER USER [%[5]s] WITH LOGIN = [%[5]s]; IF USER_ID(N'%[5]s') IS NULL CREATE USER [%[5]s] FOR LOGIN [%[5]s]; IF IS_ROLEMEMBER(N'SQLAgentReaderRole', N'%[5]s') = 0 ALTER ROLE SQLAgentReaderRole ADD MEMBER [%[5]s]; GO @@ -921,7 +923,7 @@ func humanEvery(d time.Duration) string { // depoJobReaderGrant — право логину bj видеть джобы и их историю (для проверки джобы из bj). func depoJobReaderGrant(f FancyMSSQLSettings) string { - return fmt.Sprintf("USE msdb;\nIF USER_ID(N'%[1]s') IS NULL CREATE USER [%[1]s] FOR LOGIN [%[1]s];\nIF IS_ROLEMEMBER(N'SQLAgentReaderRole', N'%[1]s') = 0 ALTER ROLE SQLAgentReaderRole ADD MEMBER [%[1]s];", f.User) + return fmt.Sprintf("USE msdb;\nIF EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N'%[1]s' AND type = 'S' AND sid <> SUSER_SID(N'%[1]s')) ALTER USER [%[1]s] WITH LOGIN = [%[1]s];\nIF USER_ID(N'%[1]s') IS NULL CREATE USER [%[1]s] FOR LOGIN [%[1]s];\nIF IS_ROLEMEMBER(N'SQLAgentReaderRole', N'%[1]s') = 0 ALTER ROLE SQLAgentReaderRole ADD MEMBER [%[1]s];", f.User) } // depoProcCheck — работает ли сама обработка событий (процедуры FTV_M2M_*): таблицы, пользователь