SQL 2008’e upgrade ediyoruz!..


Size kötü bir haberim var:

Uzun zamandır SQL Server’a bağlanan bir code base’iniz varsa (ya da yazılım setiniz diyelim), bunlarda da epeydir güncelleme yapmadıysanız, büyük olasılıkla Microsoft’un SQL 2000’den beri ileri bir versiyonda artık desteklemeyeceğini duyurduğu özelliklerle kodlarınızda geçiyordur.

Kötü haber bu değil, kötü haber, Microsoft’un SQL 2008’de artık bu özelliklerin pekçoğunu desteklemeyi bıraktığı. Ama bu haber o kadar da kötü olmayabilir. Çünkü bu gereksiz ayak bağlarından kurtulmak, Microsoft’un test süreçlerini çok daha iyi ve hızlı uygulayabilmesini sağlayacak ve SQL Server’ın 2008 ve sonraki versiyonlarının daha iyi ve performanslı olmasına katkısı olacak.

İyi de siz artık desteklenmeyen undocumented bir DBCC komutu kullanıyorsanız mesela, bu iyi yorumdan size ne? Bu durumdan etkilenecek olan sizin kodunuz olacak. Şimdiye kadar temizlemiş olmanız gerekirdi, ama temizlemediyseniz, şimdi temizleme zamanı.

Belki de hiçbir kodunuz bu tür çağdışı kalmış parça içermiyor da olabilir.

Veritabanınızın SQL 2008’e upgrade edilmeye uygun olup olmadığını nasıl denetleyebilirsiniz?

Bu konuda SQL 2005’te de yer alan Upgrade Advisor iyi bir seçenek ve SQL 2008’de de kurulum setinin içinde geliyor. Upgrade Advisor’ı tek başına da Microsoft’un sitesinden indirip kurmak mümkün.

Upgrade advisor belirttiğiniz sunucudaki veritabanlarını inceleyecek ve olası sorunları size bildirecektir. Üstelik sorunları bildirirken bunların ne zaman çözümlenmesi gerektiğini ve çözümlenmesi için bilgi veren bağlantıları da size bildirir.

Sorunların bir kısmı upgrade’den önce çözümlenmeli olarak raporlanırken çok daha büyük bir kısmı upgrade’den sonra ama uyumluluk seviyesi ayarı 10.0’a (SQL 2008) getirilmeden önce çözümlenmeli diye gösterilecektir.

Çok güzel! Böyle bir araç bize olası sorunları haber vermek için çok iyi bir başlangıç. Ama Upgrade Advisor herşeyi yakalayamayabilir.

Mevcut veritabanının analizinden başka, bu veritabanına bağlanan uygulamaların oluşturduğu sorguları da analiz edebilen başka bir araç daha var. Scalability Experts’in Microsoft SQL Server ürün grubuyla birlikte çalıştırarak geliştirdiği bu araca şu adresten ulaşabilirsiniz: http://www.scalabilityexperts.com/default.asp?action=article&ID=43

Veritabanının kendisini inceleyen Upgrade Advisor’ın çalışmasını tamamlayıcı nitelikteki bu aracın temel çalışma mantığı trace’ler üzerine kurulu. SQL 2005’teki veritabanınızın bir yedeğini alıyorsunuz. Sonra SQL 2005’inizde bir trace dosyası oluşturuyorsunuz. Bu trace dosyasını SQL 2005’te çalıştırarak bir çıktı trace’i oluşturuyorsunuz.

Şimdi upgrade etme zamanı. İster yerinde (in-place) ister yanyana (side by side).

Yerinde yükseltme yapmak istiyorsanız, trace’in çalışmamış olduğu hali SQL 2005 test sisteminize yükleyip, bu test serverınızı SQL 2008’e yükseltebilirsiniz. Veritabanı da SQL 2008’e yükselmiş olacaktır. Ama henüz uyumluluk seviyesi 90’dır (SQL 2005). Bu haliyle orijinal trace dosyasını bu veritabanına bağlanarak tekrar çalıştırıp yeni bir çıktı dosyası oluşturabilirsiniz. Henüz 90 uyumluluk seviyesinde bile SQL 2008 üzerinde hata verecek satırlar varsa, çalıştırılabilen satır sayısı azalacaktır.

