Contained Database Nedir

2 Eyl by NURULLAH ÇAKIR

Contained Database Nedir

Loginleri başka bir instance’a taşımak makalemizde Contained Database’e değindik. Contained Database, veritabanının diğer veritabanlarından ve instance’dan ayrı olmasıdır. Instance seviyesinde oluşturduğumuz loginleri veritabanını user mapping ile map etmemize gerek kalmıyor. Ya da veritabanını başka bir instance’a taşıdığımızda loginleri de taşımamıza gerek kalmıyor. Ayrıca veritabanlarını contained yapıya dönüştürdüğümüzde loginlerin kendilerine ait olmayan veritabanlarını görme sorunu da çözülmüş oluyor. Contained database nasıl oluşturulur ve mevcut kullandığımız bir veritabanı nasıl contained yapıya dönüştürülür bunu inceliyor olacağız.

 

Contained Database oluşturmak:

 

Öncelikle aşağıdaki script yardımıyla instance seviyesinde contained database oluşturabilmemizi sağlayan bir konfigurasyon yapmamız gerekiyor. Script’i bölümlere ayırdım. Bunları sırayla parça parça çalıştırmanız gerekiyor.

USE master
GO
sp_configure 'show advanced options',1
reconfigure
-----------------------------------------------------------------------------
sp_configure 'contained database authentication',1
reconfigure
-----------------------------------------------------------------------------
sp_configure 'show advanced options',0
reconfigure

 

Daha sonra Contained Database’imizi oluşturuyoruz. Veritabanı Oluşturmak isimli makalemde anlattığım gibi ihtiyacınıza göre veritabanınızı tasarlayabilirsiniz. Tek fark olarak aşağıdaki resimde görüldüğü gibi Options sekmesindeki Containment Type ‘ı Partial olarak set etmeniz gerekiyor.

 

 

Contained Database’e bağlanacak bir user oluşturmamız gerekiyor. SSMS üzerinde oluşturduğunuz veritabanının altındaki security tab’ından Users’a sağ tıklayarak new user diyoruz. Aşağıdaki ekranlardaki gibi gerekli bilgilerin girişini yapıyoruz. Owned_schemas kısmından db_owner database role’ünü verdik. Siz isterseniz daha spesifik bir rol tanımlayabilirsiniz.

 

 

ContainedDB isminde Contained Database’i ve ContainedDBUser isminde User’ını oluşturduk. Dikkat edin server seviyesinde bir login oluşturmadık. Sadece veritabanı altında bir user oluşturduk ve herhangi bir map işlemi yapmadık. Direk veritabanı altındaki owned schemas kısmında db role tanımladık.

 

Backup restore yöntemiyle veritabanımızı başka bir instance’ a taşıyalım. Taşıdığımız instance üzerinde de makalenin başında yaptığımız konfigurasyonu yapmamız gerektiğini unutmayın. Ve oluşturduğumuz ContainedDBUser’ı o instance üzerinde login olarak tanımlamadan SSMS ile bağlanmaya çalışalım.

 

Aşağıda gördüğünüz gibi Login failed for user hatası aldık.

 

 

Peki Contained Database’i başka bir instance’a taşıdığımızda login’leri taşımayacağımızı söyledik. Burada neden login failed hatası alıyoruz diye düşünebilirsiniz. Şimdi birde aşağıdaki gibi bağlantı ekranındaki Connection Properties’e tıklayarak Connect to database kısmına ContainedDB yazıp Connect’e tıklamayı deneyin.

 

 

Mevcut Login’lerinizi uygulamada kesinti olmadan Contained User’a dönüştürmek için “Login’leri Contained Database Üzerine Taşımak” isimli makaleyi okumanızı tavsiye ederim.

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir