زیادہ تر لوگ SQL Server کے ہوسٹ نام کو مکمل پتہ سمجھتے ہیں اور VPN کو یا تو اجازت شدہ یا نہیں۔ عملاً نامزد انسٹینس کلائنٹ کو DNS کے بعد دوسری تلاش کرنے پر مجبور کرتا ہے اور ٹنل اکثر اسی تلاش کو توڑتی ہے۔ واضح اینڈ پوائنٹ اس سے بچ جاتا ہے، اسی لیے tcp:host,port کام کر سکتا ہے جبکہ host\INSTANCE وقت ختم کرتا ہے۔ فرق خدمت ڈھونڈنے اور اسے استعمال کرنے کی اجازت ملنے کے درمیان ہے۔

دھوکہ: ایک ہوسٹ نام کا مطلب ایک پورٹ

ہوسٹ نام ایک پتے میں حل ہوتا ہے اور وہیں اس کا کام ختم ہو جاتا ہے۔ نامزد انسٹینس ایک انسٹینس نام شامل کرتا ہے جسے سرور کو TCP پورٹ میں ترجمہ کرنا ہوتا ہے اور کلائنٹ اس کا اندازہ نہیں لگا سکتا۔ پورٹ 1433 ڈیفالٹ انسٹینس کے لیے ڈیفالٹ ہے، مشین پر ہر انسٹینس کی خاصیت نہیں۔ دونوں کو ایک ہی چیز سمجھنے سے کلاسک علامت بنتی ہے: ping کام کرتا ہے، DNS کام کرتا ہے، 1433 کی اسکین کچھ نہیں دکھاتی اور نتیجہ یہ نکلتا ہے کہ نیٹ ورک SQL کو بلاک کرتا ہے۔

دوسرا مفروضہ بھی اسی طرح ناکام ہوتا ہے: کہ TCP 1433 کھولنا کافی ہے۔ اگر انسٹینس کہیں اور سنتا ہے تو کھلا 1433 صرف یہ ثابت کرتا ہے کہ وہاں کچھ اور ہے۔ پورٹ کو سامع سے مطابقت رکھنی چاہیے اور کہ سامع سرور کی طرف کی تشکیل کی تفصیل ہے یہ اندازہ لگانے کے بجائے پوچھنا چاہیے۔

کلائنٹ نامزد انسٹینس کے ساتھ درحقیقت کیا کرتا ہے

ہوسٹ حل کرنے کے بعد کلائنٹ UDP 1434 پر SQL 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 کا ہوسٹ نام مکمل پتہ ہے۔ یہ ایک ہوسٹ ہے اور نامزد انسٹینس کے لیے ایک تلاش شامل ہوتی ہے جسے ٹنل شاید نہ لے جا سکے۔ پورٹ کا نام دیں، دریافت کے راستے کا نام دیں اور اگلی ناکامی بتائے گی کہ کون سی پرت درست کرنی ہے۔

متعلقہ مضامین