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_*): таблицы, пользователь