"Tapi kenapa ...?"
Bagi mereka yang tertarik dengan mengapa SQL Server Management Studio (SSMS) dapat terhubung ke servername\instance
sementara aplikasi lain (seperti aplikasi pyodbc kami) tidak bisa, itu karena SSMS menyimpan daftar nomor port MRU (Paling Baru Digunakan) di registri Windows di
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSSQLServer\Client\SuperSocketNetLib\LastConnect
Setiap entri MRU (nilai registri) terlihat seperti ini:
Name: PANORAMA\SQLEXPRESS
Type: REG_SZ
Data: -1006030326:tcp:PANORAMA,52865
Setelah SSMS berhasil terhubung dengan nama instance melalui layanan SQL Browser pada mesin jarak jauh, SSMS dapat terus terhubung dengan nama instance meskipun SQL Browser tidak lagi berjalan pada mesin jarak jauh, asalkan nomor port tidak berubah. Aplikasi yang tidak menggunakan daftar MRU ini (seperti aplikasi pyodbc kami) harus menjalankan layanan SQL Browser pada mesin jarak jauh setiap kali mereka ingin terhubung dengan nama instans.
Skenario yang paling umum:
- Saya ingin terhubung ke
YOUR-PC\SQLEXPRESS
. Saya mencoba melakukannya dari SSMS diMY-PC
, tetapi tidak berfungsi karena Browser SQL diinstal dengan "Mode Mulai" disetel ke "Manual" diYOUR-PC
. - Saya meminta Anda untuk memulai layanan SQL Browser di
YOUR-PC
, dan Anda mematuhinya, tetapi Anda baru saja memulai layanan dan lupa mengubah setelan "Mode Mulai" menjadi "Otomatis". - Saya dapat terhubung melalui SSMS (yang menyimpan
YOUR-PC\SQLEXPRESS
pelabuhan di MRU). Aplikasi python saya juga dapat terhubung. - Lain kali
YOUR-PC
restart, saya dapat terhubung melalui SSMS (melalui MRU) tetapi aplikasi python saya tidak dapat (karena layanan SQL Browser tidak lagi berjalan diYOUR-PC
).