Araştırma ve ödevleriniz için her türlü kaynağı ve dokümanı En Geniş Araştırma ve Ödev Sitesi: www.arsivbelge.com ile bulabilir ve İsterseniz siz de kendi belge ve çalışmalarınızı gönderebilirsiniz!
Her türlü ödev ve dokümanı
www.arsivbelge.com ile kolayca bulabilirsiniz!

Araştırmalarınız için Arama Yapın:


Araştırmalarınız için Arama Yapın:

  
                    

SQL Server Nedir
www.arsivbelge.com
SQL Server Nedir dokümanıyla ilgili bilgi için yazıyı inceleyebilirsiniz. Binlerce kaynak ve araştırmanın yer aldığı www.arsivbelge.com sitemizden ücretsiz yararlanabilirsiniz.
SQL Server Nedir başlıklı doküman hakkında bilgi yazının devamında...
Ödev ve Araştırmalarınız için binlerce dokümanı www.arsivbelge.com sitesinde kolayca bulabilirsiniz.

SQL SERVER NEDİR ?

Microsoft SQL Server Client-Server ve web tabanlı uygulamalarda ihtiyaç duyulan veri depolama çözümlerinde kullanılan bir server yazılımıdır.

SQL Server’ı iki tür veritabanını yönetmek için kullanırız. Bunlar OLTP (Online Transaction Processing) veritabanları ve OLAP (Online Analytical Processing) veritabanları. Genel olarak farklı client’lar network üzerinden haberleşerek veritabanlarına erişirler.

SQL Server ile terabyte boyutundaki veritabanlarını yönetebilirsiniz. Birden fazla server arasında Windows Clustering yaparak SQL Server’ı kullanabilirsiniz.

SQL SERVER’A GİRİŞ

SQL Server ile yoğun verileri işleyebilir, saklayıp analiz edebilir ve yeni uygulamalar geliştirebilirsiniz. SQL Server OLTP ve OLAP için gerekli olan veri saklama ürünlerini ve teknolojilerini destekler. SQL Server bir ilişkisel veritabanı yönetim sistemidir (RDBMS: Relational database management system).SQL Server;

 Veri işleme ve analiz için saklanan veri yığınlarını yönetebilir.
 Client uygulamalarından gelen isteklere cevap verebilir.
 SQL Server ve clientlar arasında veri göndermek için T-Sql (Transact SQL), XML, MDX veya SQL-DMO kullanabilir.

İlişkisel Veritabanı Yönetim Sistemi (RDBMS)

Bir RDBMS aşağıdaki işlemlerden sorumludur;

  • Bir veritabanındaki veriler arasında ilişkiler kurmak
  • Verileri hatasız bir şekilde saklamak ve veriler arasında tanımlanan ilişkileri bozmamak
  • Bir sistem hatası durumunda tüm verileri kurtarabilmek

Veri saklama modelleri

SQL Server OLTP ve OLAP veritabanları yönetebilir.

OLTP Veritabanları: Bir OLTP veritabanı içinde veriler genellikle ilişkisel tablolar içinde organize edilir. Gereksiz veri yığınları azaltır ve veri güncelleme hızını arttırır. SQL Server çok sayıda kullanıcının gerçek zamanlı olarak veri analiz edebilmesini ve güncellemesini sağlar. Örnek olarak OLTP veritabanları havayolu bilet satış bilgileri ve bankacılık işlemlerini içerir.

OLAP Veritabanları: OLAP teknolojisi büyük verilerin organize edilmesi ve incelenmesini sağlar. Örneğin bir analist büyük verileri hızlı ve gerçek zamanlı olarak değerlendirebilir.SQL Server Analiz Servisi toplu raporlama ve analizde, veri modelleme ve karar desteğe kadar geniş alanda çözümler sunar.

Client Uygulamaları
Kullanıcılar SQL Server ve Analiz Servisine direct olarak ulaşamaz; verilere erişmek için yazılmış client uygulamaları kullanırlar. Bu uygulamalar SQL Server aşağıdaki yöntemlerle ulaşırlar;

Transact-SQL: Bu sorgulama dili SQL’in farklı bir versiyonudur. SQL Server kullanıcıları için birincil bir sorgulama ve programlama dilidir.
XML: Bu format bir sorgu ve prosedürün çalışması sonucu gelen verinin HTTP üzerinden URL veya şablonlar kullanılarak iletilmesidir. XML’I veritabanina veri girerken, güncellerken ve silerken kullanabilirsiniz.

