6 Kasım 2013 Çarşamba

SSMS 2012'de olası bir BUG?


Selam arkadaşlar,

Ortamlardan birinde Log Shipping uyguluyoruz ve T-Log yedeklerinin Restore edildiği hedef sunucudaki veritabanlarının durumlarının yanlış göründüğünü gözlemledim. Ekran görüntüsü aşağıda.


Ekran görüntüsünden de görebileceğiniz üzere, bu makinede 2 tane Log Shipping ile aktarılan veritabanı mevcut. İlki, yani "Standby / Read-Only" durumunda olan beklendiği gibi, gri veritabanı simgesi ile gösteriliyor; fakat diğerinin yanında "Restoring... / Standby / Read-Only" yazacağına sadece "Standby" yazıyor ve veritabanı simgesi de sarı renk, sanki Log Shipping ile aktarılan bir veritabanı değil gibi.

Örneğin bir işlem yapmaya kalktığımda, bekleneceği gibi aşağıdaki hatayı veriyor:


Msg 927, Level 14, State 6, Line 1
Database '' cannot be opened. It is in the middle of a restore.
Msg 8985, Level 16, State 1, Line 1
Could not locate file '' for database 'master' in sys.database_files. The file either does not exist, or was dropped. 


Böyle bir davranışı önceki versiyonlarda görmemiştim. Böyle bir şey sizin dikkatinizi çekti mi hiç?

Ekrem Önsoy

24 Ekim 2013 Perşembe

Red-Gate Deployment Manager v2.2.20.10 için izlenimlerim

Selam arkadaşlar,

RedGate, Deployment Manager ürünü için -en azından beni- oldukça tatmin eden bir dokümantasyon hazırlamış. Bu nedenle burada tek tek nasıl kurulur ve kullanılırı anlatmayacağım. Bu bilgiler için şu adrese uğrayabilirsiniz:

http://documentation.red-gate.com/display/DM2/Deployment+Manager+2+documentation

Bununla birlikte, size bu ürün nedir, niçin kullanmak istersiniz gibi bilgileri aktarmakta fayda görüyorum.

Nedir?
Şirketimizdeki üretim sunucularıyla kod geliştirme işlemleri yapılan sunucuları ayırma çalışmalarımız devam ediyor. Temel olarak yapılması istenen, yazılımcıların üretim veritabanı sunucusunda doğrudan kod geliştirme işlemi yapmaması, bunun yerine geliştirme sunucularında çalışması ve testlerden sonra değişikliklerin üretim sunucusuna Taşıma Sorumlusu tarafından taşınması. Haliyle ben de bu projenin veritabanı tarafıyla ilgileniyorum. Önceden bir özel bankada çalışırken, bu iş Beamer adı verilen bir firmanın IT ekibi tarafından yazılan uygulama ile yapılıyordu. Uygulama oldukça başarılı olduğundan dolayı, başka bankalara da satılıyordu. Fakat bizim şu anki ortamımız o kadar büyük değil, bu nedenle maliyet açısından bu uygulama bizim için doğru bir seçim olmazdı. Bize daha ziyade ya kişiselleştirilmiş bir çözüm ya da bir paket program gerekiyordu. Bu kapsamda, bu işi en uygun maliyetle ve en pratik nasıl yaparız diye düşünürken, RedGate firmasının Deployment Manager isimli ürünüyle karşılaştım.

RedGate, Deployment Manager'ın Starter Edition'ı için bir ücret talep etmiyor. Maalesef henüz Edition'ların özelliklerinin karşılaştırıldığı bir listeye ait bir dokümantasyon bulamadım. RedGate Support'a bu talebimi ilettim. Fakat şimdiye kadar benim Starter Edition'a ait gördüğüm sınırlamalar şöyle:
- En fazla 5 tane Proje (Project) oluşturulabiliyor: Her farklı veritabanı için farklı proje oluşturmak gerekiyor.
- En fazla 5 tane Ajan (Agent) kurulabiliyor: Taşıma yapılacak her hedef makineye bir ajan kurulması gerekiyor.
- Takım çalışması hakkında bazı sınırlamalar.

Niçin?
Kod değişikliklerinin önce geliştirme sunucularında yapılması ve testlerin ardından üretim sunucusuna taşınması birçok sorunu önleyecektir. Ayrıca gerek şirket içindeki teftişler olsun, şirket dışındaki diğer firmalardan gelen teftişler olsun böyle bir yapıyı size dayatacaklardır. Aksi takdirde kritik veriler çok daha fazla kişi tarafından denetimsiz olarak erişilebiliyor olacaktır.

Sonuç
Ben kendi test makinelerimde kurulumları ve testleri yaptım. Gayet iyi çalıştığını gözlemledim. Şimdi yazılımcı arkadaşlarımla da test edeceğim. Ardından eğer başka izlenimlerim olursa onları da paylaşıyor olurum.


