Hoþgeldiniz           
   
"SQL Server baþvuru kaynaðýnýz"
Skip Navigation Links
=========
Anasayfa
Makaleler
Hatalar \ Çözümler
Duyurular
Diðer
Ýpuçlarý
Yararlý Adresler
Mesaj TahtasýExpand Mesaj Tahtasý
HakkýmdaExpand Hakkýmda
Ýletiþim
Kullanýcý Adý:
Þifre:
 

Ne Mutlu Türküm Diyene!

SQL Server ile ilgili soru sormak için buraya týklayýn!


Yazýlarýmý nasýl buluyorunuz?






En Son SQL Server ile Ýlgili Okuduðum Kitaplar
- Inside Microsoft SQL Server 2005: Query Tuning and Optimization - MS Press (Ýngilizce)
- Accelerated SQL Server 2008 - Apress (Ýngilizce)
- Designing and Optimizing Data Access by Using SQL Server 2005 - MS Press (Ýngilizce)
- Microsoft SQL Server 2005 Database Solutions Design - Wiley Publishing (Ýngilizce)- Optimizing and Maintaining a Database Administration Solution by Using SQL Server 2005 - MS Press (Ýngilizce)- Designing a Database Server Infrastructure Using SQL Server 2005 - MS Press (Ýngilizce)- SQL Server 2005 Implementation and Maintenance - MS Press (Ýngilizce)
- SQL Server 2005 Administrators Companion - MS Press (Ýngilizce)


                   
SQL Server 2005: Uzaktan Baðlantý

Son güncelleme tarihi: 10 Temmuz 2008
  


Merhabalar,


Bir SQL Server Instance' ýna uzaktan baðlanma konusunda gerek forumlardan gerekse habergruplarýndan çok soru geliyor. En güzeli bu konuda bir yazý yazmak dedim ve bu makaleyi klavyeye(!) (kaleme?) aldým.

Bir SQL Server Instance' ýna uzaktan baðlanabilmeniz için, kurulu olan SQL Server Instance' ýnýn sürüm (Edition) bilgisi, SQL Server Instance' ýnýn üzerinde kurulu olduðu Ýþletim Sistemini bilgisi öncelikle dikkate almanýz gereken bilgilerdir.

Peki neden? Çünkü, meselâ SQL Server 2005' in Express Edition ve Developer Edition' larýnda, uzaktan baðlantý için kullanýlabilecek TCP/IP ve Named Pipes protokolleri kapalýdýr. Bu protokoller konusunda daha fazla bilgi almak için Baðlantý Protokolleri isimli yazýmý okuyabilirsiniz.

Windows XP SP2 ve Windows' un daha sonraki sürümlerinde ise Windows Güvenlik Duvarý vardýr ve bu uygulama etkin olduðunda SQL Server 2005 Instance' ýnýza uzaktan eriþimi engeller. Çünkü varsayýlan olarak SQL Server' ýn kullandýðý portlar Windows Güvenlik Duvarýnda açýk deðildir.

Uzaktan Baðlantý için Yapýlmasý Gerekenler
1 - SQL Server Instance' ýnýzýn ilgili protokolünün yapýlandýrýlmasý,
2 - Eðer varsa ve etkinse, Windows Güvenlik Duvarýnýn yapýlandýrýlmasý
3 - SQL Server' ýnýza baðlanabilmeniz için kullanacaðýnýz Login.

1- SQL Server Protokollerinin Yapýlandýrýlmasý:
SQL Server 2005 Instance' ýnýz için hangi protokolü kullanacaðýnýzý belirledikten sonra, bu protokolün yapýlandýrmasýný gerçekleþtirirsiniz. SQL Server protokollerinin yapýlandýrýlmasý iþlemleri için SQL Server 2005 ile birlikte gelen SQL Server Configuration Manager' ý kullanabilirsiniz. (Baþlat\Programlar\Microsoft SQL Server 2005\Configuration Tools) Konuya örnek olmasý için aþaðýda TCP/IP protokolünün nasýl yapýlandýrýlabileceðini anlatacaðým.

TCP/IP Yapýlandýrmasý Örneði:
SQL Server 2005 Instance' ýnýza uzaktan yapýlacak baðlantýlarda kullanýlacak TCP/IP protokolünü yapýlandýrmak için SQL Server Configuration Manager' ý baþlatýn.

Daha sonra, Þekil-1' de de gösterdiðim gibi SQL Server 2005 Network Configuration düðümü altýndan uzaktan baðlantý kurulmasýný istediðiniz SQL Server 2005 Instance' ýnýzý seçin. Benim örneðimde bu, TEST2 Instance' ý olacak.


Þekil-1

TCP/IP protokolünü etkinleþtirmek veya etkin olduðundan emin olmak için, Þekil-1' de de gösterildiði gibi Protocol Name alanýndaki TCP/IP protokolünün Status deðerine bakabilirsiniz. "Enabled" etkin olduðu anlamýna gelir, "Disabled" ise etkin deðil demektir. Bu deðeri deðiþtirmek için TCP/IP protokolünün üzerinde fare ile çift týklayýn veya TCP/IP protokolünün üzerinde farenin sað tuþuna týklayarak, açýlan menüden "Properties" seçeneðine týklayarak "TCP/IP Properties" penceresini açýn.

Þekil-1' de gösterildiði gibi "TCP/IP Properties" penceresi açýlacaktýr. TCP/IP protokolünü etkinleþtirmek için, "TCP/IP Properties" penceresindeki "Protocol" isimli sekmede bulunan "Enabled" etiketinin karþýsýndaki aþaðý açýlýr listeden "Yes" deðerini seçin.

"Protocol" sekmesindeki "Listen All" seçeneði önemli bir seçenek bu nedenle buna da deðinmek istiyorum. "Listen All", bilgisayara baðlý tüm Að Kartlarýnýn (Örn:Ethernet) IP adreslerinin SQL Server tarafýndan dinlenip dinlenmeyeceðini belirler. Eðer bu seçeneðin deðeri "No" yapýlýrsa, biraz sonra da deðineceðim gibi "IP Addresses" sekmesindeki her IP adresini tek tek yapýlandýrmanýz gerekir ve gene ayný sekmede bulunan "IPAll" seçeneklerinin herhangi bir geçerliliði kalmaz. Eðer deðeri "Yes" yaparsanýz, o zaman gene "IP Addresses" sekmesindeki "IPAll" seçenekleri etkinleþir ve diðer tüm IP adreslerine uygulanýr. "Listen All" u etkinleþtirdikten sonra "IPAll" seçeneðindeki ayarlarýn, diðer ayarlarý bastýracaðý unutmayýn, yoksa ileriki paragraflarda aklýnýz karýþabilir.

TCP/IP protokolünün IP adresi veya Port ayarlarýný yapýlandýrmak için, gene "TCP/IP Properties" penceresinde bulunan "IP Addresses" isimli sekmeye týklayýn. (Bakýnýz: Þekil-2)


Þekil-2

Bu listede her Að Adaptörünüz için bir IP ayar bölümü listelenecektir.

Hangisinin etkinleþtirilmesini istiyorsanýz, onun "Active" ve "Enabled" ayarlarýnýn karþýsýndaki deðerleri "Yes" durumuna getirin. "Active", o IP adresinin dinleneceðini belirtir. "Enabled" ise o IP adresinin kullanýlýp kullanýlmayacaðýný. "IP Address" bölümde ise IPv4 veya IPv6 deðeri yer alýr. Eðer "TCP Dynamic Ports" etiketinin deðeri "0" ise, bunun anlamý bu IP adresi için kullanýlacak portun dinamik bir þekilde belirleneceðidir. Bu durumda SQL Server, bu IP adresi için müsait olan bir port numarasý atayacaktýr.

