DEPO: логину bj — роль db_datawriter (как на тесте); при обновлении и в первичной установке

Процедуры Фонтвьель, вызванные bj (FTV_M2M_JOB → EVENTS → UPDATE_HANDBOOK,
CREATE, OPERATION), пишут в таблицы Fancy правами логина bj. На 9 у bj_user
был только db_datareader — «Запрещено разрешение INSERT на объект
OD_OBJECTS» (событие HANDBOOK, 22.10.2026); упали бы и поручения M2M. На
тесте — db_datareader + db_datawriter.

Роль выдаётся в наборе «Применить скрипты» (права администратора БД; новый
отпечаток — плашка на установках), в скачиваемом скрипте процедур, в
скрипте логина и при подготовке трансферных таблиц (первичная установка).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
fontvielle
2026-10-22 13:56:26 +03:00
parent 88985afe04
commit 7981105cec
4 changed files with 17 additions and 4 deletions
+2
View File
@@ -237,6 +237,8 @@ func depoTablesGrantSQL(pg bool, user string) []string {
fmt.Sprintf("IF EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N'%[1]s' AND sid <> SUSER_SID(N'%[1]s')) ALTER USER [%[1]s] WITH LOGIN = [%[1]s]", user),
// чтение учётных таблиц DEPO (лица, счета, остатки, опции) — для сверки заявок
fmt.Sprintf("IF IS_ROLEMEMBER(N'db_datareader', N'%[1]s') = 0 ALTER ROLE db_datareader ADD MEMBER [%[1]s]", user),
// запись в таблицы Fancy — процедуры обработки M2M (FTV_M2M_JOB…) работают правами вызывающего (bj)
fmt.Sprintf("IF IS_ROLEMEMBER(N'db_datawriter', N'%[1]s') = 0 ALTER ROLE db_datawriter ADD MEMBER [%[1]s]", user),
}
for _, n := range depoTableNames() {
out = append(out, fmt.Sprintf("GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.%s TO [%s]", n, user))