SQL Server Express 2012 için uzak bağlantıları etkinleştirme


403

SQL Server Express 2012'yi ev sunucuma yeni yükledim. Masaüstü bilgisayarımdan Visual Studio 2012'den bağlanmaya çalışıyorum ve defalarca bilinen hatayı alıyorum:

SQL Server'a bağlantı kurulurken ağla ilgili veya örneğe özgü bir hata oluştu. Sunucu bulunamadı veya erişilemedi. Örnek adının doğru olduğunu ve SQL Server'ın uzak bağlantılara izin verecek şekilde yapılandırıldığını doğrulayın. (sağlayıcı: Adlandırılmış Kanallar Sağlayıcısı, hata: 40 - SQL Server bağlantısı açılamadı)

Bunu düzeltmek için ne yaptım:

  • Sunucuda SQL Server Configuration Manager'ı çalıştırın ve SQL Server Tarayıcısını etkinleştirin
  • TCP için sunucuya, yerel alt ağdaki 1433 ve 1434 bağlantı noktalarına bir Windows Güvenlik Duvarı özel durumu ekleyin.
  • Masaüstünde olduğu gibi oturum açtığım kullanıcı için SQL Server örneğinde oturum açtığımı doğrulayın.
  • SQL Server örneğinde Windows Kimlik Doğrulaması kullandığımı doğrulayın.
  • SQL Server'ı ve tüm dang sunucusunu tekrar tekrar başlatın.
  • Bütün saçlarımı çek.

Uzak bağlantılara izin vermek için SQL Server 2012 Express'i nasıl edinebilirim?


7
SQL Server Tarayıcı hizmetini etkinleştirerek çözdüm: D. Gönderdiğiniz için teşekkürler.
alansiqueira27

1
1433 UDP portunun kilidini açmak bana yardımcı oldu!
Michael

1
Azure VM kullanıyorsanız, bağlantı noktasını Azure'un yönetim portalı üzerinden de açmayı unutmayın (bu, VM'nin kendi güvenlik duvarının dış güvenlik duvarı görevi görür ...). Bunun gibi: stackoverflow.com/questions/34251382/…
jleach

Sql Server Configuration Manager'ın daha yeni sürümlerde nereye kaybolduğunu merak edenler için buraya
gelin

Yanıtlar:


731

Eh, memnun sordum . Sonunda keşfettiğim çözüm buradaydı:

SQL Server Express'i 1433 numaralı bağlantı noktasında uzaktan tcp / ip bağlantılarına izin verecek şekilde nasıl yapılandırabilirim?

  1. SQL Server Yapılandırma Yöneticisi'ni çalıştırın.
  2. SQL Server Ağ Yapılandırması> SQLEXPRESS Protokolleri'ne gidin.
  3. TCP / IP'nin etkin olduğundan emin olun.

Şimdiye kadar, çok iyi ve tamamen bekleniyor. Ama sonra:

  1. TCP / IP'ye sağ tıklayın ve Özellikler'i seçin .
  2. IP2 altında, IP Adresinin bilgisayarın yerel alt ağdaki IP adresine ayarlandığını doğrulayın.
  3. IPAll seçeneğine gidin.
  4. Emin olun TCP dinamik bağlantı noktaları olan boş . (Benimki 5 basamaklı bir port numarasına ayarlandı.)
  5. TCP Bağlantı Noktası'nın 1433 olarak ayarlandığından emin olun . (Benimki boştu.)

(Bu adımları izlerseniz Ayrıca, bu kadar değil SQL Server Tarayıcı etkinleştirmek için gerekli ve yalnızca, port 1433 izin 1434. gerekmez)

Bu ekstra beş adım, SQL Server, Express'in önceki bir sürümünde veya başka bir zamanda yapmak zorunda olduğumu hatırlayamadığım bir şey. Sunucuda varsayılan bir örnek yerine adlandırılmış bir örnek (myservername \ SQLEXPRESS) kullandığım için gerekli görünüyorlar. Buraya bakın:

