11 Ocak 2009 Pazar

SQL Server 2005 Servis Paketi 3

Uzun zamandır beklenen Servis Paketi 3, 15 Aralık 2008 tarihinde yayınlandı.

Bu Servis Paketini indirmek için aşağıdaki adrese gidebilirsiniz:
http://www.microsoft.com/downloads/details.aspx?FamilyID=ae7387c3-348c-4faa-8ae5-949fdfbe59c4&displaylang=en

"The transaction ended in the trigger. The batch has been aborted. (Source: MSSQLServer, Error number: 3609)"

HATA MESAJI:
The transaction ended in the trigger. The batch has been aborted. (Source: MSSQLServer, Error number: 3609)"

AÇIKLAMA:
Eğer Trigger' larınızda "NOT FOR REPLICATION" komutunu kullanmadıysanız, o zaman Replication Monitor' de sık sık bu hatayı alırsınız ve "Undistributed Commands" sekmesinde de görüleceği üzere Subscriber' lara aktarılamayan komut sayısı sürekli artar.

Bunun sonucu olarak Transaction Log dosyanız şişer, Distributor için belirlenmiş Retention Period süresi de dolduktan sonra (ki varsayılan 72 Saattir), Subscriber' ınız için Reinitialization işlemi yapmanız gerekir...

ÇÖZÜM:
"sys.triggers" CataLog View' ünü kullanarak veritabanlarınızdaki Trigger' ları tespit edebilirsiniz. Ardından da tüm Trigger' ların ilgili bölümlerinde "NOT FOR REPLICATION" komutunun bulunduğundan emin olun.

Trigger' larda "NOT FOR REPLCATION" komutunu nasıl kullanacağınızı görmek için Books Online' dan ilgili sayfaya bakabilirsiniz: http://msdn.microsoft.com/en-us/library/ms189799.aspx

"Msg 21397, Level 16, State 1, Procedure sp_MSsetupnosyncsubwithlsnatdist, Line 213 The transactions required for synchronizing the nosync subscriptio

HATA MESAJI:
Msg 21397, Level 16, State 1, Procedure sp_MSsetupnosyncsubwithlsnatdist, Line 213 The transactions required for synchronizing the nosync subscription created from the specified backup are unavailable at the Distributor. Retry the operation again with a more up-to-date log, differential, or full database backup. The Subscriber was dropped.

AÇIKLAMA:
SQL Server 2005' te, Bir Transactional Replication yapısı kurup, Initialization işlemini de yedekle çözmek istediğinizde, Subscriber için bir Subscription eklerken bu hata ile karşılaşabilirsiniz.

ÇÖZÜM:
Publisher' daki veritabanınızın Recovery Model' ının FULL olduğundan emin olun.

Eğer sorununuz yukarıdaki sebep değilse, o zaman Publisher' daki veritabanını Subscriber' a taşımak amacıyla yedek almadan önce Distributor' daki "Distrubution clean up: distribution" isimli Job' ın Disabled durumunda olduğundan emin olun.

"Event filter with query "select * from __InstanceModificationEvent within 10 where TargetInstance isa 'Win32_Service'" could not be (re)activated in

HATA MESAJI:
"Event filter with query "select * from __InstanceModificationEvent within 10 where TargetInstance isa 'Win32_Service'" could not be (re)activated in namespace "//./root/Microsoft/SqlServer/ComputerManagement" because of error 0x80041010. Events may not be delivered through this filter until the problem is corrected."

AÇIKLAMA:
Windows Event Application Log' larında böyle bir hata görebilirsiniz.

ÇÖZÜM:
Bu hatayı almamak için, SQL Server 2005' in Servis Paketi 2' sini yüklemelisiniz. Bu servis paketini Client Tools' a da uygulamayı sakın unutmayın, yoksa bu hatayı almaya devam edersiniz.

Pending Reboot Requirement (Error)

HATA MESAJI:
"Pending Reboot Requirement (Error)

A previous installation required a reboot of the machine for changes to take effect. To proceed, restart your computer and then run SQL Server Setup again."

AÇIKLAMA:
Bir SQL Server 2005 Instance' ı kurarken "System Configuration Check" penceresinde bu hata ile karşılaşabilirsiniz.