Araç size bir de trace replay ettiğinizde oluşan çıktıları karşılaştırma bölümü sunuyor. Bu bölümü kullanarak iki trace replay output’unu birbiriyle karşılaştırabilir ve sonra da raporlama imkanını kullanarak, hata vermiş olan satırları hemen bulabilirsiniz.

Veritabanı yedeğinden SQL 2008 kurulu sisteme tekrar restore yapıp bir de uyumluluk seviyesini 100’e (SQL 2008) çekip yeniden trace replay output oluşturabilir ve bunu da SQL 2005 trace replay output ile karşılaştırıp sonuçları görebilirsiniz.

Hatta inplace değil, başka bir SQL 2008 kurulumuna veritabanınızı restore ederek, trace replay output’u onun üzerinden oluşturma imkanınız da vardır.

Özellikle biraz uzun uzun anlattım. Biraz anladınız, biraz da kafanız karıştı sanırım. Şimdi kısa ve komut tarzında cümlelerle aynı süreci adımlarla yazacağım. Biraz daha iyi anlayacağınızı düşünüyorum. Daha da iyi anlamanın yolu ise, bu adımları test sisteminizde uygulamak olacaktır:

1. Scalibility Experts’in ilgili aracını yukarıda verilmiş olan linkten indir.
2. Test sistemine production sistemiyle SQL ve sistem hotfix seviyelerine kadar aynı bir kurulum yap.
3. En iyi sonucu almak için test sistemi production sistemi ile aynı domainde olsun ve veritabanlarının yedeğini bu sisteme geri dönmeden önce loginler gibi veritabanı dışında SQL Server seviyesinde yer alan diğer unsurları yedek sistemde production sistemiyle aynı olacak şekilde oluştur.
4. Test sistemine ilgili kullanıcı veritabanlarını restore et.
5. Test sistemine alınmış bu haliyle kullanıcı veritabanlarının bir yedeğini al. (Bu yedek önemli, daha sonra üzerinde trace replayler yapmak için defalarca kullanılacak.)
6. Uygulamaların tüm ekranlarını ve tüm dönemlerdeki işleri kapsayacak şekilde (haftasonu, ay sonu, yıl sonu, dönem sonu işlemleri, sadece belirli zamanlarda alınan raporlar gibi) test çalışmalarını yürüt ve bunları bir trace dosyasına al. (Bu trace dosyası sizin tüm işlerinizi kapsamaya ne kadar yakınsa, bu çalışma size o kadar doğru bir sonuç verecektir.)
7. Test etmek istediğin upgrade senaryosuna karar ver. (Buradan itibaren 64 bit başka bir makineye side by side upgrade yapmak istediğinizi varsayarak anlatacağım.)
8. Test makinesine veritabanının alınmış yedeğini geri dön. (Trace’i tekrar uygulayıp sonuçlarını bir output trace’ine alacağımız için aynı işlemlerin tekrar yapılabilmesini sağlamak üzere yedeğe geri dönüyoruz.)
9. Test makinesinde trace’i replay et ve output çıktısını al.
10. Test makinesinde SQL 2008 Upgrade Advisor’ı kur.
11. Test makinesinde Upgrade Advisor’ı çalıştır ve kuruluma engel olacak bir sorun bulunmadığından emin ol. Sonradan çözümlenmesi gereken konular varsa onların da raporlarını al.
12. 64 bit sistemde SQL Server 2008 kurulumu yap.
13. 64 bit sistemde (tercihen aynı domainde) kullanıcı veritabanı dışındaki sunucu kaynaklarını (loginler gibi) oluştur.
14. 64 bit sistemde kullanıcı veritabanını geri dön (restore et).
15. Almış olduğun trace’i 64 bit sistemde kurulu SQL Server’a bağlanarak replay et ve trace replay outputu al.
16. Normal test sistemindeki trace replay output ile 64 bit SQL 2008’deki trace replay outputu karşılaştır.
17. Oluşan sonuç raporunu görüntüle ve SQL 2008’e uyumsuz komutlarını bulmuş ol.