Sunucuyu Belirli Bir TCP Bağlantı Noktasında Dinleyecek Şekilde Yapılandırma (SQL Server Yapılandırma Yöneticisi)


7
SQL Server Express tek örnek değilse, diğer durumlarda 1433 numaralı bağlantı noktasını UNASSIGN olarak kullanmak gerekebilir. 2008 R2 varsayılan örneği (MSSQLSERVER) vardı ve her ikisine de dışarıdan bağlanabilmemin tek yolu, 1433 numaralı bağlantı noktasını 2012 örneğine (yukarıda) atamak ve eski varsayılan örnek için bağlantı noktası atamalarını TCP Dinamik olarak değiştirmek. Bağlantı Noktaları = "0" ve TCP Bağlantı Noktası = "" (boş). Bunu başka şekilde yapmak, yalnızca varsayılan örneğe erişim sağladı.
Robert Calhoun

17
Bu IPAllayar SAVIOR tavsiyesiydi! Benimki senin gibiydi ...: D
Leniel Maccaferri

18
Başka kimseye yardımcı olması durumunda ... bu yardımcı oldu, ancak SQL Server Tarayıcı hizmetini başlatana kadar hala bağlanamadım. (Not: Bunu yapmak için Windows "Hizmetler" uygulamasına gitmek zorunda kaldım, çünkü SQL Server Tarayıcı hizmetinin başlangıç ​​türü bir nedenden dolayı "Devre Dışı" idi. Başlangıç ​​Türü'nü "Otomatik" olarak değiştirdi, hizmeti başlattı ve sonra bağlantı kurabilir.)
mercurial

9
SQLEXPRESS örneğine yüklenen Windows 8 ve SQL 2012 Express SP1'de dinamik bağlantı noktalarını boştan başka bir şeye ayarlamak zorunda kaldım (silerseniz, 0 olarak ayarlayın, sizin için yeni bir rastgele bağlantı noktasını yeniden hesaplar) VE ayrıca İKİ TCP'yi açın Gelişmiş Güvenlik Duvarı kontrol panelindeki 1433 ve UDP 1434 gelen bağlantı noktası kuralları. Dinamik bağlantı noktaları boş olduğunda, SQL Server başlangıçta asılıydı.
Tony Wall

10
Sadece teşekkür etmek ve onaylamak istedim. Bana çok zaman kazandın. Yayınınızı doğru bağlantı sözdizimi ile güncellemeyi düşünür müsünüz? myserver\sqlexpress,[portnumber]Parantez olmadan kullanmam gerek. Dikkat edin ,ve değil:
Marco

105

Uzak SQL Server'a bağlanmanın doğru yolu (UDP bağlantı noktası 1434'ü açmadan ve SQL Server Tarayıcısını etkinleştirmeden) , adlandırılmış örnek yerine ip ve bağlantı noktası kullanmaktır .

Saldırı yüzey alanını azalttığı için adlandırılmış örnek yerine ip ve bağlantı noktası kullanmak da daha güvenlidir.

Belki 2 resim 2000 kelime konuşuyor ...

Bu yöntem belirtilen bağlantı noktasını kullanır (çoğu insanın inandığı şey budur) ..

resim açıklamasını buraya girin

Bu yöntem, 1434 numaralı UDP bağlantı noktasının ve SQL Server Tarayıcısının çalışmasını gerektirir.

resim açıklamasını buraya girin


Bunun "doğru" yolu olduğunu söyleyerek ne demek istediğinizi açıklayabilir misiniz?
Ryan Lundy

3
@Kyralessa Ha! ... şimdi uzak örneğime bağlanmaya çalışırken 4-5 saat saç çekildikten sonra tekrar ayıldığım için, muhtemelen 'doğru' ifadesinin bağlamımdan okunması gerektiğini açıklamalıyım. SQL Server Tarayıcısını etkinleştirmediğim için örnek adı kullanarak bağlanmak 'yanlış'.
Rosdi Kasım

Yanlış anlaşılmayı önlemek için cevabıma bazı açıklamalar ekledim.
Rosdi Kasım

1
Teşekkürler;) Tarayıcı hizmetini çalıştırmak için erişiminiz olmadığında bağlantı noktasını belirtmeniz gerekir.
Arman McHitarian

3
artı 1, MS'in bağlantı noktası numarası için ayırıcı olarak sütunlar yerine virgül kullandığını göstermek için
Jorj

32

Bir şey daha...

Kyralessa harika bilgiler veriyor, ancak bu makaleden sonra bile nerede olduğumu eklemek için başka bir şeyim var.

SQL Server Ağ Yapılandırması> Sunucu Protokolleri altında> TCP / IP Etkin. TCP / IP'ye sağ tıklayın ve özellikleri seçin. IP Adresleri altında, kullandığınız her bağlantı türü için Etkin değerini Evet olarak ayarlamanız gerekir.

resim açıklamasını buraya girin


18

Bu sorunu çözmek için bunu kullanabilirsiniz:

BAŞLAT> YÜRÜT seçeneğine gidin ve CLICONFG.EXE dosyasını çalıştırın .

Named Pipes protokolü listede ilk sırada yer alacak ve TCP / IP'yi tanıtacak.

Uygulamayı iyice test edin.

Umarım bu yardımcı olur.


Vay be, ne bir mücevher ... teşekkürler. Bunun var olduğunu bile bilmiyordum.
Louis van Tonder

1
Bu İSTEMCİ'yi sunucu değil TCP / IP kullanacak şekilde yapılandırır .
mcr

Aman Tanrım, işe yarıyor !! bu cevaba oy vermek için yeni oturum açtım. teşekkürler
Aki

15

Ayrıca ayarlayabilirsiniz

Tümünü NO'ya Dinle

protokol iletişim kutusunda IP1 IP adresinde (diyelim)

Evet olarak etkinleştirildi,

yr IP adresini tanımlar,

TCP Dinamik ayarını Boş olarak ayarlayın ve

1433'e TCP bağlantı noktası (veya her neyse)


SQL 8.1 Express SP1'in yüklü olduğu Windows 8.1'de bunu yapmak SQL'in başlatılmasına neden oldu :(
Zhaph - Ben Duguid

Tüm IP girişleri 1, 2, ... 'yi etkinleştirilmiş + etkin, silinmiş dinamik, silinmiş bağlantı noktasına ayarladım ve IPAll bağlantı noktasını 1433 olarak ayarladım, ardından güvenlik duvarında TCP 1433 ve UPD 1434'ü açmak için kurallar eklemek zorunda kaldım (1434) isim kullanılmıyorsa değil, sadece port numarası gereklidir).
Mordachai

11

Bu makale bana yardımcı oldu ...

SQL Server'da uzak bağlantılar nasıl etkinleştirilir

SQL Server'daki her şey yapılandırıldı, sorunum güvenlik duvarının 1433 numaralı bağlantı noktasını engellemesiydi


Herkes Azure tarafından izin verilen bağlantı noktaları yapılandırmasını bilir veya kolayca gelir. Fikrimi aşmadım, bağlantı noktası WINDOWS VM güvenlik duvarı tarafından engellenmiş olabilir. Teşekkürler. + 1
2b77bee6-5445-4c77-b1eb-4df3e5

11

Son zamanlarda bu sorunu yaşadım. 2015 Ağustos

SQL Server Yapılandırma Yöneticisi açılarak çözüldü

  • SQL Server Ağ Yapılandırması -> SQLEXPRESS Protokolleri
  • TCP / IP -> IP Adresleri sekmesindeki özellikler
  • Her şey varsayılan olarak kalır, yalnızca IPALL olarak ayarlanır: TCP Bağlantı Noktası 1433

Makineye SQL Server Manager ile bağlanabilir : [hostaddress], 1433

Misal:

resim açıklamasını buraya girin


6

Varsayılan ayarlarla yüklenen SQL Server 2012 Developer Edition kurulumumda, SQL Server Yapılandırma Yöneticisi -> SQL Server Ağ Yapılandırması -> MSSQLSERVER Protokolleri'ni yüklemek ve TCP / IP'yi Devre Dışı'dan Etkin olarak değiştirmek zorunda kaldım.


1
Kısa not: benim için bu işe yaramadı. Yanlış IP bir sebepten dolayı oradaydı. Ancak, Kyralessa'nın adımları IP'yi güncellemeyi istila ettiklerinden beri hile yaptı.
Brian MacKay

Bu sunucumdan biri için çalışıyor, diğeri için çalışmıyor.
cheny

5

UDP bağlantı noktası 1434'ü açmak için bir güvenlik duvarı gelen bağlantı noktası kuralı eklemek zorunda kaldım. Bu, Sql Server Tarayıcısının dinlediği bir dosyadır.


3

IP'de ayrıntılı yapılandırma gerektirmediği için "Rosdi Kasim" i tercih ediyorum.

Başka bir sunucuyu tekrar çalıştırmayı denediğimde kesinlikle tekrar unutacağım.

Sql Server Browser hizmetini etkinleştirerek Basit Aptal (KISS) tutun, ardından sunucuyu bağladığınızda IP'nin arkasına \ SQLEXPRESS ekleyin.

"\ SQLEXPRESS" olmadan IP kullanarak doğrudan, varsayılan bağlantı noktasını kullanmadığı için benim hatamdı.

Teşekkürler.


3

SQL Server 2014 yerel olarak adlandırılmış örnek yüklü aynı sorunu vardı. Kullanarak bağlama FQDN\InstanceNamesadece benim kullanarak bağlanırken, başarısız olur hostname\InstanceNameçalıştı. Örneğin: kullanarak bağlantı mycomputername\sql2014çalıştı, ancak kullanmadı mycomputername.mydomain.org\sql2014. DNS doğru bir şekilde çözüldü, TCP / IP SQL Configuration Manager içinde etkinleştirildi, Windows Güvenlik Duvarı kuralları eklendi (ve ardından hiçbir şeyi engellemediğinden emin olmak için güvenlik duvarını test için kapattı), ancak bunların hiçbiri sorunu çözmedi.

Son olarak, SQL Server " SQL Server Tarayıcısı " hizmetini başlatmak zorunda kaldı ve bu bağlantı sorunu giderildi.

SQL Server Browser hizmetinin SQL Server'ın bağlantı kurmasına yardımcı olduğunu hiç fark etmemiştim; Bağlanmak için "daha fazla gözat" sunucularını tıklattığınızda açılan menüleri doldurmaya yardımcı olduğu izlenimi altındaydım, ancak bağlantı noktası # açıkça atanmamışsa (istekleri) kullanmak için doğru bağlantı noktası # ile hizalamaya yardımcı oluyor. web sitesi bağlantılarının, birden çok web sitesi barındıran bir IIS web sunucusunda aynı sorunun hafifletilmesine nasıl yardımcı olduğuna)

Bu bağlantı öğesi bana SQL Server Tarayıcı hizmeti hakkında ipucu verdi: https://connect.microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn-machine- isim

  • sunucu adı olarak wstst05 \ sqlexpress kullandığınızda, istemci kodu makine adını örnek adından ayırır ve wstst05 netbios adıyla karşılaştırılır. Eşleşmeleri için hiçbir sorun görmüyorum ve bağlantı yerel olarak kabul ediliyor. Oradan, gerekli bilgileri almak OLMADAN sorunsuz SQL Browser ve paylaşılan bellek üzerinden SQL örneğine bağlantı temas.
  • wstst05.capatest.local \ sqlexpress komutunu kullandığınızda, istemci kodu adın (wstst05.capatest.local) netbios adıyla (wstst05) karşılaştırılmasını engeller ve bağlantıyı "uzak" olarak kabul eder. Bu tasarım gereğidir ve gelecekte bunu kesinlikle geliştirmeyi düşüneceğiz. Her neyse, bağlantıyı uzaktan ele alması ve bunun adlandırılmış bir örnek olması nedeniyle, istemci ad çözümlemesi için SQLBrowser kullanması gerektiğine karar verir. Wstst05.capatest.local (UDP bağlantı noktası 1434) üzerinde SQL Tarayıcısı ile iletişim kurmaya çalışır ve görünüşe göre bu bölüm başarısız olur. Bu nedenle aldığınız hata.

