Aktifkan koneksi jarak jauh untuk SQL Server Express 2012


403

Saya baru saja menginstal SQL Server Express 2012 di server rumah saya. Saya mencoba menyambungkannya dari Visual Studio 2012 dari PC desktop saya, dan berulang kali mendapatkan kesalahan yang terkenal:

Terjadi kesalahan terkait jaringan atau spesifik-contoh saat membuat koneksi ke SQL Server. Server tidak ditemukan atau tidak dapat diakses. Verifikasi bahwa nama instance sudah benar dan SQL Server dikonfigurasi untuk memungkinkan koneksi jarak jauh. (penyedia: Penyedia Pipa Bernama, kesalahan: 40 - Tidak dapat membuka koneksi ke SQL Server)

Apa yang telah saya lakukan untuk mencoba memperbaikinya:

  • Jalankan SQL Server Configuration Manager di server dan aktifkan SQL Server Browser
  • Tambahkan pengecualian Windows Firewall di server untuk TCP, port 1433 dan 1434 pada subnet lokal.
  • Verifikasi bahwa saya memiliki login pada contoh SQL Server untuk pengguna yang saya masuk sebagai pada desktop.
  • Verifikasi bahwa saya menggunakan Otentikasi Windows pada contoh SQL Server.
  • Mulai ulang SQL Server dan seluruh server dang berulang kali.
  • Tarik semua rambut saya.

Bagaimana saya bisa mendapatkan SQL Server 2012 Express untuk memungkinkan koneksi jarak jauh !?


7
Saya dipecahkan dengan mengaktifkan layanan Browser SQL Server: D. Terima kasih telah mempostingnya.
alansiqueira27

1
Membuka kunci port 1433 UDP membantu saya!
Michael

1
Dan jika Anda menggunakan Azure VM, jangan lupa untuk membuka port melalui portal manajemen Azure juga (yang bertindak sebagai firewall luar ke firewall VM sendiri ...). Seperti itu: stackoverflow.com/questions/34251382/…
jleach

Bagi mereka yang bertanya-tanya di mana Sql Server Configuration Manager telah menghilang dalam versi yang lebih baru, pergilah ke sini
StuartLC

Jawaban:


731

Yah, senang saya bertanya . Solusi yang akhirnya saya temukan ada di sini:

Bagaimana cara mengkonfigurasi SQL Server Express untuk memungkinkan koneksi tcp / ip jarak jauh pada port 1433?

  1. Jalankan SQL Server Configuration Manager.
  2. Pergi ke SQL Server Network Configuration> Protokol untuk SQLEXPRESS.
  3. Pastikan TCP / IP diaktifkan.

Sejauh ini, sangat bagus, dan sepenuhnya diharapkan. Tapi kemudian:

  1. Klik kanan pada TCP / IP dan pilih Properties .
  2. Verifikasi bahwa, di bawah IP2, Alamat IP diatur ke alamat IP komputer pada subnet lokal.
  3. Gulir ke bawah ke IPAll.
  4. Pastikan bahwa TCP Dinamis Ports adalah kosong . (Milik saya diatur ke beberapa nomor port 5-digit.)
  5. Pastikan bahwa Port TCP diatur ke 1433 . (Punyaku kosong.)

(Juga, jika Anda mengikuti langkah-langkah ini, Anda tidak perlu mengaktifkan SQL Server Browser, dan Anda hanya perlu mengizinkan port 1433, bukan 1434.)

Kelima langkah tambahan ini adalah sesuatu yang tidak dapat saya ingat pernah saya lakukan di versi SQL Server sebelumnya, Express atau lainnya. Mereka tampaknya diperlukan karena saya menggunakan instance bernama (myservername \ SQLEXPRESS) di server alih-alih instance default. Lihat disini:

Mengkonfigurasi Server untuk Mendengarkan Port TCP Tertentu (Manajer Konfigurasi Server SQL)


