SQL Server 2012 ve LocalDB
48421 defa okundu
Her zaman hayal etmişimdir :) Şu SQL Express Windows'la yüklü gelse diye :) Ne kadar kolaylaşırdı her tür uygulamada direk SQL DB'leri kullanmak değil mi? Şimdi tabi ki alternatif çözümler ve, bazıları MS tarafında bazıları ise değil. Belki bazılarınızın aklına "Access var ya?" sorusu da geliyordur ama tabi ki SQL'in sundukları ile Access'inkiler pek karşılaştırılamaz.
Sonuç olarak bana bu hayali kurduran aslında MS'in ücretsiz olarak dağıttığı SQL'in Express sürümüydü. Hayalime en yakın MS ürünü SQL Compact Edition olsa da yine yukarda bahsettiğim gibi iki ürünün sunduğu özellikler aynı olamadığı için tam da istediğim şey değil Compact Edition.
Karşınızda SQL Express LocalDB!
Evet, yepyeni bir SQL sürümünden bahsediyoruz. Bugün SQL Express diğer SQL sürümleri ile bire bir uyumluluğa sahip olan ve çat diye yüksek sürümlere geçiş yapabileceğiniz ücretsiz bir ürün. Fakat SQL Express büyük abilerinden sadece uyumluluk vs konularını miras almıyor :) bir bilgisayara yüklenme ve kullanım şekli açısından da tüm süreçler bire bir aynı. Oysa bizim belki daha taşınabilir olan fakat SQL'in diğer sürümleri ile de bire bir uyumlu bir veritabanı sunucusuna ihtiyacımız var. Kolaylıkla yüklenebilen, kullanılabilen ve konfigüre edilebilen minik, ufak, tam özellikli bir SQL :)
SQL 2012 serisi ile beraber gelecek olan SQL 2012 Express LocalDB kendi başına toplam 33MB'lık bir MSI paketi ile geliyor. Sisteme kurulum sonrasında farklı uygulamalar sqlservr.exe'yi ayrı ayrı çalıştırabiliyorlar. Aslında süreç şöyle izliyor; herhangi bir uygulama localdb üzerinden bir instance adı ile kendi localDB instance'ını anında açabiliyor. Bu instance söz konusu uygulamanın hakları çerçevesinde işlem yapabilen ve bağlantı var oldukça ayakta kalan bir instance oluyor. Uygulamanız kapandığınıda o instance ve ilişkilendirimiş bellekteki sqlservr.exe kopyası kaldırılıyor. Uygulamanın hakları ile ilerlendiği için uygulamanın erişebildiği herhangi bir yerde DB yaratılabiliyor ve var olan bir DB yeni yaratılan bir instance'a direk ataçlanarak kullanılabiliyor. Hızlı deployment için ve pratik kullanım için süper özellikle dekstop uygulamalarının arkasına alınabilecek süper bir yapıdan bahsediyoruz. LocalDB kurulumunda sisteme herhangi bir servis vs kurulmuyor. Herşey kendinize özel açtığınız sqlservr.exe kopyası ile halloluyor.
İsterseniz şimdi gelin minik bir test yapalım. İlk olarak makinenize aşağıdaki adresten SQL Server 2012 Express RC0'i indirerek içinden LocalDB'yi yükleyin.
Kurulumu tamamladıktan sonra tavsiyem SQL Server Management Studio Express'i de indirmeniz ki Management Studio üzerinden de localDB'ye bağlanarak test yapabilelim.
SQL 2012 Express LocalDB bağlantısı.
LocalDB bağlantısı yapabilmek için direk server adresini (localdb) ile başlatmanız gerekiyor. Sonrasında istediğiniz instance'ın adını verebiliyorsunuz. Bir instance yaratmanın iki yöntemi var. LocalDB yüklemesi ile beraber gelen Command Prompt uygulamasına aşağıdaki gibi bir komut gönderirseniz istediğiniz instance çat diye yaratılıyor :)
Açılan her instance için kullanıcı klasöründe bir ek klasör yaratılarak sunucunun ayağa kalkması için gerekli herşey oraya yerleştiriliyor. Buna master, model, tempdb dahil. Tabi tüm bu işlemlerim bir saniyeden kısa bir sürede gerçekleştiğini de unutmamak gerek :)
Örnek bir LocalDB Instance'ı.
Yukarda örnek bir SQL Instance'ın dosyalarını görüyorsunuz. Tüm Instance'lar adres bilgisinde de görebileceğiniz Instances klasörüne yerleştiriliyor. Eğer instance yaratmak istemezseniz tabi ki default instance olarak gelen "(localdb)\v11.0" instance'ı da kullanabilirsiniz.
İki LocalDB Instance'ı ve iki tane sqlservr.exe sahnede.
Yukarda yaratılmış iki instance ve her instance için yaratılan processleri Task Manager'da görebilirsiniz. Bu Instance'lara air prosesler ilk erişimde ayağa kaldırılıyor.
Normal uygulamarınızda LocalDB'ye ulaşmak için ekstra birşey yapmanız gerekmiyor. .NET 4.0 için buradan bir Patch mevcut. Bu patchin yüklü olması yeterli. .NET 4.5'te ise direk destek geliyor ve connection string değiştirmek dışında birşey yapmanıza gerek kalmıyor.
Aklınıza gelebilecek sorulardan ilki "SQL Express artık yok mu?" sorusu olabilir. SQL Express kesinlikle devam edecek. LocalDB çok daha farklı bir ihtiyacı gideriyor esasında. Diğer karşılaştırabileceğimiz ürün ise SQL Compact Edition. Bu noktada ise SQL LocalDB'nin SP, farklı data tipleri desteği gibi konularda öne çıktığı açık. Diğer yandan mimari açıdan da SQLCE in-proc takılırken LocalDB ayrı process olarak geliyor ve 4MB'lık SQLCE'yi 130 MB'lık yüklenme alanı ihtiyacı ile kat kat katlıyor :)
Bu makalede SQL Server 2012 Express RC0 LocalDB, SQL Server 2012 Management Studio RC0 ve Windows 8 Developer Preview Build 8102 kullanılmıştır.