Meselâ Þekil-2' deki örnekte, TEST2 SQL Server Instance' ý, Dinamik Port olarak atanan 51495 portunun tüm IP' ler tarafýndan dinlenilmesi için yapýlandýrýlmýþ. (Bu örnekte, "Protocol" sekmesindeki  "Listen All" deðerinin "Yes" olduðunu Þekil-1' den anýmsayýn, aksi takdirde IPAll deðerlerinin bir geçerliði olmadýðýný daha önceki paragraflarýmdan hatýrlýyor olmalýsýnýz.) Eðer tüm IP' lerin duraðan bir IP kullanmasýný isteseydik, o zaman "TCP Dynamic Ports" un deðerini boþ býrakýp, TCP Port' un deðerine, kullanýlmasýný istediðimiz IP numarasýný yazacaktýk. Bu amaçla, 65535' e kadar müsait bir port numarasý seçebilirsiniz.

Þimdi aklýnýza þu da takýlýyor olabilir, "biz dinamik port kullanacaðýmýz zaman TCP Dynamic Port' s 0 yazýyoruz, nasýl oluyor da orada þimdi 51495 yazýyor?" Çünkü SQL Server bu IP' ye bir dinamik IP atadýðý zaman, 0 yerine bu dinamik IP' yi görüyorsunuz.

Þekil-2' de gördüðünüz gibi 192.168.2.2 numaralý IP için iki tane port numarasý kullanýlmýþ. Eðer bir IP' nin birden çok port kullanmasýný istiyorsanýz, o zaman birden çok Port numarasýný virgüllerle ayýrarak yazabilirsiniz. Bu IP' ye Port numaralarý yazýlmýþ, ama peki IPAll' da da dinamik port (51495) kullanýyoruz? Hangisi geçerli olacak? Hemen bir kaç paragraf önceki yazýmdan da hatýrladýðýnýzý varsayýyorum! Neydi? Eðer "Protocol" sekmesindeki "Listen All" un deðeri "Yes" ise, o zaman IPAll' da yazan deðerler, diðer deðerleri bastýrýrdý. Yani bu durumda, eðer "Listen All" un deðeri "No" olsaydý, 192.168.2.2 numaralý IP, 51495 numaralý dinamik portu deðil, 16666 ve 46123 numaralý statik portlarý kullanacaktý. Bu kadar örnekten sonra bu kavramlarýn oturtuðunu varsayýyorum. 

SQL Server Instance' ýnýza uzaktan baðlanabilmek için size duraðan (Static) portlarý kullanmanýzý tavsiye ederim. Bu nedenle, Þekil-2 deki "TCP/IP Properties" penceresindeki ilgili IP' nin "TCP Dynamic Ports" etiketinin deðerini boþ býrakmanýzý tavsiye ederim. Yani orada ne "0" ne de baþka bir deðer yazmasýn ve gene ayný penceredeki "TCP Port" etiketinin deðerine müsait bir port numarasý girin ve bu ayarlarýn geçerli olabilmesi için, protokolün ait olduðu SQL Server Instance' ýnýn SQL Server servisini durdurup tekrar baþlatýn.

Peki SQL Server Instance' ýnýzýn hangi port numarasýný dinlediðini nasýl teyit edeceksiniz? Bunun için Komut Ýstemcisi (Command Prompt) u kullanabilirsiniz. Komut Ýstemcisini çalýþtýrýn (Baþlat\Çalýþtýr ve týrnak içindeki komutu yazýn "cmd" ve çalýþtýrýn.)

O anki TCP/IP baðlantýlarýný ve protokol istatistiklerini görüntüleyebilmemiz için Komut Ýstemcisinde Netstat komutunu kullanabiliriz. Hangi Protokolün ve IP numarasýnýn hangi portu kullandýðýný ve durumunu görüntülemek için "Netstat -a" komutunu kullanacaðýz. Bu komut hakkýnda daha fazla bilgi alabilmek için Komut Ýstemcisindeyken "Netstat -?" komutunu çalýþtýrabilirsiniz.

Aþaðýdaki Þekil-3' te "Netstat -a" komutunu çalýþtýrdýktan sonra nasýl bir görüntüyle karþýlaþacaðýnýzý görebilirsiniz.


Þekil-3

Beyaz çerçeve ile iþaretlediðim aralýkta, 192.168.2.2 IP numaralý SQL Server sunucumuzun 16666 ve 46123 numaralý portlarý dinlediðini (LISTENING) görebilirsiniz.


