====== Runbook: DSN upravljanje ====== **Trajanje:** ~10 minuta \\ **Uloga:** Gateway-Operator \\ **Preduvjet:** appsettings.json pristup DSN (Data Source Name) definira unaprijed definirane veze s bazom podataka. ---- ===== Tijek rada ===== flowchart TD A[DSN zahtjev] --> B{Nova ili postojeca?} B -->|Nova| C[appsettings.json urediti] B -->|Postojeca| D[Vezu testirati] C --> E[Gateway ponovno pokrenuti] E --> D D --> F{Test uspjesan?} F -->|Da| G[Dokumentirati] F -->|Ne| H[Connection String provjeriti] H --> C style G fill:#e8f5e9 style H fill:#ffebee ---- ===== 1. Postojece DSN prikazati ===== # Sve konfigurirane DSN ispisati (API) curl -s http://localhost:5000/api/v1/dsn | jq # Ili direktno u Configu provjeriti cat appsettings.json | jq '.Gateway.Databases' ---- ===== 2. Novu DSN dodati ===== **appsettings.json urediti:** { "Gateway": { "Databases": { "demo": { "Provider": "sqlite", "ConnectionString": "Data Source=data/demo.db" }, "produktion": { "Provider": "sqlserver", "ConnectionString": "Server=sql01;Database=ProdDB;User Id=app;Password=***;TrustServerCertificate=True" }, "reporting": { "Provider": "postgresql", "ConnectionString": "Host=pg01;Database=reports;Username=reader;Password=***" } } } } **Podrzani Provideri:** | Provider | ConnectionString primjer | |----------|---------------------------| | ''sqlserver'' | ''Server=host;Database=db;User Id=user;Password=pwd'' | | ''sqlite'' | ''Data Source=path/file.db'' | | ''postgresql'' | ''Host=host;Database=db;Username=user;Password=pwd'' | | ''mysql'' | ''Server=host;Database=db;User=user;Password=pwd'' | ---- ===== 3. Gateway ponovno pokrenuti ===== # Windows Stop-Process -Name "WvdS.WebAPI.Data.Gateway.Api" -Force Start-Process -FilePath ".\WvdS.WebAPI.Data.Gateway.Api.exe" # Linux (systemd) sudo systemctl restart data-gateway ---- ===== 4. DSN testirati ===== # Tablice nove DSN ispisati curl -s http://localhost:5000/api/v1/dsn/produktion/tables | jq # Prve podatke dohvatiti curl -s "http://localhost:5000/api/v1/dsn/produktion/tables/Customers?\$top=5" | jq ---- ===== 5. DSN ukloniti ===== - DSN unos iz ''appsettings.json'' obrisati - Gateway ponovno pokrenuti - Provjeriti da DSN vise nije dostupna: curl -s http://localhost:5000/api/v1/dsn/alte_dsn/tables # Ocekivani odgovor: 404 Not Found ---- ===== Kontrolna lista ===== | # | Provjera | Da/Ne | |---|-----------|---| | 1 | Provider ispravan (sqlserver/sqlite/...) | - | | 2 | Connection String valjan | - | | 3 | Lozinka nije vidljiva u logu | - | | 4 | Gateway ponovno pokrenut | - | | 5 | API test uspjesan | - | ---- ===== Rjesavanje problema ===== | Problem | Uzrok | Rjesenje | |---------|---------|--------| | ''Database not found'' | Pogresna baza podataka | Ime baze provjeriti | | ''Login failed'' | Pogresna lozinka | Credentiale provjeriti | | ''Connection refused'' | Firewall blokira | Port 1433/5432/3306 otvoriti | | ''Provider not supported'' | Pogresan Provider-name | sqlserver, sqlite, postgresql, mysql | | ''JSON parse error'' | Sintaksna greska | JSON validirati (jsonlint.com) | ---- ===== Sigurnosne napomene ===== **Lozinke nikad ne logirati u cistom tekstu!** Koristite varijable okruzenja za Credentiale: "ConnectionString": "Server=sql01;Database=ProdDB;User Id=${DB_USER};Password=${DB_PASS}" ---- ===== Povezani runbookovi ===== * [[.:server-starten|Server pokrenuti]] - Nakon Config promjene * [[.:health-check|Health Check]] - Vezu provjeriti * [[..:..:administrator:konfiguration:datenbanken|Konfiguracija baze podataka]] - Detaljna referenca ---- << [[.:server-starten|<- Server pokrenuti]] | [[.:health-check|-> Health Check]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional// {{tag>operator runbook dsn datenbank konfiguration}}