Ekrem Önsoy


7 Ekim 2013 Pazartesi

ApexSQL Comply v2013.01.114 izlenimlerim

Selam millet!

Takip edenler az çok bilecektir, bu aralar gerek şirket için gerekse şirket dışı teftişleri için kullanmak üzere "Compliance" / "DAM (Database Activity Monitoring)" kategorisinde olan ürünler konusunda çalışıyorum.

Çok temel olarak bahsetmek gerekirse, DAM ürünlerinin birçok çeşidi var. İzlenecek sunuculara ajanlar kurularak çalışanlar, Network'ü izleyenler gibi. IBM'in Guardium'u; Imperva'nın SecureSphere'i gibi dünya çapında çok bilinen ve maliyetleri ve yetenekleri nedeniyle genelde büyük şirketler tarafından kullanılan ürünler var. Bunların yanında, Idera, ApexSQL gibi firmaların da geliştirdikleri, çok daha uygun fiyatlarla satın alabileceğiniz, sınırlı ihtiyaçlara cevap verebilecek küçük çözümler var.

Idera'nın SQL Compliance Manager ürününden ve Idera firmasından önceki yazılarımda bahsetmiştim. Bununla birlikte, geçen Cumartesi günü Microsoft Türkiye'nin İstanbul'daki merkez ofisinde gerçekleştirilen SQLSaturday (#258) etkinliğinde Idera firmasından Mehmet Taluk ve adını şu anda hatırlayamadığım başka bir Avusturyalı arkadaşla Idera ile yaşadığım sorunu tekrar ve yüzyüze konuşma fırsatı da buldum. Bu arkadaşlar gayet dost canlısı ve yardımsever olsalarda, yaşanılan sorun olduğu gibi yerinde duruyor.

Bugün, SQL Server için birçok ürün geliştiren ApexSQL firmasının geliştirdiği yeni bir ürün olan ApexSQL Comply ürününü deneme fırsatım oldu. Bu yazımda size ürün hakkındaki ilk izlenimlerimi anlatıyor olacağım. Eğer denememi devam ettirebilirsem, o zaman daha uzun süreli olan o deneyimlerimden de bahsetme fırsatı bulabilirim belki.

Ürün temel olarak 2 parçadan oluşuyor. Birinci parçası, izlenecek olan SQL Server Instance'larından toparlanacak olan verinin nerede saklanacağı ile ilgili. Adı "ApexSQL Comply central repository". Önce bunun kurulumunu yapmak gerekiyor. Daha sonra da izlenecek olan Instance'lar için "ApexSQL Comply distributed manager" uygulamasının kurulumu yapılmalı. Aksi takdirde izleme işlemine başlanamaz.




"ApexSQL Comply central repository" uygulamasını kurarken IIS6/7 ve .Net konusunda bazı eksiklerim olduğunu ve bu nedenle de Web Console'unu kuramayacağını söyledi. Ben de en azından kurabildiği kısmını görebilmek için kurulumu devam ettirdim. Bu nedenle en azından şu anda Web Console'unun neye benzediğini bilemiyorum. Fakat belli ki, raporlama vs. gibi işler için kullanılıyor.

"ApexSQL Comply" ile SELECT, DML, DDL işlemlerini hem Instance hem de veritabanı bazında izleyebiliyoruz.



