MsSQL

SQL Server Veritabanı Oluşturma

Bu yazının kapsamı veri tabanı oluşturmadır. Sql Server da bir veri tabanı oluşturduğunuzda, table, view, stored procedure, function ve trigger gibi nesnelerin kapsayan bir paket oluşturulur.

Kullanıcıların oluşturduğu veri tabanların dışında sistemin kullandığı veri tabanları da vardır.

SQL Server’da iki tip veri tabanı mevcuttur.

  • System databases (Sistem veritabanları)
  • User Databases (Kullanıcı veritabanları)

Sistem Veritabanları

Sistem veritabanları SQL Server kurulumunda otomatik olarak oluşturulurlar.

Sistem veritabanlarının listesi

Master: SQL Server programını yönetmek için oluşturulmuş çekirdek veritabanı olarak nitelendirebiliriz.  Oturum açma, hesap giriş çıkış işlemleri gibi bilgilerini de tutmaktadır. Ayrıca master veritabanı diğer tüm veritabanlarının varlığı ve konumu gibi bilgilerin tutulması görevini de üstlenir. Master veritabanı üzerinde hasar oluşması durumunda diğer veritabanlarını ve SQL Server bundan etkilenecektir.
Model: SQL Server üzerinde veritabanı yeni bir veritabanı oluşturulurken model veri tabanını örnek alır. Model üzerinde yapılacak bir değişiklik ile sonradan oluşturulacak olan veritabanları üzerinde de bu değişikliğin geçerli olacağı unutulmamalıdır.
MSDB: Farklı hizmetler hakkında yapılandırma verilerini tutmaktadır. Örn: SQL Server Agent, Database Mail, and Service Broker.  Bu veritabanı üzerindeki bilgilerin değiştirilmesi durumunda SQL Serverın kullandığı bu hizmetler olumsuz olarak etkilenecektir.
Tempdb: Kullanıcılar tarafından oluşturulan geçici tabloarı ve karmaşık sql sorgu sonuçlarını tutmak için kullanılır. Geçici olan her değişkenin tutulduğu veri tabanı olarak düşünülebilir. SQL Server yeniden başlatıldığında  Tempdb üzerindeki değişken tablo ve değişkenlerin kaldırıldığını unutmamak gerekir.
Resource: Kaynak veritabanı, SQL Server’da bulunan tüm sistem nesnelerini içeren salt okunur bir veritabanında bulunur. SQL Server sistem nesneleri, örneğin sys.objects, Kaynak veritabanında fiziksel olarak kalıcıdır, ancak mantıksal olarak her veritabanının sys şemasında görünürler. Kaynak veritabanında kullanıcı verileri veya kullanıcı meta verileri bulunmamaktadır.

Kullanıcı Veritabanları

Veri tabanı oluşturma yetkisine sahip kullanıcılar tarafından oluşturulurlar.

En basit hali ile aşağıdaki gibi oluşturulurlar. Bu şekilde bir tanımlama yaptığımızda  model veri tabanının bir kopyası oluşturulacak ve oluşturulan kopyanın adını da bizim verdiğimiz isim olarak değiştirecektir.

Örnek:

 

Kendi istediğimiz parametrelere uygun olarak da veritabanı oluşturabiliriz. Daha kapsamlı şekilde oluşturmak için ise aşağıdaki gibi ek tanımlamalar yapılabilir.

 

Örnek:

 

CREATE DATABASE : Kısa yazımda olduğu gibi Kutuphane adında bir veri tabanı oluşturacağımızı ifade ettik.
PRIMARY                  :  Bir veritabanı oluşturulurken başlangıç gerekli nesnelerin oluşturulması için yazılması zorunludur.
     NAME                  :  Dosya sistemi içinde verilen bir takma ad. İşletim sistemi tarafından da bu isimle tanınır.
     FILENAME            : İşletim sistemi üzerinde saklanacak dosyanın adını ve yolunu ifade eder.
     SIZE                      : Dosyanın başlangıç boyunu belirtir. Girilen sayının birimi belirtilmezse MB olarak alınır. GB, KB gibi değerleri vermek de mümkündür. Bir veri tabanı oluşturulurken log dosyanının da bu değere uygun verilmesi önerilir. Log dosyası veri tabanının     %25 ile %10 arasında bir değer olması önerilir.
     MAXSIZE              : Dosyanın en fazla ne kadar büyüyeceğini belirtmek için kullanılır.
     FILEGROWTH       : Veri tabanı dosyası başlangıç değeri dolduğunda ne kadar arttırılacağını belirtmek için kullanılır. % oranı belirterek büyümenin orantısal olarak verilmesi mümkündür.

LOG ON                    :Transaction log dosyası için gerekli tanımlamaları ifade eder. Log dosyası da bir veri tabanı olduğu için yukarıdaki tanımlamalar bu veri tabanı dosyası için de geçerlidir.

COLLATE                   : Veri tabanının hangi dil setinde tanımlanacağını belirtmek için kullanılır. Türkçe dil seti için Turkish_CI_AS kullanılır. Zorunlu değildir. Girilmemesi durumunda SQL Server hangi dil sunucuda çalışıyorsa varsayılan o değeri alacaktır. Türkçe hizmet veren bir sunucuda her hangi bir sorun çıkmayacaktır.

 

Örnek Uygulama:

YazilimBilisimMagaza adında bir veri tabanının 100MB başlangıç değeri olsun. Veri tabanı doluluk seviyesine ulaştığında %10 kadar değerini arttırsın. Veri tabanının değeri en fazla 750MB kadar attırılabilir olsun. Veri tabanı bilgisayarda C diskine kaydedilsin. Bu şartlara uygun veri tabanı dosyasını oluşturan kodları yazınız.

Çözüm: