Bugün sizlere SQL
Server 2012 ile yeni gelen bir özellik olan Contained Database özelliğinden
bahsetmek istiyorum. Veritabanı yöneticileri için en önemli problemlerden
biriside veritabanlarını bir sistemden diğer sisteme taşınmasıdır. Bulut
bilişimin son derece revaçta olduğu bu dönemde bu taşıma işlemi gerçekten DBAler için problem
olmaktadır. Bu taşıma işlemi
backup-restore veya attach-detach kullanılarak gerçekleştirilir.
Bu taşıma işlemi
sırasında veriler taşınırken sistem seviyesindeki yapılandırmalar
aktarılamamaktadır. Contained database yeniliği ile sistem seviyesindeki
yapılandırmalarda taşınabilmektedir.
Bulut bilişimin
giderek revaçta olduğu günümüzde SQL Server taşıma işlemlerini kolaylaştırmak
için Contained Database özellliğini çıkartırken Oracle ise 12c ile birlikte
Multitenant teknolojisi çıkarmıştır.
Biz bu makalede
Oracle teknolojisi üzerine girmeyeceğiz sadece Sql Server 2012 ile gelen bir
özellik olan Contained Database teknolojisinden bahsedeceğiz.
Contained Database,
veritabanında sistemde tutulması gereken tüm yapılandırmanın veritabanı
üzerinde tutulduğu veritabanı modelidir.
Bütün metadata, yapılandırma ve security ayarları database üzerinde
tutulduğu için sunucu bağımlılığı yoktur. Bu sebeble Contained Veritabanları
bir sunucudan başka bir sunucuya kolaylıkla ve problemsiz olarak taşınabilir.
Contained Database
özelliğini kullanabilmemiz için bu özelliğin aktif hale getirilmesi
gerekmektedir. Bu işlem için T-SQL kodlarını kullandığımız gibi Sql Server
Management Studio kullanabiliriz.
Yukarıdaki ekranda
Contained Database nasıl aktif hale getirildiği T-SQL kodu kullanılarak yaptık.
Burada öncelikle Contained Database özelliği advanced bir özellik olduğu için
advanced options özelliğini aktif hale getiriyoruz. Daha sonra Contained Database
Authentication True hale getiriyoruz. Ve son olarak show advanced options
seçeneği pasif hale getiriyoruz.
Bu işlemi yukarıdaki
ekranda gösterildiği gibi SSMS ile de yapabilmekteyiz. Properties ekranını
kullanarak Enable Contained Database
özelliğini TRUE yapabiliyoruz.
Yukarıdaki işlemler
sayesinde Server seviyesinde Contained Database özelliğini aktif ettik.
Contained bir veritabanı oluşturmak için 2 yöntem kullanmaktayız. Birinci
yöntem T-SQL komutu kullanarak oluşturmak ikinci yöntem ise SSMS kullanılarak.
T-SQL Kullanarak
Contained Database oluşturma işlemi aşağıdaki gibidir.
SSMS
kullanılarak oluşturmak için ise
Database oluşturulduktan sonra Containment Type özelliği None'dan Partial
olarak değişitirilerek yapılabilir. Bunun için Database Properties -Options
kısmında Containment Type seçerek yapabiliriz.
Mevcut bir
veritabanını ise aşağıdaki T-SQL komutu kullanarak Contained veri tabanı
durumuna getirebiliriz.
Contained
Databaselerde veritabanlarına ait özellikler ve metadata bilgileri Database
Engine seviyesinde tutulmazlar. Database üzerinde bulunurlar. Bu nedenle
oluşturacağımız kullanıcıları veritabanı seviyesinde oluşturmamız gerekir.