Üye Ol | Bağlan
ANASAYFA | VERİTABANI | PROGRAMLAMA | HAKKIMIZDA | BLOG | ETKİNLİKLER | KAYNAKLAR
Yazı Hakkında
  Seviye:
Yazar:Yaşar GÖZÜDELİ
Okunma: 10033
Oylanma:100 kişi (5,54/10)
 
 
Tavsiye Et
Yazıcı Dostu
Evrak Çantama Al
 
KATEGORİLER
  VERİTABANI
    ORACLE
    HIZLI SQL KURSU-1
    SQL SERVER 2005
    SQL SERVER 2000
PROGRAMLAMA
    JAVA
    ADO.NET
    MOBİL PROGRAMLAMA
    ASP.NET
    VB.NET
    C# ve C#.NET
İŞARETLEME DİLLERİ
    HIZLI WEB PR. KURSU
    XML
HABERLER
EĞİTİM & SERTİFİKA
KİTAP
SÖYLEŞİ
HAKKIMIZDA
BLOG
ETKİNLİKLER
 
  XHTML,CSS,VBScript,ASP SQL Lab 2.0 Beta
Hızlı SQL Kursu(Yeni)
 
 
Son Eklenenler
 
SQL SERVER 2005
COALESCE Fonksiyonu ile Dinamik Where Şartları Hazırlamak

Transact SQL’de SQL Server 2008 Yenilikleri-1

SQL Server’da verileri Türkçe Karaktere Dönüştürmek

StrToCursor Prosedürü ile Hızlı ve Kolay Cursor Açmak

Triggerı Hangi Olayın Tetiklediğini Tespit Etmek

İleri Cursor Açma Tekniği

Yazılımcılar için SQL Server Erişim Güvenliği

JAVA
Java'ya GiriŞ - 3 : JCreator Editörü

HABERLER
Verivizyon.com Topluluk Kurucusuna MVP Ödülü

Verivizyon yeni sunucularında

 
Bu Bölümden
MS SQL Server'a Erişmek Hakkında Her şey(10033 yükleme)
Yazılımcılar için SQL Server Erişim Güvenliği(7494 yükleme)
SQL Server Verilerini 2005 Sürüme Aktarmak(7174 yükleme)
SQL Server 2005'de CLR Desteği-2(6765 yükleme)
İleri Cursor Açma Tekniği(6556 yükleme)
Rütbeleme Fonksiyonları ile Kayıtları Sıralamak(6170 yükleme)
COALESCE Fonksiyonu ile Dinamik Where Şartları Hazırlamak(5396 yükleme)
Tablo Tipli Kullanıcı Tanımlı Fonksiyonlar Kodlamak(5391 yükleme)
Transact SQL’de SQL Server 2008 Yenilikleri-1(5246 yükleme)
Satırları Sütuna veya Sütunları Satıra Dönüştürmek(5155 yükleme)
 
 
E-LİSTE
BT ve özellikle Veritabanı ile ilgili haber, yenilik ve etkinlikler hakkında önceden haber almak için bize e-mail adresinizi bırakabilirsiniz.

ANKET
SQL Server 2008'e geçtiniz mi?
Sorunsuz Geçtik
2005'e yeni geçtik
2000 bize yetiyor.
 

 


MS SQL Server'a Erişmek Hakkında Her şey


Bir yazılımcı iseniz, SQL Server’a programlarınız içerisinden erişmek sizin için
hayati derecede önemlidir. Öncelikle, SQL Server’a erişmek için gerekli C# programcığına
göz atacağız. Arkasından, bu programın veritabanına erişmesini engelleyen noktalar
üstünde duracağız.

MS SQL Server orta seviye uygulamalarda özellikle tercih edilen bir büyük ve orta ölçekli VTYS olarak kabul görmekte. Ücretsiz sürümü olan SQL Server Express Edition’ı www.microsoft.com da aratarak, indirebilirsiniz. Yazılımın en son 2005 versiyonu ve bu versiyon için de 2.servis paketi yayınlandı. İlgili yamaları da üreticinin web adresinden indirebilirsiniz. Bu bölümde örnekler için dilimiz C#. VB.NET ve benzeri kodlara rahatlıkla dönüşüm yapıp kullanabileceğinizi düşünüyorum.

