Saya memiliki masalah yang sama dengan SQL Server 2014 yang diinstal secara lokal bernama instance. Menghubungkan menggunakan FQDN\InstanceName
akan gagal, sementara menghubungkan hanya menggunakan saya hostname\InstanceName
bekerja. Misalnya: menghubungkan menggunakan mycomputername\sql2014
berhasil, tetapi menggunakan mycomputername.mydomain.org\sql2014
tidak. DNS diselesaikan dengan benar, TCP / IP diaktifkan di dalam SQL Configuration Manager, aturan Windows Firewall ditambahkan (dan kemudian mematikan firewall untuk pengujian untuk memastikan tidak memblokir apa pun), tetapi tidak ada yang memperbaiki masalah.
Akhirnya, saya harus memulai layanan " SQL Server Browser " pada SQL Server dan itu memperbaiki masalah konektivitas.
Saya tidak pernah menyadari bahwa layanan Browser SQL Server sebenarnya membantu SQL Server dalam membuat koneksi; Saya mendapat kesan bahwa itu hanya membantu mengisi dropdown ketika Anda mengklik "browse for more" server untuk terhubung, tetapi sebenarnya membantu menyelaraskan permintaan klien dengan port # yang benar untuk digunakan, jika port # tidak secara eksplisit ditetapkan (mirip bagaimana binding situs web membantu mengatasi masalah yang sama pada server web IIS yang menampung beberapa situs web).
Item hubungkan ini adalah yang memberi saya petunjuk tentang layanan SQL Server Browser: https://connect.microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn-machine- nama
- ketika Anda menggunakan wstst05 \ sqlexpress sebagai nama server, kode klien memisahkan nama mesin dari nama instance dan wstst05 dibandingkan dengan nama netbios. Saya melihat tidak ada masalah bagi mereka untuk mencocokkan dan koneksi dianggap lokal. Dari sana, kami mengambil informasi yang diperlukan TANPA menghubungi SQL Browser dan terhubung ke instance SQL melalui Memori Bersama tanpa masalah.
- ketika Anda menggunakan wstst05.capatest.local \ sqlexpress, kode klien gagal perbandingan nama (wstst05.capatest.local) dengan nama netbios (wstst05) dan menganggap koneksi "jauh". Ini adalah desain dan kami pasti akan mempertimbangkan untuk meningkatkan ini di masa depan. Lagi pula, karena mempertimbangkan koneksi jarak jauh dan fakta bahwa itu adalah contoh bernama, klien memutuskan bahwa ia perlu menggunakan SQLBrowser untuk resolusi nama. Ia mencoba untuk menghubungi SQL Browser di wstst05.capatest.local (port UDP 1434) dan ternyata bagian itu gagal. Karenanya kesalahan yang Anda dapatkan.
Alasan untuk layanan "SQL Server Browser" dari TechNet (penekanan ditambahkan oleh saya): https://technet.microsoft.com/en-us/library/ms181087(v=sql.120).aspx
Dari bagian "Menggunakan SQL Server Browser":
Jika layanan SQL Server Browser tidak berjalan, Anda masih dapat terhubung ke SQL Server jika Anda memberikan nomor port yang benar atau pipa bernama. Misalnya, Anda bisa menyambungkan ke instance default SQL Server dengan TCP / IP jika berjalan pada port 1433. Namun, jika layanan SQL Server Browser tidak berjalan, koneksi berikut ini tidak berfungsi :
- Setiap komponen yang mencoba untuk terhubung ke instance bernama tanpa sepenuhnya menentukan semua parameter (seperti port TCP / IP atau pipa bernama) .
- Setiap komponen yang menghasilkan atau meneruskan informasi server \ instance yang nantinya dapat digunakan oleh komponen lain untuk terhubung kembali.
- Menghubungkan ke instance bernama tanpa memberikan nomor port atau pipa.
- DAC ke instance bernama atau instance default jika tidak menggunakan port TCP / IP 1433.
- Layanan pengalihan OLAP.
- Menghitung server di SQL Server Management Studio, Enterprise Manager, atau Query Analyzer.
Jika Anda menggunakan SQL Server dalam skenario klien-server (misalnya, ketika aplikasi Anda mengakses SQL Server di jaringan), jika Anda menghentikan atau menonaktifkan layanan Browser SQL Server, Anda harus menetapkan nomor port khusus untuk setiap contoh dan tulis kode aplikasi klien Anda untuk selalu menggunakan nomor port itu. Pendekatan ini memiliki masalah berikut :
- Anda harus memperbarui dan memelihara kode aplikasi klien untuk memastikan terhubung ke port yang tepat.
- Port yang Anda pilih untuk setiap instance dapat digunakan oleh layanan atau aplikasi lain di server, menyebabkan instance SQL Server tidak tersedia.
Dan lebih banyak info dari artikel yang sama dari bagian "Bagaimana SQL Server Browser":
Karena hanya satu contoh dari SQL Server yang dapat menggunakan port atau pipa, nomor port dan nama pipa yang berbeda ditugaskan untuk instance bernama, termasuk SQL Server Express. Secara default, ketika diaktifkan, kedua instance bernama dan SQL Server Express dikonfigurasikan untuk menggunakan port dinamis, yaitu port yang tersedia ditetapkan ketika SQL Server dimulai. Jika Anda mau, port tertentu dapat ditugaskan untuk contoh SQL Server. Saat menghubungkan, klien dapat menentukan port tertentu; tetapi jika port ditetapkan secara dinamis, nomor port dapat berubah kapan saja SQL Server dihidupkan ulang, sehingga nomor port yang benar tidak diketahui oleh klien. ... Ketika klien SQL Server meminta sumber daya SQL Server, pustaka jaringan klien mengirim pesan UDP ke server menggunakan port 1434. SQL Server Browser merespons dengan port TCP / IP atau pipa bernama dari instance yang diminta.