Yukarıdaki ekran görüntüsünden de göreceğiniz üzere, sol tarafta veritabanlarımızın listesi var (oranın da solunda Instance'ların listesi var) ve seçtiğimiz veritabanında Tablo olsun, Stored Procedure olsun hangi nesneler için hangi işlemlerin (DDL, DML, Query/SELECT vd.) izlenebileceğini seçebiliyoruz. Bu noktada benim gördüğüm bir eksik var ki, bir tablonun alanı bazında izleme yapılamıyor. Bir tabloyu ya komple izleyebiliyor ya da hiç izleyemiyor. Bana göre bu bir eksi. Çünkü çok büyük tablolarda sadece gereken/hassas alanların izlenmesi disk ve bu veriye bağlı işlemlerin performansı açasından önemli.

Teftiş açısından en önemli şeylerden biri olan toplanan verinin değiştirilip değiştirilmediğine dair olan ispat gerekliliği ise "Verify Audit Integrity / Data integrity verification" denilen bir işlev ile sağlanıyor. Bu işlevin ne kadar verimli ve hızlı çalıştığını şu anda bilemiyorum, çünkü henüz yeterince veri birikmiş değil. Bu işlevi de test etmeyi istiyorum.




Idera Compliance Manager 4.2 (CM) ile özellik olarak karşılaştırıldığında (CM'in "before-after", sensitive columns, alarm ayarlama, olay filtreleme gibi özellikleri Comply'da yok) CM daha gelişmiş görünüyor. Bununla birlikte, ApexSQL Comply daha yeni bir ürün. Eminim zaman içerisinde yeni özellikler de eklenecektir.

Bununla birlikte, Idera CM için 3.500$ civarında bir ödeme yapmıştık. ApexSQL ise Comply için 1 senelik abonelik dahil 999$ istiyor. Abonelik, 1 sene boyunca ApexSQL personelinden destek almak ve yeni çıkan güncellemeleri yükleme hakkı veriyor. Aboneliği 3 senelik almak isterseniz de 1.499$'a geliyor.

Şimdilik ApexSQL Comply hakkındaki haberlerim bu kadar. Umarım sonra devamını da sizlerle paylaşacağım.

Ekrem Önsoy

2 Ekim 2013 Çarşamba

"Unable to create a restore plan due to break in the LSN chain"

HATA:
Unable to create a restore plan due to break in the LSN chain.


AÇIKLAMA:
SQL Server Management Studio 2012 arayüzü ile NORECOVERY modunda "Full Database Restore" işlemi yaptıktan sonra bir de "Differential Database Restore" işlemi yapmak isterseniz bu hata ile karşılaşabilirsiniz.

Sorunu araştırırken Connect'te bu konuda açılmış ve sonra da "düzeltildi" denilerek kapatılmış bir kayıt gördüm. Fakat belli ki sorun düzeltilmemiş. Çünkü benim bu sorunu yaşadığım ortamdaki SQL Server'ın versiyonu 2012 RTM + SP1 idi. Eğer SP1'den sonra CU'larla düzeltildiyse onu bilemiyorum tabii.

ÇÖZÜM:
Sorunu Restore işlemini T-SQL koduyla yaparak aşabildim. 

20 Eylül 2013 Cuma

Idera SQL Compliance Manager - Deneyim 4

Selamlar!

Bu uygulama ve Idera firması beni ziyadesiyle yordu, siz de yorulmayın diye SQL Compliance Manager ile ilgili yaşadığım tecrübeleri aktarmaya devam ediyorum.

Bir önceki yazımda sizlere SQL Compliance Manager uygulamasının Integrity Check özelliğinden kısaca bahsetmiştim. Bu uygulamayı alırken, bu özelliği özellikle dikkate aldım. Çünkü önceden bankalar için ve/veya bankalarla ve teftişleriyle çalışmıştım. Bir gün birilerinin "iyi, güzel, siz kritik işlemleri kayıt altına alıyorsunuz; fakat bu kayıt altına alınan verileri birilerinin değiştirmediğini nasıl garanti ediyorsunuz?" sorusunu soracağından adım gibi emindim. Zira, gün geldi ve bu soru soruldu. Tabii ki hemen Integrity Check işlevinden faydalanmak istedim ve çalıştırdım. Ne oldu dersiniz? Günler geçti ve işlem sonunda zaman aşımına uğradı. Tekrar ve tekrar sorun devam etti.

Tabii ki Case açtım hemen, Haziran ayında. İlkten bir şey üretemedi Support ekibi. Zaman aşımı ve Blocking kaynaklı olası bir sorunu düşünerek SQL Server tarafında bazı ayarlamalar yaptım. Bu olası sorunları da eledikten sonra Idera Support ne istediyse yardımcı oldum kendilerine. 3 ay süren ve daha geçen gün sonuçlanan bu Case nedeniyle öncelikle Idera'yı bol bol kutladım. Kendilerine "sevgi dolu" postalar gönderdim. Sonunda bana ne dediler dersiniz? Integrity Check özelliğinin kullanımı için 20GB'lık bir veritabanı öneriyoruz dediler. Yani bunun üstündeki bir veritabanında Integrity Check işlevinin çalışırlığına garanti veremiyorlar. Biz ise sadece 2 tabloyu SELECT ve DML işlemleri için Audit ediyoruz; diğer takip edilen şeyler ise DLL ve güvenlik ile ilgili; ki firmamız bir banka falan da değil. Sırf bu şekilde aylık 370GB'lık veri birikiyor! 20GB nerede, 370GB nerede. Hem de bu 370GB, sadece BİR ayda biriken veri. Diğerleri zaten arşivleniyor. Yani bırakın arşivlenen veriyi, 1 aylık veri için bile Integrity Check işlevi kullanılamıyor. Gelin de durumu çalıştığınız kurumların teftişlerine açıklayın?

Bu tür uygulamalar için Integrity Check işlevi olmazsa olmazdır. Eğer bu özellik olmazsa, biriktirdiğiniz verinin hiçbir anlamı yoktur. Ben de bu uygulamayı bu özellik nedeniyle tavsiye etmiştim bizim yönetime. Ve tahmin edin! Ne Idera'nın Web sitesinde ne de hiçbir dokümantasyonda "20GB" gibi "tavsiye edilen" bir kısıtlamadan bahsedilmiyor! 3 ay süren bir Case'den sonra ancak bu sonuca ulaşabiliyorsunuz!

Tabii ki bu noktada biz artık farklı bir arayışa geçeceğiz. Belki sonraki bir yazımda da bundan bahsederim.

Ekrem Önsoy - DBA

5 Ağustos 2013 Pazartesi

Idera SQL Compliance Manager - Deneyim 3

Selam!

Bu ürün ile bunca deneyimden sonra rahatça söyleyebilirim ki, bu ürün "yeterince meşgul" sistemler için kesinlikle uygun bir ürün değil!

"Yeterince meşgul"ü nasıl tanımlayacağım konusunda emin değilim, fakat şöyle bir veri paylaşabilirim; eğer SQL Compliance Manager ile takip ettiğiniz işlek tablonuzu hem DML  hem de SELECT işlemleri için takip ediyorsanız, veritabanında bulunan diğer tabloları da DML işlemleri için takip ediyorsanız ve biriken aylık veri 220GB boyutunda ise; o zaman hem arşivleme konusunda, hem de Integrity Check gibi konularda büyük sıkıntılar yaşayabilirsiniz.

Arşivleme ile kastettiğim, örneğin bir aydan daha yaşlı olan biriken verileri arşivlemek isteyip, arşivlenen veritabanını da sıkıştırıp başka bir yere taşıyıp arşiv veritabanını silip yerden kazanmak isteyebilirsiniz.

Integrity Check ise, örneğin bir banka sizden SQL Compliance Manager ile toparlanan verinin değiştirilip değiştirilmediğinin garantisini isterse çalıştırıp verinin değişmediğini kanıtlayabileceğiniz bir işlevdir.

SQL Compliance Manager ile izleyip 200 - 250GB boyutunda biriken aylık bir veriniz varsa, o zaman arşivleme ve Integrity Check ile başınızın belaya girmesi işten bile değildir. Idera Support ile bu konuları çok konuştum. Maalesef bir sonuç elde edemiyorum.

Bunun yanında şunu da belirtmekte fayda var, SQL Compliance Manager'ın hedef sistemde çalışan Collection Service'inin RAM sınırlama ayarı yok. Bu nedenle örneğin sunucuda 32GB RAM varsa ve SQL Compliance Manager'ın işleyeceği çok veri birikmişse, o zaman SQL Compliance Manager 13GB'tan fazla RAM kullanmak isteyebiliyor. Bu da özellikle hedef sunucuda bir SQL Server Instance'ınız varsa, RAM savaşlarına neden olabiliyor. Idera Support'a sorduğumda, bu ürünün bir RAM üst sınır ayarlaması olmadığını belirttiler.

Özetle, bence SQL Compliance Manager, izlediğiniz veritabanındaki tablolardan toplanan veriler 50GB'ı aşmıyorsa uygun bir ürün olabilir. Aksi takdirde, ürünün bu halini kesinlikle önermiyorum.

Not: Benim kullandığım versiyon SQL Compliance Manager 4.3'dür.

9 Haziran 2013 Pazar

Idera SQL Compliance Manager - Deneyim 2

Selam!

Bu konudaki deneyimlerimi ürünü kullandıkça paylaşacağımı önceden de belirtmiştim, bu nedenle 2 aylık kullanımdan sonra bu konuda bir güncelleme yapmak istedim.

Özellikle uygulamanın arşivleme özelliği hakkında çok çektiğimi belirtmem şart! Biriken veri çok olunca, varsayılan SQLConnectionTimeout süresi kesinlikle yeterli gelmiyor ve arşivleme aşamasında arşivleme işi sürekli zaman aşımına uğruyor ve arşivleme kesintiye uğruyordu. Bu sorun için Case açtım ve sorun üstünde çalışmaya başladık. Sorunun başından beri kendilerine sorunun SQLConnectionTimeout Property'sinin değerinden kaynaklandığını düşündüğümü iletmeme rağmen, malum ilk erişim noktalarındaki insanlar genelde teknik bilgiye sahip olmadığından gereksiz yere uzadı sorunun çözümü. O arada, elle arşivleme işlemlerine devam etmek durumunda kaldım, çünkü veriler çığ gibi büyüyordu. Neyse ki 2 ayın sonunda SQLConnectionTimeout değerini nereden değiştirebileceğimi söylediler ve 3600 saniyeyi 2 saate çıkarıp sorunumu çözdüm.

Olur da yarın öbür gün sizin de başınıza gelirse, aşağıdaki yolu izleyerek sorununuzu çözebilirsiniz:

a) Regedit'i açın ve şuraya gidin: HKLM\Software\Idera\SQLcompliance\CollectionService\
b) Adı SqlCommandTimeout olan bir DWORD değeri yaratın