TechNet'ten "SQL Server Tarayıcısı" hizmetinin nedeni (benim tarafımdan eklenen vurgu): https://technet.microsoft.com/en-us/library/ms181087(v=sql.120).aspx

"SQL Server Tarayıcısını Kullanma" bölümünde:

SQL Server Tarayıcı hizmeti çalışmıyorsa, doğru bağlantı noktası numarasını veya adlandırılmış yöneltme sağlarsanız, yine de SQL Server'a bağlanabilirsiniz. Örneğin, 1433 numaralı bağlantı noktasında çalışıyorsa varsayılan SQL Server örneğine TCP / IP ile bağlanabilirsiniz. Ancak, SQL Server Tarayıcı hizmeti çalışmıyorsa, aşağıdaki bağlantılar çalışmaz :

  • Tüm parametreleri (TCP / IP bağlantı noktası veya adlandırılmış yöneltme gibi) tam olarak belirtmeden adlandırılmış bir örneğe bağlanmaya çalışan herhangi bir bileşen .
  • Daha sonra başka bileşenler tarafından yeniden bağlanmak için kullanılabilecek sunucu \ örnek bilgilerini üreten veya ileten herhangi bir bileşen.
  • Bağlantı noktası numarasını veya kanalını girmeden adlandırılmış bir örneğe bağlanma .
  • TCP / IP bağlantı noktası 1433 kullanılmıyorsa, adlandırılmış bir örneğe veya varsayılan örneğe DAC.
  • OLAP yeniden yönlendirme hizmeti.
  • SQL Server Management Studio, Enterprise Manager veya Query Analyzer'da sunucuları numaralandırma.

İstemci-sunucu senaryosunda SQL Server kullanıyorsanız (örneğin, uygulamanız bir ağ üzerinden SQL Server'a erişirken), SQL Server Tarayıcı hizmetini durdurur veya devre dışı bırakırsanız, her örneğe belirli bir bağlantı noktası numarası atamanız ve bağlantı noktası numarasını her zaman kullanmak için istemci uygulama kodunuzu yazın. Bu yaklaşımın aşağıdaki sorunları vardır :

  • Doğru bağlantı noktasına bağlandığından emin olmak için istemci uygulama kodunu güncellemeli ve bakımını yapmalısınız.
  • Her örnek için seçtiğiniz bağlantı noktası, sunucudaki başka bir hizmet veya uygulama tarafından kullanılabilir ve bu da SQL Server örneğinin kullanılamamasına neden olur.

Ve aynı makalede "SQL Server Tarayıcısı Nasıl Çalışır" bölümünden daha fazla bilgi:

Çünkü SQL Server'ın yalnızca bir örneği bir bağlantı noktası veya kanal kullanabilir, SQL Server Express dahil olmak üzere adlandırılmış örnekler için farklı bağlantı noktası numaraları ve kanal adları atanır. Varsayılan olarak, etkinleştirildiğinde, hem adlandırılmış örnekler hem de SQL Server Express dinamik bağlantı noktalarını kullanacak şekilde yapılandırılır, yani SQL Server başlatıldığında kullanılabilir bir bağlantı noktası atanır. İsterseniz, SQL Server örneğine belirli bir bağlantı noktası atanabilir. Bağlanırken, istemciler belirli bir bağlantı noktası belirtebilir; ancak bağlantı noktası dinamik olarak atandıysa, SQL Server yeniden başlatıldığında bağlantı noktası numarası değişebilir, bu nedenle doğru bağlantı noktası numarası istemci tarafından bilinmez. ... SQL Server istemcileri SQL Server kaynakları istediğinde, istemci ağ kitaplığı 1434 numaralı bağlantı noktasını kullanarak sunucuya bir UDP iletisi gönderir. SQL Server Tarayıcısı, istenen örneğin TCP / IP bağlantı noktası veya adlandırılmış yöneltmesi ile yanıt verir.


2

Configuration Manager üzerinden bağlantı noktası eklemek ve bağlantı noktası numarasını sql bağlantıma [host] \ [db örnek adı], 1433 eklemek zorunda kaldım

Örnek adı ile bağlantı noktası arasındaki virgüllere dikkat edin


1

Şimdiye kadar verilen tüm cevaplardan farklı bir sorun yaşadım!

SQL Server Express değil, Visual Studio'da olduğunu söyleyerek başlamalıyım, ancak çözüm tamamen aynı olmalıdır.

Tanrım, aslında çok basit ve belki biraz aptalca. Bir veritabanı oluşturmaya çalıştığımda ve Visual Studio SQL Server adını önerdi ve bana Windows kullanıcı adımı verdi ve aslında bunun için gittiğim sunucunun adı.

Aslında bu aslında benim Windows kullanıcı adım + idi \SQLEXPRESS. Herhangi bir ayarı değiştirmediyseniz, bu muhtemelen sizindir. Çalışıyorsa okumayı bırakın; bu benim cevabım. Eğer işe yaramazsa belki isim farklıdır.

Benim gibi bu sorunu yalnızca Visual Studio'da kendinizin ne olduğunu denetlemek için yaşadıysanız şu adımları izleyin:

  1. Açık SQL Server Management Studio simgesi .
  2. Sunucunuzu görmüyorsanız (varsayılan olarak sola sabitlenmiş olarak) tuşuna basın F8veya Görünüm -> Nesne Gezgini'ne gidin .
  3. Sunucunun adına sağ tıklayın ve Özellikler'i seçin (Son öğe)
  4. Sol altta sunucunuzun gerçek adını " Sunucu " altında görebilirsiniz (Bağlantı değil, üstünde).

Bu sunucunun adı ve bağlanmaya çalışmanız gereken şey bu! Visual Studio'nun önerdiği şey değil!



1

Benim durumumda veritabanı standart olmayan bağlantı noktasında çalışıyordu. Bağlandığınız bağlantı noktasının, veritabanının üzerinde çalıştığı bağlantı noktasıyla aynı olup olmadığını denetleyin. Daha fazla SQL sunucusu örneği varsa, doğru sunucuyu kontrol edin.


0

Tek yapmanız gereken sunucunun güvenlik duvarındaki ilgili bağlantı noktasını açmak.


6
Ne yazık ki, bu "yapmanız gereken tek şey" değildir. Yukarıdaki kabul edilen cevapta belirtildiği gibi, atılması gereken birkaç adım daha var.
13'te salise

2
Aslında, benim durumumda bu tüm yapmam gereken, bu yüzden haksız yere işaretlenmiş ve aslında yararlı girdi oldu.
MagicalArmchair

1
1433 numaralı bağlantı noktasını açmak için bir kural eklemek benim için onu düzeltti.
GiddyUpHorsey

Onun 'adil "bir çok şey size değişecektir için ek adımlar gerekli olan ne hizada olmak zorunda" demek düşünüyorum
Mordachai

SQL 10 hizmet veren Windows 10'u almadan önce Kyralessa'nın ve Pete'in ve bunun da hepsini yapmak zorunda kaldım.
alfadog67

0

SQL Server'a bağlanırken sorun mu yaşıyorsunuz?

Güvenlik duvarını çıkarmayı deneyin.

Bağlı olmayan güvenlik duvarı ile bağlanabiliyorsanız, "sql service broker" gibi bazı giriş kurallarını kaçırıyor olabilirseniz, bu giriş kurallarını güvenlik duvarınıza ekleyin:

"SQL YÖNETİCİ BAĞLANTISI" TCP PORT 1434

"SQL YÖNETİCİ BAĞLANTISI" UDP PORT 1434

"SQL ANALİZ HİZMETİ" TCP PORT 2383

"SQL GÖZ ATMA ANALİZ HİZMETİ" TCP PORT 2382

"SQL DEBUGGER / RPC" TCP PORT 135

Dinamik bağlantı noktalarınız varsa "SQL SERVER" TCP PORT 1433 ve diğerleri

"SQL SERVİS ARACI" TCP PORT 4022

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.