MDX: MDX bir OLAP veritabanı içindeki çok boyutlu objelerin, sorguların ve çok boyutlu verilerin düzenlenmesini ifade eder.

OLE DB ve ODBC API’leri: Client uygulamaları veri tabanına komut gönderirken OLE DB ve ODBC API’lerini kullanırlar. Bu API’leri kullanarak gönderilen komutlar T-SQL dilini kullanırlar.

ActiveX Data Objects ve ActiveX Data Objects (Multidimensional)

ADO ve ADO MD Visual Basic, ASP, VB Script programlama dillerinde OLE DB’yi kapsamak için kullanılır. OLTP veritabanları içindeki verilere erişmek için ADO kullanılır. Analiz Servisi veri küpleri içindeki verilere erişmek için ise ADO MD kullanılır.

English Query: Bu uygulama ile kullanıcılar doğal dillerini kullanarak karmaşık T-SQL ve MDX yapılarını kurarak veritabanıdan bilgi elde edebilirler. Örneğin bir kullanıcı “Satış bölümünün bu ay ki cirosu nedir ?” diye bir soru sorabilir. Adındanda anlaşıldığı gibi sorularda ingilizce dili kullanılır.

Client-Server Bileşenleri

SQL server verileri saklamak ve tekrar almak için client, server bileşenlerini içerir. SQL server uygulamaları temel network ve protokollerden izole etmek için katmanlı iletişim modelini kullanır.Bu yapı uygulamanız farklı network ortamlarında kullanmanızı sağlar.

Client-Server Mimarisi

SQL server iş yükünü azaltmak için server ve clientlar üzerindeki iş yükünü parçalara böler.

  • Client uygulama ticari hesaplama ve bunların kullanıcıya gösterilmesinden sorumludur. Bunlar her ne kadar client üzerinde çalışsa bile veri sorgularken server üzerinde çalışır.
  • SQL Server birden fazla gelen istekleri karşılayabilmek için disk, bellek, işlemci ve bant genişliği gibi kaynakları yönetebilir.

Client-Server mimarisi ile çeşitli ortamlar için uygulamalar dizayn edip geliştirebilirsiniz. Client uygulaması çeşitli bilgisayar ortamlarında çalışır ve SQL Server ile network üzerinden haberleşir.

Client Bileşenleri:

Haberleşme mimarisinde client bileşenleri aşağıdakileri içerir;

Client Applications: Bir client uygulamasındaki amaç T-SQL kodlarını göndermek ve sonuçları almaktır. Veritabanı API’si kulanarak bir client uygulaması geliştirebilirsiniz. Böylece SQL Server ile haberleşmek için kullanılan network protokolünü bilmeye gerek yoktur.

Database API: Database API’leri bir driver veya DLL kullanarak T-SQL kodlarını geçirir ve sonuçları alır. Bu T-SQL kodlarını gönderirken ve sonuçları alırken client uygulama ile SQL Server arasında kullanılan bir arayüzdür.

Client Net-Library: Client Net-Library network bağlantılarını control eder ve verileri client’a yönlendirir. Bu bir çeşit veritabanı isteklerini ve sonuçlarını paketleyip çeşitli network ortamlarında taşıyan haberleşme yazılımıdır.

Server Bileşenleri:

Haberleşme mimarisinde server bileşenleri aşağıdakileri içerir;

Server Net-Libraries: SQL Server aynı anda birçok Net-Library’leri izleyebilir. Bağlantının sağlanabilmesi için Client Net-Library ve Server Net-Libraries aynı olmalıdır. SQL Server şu protokollere destek verir; TCP/IP, Named Pipes, NWLink, IPX/SPX, VIA ServerNet II SAN, VIA GigaNet San, Banyan VINES ve AppleTalk.

Open Data Services: SQL Server’ın bir bileşeni olan bu uygulama network bağlantılarını izler, client isteklerini çalıştırmak üzere SQL Server’a geçirir ve sonuçları tekrar client uygulamaya döndürür. Open Data Services SQL Server’a yüklenmiş olan tüm Net-Libraries’I dinler.

Relational Engine: T-SQL kodlarını çalışabilir parçalara böler, optimizasyonunu yapar, tanımlanmış diğer kodları çalıştırır ve güvenliği sağlar.

