Bagaimana cara memperbaiki kesalahan 'Named Pipes Provider, error 40 - Tidak dapat membuka koneksi ke' SQL Server '?


152

Sepertinya saya tidak dapat terhubung ke database saya dari sebuah situs. Saya mendapatkan kesalahan ini:

Penyedia Pipa Bernama, galat: 40 - Tidak dapat membuka koneksi ke SQL Server

Saya mencoba menggunakan alamat IP lokal untuk menghubungkan dan juga alamat publik. Saya sudah mencoba:

  1. Ya, situs dapat berkomunikasi dengan server
  2. Pipa bernama / TCP diaktifkan.
  3. Koneksi jarak jauh diizinkan.
  4. Windows Firewall tidak aktif
  5. Membuat pengecualian untuk port 1433 di Windows Firewall.
  6. Mengaktifkan semua yang ada di SQL Server Configuration Manager.

Apa lagi yang bisa saya lakukan di sini?


2
Mungkin perlu memeriksa apakah SQL Server benar-benar menggunakan port 1433. Ini mungkin menggunakan sesuatu selain port default.
Rajeev Shenoy

Pastikan juga, saat melakukan ping, bahwa nama server telah ditetapkan dengan benar (atau ditulis dengan baik). Ini adalah masalah dalam kasus saya!
Yann Chabot

@RajeevShenoy: Bagaimana Anda bisa tahu tanpa koneksi (yang masalahnya)? Saya bisa memberi tahu port, saat terhubung, dengan menggunakan netstat tetapi ini hanya berfungsi jika ada koneksi.
MSIS

Jawaban:


117

Memecahkan masalah ini sangat mudah:

  1. Buka panel kontrol.
  2. mencari layanan.
  3. Buka jendela layanan lokal dari hasil pencarian Anda
  4. Mulai ulang layanan MSSQLSERVER Anda.

Tangkapan layar langkah-langkah:

Tangkapan layar langkah-langkahnya


1
Wow, Manajemen studio tidak akan memulai layanan saya meskipun itu diatur secara otomatis Terima kasih
johnny 5

Terima kasih, ini membantu. Apakah saya akan tetap harus memulai layanan dari sini setiap kali? Sebelumnya saya tidak harus melakukannya.
naz786

3
Bagaimana jika layanan ini tidak ada di sini? Saya telah menginstal SQL Server 17. Saya tidak melihat layanan ini ....
Ciaran Gallagher

1
Membuat cadangan database 170GB layanan berhenti. Berkat ini, hanya butuh 5 menit untuk me-restart server sql yang sedang digunakan oleh klien penting. Terima kasih banyak.
Shondeslitch

2
Semua tindakan diperiksa, tetapi restart tidak berhasil untuk saya. Masih mendapatkan kesalahan yang sama.
JayPex

89

Dan solusi paling sederhana - periksa apakah tebasan Anda kembali ...

Saya menghabiskan sekitar satu jam untuk mencari tahu apa yang salah dengan SERVER / INSTANCENAME ketika semuanya dikonfigurasi dengan benar, bernama pipa, hak akses pengguna ... dan tiba-tiba saya tersadar, ini bukan garis miring, ini garis miring terbalik ( \).

Kengerian, rasa malu ...


2
Saya memiliki masalah OP dan ternyata saya kehilangan info SERVER / INSTANCENAME (ada titik di sana sebagai gantinya).
LuxDie

@LuxDie Di mana Anda meletakkan SERVER \ INSTANCENAME di dan di mana ia berada?
tom_mai78101

Yang ini kuncinya, jangan lupa bahwa Anda harus terhubung ke "database" yang di-host dalam insance di server. Kesalahan ini dinaikkan jika Anda hanya menggunakan nama host server untuk koneksi dan mencoba menggunakan instancename sebagai basis data atau sebaliknya.
MichaelHuelsen

