Мастер, учёт 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:
@@ -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`)
|
||||
}
|
||||
Reference in New Issue
Block a user