7
Jika SQL Server Express bukan satu-satunya contoh, mungkin perlu untuk UNASSIGN port 1433 pada contoh lain. Saya memiliki instance default 2008 R2 (MSSQLSERVER), dan satu-satunya cara saya dapat terhubung ke keduanya dari luar adalah dengan menetapkan port 1433 ke instance 2012 (per di atas) dan mengubah penetapan port untuk instance default yang lebih lama ke TCP Dynamic Ports = "0" dan TCP Port = "" (kosong). Melakukannya sebaliknya memberikan akses hanya ke instance default.
Robert Calhoun

17
Bahwa IPAllpengaturan adalah saran JURUSELAMAT! Milik saya seperti milik Anda ...: D
Leniel Maccaferri

18
Seandainya itu membantu orang lain ... ini membantu, tapi saya masih tidak dapat terhubung sampai saya memulai layanan SQL Server Browser. (Catatan: Saya harus masuk ke aplikasi "Layanan" Windows untuk melakukan ini, karena jenis startup layanan SQL Server Browser adalah "Dinonaktifkan" karena beberapa alasan. Mengubah Jenis Startup menjadi "Otomatis", memulai layanan, dan kemudian dapat terhubung.)
lincah

9
Pada Windows 8 dan SQL 2012 Express SP1 diinstal ke SQLEXPRESS misalnya saya harus mengatur port dinamis untuk apa pun selain kosong (jika Anda menghapusnya, set ke 0 maka itu akan menghitung ulang port acak baru untuk Anda) DAN juga membuka KEDUA TCP 1433 dan UDP 1434 aturan port masuk di panel kontrol Firewall Lanjutan. Ketika port dinamis kosong, SQL Server hanya bertahan saat start-up.
Tony Wall

10
Hanya ingin mengucapkan terima kasih dan dukungan. Anda menghemat banyak waktu. Apakah Anda keberatan memperbarui posting Anda dengan sintaks koneksi yang benar? Saya perlu menggunakan myserver\sqlexpress,[portnumber]tanpa tanda kurung. Perhatikan itu ,dan bukan:
Marco

105

Cara yang benar untuk terhubung ke SQL Server jarak jauh (tanpa membuka port UDP 1434 dan mengaktifkan SQL Server Browser) adalah dengan menggunakan ip dan port alih-alih bernama instance .

Menggunakan ip dan port bukannya bernama instance juga lebih aman, karena mengurangi area permukaan serangan.

Mungkin 2 gambar berbicara 2000 kata ...

Metode ini menggunakan port yang ditentukan (ini yang saya inginkan kebanyakan orang inginkan) ..

masukkan deskripsi gambar di sini

Metode ini membutuhkan pembukaan port UDP 1434 dan SQL Server Browser yang berjalan

masukkan deskripsi gambar di sini


Bisakah Anda menguraikan maksud Anda dengan mengatakan bahwa ini adalah cara yang "benar" untuk melakukannya?
Ryan Lundy

3
@Kyralessa Ha! ... sekarang saya sadar lagi setelah 4-5 jam menarik rambut mencoba terhubung ke contoh jarak jauh saya, saya mungkin harus menjelaskan bahwa 'benar' di sini dimaksudkan untuk dibaca dari konteks saya. Itu 'salah' untuk terhubung menggunakan nama contoh karena saya tidak mengaktifkan SQL Server Browser.
Rosdi Kasim

Saya telah menambahkan beberapa klarifikasi pada jawaban saya untuk menghindari kesalahpahaman.
Rosdi Kasim

1
Terima kasih;) Ketika Anda tidak memiliki akses untuk menjalankan layanan browser, Anda harus menentukan porta.
Arman McHitarian

3
ditambah 1 untuk menunjukkan bahwa MS menggunakan koma alih-alih kolom sebagai pemisah untuk nomor port
Jorj

32

Satu hal lagi...

Kyralessa memberikan informasi yang hebat tetapi saya memiliki satu hal lagi untuk menambahkan di mana saya bingung bahkan setelah artikel ini.