Storage Engine: Storage Engine veritabanı dosyalarını, dosyalardaki boş alanları, fiziksel sayfalara veri giriş çıkışını, veri önbelleklerini, loglamaları, kurtarma operasyonlarını yönetir.
Client-Server Haberleşme İşlemleri

Client ve Serverlar tipik olarak bir network üzerinden haberleşirler. Aşağıdaki adımlar bir sorgunun veritabanı API’si kullanılarak hangi aşamalardan geçtiğini göstermektedir.

1. Bir client uygulaması sorgu gönderir. Client uygulama API’yi çağırır ve sorguyu verir. API driver veya DLL’I kullanarak sorguyu bir veya daha fazla TDS (Tabular Data Stream) paketlere gruplar ve Client Net-Library’e geçirir.

2. Client Net-Library bu paketleri networkte taşınabilecek şekilde paketler. Client Net-Library windows interprocess communication (IPC) API’sini çağırır ve işletim sisteminde yüklü olan protocol üzerinde bu paketleri server net-libraries’e gönderir. Server net-libraries bu network paketlerini çözer ve TDS paketlerinin elde eder. Data sonar bu TDS paketlerini Open Data Services’e geçirir.

3. Open Data Services bu TDS paketlerini açar ve sorguyu relational engine’e verir. Relational engine bu sorguyu derler ve optimizasyonu yapılmış çalışabilir bir şekle çevirir ve çalıştırır. Relational engine storage engine ı ile OLE DB arayüzünü kullanarak haberleşir.

4. Storage engine databaseden dönen verileri data buffer’a oradan relational engine’e verir. Relatinal Engine gelen verilere son şeklini verir ve Open Data Services’e geçirir.

5. Open Data Services bu verileri Server Net-libraries, network protokolü, client net-library ve database API kullanarak client’a iletir. Bu sonuçlar XML şeklinde de iletilebilir.

SQL Server Servisleri

Microsoft SQL Server aşağıdaki servisleri içerir;

MSSQLServer service, SQLServerAgent service, Microsoft Distributed Transaction Coordinator (MS DTC) ve Microsoft Search. Bu servisler genellikle Windows 2000 üzerinde servis olarak çalışırlar fakat uygulama gibi de çalışabilirler.

MSSQLServer Service:MSSQLServer bir veritabanı motorudur. Tüm T-SQL yapılarını çalıştıran ve veritabanını kapsayan tüm dosyaları yöneten servistir. MSSQLServer servisi;


1. Sistem kaynakları birden fazla kullanıcıya paylaştırır
2. Mantıksal hataları engeller. Mesela bir datayı aynı anda güncellemek isteyen kişileri engeller.
3. Veri bütünlüğünü sağlar.

SQLServerAgent Service:Bu servis SQL Server ile birleşik olarak çalışır ve alert’leri ve multiserver işlemlerin yönetilmesini sağlar.

1. Alert’ler bir işlemin sonuçları hakkında bilgi verir. Mesela bir sorgu bitti veya çalışma sırasında bazı hatalarla karşılaşıldı gibi.
2. SQLServerAgent görev oluşturma ve zamanlama aracı ile bazı işlemlerin otomatikleştirilmesini sağlar.
3. SQLServerAgent servisi bir problem olduğunda mail atabilir, çağrı cihazına mesaj gönderebilir veya başka bir uygulamayı çalıştırabilir. Mesela bir veritabanı dolduğunda veya bir yedekleme işlemi bittiğinde size mail atmasını sağlayabilirsiniz.

Microsoft Distributed Transaction Coordinator:MS DTC bir işlem ile birden fazla farklı kaynağın üzerinde işlem yapılmasını sağlar. Mesela bir işlem ile tüm serverlar üzerinde kalıcı bir güncelleme işlemi yapabilir veya yapılmış bu işlemi hepsinden geri alabilir.

Microsoft Search:Microsoft Search Windows 2000 üzerinde çbir servis olarak çalışan full-text bir arama motorudur.

SQL Server Entegrasyonu

SQL Server Microsoft işletim sistemi ve diğer server uygulamaları ile bütünleşik çalışabilen client-server bileşenlerine sahiptir. Farklı işletim sistemleri üzerinde bulunan Internet tarayıcıları ve diğer üçüncü parti yazılımlar SQL Server’a erişebilmektedir

İşletim Sistemi ve SQL Server Entegrasyonu

SQL server belirttiğimiz gibi farklı işletim sistemleri üzerinde çalışabilen client ve server bileşenlerine sahiptir.