c) Buraya kaydedilen SQL komutu zaman aşımı süresi saniye ölçüsündedir. Varsayılan değer de 300 saniyedir. Örneğin bu süreyi 3600 saniyeye (1 saat) çıkarabilirsiniz.
d) Bu değişiklikten sonra, değişikliğin devreye girmesi için Collection Service'in yeniden başlatması gerekiyor.


Hadi hayırlı uğurlu olsun =)

Ekrem Önsoy

25 Nisan 2013 Perşembe

HDInsight

Selam arkadaşlar,

Microsoft, HortonWorks firmasının da işbirliği ile önceden sadece Linux sistemlerde çalışıyor olan Hadoop Framework'ünü Windows Server'larla ve Windows Azure ile çalışır hale getirmiş ve buna da HDInsight demişler.

Hadoop'a yabancı olanlar için çok kısa bir tanımını yapmak gerekirse, Hadoop'u bir Framework olarak düşünebilirsiniz. Bu Framework altında temel olarak MapReduce (veriyi işleme teknolojisi) ve HDFS (Hadoop File System) ve çeşitli projeler (Pig gibi) var. Hadoop'tan bilgi talep Client'tan geliyor, Master-Slave yapısındaki Cluster'da talebi Master karşılıyor ve verinin işlenme işini Slave'ler arasında paylaştırıyor ve işlenen veri doğrudan Slave'lerden Client'a gidiyor.