2 - Windows Güvenlik Duvarýnýn Yapýlandýrýlmasý:
Bu konuda Microsoft tarafýndan yazýlmýþ bir makale zaten mevcut için benim bu konuda daha fazla bir þey yazmama gerek kalmýyor. Buraya týklayarak bahsini ettiðim makaleye ulaþabilirsiniz.

Ahh ama bir þey de eklemeden edemeyeceðim! Bazý durumlarda bu iþlemleri yapmanýn da yetersiz kaldýðýný gördüm. Meselâ bir müþterimiz tüm bunlarý yaptýðý halde gene de uzaktaki SQL Server sunucusuna baðlanamýyordu. Nedeni ise, modemindeki Güvenlik Duvarý ve kýsýtlamalardý. Yani, modeminizdeki yapýlandýrmayý da gözden geçirmenizde yarar var. Aksi takdirde günlerce uðraþýr sorunu çözemezsiniz...

3- Login:
Çoðunuzun bildiði gibi SQL Server' da Authentication Mode (Yetkilendirme Modu) olarak iki adet seçeneðimiz bulunuyor. Birisi Windows Authentication, diðeri ise SQL Authentication (veya Mixed Authentication).

Windows Authentication' ý sadece güvenilir ortamlarda kullanabilirsiniz. Nedir güvenilir ortamlar? Meselâ ayný Domain' in parçasýysanýz güvenik iliþkisi olan bir ortamdasýnýzdýr. Eðer yetkileriniz izin veriyosa, kendi Domain hesabýnýzla ayný Domain' in parçasý olan diðer kaynaklarý kullanabilirsiniz. Bizim konumuzla alâkalý bir örnek vermek gerekirse, SQL Server Instance' ýnýza bir Domain Güvenlik Grubunun bir üyesi olarak veya bir Domain hesabýyla baðlanabilirsiniz. SQL Server için herhangi bir þifre girmenize de gerek kalmaz. Mümkün olan her senaryoda bu Authentication Mode' unu kullanmanýzý tavsiye ederim. SQL Authentication' dan çok daha güvenlidir. Zaten Microsoft' da bunu tavsiye eder ve dokümanlarýnda da SQL Authentication' ý sadece geriye destek için hâlâ barýndýrdýklarýný söylüyorlar.

SQL Login deyince benim aklýma hemen "sa" geliyor. Çünkü kullanýcýlarýn yaptýðý bu yanlýþý o kadar çok gördüm ki...

Arkadaþlar! Lütfen her þey için "sa" hesabýný kullanmayýn! KULLANMAAAAYIN! Çünkü "sa" hesabý "sysadmin" sabit sunucu rolü üyesi (ve bu rolden çýkarýlamaz) bir hesaptýr.

SQL Server 2005 Instance' ýnýzý kurarken Authentication Mode olarak eðer Windows Authentication' ý seçmiþ iseniz, o zaman "sa" hesabý otomatik olarak kullanýlamaz olacaktýr. Tabi ta ki siz onu etkinleþtirip, Authentication Mode' unu da Mixed Authentication yapmadýðýnýz sürece. Eðer SQL Server 2005 Setup' taki Authentication Mode bölümünde Mixed Authentication' ý iþaretlediyseniz, o zaman "sa" hesabý kullanýlabilir olacaktýr.

"sa" hesabýný neden kullanmamalýyýz konusuna SQL Server 2008: Güvenlik ile ilgili deðiþiklikler isimli yazýmda deyinmiþtim. Tekrar tekrar ayný þeyleri yazmanýn gereði yok, o yüzden ilgilenenler, o yazýmdaki "sa" hesabýyla ilgili yazdýklarýmý okuyabilirler.

Eðer baðlanacaðýnýz SQL Server Instance' ý ile güvenilir bir ortamda deðilseniz, o zaman SQL Authentication yoluyla bir SQL Login kullanarak baðlanabilirsiniz.

Login haklarý ise bu konunun ötesinde bir konu.


Ekrem Önsoy

Anasayfa


 
Bu sitenin tüm haklarý, Ekrem Önsoy' a aittir.