Category Archives: MS SQL Server

SQL Server Database Mirroring Failover ve Failback Senaryoları

SQL Server üzerinde Database Mirroring yapılandırmasına daha önceki makalemde değinmiştim.

http://www.ortacdemirel.com/sql-server-database-mirroring-yapilandirilmasi

Database Mirroring kurulumu ve yapılandırılması bittikten sonra sıra geldi sunucular için Failover ve Failback testlerini yapmaya. Bu testlerde principal ve mirror sunucular arasında geçiş, principal sunucu kaybedildiğinde mirror sunucu üzerinden veri tabanına erişme ve son olarak principal tekrar ayağa kalktığında database mirroring i eski haline getirme işlemlerine değineceğim.

Yapımızda iki adet sql sunucu bulunmaktadır. SQLServer1 principal sunucu iken SQLServer2 mirror sunucudur.

SQLServer1 üzerinden veri tabanımıza erişebilmekteyiz. Veri tabanımızın yanında Principal,Synchronized yazmaktadır.

 

SQLServer2 üzerinden veri tabanımıza erişemiyoruz. Veri tabanımızın yanında Mirror,synchronized,restoring yazmaktadır.

 

SQL Server Database Mirroring Yapılandırılması

SQL Server da  yüksel erişebilirlik ( High Availability) teknolojilerinden biri olan Database Mirroring veri tabanı seviyesinde yapılan bir uygulamadır.

Bu uygulama sayesinde veri tabanlarımızı yapımızdaki ikinci bir SQL server üzerinde barındırabilir, veritabanı değişikliklerin  sürekli olarak diğer sunucu üzerine replike edilmesini sağlayabilir ve asıl sunucumuzda bir problem çıktığında farklı SQL server dan veri tabanımıza erişmemiz sağlanabilir.

Database Mirroring uygulamasında asıl sunucuya Principal server denir. Principal server ın veri tabanını yedeklediği karşı sunucuya ise Mirror server denmektedir.

Database Mirroring özelliğini kullanmadan önce yapınızda yer alan SQL server lar da bir takım ön gereksinimleri tamamlamanız gerekmektedir. Bunlar:

  • Database Mirroring yapılandırılması yapacak kullanıcı domain ve sql server seviyesinde yönetici olmalıdır.
  • Principal ve Mirror sunucular mutlaka domainde yer almalıdırlar.
  • Her iki sunucuda da sql servis hesapları domain hesaplarına atanmalıdırlar. Aynı hesapları kullanabilirsiniz.
  • İki sunucuda da aynı sürüm SQL server yüklü olmalıdır.
  • İki sunucu arasında 5022 portunu ve sql server ın kullandığı standart portları

 

SQL Server’da Yetkisiz Kullanıcılardan Tablo İsimlerini Gizlemek

SQL Server’da yetkisi olmayan kullanıcılardan veri tabanı isimlerini gizlediğimiz gibi tablo isimlerini de gizleyebiliriz. Böylelikle sql server a oturum açan kullanıcılar sadece yetkili oldukları tabloları görebilirler.

Tablo isimlerini gizlemek için öncelikle kullanıcımızı veri tabanımıza ekliyoruz ve db_owner dışında okuma yazma gibi yetkiler veriyoruz.

 

Ardından görmesini istemediğimiz tablonun üzerine sağ tıklayarak özelliklerine giriyoruz.

 

“Permissions” bölümünden kullanıcımızı seçip “View Definition” iznine “Deny” yani yasaklamak yetkisi veriyoruz.

 

Bu aşamadan sonra sql server a oturum açan kullanıcımız sadece yetkili olduğu tabloları görecektir.

Veritabanını Restoring State’den Çıkarma

SQL server da veri tabanı çeşitli sebeplerden dolayı “restoring state” e geçebilir.

Bu durumlar; yedekten geri dönmek istediğimizde “back up the tail log, and leave database in the restoring state” seçeneği ile log yedeği almış olabiliriz, farklı sunucular arasında veri aktarması yaparken hedef sunucudaki veri tabanı restoring state durumunda kalmış olabilir ya da mirroring gibi uygulamalarda veri tabanımız gene bu konumda kalmış olabilir.

Restoring state duruma geçen veri tabanı yukarda örneğini vermiş olduğum durumlar tamamlana kadar konumunu korur. Örneğin yedekten dönme işlemi tamamlanınca eski haline gelir.

Bazı durumlarda veri tabanı restoring state konumundan çıkamaz.

Bu tür durumlarda aşağıdaki sorguyu çalıştırmamız veri tabanının eski haline gelmesini sağlayabilir.

RESTORE DATABASE <veri tabanı ismi>

WITH RECOVERY

Veri tabanımız eski haline gelecektir.

Microsoft SQL Server’da Yetkisiz Kullanıcılardan Veritabanı İsimlerini Gizlemek

Microsoft SQL Server’da varsayılan olarak izinler iki bölümden oluşmaktadır. Oturum açma izni ve veritabanı izinleri. Oturum izinlerinde kullanıcı MS SQL Server yönetim aracı ile oturum açar fakat bir veri tabanında işlem yapamaz. Veri tabanı izinleri ile de oturum açan kullanıcılara yönetecekleri veritabanları için okuma, yazma, sahiplik gibi birçok yetki verilir.

Kullanıcıya oturum açma izni ve yöneteceği veritabanı için izin verildiğinde kullanıcı izni olmayan veritabanlarını da görür. Bu veritabanların da herhangi bir işlem yapamaz fakat gene de isimlerini görebilir.

Kullanıcıların yetkisiz oldukları veritabanlarının isimlerini görmelerini engellemek istiyorsanız aşağıdaki metotları uygulayabilirsiniz.

Birinci metot:

Kullanıcımızı sunucu güvenliği bölümünden ekliyoruz.

Oracle Veritabanın’dan MS SQL Server’a Geçiş (Migration)

 

Oracle veritabanımız içerisinde yer alan tabloları rahatlıkla MS SQL server’ımıza aktarabiliriz. Bu işlem için Microsoft’un güzel bir aracı bulunmaktadır: Migration Assistant for Oracle. Bu aracı aşağıdaki bağlantıdan indirebilirsiniz.

http://www.microsoft.com/en-us/download/details.aspx?id=42655