Мастер, учёт DEPO: скрипт таблиц не выходит за карточку; на «Подключении» — как создать логин bj (права, скрипт MS SQL/PostgreSQL с базой и логином из полей)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-10-05 11:24:14 +03:00
parent 1b0e1bee5f
commit 4498289198
7 changed files with 268 additions and 1 deletions
+60
View File
@@ -0,0 +1,60 @@
//go:build live
package lkgateway
import (
"context"
"database/sql"
"fmt"
"testing"
)
// Только чтение: базы BJ_DEPO*, режим восстановления, резервные копии и восстановления (msdb).
func TestDBHistoryLive(t *testing.T) {
rc, err := NewRuntimeConfig("/var/lib/bj/.bj/setup.json")
if err != nil {
t.Fatal(err)
}
fs := rc.Snapshot().Fancy
fmt.Println("база DEPO в настройках bj:", fs.DepoDB())
db, err := fancyOpen(fs, "master")
if err != nil {
t.Fatal(err)
}
defer db.Close()
ctx := context.Background()
dump := func(title, q string) {
fmt.Println("==", title)
rows, err := db.QueryContext(ctx, q)
if err != nil {
fmt.Println(" ошибка:", err)
return
}
cols, _ := rows.Columns()
n := 0
for rows.Next() {
vals := make([]sql.NullString, len(cols))
ptrs := make([]any, len(cols))
for i := range vals {
ptrs[i] = &vals[i]
}
_ = rows.Scan(ptrs...)
line := ""
for i, c := range cols {
line += c + "=" + vals[i].String + " | "
}
fmt.Println(" ", line)
n++
}
if n == 0 {
fmt.Println(" (пусто)")
}
}
dump("базы", `SELECT name, recovery_model_desc, state_desc, CONVERT(varchar(19),create_date,120) created FROM sys.databases WHERE name LIKE 'BJ%' OR name LIKE '%DEPO%' ORDER BY name`)
dump("резервные копии (последние 30)", `SELECT TOP 30 b.database_name, b.type, CONVERT(varchar(19),b.backup_start_date,120) start, CONVERT(varchar(19),b.backup_finish_date,120) finish, m.physical_device_name
FROM msdb.dbo.backupset b JOIN msdb.dbo.backupmediafamily m ON m.media_set_id=b.media_set_id
WHERE b.database_name LIKE 'BJ%' ORDER BY b.backup_finish_date DESC`)
dump("восстановления (последние 20)", `SELECT TOP 20 r.destination_database_name, CONVERT(varchar(19),r.restore_date,120) restored, r.restore_type, r.user_name, b.database_name src_db, CONVERT(varchar(19),b.backup_finish_date,120) src_backup, m.physical_device_name
FROM msdb.dbo.restorehistory r JOIN msdb.dbo.backupset b ON b.backup_set_id=r.backup_set_id JOIN msdb.dbo.backupmediafamily m ON m.media_set_id=b.media_set_id
WHERE r.destination_database_name LIKE 'BJ%' ORDER BY r.restore_date DESC`)
}