13’ten itibaren olan adımları yeniden yapıp 14’ten sonra ve 15’ten önce kullanıcı veritabanının uyumluluk seviyesini 100 (SQL 2008) yaparak sonraki adımları tekrar yapmak ve uyumluluk seviyesi değişince hata veren komutları da bulmak iyi olacaktır.

Valla biraz karışık geliyor ama yapınca çok kolaylaşıyor iş. Araç çok faydalı. (Tabii trace’i ne kadar iyi ve kuşatıcı aldığınız da bu faydanın seviyesini belirlemede çok yüksek etkiye sahip.)

Kullanmayı dener ve takılırsanız, bana sormak isteyebilirsiniz. Bu yazıya bir yorum yazmanız yeterli. Yorumlar bana mail olarak geliyor. Yorumunuzda sorunuzu ve size ulaşabileceğim bir mail adresini belirtmeniz yeterli olacaktır.

Kolay gelsin.

Bu yazı SQL Server 2008 içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

6 Responses to SQL 2008’e upgrade ediyoruz!..

  1. Anonymous dedi ki:

    Mustafa Hocam,Yazınızdaki olayları yapmak istiyorum ama siz bildiğiniz için çok hızlı geçmişsiniz.. Trace replay et ordan output çıktısını almak ne demek ? Trace nedir Replay nedir ? Hatalı kodları nasıl karşılaştırabiliriz ? Bu yazıyı daha detaylı, anlaşılır bir hale getirebilirseniz çok sevinirim.Tşk.

  2. Mustafa Acungil dedi ki:

    Doğrusu işin kendisi biraz karmaşık.Scalibity Experts'in aracını karşınızda kullanmadan anlattıklarımı tam olarak anlamanız mümkün olmayabilir. Öte yandan benim bu Türkçe (mümkün olduğunca 🙂 ) açıklama olmadan da araçla başbaşa kalmanız yine kafa karıştırıcı olabilir.http://www.scalabilityexperts.com/default.asp?action=article&ID=45 adresinde kullanım kılavuzu da var. Onu da bir incelemenizi tavsiye ederim. Onu inceledikten sonra sorularınız olursa yine yorum üzerinden yazışabiliriz.

  3. Doktor Teknik dedi ki:

    3. adımı anlayamadım ama 😦

  4. Mustafa Acungil dedi ki:

    Bir veritabanının yedeğini alıp başka bir sunucuya yüklediğinizde, veritabanı içindeki herşey gelir.Ama bazı şeyler veritabanı seviyesinde değil, SQL Server sunucu seviyesindedir.Mesela Server login kayıtları böyledir. Veritabanındaki tanımlı kullanıcının server’da bir loginle ilişkili olması gerektiği için, taşıdığınız veritabanına bağlanabilmek için SQL Server seviyesindeki loginlerin de yeni yere taşınmış olması gerekir.Sertifikalar gibi SQL Server seviyesinde (veritabanının üstünde) yer alan başka bazı nesneler de olabilir.

  5. UfukArt dedi ki:

    Mustafa Üstad. Size birşey danışmak istiyorum. Basit düzeyde web projeleri yapıyorum. Bir hosting firmasından hizmet alacağım. Standart seçenekler arasından sql 2005 mevcut. fakat satınalma sayfasında ayrıca sql 2008 fiyat farkı ödeyerek alma seçeneği var. Sizce buna ihtiyacım varmı? Yoksa mevcut sql 2005 benim işim görür mü? Sitelerin ne tür dersen. Sql kullanan bir haber sitesi ve sözlük tarzı bir site.

  6. Mustafa Acungil dedi ki:

    SQL 2005'in ve 2008'in birtakım özellikleri var, bunlar baz alınarak değerlendirilebilir. Ama acaba hosting firması bunların hangilerini size yansıtıyor. Bence bunu sormak gerekli.Mesela SQL 2008'de backup'lar yüzde 80'lere varan oranlarda daha az yer kaplıyorlar. Yani eskiden 10 GB olan backup'ınız 2 GB'a düşebilir.Önerdikleri özelliklerin neler olduğunu sorma şansınız var mı?

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s