Följ Black Week på SweClockers

Byte av SQLDB och får response = code : "ESOCKET" och name : "ConnectionError"

Permalänk

Byte av SQLDB och får response = code : "ESOCKET" och name : "ConnectionError"

Hej

Jag har i förra veckan bytt SQLDB. I Fredags pushade jag från dev till prod. Samma som fungerade lokalt fungerar inte från servern dvs. data från nya SQLDB kommer inte fram till webbappen?

Jag pushar till en Docker miljö som körs på Linux Server 22.04. Webbåtkomst sköts av NGINX!

Vad behöver ni?

Mvh Fredrik

Visa signatur

Computer: Windows 10, 64-bit, Intel i9 - 10850K, Asus Rog MAXIMUS XII HERO (WI-FI), 32GB RAM, Asus RTX3070

Game control: Home Cockpit, Keyboard, Saitek Pro Flight X-56 Rhino H.O.T.A.S. 

Permalänk
Medlem

Kör databas och app i samma container?
Har du kollat att du har rätt credentials?
Kollat att du ansluter mot rätt port?
Kollat att du inte missat att öppna upp brandvägg mellan app och databas?

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk

Databasen körs på en Windows Server. Inlogg info är rätt, skulle inte få upp datan annars

Om porten ändrats när jag ska komma åt databasen när jag pushat kan jag inte svara på. Mina kollegor intygar att det inte ska vara något annat än ändra på credentials. Hmm?

Någon skillnad mellan DB är det när jag ska komma åt det från servern men vad?

Visa signatur

Computer: Windows 10, 64-bit, Intel i9 - 10850K, Asus Rog MAXIMUS XII HERO (WI-FI), 32GB RAM, Asus RTX3070

Game control: Home Cockpit, Keyboard, Saitek Pro Flight X-56 Rhino H.O.T.A.S. 

Permalänk
Medlem
Skrivet av freddehboy:

Databasen körs på en Windows Server. Inlogg info är rätt, skulle inte få upp datan annars

Om porten ändrats när jag ska komma åt databasen när jag pushat kan jag inte svara på. Mina kollegor intygar att det inte ska vara något annat än ändra på credentials. Hmm?

Någon skillnad mellan DB är det när jag ska komma åt det från servern men vad?

Port brukar kunna skilja mellan miljöer, så den port du använde för lokalt test behöver inte nödvändigtvis vara samma som i prod.

Rimligtvis borde det ju finnas ett utförligare felmeddelande? Annars får du väl testa att slå på mer verbose loggning en stund och se om du får mer information.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Medlem
Skrivet av freddehboy:

Databasen körs på en Windows Server. Inlogg info är rätt, skulle inte få upp datan annars

Om porten ändrats när jag ska komma åt databasen när jag pushat kan jag inte svara på. Mina kollegor intygar att det inte ska vara något annat än ändra på credentials. Hmm?

Någon skillnad mellan DB är det när jag ska komma åt det från servern men vad?

Vad menar du med att det är rätt inloggningsinformation, och att du inte skulle få upp datan annars? Du säger ju att du får ett felmeddelande från SQL-servern.
Felet är ett anslutningsproblem, inte ett problem med att svaret från SQL-servern inte når till(baka) till din applikation. Din applikation kan helt enkelt inte kan upprätta en anslutning. Om det är en annan SQL-server och inte bara en annan db på samma server kan det vara så enkelt att brandväggen på SQL-servern inte tillåter anslutningar från produktions-servern.

Om det inte är brandväggen så kan det vara inloggningsproblem. Hur anges användarnamn/lösen? Säkerställ att de är korrekta uppgifter som används av containern.

Visa signatur

WS: R7 2700x | RTX 2070S | Corsair AX860W | Lian Li PC-O11 Dynamic
Unraid: R7-2700X | GTX1050 | 3U chassi med 20 diskplatser
Servrar: 3x NUC 10 i5 ESX-kluster

Permalänk

Prova gärna att följa denna video på serversidan: https://www.youtube.com/watch?v=BJoZr8CrNks

Personen behövde slå igång TCP/IP-protokollet för SQL-servern och sedan starta om SQL-tjänsten igen (viktigt steg).

Om det ser liknande ut på Linux kan jag ej svara på. Felmeddelandet du får tyder på konfigurationsfel hos serversidan.

Mvh,
WKL.

Visa signatur

"Den säkraste koden är den som aldrig skrivs"
"Visste du förresten att det är ett mångmiljardbolag?"
"Jag lever inte för att koda utan kodar för att sen kunna leva"

Permalänk
Skrivet av whisky:

Vad menar du med att det är rätt inloggningsinformation, och att du inte skulle få upp datan annars? Du säger ju att du får ett felmeddelande från SQL-servern.

Jag menade bara om uppgifterna jag använder för att ansluta till SQL servern skulle vara fel så borde det inte heller gå att ansluta till SQL Servern från dev miljön, inte sant?

Visa signatur

Computer: Windows 10, 64-bit, Intel i9 - 10850K, Asus Rog MAXIMUS XII HERO (WI-FI), 32GB RAM, Asus RTX3070

Game control: Home Cockpit, Keyboard, Saitek Pro Flight X-56 Rhino H.O.T.A.S. 

Permalänk
Medlem
Skrivet av freddehboy:

Jag menade bara om uppgifterna jag använder för att ansluta till SQL servern skulle vara fel så borde det inte heller gå att ansluta till SQL Servern från dev miljön, inte sant?

Utvecklingsmiljön och produktionsmiljön har väl olika IP-adresser, och SQL-servern är väl inställd på att endast tillåta anslutningar från vissa IP-adresser? Så den tillåter anslutningar från utvecklingsmiljön men inte från produktionsmiljön.

Visa signatur

MSI PRO Z790-P WIFI | Intel i9 13900K | 128 GB DDR5
GTX 4070 12 GB
WD Black SN850X 2 TB Gen 4 | 2 x 1 TB Samsung 970 EVO Plus
3 x ASUS 27" | 1 x Philips 49"

Permalänk

Jag har fortsatt att testa utan resultat. Kan nu logga min backend. Kommer delge er informationen sedan hur det ser ut på Backend sidan

Visa signatur

Computer: Windows 10, 64-bit, Intel i9 - 10850K, Asus Rog MAXIMUS XII HERO (WI-FI), 32GB RAM, Asus RTX3070

Game control: Home Cockpit, Keyboard, Saitek Pro Flight X-56 Rhino H.O.T.A.S. 

Permalänk

Har kört kommandot på Linux Servern:
docker compose logs -f <Name of the app>

Får loggen:

appmt | appmt | > appmt@2.0.0 start appmt | > next start -p 3002 appmt | appmt | ▲ Next.js 13.5.6 appmt | - Local: http://localhost:3002 appmt | appmt | ✓ Ready in 1413ms appmt | loginRequest : { scopes: [ 'user.read, group.read.all' ] } appmt | Called Server appmt | SQLQueryBuilder : appmt | SELECT Item.DocNbr, Available, NewSalesBlocked, NewPurchaseBlocked appmt | FROM dbo.ItemV2 AS Item appmt | JOIN StocksV2_Prod AS Stocks on Item.DocNbr = Stocks.DocNbr appmt | WHERE Available > 0 AND (NewSalesBlocked = 'true' OR NewPurchaseBlocked = 'true') appmt | ORDER BY NewSalesBlocked DESC appmt | appmt | Inbound Async Function appmt | ------------------------------------------------------ appmt | Inbound error sql data Function

Filen som anropar sql servern från prod är:

