Veritabanı Programlama 2



Benzer belgeler
Veritabanı Programlama 2

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

1 Temel Kavramlar. Veritabanı 1

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

VERİ TABANI YÖNETİM SİSTEMLERİ. Öğr. Gör. Selçuk Özkan

2 Temel Kavramlar (Devam) Veritabanı 1

İLERİ VERİTABANI SİSTEMLERİ SUAT ÜSTKAN

OTURUM AÇMA ADLARI. Tavsiye Edilen Önhazırlık Enterprise Manager'i kullanabilmek.

Tavsiye Edilen Önhazırlık Temel veritabanı kavramlar hakkında bilgi sahibi olmak. Hedefler Temel veritabanı güvenlik işlemlerini gerçekleştirebilmek

Veri Tabanı-I 5.Hafta

VERİ TABANI ve YÖNETİMİ

"SQL Server Management Studio" yazılımını yüklemek için alttaki resmi sitesinden 180 günlük deneme sürümünü indirebilirsiniz.

Kets DocPlace LOGO Entegrasyonu

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

VERİ TABANI YÖNETİM SİSTEMLERİ-II

VERİ TABANI YÖNETİM SİSTEMLERİ II. 9. FORMLAR ve ORACLE FORMS PROGRAMINDA FORM OLUŞTURMA

AKINSOFT. Eofis NetworkAdmin. AKINSOFT EOfis NetworkAdmin Kurulumu Bilgi Notu. Doküman Versiyon : Tarih : Copyright 2008 AKINSOFT

VERİ TABANI YÖNETİM SİSTEMLERİ

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

VERİ TABANI YÖNETİM SİSTEMLERİ I

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Ara Öğr. Gör. Murat KEÇECĠOĞLU

Veritabanı. Ders 2 VERİTABANI

BLGM 354 DENEY 1 * GİRİŞ

Tavsiye Edilen Önhazırlık Veritabanı kavramını öğrenmek

ELIF KIOTZEOGLOU RESUL MURAD MERT PACOLARI

Veritabanı Yönetim Sistemleri I HAFTA 1

Microsoft SQL Server 2005 Express Edition Hızlı Kurulum Dokümanı. 1. Administrator veya denki bir kullanıcı ile logon olunmalıdır.

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

İnternet Programcılığı

INTERNET INFORMATION SERVICES 6.0 DA WEB SAYFASI YAYINLAMAK

Kurulum ve Başlangıç Kılavuzu. DataPage için

KANTAR UYGULAMASI Kurulum Kılavuzu

SQL 2005 SQL STUDIO MANAGER ACP YAZILIMI KURULUM KILAVUZU

SQL Server 2014 Kurulum Adımları

Windows Grup İlkesi Düzenleyici

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Tavsiye Edilen Önhazırlık Temel SQL Server 2000 bilgisi edinmek.

Veri Tabanı-I 1.Hafta

VERİ TABANI YÖNETİM SİSTEMLERİ I

Kılavuz içerisinde TalksPBX kurulumu anlatılmakta olup, yapacağınız konfigürasyonlar satın aldığınız lisans ile sınırlıdır.

IPACK LADDER. Arayüz Dökümantasyonu

Hukuk Parter ile SMS Yönetimi

DENEME SINAVI CEVAP ANAHTARI

YEDEKLEME PROGRAMI KURULUM VE KULLANIMI

ecyber Kullanıcı Kılavuzu 1 / 1 1. ecyber hakkında Sistem gereksinimleri:... 2 Donanım:... 2 Yazılım: Kullanım Rehberi...

08221 Veri Tabanı II. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Eki Çarş. Perş. Öğr. Gör. Murat KEÇECĠOĞLU

Uzaktan Kurulum Kılavuzu

Ekrana gelen diyalog penceresinden Typical radyo düğmesi seçilir ve Next düğmesine basılır.

AutoCAD 2011 Kurulumu

1. Hafta MS SQL Server 2008 Kurulum ve Tanıtımı BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: Kurulum:

BEUN VPN Hizmeti. VPN Nedir?

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

MEB E-Posta Hizmetleri ve Outlook Programı

Temel Bilgi Teknlolojileri 1. Ders notları 5. Öğr.Gör. Hüseyin Bilal MACİT 2017

Veritabanı Tasarımı. Tablo Oluşturma

ELEKTRONİK BELGE YÖNETİM SİSTEMİ (EBYS)

Microsoft Word 2010 ara yüzündeki bölümler aşağıda gösterilmiştir.

BÖLÜM- 9: KULLANICI ERİŞİMLERİNİ YÖNETMEK

VERİTABANI KURULUMU SQL 2005 EXPRESS EDITION KURULUMU

VERİTABANI Veritabanı Yönetimi

1. Mutabakat.zip dosyası açılır. 2. Mutabakat klasörü içindeki Mutabakat.exe dosyası çalıştırılır.

Ağ Üzerinde MATLAB kurulum rehberi (Sunucu makine)

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

TAPU VERİ SAYISALLAŞTIRMA YAZILIMI KURULUM DÖKÜMANI. Tapu Kadastro Genel Müdürlüğü-Bilgi Teknolojileri Daire Başkanlığı Page 1

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

DESTEK DOKÜMANI. Ürün : Tiger Enterprise/ Tiger Plus/ Go Plus/Go Bölüm : Kurulum İşlemleri

Aktif Dizin Logon/Logoff Script Ayarları Versiyon

MSSQL Server 2000 Kurulumu

Swing ve JDBC ile Database Erişimi

Windows 7 - IIS 7.5 üzerine PHP ve MySQL kurulumu

Şekil 2.1 : Şekil 2.2 : Şekil 2.3 :

VERİ TABANI YÖNETİM SİSTEMLERİ

Kurulum ve Başlangıç Kılavuzu. DataPage için

ICATT ÇEVİRİ UYGULAMASI SİSTEM MİMARİSİ VE VERİTABANI TASARIMI

NİTELİKLİ ELEKTRONİK SERTİFİKA KURULUM AŞAMALARI

VAKIFBANK SANAL POS PANELİ KULLANICI KILAVUZU

ÇANKAYA ÜNİVERSİTESİ WEBMAIL KULLANIM KLAVUZU

1. MİCROSOFT SQL SERVER 2014'E GİRİŞ

VERİ TABANI YÖNETİM SİSTEMLERİ I

NPratik Yazılım Kurulum Kılavuzu. Yedekleme İşlemi

BİLİŞİM TEKNOLOJİLERİ

SIMAN KULLANIM KILAVUZU

Bölüm 1: Veritabanı Yönetim Sistemlerine Giriş

VERİ TABANI UYGULAMALARI

AKINSOFT OtoPark. Yardım Dosyası

İŞLETİM SİSTEMLERİ. İŞLETİM SİSTEMİ Kavramı. Klasör ve Dosya Mantığı. Klasör ve Dosya Mantığı

PERKON PDKS Kurulum ve hızlı başlangıç rehberi

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

Ortamınızda A.D. veya LDAP sistemi var ise aşağıdaki linkten KoruMail LDAP-AD isimli dokümanı inceleyebilirsiniz.

Oluşturmak istediğimiz OU ye bir isim veriyoruz. Name kısmına ISTANBUL yazıyoruz,

SQL Uyarı Programı Kurulum ve Kullanımı

Bilgi ve Olay Yönetim Sistemi

Asp.Net Veritabanı İşlemleri

Windows Live ID ve parolanızı giriniz.

CLIENT MAKİNELERE IBM SPSS Statistics 21 nin KURULMASI

Şekil 7.14: Makro Kaydet Penceresi

08224 Sunucu İşletim Sistemleri

EKLEME SORGUSU. 2) ornekveritabani.accdb isimli veritabanınızı çift tıklayarak açınız. Sorarsa, İçeriği Etkinleştir komutunu uygulayınız.

Transkript:

Veritabanı Programlama 2 Şubat 2004 Yaşar GÖZÜDELİ Bu ek kopyalanamaz, satılamaz. Her hakkı saklıdır. BYTE ın okurlarına ücretsiz armağanıdır. 2004 BYTE BYTE bir Acar Yayıncılık Yayınıdır

İÇİNDEKİLER GİRİŞ...8 Belli başlı VTYS ler...8 Bir Proje İçin Hangi VTYS yi Seçilmeli?...9 Veritabanı Programlama-2 Kitapçığı Neleri İçeriyor... 10 Teknik Destek... 10 1.MS SQL Server 2000 e giriş...12 Web Matrix ve MS SQL Server Desktop Engine... 12 A. MSDE nin Kurulumu ve Kaldırılması... 13 Gereksinimler... 13 Kurulumu... 13 Kaldırılması... 16 SQL Server İstemci Taraf Bileşenleri... 16 SQL Server Enterprice Manager... 16 Enterprise Manager e Bir SQLServer Kaydetme... 17 Enterprise Manager ile Veritabanı Bakım ve Yönetimi... 18 Enterprise Manager ile Yeni bir Veritabanı Oluşturmak... 19 Bir Veritabanını Ölçeklemek... 20 SQL Query Analyzer... 21 Query Analyzer ile Veritabanı Oluşturmak... 23 Loglamadan Tablo Boşaltma: Truncate Table... 24 Bir Sorguyu Query Analyzer ile Analiz Etme... 25 Import & Export Data... 27 SQL Service Manager... 28 SQL Server ve XML Desteği... 29 SQL Server de Veritabanı Nesneleri... 29 SQL Server ve Kullanıcı Yönetimi... 33 Roller... 33 Kullanıcılar... 33 Yetki verme (Grant Komutu)... 34 Yetki Kaldırma (Revoke Komutu)... 35

