30 Ocak 2014 Perşembe

Hex kodundan SQL Server Agent Job adını bulma

Çoğu SQL Server veritabanı yöneticisinin aşağıdaki gibi bir görüntüyle gerek sys.dm_exec_requests, gerek master..sysprocesses ve gerekse 3. parti uygulamalarla çalışan işlemleri kontrol ederken karşılaştığına eminim.


Bunu gördüğümüzde tabii ki ilk bakışta bunun SQL Server Agent ile çalıştırılan bir Job'ın Step 1 isimli adımı olduğunu anlıyoruz. Fakat bu Job'ın adı nedir? Nasıl buluruz? Kolay bir yolu var!

Aşağıdaki ekran görüntüsünden de görebileceğiniz gibi doğrudan msdb veritabanındaki sysjobs tablosundaki job_id alanını sorgulayarak elinizde Hex kodu olan Job'ın ayrıntılarına ulaşabilirsiniz.


Kolay gelsin!
Ekrem Önsoy

15 Ocak 2014 Çarşamba

İpucu: Güç Yönetimi

Bugün Glen Berry'nin bir kursunu izlerken gördüm ve sizlerle de paylaşmak istedim. Glen Berry, özellikle SQL Server OLTP sistemleri için Windows Server düzeyindeki Control Panel'daki Power Options planlarının çok kritik olmasından bahsediyor. Varsayılan Power Options planı Balanced, fakat SQL Server OLTP sistemler için seçili olması gereken plan High Performance planıymış. Glen, bu değişiklikle işlemciye göre %15 - %25 arası performans iyileşmesi gördüğünü kaydediyor.



Ayrıca, eğer fiziksel sunucunuzun BIOS'una erişebiliyorsanız Glen oradaki Power Management ayarının da OS Control veya Disabled olarak işaretlenmesini tavsiye ediyor.



Muhakkak denemeye değer! Bu değişiklik hakkındaki tecrübelerinizi benimle de paylaşırsanız çok sevinirim.

Ekrem Önsoy

13 Ocak 2014 Pazartesi

Bir Transactional replikasyona yeniden tüm Article'lar için Snapshot oluşturmadan Article eklemek


Bu sefer sizinle kısa da olsa önemli olduğunu düşündüğüm bu konuyu paylaşmak istiyorum. Replikasyon modelleri arasında Transactional Replication en çok kullandığım ve kullanıldığını gördüğüm model. Burada Transactional Replication'ın nasıl kurulduğundan veya çalıştığından değil, ama kurulduktan sonra nasıl tüm Publication'daki Article'lar için Snapshot oluşturulmadan yeni Article (yani bir tablo gibi yeni bir nesne) eklenebileceğini anlatacağım. Bu noktada, Transactional Replication ve terimleri konusunda bilgi sahibi olduğunuzu varsayıyorum.

Transactional Replication'ı genelde arayüzden kuruyoruz. Bu kurulum sırasında New Publication Wizard'taki Snapshot Agent penceresindeki "Create a snapshot immediately and keep the snapshot available to initialize subscriptions" isimli seçeneği, kurulumu hemen tamamlamak için çoğu zaman işaretliyoruz. Fakat bu seçeneğin işaretlenmesi yüzünden, oluşturduğumuz bu Publication'a her yeni Article eklemek istediğimizde Snapshot tüm Article'lar için oluşturuluyor. Bu da hem Publication'ı oluşturduğumuz kaynak veritabanında daha çok Blocking ve işlem yükü, hem de hedef sunucudaki replike edilen veritabanında daha fazla kesinti olacağı anlamına gelir.

Eğer siz de Transactional Replication kurulumunuz esnasında  "Create a snapshot immediately and keep the snapshot available to initialize subscriptions" seçeneğini işaretlediyseniz aşağıdaki komutu replike edilen veritabanında çalıştırdığınızda aşağıdaki ekran görüntüsündeki gibi "immediate_sync" seçeneğini 0 olarak değil 1 olarak göreceksiniz.

EXEC sp_helppublication @publication = 'Publication adı'


Bu durumu engellemek ve Snapshot'ın sadece eklediğimiz yeni Article'lar için oluşturulmasını sağlamak için "immediate_sync" seçeneğine ek olarak "allow_anonymous" seçeneğini de FALSE duruma getirmemiz gerekiyor. Bunun için yine replike edilen kaynak veritabanında aşağıdaki komutları çalıştırmanız yeterlidir.

EXEC sp_changepublication
@publication = '',
@property = 'allow_anonymous', @value = 'False'

EXEC sp_changepublication
@publication = '',
@property = 'immediate_sync', @value = 'False'

Bu komutları çalıştırdıktan sonra tekrar aşağıdaki komutu çalıştırdığınızda bu sefer bu iki parametrenin değerlerini de yukarıdaki ekran görüntüsündeki gibi 0 (FALSE) olarak göreceksiniz.

EXEC sp_helppublication @publication = 'Publication adı'

Artık kaynak veritabanından yeni bir ArticlePublication'a ekleyip hedef sunucuya da replikasyon ile aktarmak için tüm Article'lar için Snapshot oluşturulması ve Reinitialization işlemi yapmanıza gerek kalmadı! Sadece eklemek istediğiniz ArticlePublication'a ister SSMS arayüzünden ister T-SQL komutuyla ekleyin ve Snapshot Agent'ı çalıştırın. Snapshot Agent'ı çalıştırdığınızda göreceğiniz gibi sadece eklediğiniz Article'lar için Script'ler oluşturulacak ve kuyrukta bekleyen replike edilecek Transaction yoksa hemen bu Script'ler hedef veritabanında da uygulanacaktır.

Not: Bazı terimleri kasti olarak size kolaylık sağlaması açısından Türkçeye çevirmedim, bu bir edebi yazı değil, teknik bir makale ve bu terimler bu uygulamayı yaparken her yerde karşınıza çıkacak olan terimlerdir.

Kolay gelsin!
Ekrem Önsoy