import sql from 'mssql'; import {sqlConConfig} from '../../../components/AtrikelStatus/SQL/SQLConConfig'; import SQLQueryBuilder from '../../../components/AtrikelStatus/SQL/SQLQueryBuilder'; var sendSQLRes: Array<object> = []; export default function handler(req: any, res: any){ console.log("Called Server"); console.log('SQLQueryBuilder :', SQLQueryBuilder()); const runSQL = async () => { console.log("Inbound Async Function"); sql.connect(sqlConConfig).then((pool: any) => { console.log("Inbound pool sql data Function"); console.log('sqlConConfig :', sqlConConfig); console.log("Get Results"); return pool.request().query(SQLQueryBuilder()) }).then((result: any) => { console.log("Inbound result sql data Function"); sendSQLRes.push(result); res.status(200).send(sendSQLRes); }).catch((err: any) => { console.log('Inbound error sql data Function'); res.send(err); }); }; runSQL(); setTimeout(() => {sendSQLRes;}, 5000); console.log("------------------------------------------------------"); // Reset the length = 0 sendSQLRes.length = 0; }

Konfigen är:

export const sqlConConfig: { user: string, password: string, database: string, server: string, options: { instancename: string, trustServerCertificate: boolean, } } = { user: "...", password: "...", database: "...", server: "...", options: { instancename: 'SQLEXPRESS', trustServerCertificate: true // change to true for local dev / self-signed certs } } export const dbConfig: { tableItem: string, cols: Array<string>, joinTable: string, joinCols: Array<string>, } = { tableItem: "...(.)...", cols: ["DocNbr", "NewSalesBlocked", "NewPurchaseBlocked"], joinTable: "..............", joinCols: ["DocNbr", "Available"], }

Notera att jag hade en annan pekning innan och där hade jag inga problem. Den servern låg på Azure och den jag nu försöker ansluta till ligger lokalt i huset . Min prod server är lokalt i huset dvs. ingen anslutning är nu utanför huset!

Visa signatur

Computer: Windows 10, 64-bit, Intel i9 - 10850K, Asus Rog MAXIMUS XII HERO (WI-FI), 32GB RAM, Asus RTX3070

Game control: Home Cockpit, Keyboard, Saitek Pro Flight X-56 Rhino H.O.T.A.S. 

Permalänk
Medlem

Eftersom du har inlogg till servern så kan du antagligen genomföra nätverksfelsökning från containern och host-servern. Se till att containern och host-servern har verktyg för det, till exempel netcat, ping och traceroute.

Läs på vilka protokoll och portar som SQL Server använder. Gör anslutningarna manuellt. När det inte fungerar tar du hjälp av nätverksnissen och ger tydliga instruktioner på vad som inte fungerar: Käll-IP, destinations-IP, port och protokoll (TCP). ICMP (ping,traceroute) kan vara avslaget.

Det är rätt troligt att en produktionsdatabas har striktare brandväggsregler än en utvecklingsdatabas.

Edit: Du skriver inte ut det faktiska felet på konsollen. Av tidigare inlägg tycks det som att det är just själva nätverksuppkopplingen som går fel. Saknas för övrigt inte ett NOT i frågan?

Permalänk
Medlem

Ta reda på vad err är här till en början.

res.send(err);

Visa signatur

AMD Ryzen 7 5800X | 32 GB Corsair Vengeance 3200 MHz | ASUS TUF Geforce RTX 3080

Permalänk

Så där ja
Nu fick jag vad jag letade efter. Min kod loggade inte err

appmt | Inbound error sql data Function ConnectionError: Failed to connect to SQL03:1433 - getaddrinfo EAI_AGAIN SQL03 appmt | at /app/node_modules/mssql/lib/tedious/connection-pool.js:85:17 appmt | at Connection.onConnect (/app/node_modules/tedious/lib/connection.js:838:9) appmt | at Object.onceWrapper (node:events:632:26) appmt | at Connection.emit (node:events:517:28) appmt | at Connection.emit (/app/node_modules/tedious/lib/connection.js:959:18) appmt | at Connection.socketError (/app/node_modules/tedious/lib/connection.js:1340:12) appmt | at /app/node_modules/tedious/lib/connection.js:1133:14 appmt | at process.processTicksAndRejections (node:internal/process/task_queues:77:11) { appmt | code: 'ESOCKET', appmt | originalError: ConnectionError: Failed to connect to SQL03:1433 - getaddrinfo EAI_AGAIN SQL03 appmt | at Connection.socketError (/app/node_modules/tedious/lib/connection.js:1340:28) appmt | at /app/node_modules/tedious/lib/connection.js:1133:14 appmt | at process.processTicksAndRejections (node:internal/process/task_queues:77:11) { appmt | code: 'ESOCKET' appmt | }

Nu kanske der klarnar för alla inblandade

Visa signatur

Computer: Windows 10, 64-bit, Intel i9 - 10850K, Asus Rog MAXIMUS XII HERO (WI-FI), 32GB RAM, Asus RTX3070

Game control: Home Cockpit, Keyboard, Saitek Pro Flight X-56 Rhino H.O.T.A.S. 

Permalänk
Medlem

Kör netstat på SQL-servern och se om den lyssnar på 1433? Kan du pinga SQL03 från servern du kör ifrån?
Edit: Hittade denna också https://stackoverflow.com/questions/40182121/whats-the-cause-...

Permalänk

Porten ska vara 1433 men jag sökte på getaddrinfo EAI_AGAIN SQL03 och fick upp detta:
https://stackoverflow.com/questions/40182121/whats-the-cause-...

Visa signatur

Computer: Windows 10, 64-bit, Intel i9 - 10850K, Asus Rog MAXIMUS XII HERO (WI-FI), 32GB RAM, Asus RTX3070

Game control: Home Cockpit, Keyboard, Saitek Pro Flight X-56 Rhino H.O.T.A.S. 

Permalänk
Medlem

Du har troligtvis fel värdnamn alt inte konfigurerat containern korrekt. Vet du hur Docker fungerar med värdnamn och nätverksanslutningar?

Visa signatur

AMD Ryzen 7 5800X | 32 GB Corsair Vengeance 3200 MHz | ASUS TUF Geforce RTX 3080

Permalänk

Mycket lite men vet hur Docker fungerar generellt. Förklara vad gäller värdnamn och nätverksanslutningar och Docker så kanske mitt minne klarnar

Visa signatur

Computer: Windows 10, 64-bit, Intel i9 - 10850K, Asus Rog MAXIMUS XII HERO (WI-FI), 32GB RAM, Asus RTX3070

Game control: Home Cockpit, Keyboard, Saitek Pro Flight X-56 Rhino H.O.T.A.S. 

Permalänk
Sötast

1. Kan maskinerna pinga varandra?

Permalänk
Medlem
Skrivet av freddehboy:

Mycket lite men vet hur Docker fungerar generellt. Förklara vad gäller värdnamn och nätverksanslutningar och Docker så kanske mitt minne klarnar

Din app-container vet inte vart SQL03 finns.
Prova att köra starta ett skal i den container och försök slå upp SQL03

I felsökningssyfte kan du prova att byta SQL03 till ip-adressen som SQL03 har.

Visa signatur

Kör Archlinux

Permalänk

Det går att pinga från server med docker till SQL03. Om hypotesen stämmer bör det inte gå att pinga sql03 från containern.

Har också provat att byta till IP-Adress istället för sql03 namnet. Återkommer efter test med ping

Visa signatur

Computer: Windows 10, 64-bit, Intel i9 - 10850K, Asus Rog MAXIMUS XII HERO (WI-FI), 32GB RAM, Asus RTX3070

Game control: Home Cockpit, Keyboard, Saitek Pro Flight X-56 Rhino H.O.T.A.S. 

Permalänk

Nu är jag tillbaka på jobb efter en liten förkylning med tillhörande ögoninflammation

Jag har pingat från min appmt med kommandot: sudo docker container exec -it appmt ping 172.29.1.130

Det går så inga problem där inte.

Visa signatur

Computer: Windows 10, 64-bit, Intel i9 - 10850K, Asus Rog MAXIMUS XII HERO (WI-FI), 32GB RAM, Asus RTX3070

Game control: Home Cockpit, Keyboard, Saitek Pro Flight X-56 Rhino H.O.T.A.S. 

Permalänk
Medlem
Skrivet av freddehboy:

Nu är jag tillbaka på jobb efter en liten förkylning med tillhörande ögoninflammation

Jag har pingat från min appmt med kommandot: sudo docker container exec -it appmt ping 172.29.1.130

Det går så inga problem där inte.

Ping är en sak men det var väl att namnuppslag fungerade?

sudo docker container exec -it appmt ping sql03

Visa signatur

Kör Archlinux

Permalänk

Hmm

Jag fixade lite i typescriptet i min konfig.

Detta fungerar nu

Jag ändrade från

...,
options: {
...: string,
...: string,
}

Till:
...,
options: object,

Det gjorde det hela

Visa signatur

Computer: Windows 10, 64-bit, Intel i9 - 10850K, Asus Rog MAXIMUS XII HERO (WI-FI), 32GB RAM, Asus RTX3070

Game control: Home Cockpit, Keyboard, Saitek Pro Flight X-56 Rhino H.O.T.A.S.