2.T-SQL ve VTYS temelli programlama...36 T-SQL ile ANSI-SQL komutlarını çalıştırma... 37 Değişken Tanımlama ve Kullanma... 37 Değişkenler ve Sistem Fonksiyonları... 38 Print komutu... 39 Akış Kontrolleri... 39 Go Komutu... 40 1.IF... ELSE karar yapısı... 40 2.CASE deyimi... 42 3.While Döngüsü... 43 Geçici Tablolar... 45 Kontrol Zorlayıcıları (Check Constraints)... 46 3.Saklı Prosedürler (Stored Procedures)...48 Prosedür ne demektir?... 48 SP oluşturma... 48 SP üstünde değişiklik yapmak... 49 Bir SP yi Silmek... 50 SP ye Parametre Yollama... 50 Sp den Değer Döndürme... 52 Bu prosedürün döndürdüğü sonucu nasıl alabiliriz?... 52 SP yi VTYS Uzayı Dışından MDACs ile Çağırmak... 54 Cursor ler... 56 Başlıca Sistem Saklı Prosedürleri... 57 4.İşlemler(Transactions) Tetikler(Triggers)...61 Transactions... 61 Trigger lar... 62 Eklenen-Silinen Kayıtlar... 64

Sorumlu Yazı İşleri Müdürü: Murat Yıldız myildiz@byte.com.tr Yönetici Editör: İbrahim Özdemir iozdemir@byte.com.tr Editörler: Burak Kahyaoğlu bkahyaoglu@byte.com.tr Üsame İldar Özdemir uildar@byte.com.tr Tasarım ve Uygulama: Yağız Akay yakay@byte.com.tr ACAR Yayıncılık adına imtiyaz sahibi: Murat Yıldız Reklam Müdürü: Ahmet Aslantürk Baskı: ETAM A.Ş. Film Çıkış: Figür Merkez Ofis: Fulya Cad. Fulya Bayırı Sk. Bilsan Plaza 11/4 80300 Mecidiyeköy - İSTANBUL Önsöz Veritabanı kavramının ilk olarak ortaya atıldığı 1980 li yılların üstünden henüz 23 yıl geçti. Ancak bu gün, operasyonel iş dünyası, Veritabanı Yönetim Sistemleri (VTYS) olmadan hiçbir şey yapamaz hale geldi. İşletim sistemlerinden sonra en popüler ve en çok kazandıran yazılımlar Veritabanı Yönetim Sistemleridir. Günümüzde, bir çok alanda operasyonel veri işlemlerinde VTYS ler yaygın olarak kullanılmakta. Bu programlar için bir çok nesne birbiri ile aynı temel işlevi yerine getirir ve yaklaşık olarak aynı teorilere dayanarak çalışır. VTYS lerinden orta ve büyük ölçekli olanlarından biri olan MS SQL Server 2000 bu kitapçıkta teferruatlı olarak ele alınıyor. MS SQL Server 2000 i tanırken daha çok VTYS ler için ortak olan noktalara değinildi. Böylelikle kitapçıkta anlatılan konular sadece MS SQL Server kullanıcıları için değil, Sybase, Oracle hatta Advantage (Türk programcılar tarafından geliştirilmiş bir VTYS. Bu vesile ile projede emeği geçenleri da tebrik etmek gerekir.) için bile bir çok teknik olarak uygulanabilirlik seviye- Tel: (212) 212 62 06 Faks: (212) 212 62 11 www.byte.com.tr

sinde yer almaktadır. Bu kapsamda, hemen her VTYS de ortak olarak yer alan saklı prosedürler, trigger ler, kursörler, transaction lar, zorlayıcılar ve diğer nesneler yine sırayla bu kitapta ele alınan konular arasında. Bu kitapçıkta genel olarak MS SQLServer ve Sybase de kullanılan T- SQL komutları yer alıyor. Oracle tarafından kullanılan PL/SQL komutları da aslında T-SQL ile bir çok noktada hemen hemen aynıdır. Bu nedenle VTSY ler için bir noktaya kadar ortak bir kitapçık ortaya çıktığını söyleyebiliriz. Tüm bunlarla birlikte son yıllarda popülerlik kazanan VTYS uygulama şekillerinden replication (çoğaltmalı çalışma) ve Data Warehousing (Veri ambarlama) konuları, kitapçığın alanının kısıtlı olması nedeniyle yer verilemeyen konular arasında. XML veritabanları da yavaş yavaş popülerleşen bir konu ama bu konu da bu kitapçığın içeriği dışında. Bütün bunlar kitapçıkta yer almamalarına rağmen veritabanı konusunda kendisini geliştirmek isteyen arkadaşlara fikir vermesi açısından burada zikredilmiştir. Ayrıca veritabanı programlamadan ziyade yönetimi ile daha çok ilgili olan, Kullanıcı Yönetimi, Yedekleme-Kurtarma, DTS-BCP gibi konulara da kısıtlı sayfa sayısı nedeniyle değinilmedi. Başta, gece gündüz demeden yoğun bir çalışmayla siz değerli okurlara bu seriyi ulaştırmak için uğraşan Yönetici Editör İbrahim Özdemir ve ekibine, Veritabanı konusunda tecrübelerini çekinmeden aktaran ve kitap için düzeltmeler yapan sayın Nurullah Kılıç a ve kitabın içerdiği örnekleri test eden eşim Lale Gözüdeli ye olmak üzere kitapçıkta emeği geçen herkese sonsuz teşekkürlerimi sunarım. Bununla birlikte, seride yer alan bütün hatalar bana aittir. -Yaşar GÖZÜDELİ ygozudeli@hotmail.com Veritabanı Programlama 2 BYTE 7

Giriş Veritabanı Yönetim Sistemleri, verilerin fiziksel hafızadaki durumlarını, kullanıcıların erişimlerini düzenleyen sistemlerdir. İlişkisel VTYS ler günümüzde yaygın olarak kullanılmaktadır. VTYS ler fiziksel hafızayı ve veri tiplerini kullanıcılar adına şekillendirip denetleyen ve kullanıcılarına standart bir SQL arayüzü sağlayarak onların dosya yapıları, veri yapısı, fiziksel hafıza gibi sorunlarla ilgilenmek yerine veri giriş-çıkışı için uygun arayüzler geliştirmelerine olanak sağlayan yazılımlardır. VTYS de verileri tutmak üzere bir çok türde nesne ve bu nesnelere erişimleri düzenlemek üzere kullanıcılar, roller ve gruplar yer alır. Her bir kullanıcının belli hakları vardır. Bu haklar, kısıtlanabilir. Örneğin bir tablo ya da programcığı bir kullanıcı kullanabilirken bir başkasının hakları veritabanı yöneticisi tarafından kısıtlanmış olabilir. VTYS lerin bir çoğu ANSI SQL in karşılayamadığı durumlarda kullanılmak üzere ek programlama komutları barındırırlar. Bu iş için MS SQL Server ve Sybase SQL Server Transact SQL denilen komut takımlarını içerir. Oracle ise PL/SQL ile bu işe çözüm getirir. Bu diller sayesinde, bu konu içerisinde öğreneceğimiz Stored Procedure (saklı prosedürler), Trigger, Fonksiyon gibi veritabanları için vazgeçilmez olmuş nesneler yazılabilmektedir. Belli başlı VTYS ler MS SQL Server: Bir orta ve büyük ölçekli VTYS dir. ANSI SQL e eklentiler yazmak için T-SQL i destekler. Oracle: Daha çok yüksek ölçekli uygulamalarda tercih edilen bir VTYS dir. ANSI SQL e eklentiler yapmak için PL/SQL geliştirilmiştir. Sybase: Bir orta ve büyük ölçekli VTYS dir. ANSI SQL e eklentiler yazmak için T-SQL komutlarını destekler. Ülkemizde daha çok bankacılık ve kamusal alanlarda tercih edilmektedir. Informix: Bir orta ve büyük ölçekli VTYS dir. MySQL: Genellikle Unix-Linux temelli Web uygulamalarında tercih edilen bir VTYS dir. Açık kod bir yazılımdır. Küçük-orta ölçeklidir. Özellikle Web için geliştirilmiş bir VTYS dir denilebilir. Postrage SQL: Bu da MySQL gibi açık kod bir VTYS dir. MS Access: Çoklu kullanıcı desteği yoktur. İşletim sisteminin sağladığı güvenlik seçeneklerini kullanır. Bunun 8 BYTE Veritabanı Programlama 2