Hadoop ile temel olarak hedeflenen şey, çok büyük miktarda ve çeşitlilikte olan verilerin (Big Data) paralel olarak (Slave'ler tarafından) işlenerek, ölçeklenebilir bir sistemde (Cluster'a kaç Slave eklenirse, performans Linear şekilde artıyor), işlemnesinin sağlanması.

Not: Hadoop'u merak eden arkadaşlarım daha fazla ayrıntı için Youtube'dan konu hakkında birçok videoya ulaşabilir.

Ekrem Önsoy

4 Nisan 2013 Perşembe

Hekaton

Merhaba,

Bazılarınız belki duydu, belki ilk defa görüyor; fakat Microsoft şu anda SQL Server için Hekaton adında bir teknoloji üstünde çalışıyor. Bu teknoloji ile ilgili tanıtımlar yapıyor ve bazı firmalarda deneme sürümlerini kullandırtıyor.

Bu teknoloji, bazılarınızın QlickView'den de bileceği gibi, verinin hafızada depolanmasını sağlamak ve erişimin diskten değil de, doğrudan RAM'de yapılmasını sağlamak.

Şimdi SQL Server konusunda tecrübeli olan bazı arkadaşlarımın aklına "SQL Server'da zaten Buffer Pool denen bir şey var ve veriler zaten olabildiğince hafızada tutuluyor ve işlemler bu şekilde gerçekleştiyiro, Hekaton'un farkı ne ki?" diye bilir; şöyle ki, Hekaton belirlediğimiz tabloların ve Stored Procedure'lerin ne kadar sık kullanıldıklarına bakmadan ve durağan olarak hafızada kalmasını sağlıyor. SQL Server'ın Buffer Pool'undaki veriler ise kullanım sıklıklarına göre ve hafızanın büyüklüğüne göre bazen diskten bazen hafızadan okunabiliyor. Ayrıca Hekaton ile hafızada depolanan veriler için hazırlanmış Stored Procedure'ler, hafızada kullanılmak üzere özel olarak derleniyor ve bu şekilde bu özellikten en iyi ve performanslı şekilde yararlanılması sağlanıyor.

İşin en güzel yanı ise, Stored Procedure'lerinizi yine bildiğiniz şekilde T-SQL dilinde yazıyorsunuz. Herhangi bir değişiklik yapmanız gerekmiyor. Aynı şekilde, donanım tarafında da herhangi bir değişiklik yapmanıza şart değil. Varolan donanımınızla da Hekaton'u kullanabileceksiniz.

Hekaton, bildiğimiz SQL Server ürünü ile entegre edilmiş şekilde, yan bir ürün olarak değil, sonraki versiyonlarda karşımıza çıkacak.

Ekrem Önsoy

Idera SQL Compliance Manager - Deneyim 1

Merhaba,

Geçen ay sizlere bu üründen biraz bahsetmiştim. Tekrar çok kısa özetlemek gerekirse ürünün özellikle küçük ve orta ölçekli, SQL Server Standard Edition kullanan ve Veritabanı seviyesinde teftiş (Auditing) yapmak isteyen firmalarda kullanılabileceğini belirtmiştim.

Bir aydır ürünü Production ortamında test ettim. Çeşitli sorunlarla karşılaştım. Tabii bu sayede ürünün nasıl çalıştığı ile ilgili de daha fazla bilgi edinebildim.

