SQL Server 2011 Denali – Contained Database User
Bir önceki makalemde SQL Server 2011 Denali gelen çok önemli özelliklerden biri olan Contained Database mantığından bahsetmiştim. Bugünkü yazımda ise Database Engine’den izole bir Contained Database User’ı nasıl oluşturup kullanabileceğimizi görüyor olacağız.
Contained Database’in ne olduğunu tekrar hatırlatmak gerekirse; Contained Database veritabanının tanımlanması için gerekli olan bütün metadata bilgilerini ve veritabanı özelliklerini kendi üzerinde tutar. Bu tarz veritabanlarında login’ler database engine level’ında authenticate olmazlar. User bilgileri istenirse şifresi ile birlikte veritabanı içerisinde saklanır. Bu şekilde database engine’den izole edilmiş olan veritabanı, sunucular arasında çok rahat bir şekilde taşınır ve ekstra yapılacak işlem sayısı çok aza indirilir.
Contained Database Kullanıcı (User) Oluşturma
Contained Database’lerde user oluşturma ekranında diğer veritabanlarından farklı olarak “SQL User with password” seçeneği bulunmaktadır. Bu seçenek vasıtasıyla database engine’den bağımsız ve authentication’ı veritabanının yapacağı bir user oluşturmuş oluruz.

Aynı işlemi T-SQL ile şu şekilde yapabiliriz.
USE [SampleDB1]
GO
CREATE USER [CDBUser1] WITH PASSWORD=N'Abc12345'
GO
Contained Database User ile Bağlantı Kurma
Contained Database User’lar database engine seviyesinde değil veritabanı seviyesinde tanımlanırlar dedik. Yani bu user’lar sadece tanımlandıkları veritabanına bağlantı kurabilirler. Dolayısıyla SSMS ile bağlantı kurarken Connect To Database kısmında ilgili veritabanının seçilmesi gerekmektedir yoksa bağlantı kurulamaz. Aşağıdaki resimlerde bağlantıyı nasıl kurabileceğini görebilirsiniz.


Bugünkü yazımızda database engine’den bağımsız bir contained database user’ın nasıl oluşturulabileceğini gördük. Tekrar not düşmek gerekirse bu veritabanını başka bir sunucuya taşıdığınızda herhangi bir user oluşturma işlemi yapmadan direk bu user ile bağlanabilmeniz mümkün.