yanında belli sayıda kayda kadar (1000000 civarı) ya da belli bir boyutun (yaklaşık 25MB) altına kadar bir sorun çıkartmadan kullanılabilecek bir küçük ölçekli VTYS dir. Advantage: Türk programcılar tarafından geliştirilen bir orta ve büyük ölçekli VTYS dir. DB/2: IBM in framework lere yönelik büyük ölçekli VTYS dir. Bunların dışında daha bir çok VTYS mevcut olabilir. Burada yer alanlarına popüler olmaları nedeni ile değinildi. VTYS lerinin Avrupa genelindeki pazar payları yaklaşık olarak şu şekilde: En büyük pay IBM(DB/2) ile Oracle arasında. Hemen arkasında MS SQL Server geliyor. Informix ve Sybase ise onu takip ediyor. Yeni başlayanlar için hangi VTYS yi öğrenmem en iyisi olur sorusunu yanıtlamak gerekebilir. Ülkemizde insan kaynakları açısından en çok kalifiye elaman aranan VTYS Oracle ve arkasından da MS SQL Server gelmekte. Çok nadir olarak Sybase bilen elemanlar da aranmaktadır. Bu konuda TBD(Türkiye Bilişim Vakfı) yayın organında yayınlanmış bir araştırmaya göz atmak için aşağıdaki adresi tıklayabilirsiniz. http://www.tbd.org.tr/sayi77_html/ insan.htm IBM... %37.8 Oracle... %26.3 Microsoft... %15.4 Informix... %3.2 Sybase... %3 Digerleri... %14.3 2001 yılında bir araştırmaya göre Avrupa çapında VTYS lerinin pazar payları [kaynak: Gartner] Bir Proje İçin Hangi VTYS yi Seçmeli? Bir projede hangi veritabanının seçileceği, projenin çapı ile ilgili bir karardır. Şu soruları kendinize sormanız projenizin çapı konusunda karar vermenize yardımcı olacaktır. Projede kaç tablo kullanacak? Her bir tabloda en fazla kaç satır yer alabilir? Projenize aynı anda en fazla kaç kullanıcı bağlanacak? Projeniz günlük kaç transaction (INSERT-DELETE-UPDATE) gerçekleştirecek? Projeniz en fazla ne kadarlık yer kaplayacak bir veritabanı dosyasına ihtiyaç duyacak? Projeniz için güvenlik ne derece Veritabanı Programlama 2 BYTE 9

önemli? Ancak bir VTYS kullanarak proje geliştirecekseniz, hangisini seçmeniz gerektiğinin dışında, hangi sürümleri kullanacağınız ya da hangi donanımlar üstünde çalıştıracağınız da önemlidir. Veritabanı Programlama 2 Kitapçığı Neleri İçeriyor 1.Bölüm: Veritabanı Yönetim Sistemleri ele alınıyor. VTYS ler, SQL den anlayabilen programlardır. Verdiğimiz SQL komutlarını yerine getiren, sahne arkasındaki iş bitirici veritabanı yönetim sistemidir. VTYS ler SQL ile ifade edebildiğimiz tüm işlemleri yerine getirebilirler. Bu bölümde VTYS ler hakkında detaylı bilgi edineceğiz. 2.Bölüm: T-SQL komutları ele anıyor. Bazen, SQL de yer alan komutlar, derdimizi anlatmamız için yeterli olmayabilir. Bu tür durumlarda Transact SQL içerisinde yer alan komutlardan faydalanacağız. Transact SQL, kısaca T-SQL olarak anılır. Bu konudaki detaylı bilgiyi ikini ünitede edineceğiz. 3.Bölüm: Stored Procedure ele alınıyor. T-SQL ile Stored Procedure ler yazmak, VTYS lerinin daha etkin bir şekilde kullanılmasını sağlar ve çeşitli performans artırıcı etkileri vardır. Stored Procedure ile, tekrar tekrar kullanmak üzere paketlenmiş T-SQL komutları oluşturacağız. Ayrıca, SYBASE ve MSSQLServer tarafından kullanılan ve sistemde hali hazırda yer alan Stored Procedure leri de yakından tanıyacağız. 4.Bölüm: Transaction lar ve Trigger ler ele alınıyor. T-SQL ile Stored Procedure ler dışında Transaction lar ve Trigger ler de programlanabilir. Transaction, Daha küçük parçalara ayrılamayan en küçük işlem birimi demektir. Trigger ler ise Stored Procedure lerin bir özel halidir ve bir tabloda değişiklik yapıldığında otomatik olarak devreye girerler. Zorlayıcılar ve SP ler ile sağlayamadığımız veri kararlığını ve bütünlüğünü trigger ler ile sağlamaya çalışacağız. Teknik Destek Eğitim serisi ile ilgili iletmek istediğiniz öneri, istek, şikayet ya da düzeltmelerinizi doğrudan BYTE Türkiye dergisine iletmek için www.byte.com.tr/bizeulas.asp adresini tıklayınız. Kitapçık ve içerdiği konular hakkındaki her türlü soru ve sorunlarınızla ilgili olarak ygozudeli@hotmail.com adresine e-posta göndermekten çekinmeyin. Yine Veritabanı Programlama serisi hakkındaki görüş, şikayet ve önerileriniz için www.verivizyon.com/sqlkitabi/ adresindeki formdan faydalanabilirsiniz. Seri hakkındaki duyuruları da aynı adresten takip edebilirsiniz. 10 BYTE Veritabanı Programlama 2

1. Bölüm http://alikoker.name.tr

MS SQL Server 2000 e Giriş VTYS temelli programlamayı öğrenmek istiyorsanız, öncelikle bu ünitede anlatılan her şeyi anlamaya çalışmayınız. 2.Üniteyi çok iyi etüt ettikten sonra bu üniteyi daha iyi anlayabilirsiniz. Ancak SQL Server konusunda başlangıç seviyesinde bilginiz varsa, bu bölüm ile onu daha etkili bir şekilde nasıl kullanacağınızı öğrenmiş olacaksınız. MS SQL Server, orta ve büyük ölçekli VTYS ler arasında en yaygın olanlarından biridir. Bunun sonucu olarak da bir çok veri yönlendirmeli Web sitesi bu gün bu program üstünde inşa edilmiş durumdadır. Bu bölümde MS SQLServer 2000 Developer Edition(artık MSDE olarak anılacak) in kurulumu ve kaldırılması anlatılacaktır. MSDE, Eğitim ve kişisel kullanım maksatlı en geniş SQL Server 2000 sürümüdür. Bu bölüm boyunca verilen uygulamalar SQL Server in bahsedilen sürümü üstünde test edilmiştir. MSDE nin Kurulumu ve Kaldırılması Web Matrix ve MS SQL Server Desktop Engine MSDE ayrıca MS SQL Server Desktop Edition için de kullanılmaktadır. Desktop Edition da bir istemci arayüz bulunmamakla birlikte SQL Server kurulumunu gerçekleştirebilirsiniz. Bu programı ücretsiz olarak www.microsoft.com adresinden indirebilirsiniz. Desktop Edition ı kurmak için, MSDE dizinindeki setup.exe programını tıklayın. Kurulum esnasında bir güvenlik sorunu ile karşılaşmamak için MSDE dizininde bulunan setup.ini dosyasına şu iki satırın yer aldığından emin olun [Options] SAPWD=sasifresi ve daha sonra setup.exe programını tıklayın. Böylece, SQL Server Desktop edition kurulduğunda sa kullanıcı adında ve sasifresi şifresinde temel veritabanı kullanıcısını oluşturacak bir kurulumu başlatmış olursunuz. MS SQL Server in bu sürümü için kısıtlı da olsa bir arayüz sağlayabilmek üzere ücretsiz olarak Web Matrix prog- 12 BYTE Veritabanı Programlama 2

SQL Server Developer Edition kurulumu, kullanıcı ayarlarını saymazsak ve sadece kendi bilgisayarınıza kurmak veya kaldırmak isterseniz, herhangi bir program kurulumundan farkı yoktur. Gereksinimler Gerçek hayatta veritabanı uygulamaları ciddi manada kaynak ihtiyacı olan uygulamalardandır. Hafıza büyüklüğü, işlemci hızı ve benzeri gibi sistem paramatrelerini, üstünde kurgulamayı planladığınız projeye göre şekillendirmeniz gerekir. Burada verilen gereksinimler sadece öğrenme amaçlı uygulamaların denenebileceği bir sistem elde etmek için yeterlidir. MSDE kurulumu için en azından bir Windows 2000 Professional veya XP Professional yüklü bir PC ye ihtiyacınız olacaktır. Donanımsal ihtiyacınız ise bu işletim sistemlerinin duyduğu minimum ihtiyaçlardır. Bu, bütün programın kurulumu için geçerli gereksinimdir. Sadece istemci programları kurup, hali hazırda zaten olan bir MSDE sunucusunu kontrol etmek isterseniz, Windows 98 de yeterli olabilir. Ancak, buradaki bütün uygulamaları bir tek PC de test etmek istiyorsanız, MSDE nin tamamını kurmanız gerekir. Kurulumu Bu kısımda bir tek PC üzerine tüm MSDE nin nasıl kurulacağı anlatılacaktır. ramını kullanabilirsiniz. Web matrix programını www.asp.net/webmatrix adresinden ücretsiz indirebilirsiniz. Ya da MDACs bileşenlerini kullanarak kendiniz için bir arayüz hazırlayabilirsiniz. Bunun bir benzerini w w w. v e r i v i z y o n. c o m download adresinden indirebilirsiniz. Desktop edition üstünde burada anlatılan işlemlerin bir çoğunu yapamazsınız. Yapabilmek için en azından bu ünitede anlatılan istemci programlarını da kurmanız gerekir. Ancak sonuçta ücretsiz bir MS SQL Server sürümünü elde etmiş olursunuz. Bu iki yazılımın birlikte kullanımı konusunda daha geniş bilgiyi ADO.NET ile.net temelli veritabanı uygulamaları geliştirme ve Web Servisleri konulu serinin 3. kitabında bulabilirsiniz. Veritabanı Programlama 2 BYTE 13