Memecahkan masalah saya. String koneksi yang berfungsi: Server=MyServerName\DOLPHIN=Trusted_Connection=True;Database=DolphinPlatformSaat dalam pengembangan (C #) saya menghubungkan ke server MSSQL 2017 yang diinstal secara lokal, tetapi ketika saya pergi untuk menyebarkannya, server jauh yang diinstal oleh vendor perangkat lunak berjalan sebagai Instance. Saya terus berpikir itu adalah masalah otentikasi karena itu berjalan sebagai layanan atau sesuatu sampai saya menemukan ini.
Alan

49

Ini adalah proses tiga langkah setelah menginstal SQL Server:

  1. Aktifkan Named Pipes SQL Config Manager -> SQL Server Network Consif -> Protokol -> Named Pipes -> Klik kanan -> Restart

pipa bernama diaktifkan

  1. Mulai ulang server SQL Config Manager -> Layanan SQL Server -> SQL Server (SQLEXPRESS) -> Klik kanan -> Mulai Ulang

  2. Gunakan nama server dan instance yang benar (keduanya diperlukan!) Biasanya ini . \ SQLEXPRESS , misalnya lihat tangkapan layar dari dialog koneksi QueryExpress.

masukkan deskripsi gambar di sini

Itu dia.


karena Anda memiliki jawaban skor tinggi yang relatif terlambat. Apa itu, ketika Anda memiliki layanan yang berkomunikasi dengan server sql Anda baik-baik saja, kemudian 3 jam berjalan, itu mulai mendapatkan kesalahan ini yang bertahan selama 10 menit atau lebih. Kemudian, layanan terus berjalan seperti sebelum kesalahan. ???
TS

Ini untuk koneksi lokal? Apa lagi yang diperlukan untuk koneksi jarak jauh melalui jaringan agar berfungsi?
Kissaki

19

Saya baru saja menginstal pengembang SQL SERVER 2012. Ketika saya membuat paket SSIS pertama saya, saya menerima kesalahan pipa ini ketika saya mencoba untuk membuat tugas koneksi data di SQL Server 2012 Alat Data di kotak Connection Manager. Saya memutuskan dengan bantuan pos di atas.

Jika memilih instance bernama dan Anda memanggil instance bernama SSQDatabase1 dan nama PC Anda adalah PCX1. Anda harus memasukkan PCX1 \ SSQDatabase1 bukan hanya SSQDatabase1 atau Anda akan menerima kesalahan pipa bernama.


16

Utas di MSDN Sosial, Re: Named Pipes Provider, error: 40 - Tidak dapat membuka koneksi ke SQL Server , memiliki daftar masalah yang cukup baik yang mungkin terkait dengan kesalahan Anda. Anda mungkin ingin melihat apakah ada di antara mereka yang Anda alami.

  • String koneksi salah, seperti menggunakan SqlExpress
  • Named Pipes (NP) tidak diaktifkan pada turunan SQL
  • Koneksi jarak jauh tidak diaktifkan
  • Server tidak dimulai, atau arahkan ke bukan server sebenarnya di string koneksi Anda
  • Alasan lain seperti konteks keamanan yang salah
  • coba tes konektivitas dasar antara dua mesin yang sedang Anda kerjakan

Sayangnya, melalui mereka, itu tidak membantu. :(
Damien

4
Oke, cari tahu ini. Ternyata, ketika saya menginstal server saya melakukan contoh bernama. Anda tidak dapat terhubung ke instance bernama dengan cara yang sama seperti Anda akan instance default. Jadi, sumber data: localhost \ nama instance yang berfungsi. Masih tidak bisa menjalankannya dengan alamat ip, tapi senang akhirnya terhubung.
Damien

Senang mendengarnya, tetapi karena penasaran, dapatkah Anda terhubung menggunakan itu ip.ip.ip.ip/NamedInstance?
Khan


7

Gunakan SERVER \\ INSTANCE NAME . Menggunakan double backslash di proyek saya menyelesaikan masalah saya.


Yang ini juga bekerja untuk saya, tetapi adakah yang bisa memberi tahu saya mengapa ini berhasil?
GWR

Saya akan mengatakan string melarikan diri, tetapi tergantung pada konteks
mizuki nakeshu

Jika string itu dalam kode C #, @"server\instance"atau "server\\instance"seharusnya berfungsi. Jika ada dalam file konfigurasi, maka Anda hanya ingin server teks biasa \ instance.
Denise Skidmore

7

Terima kasih kepada Damian ...

TCP / IP Named Pipes ... keduanya diaktifkan

Konfigurasi Web .... (untuk localhost)

<add name="FooData" connectionString="Data Source=localhost\InstanceName;Initial Catalog=DatabaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />

5

Memang punya masalah yang sama. Menghabiskan waktu 6 jam ketika harus melakukan migrasi beberapa server. Mencoba semua saran yang tersedia tentang topik ini dan lainnya.

Solusi semudah server restart!


1
Sayangnya, mengatur ulang server juga memperbaiki masalah bagi saya. Semua saran lain yang disebutkan telah dicoba tetapi tidak berhasil.
MrShmee

3

dalam kasus saya, saya memiliki server mandiri, saya mengubah port default port server sql 1433 di manajer konfigurasi ke beberapa nomor dan memulai kembali layanan servis sql agar berlaku, saya dapat terhubung ke server sql melalui studio manajemen jika saya login ke server. tetapi saya tidak dapat terhubung dari mesin lokal saya melalui sql server, saya mendapatkan kesalahan:

Terjadi kesalahan terkait-jaringan atau spesifik-contoh saat membuat koneksi ke SQL Server. Server tidak ditemukan atau tidak dapat diakses. Pastikan nama instance sudah benar dan

SQL Server dikonfigurasi untuk memungkinkan koneksi jarak jauh. (penyedia: Penyedia Pipa Bernama, galat: 40 - Tidak dapat membuka koneksi ke SQL Server) (Microsoft SQL Server, Galat: 5)

Saya memeriksa dan memverifikasi semua di bawah ini

-Nama Pipa / TCP diaktifkan. Koneksi -Remote diizinkan. -Windows Firewall mati -Menciptakan pengecualian untuk portin Windows Firewall (ini tidak diperlukan dalam kasus saya karena server berada di jaringan subnet yang sama). -Mengaktifkan semua yang ada di SQL Server Configuration Manager.

kemudian saya chnaged kembali nomor port ke default 1433 dan me-restart layanan server sql, dan masalah terselesaikan dan saya dapat menghubungkan server sql dari studio manajemen lokal saya.


3

Saya memiliki masalah yang sama. Saya menggunakan MSSQL Server Management Studio 2017 dan memecahkan masalah ini menggunakan langkah-langkah ini:

  1. Periksa untuk bekerja dengan baik layanan Layanan SQL Server atau tidak.
  2. Juga periksa untuk bekerja dalam kondisi baik SQL Server (MSSQLSERVER).
  3. Juga periksa apakah berfungsi dengan baik SQL Server Browser.
  4. Mulai ulang SQL Server (MSSQLSERVER)

dan memperbaikinya.


3
Terima kasih untuk ini! Peramban SQL Server dinonaktifkan sehingga ini memperbaikinya untuk saya!
Sam

2

Coba langkah-langkah berikut:

  1. Buka jendela Layanan (buka "run box" dan ketik services.msc).

  2. Mencari layanan SQL (dengan awalan SQL).

  3. Mulai mereka (jika tidak dapat memulai. Goto langkah 4).

  4. Klik kanan untuk setiap layanan -> Properti -> Ubah ke tab "Log on" -> choise log on sebagai "Local ..." -> 0K. Kemudian mulai layanan SQL lagi.

Coba Buka SQL dan hubungkan basis data.


2

Anda akan menemukan kemungkinan besar nama DB Anda tidak benar, Anda akan melihat nama server di VS seperti "DESKTOP-0I14BKI" tetapi jika Anda membuka SSMS Anda akan melihat DESKTOP-0I14BKI \ SQLBLAHBLAH , cukup tambahkan " \ SQLBLAHBLAH " (nama contoh ) ke "nama server" Anda di properti koneksi VS.

Anda akan melihat : masukkan deskripsi gambar di sini

Memperbaiki: masukkan deskripsi gambar di sini


2

TL; DR; Contoh SQL Server Anda menggunakan port dinamis yang tidak berfungsi. Memaksa SQL Server untuk menggunakan porta statis # 1433.

Detail Lengkap : Pertama-tama masalah ini lebih mungkin terjadi jika Anda hanya memiliki campuran instance default dan bernama atau instance bernama (yang merupakan kasus saya).

Konsep kunci : Setiap instance Microsoft SQL Server yang diinstal pada komputer menggunakan porta yang berbeda untuk mendengarkan permintaan koneksi yang masuk. Contoh default dari SQL Server menggunakan port # 1433. Ketika Anda menginstal instance bernama maka mereka akan mulai menggunakan port dinamis yang diputuskan pada saat start-up dari layanan Windows yang sesuai dengan instance SQL Server bernama.

Kode saya gagal (dengan kode kesalahan 40) terhubung ke satu-satunya contoh bernama SQL Server yang saya miliki di VM saya. Anda dapat mencoba solusi di bawah ini:

Solusi # 1 : Kode klien yang mencoba terhubung ke instance SQL Server membutuhkan bantuan dari layanan browser SQL Server untuk mencari tahu nomor port di mana instance Anda bernama sedang mendengarkan koneksi yang masuk. Pastikan layanan browser SQL berjalan di komputer Anda.

Solusi # 2 : Periksa port # (dalam warna kuning) yang digunakan contoh SQL Server bernama Anda dari manajer konfigurasi SQL Server seperti yang ditunjukkan dalam snapshot di bawah ini:

masukkan deskripsi gambar di sini

Gunakan nomor port itu secara eksplisit dalam string koneksi Anda atau dengan yang sqlcmdditunjukkan di bawah ini:

sqlcmd -s mymachinename,11380 -i deleteDB.sql -o SQLDelete.txt

Solusi # 3 : Paksa instance bernama Anda untuk menggunakan port # 1433 yang digunakan secara default. Ingat ini hanya akan berfungsi jika Anda tidak memiliki instance SQL Server default di komputer Anda karena instance SQL Server default sudah menggunakan port # 1433. Nomor port yang sama tidak dapat digunakan oleh dua layanan Windows yang berbeda.

Tandai TCP Dynamic portsbidang ke kosong dan TCP Portbidang ke 1433.

masukkan deskripsi gambar di sini

Ubah nomor port di string koneksi Anda seperti yang ditunjukkan di bawah ini:

sqlcmd -s mymachinename\instanceName -i deleteDB.sql -o SQLDelete.txt

ATAU

sqlcmd -s mymachinename,1433 -i deleteDB.sql -o SQLDelete.txt

Catatan : Setiap perubahan dalam pengaturan TCP / IP memerlukan restart layanan Windows yang sesuai.

Cukup menarik setelah menyelesaikan kesalahan ketika saya kembali ke pengaturan port dinamis untuk mereproduksi kesalahan yang sama maka itu tidak terjadi. Tidak yakin kenapa.

Silakan baca di bawah utas menarik untuk mengetahui lebih lanjut tentang port dinamis SQL Server:

Bagaimana cara mengkonfigurasi SQL Server Port pada banyak instance?

Kapan Port Dinamis “dinamis”?

Kapan menggunakan port dinamis TCP dan kapan Port TCP?

Saya mendapat petunjuk tentang solusi masalah saya dari blog ini .


1

Dalam kasus saya, saya membuka SQL Server Management Studio dan mencari SQLEXPRESS di mesin Database saya. Itu memiliki dua contoh dan saya memilih yang benar.

masukkan deskripsi gambar di sini


1

Jika Anda bekerja dengan inti Asp.net dan menggunakan appsettings.json daripada menulis server sebagai localhost dan setelah menulis nama contoh sql untuk pipa bernama diaktifkan seperti ini

  "ConnectionString": {
    "dewDB": "server=localhost\\dewelopersql;database=dewdb;User ID=sa;password=XXXXX",
  },

1

Solusi yang sangat sederhana

gunakan (local)\InstanceName itu saja. itu berhasil untuk saya.


1

Jika Anda mencoba me-restart layanan MSSQLSERVER, dan itu tidak berhasil, ini mungkin solusi:

Jika Anda menggunakan SQLExpress, nama server Anda harus sebagai ComputerName \ SQLExpress berikut. Namun, untuk SQLDeveloper, Anda tidak perlu benar SQLDeveloper setelah ComputerName Anda.


0

Setelah mengikuti semua langkah yang disebutkan di sini , jika masih tidak terhubung, coba tambahkan DNS dengan alamat IP di file host di folder dll. Menambahkan alamat IP alih-alih nama DNS dalam string koneksi harus menjadi solusi sementara untuk memeriksa apakah koneksi benar-benar berfungsi.


0

Saya mencoba menggunakan alamat IP lokal untuk menghubungkan dan juga alamat publik. Saya sudah mencoba:

Ya, situs tersebut dapat berkomunikasi dengan server Named pipes / TCP diaktifkan. Koneksi jarak jauh diizinkan. Windows Firewall mati. Pengecualian untuk port 1433 di Windows Firewall. Mengaktifkan semua yang ada di SQL Server Configuration Manager.

saya memastikan dan melakukan hal di atas juga dan saya hanya ingin berbagi bahwa BACKSLASH GANDA

oBuilder.DataSource = "SPECIFICPCNAME \ SQLEXPRESS";

Menggunakan BACKSLASH SINGLE menghasilkan kesalahan build yaitu: Kesalahan 1 Urutan melarikan diri yang tidak dikenali

Saya harap ini membantu pria berikutnya - Saya sudah mengorbankan makan malam, camilan tengah malam, dan NBA menyoroti waktu untuk menyelesaikan masalah ini (malu)

Terima kasih kepada [Tamizh venthan] ^ _ ^


0

Aktifkan TCP / Ip, Piped Protocol dengan masuk ke Computer Management -> SQL and Services, pastikan Layanannya Aktif. Enbale port pada Firewall. Cobalah masuk melalui Command Prompt -> sebagai Admin; terakhir Nama Pengguna harus (lokal) \ SQLEXPRESS. Semoga ini membantu.


0

Buka Manajer Konfigurasi SQL Server

  1. Pilih SQL Server Services dari kanan.
  2. Temukan server Anda dari kanan dan buka propertinya (dengan klik kanan)
  3. Ubah metode masuk ke Sistem Lokal.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini


0

Saya memiliki masalah yang sama dan menyelesaikan masalah dengan menonaktifkan firewall saya (ESET).

Langkah pertama untuk mengatasi masalah ini adalah dengan mencoba melakukan ping komputer Anda sendiri dari komputer lain. Jika firewall Anda aktif, Anda mungkin tidak dapat melakukan ping sendiri. Saya mencoba melakukan ping pada pc saya sendiri, kemudian ping gagal (tidak mendapat respons dari server)


0

Saya telah menyarankan langkah-langkah di bawah ini untuk menyelesaikan masalah Anda Bagaimana cara memperbaiki kesalahan 'Named Pipes Provider, error 40 - Tidak dapat membuka koneksi ke' SQL Server '

  1. Periksa untuk bekerja dengan baik layanan Layanan SQL Server atau tidak.
  2. Juga periksa untuk bekerja dalam kondisi baik SQL Server (MSSQLSERVER) .
  3. Juga periksa apakah berfungsi dengan baik SQL Server Browser .
  4. Hapus semua Alias sebelumnya , sekarang buat alias baru sesuai kebutuhan Anda.
  5. Sekarang periksa untuk bekerja dari SQL Server Default Port 1433
  6. Berikutnya klik pada Protokol Klien misalnya, lalu klik pada TCP / IP , sekarang klik pada klik kanan mouse, buka Properti, di sini Anda dapat memastikan Anda bekerja dengan baik port default Anda SQL 1433 .
  7. Buka SQL Server Management Studio Anda , lalu klik kanan, klik pada opsi " Properti " dan kemudian klik pada tab Connections , lalu akhirnya centang untuk Allow Connections remote to the server ini .
  8. Periksa apakah berfungsi dengan benar atau Ping IP Host Anda .

0

Saya mencoba menambahkan koneksi baru di VS2015. Tidak ada saran di sini yang berfungsi. Mencurigai semacam bug di wizard, terutama karena SSMS dapat terhubung dengan baik, saya memutuskan untuk mencoba dan mengelabui itu. Berhasil!

  1. Alih-alih menambahkan koneksi, gunakan "Buat Database SQL Server baru". Masukkan nama server Anda dan nama acak untuk DB baru, mis. "Test".

  2. Dengan asumsi ini berhasil, buka Server Explorer di VS, cari koneksi di Koneksi Data, klik kanan dan pilih Ubah Koneksi.

  3. Ubah "test" (dari langkah 1) ke nama database yang ada yang ingin Anda sambungkan. Klik "Uji Koneksi". Kali ini seharusnya bekerja!

  4. Hapus basis data sementara yang Anda buat pada langkah 1.


0

Saya punya satu solusi lagi, saya pikir. Saya baru-baru ini mengubah nama komputer saya jadi, setelah saya tidak dapat terhubung diam setelah mencoba semua metode di atas. Saya mengubah nama Server .. Nama server => (telusuri lebih lanjut) => di bawah mesin basis data, server baru ditemukan sama dengan komputer nama baru. Ini berhasil, dan hidup kembali baik.


0

Saya berjuang selama berabad-abad dalam hal ini sebelum saya menyadari kesalahan saya - Saya telah menggunakan koma alih-alih titik koma dalam string hubungkan


0

Saya memiliki masalah ini tetapi tidak ada saran di atas yang memperbaikinya.

Saya melihat masalah ini ketika saya menyebarkan situs web saya ke IIS. Cara mengatasinya adalah masuk ke pengaturan lanjutan terhadap kumpulan aplikasi default dan mengubah properti identitas dari default ke Administrator.


0

Bagi saya itu adalah masalah Firewall.

Pertama, Anda harus menambahkan port (seperti 1444 dan mungkin 1434) tetapi juga

C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe

dan

%ProgramFiles%\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\Binn\SQLAGENT.EXE

Kedua kalinya saya mendapatkan masalah ini adalah ketika saya kembali ke firewall, jalurnya tidak benar dan saya perlu memperbarui formulir 12 hingga 13! Mengklik pada browse di tab Program dan Layanan membantu mewujudkan hal ini.

Akhirnya, coba jalankan perintah

EXEC xp_readerrorlog 0,1, "tidak dapat mendaftarkan Nama Pokok Layanan", Null

Bagi saya, itu mengembalikan alasan kesalahan


0

Saya mencoba hampir semua yang ada di halaman ini, tetapi saya memiliki beberapa masalah mendasar yang sebenarnya perlu diselesaikan. Saya tidak dapat melakukan hal-hal tertentu seperti membuka SQL Server Configuration Manager, yang akhirnya menjadi file penyedia WMI yang korup / hilang.

Ada banyak cara yang membosankan untuk menyelesaikan masalah ini sesuai dengan apa yang saya baca, tetapi alat dari tweaking.com dapat menghapus dan mengganti / memperbaiki file penyedia WMI (Instrumentasi Manajemen Windows) saya.

Saya biasa melakukan perbaikan komputer dan secara keseluruhan alat tweaking.com benar-benar membuat saya terkesan, dan disarankan dari salah satu halaman forum kesalahan WMI yang saya kunjungi.

Setelah saya memperbaiki masalah ini, saya dapat terhubung ke SQL db saya, baik secara lokal maupun jarak jauh.

Semoga ini bisa membantu seseorang.

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.