Client Bileşenleri:SQL Server 2000’nin tüm versiyonlarındaki client bileşenleri Windows CE sürümü hariç tüm Windows 2000, Windows NT, Windows ME 95 ve 98 sürümleri üzerinde çalışabilmektedir.Tüm SQL Server CE sürümü bileşenleri ise Windows CE üzerinde çalışabilmektedir.

Server Bileşenleri:SQL Serverin değişik sürümleri Windows 2000, CE, ME, 98 ve 95 işletim sistemleri üzerinde çalışabilmektedir. İşletim sistemi ve SQL server’in spesifik özelliklerinden dolayı server bileşenlerinde bazı kısıtlamalar olmaktadır. Mesela Windows NT 4.0 üzerine SQL Server 2000 kurabilmek için SP5 gerekmektedir. Ve sadece veritabanı motoru ve analiz server gibi server bileşenleri işletim sistemine gore kısıtlanmaktadır. Örneğin Windows 2000 Pro, ME, 98, 95 ve NT Workstation gibi işletim sistemlerine SQL Server 2000 Enterprise Edition’I kuramazsınız sadece SQL Server 2000 EE Cd’sini client yazılımını kurmak için kullanabilirsiniz.

SQL Server 2000 ve Windows 2000 Entegrasyonu

SQL Server tam anlamıyla Windows 2000 ile entegre olabilmekte ve Windows 2000’nin özelliklerinden ileri gelen tüm avantajlarından faydalanabilmektedir.

Active Directory:Serverlar ve özellikleri server start edildiğinde otomatik olarak active directory içine kaydedilmektedir. Kullanıcılar istedikleri server’a active directory search kullanarak erişebilmektedirler. Örneğin; Bir kullanıcı bir veritabanını tüm SQL Server’la üzerinde aratabilmektedir. Veya Active Directory üzerinden SQL Server üzerindeki veritabanlarıa bakabilmektedir.

Security:SQL Server Windows 2000 güvenlik sistemine entegre olarak çalışmaktadır. Bu entegrasyon kullanıcıların tek bir kullanıcı ismi ve şifresi ile hem SQL Server’a hem de Windows 2000 kaynaklarına erişmesine izin vermektedir. SQL Server Windows 2000 encryption metodlarını kullanmaktadır. Kerberos gibi. SQL Server Windows 2000 güvenliğinden ayrı olarak kendiside güvenlik sistemi barındırmaktadır. Kullanıcılar Windows 2000 den ayrı olarak SQL Server kullanıcı ismi ve şifrelerinede sahip olabilmektedir.

Multiprocessor Desteği:SQL Server Windows 2000’in SMP(Symmetric multiprocessing) özelliğini de desteklemektedir. SQL server sisteme eklenen yeni bir işlemcinin avantajlarından otomatik olarak faydalanablmektedir.

Microsoft Olay Günlüğü (Event Viewer):SQL Server sorunların takip edilebilmesi ve çözüme kavuşturulabilmesi için Windows 2000’de kullanılan olay günlüğünün uygulama, güvenlik ve system alanlarına mesajlar yazabilmektedir.

Windows 2000 Component Servisleri:Component servisleri COM ve Transaction Server’a dayanmaktadır. Böylece daha fazla işlem, güvenlik, yönetim kolaylığı, uygulama yönetimi, uygulama paketleme özelliklerinden faydalanılabilmektedir.


Windows 2000 Sistem Monitörü:SQL Server system monitörüne performans ölçülerini gönderebilmektedir. Böylece SQL Serverin değişik açılardan performansı incelenebilmektedir.

Microsoft Internet Information Service:Internet tarayıcısı ile SQL Server veritabanlarına erişimi sağlamaktadır.

Windows Clustering:SQL Server Windows 2000 Advanced Server’in bir özelliği olan clustering servisinden faydalanabilmektedir. Böylece makinalardan bir tanesinde sorun olursa diğer makinaya konumlanabilmekte ve işlemler aksamadan devam etmektedir.



SQL Server ve Diğer Microsoft Server Uygulamaları Entegrasyonu

SQL Server en iyi şekilde diğer Microsoft Server uygulamaları ile entegre olabilmektedir. Microsoft bir grup server uygulamaları ile iş çözümleri üretmenize yardımcı olmaktadır. Aşağıdaki tabloda SQL Server ile sıkça beraber kullanılan server’lar listelenmiştir.

Microsoft Exchange Server:SQL Server’in email göndermesini sağlamaktadır. SQL Server veritabanında problem olduğunda veya belirlenen senaryolar sonucunda ilgili kişilere mail atabilmektedir.

Microsoft Host Integration Server 2000:PC tabanlı networkleri SNA protokolünü kullanarak IBM ortamlarına bağlamaktadır. Böylece SQL Server IBM mainframe ve AS/400 uygulamaları ile entegre olabilmektedir.

Microsoft System Mnagement Server:Bilgisayar yazılımlarını, donanımlarını ve SQL Server veritabanlarını yönetmeye yardımcı olur.

SQL SERVER İLE UYGULAMA GELİŞTİRME

Web Tabanlı Uygulamaların işlevliği arttıkça kontrolleri de artmaktadır. Bu ise çok fazla kontrol kodu demektir. Server-Side kodlar, Client-Side kontroller, grafik tasarım, DHTML derken ASP sayfamız içinden çıkılmaz bir hale dönüşebilir. Özellikle uygulamaya yeni modül eklentilerinde, baştaki tasarımınıza bağlı olarak yama yapabilir yada her şeye yeniden başlayabilirsiniz. Öte yandan uygulamanızın efektif kullanımına yönelik performansı da düşünmek zorundasınız. Bu amaçla bileşenler oluşturabilir ya da mevcut bileşenlerden faydalanabilirsiniz; ayrıca grafik tasarım ve ara yüz standardını da belirlemeniz gerekir. Tüm katmanların aynı yerde farklı kodlanması ve kontrolü, standartlaşma ve birlikte çalışabilirlik unsurları da dikkate alındığında, sistem tasarımcılarını üzerinde çok fazla düşündürmektedir.

Bu anlatımda ki temel amacım bir web tabanlı uygulamanın mümkün olduğunca çok yönlü, çok amaçlı ve kullanışlı (generic) bir yapıda olmasını sağlamak için tespit ettiğim arayışlardır. Bildiğiniz gibi veritabanına bağlı uygulamalarda yoğunlukla veri girişi, düzenleme, sorgulama ve silme gibi işlemler yapılmaktadır. Bunun için veritabanından bir tablonun kayıtlarını kullanıcı ekranına listeleriz ve gerekli butonlar vasıtası ile interaktif olarak kullanıcıdan istek bekleriz. Standart veritabanı işlemleri dışında uygulamadan yapılması istenen özel durumlarda kod yazarak kontrol oluşturmamız gerekir. Örneğin veritabanından gelen kayıt listesinin kullanıcının istediği alana (column) göre sıralama (sort) işleminin artan yada azalan şekilde yapılabilmesi.

Bu aşamada uygulamanın sistem mimarisinde üç ana unsur ortaya çıkmaktadır. Sistem tasarımı, veritabanı tasarımı ve ara yüz tasarımı. Kullanıcı-Uygulama iletişimini sağlayan ara yüz standardı büyük önem kazanmaktadır. Sistem mimari tasarımında kullanıcıya anlaşılır (user friendly) ara yüzler tasarlamak ve standartları belirlemek, varsa belirlenmiş standartlara uymak, oluşturacağımız generic yapıda en önemli unsur olacaktır. Kullanıcının isteklerini bildireceği ara yüz tasarımında standartları belirlemek ve yerleşik bir ortamda (XML gibi) tutmak uygulamanın geliştirilmesi ve uygulamalar arası entegrasyon açısından fayda sağlayacaktır. Tasarım aşamasında ihtiyaçlar ve iş gereçlerini planlayarak ara yüz standart oluşumuna yansıtmak gerekir. Büyük bir ivme ile yaygınlaşan XML teknolojilerini bu amaçla kullanım gerekliliği aşikardır. Bunun yanı sıra arka planda server-side kodlarla veritabanı ile yapılan iletişimlerde XML büyük efektiflik sağlayacaktır.

Bir dinamik ASP sayfasının oluşumunda, ara yüz standartlarını belirleyeceğimiz iş akışını veritabanında saklayabiliriz. Bunu açacak olursak veritabanında ki nesneler ve özelliklerine göre asp sayfasının nasıl davranacağını belirlemek ve kullanıcının rahat davranabilmesi sağlayacak ara yüz tasarımı oluşturmak için gerekli iş adımlarını veritabanına gömmek olarak tanımlayabiliriz. Üzerinde düşünüldüğünde bu generic yapıyı, veritabanı özelliklerini kullanarak oluşturabileceğimizi görebiliriz. Böylece karmaşık uygulamalarda bile iyi bir veritabanı ve ara yüz tasarımı ile ölçeklenebilir, genişletilebilir ve performans kazançlı web tabanlı uygulamalar geliştirebiliriz. Bunun için mevcut araçların ( XML, Database ) özelliklerini iyi bilmemiz ve nerde nasıl kullanabileceğimiz Tespit etmemiz gerekir.

SQL Server 2000 'da Sütun (column) Description Değerinin Alınması


Microsoft SQL Server 2000'deki SQL Server Enterprise Manager içinde herhangi bir tablonun Table Design penceresini açtığınızda, pencerenin alt yarısında seçili sütunun (column) bazı özellikleri listelenir. Bunlardan birsi de Description (Tanım) özelliğidir. Enterprise Manager Description özelliği bir genişletilmiş özelliktir (extended property).

Bu genişletilmiş özellikleri bazı veritabanı nesnelerinin bilgilerini saklamak için kullanabiliriz. Ben burada sizlere tablolar (tables) ve sütünların (columns) Description genişletilmiş özellik tanımlanmasını ve bu bilgileri ASP sayfası içinden nasıl elde edileceğini (retrieve) anlatmaya çalışacağım.SQL Sever 2000'de genişletilmiş özellikleri almak için bir sistem fonksiyonu tanımlanmıştır. Bu fonksiyon fn_listextendedproperty() sistem fonksiyonudur. Bu fonksiyonun sözdizimi (syntax) aşağıdaki gibidir.

Syntax
fn_listextendedproperty(
{default | [ @name = ] 'property_name' | NULL }
, {default | [ @level0type = ] 'level0_object_type' | NULL }
, {default | [ @level0name = ] 'level0_object_name' | NULL }
, {default | [ @level1type = ] 'level1_object_type' | NULL }
, {default | [ @level1name = ] 'level1_object_name' | NULL }
, {default | [ @level2type = ] 'level2_object_type' | NULL }
, {default | [ @level2name = ] 'level2_object_name' | NULL }
)

Aşağıdaki sözdizimi veritabanındaki table nesnesinden T1 tablosunun tüm sütunlarının (column) genişletilmiş özellikleri listeler. Eğer 'column' nesnesinden sonra default yerine tabloda herhangi bir sütun adını verirsek o sütunun genişletilmiş özellikleri listelenecekti.

SELECT * FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', 'T1', 'column', default)
Veritabanımızda belediye bilgilerini tutanil_t_belediye adında bir tablomuz olsun. Tablomuzun Table Design penceresi yandaki şekilde olduğu gibidir. Gördüğünüz gibi belediyead sütununun Description özelliğne ' Belediye Adı ' değeri atanmıştır.
Aşağıdaki SQL cümleciğinde tablo adını il_t_belediye ve sütun adını belediyead olarak girersek; SQL Server Query Analyzer'da çalıştırdığımızda aldığımız sonuç nesne tipinin sütun (COLUMN) olduğunu , nesne isminin ' belediyead ' ve değerinin (value) ise ' Belediye Adı ' olduğunu görebiliriz.




Yukarıdaki örnek SQL cümleciğinde bir sütunun Description genişletilmiş özelliğinin nasıl alınacağını gördünüz. Şimdi ise veritabanında depolanan bu bilgiye ASP sayfasından nasıl erişebileceğimize bakalım.Öncelikle bu fonksiyonu dinamik bir yapıda kullanacağımızı düşünürsek, veritabanına erişen bir bileşen (ActiveX DLL) haline getirmek bir çok açıdan daha uygun olacaktır. Bu amaçla Visual Basic ortamında geliştirdiğim FileldDesc() fonksiyonu aşağıdaki gibidir. FileldDesc() fonksiyonuna değişken olarak gelecek sTableName ve sFieldName değerlerini strSQL cümleciğinde veritabanından sorgulayarak veritabanında gelecek olan sütun Description değerini (value) döndürür.

Not : Kodda görmüş olduğunuz OpenRS ve CloseRS birer Private fonksiyon olup ADO'nun Connection ve Recordset nesnelerini kullanarak veritabanına bağlantı ve kayıt seti oluşturma işlevlerini yapmaktadır.