Resim 1 Resim 2 1. Adım: IIS ve diğer SQL Server i kullanacak servisleri durdurun. Registry e erişecek gereksiz uygulamalar varsa kapatın. 2. Adım: Sıkıştırılmış paketi bir yere açın ve x86\setup\setupsql.exe programını çalıştırın. (Resim 1) 3. Adım: Bu aşamada programı nereye kuracağınız sorulmaktadır. Kendi makinenize kuracaksanız, Local Computer seçeneğini işaretleyin. Uzaktaki bir bilgisayara bağlanıp o bilgisayara kurmak isterseniz, Remote Computer seçeneğin işaretleyebilirsiniz. Virtual Server seçeneği, Clustered Server kurmak için gerekli bir seçenek olup biraz ileri bir konudur. Özetle Clustered: Birden fazla SQL Server kurulu makinenin birbirinin devamı gibi iş yükü ve trafik dengeleme işlemlerini yerine getirebilmesi amacıyla kurulmasıdır. (Resim 2) 4. Adım: İlk seçenek olan create new instance of SQLServer seçeneğini işaretli bırakın. Daha önce bu programı kurdunuz ve üstünde değişiklik yapmak istiyorsanız ikinci seçeneği işaretleyebilirsiniz. Instance, SQL Server in bir tek makinede iki ayrı uzayda çalışmak üzere yeniden kurulmasını kasteder. Bu durumda ikinci Instance(kopya) ya MAKINEADI/INSTANCEADI notasyonu ile erişilir. Bir makinede birden fazla kopya çalışma özelliği tam olarak MSSQL Server 2000 sürümünde mevcuttur. 6,0 sürümünde ise bu konuda hiçbir destek yer almaz. Aynı makinede ne fazla 16 kopya çalışabilmektedir. 5. Adım: Adınızı ve firmanızı giriniz. (Resim 3) 6. Adım: Sözleşmeyi onaylamak için [yes] botununu tıklayın. 7. Adım: Server and client tools seçeneğini işaretli bırakın. Server olarak SQL Server daha önce kurulu ise veya bulunduğunuz ağ ortamında başka bir bilgisayarda kurulu ise ilk seçeneği de 14 BYTE Veritabanı Programlama 2

Resim 3 Resim 4 işaretleyebilirsiniz. 8. Adım: SQL Server yapılandırma konusunda tecrübeli değilseniz, bu adımda default seçeneğini işaretli bırakın. Bir makinede, birden fazla SQL Server kurulumu çalıştırabilirsiniz. Bu durumda her bir kurulum farklı bir uzayda çalışacaktır. Aynı ismi iki SQL Server kurulumuna veremezsiniz. (Resim 4) 9. Adım: Karşınıza çıkan pencereden, Typical seçeneğini işaretli bırakın. SQL Server bileşenleri hakkında yeterli bilginiz varsa, Costum seçeneğini, sistem kaynaklarınızın kısıtlı olduğunu düşünüyorsanız, minimum seçeneğini kullanın. SQL Server in programı farklı bir diske kurmasını istiyorsanız, program files seçeneğinin önündeki [browse] butonunu tıklayın ve kurmak istediğiniz klasörü seçtikten sonra [ok] i tıklayın. SQL Server in veri dosyalarını- (veritabanı dosyalarını) farklı bir adreste saklamasını istiyorsanız, data files seçeneğinin karşısında yer alan [browse] butonunu tıklayın ve aynı işlemi yapın. Windows konusunda yeterli bilginiz yoksa, bu kısımla da oynamamanız tavsiye edilir. 10. Adım: Gelen seçenekleri aynen onaylayın. SQL Server ve Active Directory konusunda bilgi sahibi iseniz bu konudaki ayarları uygun hale getirebilirsiniz. 11. Adım: SQL Server, iki çeşit yetkilendirmeyi destekleyebilir. a. İşletim sistemi ve domain ayarlarından gelen yetkilendirmeleri geçerli kabul eder ve SQL Server kaynaklarına erişimini geçerli kabul edebilir.(bu durumda, sistem yetkilendirmesi olan kişi dbo(veritabanı sahibi) kullanıcısı olarak yetkilendirilir.) b. Sistem yetkilendirmelerinin yanı sıra SQLServer in kendi kullanıcılarını da oluşturup yetkilendirmesini isteyebiliriz. Bu durumda veritabanı kaynaklarına erişim için iki yetkilendirmeden biri Veritabanı Programlama 2 BYTE 15

tarafından yetkilendirilmiş bir kullanıcının erişimi geçerli sayılır. Uygun olan seçeneği işaretleyin. Şayet kendiniz SQL Server için bir kullanıcı oluşturursanız, bu kullanıcının kullanıcı adını(muhtemelen bu isim sa olacak) ve şifresini unutmayacağınız bir şekilde güvenli bir yerlere kaydedin. Daha sonra gerekli olacaktır. Ancak a ya göre bir yetkilendirme tercih ederseniz, işletim sistemi şifrenizi korumanız gerekecektir. 12. Adım [Next] butonunu tıklayarak dosyaların kurulumunu sağlayın. Dosyaların kopyalanması bittiğinde [Finish] butonunu tıklayın. Böylelikle kurulum tamamlanmış olur. Kaldırılması MSDE yi ya da SQL Server i kaldırmaya karar vermeden önce, üstünde çalışacak projelerinizin olmadığından emin olmanız gerekir. Aksi halde kaldırıldıktan sonra MSDE yi kullanan projeleriniz çalışamayacaktır. 1. SQL Server i kullanmakta olan bütün servisleri durdurun. 2. SQL Server hizmetini durdurun. Açık olan tüm SQL server toollarını kapatın 3. [Denetim masası\program ekle kaldır dan SQL Server 2000] i seçin ve normal bir program kaldırır gibi kaldırın. SQL Server İstemci Taraf Bileşenleri SQL Server Enterprise Manager: Enterprise manager, SQL Server in görsel bir arayüzden yönetilmesi için geliştirilmiş bir istemci taraf parçasıdır. Kullandığı temel arayüz MMC (Microsoft Management Console) temelli bir arayüzdür. Bu konuda, MMC nin nasıl kullanıldığı anlatılmayacaktır. Sadece yapılabilecekler hakkında özet bilgiler bulabilirsiniz. Enterprise manager ile aynı zamanda birden fazla veritabanı sunucusuna bağlanılabilir. Bu işlem için veritabanı sunucularının (SQL Server) kaydının yapılması gerekir. Kaydın yapılabilmesi için de yetkilendirilmiş bir kullanıcı ile erişim şarttır. Bir veritabanı sunucusuna eriştikten sonra, üstünde yer alan kullanıcıları, yetkimiz olan veritabanı dosyalarını, stored procedure, view, tablo gibi veritabanı öğelerini görebiliriz. Yetkimiz dahilinde değişiklerde bulunabiliriz. SQL server grupları tanımlanabilir Her bir grup içerisinde yer alacak tekil SQL Server ler kaydedilebilir. Kaydı yapılan her bir SQL server için istenilen ayar ve değişiklikler yapılabilir. Herhangi bir SQL Server üstünde veritabanları, nesneler, kullanıcılar, yetkilendirmeler ve izinler oluşturulup düzenlenebilir. 16 BYTE Veritabanı Programlama 2

Resim 5 Yetki çerçevesinde, kaydedilmiş SQL Server ler üstünde SQL Server yönetim görevleri çalıştırılabilir, tanımlanabilir. SQL ifadelerinin, yığınlarının ve scriptlerinin çalıştırılması için gereken yerden Query Analyzer e geçiş sağlar. Veri ithal-ihraç etme işlemleri başta olmak üzere bir çok işlem için kolaylaştırıcı sihirbazların başlangıç noktasıdır. MMC, Microsoft un sunucu uygulamalarını yönetmek için geliştirdiği bir genel arayüzdür. Bu nedenle bir çok sunucu uygulamada bu standart arayüz ile kullanıcıların sunucu uygulamalarını yönetmeleri sağlanmıştır. (IIS de bu türden bir yönetim paneli kullanıcı arayüzüne sahiptir). Her bir uygulamanın kendisi için bir bileşen yüklenir ve arayüz bu bileşen sayesinde o uygulamanın özelliklerini yönetecek bir hal alır. SQL Server ın de böyle bir eklentisi mevcuttur. Bu eklenti ile MCC nin birlikte oluşturduğu yönetim programının adı da SQL Enterprise Manager olarak anılmaktadır. (Resim 5) SQL Enterprise Manager i başlatmak için (tabi öncelikle MSDE yi kurduğunuzu var sayıyoruz.) yukarıdaki şekilde görüldüğü gibi Başlar>Programlar>SQL Server>Enterprise Manager i tıklamak yeterli olacaktır. Enterprise Manager i çalıştırmak tek başına hiçbir anlam ifade etmez. Hangi veritabanını yönetmek istiyorsanız o sunucuyu (ya da veritabanı kurulum kopyası installation instance ) kaydettirmeniz gerekir. Enterprise Manager e Bir SQLServer Kaydı Eklemek: Herhangi bir SQL Server i Enterprise Manager ile yönetebilmek için kaydettirmek gerektiğini biliyoruz. Bu işlem için şu aşamalar takip edilir: 1. Bu işlem için öncelikle Enterprise Manager bir önceki konuda anlatıldığı şekilde başlatmak gerekir. 2. Ardından, Microsoft SQL Server>SQL Server Group ağaç yapılarını sırayla tıklayarak açın. 3. SQL Server Group seçeneğini, fare ile sol tıklayın. Ardından açılan menüden New SQL Server Registration seçeneğini tıklayın. 4. Register SQL Server Wizard başlatılacaktır. [Next] butonunu tıklayın. 5. Ağda geçerli SQL Server lerin bir listesi sol tarafta belirecektir. Kendi makinenizdeki SQL kopyasını normal olarak kurduysanız, (local) şeklinde gösteriliyordur. Uygun sunucuyu seçtikten sonra [Add >] butonunu tıklayın ve ardından [Next] i tıklayın. 6. Hangi yetkilendirme seçeneğini kullanacağınız belirleyin. Bunu, ağda daha önceden kurulmuş bir SQL Server için Veritabanı Programlama 2 BYTE 17

