31 Mart 2008 Pazartesi

Cannot truncate table because it is being referenced by a FOREIGN KEY constraint.

HATA MESAJI:
"Cannot truncate table because it is being referenced by a FOREIGN KEY constraint."

AÇIKLAMASI:
Bir başka tabloda FOREIGN KEY olarak referans gösterilen bir tablonun içeriğini TRUNCATE TABLE komutuyla silmeye kalkarsanız bu mesajı alırsınız.

ÇÖZÜM:
Eğer başka bir tablo tarafından FOREIGN KEY olarak referans gösterdiğiniz bir tablonun içeriğini silmek istiyorsanız o zaman DELETE FROM komutunu kullanabilirsiniz.

Alternatif olarak, FOREIGN KEY ilişkisini koparırsanız o zaman TRUNCATE TABLE komutunu kullanabilirsiniz.

Error: The @newname value 'test' is already in use as a OBJECT name and would cause a duplicate that is not permitted. (Microsoft SQL Server, Error: 1

HATA MESAJI:
"Error: The @newname value 'test' is already in use as a OBJECT name and would cause a duplicate that is not permitted. (Microsoft SQL Server, Error: 15335)"

AÇIKLAMASI:
Varolan bir nesnenin ("tablo" veya "view" gibi...) adını değiştirmeye çalıştığınızda, eğer zaten o isimde bir başka nesne varsa bu hata mesajını alırsınız.

ÇÖZÜM:
Eğer oluşturacağınız nesneyi illa da aynı isimlerde oluşturmak istiyorsanız, o zaman bu nesneler için farklı "Schema" lar kullanmanız gerekir.

Bir "Schema" veya bir "kullanıcı" aynı anda aynı isimli iki nesneye sahip olamaz.

System.Data.SqlClient.SqlError: The operating system returned the error '5(Access is denied.)' while attempting 'RestoreContainer::ValidateTargetForCr

HATA MESAJI:
"System.Data.SqlClient.SqlError: The operating system returned the error '5(Access is denied.)' while attempting 'RestoreContainer::ValidateTargetForCreation' on 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\xxx.mdf'. (Microsoft.SqlServer.Smo)"

AÇIKLAMASI:
Bir yedek dosyasını bir SQL Server Instance' ına açmaya çalıştığınızda, eğer SQL Server Servisinizin, yedeği açmaya çalıştığınız klasör için gerekli izinleri yoksa bu hata mesajıyla karşılaşırsınız.

ÇÖZÜM:
Veritabanı yedeklerinin açma işlemini SQL Server servisi gerçekleştirir. Yedek dosyasının açılması demek, SQL Server servisinin, veritabanınızın dosyalarını yedek dosyasından hedef klasöre açması demektir. Yani SQL Server servis hesabınızın, veritabanı dosyalarının oluşturulacağı hedef klasörde yazma izinlerinin olması gerekiyor.

Bu işlem için SQL Server servisine, hedef klasör üstünde vermeniz gereken yetki ise Yazma (Write) yetkisidir.

System.Data.SqlClient.SqlError: This backup cannot be restored using WITH STANDBY because a database upgrade is needed. Reissue the RESTORE without W

HATA MESAJI:
"System.Data.SqlClient.SqlError: This backup cannot be restored using WITH STANDBY because a database upgrade is needed. Reissue the RESTORE without WITH STANDBY."

AÇIKLAMASI:
Bu hata mesajını, SQL Server 2000 \ 2005 gibi SQL Server 2008' den daha eski SQL Server Instance' larında oluşturulmuş bir veritabanını, "WITH STANDBY..." komutu ile birlikte açmaya (Restore) çalışırken alabilirsiniz.

ÇÖZÜM:
Kullandığınız SQL Server Instance' ından daha eski bir SQL Server versiyonundan alınan veritabanı yedeğinizi ilk önce "WITH RECOVERY" komutuyla açmalısınız. Eğer daha sonra bu veritabanının tekrar yedeğini alıp "WITH STANDBY" seçeneğiyle açmak istiyorsanız, o zaman bu veritabanının Uyum Düzeyini ("Compatibility Level") Veritabanı Özelliklerinden yükseltmelisiniz.

18 Mart 2008 Salı

SQL Server 2008: Sertifikasyon

Merhaba arkadaşlar,


SQL Server ile yakından ilgilenenler biliyordur, SQL Server 2008 bu senenin üçüncü çeyreğinde piyasada sürülecek. Aslında bazıları daha erken sürüleceğini düşünüyordu, fakat Ocak ayında Berlin' de katıldığım MCT Summit 2008' de Redmond' dan bir Microsoft çalışanıyla konuşma şansım oldu ve bana ürünün Ağustos' ta piyasaya sürüleceğini söylüyordu. Artık Microsoft da resmen bunu doğruluyor.

Yeni ürünle birlikte, elbette bu yeni ürün için sınavlar da gelecek. Bu yazımda sizlerle bu sınavlar hakkında edindiğim bilgileri paylaşmak istiyorum. Microsoft' un yeni nesil sınav sistemini bildiğinizi varsayıyorum, eğer sizin için aksi bir durum söz konusuysa ve bu konuda bilgi almak istiyorsanız buraya tıklayarak Microsoft' un yeni nesil sertifika sistemi konusundaki başka bir makalemi okuyabilirsiniz.

SQL Server 2005 sınavlarını araştıranlar ve konuyla ilgililer bilir, SQL Server 2005 Database Administrator ve Database Developer için 70-431:TS kodlu tek bir sınav vardı. SQL Server 2008 ile birlikte Microsoft, Database Administrator ve Database Developer Technology Specialist sınavını ikiye ayırmış. MCTS, MCITP ve MCA yapısı değişmedi. Ama dediğim gibi, SQL Server 2008 için SQL Server 2005' teki gibi 2 tane değil, 3 tane MCTS sınavı olacak. MCTS sınavlarının açıklamaları ve kodları şöyle:

70-432:TS:SQL Server 2008, Implementation and Maintenance
- Installing and configuring
- Maintaining sql instances
- Managing security
- Maintaining a database
- Data management
- Tasks monitoring and troubleshooting
- Optimizing implementing high availability

Haziran-Ağustos 2008 gibi sınava girilebilir olacak.

70-433:TS: SQL Server 2008, Database Development
- Design
- T-SQL
- Connecting to datasources

Eylül 2008 gibi sınava girilebilir olacak.

Tabi bir de bildiğiniz gibi BI sınavı var, onun da kodu şöyle:

70-448:TS: SQL Server 2008 Business Intelligence Development and Maintenance
Configuring, deploying, maintaining and implementing:
- SSIS
- SSRS
- SSAS


Haziran-Ağustos 2008 gibi sınava girilebilir olacak.

SQL Server 2005 MCITP sertifikasına sahipseniz, tek yükseltme sınavı ile SQL Server 2008 MCTS ve MCITP sertifikalarını kazanabileceksiniz. Eğer henüz MCITP sertifikanız yoksa, fakat MCTS sertifikanız varsa ve MCITP sertifikasını kazanmak istiyorsanız, o zaman SQL Server 2005 MCITP sınavlarına girmeye devam edip bu sertifikayı kazanmanızı ve ardından da SQL Server 2008 MCITP sınavı girilebilir olduğunda tek yükseltme sınavıyla SQL Server 2008 MCITP sertifika sınavına girmenizi tavsiye ederim.

SQL Server 2000 MCDBA sertifikanız varsa, o zaman doğrudan SQL Server 2008' e yükseltme şansınız olmayacağını bilmelisiniz. Eğer bu durumdaysanız ve sertifikanızı güncellemek istiyorsanız izleyebileceğiniz yol, MCDBA -> SQL Server 2005 MCITP sertifikasına yükseltme sınavıyla sahip olup, tek yükseltme sınavıyla da SQL Server 2008 MCITP sertifikasına yükseltme yapmaktır. Ya da, SQL Server 2005 sertifika sınavlarına girmeden SQL Server 2008 sınavlarına baştan başlayıp girebilirsiniz.

MCDBA sınavları Mart 2009' da geçerliliğini yitirecek. Bu nedenle Microsoft, artık MCDBA sınavlarına girilmesini tavsiye etmiyor.

Not:
Bazı arkadaşlar, MCDBA sertifika sınavını tüm SQL Server sürümleri için geçerli bir sınav zannediyor ve kafaları karışabiliyor. MCDBA sertifika sınavları sadece SQL Server 2000' i kapsamaktadır. SQL Server 2005 için MCDBA sertifikası alınamaz. SQL Server 2005 için ilk önce ilgilendiğiniz SQL Server alanının MCTS sertifika sınavına (ki tek sınavdan oluşuyor), daha sonra da iki sınavdan oluşan MCITP sınavına girmeniz gerekir. Bu yapı, SQL Server 2008 ile birlikte de korunmaktadır.


Ekrem Önsoy