Di bawah SQL Server Network Configuration> Protokol untuk Server> TCP / IP Diaktifkan. Klik kanan TCP / IP dan pilih properti. Di bawah Alamat IP Anda perlu mengatur Diaktifkan ke Ya untuk setiap jenis koneksi yang Anda gunakan.

masukkan deskripsi gambar di sini


18

Anda dapat menggunakan ini untuk mengatasi masalah ini:

Buka START> EXECUTE, dan jalankan CLICONFG.EXE.

Protokol Named Pipes akan menjadi yang pertama dalam daftar. Catatan, dan promosikan TCP / IP.

Uji aplikasi secara menyeluruh.

Saya harap ini membantu.


Wow, sungguh permata ... terima kasih. Tidak pernah tahu itu ada.
Louis van Tonder

1
Ini mengkonfigurasi KLIEN untuk menggunakan TCP / IP, bukan server.
mcr

OMG, Berhasil !! baru saja masuk untuk memberi suara untuk jawaban ini. terima kasih
Aki

15

Anda juga bisa mengatur

Dengarkan Semua TIDAK

dalam dialog protokol kemudian di alamat IP IP1 (katakanlah)

atur diaktifkan ke Ya,

tentukan alamat IP Anda,

atur TCP Dynamic ke Blank dan

Port TCP ke 1433 (atau apa pun)