Resim 6 Resim 7 İPUCU: Bir SQL Server kayıt bilgisi silindiğinde SQL Server de yer alan bilgiler kaybolmaz, silinmez sadece sizin Enterprice Manager iniz kaydı silinen SQL Server i tekrar kaydetmediğiniz sürece yönetemez. yapacaksanız, Veritabanı Yöneticisine danışmanız daha iyi olacaktır. Kendi kurduğunuz SQL Server e bağlanacaksanız, kurulum aşamasında hangi yetkilendirmeyi seçtiğinizi hatırlayın ve aynı seçeneği burada da seçip [Next] i tıklayın. (Resim 6) 7. Hangi SQL Server Goup a ekleyeceğinize karar verin ve işaretleyin. İlk defa kullanıyorsanız, standart ayarları takip etmeniz önerilir. [Next] i tıklayın. 8. Uygun sunucuyu seçin ve [Next] i tıklayın. 9. Kayıt işlemi burada sona erdi. Başarılı bir şekilde ekleme işlemini yerine getirdiniz ise resim 7 deki gibi bir ekran elde edeceksinizdir. (Resim 7) SQL Server kaydını kaldırmak oldukça kolaydır: 1. Kaydını kaldırmak istediğiniz SQL Server i fareniz ile sol tıklayın. (Resim 8) 2. Gelen doğrulatma mesaj kutusunda [yes] i tıklayın. Enterprise Manager ile Veritabanı Bakım ve Yönetimi Herhangi bir VTYS de olduğu gibi SQLServer de de asıl verilerin tutulduğu yer veritabanıdır. Bir veritabanı bir çok nesne ve verilerle birlikte kullanıcı tanımları ve haklar gibi rolleri de içerir. (Resim 9) SQL Server 2000 de verilerin ve tanımlamaların yer aldığı bir veritabanı dosyasının yanı sıra bir de log dosyası yer alır. Veritabanı dosyası *.mdf uzantılıdır. Log dosyası ise *.ldf uzantılı bir 18 BYTE Veritabanı Programlama 2

Resim 8 Resim 9 dosyadır. Bu tür veritabanı dosyalarına ait bilgileri görmek için Enterprise Manager de herhangi bir veritabanı dosyasını sol tıklayın ve çıkan menüden properties i tıklayarak detay bilgilerine erişebilir, bir kısım değerleri değiştirebilirsiniz. Transaction log dosyaları aslında ilk bakışta pek de önemli bir dosya değil gibi görünür. Ama aslında bir çok bilgi işlem en kara günlerden bu loglar sayesinde kurtulur. Transaction log dosyaları, SQL Server da verilerin depolanması ve kurtarılması durumunda oldukça büyük önem arzetmektedir. Bir tablonun içerdiği verilerde yapılan değişiklikler önce transaction log dosyasına yazılır, ardından veritabanına kaydedilir. Bu sistem başta veritabanına yapılan kayıt işleminin tutarlılığını sağlamak için böyle geliştirilmiştir ve hemen her VTYS de aynı şekilde çalışır. SQL Server da INSERT, UPDATE veya DELETE komutları çalıştırıldığında oluşan değişiklikler transaction log dosyasına işlenir. Veritabanı yönetimi, veritabanı dosyalarının düzenlenmesi, oluşturulması ve silinmesi işlemlerinden ibarettir. Bir SQL Server deki en yetkili standart kullanıcı sa(system admin-sistem yöneticisi) kullanıcısıdır. Bir veritabanı dosyasındaki en yetkili standart rol dbo (database owner veritabanı sahibidir) Enterprise Manager ile Yeni bir Veritabanı Oluşturmak Enterprise Manager ile bir çok işlem gibi veritabanı oluşturma işi de görsel bir arayüzden gerçekleştirilebilir. Bu işlem için, öncelikle Enterprise Manager e girin. Ardından Databases üzerinde sağ tıklayarak New Database seçin. Sizden veritabanı adı girmeniz istenecektir. İstediğiniz bir veritabanı adını girin. Bir veritabanı tanımlanma aşamasında ya da tanımlandıktan sonra şu parametrelerini de ölçeklemek gerekir. Ölçeklemek ten kasıt projenin büyüklü- Veritabanı Programlama 2 BYTE 19

ğüne göre performans-kapasite dengesini oturtmaktır. Bu biraz da veritabanı konusunda tecrübeli olmanızı gerektiren bir işlemdir. Bir Veritabanını Ölçeklemek Enterprise manager ile bir veritabanının özelliklerini görmek için öncelikle o veritabanına dosyası seçilir. Daha sonra bu veritabanının üstünde sağ tık yapılır. Ardından properties seçeneği tıklanır. Ardından options sekmesi tıklanarak üstünde değişiklikler yapılır. Veritabanının boyutu: Veritabanına kayıt girdikçe ya da yeni tanımlamalar - nesneler girdikçe boyutu büyür. Bir azami boyut tanımlanması halinde bu değere çıkılmasından itibaren depolama biriminde (harddisk) yer gerektiren veritabanı işlemleri yapılamaz. Transaction log dosyası azami boyutu: Bir veritabanında yapılan kayıt ekleme, kayıt silme ve kayıt güncelleme işlemlerinin veritabanı log dosyasında işaretlendiğini biliyoruz. Bu dosya üstünden veritabanının bütünlüğünün sağlandığına da değinmiştik. İşte bu dosya da belirtilen azami boyutun üstüne çıkarsa UPDATE-INSERT-DELETE işlemleri gerçekleştirilemeyecektir. Transaction Log a işaretlenmesi gereken hiçbir şey çalıştırılamayacaktır. Bu tür durumlarda bir alternatif olarak artık işinize yaramayacağını düşündüğünüz transaction log kayıtlarını truncate edebilirsiniz (silebilirsiniz). Database Seçenekleri: Veritabanı seçenekleri, veritabanın ölçeklenmesinde etkili bir diğer faktördür. Bu seçenekler kısaca: Autoshrink: Veritabanının otomatik olarak küçültülmesini ayarlayan özelliktir. Bu özellik seçili iken veritabanı dosyası ve log dosyası belli aralıklarla sistem tarafından otomatik olarak gereksiz alanları dosyadan çıkarılmaya zorlanır. dbo use only: Bu özellik seçildiği anda sistemde login olan kullanıcılar ve db_owner sabit sistem rolüne haiz kullanıcılar dışında diğer kullanıcılar bu veritabanı dosyasını kullanamazlar. Halihazırda sisteme login olan kullanıcılar ise sistemden çıkmaları halinde db_owner rolüne haiz değil ise tekrardan veritabanına erişemezler. read only: Veritabanı dosyasının sadece okunabilir olmasını sağlayan seçenektir. Bu seçenek seçildiğinde kullanıcılar veritabanından veri okuma (SELECT) komutlarını çalıştırabilir ancak DELETE, UPDATE, INSERT gibi DML komutları ile ALTER, CREATE ve DROP gibi DDL komutlarını çalıştıramaz. single user: Veritabanı dosyasını aynı 20 BYTE Veritabanı Programlama 2

