25 Temmuz 2009 Cumartesi

"Property Owner is not available for Database '[veritabani_adi]'. This property may not exist for this object, or may not be retrievable due to insuff

HATA MESAJI:
"Property Owner is not available for Database '[veritabani_adi]'. This property may not exist for this object, or may not be retrievable due to insufficient access rights. (Microsoft.SqlServer.Smo)"

AÇIKLAMA:
Örneğin SQL Server Management Studio’ daki bir veritabanınızın özelliklerine bakmaya çalıştığınızda bu hata mesajıyla karşılaşabilirsiniz. Nedeni, veritabanının orijinal sahibinin değiştirilmesidir.

ÇÖZÜM:
"sp_changedbowner" sistem SP' sini kullanarak ilgili veritabanının sahibi olarak "sa" kullanıcısını atayabilirsiniz...

USE
GO
EXEC sp_changedbowner 'sa'

"An I/O delay issue was found for the disk I/O subsystem."

HATA MESAJI:
"An I/O delay issue was found for the disk I/O subsystem."

AÇIKLAMA:
Bu mesajı (mesaj 833) gördüğünüzde SQL Server diskten okuma yapmak veya yazma yapmak için izin istemiş ve bu isteğin cevaplanması 15 saniyeden uzun sürmüştür. Bu hata SQL Server tarafından raporlanır ve disk I/O sistemiyle ilgili bir sorunun göstergesidir. Bu kadar uzun süren gecikmeler SQL Server ortamınızda ciddi performans sorunlarına neden olur.

ÇÖZÜM:
Bu hatayı araştırmak için Sistem Olay Günlüğünün donanım ile ilgili hata mesajlarını araştırın.

Ayrıca, aşağıdaki performans sayaçlarını kullanın:
- Average Disk Sec/Transfer
- Average Disk Queue Length
- Current Disk Queue Length

Özellikle SQL Server çalışan bir bilgisayardaki Average Disk Sec/Transfer sayacının değeri 15 milisaniyeden düşüktür. Eğer Average Disk Sec/Transfer değeri yükselirse bu, disk IO sisteminin gelen talepleri karşılayamadığını gösterir ve bu durumda ya veritabanında performans iyileştirme çalışması yapmak ya da disk sistemini donanımsal olarak güçlendirmek gerekir.

"Access to the path 'C:\Program Files\Microsoft SQL Server\100\License Terms\SQLServer2008_License_ENT_1033.rtf' is denied."

HATA MESAJI:
"Access to the path 'C:\Program Files\Microsoft SQL Server\100\License Terms\SQLServer2008_License_ENT_1033.rtf' is denied."

AÇIKLAMA:
SQL Server 2008 yüklemesi sırasında böyle bir sorun ile karşılaşabilirsiniz...

ÇÖZÜM:
İtiraf ediyorum ki, çözüm de sorun kadar garip.

Bu durumla karşılaşıldığında, sorunun 'C:\Program Files\Microsoft SQL Server\100\License Terms\SQLServer2008_License_ENT_1033.rtf' dosyasının silinerek aşıldığını gördüm.

Eğer siz de böyle bir sorunla karşılaştıysanız bu dosyayı silin ve kuruluma tekrar başlayın.

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