💻 Bilgisayar

SQL Server’ı Uzaktan Bağlantı İçin Ayarlamak

Microsoft SQL Server’a uzaktaki bir bilgisayardan bağlanmak için tek yapmanız gereken, SQL Server Manager’da makinenin adı, kullanıcı adı ve şifreyi girmek veya programdaki connection stringi değiştirmek gibi gelir insana… Hata mesajı verince anlarsanız o kadar basit olmadığını.

Bu yazı, SQL Server 2008 sürümünde uzaktan bağlantı ayarlarının nasıl yapıldığını anlatıyor.

SQL Server’ı TCP/IP Üzerinden Çalışmak Üzere Ayarlayalım

1. SQL Server Configuration Manager’i açın.

2. SQL Server Network Configuration / Protocols for MSSQLSERVER yaprağına gidin.

3. Sol tarafta, SQL Server’ın istemcilerle iletişim için kullandığı protokoller görünecektir. TCP/IP’ye çift tıklayarak ayar penceresini açın.

4. Protocol sekmesindeki Enabled ayarını Yes yaparak TCP/IP protokolü ile bağlantı kabul edilmesini aktif hale getirin.

5. Şimdi sunucunun hangi IP adresine/adreslerine gelen TCP/IP yanıtlarına cevap vereceğini belirlememiz gerekiyor. Varsayılan olarak (doğru tahmin, güvenlik sebebiyle) SQL Server hiçbir uzaktan bağlantıya yanıt vermez. İstediğiniz bağlantıları açmak için, IP Addresses sekmesine geçin.

6. Bu sekmede sunucunuzun o anda sahip olduğu tüm IP adresleri görünecektir. 127.0.0.1 gibi özel bağlantılar ve eğer birden fazla ağa bağlıysanız bu ağlar listede listelenecektir. Bu IP adreslerinin hangilerinden bağlantı kabul etmek isiyorsanız, bu IP adreslerinin ayarları içerisinde yer alan Enabled propertylerini Yes yapın. Örnekte SQL Server tüm sunucu IP’lerinden gelecek bağlantılara açık bir şekilde yapılandırılıyor.

Böyle bir ayar neden var?

Sunucunuzda iki ethernet kartı olduğunu düşünün. Birisi İnternet’e çıkıyor, diğeri IIS sunucusuna bağlı. İnternet’ten gelecek doğrudan veritabanı bağlantılarını kabul etmemek için dış IP’yi bağlantılara kapatmak, IIS sunucusu ile kurduğunuz ağdan ise veritabanı bağlantılarına izin vermek isteyebilirsiniz.

7. İstediğiniz IP’leri Enabled yaptıktan sonra OK ile pencereyi kapatın.

8. Değişikliklerin, sunucunun bir sonraki başlatımında aktif hale geleceğini bildiren kutucuğu OK ile kapatın.

9. Şimdi sunucuyu tekrar başlatmamız gerekiyor. Eğer maceracıysanız tüm sunucuyu yeniden başlatabilirsiniz. Yok kalsın diyorsanız, sadece SQL sunucu servisini yeniden başlatmak için SQL Server Configuration Manager’de SQL Server Services kısmına geçin.

10. SQL Server (INSTANCE ADI) isimli servise sağ tıklayın ve Restart’ı seçin. Bir süre sonra servis kapanıp tekrar açılacaktır.

Windows Firewall’ı Ayarlayalım

11. SQL Server kısmındaki ayarlamalar bitti. Şimdi gelen bağlantıları engellememesi için Windows Firewall’ın ayarlarını yapmamız lazım. Bunun için Windows Firewall’ı açın.

12. Sol taraftaki seçeneklerden Advanced Settings bağlantısını seçin.

13. Gelen pencerede sol taraftaki Inbound Rules seçeneğine tıklayın.

14. Actions kısmından New Rule…‘ye basın.