Ürün temel olarak, kaynaktaki veritabanından kendi Agent'ı ile aldığı bilgileri (Trace veya doğrudan T-Log dosyasından) sıkıştırarak Collection Service'inin çalıştığı hedef sunucuya gönderiyor ve burada önce sıkıştırılan dosyaları açıyor ve ardından da depo olarak kullandığı veritabanına kaydediyor. Benim sorun yaşadığım kısım işte tam da bu işleme sırasında Parser'ın Parse sorunlarıyla karşılaşmasıyla çıktı. Tabii bu sorun da başka sorunları doğurmuş, sorunun üstünde çalışınca karşılaştığım tüm sorunların bundan kaynaklandığını anladık. Destek Amerika'dan verildiği için aramızda 7 saat fark var, bu nedenle Windows Live Meeting'leri buna göre düzenleyerek, destek mühendisi arkadaşın da yardımıyla sorunu tespit ettik ve hâlâ üstünde çalışmaya devam ediyoruz.

Efendim yolumuza devam etmek için şimdilik bu sorunu geçersek, -çünkü öyle veya böyle uygulama çalışıyor, fakat bazı şeyleri bu Bug yüzünden kaçırıyor diye düşünüyorum- uygulama SQL Server 2000'i dahi destekliyor. Sunucu, veritabanı, kullanıcı, nesne ve alan bazında denetim yapabiliyorsunuz. Biriken veriler veritabanında biriktiği için ve veritabanı da Enterprise Edition olmadığı için haliyle sıkıştırılarak saklanmıyor ve bu da veritabanının gün geçtikçe büyümesine neden oluyor. Herkesin ortamı ve ihtiyaçları farklı elbette, fakat sadece ve sadece fikir vermesi açısından şöyle bir örnek verebilirim, çalıştığım ortamda sadece bir veritabanındaki bir tabloda gerçekleşen DML işlemlerini ve sadece birkaç alan için de SELECT (Selective Columns) işlemlerini denetliyorum ve sadece 2 günde depo olarak SQL Compliance Manager tarafından kullanılan veritabanının boyutu 16,5GB oldu.

SQL Compliance Manager'ın kendi arşivleme sistemi de var. Bunu da en azından ayda bir kere çalıştırılacak şekilde ayarlamam gerekecek ve oluşan veritabanını da sıkıştırarak (sıkıştırarak yedeğini alıp sonra da arşivlenen veritabanını silerek) saklamam gerekecek diye düşünüyorum. Henüz bunu test etmedim, bu da ayrı bir yazının konusu olur.

Şimdilik bu kadar.

Ekrem Önsoy

SQL Server Partition Management

Merhabalar,

Bugün bir dergide okurken gördüm, sizlerle de paylaşmak istedim. Henüz kendi ortamımda kullanma şansım olmadığını baştan vurgulayayım. Hemen paylaşmak isteyişimin nedeni de, bazı şeyleri deneyip öyle paylaşayım derken unutulup kaynayabiliyor.

Öncelikle ürünün adresini vereyim: http://sqlpartitionmgmt.codeplex.com/

Ürün SQL Server Customer Advisory Team'de Grup Yöneticisi olan Stuart Ozer tarafından hazırlanmış. Ücretsiz bir ürün.

Ürün özetle SSIS paketleriyle, otomatize edilmiş bir şekilde Table Partitioning'ten faydalanmanızı sağlıyor.

5 Mart 2013 Salı

Idera SQL Compliance Manager

Selam arkadaşlar,

Çalıştığım ortamlardan birinde, veritabanlarından bazıları, bazı bankalarla çalıştığımız ve bu çalışmaların sonucunda üretilen kritik verileri barındırıyor. Bu nedenle çeşitli bankaların yaptıkları teftişlerde, kritik verilerin kimler tarafından değiştirildiği, bu verilere kimler tarafından ulaşıldığı, bu trafiğin kayıtlarının tutulup tutulmadığı ve raporlanıp raporlanamayacağı gibi sorular sorulup, taleplerde bulunuluyor.

Bahsini ettiğim ortamda kullanılan SQL Server, Standard Edition olduğundan dolayı, yukarıda bahsini ettiğim teftişlerin talep ettiği gereksinimleri Enterprise Edition'ın Database Audit özelliği ile karşılayamıyoruz. Çünkü bildiğiniz gibi Database Audit özelliği SQL Server'ın sadece Enterprise Edition'ında (ve SQL Server 2008 R2 Datacenter Edition) mevcut.

Bu gereksinim ve ortam nedeniyle ben de araştırmaya koyuldum. Birçok uygulama ile karşılaştım, SQL Server (>=2008) Enterprise Edition'ın Database Audit özelliğini taklit edebilen sadece bir uygulama bulabildim. Bu da, yazının başlığını da oluşturan, Idera firmasına ait olan SQL Compliance Manager isimli uygulama.

SQL Compliance Manager, DML işlemlerinin yanı sıra, kendini diğer benzeri ürünlerden SELECT işlemlerini de kayıt altına alarak ayırıyor. Çok ayrıntılı bir şekilde Auditing yapmak mümkün. Tablo ve Alan bazında Audit işlemi yapılabiliyor. Audit yapılacak işlemlerin süzme seçenekleri gayet yeterli. Raporlama ve alarm sistemi oldukça esnek ve zengin. Yapılan işlemlerin öncesini ve sonrasını, sunucunuza fazla yük yüklemeden gerçekleştirebiliyor. En azından teoride ve test ortamında böyle.

