4498289198
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
61 lines
2.2 KiB
Go
61 lines
2.2 KiB
Go
//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`)
|
|
}
|