25 Temmuz 2009 Cumartesi

Upgrade Blockers (2000' den 2005' e Geçişte)

Merhaba arkadaşlar,

SQL Server MVP Kalen Delaney' in Inside Microsoft SQL Server 2005 serisinden "The Storage Engine" isimli kitabını okurken, böyle bir konu dikkatimi çekti ve bunu Türkçeleştirerek sizinle de paylaşmak istedim. Belki eski bir konu gibi görünebilir fakat hâlâ birçok firma SQL Server 2000 kullanıyor. Bu nedenle böyle bir yazının Türkçe olarak arşivde durmasında fayda var diye düşünüyorum.

Konu şu, SQL Server 7.0 veya SQL Server 2000' den SQL Server 2005' e doğrudan (in place) yükseltme (upgrade) işlemi yaparken özellikle 5 başlığa dikkat etmeniz gerekiyor. Aksi takdirde yükseltme işlemi gerçekleştirilemiyor.

Bu konular açıklamalarıyla şöyle:

1- ID değeri 32767 olan bir veritabanı. SQL Server 2005, bu veritabanı ID değerini özel ve gizli bir veritabanı olan Resource Veritabanı için kullanmaktadır. Bu ID değerine sahip bir veritabanı SQL Server 2005' yükseltme öncesinde ya silinmeli ya da yükseltme işlemi yapılacak Instance' tan ilişiği koparılmalıdır (detach). Aynı veritabanını, SQL Server 2005' e yükseltme işlemi tamamlandıktan sonra tekrar iliştirebilirsiniz (attach) veya yükseltme işlemine geçmeden önce de tekrar iliştirebilirsiniz; fakat aynı veritabanı ID' sini almadığına dikkat etmeniz gerekir.

2- Aynı Security Identifier' lar (SIDs) varsa. Eğer SQL Server 7.0 veya SQL Server 2000 veritabanınızda aynı SID' e sahip iki tane Login ID' niz varsa, SQL Server 2005' e yükseltme işlemi başarısızlıkla sonuçlanacaktır. Bu sorunu aşmak için bir tanesi hariç, diğer aynı SID' e sahip olan Login' leri silmeniz gerekir.

3- Login isimleri bir Sabit Sunucu Rolü (Server Fixed Role) ile aynı adı taşıyorsa. Eğer SQL Server 7.0 veya SQL Server 2000 Instance' ınızdaki Login isimlerinden biri, Sabit Sunucu Rollerinin birisiyle aynı adı taşıyorsa (örneğin sysadmin), o zaman yükseltme işlemi başarısız olur. Yükseltme işlemi öncesi, ilgili Login ismini değiştirmeniz gerekir.

4- "sys" adında bir kullanıcısı bulunan bir veritabanı. Tüm SQL Server 2005 veritabanları "sys" adında bir Schema ve bir Kullanıcı içerir ve bunlar özel maksatlar için kullanılır. Eğer veritabanınızda zaten "sys" adında normal bir kullanıcı nesnesi varsa, o zaman bu kullanıcı adını yükseltme işlemi öncesinde değiştirmeniz gerekir. Eğer veritabanındaki kullanıcı adını değiştirmezseniz, yükseltme işlemi sonrasında bu veritabanı Şüpheli (Suspect) duruma geçecektir ve veritabanı çevrimiçi (online) duruma getirilmediği sürece de kullanılamaz olarak kalacaktır.

5- Bir tablo veya View' ün birden çok aynı isimde Index' inin olması. Eğer bir nesnenin (tablo veya View) aynı isimle birden çok Index' i olursa, yükseltme işlemi başarısızlıkla sonuçlanır. Index' leri, "sp_rename" sistem SP' sini kullanarak hepsi birbirinden farklı isimlere sahip olacak şekilde yeniden adlandırabilirsiniz.

Bir yükseltme işleminden önce, SQL Server Upgrade Advisor' ü kullanmanızı tavsiye ederim. Bu araç, bu tür sorunları otomatik olarak tespit edecek ve size raporlayacaktır. Bu aracı, SQL Server CD\DVD' sinde bulabilirsiniz.



Ekrem Önsoy

Hiç yorum yok: