Database özelinde Create, Alter, Drop işlemleri
9 Kasım 2016 Çarşamba
SQL Server'da bir database 2 farklı şekilde create, alter ve drop işlemlerine tâbi tutulabilir. Bunlar;
1) SSMS Grafik arayüzü yardımı ile,
2) Sorgu(query) ile.
Biz bu makalede sorgu ile yapılan DDL(create, alter, drop, truncate, rename) işlemlerine bakıyor olacağız..
SQL Server'da bir obje yaratmak için "create" sözcüğü kullanılır. Bu sözcükten sonra gelen kelime ise yaratılmak istenen objenin tipi olmalıdır. Örneğin;
CREATE DATABASE Ornek1DB ya da CREATE TABLE tbl_Ornek
şeklinde.
Bilinmesi gerekirki, bir SQL Server'da 2 tip database vardır:
1) System defined database ,
2) User defined database
Biz Ornek1DB oluşturarak bunun 2. kategoriye girmesini sağlamış olduk. 1. kategoride bulunan sistem tanımlı database'ler SQL Server'ın yaşamsal döngüsünün devam etmesine olanak sağlayan database'ler olarak adlandırılır ve kurulum ile beraber varsayılan olarak gelir. (master, model, msdb, temdb gibi.)
Az önce oluşturmuş olduğumuz Ornek1DB database'ini incelemeye devam edelim..
Bu obje üzerinde sağ tıklayıp properties dedikten sonra açılan pencerede Files sekmesine gelelim. Sonrasında Path sekmesi altında bu database in hangi klasöre kaydedildiğini görüyoruz. Bu dosya yoluna gittiğimizde .mdf ve .ldf adında Ornek1DB ile ilişkili dosyaları görüyoruz. Bu dosyalar nedir, ne iş yarar?
MDF dosyaları birincil veri dosyaları (Primary Data Files) olarak adlandırılır. Yani gerçek data'lar bu dosya içersinde tutulur.
LDF dosyaları ise transaction log larının tutulduğu dosya olarak adlandırılır ve database tarafında herhangi bir problem olduğunda bu dosya tiplerinden yararlanılır.
Şimdi sorgu ile Ornek1DB database'in adını değiştirerek Ornek2DB yapalım:
ALTER DATABASE Ornek1DB MODIFY Name= Ornek2DB
Aynı isim değişikliği işlemini sistem stored prosedürünü kullanarakda yapabiliriz. Mevcut ismi Ornek2DB olan database'i Ornek3DB olarak güncelleyelim şimdide:
sp_renameDB 'Ornek2DB', 'Ornek3DB'
Grafik arayüzünde bir database'i silmek için ilgili obje'nin üzerinde sağ tıklayıp delete sekmesine tıklıyor olmamız gerekir. Bu şekilde data kaynağında LDF ve MDF uzantılı dosyalar da silinecektir..
Aynı işlemi sorgu penceresinde yapmak istersek;
DROP DATABASE Ornek3DB
cümleciğini kullanıyor olmamız gerekir. Yalnız ilgili database tarafında farklı geliştiriciler çalışıyor ise bu kez karşımıza şu şekilde bir hata penceresi çıkacaktır.
<font color = "#FF0000" >
"Cannot drop database "Ornek3DB" because it is currently in use."
</i> </font>
Master sorgu ekranında şayet herhangi farklı bir bağlantı yok ise bu sorgu kodu çalışacaktır. Ancak yönetim tarafında yer alıyor isek ve ilgili database'in korunmasını garanti altına almak istiyor isek şu sorgu cümleciği işimizi görecektir:
ALTER DATABASE [Ornek3DB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
buradan anlaşılıyor ki bir database varsayılan olarak "MULTI_USER" tanımlıdır. Sonuç olarak database'i tekrar eski haline dönüştürmek istersek, ilgili sorgu cümleciğimizi,
ALTER DATABASE [Ornek3DB] SET MULTI_USER WITH ROLLBACK IMMEDIATE
olarak değiştirmemiz gerekir.
Bir sonraki makalemde görüşmek üzere..