SQL Server’a erişim ve erişim sorunlarş ile başa çıkabilmek

SQL Server’a erişecek en basit bir C# kodu aşağıdaki gibi olabilir:

Bu kodlarda, ADO.NET temel nesnelerinden Connection, Command ve DataReader nesnelerini kullandık.

Visual Studio kurulu ise, bir Console Application türünden proje başlatıp, Istemci.cs adında yeni bir sınıf açarak örneğimizi çalıştırabilirsiniz.

Şekil-1: İstemci taraftan verilere erişimin programlanması

şayet işler yolunda ise, yukarıdaki şekilde bir sonuç ile karşılaşırsınız. Ancak genelde aksi bir durum ile karşılaımanız muhtemeldir. Bu türden bir ekranı aşağıda görebilirsiniz.

şekil-2: İstemci tarafın SQL Server’a erişememesi sonucu oluşan hatalardan biri.

Bu türden hataların nedenleri şunlardan biri olabilir:

  1. istemci bilgisayardaki bağlantı ifadesi yanlış yazılmıştır veya SQL Server erişim uygulama arayüzü tarafından anlamlandırılamayan öğeler içeriyordur.
  2. SQL Server’da ilgili kullanıcı yoktur veya kullanıcı olmasına rağmen, SQL Server sadece Windows kullanıcılarının erişimine açık, SQL Server kullanıcıların erişimine kapalıdır.
  3. SQL Server ile istemci yazılım farklı bilgisayarlarda ise, SQL Server’ın üstünde kurulu olduğu bilgisayarda Windows Firewall açıktır ve SQL Server’a erişilmesini engelliyordur.

şimdi bütün bu sorunların çözümünü teker teker ele alalım:

1.Bağlantı İfadesi Problemlerine Çözüm Önerileri

Yukarıdaki örneğimizde, bağlantı ifadesi şu şekildedir:

Data Source=.\yukon;user ID=webuser;password=zor1~sifre;Initial Catalog=dukkan

Bu ifadede yer alan bilgiler aşağıda verilmiştir.

Parametre İşlev
Data Source SQL Server’ın ağdaki adı.
User ID SQL Server üstünde bir kullanıcı.
ObjectDataSource İş nesnelerinden gelen verileri saklar.
Password Kullanıcıya ait şifre.
Initial Catalog Bağlanılacak olan veritabanı adı
Tablo-1: Bağlantı ifadesi parametreleri ve işlevleri

Bir bağlantı ifadesinde nokta yerel sunucuyu, .\yukon ise yerel sonucu üstünde kurulu bir SQL Server yazılımını ifade etmekte.Ancak nokta(.) her zaman doğru bir ifade olmayabilmektedir. Bunun yerine alternatif olarak aşağydaki değerleri teki tek yazarak çalışıp test edebilirsiniz:

(local)

(localhost)

127.0.0.1

127.0.0.1,1433 (Burada 1433 SQL Server’yn kurulu olduğu portu ifade etmektedir. Başka bir porta kurulu ise doğru port bilgisi ile değiştirebilirsiniz)

Halen erişim problemi varsa protokol olarak ek bilgi verebilirsiniz.

Network Library=DBMSSOCN

Bütün bunlardan sonra, bir bağlantı ifadesi aşağıdaki gibi olabilir:

Data Source=(local)\yukon;user ID=webuser;password=zor1~sifre;Initial Catalog=dukkan, Network Library=DBMSSOCN

2.Kullanıcı Problemlerine Çözüm Önerileri

Bazı durumlarda SQL Server’a erişim ifadeleriniz doğru olmasına rağmen, erişim ifadesinde yer alan kullanıcının haklarının yeterli olmaması veya şifresinin doğru olmaması gibi sorunlar da istemci yazılımınızın kırılmasına neden olabilir.

SQL Server’ın yetkilendirme modunu kontrol etmek için, Management Studio aracını kullanarak, SQL Server’i sa? tıklayıp properties menüsünden security yan sekmesini tıklayarak aşağıdaki ekrana ulaşabilirsiniz. Bu ekranda seçili olarak Windows Authentication seçili ise SQL Server and Windows Authentication yapın.

şekil-3: SQL Server’in yetkilendirme modunun değiştirilmesi

Bu ayarı yaptıktan sonra SQL Server’i yeniden başlatmanız gerekir. Aksi halde ayarlarınız bir sonraki yeniden başlatım işlemine kadar geçerli olmayacaktır.

SQL Server erişim sorununuzun halen devam ettiğine inanıyorsanız ve buraya kadarki seçenekler çözüm olmadı ise erişmeye çalıştığınız kullanıcının gerçekten var olup olmadığına bakın. Bu kontrol için de Management Studio aracından yararlanacağız.

SQL Server ‘da açtığınız bir veritabanına erişim için iki aşamalı bir kullanıcı oluşturma işlemi yapmak gerekir:

1. SQL Server’a erişecek bir login: Login bilgileri, sadece SQL Server alanına giriş için kullanılabilir. Bir user ile ilişkilendirmek sureti ile dışarıdaki uygulamaların bir veritabanına da erişim sağlanmasında kullanılır. SQL Server’da Security\Logins sekmesinden erişilebilir.

2.İlgili veritabanına erişecek bir kullanıcı: Login bilgisi, bir kullanıcı tanımı ile herhangi bir veritabanına erişebilir. Herhangi bir veritabanı içerisindeki Security\Users menüsünden erişilebilir. Bir veritabanı kullanıcısının verileri görebilmesi için en az seçme hakkının verilmesi gerekir. Veritabanı kullanıcısına bütün hakları vermek için db_owner adlı database role’üne bağlayabilirsiniz. Ancak bu güvenlik açısından oldukça büyük riskler taşır.

şekil-4: Bir veritabanı kullanıcısına db_owner rolünün verilmesi

Bütün bunların dışında, login aşamasında verdiğiniz şifre ile bağlantı ifadesinde yer alan şifrenin aynı olması gerekir.

Bu konuda son olarak, bir veritabanını deattach edip uzaktaki bir SQL Server’a yeniden attach ettinizse, kullanıcı ver logini silip yeniden oluşturmanız gerekir. Çünkü login bilgisi bir sunucuya özgüdür ve veritabanı taşınsa bile karşıdaki sunucuda aynı bilgilerle örtüşmeyebilir.

3.Firewall Problemlerine Çözüm Önerileri

Başka bir erişim sorunu kaynağı olarak Firewall engelini değerlendirmelisiniz. Buraya kadar her şey yolunda ise firewall kaynaklı bir erişim sorunu olup olmadığını anlamak için, SQL Server’ın üstünde kurulu olduğu bilgisayardaki Windows Güvenlik Duvarı bileşenine denetim masası aracılığı ile erişin ve açık olup olmadığına bakın.

şayet bu firewall açık ise kapatabilirsiniz ancak bu da bir güvenlik açığına neden olabilir. Bu türden riskli bir çözüme bir alternatif olarak güvenlik duvarına SQL Server için istisnai durum ayarı girip sadece bu program tarafından kullanılan portları açabilirsiniz. Bu türden bir durum için örnek resim olarak şekil-5 ‘e göz atabilirsiniz.

şekil-5: Bir sistemde güvenlik duvarının çalışıp çalışmadığına bakmak.

Firewall ayarlarından, özel durumları tıklayın ve bağlantı noktası ekle butonunu tıkladıktan sonra açılan ekranı aşağıdaki şekilde doldurup Tamam’ı tıklayın. Böylelikle sadece SQL Server’a gelen istekler için yetkilendirme yapmış olduk.

Şekil-6: Güvenlik duvarına bir istisnai durum eklemek.

Windows güvenlik duvarı dışında istemci uygulama ile SQL Server arasında başka firewall’lar varsa ilgili ayarları bu firewall’lara da girmeniz gerektiğini unutmayın.

MS SQL Server’i Türkleştirmek

Genelde en çok karşılaşılan sorunlardan biri, uygulamanın geliştirme işlemi sırasında veritabanı ile uygulama arasındaki dil uyumunun, uygulama çalışacağı sunucuya taşındığında çeşitli karakterlerin sorunlu olarak görünmesi veya tarih formatının istenilen biçimde olmaması gibi sorunlarla karşılaşmak muhtemeldir. Bu türden durumlarla yüzleşmemek için, bir uygulamayı tasarlarken bazı noktalara dikkat etmeniz ilerleyen aşamalardaki işlerinizi kolaylaştırabilir.