15. Rule Type aşamasında Port, Protocol and Ports kısmında TCP ve port numarası olarak 1433’ü seçin.

16. Action aşamasında Allow the connection diyerek, bu porttan gelen bağlantılara izin verin.

17. Profile aşamasında üç seneçeği de seçerek, gelen bağlantı nereden olursa olsun (yerel ağ, dışarıdan, vs…) bağlantıya izin vermesini sağlayalım.

18. Name aşamasında bu kurala bir isim vererek yapılandırmayı sonlandıralım.

19. Artık bağlanabilirsiniz. Eğer yetkileri doğru ayarladıysanız, bağlanmak için artık sadece sunucunun makine adına veya IP adresine ihtiyacınız var. Bu IP’ye 6. adımda izin vermiş olmalısınız ve bu IP ile sunucuya bağlanmak istediğiniz bilgisayar arasında bağlantı kurulabiliyor olmalı. Sunucuya bağlanmak istediğiniz bilgisayarda SQL Server Management Studio’yu açın.

20. Server kısmına bağlanacağınız bilgisayarın (yani ayarını yaptığınız sunucunun) makine adını veya IP adresini yazın. Daha önce sunucuda yetkilendirilmiş bir kullanıcı hesabı ile giriş yapın. (Bu örnekte sa ile giriş yapılmıştır.)

21. Bitti. 🙂

Ufak Notlar

  • Bu anlatım Windows 7 Professional üzerinde çalışan Windows Virtual PC üzerinde çalışan Windows 7 Ultimate üzerinde çalışan bir SQL Server 2008 sunucusu üzerinden yapılmıştır. Diğer sistemlerde ayarlar ufak da olsa farklılık gösterebilir.
  • Bu ayarlarda SQL Server’a kullanıcı hesabı eklemek anlatılmamıştır, hali hazırda bağlantıya hazır bir kullanıcı hesabınız olduğu varsayılmıştır.
  • Windows Firewall dışındaki ürünlerde TCP 1433 portundan gelen bağlantı isteklerine izin vermek üzere yapılandırma yapmalısınız. Port numarası 6. adımdaki ayar penceresinden değiştirilebilir.
  • Hala bağlantı kurulamıyorsa, bazı fiziksel ağ bileşenleri bu portu engelliyor olabilir. Benim gibi sanal bir makine üzerinde veya ağ altyapısını çok iyi bildiğiniz bir yerde veya cross kablo ile deneme yapmanızı öneririm.
  • Sunucunuza İnternet’ten bağlantı izni vermek ciddi bir güvenlik açığdır. Kiminle neyi paylaştığınıza, özellikle firewall ayarları esnasında çok dikkat ettin. Vallahi hiç acımazlar.
  • Bu yazıda SQL Browser servisi aracılığı ile SQL Server Management Studio’da ağdaki sunucuları görebilme özelliği anlatılmamıştır.

