Aracılığıyla paylaş


Hazırlanmış yürütme

odbc API hazırlanmış yürütme ayrıştırma azaltmak için bir yol tanımlar ve derleme yükü sürekli yürütme ile ilişkili bir Transact-SQL deyim.Uygulama bir karakteri oluşturur dize içeren bir sql deyim ve sonra onu iki aşamalı olarak yürütür.Onu çağıran SQLPrepare incelendikten ve yürütme planı tarafından içine derlenmiş deyim için bir kez Veritabanı Altyapısı.Daha sonra çağırır SQLExecute hazırlanmış yürütme planı her yürütülmesi için.Bu ayrıştırma ve her yürütme iş yükünü derleme kaydeder.Hazırlanmış yürütme, uygulamalar tarafından tekrar tekrar aynı, parametreli SQL deyim yürütmek için yaygın olarak kullanılır.

Çoğu veritabanı için hazırlanmış yürütme doğrudan yürütme en fazla üç deyimleri yürütülen veya deyim doğrudan yürütülen deyimleri sırasında yalnızca bir kez, öncelikle derlenmiş olduğundan dört kez her saat bunların yürütülme derlenen hızlıdır.Hazırlanmış yürütme de sağlayabilir ağ trafiğinin azalmasına sürücü için veri yürütme planı tanımlayıcı ve parametre değerleri yerine, tüm bir sql deyim gönderebilir çünkü kaynak deyim yürütüldüğünde her saat.

SQL Server 2000daha sonra algılama ve yürütme planları arasında yeniden kullanma gelişmiş algoritmalar ile doğrudan ve hazırlanmış yürütme arasındaki performans farkı azalır ve SQLExecDirect.Bu bazı performans üstünlüklerinden hazırlanmış yürütme ifadelerini doğrudan yürütülmesi için kullanılabilmesini sağlar.Daha fazla bilgi için bkz: Doğrudan yürütme.

SQL Server 2000 ve daha sonra da hazırlanmış yürütme için yerel destek sağlar.Yürütme planı yerleşik SQLPrepare ve daha sonra ne zaman SQLExecute denir.sql Server 2000 ve sonraki geçici saklı yordamlar oluşturma gerekli olduğu SQLPrepare, yok hiçbir ekstra yük üzerinde sistem tabloları , tempdb.

Performans nedenlerinden dolayı deyim hazırlık kadar ertelenmiş SQLExecute denir veya metaproperty işlemi (gibi SQLDescribeCol veya SQLDescribeParam odbc içinde) gerçekleştirilir.Bu varsayılan davranıştır.İlkönce kaldırılmak deyim içinde herhangi bir hata deyim yürütüldü veya bir metaproperty işlemi gerçekleştirilen kadar bilinmez.Ayar SQL Server yerel istemci odbc sürücüsü özgü deyim öznitelik sql_dp_off için sql_sopt_ss_defer_prepare kapatmak bu varsayılan davranışı.

De durum , ertelenmiş hazırlamak, ya da arayan SQLDescribeCol veya SQLDescribeParam önce edinilecek SQLExecute sunucu için fazladan bir gidiş dönüş oluşturur.Üzerinde SQLDescribeCol, sürücü sorgunun where yan tümce tümce tümce kaldırır ve küme fmtonly on ilk sorgu tarafından döndürülen sonuç küme sütun açıklaması almak için sunucuya gönderir.Üzerinde SQLDescribeParam, ifadeler veya herhangi bir parametre imleyicileri sorgu tarafından başvurulan sütunları bir açıklama almak için sunucu sürücüsünü çağırır.Bu yöntem ayrıca parametreler alt sorgular içinde çözmeniz mümkün olmadığı gibi bazı kısıtlamalar vardır.

Fazla kullanımı SQLPrepare ile SQL Server Performans, özellikle bağlanıldığında önceki sürümlerine yerel istemci odbc sürücüsü düşüyor. sql Server Hazırlanmış yürütme kullanılmamalıdır için deyimleri yürütülen tek bir saat.Hazırlanmış yürütme gelen bir ek ağ gidiş dönüş gerektirdiğinden yavaştır doğrudan çalıştırılmak üzere bir deyim, tek bir yürütme istemci sunucu.Önceki sürümlerinde SQL Server de oluşturduğu bir geçici olarak saklanan yordam.

Geçici nesneler oluşturmak için hazırlanmış deyimleri kullanılamaz SQL Server 2000 ya da daha sonra veya önceki sürümleri sql Server ise saklı yordamları oluşturmak için seçeneği etkin.Bu seçeneği açık olan geçici olarak saklanan yordam hazırlanmış deyim yerleşik ne zaman yürütülen SQLExecute denir.Yordamı tamamlandığında, geçici saklı yordam yürütme sırasında oluşturulan herhangi bir nesneyi otomatik olarak çıkarılır.Aşağıdaki örnekler sonuçlarda birini geçici tablo #sometable hazırlık için saklı yordamları oluşturmak için seçeneği etkinse oluşturuluyor:

SQLPrepare(hstmt,
   "CREATE TABLE #sometable(cola int, colb char(8))",
   SQL_NTS);
SQLExecute(hstmt);

veya

SQLPrepare(hstmt,
   "SELECT * FROM Authors INTO #sometable",
   SQL_NTS);
SQLExecute(hstmt);

Kullanılan bazı erken odbc uygulamaları SQLPrepare saat SQLBindParameter kullanıldı.SQLBindParameter kullanımını gerektiren SQLPrepare, birlikte kullanılabilir SQLExecDirect.Örneğin, SQLExecDirect ile SQLBindParameter iade almak için kod veya çıkış parametreleri yalnızca bir saklı yordamdan gelen bir yürütülen saat.Kullanın SQLPrepare ile SQLBindParameter sürece birden çok kez aynı deyim yürütülür.

Ayrıca bkz.

Kavramlar