anda bir tek kişinin kullanmasını sağlar. Bu komut çalıştırıldığı anda veritabanında birden fazla kişi bağlıysa bu özellik açıldıktan sonra kullanmaya devam ederler ancak bağlantı kesildiği andan itibaren bir tek kullanıcı kuralı dikkate alınır. Kurtarma Modeli Seçenekleri: Veritabanı ölçeklemede bir diğer seçenek de veri kurtarma modelidir. Bu işlem için olan seçenekler de aşağıdaki şekildedir. 1. Full Recovery Model: Bu seçenekte veritabanı üstünde yapılan işlemlerin logları tutulur. Bir veri kurtarma işleminde, log dosyaları ile birlikte veritabanı kayıtları da elde edildikten sonra veritabanı kurtarma işlemi gerçekleştirilebilir. Standart olan kurtarma seçeneği bu seçenektir. İPUCU: Query Analyzer i Enterprice Manager den çağırmak mümkündür. Bunun en büyük faydası yetkilendirme bilgilerini yeniden girmemize gerek kalmamasıdır. Bu işlem için Enterprice Manager dan bağlanmak istediğiniz veritabanını seçtikten sonra [Tools\SQL Query Analyzer] i tıklamak yeterlidir. 2. Bulk_Logged Recovery Model: Full Recovery Model ile yaklaşık aynı seçenekleri kullanır. Farklı olarak toplu işlemler için daha az log tutar. Örneğin SELECT INTO vb. gibi komutlar için daha kısıtlı bir log tutulur. 3. Simple Recovery Model: En basit transaction log tutma seçeneğidir. Daha çok küçük ölçekli ve deneme amaçlı veritabanlarında veya sadece okuma amaçlı kullanılan veritabanı dosyaları için kullanılır. Bunun dışında ticari amaçlı veritabanı uygulamalarında bu türden bir kurtarma modelinin seçilmemesi gerekir. SQL Query Analyzer Query Analyzer, SQL ve T-SQL temelli komutlarla Veritabanı Sunucularının konfigüre edilmesini sağlamanın yanı sıra SQL ifadelerini çalıştırma ve analiz etme konusunda faydalanılmak üzere geliştirilmiş bir SQL Server bileşenidir. Yine Query Analyzer ile bir veritabanına erişebilmek için yetkilendirilmiş bir işletim sistemi kullanıcısı veya domain kullanıcısı yahut veritabanı sunucusu yöneticisi hesabına sahip olmak gerekir. Bu kullanıcı grubunun hangisi veya hangilerinin geçerli olacağı, Enterprise Manager ile bir veritabanına sa (sistem yöneticisi) veya eşdeğeri bir hesap ile bağlandıktan sonra [properties\security] sekmesinden düzenlenebilir. Yine nesneler için yetkiler Enterprise Manager sayesinde düzenlenebilir. Bir sonraki ünitede anlatılan T-SQL Veritabanı Programlama 2 BYTE 21

Resim 10. (1) Query Analyzer de T-SQL komutlarının yazıldığı sorgu penceresi. (2) Sonucun ne olarak görünmesini istediğinizi bu menüden belirleyin. (3) Sorgunuzda bir sentaks hatası olup olmadığını denetlemek için bu kısmı kullanabilirsiniz. (4) Sorgunuzu çalıştırmak için bu kısmı kullanın.(f5 tuşuna da basabilirsiniz.) (5) Hangi veritabanında çalıştığınızı buradan görüp değiştirebilirsiniz. (6) Çalıştırma planını görmek için burayı tıklayın. (7) Nesneleri görmek için kullanılan menü ve nesneler. (8) Sorguların sonuç ekranı. (9) Şablonlara erişmek için bu menüyü kullanın. komutları ve Saklı Prosedür, Trigger, Cursor gibi veritabanın nesnelerinin oluşturulması esnasında Query Analyzer programı kullanılacaktır. SQL Server Query Analyzer in belli başlı özellikleri: 1. T-SQL ifadelerini çalıştırmak için bir metin editörü 2. ANSI-SQL ve T-SQL için Sentaks boyama 3. Nesne gezgini ve nesne arama seçenekleri ile bir veritabanını veya üstünde yer alan nesnelere erişim kolaylığı. 4. Tablo oluşturmak gibi bir çok işlem için kullanılabilir hazır T-SQL şablonları. 5. Bir etkileşimli hata ayıklayıcı ile Saklı yordamlar için analiz imkanı. 6. Resultset leri metin (text) temelli veya ızgara (grid) temelli sunabilme. 7. Grafik ve metin temelli Sorgu çalış- 22 BYTE Veritabanı Programlama 2