SQL Server’ı Uzaktan Bağlantı İçin Ayarlamak 61 yorum aldı.

  1. Umut bey, ellerine sağlık. İnan bu konuda bakmadığım yer kalmadı desem her halde abartmış olmam. Sql'i kaldırıp tekrar mı kurmadım. projedeki connectionstringle mi oynamadım. İnanır mısın bilgisayara format bile attım, gözden gaçırdığım bi şey olabilir diye…tekrar tekrar teşekkür ederim…

    1. Size aynen katılıyorum 🙂 bu konuda internette çok gereksiz kaynaklar var. İnsanlar boşuna zaman arıyorlar. Buradaki anlatımınızı beğendik. devamınıda bekleriz.

  2. Gerçekten Çok yararlı bir bilgi birçok araştırmadan sonra bu bilgiyi bulmak cok güzel elinize sağlık

  3. Faydalı bir yazı yazmışsınız bizim de buna benzer bir sorunumuz var bir yazılım yapıyoruz aynı ağda olmayan pclerin ana pcde bulunan servera bağlanması gerekiyor fakat yukarıda yaptığınız ayarları setup'ı kurarken otomatik, mümkünse kodla yaptırmamız gerekiyor sizin bir öneriniz, tecrübeniz var mı bu konuda?
    teşekkürler..

    1. yazıda anlatılan ayarlar sunucunun yüklü olduğu ana makinede yapılacak ayarlar. diğer makinelerde bir ayar yapılması gerekmiyor, connection string yeterli oluyor. Kurulumda yapmak derken, ana makinedeki sql server kurulumunda mı bunun otomatikleştirilmesinden bahsediyorsunuz?

      1. Evet perakende yazılımlar için kurulum yaparken örneğin firewall'a New Rule ekleme işleminin, TCP/IP protokolünü aktifleştirmenin bir şekilde kod ile yapılması gerekiyor,.

  4. Merhaba,
    Cok guzel bir paylasim olmus tesekkurler.
    Benim bir kac sorum olacak yardim edebilirseniz sevinirim.
    Uzaktan baglantida sorun yasadigim icin adim adim gideyim dedim,
    Servername kismina
    BARAN-PC\SQLEXSPRESS yazinca baglanti basarili oluyor.
    localhost\SQLEXSPRESS yazinca baglanti basarili oluyor.
    127.0.0.1\SQLEXPRESS baglanti basarisiz.
    192.168.1.250\SQLEXPRESS baglanti basarisiz. (Bilgisayarin kendi ipsi)
    Yukardaki gibi tum IPlere izin verdim, neyi gozden kaciriyor olabilirim ?

    2. Bir soru ise IP leri enable ettigimiz ekranda uzak baglanicagim bilgisayarin direkt IP si cikmiyor, ben de hepsini enable ettim devam ettim. Cikmamasi normal mi ?

    Simdiden tesekkur ederim, bu is biraz basimi agritmaya basladi :))

      1. uf yaaaa sql serverde neymisss connect to serverde oraya ne yazacam bennnnn?? yardımm lutfen

  5. SERVER'E BAĞLANAMIYORUM.GÖSTERDİĞİNİZ AYARLARI ADIM ADIM YAPTIM SERVER'DA AMA Sunucuyla bağlantı kurulurken ağ ile ilgili veya örneğe özel bir hata oluştu. Sunucu bulunamadı veya sunucuya erişilemiyor. Örnek adının doğru olduğunu ve SQL Server'ın uzak bağlantılara izin verdiğini doğrulayın. (provider: Adlandırılmış Kanal Sağlayıcısı, error: 40 – SQL Server için bağlantı açılamadı) (.Net SqlClient Data Provider)
    BÖLE Bİ HATA ALIYORUM ACİL YARDIM EDERSENİZ SEVİNİRİM…TESEKKÜRLER

    1. Hata mesajının İngilizcesini yazarsanız belki bir yorum yapabilirim. Ayrıca tamamını büyük harfle yazmazsanız memnun olurum.

  6. SQL Server 2008 R2'de sorgu çalıştırmak istediğimde güvenlik duvarının programı bloke ettiğine dair hata mesajı aldım.Bunun üzerine araştırmalarım sonucu bu sayfayı buldum.Yaşadığım soruna en açık biçimde değinilmiş.Anlattığınız ayarlamaları güvenlik duvarında yapmaya çalıştığımda güvenlik duvarı hata veriyordu.Sanırım bir virüsten kayalanıyordu,taratınca düzeldi.Tüm ayarlamaları yaptım ancak bu seferde sorgu çalıştırmak istediğimde kısaca;

    Remote debugging also requires DCOM(TCP Port 135) and IPSEC(UDP 4500/UDP 500) be unblocked.

    What would you like to do?
    .Cancel remote debugging
    .Unblock remote debugging from computers on the local network(subnet)
    .Unblock remote debugging from any computer
    şeklinde mesajla karşılaşıyorum ne yapmam gerektiği konusunda yardımcı olur musunuz acaba

    1. Valla açıkçası bir fikrim yok ama hata mesajına göre TCP 135, UDP 4500 ve UDP 500 portlarını açmanız gerekiyor. Öte yandan "debugging" ne alaka onu da anlamadım. Eğer güvenlik önemli değilse 'Unblock remote debugging from any computer' seçeneği denenebilir.

      1. Dediğiniz gibi "Unblock remote debugging from any computer" seçeneğini denedim.Bu seferde aşağıdaki sorguyu çalıştırdığımda
        CREATE DATABASE Universite
        ON ( NAME = Universite, FILENAME = 'C:\universite.mdf', SIZE = 4mb, MAXSIZE = 10mb, FILEGROWTH = 1mb )

        CREATE FILE encountered operating system error 5(Erişim engellendi.) while attempting to open or create the physical file 'C:\universite.mdf'. hatasını veriyor.Anladığım kadarıyla işletim sistemi veritabanı oluşturulmasına izin vermiyor.Bu sorunu nasıl çözebileceğim konusunda yardımcı olursanız sevinirim.

        Israrcı oluyorum belki ama bu işi öğrenmek zorundayım.Bunu dahi beceremezsem okuldan hiç mezun olamam…

      2. C:\'de yeni dosya yaratmak yönetici hakları gerektirir. Ya MSSQL'e C'de dosya yaratma izni vereceksiniz ya da D:\, C:\BİRKLASÖR, Masaüstü, Belgelerim gibi standart kullanıcının da dosya yazma izni olan başa bir klasörde tutacaksınız veritabanının dosyalarını. Bence bu iki seçenekten biri sorunu çözer, ikinci yöntem daha hızlı ve kolaydır.

  7. İkinci yöntemi denedim D:\belgesel\universite.mdf şeklinde.Bu seferde

    Msg 5118, Level 16, State 1, Line 2
    The file "D:\belgesel\universite.mdf" is compressed but does not reside in a read-only database or filegroup. The file must be decompressed.
    Msg 1802, Level 16, State 4, Line 2
    CREATE DATABASE failed. Some file names listed could not be created. Check related errors.
    hatalarını alıyorum.

    1. Dosya sıkıştırılmış şeklinde bir hata vermiş. D:\Belgesel ve içerisindeki veritabanı ile ilgili dosyalar için aşağıdaki ekran görüntüsündeki kısımları bir kontrol etmenizi öneriyorum.

      1. Sanırım oldu.ilk seçenek arşivleme işaretli idi,onu kaldırdım ve sorguyu çalıştırdım oldu.Çok teşekkür ederim =)

  8. merhabalar daha önce yaptıgım ve setupladığım bir programımı yeni aldığım pc e kurdum.
    pc de sql server 2008 r2 yüklü kurdugum programda hata yok ve daha önce defalarca denendi kullanıldı. sorun izinlerde ama yukarıdaki yöntemde işe yaramadı . sürekli aşağıdaki hatayı almaktayım yardım ederseniz çok sevinirim.
    Sunucuyla bağlantı kurulurken ağ ile ilgili veya örneğe özel bir hata oluştu. Sunucu bulunamadı veya sunucuya erişilemiyor. Örnek adının doğru olduğunu ve SQL Server'ın uzak bağlantılara izin verdiğini doğrulayın. (provider: Adlandırılmış Kanal Sağlayıcısı, error: 40 – SQL Server için bağlantı açılamadı)

  9. Merhaba Umut bey, umarım yardımcı olabilirsiniz

    Evimdeki PC de SQL 2008 kurulu Ve dışarıya yayın yapıyor. SQL 2008 e başka bir uzak bilgisayardan, uzak masaüstü ile BAĞLANMADAN, SQL e ve SMC Paneline bir şekilde bağlanılıyor.
    -yada bağlanılabilir mi ?
    (SQL de yaptığımız bir ayar sürekli değişiyor. Uzakdan bir pc den bağlanılarak değiştirmeler yapıldığını düşünüyoruz.)
    Bağlanılabilirse Bunu nasıl iptal edebiliriz. Ana makinamıza zaten direk mudahele etme şansımız var.
    Bu konuda acil yardıma ihtiyacım var.

    1. Bağlanılabilir. Aslında bu yazıda anlatılan ayarların tam tersini yapmanız halinde uzaktan erişimi engelliyor olmanız gerekiyor. Ancak birkaç yıldır SQL Server ile haşır neşir değilim ve inceliklerini unuttum. Bir uzmana danışırsanız daha iyi olabilir.

      1. bu konuda tanıdığım hiç kimse yok malesef bir çok forumda konuda açtm ama henüz cevap alamadım. Uzaktan sadece SQL 2008 e erişimi kapatmak istiyorum bu konuda tanıdığınız veya anlayan arkadaşınız var mıdır ?
        konu gerçekten acil 🙁

      2. Vakit ayırabilecek arkadaş bulabileceğimi sanmıyorum, ancak bulursam size e-posta ile dönüş yaparım.

  10. gerçekten güzel bir anlatım olmuş yukarıda anlatmış olduğunuz gibi ayarları yaptım ama sql management ile bağlanmaya çalıştığım zaman projeye error 40 hatası veriyor bağlanılamadı ya da öyle bir bağlantı yok diyor yardımcı olursanız sevinirim
    kolay gelsin

  11. sql server 2008 bilgisayara kurdum ama server a baglanmıyor. sunucu bulunamıyor hatası veriyor. server name kısmında. kendi bilgisayarıma baglanmıyor acil yardım

  12. Ustad emeğine ellerine aklına sağlık hayatımı kurtardın tuttuğun altın olsun 😀 o kadar çok uğraştım format attım bilgilerimi feda ettim gene aynı problemdi ve sonunda bilgilerimi götürmeden bir çözüme kavuştum Emeğine sağlık :DD;

    Not: Çoğu sitelerde Sql Server içerisindeki 4 database yi sildikten sonra tekrar kurmamız istenmekte ve böylece tekrar kurabilmekteyiz doğru da ama tekrar kurunca çalışmamakta :S

  13. merhaba bi sorum olacak ben 6. adıma geldiğimde sql server servicese bastığımda uzaktan işlem çağrısı başarısız diyor sunucu bulamıyor yardım edersiniz sevinirim

  14. Umut Bey yardımlarınız için sağolun. Bu yöntemle aynı ağdaki bilgs lardan servere bağlanıyorum. Ancak evden aynı servere bağlanmak için ne yapmalıyım. Statik ip adresim var. Modemde port açma ayarlarınıda yaptım. Ama bağlanırken sunucu adını nasıl yazacağız. Statik ip adresimiz 87.124.125.47, açılan port 1433, makine adresi 192.168.2.36. bu durumda sunucu adresini nasıl gireceğiz, şimdiden sağolun

    1. Normalde port ayarı yapıldıysa, uzaktan bağlanırken dış ip adresinin yazılması yeterlidir. Yani 87.124.125.47 yazarak girebiliyor olmalısınız. Olmadı, sunucunun olduğu makineyi modemde DMZ'ye atın, bir de öyle deneyin. Böylelikle modem/port ayarı ile mi ilgili başka bir sorun mu var onu keşfetmiş olursunuz.

  15. Merhaba Arkadaslar web sitem sql e bağlantı açacağı zaman su hatayı alıyorum

    A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server)

    configuration managerda cok ugrastım ama sonuc alamadım yardımcı olabilecek biri var mı ? Şimdiden cok teşekkür ederim

  16. ben 40.hatayi giderdim.Belki senin de isine yarar.Calistirdan services.msc yaz.Orda mssql service aktif mi bak.Deglse aktif yap bi de otomatige ayarla

  17. Merhaba sevgili Umut,
    beni ve tahmin ediyorum ki bir çok kişiyi büyük bir dertten kurtardın.
    Çok açıklayıcı ve oldukça yararlı bir anlatım.
    Gönülden teşekkürler…

  18. Çok güzel anlatmışsın ama bir türlü beceremedim. 🙂

    Tüm adımları 5 kez uyguladım ama olmadı. 2 bilgisayarım var. Birinden diğerine bağlanabiliyorum, ama diğerinden buna bağlanamıyorum. SQL Server 2005. Firewall kapalı falan ama olmuyor.

  19. İp adresi listesini neye göre değiştirmemiz gerekli. Uzaktan baglanacağımız her nokta için ip adresimi ekleyeceğiz?.bu kısmı dogru anlamak istiyorum .çünkü sık sık restart etme lüksüm yok 🙂
    Teşekkür ederim şimdiden.

    1. Merhaba İsa, uzaktan tüm IP'ler ile bağlanmanın mutlaka bir yolu vardır ama yazı ve konu çok eski, maalesef hatırlamıyorum. Öte yandan bu ciddi bir güvenlik riski de oluşturabilir, dikkatli olmakta fayda var.

  20. İyi akşamlar benımde bır problemım var. t-sql de:
    create database exampledb2
    on
    (
    name=exampledb2,
    filename="c:\exampledb2.mdf,
    size=5 mb,
    maxsize=10 mb,
    filegrowth=1 mb
    )
    şeklinde kodlamayı yaptığımda
    Msg 5123, Level 16, State 1, Line 1
    CREATE FILE encountered operating system error 5(Erişim engellendi.) while attempting to open or create the physical file 'c:\exampledb2.mdf'.
    Msg 1802, Level 16, State 4, Line 1
    CREATE DATABASE failed. Some file names listed could not be created. Check related errors.
    bu hatayı veriyor.Çözümünü ne yaptıysam bulamadım.Yardımcı olursanız çok sevinirim saygılar…

    1. Veritabanı yazılımının belirttiğiniz dosyaya erişim izni yok gibi görünüyor.

      1. Disk sağlam mı?
      2. Veritabanı yazımı o dosyaya erişime gerekli izne sahip mi?
      3. Diskte yer var mı?
      4. Başka bir yerde veritabanı dosyasını yaratmaya çalışınca da aynı problem yaşanıyor mu?

      Bu sorulara cevap bularak araştırma alanınızı daraltabilirsiniz.

  21. Hocam yazı için çok teşekkür ederim çok işime yaradı gerçekten. Baya uğraştım sorunu çözmek için sonunda yazınız derman oldu 🙂 Elinize sağlık

  22. çoook teşekkür ederim o kadar faydalı bir yazı oldu ki benim için… Elinize yüreğinize bilginize sağlık 🙂

  23. Hocam SqlServer Services de bende hiçbir şey çıkmadı sadece uzaktan işlem başarısız diye bir satır var başka bi liste yok ne yapmalıyım yeniledim o kısmı ama yine aynı sorunum çözülmedi yardım edermisiniz

  24. Kardeşim aklına ve eline sağlık beni büyük bir stresten kurtardın sayende diğer bilgisayarımdaki veritabanına sorunsuz bağlandım

  25. BU SERVER TARAFI CLIENT TARAFINDA BIR CONNECTION.STRING OLUSTURUP BAGLANMAK GEREKIRSE OZAMAN NASIL BAGLANICAZ. MESELA BEN UDL DOSYASI KULLANIYORUM FAKAT BUNDA PORT NUMARASI GONDEREMIYORSUNUZ. O KONUDA BIR FIKRINIZ VARMI ….

  26. arkadaşım ramazan günü öyle dua ettim ki sana yazın sayesinde baglantı kurdum ve ise girmem için proje yapmam gerekiyordu cok sağol dua ediyorum sana

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir