نہیں، کنکشن اسٹرنگ آپ کی VPN سرنگ شروع نہیں کر سکتی
VPN کی ملکیت آپریٹنگ سسٹم یا کلائنٹ کی ہے، ڈرائیور کی کبھی نہیں۔ پہلے سرنگ اوپر اٹھائیں، netonly کے ساتھ ڈومین اسناد بھیجیں، پھر کرسر کے آنے جانے کی جانچ کریں۔
ڈویلپر اب بھی وہ جگہ تلاش کرتے ہیں جہاں کنکشن اسٹرنگ، JDBC URL یا tnsnames.ora اندراج VPN منتخب کرتا ہے۔ ایسی جگہ نہیں ہے۔ سرنگ وہ آپریٹنگ سسٹم یا وینڈر کا کلائنٹ بناتا ہے جو مجازی اڈاپٹر رجسٹر کرتا ہے، اور اس کے اوپر کی ہر ڈیٹا بیس لائبریری اسی ساکٹ طبقے کو استعمال کرتی ہے جو اس سے بنتا ہے۔ کنکشن اسٹرنگ میزبان، پورٹ اور اسناد کا نام دیتی ہے، اور پوری فرہنگ بس اتنی ہی ہے۔
افسانہ: کنکشن اسٹرنگ سرنگ منتخب کر سکتی ہے
ڈرائیور میزبان اور پورٹ پر TCP ساکٹ کھولتا ہے۔ اس کے پاس سرنگ اوپر اٹھانے کے لیے کوئی API نہیں، سرنگ پروفائل کے لیے کوئی فیلڈ نہیں، اور VPN گیٹ وے پر تصدیق کا کوئی طریقہ نہیں۔
اسی لیے راستہ بننے کے بعد تمام اوزار یکساں برتاؤ کرتے ہیں۔ SSMS، DBeaver، Eclipse Data Tools اور عام sqlcmd سب ایسے کام کرتے ہیں جیسے سرور مقامی نیٹ ورک پر ہو، کیونکہ ساکٹ کی نظر میں وہ وہیں ہے۔ مجازی اڈاپٹر نے ڈیٹا بیس سب نیٹ کو قابل رسائی بنایا، اور ڈرائیور کو کبھی معلوم نہیں ہوتا کہ کیسے۔
یہ یہ بھی بتاتا ہے کہ کنکشن اسٹرنگ ٹوٹی ہوئی سرنگ کی مرمت کیوں نہیں کر سکتی۔ جب لنک مرتا ہے، ڈرائیور وقت ختم ہونے یا عمومی نیٹ ورک خرابی کی اطلاع دیتا ہے، اور جو ایپلیکیشن کوڈ اسے کوئری مسئلہ سمجھتا ہے وہ ہمیشہ غلط طبقہ دہراتا ہے۔
ڈرائیور چلنے سے پہلے سرنگ اوپر اٹھائیں
آپریٹنگ سسٹم کی سطح پر VPN سے جڑیں، فراہم کنندہ یا نیٹ ورک ٹیم کی ہدایات پر عمل کرتے ہوئے، اور اس کے بعد ہی اوزار کھولیں۔ عملی طور پر اس کا مطلب یہ ہے کہ ڈرائیور کے میزبان نام حل کرنے سے پہلے ڈیٹا بیس سب نیٹ تک راستہ موجود ہوتا ہے۔
سرنگ کی نگرانی ایپلیکیشن سے باہر رکھیں. جو PHP یا Java سروس خود لنک اوپر اٹھانے کی کوشش کرتی ہے وہ ایک فراہم کنندہ کا برتاؤ کاروباری کوڈ میں لکھ دیتی ہے، اور ہر ناکامی کی منتقلی ایپلیکیشن ریلیز بن جاتی ہے۔ جو نگران سرنگ کا مالک ہے، اس پر نظر رکھتا ہے اور اسے دوبارہ شروع کرتا ہے، وہ کوئری راستے سے الگ معاملہ ہے۔
ڈرائیور کو الزام دینے سے پہلے راستہ جانچیں: اگر میزبان حل نہیں ہوتا یا شیل سے پورٹ جواب نہیں دیتا، تو کوئی کنکشن اسٹرنگ اسے نہیں بدلے گی۔
افسانہ: Windows تصدیق کی ناکامی کا مطلب ہے کہ راستہ ٹوٹا ہوا ہے
VPN کے ذریعے Windows تصدیق اکثر نیٹ ورک کی خرابی جیسی نظر آنے والی غلطی سے ناکام ہوتی ہے، جبکہ راستہ ٹھیک ہوتا ہے۔ جب اکاؤنٹ کسی دوسرے ڈومین کا ہو اور لیپ ٹاپ اس میں شامل نہ ہو سکے، تو ڈیسک ٹاپ سیشن کی شناخت کی بجائے واضح اسناد کے ساتھ کلائنٹ شروع کریں۔
runas /noprofile /netonly /user:CORP\dbreader "C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe"/netonly سوئچ ان اسناد کو صرف دور سے تصدیق کے لیے رکھتا ہے۔ کنکشن ڈائیلاگ پر بھروسہ کرنے کی بجائے SELECT SUSER_SNAME() سے تصدیق کریں کہ سرور کو واقعی کیا ملا۔ بتایا جاتا ہے کہ سرور کے پتے کی اسناد کو Windows Credential Manager میں محفوظ کرنا SSMS کے لیے کام کرتا ہے مگر کسی دوسرے اکاؤنٹ کے تحت چلنے والی سروس کے لیے ہمیشہ نہیں، اس لیے لاگ ان بدلنے سے پہلے دیکھیں کہ عمل کون سی شناخت استعمال کرتا ہے۔
تاخیر سرور کی طرف کے کرسر کو وقت ختم ہونے میں بدل دیتی ہے
سرور کی طرف کا کرسر ڈیٹا بیس سے کہتا ہے کہ نتیجہ رکھے اور اسے آہستہ آہستہ لائے، جو ایک بڑے نتیجے کو بہت سے چھوٹے آنے جانے میں بدل دیتا ہے۔ LAN پر یہ سستا ہے۔ درجنوں ملی سیکنڈ اضافی تاخیر والی سرنگ کے ذریعے وہی کوئری زیادہ ڈیٹا منتقل کیے بغیر کمانڈ کی وقت کی حد سے تجاوز کر سکتی ہے۔
کلائنٹ کی طرف کے کرسر پر جائیں، یا fetch size بڑھا کر قطاریں بیچ کریں، تو آنے جانے کی تعداد کم ہو جاتی ہے۔ رکاوٹ تبادلوں کی تعداد ہے، لنک کی برائے نام رفتار نہیں، اس لیے تھروپٹ ناپنا آپ کو گمراہ کرے گا جبکہ آنے جانے ناپنا نہیں کرے گا۔ اپنے صارفین کے واقعی کھینچے جانے والے سب سے بڑے نتائج سیٹ کے ساتھ آزمائیں، فوراً واپس آنے والی ایک قطار کی کوئری سے نہیں۔ اگر وقت کی حد سرکتی ہے مگر غائب نہیں ہوتی، تو کمانڈ کی وقت کی حد اور fetch size ایک ساتھ بڑھائیں اور دوبارہ ناپیں۔
یہی ریاضی بولنے والے ORM اور ہر اس کلائنٹ پر لاگو ہوتی ہے جو فی قطار ایک بیان جاری کرتا ہے۔ اگر کوئری منصوبہ ٹھیک ہو اور منتقلی کم ہو، تو ڈیٹا بیس ٹیون کرنے سے پہلے نیٹ ورک تبادلے گنیں۔
پورٹ، انسٹانس اور مقامی فلٹر جانچیں
نامزد انسٹانس متحرک پورٹ پر سنتا ہے، اس لیے 1433 فرض کرنے کی بجائے پورٹ کی تصدیق کریں۔ ڈیفالٹ انسٹانس پر قدر انسٹانس کی SuperSocketNetLib کلید کے تحت TcpPort رجسٹری قدر سے پڑھی جا سکتی ہے۔ Oracle کے لیے تصدیق کریں کہ tnsnames.ora میں میزبان حل ہوتا ہے، پتہ جواب دیتا ہے اور listener پورٹ کی اجازت ہے؛ 1521 ایک عام ڈیفالٹ ہے، ضمانت نہیں۔
پھر سرنگ کی اپنی رسائی فہرست اور آخر میں ایک مقامی اینٹی وائرس یا ہوسٹ فائر وال خارج کریں جو کلائنٹ اور سرور ایک ہی مشین ہونے پر بھی کنکشن روکتا ہے۔ ترتیب بدلنے سے پہلے ناکام ہونے والا مرحلہ ریکارڈ کریں، کیونکہ نام حل کرنا، TCP رسائی اور TLS یا لاگ ان ہر ایک مختلف پیغام کے ساتھ ناکام ہوتے ہیں۔
مرحلہ ٹکٹ میں لکھیں۔ ورنہ اگلا شخص وہی کنکشن اسٹرنگ تلاش دہرائے گا جس سے سب کچھ شروع ہوا تھا۔