Programistoj daŭre serĉas la lokon, kie konekta ĉeno, JDBC URL aŭ enskribo en tnsnames.ora elektas la VPN. Tia loko ne ekzistas. La tunelon starigas la operaciumo aŭ kliento de vendisto, kiu registras virtualan adaptilon, kaj ĉiu datumbaza biblioteko supre uzas la rezultan soketan tavolon. Konekta ĉeno nomas gastigan nomon, pordon kaj akreditaĵon, kaj tio estas la tuta vortprovizo.

Mito: la konekta ĉeno povas elekti tunelon

La pelilo malfermas TCP-soketon al gastiganto kaj pordo. Ĝi havas neniun API por levi tunelon, neniun kampon por tunela profilo kaj neniun rimedon aŭtentikiĝi al VPN-pordego.

Tial la iloj kondutas idente, kiam itinero ekzistas. SSMS, DBeaver, Eclipse Data Tools kaj ordinara sqlcmd agas kvazaŭ la servilo estus en la loka reto, ĉar el la vidpunkto de la soketo ĝi estas. La virtuala adaptilo faris la datumbazan subreton atingebla, kaj la pelilo neniam scias kiel.

Tio ankaŭ klarigas, kial konekta ĉeno ne povas ripari falintan tunelon. Kiam la ligo mortas, la pelilo raportas tempolimon aŭ ĝeneralan retan eraron, kaj aplikaĵa kodo, kiu traktas tion kiel demando-problemon, eterne ripetas la malĝustan tavolon.

Levu la tunelon antaŭ ol la pelilo ekfunkcias

Konektu la VPN ĉe la operaciuma nivelo, laŭ la instrukcioj de la provizanto aŭ de la reta teamo, kaj nur poste malfermu la ilon. Praktike tio signifas, ke itinero al la datumbaza subreto ekzistas antaŭ ol la pelilo solvas la gastigan nomon.

Tenu la tunelan superrigardon ekster la aplikaĵo. PHP- aŭ Java-servo, kiu mem provas levi la ligon, enkodigas la konduton de unu provizanto en komercan kodon, kaj ĉiu malsukcesa transiro fariĝas eldono de la aplikaĵo. Superrigardanto, kiu posedas la tunelon, observas ĝin kaj restartigas ĝin, estas aparta afero disde la demanda vojo.

Kontrolu la itinerojn antaŭ ol kulpigi la pelilon: se la gastiganto ne solviĝas aŭ la pordo ne respondas el la ŝelo, neniu konekta ĉeno ŝanĝos tion.

Mito: malsukceso de Windows-aŭtentikigo signifas rompitan itinero

Windows-aŭtentikigo tra VPN ofte malsukcesas per eraro, kiu aspektas kiel reta paneo, dum la itinero estas en ordo. Kiam la konto apartenas al alia domajno kaj la tekkomputilo ne povas aliĝi al ĝi, lanĉu la klienton kun eksplicitaj akreditaĵoj anstataŭ la identeco de la labortabla seanco.

runas /noprofile /netonly /user:CORP\dbreader "C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe"

La ŝaltilo /netonly konservas tiujn akreditaĵojn nur por fora aŭtentikigo. Konfirmu, kion la servilo efektive ricevis, per SELECT SUSER_SNAME() anstataŭ fidi la konektan dialogon. Oni raportas, ke konservi la akreditaĵon por la servila adreso en Windows Credential Manager funkcias por SSMS sed ne ĉiam por servo ruliĝanta sub alia konto, do kontrolu, kiun identecon la procezo uzas, antaŭ ol ŝanĝi la ensaluton.

Latento transformas servilflankan kursoron en tempolimon

Servilflanka kursoro petas la datumbazon teni la rezulton kaj ĉerpi ĝin laŭgrade, kio transformas unu grandan rezulton en multajn malgrandajn rondvojaĝojn. En loka reto tio malmultekostas. Tra tunelo kun dekoj da milisekundoj da aldona latento, la sama demando povas superi la tempolimon de la komando sen transdoni preskaŭ neniom da datumoj.

Transiru al klientflanka kursoro, aŭ pliigu la ĉerpan grandecon kaj grupigu la vicojn, kaj la nombro de rondvojaĝoj malpliiĝas. La botelo estas la nombro de interŝanĝoj, ne la nominala liga rapido, do mezuri trafikkapablon misgvidos vin dum mezuri rondvojaĝojn ne. Testu per la plej granda rezulta aro, kiun viaj uzantoj efektive tiras, ne per unuvica demando, kiu revenas tuj. Se la tempolimo moviĝas sed ne malaperas, pliigu kune la komandan tempolimon kaj la ĉerpan grandecon kaj mezuru denove.

La sama aritmetiko validas por babilemaj ORM-oj kaj por ĉiu kliento, kiu eldonas unu komandon por vico. Se la demanda plano estas bona kaj la transdono malgranda, kalkulu la retajn interŝanĝojn antaŭ ol agordi la datumbazon.

Kontrolu la pordon, la instancon kaj la lokan filtrilon

Nomita instanco aŭskultas sur dinamika pordo, do konfirmu la pordon anstataŭ supozi 1433. Ĉe defaŭlta instanco la valoro legeblas el la registra valoro TcpPort sub la ŝlosilo SuperSocketNetLib de la instanco. Por Oracle, kontrolu, ke la gastiganto en tnsnames.ora solviĝas, ke la adreso respondas kaj ke la pordo de la aŭskultanto estas permesita; 1521 estas kutima defaŭlto, ne garantio.

Poste ekskludu la propran alirliston de la tunelo kaj, finfine, lokan kontraŭvirusilon aŭ gastigan fajromuron, kiu blokas la konekton eĉ kiam kliento kaj servilo estas la sama maŝino. Registru la malsukcesan etapon antaŭ ol ŝanĝi agordon, ĉar nom-solvado, TCP-atingebleco kaj TLS aŭ ensaluto ĉiu malsukcesas per malsama mesaĝo.

Skribu la etapon en la bileton. Alie la sekva persono ripetos tiun saman serĉadon de konekta ĉeno, per kiu ĉio komenciĝis.

Rilataj artikoloj