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