30 Ekim 2011 Pazar

Sql RPC Mesajı

Sqlde geliştirme yaparken şu tarz bir hata mesajı alırsanız,

Server 'ServerName' is not configured for RPC.

,yapmamız gereken çok basit bir işlem var demektir. Object Explorer üzerinden hangi server üzerinden RPC hatası verdiyse o server'in linked server properties'ine gelip Server Options tabından, RPC Out özelliğini true yapmalıyız.


23 Ekim 2011 Pazar

Sql'de Recompile

Sql'de Stored Procedure yazarken arka planda üç temel iş gerçekleşir. Bunlar Parsing,Compiling ve Executing'dir. Kısaca neler olduklarını açıklamak gerekirse,

Parsing, yazdığımız kodun syntax olarak hata içerip içermediğinin kontrol zamanıdır,
Compiling, yazdığımız prosedürün execution planını oluşturup bunu geçici hafızaya atılma zamanıdır,
Executing ise anlaşılacağı üzere kodun çalıştığı anda DML'e bildirilen zamandır.

İşte compiling zamanında execution plan'ın hafızaya atılması bazı durumlarda kodumuza hız katabilir. Fakat bazı durumlarda da tablo yapıları veya indeksler çok sık değiştiğinden bu hafızaya atılan execution plan'lar yarar yerine zarar getirir. Bunu nasıl anlarız? ilk derlemede prosedürümüz hızlı çalışıp, sonraki çalıştırmalarda gözle görülür bir yavaşlama varsa, nedeni bu olabilir. Bundan kaçınmak için yapmamız gereken RECOMPILE keyword'unu prosedüre tanıtmak. Kısaca kullanılışı;

CREATE PROCEDURE SatisRapor
WITH RECOMPILE
AS
    ....

Böylece Recompile yazarak, artık execution plan'ın hafızaya atılmasını engelledik.