Melakukan ini pada Windows 8.1 dengan SQL 2012 Express SP1 diinstal menyebabkan SQL untuk memulai :(
Zhaph - Ben Duguid

Saya mengatur semua entri IP 1, 2, ..., untuk mengaktifkan + aktif, menghapus dinamis, menghapus port, dan mengatur port IPAll ke 1433, kemudian harus menambahkan aturan untuk membuka TCP 1433 dan UPD 1434 di firewall (1434 tidak diperlukan jika tidak menggunakan nama, tetapi hanya nomor porta).
Mordachai


11

Saya punya masalah ini baru-baru ini. 2015 Agustus

Dipecahkan dengan membuka SQL Server Configuration Manager

  • Konfigurasi Jaringan SQL Server -> Protokol untuk SQLEXPRESS
  • Properti pada TCP / IP -> tab IP Adresses
  • Semuanya tetap default, hanya mengatur IPALL: TCP Port ke 1433

Dapat terhubung ke dengan SQL Server Manager ke mesin: [hostaddress], 1433

Contoh:

masukkan deskripsi gambar di sini


6

Pada instalasi saya SQL Server 2012 Developer Edition, diinstal dengan pengaturan default, saya hanya perlu memuat Manajer Konfigurasi SQL Server -> Konfigurasi Jaringan SQL Server -> Protokol untuk MSSQLSERVER dan mengubah TCP / IP dari Dinonaktifkan ke Diaktifkan.


1
Catatan cepat: bagi saya, ini tidak berhasil. IP yang salah ada di sana karena beberapa alasan. Namun, langkah-langkah Kyralessa berhasil karena mereka invovled memperbarui IP.
Brian MacKay

Ini berfungsi untuk salah satu server saya, tetapi tidak untuk yang lain.
cheny

5

Saya harus menambahkan aturan port masuk firewall untuk membuka port UDP 1434. Ini adalah salah satu Browser Browser Sql mendengarkan.


3

Saya lebih suka cara "Rosdi Kasim" karena itu tidak memerlukan konfigurasi detail pada IP.

Saya pasti akan melupakannya lagi ketika saya mencoba untuk membuat server lain lagi.

Keep It Simple Stupid (KISS) hanya dengan mengaktifkan layanan Sql Server Browser, lalu tambahkan \ SQLEXPRESS di belakang IP ketika Anda menghubungkan server.

Langsung menggunakan IP tanpa "\ SQLEXPRESS" adalah titik kegagalan saya karena tidak menggunakan port default.

Terima kasih.


3

Saya memiliki masalah yang sama dengan SQL Server 2014 yang diinstal secara lokal bernama instance. Menghubungkan menggunakan FQDN\InstanceNameakan gagal, sementara menghubungkan hanya menggunakan saya hostname\InstanceNamebekerja. Misalnya: menghubungkan menggunakan mycomputername\sql2014berhasil, tetapi menggunakan mycomputername.mydomain.org\sql2014tidak. 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.


2

Saya harus menambahkan port melalui Configuration Manager dan menambahkan nomor port di koneksi sql saya [host] \ [db instance name], 1433

Perhatikan, (koma) antara instancename dan port


1

Saya memiliki masalah yang berbeda dari apa yang semua jawaban sejauh ini sebutkan!

Saya harus memulai dengan mengatakan bahwa saya memilikinya di Visual Studio, dan bukan SQL Server Express tetapi solusinya harus persis sama.

Ya Tuhan, ini sebenarnya sangat sederhana dan mungkin agak bodoh. Ketika saya mencoba membuat database dan Visual Studio menyarankan nama SQL Server itu memberi saya nama pengguna Windows saya dan karena itu sebenarnya nama server saya pergi untuk itu.

Pada kenyataannya itu sebenarnya adalah nama pengguna Windows saya + \SQLEXPRESS. Jika Anda tidak mengubah pengaturan apa pun, ini mungkin juga milik Anda. Jika berhasil, berhentilah membaca; ini jawaban saya Jika tidak berhasil mungkin namanya berbeda.

Jika, seperti saya, Anda hanya memiliki masalah ini di Visual Studio untuk memeriksa apa milik Anda, ikuti langkah-langkah ini:

  1. Buka ikon SQL Server Management Studio .
  2. Jika Anda tidak melihat server Anda (merapat ke kiri secara default) tekan F8atau pergi ke View -> Object Explorer .
  3. Klik kanan pada nama server dan pilih Properties (Item terakhir)
  4. Di kiri bawah Anda dapat melihat nama sebenarnya server Anda di bawah " Server " (bukan Koneksi, tetapi di atasnya).

Ini adalah nama server dan inilah yang harus Anda coba sambungkan! bukan yang disarankan Visual Studio!



1

Dalam kasus saya, database berjalan pada port non-standar. Pastikan port yang Anda hubungkan sama dengan port yang digunakan basis data. Jika ada lebih banyak contoh SQL server, periksa yang benar.


0

Yang perlu Anda lakukan adalah membuka port yang relevan di firewall server.


6
Sayangnya, itu bukan "yang perlu Anda lakukan". Ada beberapa langkah lain yang perlu diambil, seperti diuraikan dalam jawaban yang diterima di atas.
bernilai

2
Sebenarnya, dalam kasus saya ini semua yang perlu saya lakukan, jadi tidak adil ditandai dan benar-benar masukan yang berguna.
MagicalArmchair

1
Menambahkan aturan ke port terbuka 1433 adalah apa yang diperbaiki untuk saya.
GiddyUpHorsey

Saya pikir itu adil untuk mengatakan "banyak hal harus selaras, langkah-langkah tambahan apa yang diperlukan untuk Anda akan bervariasi"
Mordachai

Saya harus melakukan semua yang Kyralessa, dan Pete dan yang ini juga sebelum saya bisa mendapatkan Windows 10 melayani SQL.
alfadog67

0

Mengalami masalah saat menyambung ke SQL Server?

Coba lepaskan koneksi firewall.

Jika Anda dapat terhubung dengan firewall yang terputus, mungkin Anda melewatkan beberapa aturan input seperti "broker layanan sql", tambahkan aturan input ini ke firewall Anda:

"SQL ADMIN CONNECTION" TCP PORT 1434

"SQL ADMIN CONNECTION" UDP PORT 1434

"LAYANAN ANALISIS SQL" PORT TCP 2383

"LAYANAN ANALISIS SQL BROWSE" TCP PORT 2382

"SQL DEBUGGER / RPC" TCP PORT 135

"SQL SERVER" TCP PORT 1433 dan lainnya jika Anda memiliki port dinamis

"SQL SERVICE BROKER" TCP PORT 4022

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.