Bu hata, özellikle önceden kurmuş olduğunuz bir SQL Server 2005 Instance' ını kaldırdıktan sonra tekrar yeni bir SQL Server 2005 Instance' ı kurarken karşınıza çıkar.

Ayrıca sunucuyu kaç kere yeniden başlatırsanız başlatın, bu hatayı almaya devam edersiniz. Yani tam saç baş yolduracak cinsten bir hata =)

ÇÖZÜM:
Bu hatadan kurtulmak için aşağıdaki adımları gerçekleştirin:

- Regedit' i açın.
- F3' kısayol tuşuna tıklayarak Find' ı açın ve tırnakları kullanmadan şu değeri aratın: "PendingFileRenameOperations".
- Muhtemelen iki değerde sonuç verecek ve bu değerlerin adı da şöyle olacak: "Pending Rename Operations"
- Bu değer içerisinde yazan: "CurrentControlSet\Control\Session Manager\PendingFileRenameOperations" bilgisini temizleyip kaydedin.

Bu adımları izlediğiniz takdirde, sunucunuzu tekrar başlatmanıza gerek kalmadan SQL Server 2005 Setup' ı tekrar çalıştırdığınızda "System Configuration Check" penceresinde bu hata ile karşılaşmayacaksınız.

"Cannot use file 'X:\tempdb.mdf' for clustered server. Only formatted files on which the cluster resource of the server has a dependency can be used."

HATA MESAJI:
Cannot use file 'X:\tempdb.mdf' for clustered server. Only formatted files on which the cluster resource of the server has a dependency can be used.

AÇIKLAMA:
TEMPDB veritabanını aşağıdaki koda benzer bir kod ile başka bir Storage' a taşımayı denediğinizde bu hatayı alabilirsiniz.

USE master;
GO
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'X:\tempdb.mdf');
GO
ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'X:\templog.ldf');
GO

Bunun nedeni, "X:" sürücünüzün Cluster' daki Physical Disk Resource' unun, ilgili SQL Server Service Resource' nun Dependencies listesinde olmayışıdır.

ÇÖZÜM:
TEMPDB için kullanmayı düşündüğünüz diskin Phsycal Disk Resource' sunu ilgili SQL Server Service Resource' sunun Dependencies listesine eklemek için aşağıdaki adımları izleyin:

- Cluster Administrator' ı açın.
- SQL Server Resource' u gibi, SQL Server ile alâkalı tüm Phsycal Disk Resource' larının da SQL Server Resource' uyla aynı Cluster Group' unda olmasını sağlayın.
- SQL Server Resource' una farenin sağ tuşuyla tıklayın ve bu Resource' u "Take Offline" seçeneğiyle Offline duruma getirin.
- SQL Server Resource' una tekrar farenin sağ tuşuyla tıklayın ve Properties' i açın.
- Dependencies sekmesine tıklayın.
- SQL Server Resource' unun kullanacağı diskleri eklemek için "Modify" düğmesine tıklayın.
- SQL Server Resource' unu Bring Online seçeneği ile tekrar Online duruma getirin ve böylece artık yukarıdaki komutları kullanarak TEMPDB' nizi ilgili Phsycal Disk Resource' una taşıyabilirsiniz.

4 Ocak 2009 Pazar

İpucu: Indexed View

Indexed View' lerin, Query Optimizer tarafından uygun görüldüğü takdirde SQL Server 2005 ve üst versiyonlarının Enterprise Edition' ları tarafından otomatik olarak kullanılabileceğini biliyor muydunuz? SQL Server 2005' in diğer Edition' ları için ise, Query Optimizer' ın Indexed View' leri kullanması için "NOEXPAND" Table Hint' ini kullanmanız gerekiyor.

İpucu: DDL komutlarıyla bir nesne oluştururken...

DDL komutlarıyla (CREATE, ALTER, DROP) bir nesne oluştururken, bu nesne için bir Schema adı kullanmayı ihmal etmeyin. Eğer bir Schema adı kullanmazsanız SQL Server o nesneyi, önce bu nesneyi çağıran kullanıcının varsayılan Schema' sının altında, daha sonra da "dbo" Scheması altında arayacaktır.