Public Function FieldDesc(ByVal strConn As Variant, ByVal sTableName As Variant, &_ ByVal sFieldName As Variant) As Variant
Dim sFieldNameAs String
OpenRS strConn
strSQL = "SELECT * FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', &_ '" & sTableName & "', 'column', '" & sFieldName & "')"
rs.CursorLocation = adUseServer
rs.Open strSQL, conn, adOpenStatic
If Not (rs.BOF or rs.EOF) Then
sFieldName = rs("value")
End If
FieldDesc = sFieldName
CloseRS
End Function


Son olarak oluşturduğumuz bileşeni (ActiveX DLL) ASP sayfamızdan nasıl çağıracağımızı görelim. Öncelikle Server nesnesinin CreateObject metodunu kullanarak oluşturduğumuz ActiveX bileşeninden bir örnekleme (instance) nesne oluşturmamız gerekir. Aşağıda gördünüz gibi ActiveX DLL'mizin adı SQL2kObj.dll, Class Module adı da DBDesc 'dir. ActiveX bileşenimizden objSQL2kDB isimli bir nesne örnekledik.

<% Set objSQL2kDB = Server.CreateObject("SQL2kObj.DBDesc") %>


Aşağıdaki örnek ara yüzde gördünüz üzere; il_t_belediye tablosunun tüm sütun (column) Description değerlerini dinamik bir yapıda yazdırmak istediğimizde objSQL2kDB nesnemizin FieldDesc metodu değerlerini (attributes) aşağıdaki gibi tanımlayabiliriz. Aşağıdaki kodu bir döngü içinde kullanırsak, tablonun tüm sütun adlarını fonksiyona gönderebilir ve fonksiyonda veritabanından Description değerlerini bize geri döndürerek istediğimiz alana yazdırmış oluruz.
<%strConn = "Veritabanına bağlantı string'i" %>
<TD><%Response.Write objSQL2kDB.FieldDesc(strConn, "il_t_belediye", fld.name)%></TD>




Yukarıdaki arayüzde gördüğünüz üzere kayıtları veritabanından listelerken sütun adlarını da daha önce veritabanında tanımladığımız sütun Description genişletilmiş özelliklerden alarak dinamik olarak

 

QL Server 2000 sysforeignkeys Sistem Tablosunun Kullanımı
Bu örnekte, veritabanımızda il_t_belediye ve il_t_il tabloları var ve bu tablolar arasında bir ilişki (Relationship) kurulmuştur. Şekil'den de anlaşılacağı üzere il_t_il tablosu (Primary key table) ilkod alanı ile il_t_belediye tablosu (Foreign keytable) ilkod alanlarıarasında birden çoğa (one to many) bir ilişki vardır. Yani Belediye Bilgileri tablosundaki ilkod sütunu İller tablosundaki bir sütuna referans eder.
Burada size anlatmaya çalışağım konu Belediye Bilgileri kayıtlarını ekrana yazdırırken, il_t_belediye tablosunda ilkod (Foreign Key) sütunundaki il kodu değeri yerine, referans eden İller Tablosunda ilkod (Primary Key) değeri ile eşleştirerek karşılık gelen ilad sütunundaki İl Adı değerini İller Tablosundan çekerek yazdırmak.
Bir tabloda bulunan foreign key bir sütunun (column) veritabanında referans eden Primary Key sütuna ulaşmak için veritabanında ki sistem tablolarından sysforeignkeys sistem tablosundan faydalanacağız. SQL Server Query Analyzer'da aşağıdaki SQL cümleciğin WHERE koşuluna foreign key tablo adını yazarsak bize referans eden primary key tablo ve sütun adını getirecektir.