Karakter sorunları ile başa çıkmak

Karakter sorunları ile başa çıkabilmek için yapılması gereken ilk şey, işletim sistemi seviyeli karakter ve dil ayarlarına güvenmeyip, veritabanı seviyeli collation ayarlarını kullanmaktır. Aşağıdaki şekilde bu türden bir ayarlamanın açılmış bir veritabanı için nasıl yapılması gerektiği gösterilmektedir. İlgili pencereye ulaşmak için, Management Studio aracından, ilgili veritabanına sağ tıkladıktan sonra properties menüsünü tıklamanız yeterlidir.

Şekil-7: Bir veritabanı için, verileri girmeden önce, dil ayarını Turkish_CI_AS yapmak bir çok dil probleminden sizi kurtarabilir.

Ancak bu türden bir ayarlamanın tamamen sorununuzu çözebilmesi için yapılması gereken başka ayarlamalar da gerekebilir. Bunlardan bir tanesi, metin girilecek alanlarınız için özel Collation ayarlaması yapmayıp, <Database Default> ayarlaması ile idare etmenizdir. şayet önceden kalma bir ayarlama mevcut ise sildiğiniz anda database default olarak değişecektir. Bu türden bir örnek Şekil-8’de gösterilmiştir.

şekil-8: Metin girilecek alanlar için Collation ayarlarını veritabanı ile eşit hale getirmek.

Bu iki ayarlamayı yapmanız, temel karakter sorunları ile baş edebilmeniz için yeterli olacaktır.

Tarih formatı

En az Türkçe karakter sorununu kadar çok uğraştıran başka bir sorun olarak SQL Server üstündeki tarih formatı sorunu da baş ağrıtabilmektedir. Bu türden bir sorunun varlığını anlamak için geliştirdiğiniz istemciden 14.12.2005 gibi 12’den büyük bir gün içeren tarih bilgisini veritabanına yazmaya çalışın(INSERT veya UPDATE ) bu durumda şayet ifadeniz bir tarih formatı aşımı hatası veriyorsa muhtemelen tarih formatınız gg.aa.yyyy yerine aa.gg.yyyy bekleniyor demektir.

Bu sorun ile başa çıkabilmek için yapılması gereken ayarlamaları bu kısımda ele alacağız. ilk olarak 1.başlıkta login oluşturmak bahsinde ele aldığımız şekilde bir uygulama logini oluştururken, bu logine ait dil ayarının Türkçe olarak seçilmesi, veritabanına gönderdiğiniz tarihlerin gg.aa.yyyy formatında kabul edilmesini sağlayacaktır.

şekil-9: Veritabanınıza giden tarihlerin gg.aa.yyyy olarak algılanması için veritabanı uygulama login bilgisi için dil ayarı yapılması.

Ancak bu ayarlama, veritabanından okuduğunuz tarihlerin Türkçe tarih formatı ile gelmesini sağlamaya yetmeyebilir. İlgili veritabanı için default dil ayarını Turkish olarak değiştirmeniz, bu türden bir sorunu da çözmek için yeterli olacaktır. Bu türden bir ayarlama için şekil-9’a göz atabilirsiniz.

şekil-10: bir veritabanı için default dil ayarının Turkish yapılması.

Son olarak, herhangi bir tarih sütunundaki verileri CONVERT fonksiyonu ile de Türkiye tarih formatına çevirebilirsiniz. Bunun için günün tarihini seçip, Türkiye formatı ile gösteren bir sorgu aşağıdaki gibi olabilir. Buradaki 104 parametresi gösterim formatını tayin etmektedir. GETDATE() ise SQL Server’in tarihini okuyan bir fonksiyondur.

SELECT CONVERT(VARCHAR(10),GETDATE(),104)

Sonuç

Sonuç olarak, bu bölümde SQL Server üstünde bir veritabanı uygulaması geliştirmeye başlamanın ilk aşamasında veya ilerleyen bölümlerinde yüzleşilmesi muhtemel sorunları sizlerle paylaşıp olayın en başında önlem alabilme yollarını özetlemeye çalıştım.