İPUCU: Veritabanında, kullanıcı bilgileri, haklar, nesneler ve özellikleri gibi bilgilerin tutulduğu veri tabloları için birçok literatürde Veri Sözlüğü (Data Dictionary) terimi kullanılır. Veritabanı oluşturulduğunda bir çok verinin yer aldığı bir çok tablo sistem tarafından oluşturulur ve sistemin kendi ihtiyacı olan bilgiler tutulur. Bir de proje tarafından referans alınan ve il listesi, tür kodları ve benzeri gibi sabit kayıtları içeren tablolar vardır ki bu türden tablolara da look-up table(referans tablosu) denir. tırma planı ile Query analiz etme seçeneği ile daha az kaynak tüketen sorgulamalar geliştirme imkanı 8. Index ayarlama sihirbazı ile T-SQL komutlarını analiz ederek daha iyi sorgu performansı için bir tablo üstünde ek bir index alana gerek olup olmadığını bulabilme.(indeksler hakkında geniş bilgi için serinin ilk kitabına bakınız.) (Resim 10) Query Analyzer ile Veritabanı Oluşturmak: Create Database Enterprise manager ile görsel ortamda yaptığımız hemen her şeyi Query Analyzer ile de yapmak mümkündür. Hatta bu ortamda doğrudan kodlarla muhatap olduğumuz için daha fazla detaya hükmetme şansına sahibiz. Bu kısımda, bir önceki bölümde Enterprise manager ile nasıl yapılacağını anlattığımız veritabanı oluşturma işini T-SQL komutlarını kullanarak nasıl yapabileceğimize değineceğiz. Bu işlem için kullanacağımız komutu, Create Database deyimini bir önceki kitapçıkta özet olarak anlatmıştık. Genel kullanımı şu şekildedir: CREATE DATABASE veritabani_adi [ON [PRIMARY] (NAME= veri_dosyasi_adi, FILENAME= fiziksel_veri_dosyasi_adi [, SIZE = veri_dosyasi_boyutu ] [, MAXSIZE= maksimum_veri_dosyasi_ boyutu ] [, FILEGROWTH=veri_artim_miktari]) [LOG ON (NAME= log_dosyasi_adi, FILENAME= fiziksel_log_dosyasi_adi [, SIZE = log_dosyasi_boyut] [, MAXSIZE= maksimum_veri_dosyasi_ boyutu ] [, FILEGROWTH=veri_artim_miktari] ) ] PRIMARY: Bazen veritabanı tanımlanırken birden fazla dosya üstünde veri saklayabilecek bir şekilde tanımlanabilir. Bu durumda birinci dosya PRIMARY ile belirtilen dosyadır. Bir dosya bir ana gruba sahip olabilir. PRIMARY deyimi kullanılmazsa bir veritabanı için tanımlanan ilk dosya PRIMARY dosya olarak kabul edilir. Bütün veritabanı tanımlama tabloları ve değerleri birincil dosyada saklanır. Birincil veri dosyası *.mdf dir. İkincil veri Veritabanı Programlama 2 BYTE 23

dosyalarının uzantısı ise *.ndf dir. veritabani_adi: Veritabanına vermeyi planladığınız isim. Bu isim VTYS tarafından geçerli kabul edilen ve T-SQL ile gönderimde bulunmak istediğiniz (ileri seviyeli işlemlerde) isim. veri_dosyasi_adi: Veritabanının fiziksel adı. Bu isim işletim sistemi tarafından bilinene ismidir. fiziksel_veri_dosyasi_adi: İşletim sistemi üzerinde saklanacak dosyanın adını ve yolunu belirtir. veri_dosyasi_boyut: Veri dosyasının MB cinsinden boyutunu belirtir. En az ve standart değer 1MB tır. Bir birim belirtilmezse MB olarak alınır ancak diğer hafıza birimlerini de belirterek kullanmak mümkündür. GB, MB, KB gibi. maksimum_veri_dosyasi_boyutu: Bu veritabanının ne kadar boyut ile sınırlandırılacağını belirtir. Şayet bir değer girilmezse, tüm disk doluncaya kadar veritabanı dosyasına veri eklenebilir. artim_miktari: Veritabanının başlangıçta belirtilen boyutu dolduğunda sistem tarafından boyutu otomatik olarak artırılır. Bu aşamada veritabanının boyunun ne kadar artırılacağı bu parametre ile belirtilir. % oran değeri verilebileceği gibi sabit bir artım boyutu da girilebilir. Örnek 1: Bir önceki kitapçıkta da kullandığımız dbkutuphane veritabanını oluşturalım: Başlangıç boyutu 1MB olsun. En fazla 1GB a kadar olmak üzere her seferinde veri dosyası %20 si kadar artırılmak üzere en fazla 1GB a kadar çıkarılabilsin. Veri dosyaları için isim kutuphane_data olsun ve fiziksel dosya adı D: \data\dbkutuphane.mdf olsun. Loglar için başlangıçta sadece 1 MB yer ayrılsın. Ancak bu alan dolarsa, her seferinde 1MB olmak üzere en fazla 1GB a kadar sistem tarafından çıkarılabilisin. Loglar için sistem dosya adı kutuphane_log olsun ve fiziksel dosya adı D:\data\dbKutuphane.ldf olsun. CREATE DATABASE dbkutuphane ON PRIMARY (NAME =kutuphane_data, FILENAME= D:\data\dbKutuphane.mdf, SIZE = 1, MAXSIZE = 1GB, FILEGROWTH = 20% ) LOG ON( NAME = kutuphane_log, FILENAME= D:\data\dbKutuphane.ldf, SIZE = 1MB, MAXSIZE = 1GB, FILEGROWTH = 1MB ) Loglamadan Tablo Boşaltma: Truncate Table Bir tabloda yer alan tüm kayıtları silmek ama bu silme işlemleri için de satır bazlı birer transaction log oluşturulmasının istenmediği durumlar olabilir. (Özellikle replication ile ilgili uygulamalarda). Bu tür durumlarda TRUNCATE TABLE komutu kullanılır. 24 BYTE Veritabanı Programlama 2

SQL Query Analyzer ile bir sorgunun çalıştırılma planını görsel ve metin bazlı olarak detaylı görerek üstünde optimihttp://alikoker.name.tr Genel kullanımı şu şekildedir: TRUNCATE TABLE tablo_adi Burada, tablo_adi argümanı, İçeriğini satır satır loglamaksızın boşaltacağımız tablo adını ifade eder. TRUNCATE TABLE ile WHERE cümleciği olmayan DELETE komutu aynı işlevi yapar; bir tablonun tüm satırlarını boşaltır. TRUNCATE TABLE komutunu, WHERE koşulu olmayan DELETE cümlelerinin yerine kullanmak daha hızlı bir tablo boşaltma yöntemidir. Sistem kaynaklarını da TRUNCATE komutu daha az meşgul eder. Çünkü, her bir silinen satır için log oluşturmasında gerek yoktur. TRUNCATE TABLE komutunun neticesinde, tablonun sadece içerdiği veriler silinir. Kolonlar, zorlayıcılar, indeksler, trigger ler ve benzeri diğer tablo üstünde yer alan tanımlamalar silinmez. Bu tür tanımlamaların da silinmesini istiyorsanız, DROP TABLE komutu ile tabloyu silmek gerekir. Örnek 2: DELETE * FROM kitap ile TRUNCATE TABLE kitap Komutlarının herhangi biri çalıştırılsa idi, daha sonra eklenecek bir kitap için sistem tarafından verilen kitap- No(kitap tablosunun otomatik artan anahtar alanı) alanı değeri arasında ne fark olurdu? 1. işlemden sonra, kitapno alanına en son verilen kitapno değerinin bir fazlası(bir sonraki daha doğru olur.) verilirdi. 2. işlemde ise kitap no tekrardan 1 değerinden(ilk verilen değerden) başlar ve eklenen her kayıt için artmaya devam eder. TRUNCATE TABLE komutu, yabancı anahtar zorlayıcılarına takılır. Bunun anlamı şudur, ödünç tablosunda, kitapno yabancı anahtar olarak tanımlandığı için; kitap tablosu üstünde TRUNCATE komutu çalıştırıldığında, komut çalıştırılmayacaktır. Aksine DELETE * FROM kitap çalıştırılır. Çünkü DELETE komutu log tutar ve bu nedenle bir TRIGGER tetikleyebilir. Ancak TRUNCATE komutu log tutmadığı için trigger harekete geçiremeyeceği önlem olarak komut çalıştırılmaz. TRUNCATE TABLE komutu son olarak, indeksli görünüm(view) lere iştirak eden tablolar için de çalıştırılamaz. TRUNCATE TABLE komutu, standart olarak tablonun sahibine(owner) aittir. Bu hak başka rollere ya da kullanıcılara aktarılamaz. Bir Sorguyu Query Analyzer ile Analiz Etme Veritabanı Programlama 2 BYTE 25

zasyon yapmak mümkündür. Böylece aynı sonucu daha hızlı üreten sorgular yazmak mümkün olabilmektedir. SQL Server Query Analyzer ile görsel çalıştırma planını görmek için 1. [Query>Display Execution Plan] seçeneğini işaretleyin. Kısayol olarak CTRL+L yi de kullanabilirsiniz. 2. Daha sonra analiz etmek istediğiniz sorguyu yazıp çalıştırın. 3. Ardından [Estimated Execution Plan] sekmesini tıklayın. SQL Server in çalıştırma planını metin ortamında bir resultset olarak döndürmesi için şu komutu kullanabilirsiniz: SET SHOWPLAN_TEXT ON go Dedikten sonra çalıştırdığınız bütün sorgular için bir metin bazlı çalıştırma planı da görüntülenecektir. Bu özelliği tekrar kapatmak için çalıştırmamız gereken komut oldukça basit: SET SHOWPLAN_TEXT OFF Go dememiz yeterli olacaktır. Ayrıca daha özet ama kapsamı geniş bir çalışma planı çıktısı almak için SQL Server in SHOWPLAN_ALL özelliğini açabiliriz. Bunun için de şu komutu UYARI Bir tablo oluşturacak SQL cümleciğini çalıştırma planını görmek üzere Query Analyzer ile SQL Server e gönderdiğimizi varsayalım. Bu durumda tablo oluşmayacağı için bu tabloya kayıt eklemeye kalkıştığımızda böyle bir tablonun olmadığına dair bir hata alırız. 26 BYTE Veritabanı Programlama 2

çalıştırmamız gerekir: SET SHOWPLAN_ALL ON go dedikten sonra çalıştırılan bütün sorgular özet çalışma planı verilecektir. Aynı şekilde bu özelliği tekrardan kapatmak için bu özelliği kapatmak yeterli olacaktır bunun için de şu komutu çalıştıracağız: SET SHOWPLAN_ALL OFF Go Çalıştırma Planını gösterirken SQL server kendisine gelen sorguları çalıştırmak yerine analiz ederek hangi işlemlerden geçerek çalıştırılacağını, hangi işlemin yaklaşık ne kadar zaman alacağını gösterir, öngörür. Çalıştırma planı özellikle DML(Veri İşleme Dili) için ve T-SQL ifadeleri için kullanılır. Bir Saklı Prosedür ün, bir komut tarafından çağrılan Tetikleme(Trigger) in daha az kaynak tüketerek daha kısa sürede nasıl gerçeklenebileceğini analiz etmede faydalanacağız. Örneğin bir SELECT ifadesini gerçeklemek için SQL Server tüm tabloyu taramak zorunda kalabilir(table scan) Bunu önlemek için bu tabloda bir birincil anahtar alan oluşturursak, bu sorgu artık table scan yerine indeks bulma (index seeking) yapacaktır. Bunun maliyeti de bir çok durumda table scan a göre daha kısadır. SHOWPLAN_TEXT ve SHOWP- LAN_ALL özellikleri yardımı ile alınan metin temelli çalıştırma planı daha tek düzedir. Her bir parametere birer satır gibi gösterilir. Görsel çalıştırma planı ise her bir düğüm için detaylı istatistikleri düğümün üstüne gelindiğinde gösterir. Ayrıca her bir düğüm için bu düğümde yapılan işlemleri özetleyen bir ikon ile gösterilir. Bu ikonların anlamı için SQL Server ile birlikte kurulan Books Online ya da MSDN den yardım alabilirsiniz. Books Online den Query Analyzer in komut ekranına Query Analyzer yazıp bu iki kelimeyi seçtikten sonra SHIFT + F1 tuşuna basmanız yeterlidir. Bulunan konulardan en baştakini tıklayarak ikonlar hakkındaki detaylara erişebilirsiniz. Diğer konularda da bilgi almak için aynı yolu kullanabilirsiniz. Resim 11 (Resim 11) Import & Export Data Bazen MS Access(*.mdb), text dosyası ya da MS Excel ve benzeri gibi yapılan- Veritabanı Programlama 2 BYTE 27

Resim 12 dırılmış dosyalardan veri almak veya bu türden bir dosyaya veri aktarmak durumunda kalabiliriz. Bu durumda Import & Export Data toolu kullanılır. (Resim 12) İPUCU: MSDOS komut ortamından veritabanına erişmek için eski adı ile isql(sybase de halen aynı adla kullanılıyor), SQL Server de ise osql.exe programı kullanılabilir. Bunun için komut satırını açtıktan sonra osql deyip enter i tuşlayın. Ardından kullanıcı adı - şifreyi girin. SQL komutlarınızı yazıp go komutu ile bitirdikten sonra enter tuşuna basarak sonucunu görebilirsiniz. Bu programı sonlandırmak için exit yazıp enter i tuşlamanız yeterlidir. Programın daha detaylı kullanımı için BOL(Books Online) den yardım alabilirsiniz. 1. Bunun için öncelikle [Başlat\ Programlar\Microsoft SQL Server\ Import and Export Data] takip edilerek program başlatılır. 2. Uygun olan kaynak seçilir. Örneğin MS Access(*.mdb) 3. Uygun olan hedef seçilir. Örneğin MS Access den SQL Server e veri alacaksak, hedef SQL Server dir. 4. Kaynakta var olan tablolar getirilir ve kullanıcının hangi tabloları aktarmak istediği sorulur. İstediğiniz tabloları işaretleyin. 5. Hemen çalıştırmak için Run Immediately seçeneğini kullanın. 6. Bir sonuç ekranı ile size kaç tablonun aktarıldığı gösterilecektir. SQL Server den başka bir formata veri aktarmak için de yapılması gereken işlemler aynıdır. Değişen tek şey hedef ile kaynak türlerinin değişmesinden ibarettir. SQL Service Manager 28 BYTE Veritabanı Programlama 2

düşey çizgi 4. Durduruldu: Yuvarlak içerisinde kırmızı kare SQL Server ve XML Desteği Resim 13 SQL Server i başlatmak, durdurmak veya duraklatmak için kullanılan basit bir hizmet yönetim programcığıdır. (Resim 13) Bu servis çalışırken sistem çubuğunda (sistem saatinin hemen yanı) durumunu gösteren (çalışıyor, duruyor, duraklatılmış) ikon ile birlikte görünür. Bu ikon çift tıklanırsa resimde görünen ekran açılır. İşletim Sistemi kapatılıp açıldığında otomatik olarak başlatılmak için bu seçeneği işaretli olarak bırakmak gerekir. SQL Server de 4 farklı durum için durum ikonu mevcuttur. Aynı durum ikonunu, Enterprise Manager ile kaydettirdiğiniz her bir Veritabanı için de görebilirsiniz. Bu 4 ikon şu şekildedir: 1. Çalışıyor, bağlanılmadı: yeşil ok 2. Çalışıyor ve bağlanıldı: Yeşil Yuvarlak içinde beyaz ok 3. Duraklatıldı: Yuvarlak içinde iki XML, yazılım ve donanımdan bağımsız veri taşıma ve saklama standardı olup extensible Markup Language (Genişletilebilir İşaretleme Dili) kelimelerinden elde edilmiş bir ankronimdir. XML ile işaretlenmiş bir bilgi bir cep telefonunda bir PC de gösterildiği kadar kolay gösterilebilir. XML ayrıca farklı platformlarda çalışan uygulamalar arasında veri paylaşımı için ve HTML den arındırılmış olarak bilgilerin Web e açılması için de kullanılır. XML de verinin görünümü ve sunumu ile ilgilenen işaretleme dili HTML (Hiper Metin İşaretleme Dili) gibi SGML (Standartd Generalized Markup Language) den türetilmiştir. SGML çok geniş bir dil olduğundan Web de tam olarak kullanılması oldukça zordur. Bu nedenle bu türden geliştirmelere gidilerek amaca özel kısıtlı elemanlardan oluşan işaretleme dilleri elde edilmiştir. SQL Server 2000 veri aktarımı ve saklama konusundaki bu son teknoloji için şu destekleri sağlar: SQL Server e URL üstünden erişim. XML Data Schema desteği ve bu şemalar üstünde XPath sorgulama. XML içerikli veri çekme ve XML den veri ekleyebilme. Veritabanı Programlama 2 BYTE 29

Resim 14 XML Web Servisleri ile de bir veritabanınızı XML destekli olarak Web e veya başka bir kurumun kullanımına istediğiniz kısıtlar doğrultusunda, açabilirsiniz. XML konusunu serinin son kitabında detaylı olarak serinin son kitabı XML ve Web Servisleri nde bulabilirsiniz. Örnek 3: Bir sorguda tablolara arsında hiyerarşik ilişkiyi de içeren XML çıkış üretmek İçin SELECT * FROM kitap FOR XML RAW kullanılır. SQL Server de Veritabanı Nesneleri Bu kısımda anlatılan nesnelerin bir kısmı bir önceki kitapçıkta detaylı olarak incelenmişti. Diğer bir kısmı da bu kitapçıkta anlatılacaktır. Önemli olduğu düşünülen nesneler hakkında detaylı bilgi bu seride yer almamaktadır. Nesneler veritabanı yapıları içerisinde yer alır. SQL Server ilk kurulduğunda kendi ihtiyaçları için bir dize veritabanı ve her bir veritabanı da kendi içerisinde sabit bir dize nesne içerir. Bunlara VTYS nin kendisinin ihtiyacı vardır. Bir SQL Server kurulduğunda şu veritabanları standart olarak kurulur: Master: Hangi veritabanları oluşturuldu, disk kullanımı, kullanıcı hesapları, sistem ayarları vb. gibi veritabanı ile ilgili ortam değer ve değişkenleri bu veritabanında yer alır. Model: Yeni oluşturulacak tüm veritabanları için bu veritabanı model alınır. Yani şablon veritabanıdır. Oluşturulacak her veritabanında olması istenen değişiklikler (tablo, saklı prosedür, trigger vs.) bu veritabanında yapılır. Msdb: SQL Server Agent servisi tarafından kullanılan veritabanıdır. Tempdb: Geçici bilgilerin saklandığı veritabanıdır. Bir sonraki ünitede, kullanımı hakkında bilgi verilecektir. Pubs: Örnek bilgilerin yer aldığı veritabanıdır. (Resim 14) Her bir veritabanı içerisinde yer alan nesneler şu gruplardan birine aittir: Diyagramlar: Veritabanındaki tabloların birbiri ile ilişkisini gösterir. Burada mantıksal olarak zorlayıcılar vb. gibi öğelerle ile ilişkilendirilmiş tabloların ilişkilerinin fiziksel olarak görünümü yer alır. 30 BYTE Veritabanı Programlama 2

SQL Server2000 de Tanımlı Veritabanı Rolleri Rol AÇIKLAMA db_accessadmin Veritabanı Erişim Yöneticisi db_backupoperator Veritabanı Yedekleme Operatörü db_datareader Veritabanı Veri Okuyucusu db_datawriter Veritabanı Veri Yazıcısı db_ddladmin Veritabanı DDL Yöneticisi db_denydatareader Veritabanı engelli veri okuyucu db_denydatawriter Veritabanı engelli veri yazıcı db_owner Veritabanı Sahibi db_none Boş db_securityadmin Veritabanı Güvenlik Yöneticisi Tablolar: Veritabanının kayıtları saklayan mxn boyutlu matrisleridir. Bir çoğu kullanıcı tarafından tanımlanır. Sistem tarafından kurulum aşamasında oluşturulup kullanılan tablolar da yer alır. Tablolar hakkında ilk kitapta yeterince konuşmuştuk, burada sadece şunu da eklemek yeterli olur sanırım: Bir tablo 8060byte ten daha uzun olmamalıdır. Bu, SQL Server in disk yönetim birimi sayfa nın boyutundan kaynaklanan bir sınırlamadır. Tabloları meydana getiren satırlar, sayfalar halinde saklanır ve bir tablonun bir satırı en fazla bir sayfa yer kaplayabilir, ikinci sayfaya taşamaz. Görünümler (view): Gerçekte olmayan tablolardır. Veritabanında var olan tablolar üstünden select işlemi ile getirdikleri sonuçları ifade eden nesnelerdir. (Bir önceki kitapçıkta hakkında geniş bilgi verilmiştir.) Saklı prosedürler (Stored Procedures): Bir dize T-SQL(MSSQLServer - Sybase) veya PL/SQL(Oracle) komutunun bir işlevi yerine getirmek üzere paketlenmiş halidir. Kullanıcılar: Sistemdeki nesnelere erişim hakkı verilmiş birer kullanıcı adı ve şifrenin sistemdeki eşdeğeridir. Bir kısmı sistem tarafından oluşturulabileceği gibi örneğin (dbo) daha sonra veritabanı yöneticisi tarafından da ekle- Veritabanı Programlama 2 BYTE 31

SQL Server 2000 de Tanımlı Server Rolleri Rol AÇIKLAMA dbcreator Veritabanı oluşturucusu diskadmin Disk Yöneticisi processadmin İşlem Yöneticisi securityadmin Güvenlik Yöneticisi serveradmin Sunucu Yöneticisi setupadmin Kurulum Yöneticisi sysadmin Sistem Yöneticisi bulkadmin Toplu Ekleme Yöneticisi nebilir. Roller: Veritabanında yapılabilecek belli başlı işlemler, belli nesneler üstünde belli haklar için erişim tanımlayarak oluşturulan hak grubu. Bu gruplar daha sonra kullanıcılara aktarılır. Böylece VTYS üstünde var olan sayısız erişim ve yetkilendirme için denetleme işlemi gruplar üstünden denetlenebilir. Default lar: Bir alana değer girilmemesi halinde, bir değer ile başlaması için default nesneleri tanımlanır. Örneğin bir hesap yeni açıldığında para yatırmadığınız sürece hesabınızda 0 lira görünür. Kullanıcı Tanımlı Tipler: Her ne kadar ANSI SQL de standartta tanımlı veri tiplerinin dışındaki veri tiplerini kullanamasak da VTYS ler bunu aşarak kullanıcının gerektiğinde veri tipi tanımlamalarına olanak sağlarlar. Kullanıcı Tanımlı Fonksiyonlar: ANSI SQL de tanımlı fonksiyonların bir kısmını ve bazı VTYS ler tarafından sağlanan ek fonksiyonları bir önceki kitapçıkta anlatılmıştı. Tüm bu ANSI ve Sistem fonksiyonlarının dışında kullanıcı ihtiyaç duyduğunda fonksiyon da tanımlayabilmektedir. Her ne kadar saklı prosedürler(sp) fonksiyon benzeri bir görevi yerine getirse de kullanıcı tanımlı fonksiyonlar işlev olarak daha özel işlemlerde kullanılır. Tetiklemeler (Trigger): Trigger ler bir tabloya kayıt eklendiğinde veya silindiğinde otomatik olarak devreye giren özel saklı prosedürlerdir. Özellikle veritabanı tutarlılığını sağlamak için kısıtlayıcıların yetersiz kaldığı durumlarda (örneğin 32 BYTE Veritabanı Programlama 2