Bu bilgileri ASP sayfalarımızda dinamik olarak kullanabilmek için yukarıdaki SQL cümlesini kullanarak daha önce oluşturduğumuz SQL2kObj.dll ActiveX bileşenimize bir fonksiyon daha ekleyelim.
Bu fonksiyona foreign key sütun adını (sFieldName), değerini (sFieldValue), refereans eden tablodaki kaçıncı sütunu yazdırmak istediğimizi (nWhichField) ve foreign key tablo adını gönderiyoruz.
Kodu inceleyecek olursak; pkSQL cümlesinin WHERE koşulunda foreign key tablo adını (sTableName) göndererek sysforeignkeys sistem tablosundan referans eden primary key tablo adı/adlarını ve sütun adı/adlarını alıyoruz. Foregin key tablomuz veritabanında birden fazla tabloya referans edebileceğini düşünerek oluşacak kayıt setinde bir döngü ile 'column_name' ile foreign key (sFieldName) alanımız arasında eşitlik arıyoruz. Kayıt setinde foregin key (sFieldName) sütununa karşılık gelen primary key tablo adını tespit ettikten sonra SELECT cümlesi ile bizim foregin key sütunumuzun değeri ile primary key tablodaki karşılık gelen sütunun değerini alıyoruz. Eğer değer dönerse daha önceden karar verdiğimiz (sWhichField) primary key tablo sütununun değerini fonksiyona atıyoruz. Dolayısı ile bize bu fonsiyon bize dinamik olarak primary tablosunu bularak bu tablodan istediğimiz sütun değerini yazdırmamızı sağlıyor.
Burada fonksiyonu generic bir yapıda kurduğumuzdan fonksiyona foreign key tablo adı verilmediği takdirde değer dönmeyeceğinden bir flag tutuyoruz ve fonksiyon sonucunda gönderilen sütun değerini (sFieldValue) tekrar fonksiyona atıyoruz.
Public Function FindPkFld(ByVal strConn As Variant, ByVal sFieldName As Variant, &_ ByVal sFieldValue As Variant, ByVal nWhichField As Variant,&_ ByVal sTableName As Variant) As Variant

Dim Flag As Boolean
Dim sPKey As String
Dim pkSQL As String

Dim consulta As ADODB.Command
Dim rsconsulta As ADODB.Recordset

OpenRS strConn
Flag = False

pkSQL = "SELECT object_name(fkeyid) as FKey_Table, "
pkSQL = pkSQL + "col_name(fkeyid, fkey) as column_name, "
pkSQL = pkSQL + "object_name(rkeyid) as PKey_Table, "
pkSQL = pkSQL + "col_name(rkeyid, rkey) as referenced_column_name "
pkSQL = pkSQL + "FROM sysforeignkeys "
pkSQL = pkSQL + "WHERE object_name(fkeyid) = '" & sTableName & "'"

rs.CursorLocation = adUseServer
rs.Open pkSQL, conn, adOpenStatic

Do While Not rs.EOF
If rs("column_name") = sFieldName Then
Set consulta = New ADODB.Command
Set consulta.ActiveConnection = conn
consulta.CommandText = "SELECT * FROM " & rs("referenced_table_name") &_
" WHERE " & rs("referenced_column_name") & "=" & sFieldValue
Set rsconsulta = consulta.Execute
If Not (rsconsulta.EOF And rsconsulta.EOF) Then
sPKey = rsconsulta(nWhichField)
End If
Set rsconsulta = Nothing
Set consulta = Nothing
Flag = True
FindPkFld = sPKey
End If
rs.MoveNext
Loop
If Flag = False Then
FindPkFld = sFieldValue
End If
CloseRS
End Function

Devamı için tıklayın…


Ekleyen:Ümit SERT
Kaynak:(Alıntıdır)
Aradığınız Dokümanı Bulamadıysanız, Farklı Araştırmalar Yapmak İstiyorsanız Site İçi Arama Yapabilirsiniz!

Ödev ve Araştırmalarınız için www.arsivbelge.com Sitesinde Kaynak Arayın:

Ödev ve Araştırmalarınız için Arama Yapın:
     Benzer Dokümanları İnceleyin
SQL SERVER Nedir - 2(5379)

Datacenter Nedir?(5373)

Exchange Server(5369)

Sql (Structured Query Language) Hakkında Bilgi(5362)

DNS Hakkında(5360)

          Tanıtım Yazıları
      
Türkçe İtalyanca ve Almanca Cümle Çevirisi İçin Birimçevir Sitesi

Esenyurt, Beylikdüzü ve Kartal Bölgelerinde Satılık Daire İlanları

Belge Çevirisi

Siz de Tanıtım Yazısı Yayınlamak İçin Tıklayın

Diğer Dökümanlarımızı görmek için: www.arsivbelge.com tıklayın.          

Siz de Yorum Yapmak İstiyorsanız Sayfanın Altındaki Formu Kullanarak Yorum Yazabilirsiniz!

Yorum Yaz          
Öncelikle Yandaki İşlemin Sonucunu Yazın: İşlemin Sonucunu Kutucuğa Yazınız!
Ad Soyad:
          
Yorumunuz site yönetimi tarafından onaylandıktan sonra yayınlanacaktır!