Bir sonraki bölümde görüşmek üzere…

Gelecek Bölümde, SQL Server’da alınması gereken temel güvenlik önlemlerinini ele alacağız.

[21.05.2007]

Oy Ver: Kötü 1  2  3  4  5  6  7  8  9  10  İyi


YORUMLAR

yardım
merhaba yaşar abi ben bilgisayar teknolojisi ve proğramcılık bölümünden mezun oldum ve ben nasıl bir başlangıç yapacam onu bilmiyorum beni bilgilendirseniz çok sevinirim teşekürler şimdiden ..
alibaran 10.09.2007 12:06:00

Merhaba
Ben Sql Server 2000 kullanıyorum Triggerlarla tabloların logunu tutmak istiyorum. Fakat Her tabloya gidip alanları tek tek yazıp yapmak istemiyorum bunu. Bunu standart şekilde yapabileceğim bir örnek bulunur mu?
hodgam 05.03.2008 10:55:00

YORUMUNUZ
Kullanıcı :
Başlık :
İçerik:
Lütfen Giriş Yapınız

Yaşar GÖZÜDELİ

Ystanbul Üniversitesi Bilgisayar Mühendisli?i mezunu. 2000 yylyndan bu yana birçok kurumda veritabany uygulamalary geli?tirdi ve "SQL Server ile Veritabany Tasarymy ve Gerçekleme" e?itimleri verdi. NetLIFE, ComputerLIFE, PCLIFE gibi bazy bilgisayar-Magazin dergilerinde yazylary yayynlandy. Halen Byte Türkiye'nin serbest yazarlaryndan ve bu dergi tarafyndan yayynlanan Veritabany Programlama serisinden iki kitapçy?yn yazary. 'veritabany akademisi' slogany ile Veritabany programlama alanynda içerik payla?ym toplulu?u Verivizyon.com'un kurucu üyesi. Bazy E-ticaret projelerinde görev aldy ve halen C# ve ASP.NET ile veritabany uygulamalary geli?tirmekte.

"SQL Server ile Temel Veritabany Programlama" adynda yayynlanmy? ilk kitaby bu alanda kabul gördü. Halen birçok üniversitede ders kitaby olarak okutulmakta. SQL Server ile veritabany programlama hakkynda, "Yazylymcylar için SQL Server 2005" adly yayynlanmy? ikinci bir kitaby daha bulunmakta. Bazy üniversitelerde veritabany yönetim sistemleri dersi okuttu. SQL Server 2000 ve 2005 ile ilgili birçok seminer ve e?itimler verdi. Gazi Üniversitesi Bilgisayar Mühendisli?i yüksek lisans programyndan "Meta-Sezgizel Yöntemlerle XQuery Optimizasyonu" üstüne tez çaly?masy ile mezun olmu?tur. 2007 yylynda MS SQL Server 2007 alanynda yapty?y çaly?malaryndan dolayy Microsoft tarafyndan "En De?erli Profesyonel"MVP ünvany ile ödüllendirildi.

Kişisel Sitesi:http://blog.verivizyon.com/ygozudeli

Yazara Ait Son Eklenen Makaleler
Transact SQL’de SQL Server 2008 Yenilikleri-1(01.09.2008)
SQL Server’da verileri Türkçe Karaktere Dönüştürmek(26.08.2008)
Yazılımcılar için SQL Server Erişim Güvenliği(05.11.2007)
MS SQL Server'a Erişmek Hakkında Her şey(21.05.2007)
Nesneleri İlişkisel Veritabanı ile Konuşturmak ve NHibernate(04.09.2006)
SQL Server Verilerini 2005 Sürüme Aktarmak(28.08.2006)
Rütbeleme Fonksiyonları ile Kayıtları Sıralamak(15.06.2006)
Tablo Tipli Kullanıcı Tanımlı Fonksiyonlar Kodlamak(01.06.2006)
SQL Server 2005'de CLR Desteği-2(17.01.2006)
Tip Geçişlerini Anlamak veya System.Data.SqlTypes(24.11.2005)
 

© 2003 - 2005 Verivizyon.com 'Developer Academy'. Tüm hakları saklıdır. Kullanım Sözleşmesi | Gizlilik İlkeleri | İletişim