SQL Server Veritabanları
Veritabanı geliştirmek ve tamamlamak için SQL Server veritabanı yapısını anlamak gerekir.
Veritabanı Tipleri
Her SQL Server, iki veritabanı tipine sahiptir. Bunlar Sistem Veritabanları ve Kullanıcı Veritabanları. Sistem Veritabanları, SQL Server hakkındaki bütün bilgileri tutar. SQL Server, Sistem Veritabanını, sistemi yönetmek için kullanır. Kullanıcı veritabanları, kullanıcının yarattığıdır. SQL Server�ın bir kopyası, bir veya daha fazla kullanıcı veritabanınını yönetebilir. Veritabanlarının her iki tipi de veriyi depolar.
Sistem ve Kullanıcı Veritabanları
SQL Server Setup kurulurken, SQL Server 4 Sistem Veritabanı ve 2 Kullanıcı Veritabanı yaratır. Kopyalama işlemleri için, SQL Server konfigüre edilirken distribution veritabanı kurulur.Aşağıda herbir veritabanı tanımlanmıştır:


Veritabanı

Tanım

Master

Kullanıcı accountları, sistem hata mesajlarını tutarak tüm kullanıcı veritabanlarını ve SQL Server işlemlerini kontrol eder

Model

Yeni kullanıcı veritabanları için kalıp ve örnekler sağlar.

Tempdb

Geçici tablolar için depo alanlar sağlar.

Msdb

SQL Server Aracısını destekler. Tasarlanmış bilgiler ve job için bir depo alanı sağlar.

Distribution

Kopyalamada kullanılan işlem verilerini tutar.

Pubs

Bilgi aracı olarak basit bir veritabanı sağlar.

Northwind

Bilgi aracı olarak basit bir veritabanı sağlar.

User1

Kullanıcı tanımlı veritabanını teşhis eder.

Uyarı: msdb veritabanını silme, SQL Server�ın pratikliğini azaltır.

Veritabanı Nesneleri
Bir veritabanı, veri, tablo ve diğer nesnelerin bir yığınıdır. Veritabanı nesneleri, veriyi tasarlamada ve veri güvenlik mekanizmasını tanımlamada yardımcı olur. Aşağıda SQL Server veritabanı nesneleri tanımlanmıştır:


Veritabanı Nesnesi

Tanım

Table

Sütunlarla birleşen satır yığınlarını tanımlar. Nesnelerin adlarını, tiplerini, anahtar özelliklerini tutar.

Veri tipi

Bir kolon veya değişken için izin verilen veri değerlerini tanımlar. SQL Server veri tipleri sağlar. Ayrıca kullanıcılar veri tipleri yaratabilirler.

Constraint

Kolonlarda tanımlanmış olan değerleri korumak için kurallar tanımlar. Veri uyumunu yöneten standart bir mekanizmadır.

Default

Başka değer sağlanmamışsa, kolona, önceden tanımlanmış bilginin yerleştirilmesini sağlar.

Rule

Veri tipinde veya sütunda yerleştirilmiş olan geçerli değerleri tanımlayan bilgileri içerir.

Index

Veri alımı için hızlı erişim sağlayan depo alanıdır. Veri uyumunu yürütür. Gruplanmış indexlerde anahtar değerlerin mantıksal veya indexlenmiş kuralları fizikseldir. Gruplanmamış indexlerde mantıksal index kuralı, fiziksele uymaz.

View

Bir veritabanındaki viewlardan veya bir yada daha fazla tablolardan veri arama yolu sağlar.

Stored Procedure

Birlikte çalışan Transact-SQL ifade kümelerinin ismidir.

Trigger

Stored procedureların özel bir formu. Bir kullanıcı bir tablodaki veriyi değiştirdiği zaman otomatik olarak çalıştırılır.

SQL Server Nesnelerinden Söz Etme
Bir SQL Server nesnesi iki şekilde tanımlanabilir.
1.       Tam isim olarak server ismi, veritabanı ismi, owner ismi ve nesne ismi olarak 4 bölümden oluşur.
Formatı: server.database.owner.object   (Fully Qualified İsmi)
SQL Server�da yaratılan her bir nesnenin tek bir fully qualified ismi olmalı. Yani aynı veritabanı içinde aynı owner�lara bağlı orders isimli iki tablo olabilir. Bunlar farklı owner�lara bağlı olabilir. Ayrıca sütun isimleri tablo veya view içinde tek olmalı.
2.       Bölümlü olarak belirlenmiş isim; bir nesneden söz edilirken serverı, veritabanını ve ownerı her zaman belirtme zorunluluğu yok.
Formatı: server.database..object
             Serverobject
Bir nesne yaratılırken, ismin farklı bölümleri belirlenmemişse SQL Server aşağıdaki geçerli değerleri kullanır.
§         Server belirlenmemişse, lokal server göz önüne alınır.
§         Veritabanı belirlenmemişse, geçerli veritabanı göz önüne alınır.
§         Owner belirlenmemişse, LoginID ile bağlanan kullanıcı ismi göz önüne alınır.
Örnek: Bir kullanıcı, northwind veritabanında db_owner veya db_ddladmin rolünün bir üyesidir. Nesnenin owner�I olarak dbo kullanılabilir.
CREATE TABLE northwind.dbo.order_history
               (OrderID INT
  , ProductID int
  , UnitPrice money
  , Quantity int
  , Discount decimal
   )
Bir çok nesne yerel server�a gelmeyip daha çok Üç bölümlü isim kullanırlar.
Dört bölümlü isim genellikle stored procedure�leri çağırmak veya distributed (dağılmış) sorgular için kullanılır.
Sistem Tabloları
Sistem tabloları, veritabanlarındaki sistem ve nesneler hakkındaki bilgileri içerir ve metadata olarak adlandırılır. Metadata veri hakkındaki bilgilerdir.
Database Katalog
Her bir veritabanı, belirli veritabanı hakkındaki metadataları depolayan sistem tablolarını yığınlarını içerir. Sistem tabloları yığını veritabanı kataloğudur.
Sistem Katalog
Sadece master veritabanında bulunur. Tüm sistem veya diğer tüm veritabanları hakkındaki metadataları depolayan sistem tablolarını içerir. Sistem tabloları sys ön eki ile başlıyor.


Sistem Tablosu

Veritabanı

Fonksiyon

Syslogins

Master

SQL Servera bağlanabilen her bir login accountu için bir satır (row) içerir.

Sysmessages

Master

SQL Serverın döndürebildiği herbir sistem hatası için bir row içerir.

Sysdatabases

Master

SQL Server üzerindeki herbir veritabanı için bir row içerir.

Sysusers

Bütün

Bir veritabanı üzerindeki herbir SQL Server rolü, SQL Server kullanıcısı, WinNT grubu, WinNT kullanıcısı için bir row içerir.

Sysobjects

Bütün

Bir veritabanındaki herbir nesne için bir row içerir.

Metadatanın Elde Edilmesi
Bir uygulama yazarak, sistem tablolarından metadata geri elde edilebilir. Bunun için sistem stored procedure�ları, sistem fonksiyonlarını, veya sistem supplied information schema views kullanılır. Bir sistem tablosu diğer veritabanı tabloları gibi sorgulanabilir. Sorgulanan sistem tablosunun script�I yazılamaz; çünkü eğer bir sistem tablosu gelecek versiyonlarda değiştirilirse yapılan script başarısızlığa uğrayabilir.
Uyarı: Kullanıcılar sistem tablolarını doğrudan değiştiremezler. Bir sistem tablosunu değiştirme, SQL Server�ın sistem başarısızlıklarını düzeltmesini imkansız hale getirebilir.
Sistem Stored Procedure
Veritabanı nesneleri ve server durumu hakkında bilgileri toplamak için büyük kolaylıklar sağlar. Sistem procedure�lar sp_ öneki ile başlar.
 


Sistem Stored Procedure

Tanım

Sp_help [object_name]

Belirlenmiş veritabanı nesneleri üzerindeki bilgileri sağlar.

Sp_helpdb [database_name]

Belirlenmiş veritabanı üzerindeki bilgileri sağlar.

Sp_helpindex [table_name]

Belirlenmiş tablo için index üzerindeki bilgileri sağlar.

Aşağıdaki örnek employee tablosundan bilgi almak için kullanılmıştır. Geçiş Parametresi
Sp_help employee
Sistem Fonksiyonları
Transact-SQL ifadeleriyle sistem tablolarının sorgulanması için bir metod sağlar.


Sistem Fonksiyonu

Geçiş Parametresi

Sonuçlar

DB_ID

İsim (Name)

Veritabanı IDsini
Geri döndürür.

USER_NAME

ID

Kullanıcı adını geri döndürür

COL_LENGTH

Sütun (Column)

Sütun genişliğini geri döndürür.

STATS_DATE

Index

belirlenmiş indexin son güncellendiği tarihi geri döndürür.

DATALENGTH

Veri Tipi

Herhangi bir veritipi ifadesinin uzunluğunu geri döndürür.

Aşağıdaki örnek UserId�si 10 olan kullanıcı ismini almak için kullanılmıştır. Geçiş Parametresi
SELECT USER_NAME(10)
Information Schema Views
Veritabanına yerleştirilmiş bütün veri nesnelerinin metadatalarını içerir. Information_schema öneki ile tanımlanır.


Information Schema View

Tanım

Information_schema.tables

Veritabanındaki tabloların listesi

Information_schema.columns

Veritabanında tanımlanmış sütunlar üzerindeki bilgiler

Information_schema.tables_ privileges

Veritabanındaki tablolar için güvenlik bilgileri

Aşağıdaki örnek; veritabanındaki tabloların bir listesini almak için kullanılmıştır. Geçiş Parametresi
SELECT * FROM information_schema.tables