Şu anda, bu uygulamanın lisansını satın alma sürecindeyiz. Lisanslama, izlenecek SQL Instance'ı bazında 2.995$ ödenerek yapılıyor. Buna ek olarak, ilk satın alma işleminde bir de zorunlu olarak Maintenance adı altında 599$ tutarında bir ücret ödenmesi bekleniyor. Maintenance ile alınacak hizmet ise, senede ortalama 2-3 çıkan her türlü güncelleştirmeden yararlanma ve 7/24 teknik destek.

Ürünü sadece test sunucusuna kurdum ve denedim, Production sunucumuza kurulumundan sonra da gözlemlerimi sizlerle paylaşmaya çalışırım.

Ekrem Önsoy

27 Şubat 2013 Çarşamba

Microsoft Sertifikasyonu

Selam millet!

Bugün öğrendim, sizlerle de paylaşmak istedim. Microsoft yine ve gene sertifikasyon konusunda değişiklikler yapmış.

Bu konuda da İş Ortağı Eğitim Programları Sorumlusu Gülendam Sayım bir blog yazmış:
http://blog.microsoft.com.tr/microsoft-sertifikasyonlari-3.html

Haberiniz ola.

31 Ocak 2013 Perşembe

SQL Server İpuçları - 1: Server Login & Database User

Bu yazımda değinmek istediğim konu, SQL Server terimlerine yabancı olan birçok arkadaşın "kullanıcı" genel başlığı altında birbirine sıkça karıştırdığı Server Login ve Database User arasındaki fark. Bunun sıklıkla karıştırıldığını görüyorum. Eğer örneklerle anlatacak olursak, ki bunun birçok durumda oldukça iyi sonuçlar verdiğini görüyorum, Server Login'ini bir apartmanın giriş kapısının anahtarı olarak düşünebilirsiniz. Database User'ını da bir dairenin anahtarı gibi. Bir apartmanın (SQL Server Instance'ı) genelde bir tane ana giriş kapısı ve dolayısıyla bir tane apartman anahtarı (Server Login) olur, bu apartmanda birden çok daire (veritabanı) olduğunu varsayabiliriz ve bunların da anahtarları (Database Users) ve apartmana Server Login'iniz ile girdikten sonra, girebileceğiniz dairelere de Database User'larınızla girersiniz.

Server Login (bundan böyle artık sadece Login diyeceğim)'i ile Database User (artık sadece User diyeceğim)'ı aynı isimde de olabilir, farklı isimlerde de olabilir. Örneğin benim Login'imin adı "eonsoy" olsun diyelim. Eğer "Firmalarim" isimli veritabanında bu Login'e (örneğin SELECT yetkisi) yetki vermek istersem, öncelikle "Firmalarim" veritabanında bu Login için bir User oluşturmam ve bu User ile Login'i birbirine bağlamam gerekir. SELECT yetkisini de User'a, User'ı oluşturduktan sonra verebilirim. Bir Login'in, birçok veritabanında kendisine bağlı User'ları olabilir. Buna "mapping" deniyor. Security Identifier (SID) ile User(lar), Login'lerine "map ediliyor", yani bağlanıyor. Bir veritabanındaki bir User, sadece bir Login'e bağlanabilir; bir Login birden fazla veritabanındaki User'a bağlanabilir. Yani apartman giriş kapısının anahtarı olan birisi, o apartmandaki birçok dairenin anahtarına sahip olabilir.

Sunucu (yani SQL Server Instance'ı) seviyesindeki yetkiler Login'e verilir (örn: Trace açma yetkisi), veritabanı düzeyindeki yetkiler de (örn: Select, Update, Delete gibi) Database User'lara verilir.

Not-1: "sysadmin" yetkisine sahip bir Login'in ise User'lara ihtiyacı yoktur, her veritabanında her istediğini yapabilir. Yukarıdaki örnekten, bu arkadaşın güzel bir maymuncuğu olduğunu düşünebilirsiniz.

Not-2: SQL Server 2012 ile birlikte yeni bir özellik olan Contained Databases özelliği geldi. Bu özellikte, yukarıda anlattığım mantığa alternatif bir yöntem de geldi. O yüzden Contained Database User'larını gördüğünüzde kafa karışıklığı olmasın diye not düşmek istedim. Bunlardan da başka bir yazıda bahsederim. Bununla birlikte yukarıdaki anlattığım mantık SQL Server 2012'de de mevcut, bir yere gittiği yok.

Error while enabling Windows feature : NetFx3, Error Code : -2146498298 , Please try enabling Windows feature : NetFx3 from Windows management tools and the run setup again.

HATA:
Error while enabling Windows feature : NetFx3, Error Code : -2146498298 , Please try enabling Windows feature : NetFx3 from Windows management tools and the run setup again. For more information on how to enable Windows features , see http://go.microsoft.com/fwlink/?linkid=227143

AÇIKLAMA:
SQL Server 2012 kurulumuna başladıktan sonra böyle bir hata ile karşılaşabilirsiniz. Bu hata çıktıktan hemen sonra kurulum iptal olmuyor veya hata almıyor. Bir şekilde yüklemeye devam ediyor, fakat yükleme sona erdiğinde Database Engine dahil birçok temel bileşenin başarıyla yüklenemediğini görüyorsunuz.

ÇÖZÜM:
Hata mesajında da belirtildiği gibi NetFx3 isimli Windows özelliğinin etkinleştirilmesi gerekiyor. Bu özellik etkinleştirildikten sonra tekrar SQL Server 2012 Setup çalıştırılabilir ve aynı şekilde tekrar kurulum yapılabilir. Bu sorun tekrarlamayacaktır.

24 Ocak 2013 Perşembe

Kitap: SQL Performance Explained

Selam arkadaşlar,

En son gönderime bakıyorum da, üstünden fazla geçmemiş, "SQL Performance Explained" isimli Markus Winand'a ait olan kitabı aldım ve okudum. Belki sizlere de faydası olur diye yorum yapmak isterim.

Kitap, aynen Markus'un da iddia ettiği gibi özellikle yazılımcılar için hazırlanmış bir kitap. Aldığıma ve okuduğuma kesinlikle pişman olmadığımı baştan belirtmeliyim. Markus, kitabında B-Tree Index yapısını, Index'lerin doğru şekilde kullanılabilmesi için neler yapılması ve neler yapılmaması gerektiğini, Join'leri, Clustered ve Heap tablo yapılarını, Index'lerin DML işlemleriyle ilişkilerini, Sıralama ve Gruplama işlemlerini Oracle'ı temel alarak, PostgreSQL, MySQL ve SQL Server'a da değinerek anlatmış. Hiç derinlere girip kaybolmadan, açık örnekler de vermiş. Okurken bunalmayacağınız garanti.

Özellikle T-SQL'e yeni başlayanların, yazılım geliştiricilerin, YAZILIM GELİŞTİRİCİLERİ'nin (bu arkadaşlar genelde okumayı sevmediği için vurgulama ihtiyacı duydum) muhakkak okuması gereken bir kitap. Yazılım geliştirici arkadaşların sık sık yaptıkları hatalara da değinilmiş. Tabii ki veritabanı yöneticileri de okursa iyi olur, özellikle sorunların tespitlerinde, performans iyileştirme çalışmalarında yardımı dokunur.

Özetle, kitabı tavsiye ederim arkadaşlar.

Doğrudan aşağıdaki adresten alınabilir. Ben e-kitap olarak aldım, anında ve daha ucuza!
http://sql-performance-explained.com/

Sevgiler,
Ekrem Önsoy

9 Ocak 2013 Çarşamba

Introducing Microsoft SQL Server 2012

Merhaba arkadaşlar,

Uzun zamandır bir gönderi yapmadım, bir süre tembelliğim üstümdeydi =)

O sırada tamamen hiçbir şey yaptım sanmayın sakın, hem yeni başladığım işe yoğunlaştım ve takım arkadaşlarımla burada da birçok güzel işler yaptık ve yapmaya da devam ediyoruz, hem de mümkün olduğunca kitap okumaya (hem teknik, hem diğer konularda) çalışıyorum.

Bu kitaplardan sonuncusu "Introducing Microsoft SQL Server 2012" isimli kitaptı. Evet, SQL Server 2012'yi çalışmaya biraz geç kaldım; ama ancak oldu. Bu vesileyle, bu kitabı sizlere de tavsiye etmek istedim. Microsoft Press tarafından ücretsiz olarak yayımlanan bir kitap. Temel olarak, adından da anlaşılacağı üzerei SQL Server 2012 ile gelen yeni özelliklerden bahsediyor.

http://download.microsoft.com/download/F/F/6/FF62CAE0-CE38-4228-9025-FBF729312698/Microsoft_Press_eBook_Introducing_Microsoft_SQL_Server_2012_PDF.pdf

Az ve öz olarak yeni gelen özellikler tanıtılmış, ilk bakış için yeterli. Gerisi, sizin ürünü kurcalamanıza kalmış.

Birkaç güne kadar da "Pro SQL Database for Windows Azure: SQL Server in the Cloud" ve "SQL Performance Explained" isimli kitapları sipariş etmeyi umuyorum, bu kitaplar hakkındaki yorumlarımı da umarım ilerleyen zamanlarda sizlerle paylaşabilirim.

Sevgiler,
Ekrem