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