VPN ద్వారా SQL Server పేరున్న ఇన్స్టాన్స్: పోర్ట్ 1433 కాదు, కనుగొనడం
పేరున్న ఇన్స్టాన్స్ కనెక్ట్ అయ్యే ముందు SQL Browser ను పోర్ట్ అడుగుతుంది. VPN ద్వారా పేరు విఫలమైనా tcp:host,port పనిచేస్తే, కనుగొనడమే లోపం.
చాలామంది SQL Server హోస్ట్నామ్ను పూర్తి చిరునామాగా, VPN ను అనుమతించబడిందా లేదా అనేదిగా భావిస్తారు. ఆచరణలో పేరున్న ఇన్స్టాన్స్ క్లయింట్ను DNS తర్వాత రెండవ శోధన చేయించి, టన్నెల్ ఎక్కువగా విరిచేది ఆ శోధననే. స్పష్టమైన ఎండ్పాయింట్ దానిని దాటవేస్తుంది, అందుకే tcp:host,port పనిచేయగలదు అయితే host\INSTANCE సమయం ముగుస్తుంది. భేదం సేవను కనుగొనడం మరియు దానిని ఉపయోగించడానికి అనుమతి పొందడం మధ్య ఉంది.
అపోహ: ఒక హోస్ట్నామ్ అంటే ఒక పోర్ట్
హోస్ట్నామ్ ఒక చిరునామాగా పరిష్కరించబడుతుంది, అక్కడ దాని పని ముగుస్తుంది. పేరున్న ఇన్స్టాన్స్ సర్వర్ TCP పోర్ట్గా అనువదించాల్సిన ఇన్స్టాన్స్ పేరును జోడిస్తుంది, క్లయింట్ దానిని ఊహించలేడు. పోర్ట్ 1433 డిఫాల్ట్ ఇన్స్టాన్స్కు డిఫాల్ట్, మెషీన్లోని ప్రతి ఇన్స్టాన్స్ లక్షణం కాదు. రెండింటినీ ఒకటే అనుకుంటే క్లాసిక్ లక్షణం వస్తుంది: ping పనిచేస్తుంది, DNS పనిచేస్తుంది, 1433 స్కాన్ ఏమీ చూపదు, మరియు నెట్వర్క్ SQL ను బ్లాక్ చేస్తుందని నిర్ధారణ.
రెండవ ఊహ కూడా అదే విధంగా విఫలమవుతుంది: TCP 1433 తెరవడం సరిపోతుందని. ఇన్స్టాన్స్ వేరే చోట వినిపిస్తే, తెరిచిన 1433 అక్కడ వేరే ఏదో ఉందని మాత్రమే నిరూపిస్తుంది. పోర్ట్ శ్రోతతో సరిపోలాలి, శ్రోత సర్వర్ వైపు కాన్ఫిగరేషన్ వివరం అని దీనిని ఊహించకుండా అడగాలి.
పేరున్న ఇన్స్టాన్స్తో క్లయింట్ నిజంగా ఏమి చేస్తుంది
హోస్ట్ను పరిష్కరించిన తర్వాత క్లయింట్ UDP 1434 లో SQL Server Browser కు కనుగొనే అభ్యర్థన పంపి, పేరున్న ఇన్స్టాన్స్ ఏ పోర్ట్ ఉపయోగిస్తుందో అడుగుతుంది. బ్రౌజర్ సేవ సర్వర్ సొంత రిజిస్ట్రీ నుండి సమాధానం ఇస్తుంది, తర్వాత క్లయింట్ ఆ పోర్ట్కు TCP కనెక్షన్ తెరుస్తుంది. లాగిన్ ప్రయత్నించే ముందే రెండు ప్రోటోకాల్లు, రెండు పోర్ట్లు పాల్గొంటాయి.
nslookup sqlhost.corp.example
nc -vzu sqlhost.corp.example 1434
Get-Service -Name SQLBrowser
అందుకే UDP మాత్రమే బ్లాక్ అయితే చనిపోయిన హోస్ట్లా కనిపించే సమయ ముగింపు వస్తుంది. బ్రౌజర్ సేవ ఆపబడినా నిష్క్రియమైనా, డేటాబేస్ ఇంజిన్ నడుస్తున్నా దాని TCP పోర్ట్ తెరిచినా కనుగొనే అభ్యర్థన సమాధానం లేకుండా ఉంటుంది. ఇన్స్టాన్స్ స్థిర పోర్ట్తో సంరచించబడి ఉంటే, ఎండ్పాయింట్ నేరుగా ఇవ్వబడకపోతే క్లయింట్ అయినా అడుగుతుంది. ఈ ప్రతి వైఫల్యం అప్లికేషన్ లోప సందేశంలో ఒకేలా కనిపిస్తుంది, వాటికి వేర్వేరు సవరణలు అవసరం.
బ్రౌజర్ సేవ కనుగొనడానికి సౌలభ్యం, డేటాబేస్ కాదు. దానిని ఆపడం ఇంజిన్ను ఆపదు, దానిని ప్రారంభించడం ఇన్స్టాన్స్ TCP పోర్ట్ను తెరవదు.
పేరు పనిచేయనప్పుడు స్పష్టమైన ఎండ్పాయింట్ ఎందుకు పనిచేస్తుంది
స్పష్టమైన ఎండ్పాయింట్ శోధనను క్రమం నుండి తొలగిస్తుంది: క్లయింట్ మీరు పేర్కొన్న చిరునామా మరియు పోర్ట్కు నేరుగా కనెక్ట్ అవుతుంది. ఇది మొదట నిర్ధారణ, స్వయంచాలకంగా శాశ్వత పరిష్కారం కాదు, ఎందుకంటే ఇన్స్టాన్స్ తర్వాత డైనమిక్ పోర్ట్కు మళ్లీ సంరచించబడితే పోర్ట్ మారవచ్చు. నిర్ధారణలకు రాకముందు రెండు రూపాలను ఒకే క్లయింట్, ఒకే ఖాతాతో పోల్చండి.
sqlcmd -S "tcp:sqlhost.corp.example,51433" -U app_login -Q "SELECT @@SERVERNAME"
Test-NetConnection sqlhost.corp.example -Port 51433
స్పష్టమైన రూపం విజయవంతమై పేరున్న రూపం విఫలమైతే, లోపం కనుగొనడంలోనే, దానిని ఎలా మూయాలో మీరు ఎంచుకోవచ్చు: టన్నెల్ ద్వారా UDP 1434 ను అనుమతించండి, లేదా నిర్వాహకుడిని స్థిర పోర్ట్ పిన్ చేసి ఎండ్పాయింట్ను డాక్యుమెంట్ చేయమని అడగండి. రెండూ వేర్వేరు నిర్వహణ ఖర్చులతో ఉద్దేశపూర్వక నిర్ణయాలు. పరిధిలోని ప్రతి పోర్ట్ తెరవడం ఈ రెండూ కాదు, పొడవైన రోజు చివరిలో సాధారణంగా సూచించబడే ఎంపిక అదే. కనెక్షన్ స్ట్రింగ్లు ఉన్న చోట ఎంపికను నమోదు చేయండి.
ఏ రూపం పనిచేయకపోతే, సమస్య కనుగొనడానికి పైన ఉంది. బ్రౌజర్ సేవను నిందించే ముందు శ్రోత, మార్గం మరియు ఇన్స్టాన్స్ నిజంగా ఉపయోగించే పోర్ట్ యాక్సెస్ నియమాన్ని తనిఖీ చేయండి.
కనుగొన్న తర్వాత: ప్రామాణీకరణ మరియు గుర్తింపు వేర్వేరు
లాగిన్ వైఫల్యం సమయ ముగింపు కంటే భిన్న సంఘటన, టన్నెల్ ఉన్నందున VPN గుర్తింపు SQL లాగిన్ కాదు. క్లయింట్ సరైన పోర్ట్కు చేరుకున్న తర్వాత, డేటాబేస్ ఇంజిన్ దాని స్వంత ప్రామాణీకరణ మరియు అనుమతులను వర్తింపజేస్తుంది. రెండు దశలను ఒకే టికెట్లో కలపడమే కనుగొనే సమస్య తప్పు జట్టుకు అప్పగించబడే మార్గం. ఏదైనా మార్చే ముందు లోప సంఖ్యను చదవండి.
డ్రైవర్ సర్వర్ సర్టిఫికెట్ను ధృవీకరిస్తే డాక్యుమెంట్ చేసిన హోస్ట్నామ్ను ఉంచండి, ఎందుకంటే సంఖ్యా చిరునామా ద్వారా కనెక్ట్ అవడం అసలు సమస్యను పరిష్కరించడానికి బదులు ఆ తనిఖీని మార్చవచ్చు. ఇటీవలి Microsoft డ్రైవర్లు డిఫాల్ట్గా ఎన్క్రిప్ట్ చేస్తాయి, కాబట్టి పేరు సరిపోలకపోవడం విజయవంతమైన TCP కనెక్షన్ తర్వాత సర్టిఫికెట్ లోపంగా కనిపిస్తుంది. అది కొత్త వైఫల్యం కాదు, పురోగతి.
వదిలివేయాల్సిన అపోహ SQL Server హోస్ట్నామ్ పూర్తి చిరునామా అని. అది ఒక హోస్ట్, పేరున్న ఇన్స్టాన్స్కు టన్నెల్ మోయకపోవచ్చిన శోధన కూడా జోడవుతుంది. పోర్ట్ను పేర్కొనండి, కనుగొనే మార్గాన్ని పేర్కొనండి, తదుపరి వైఫల్యం ఏ పొరను సరిచేయాలో చెబుతుంది.