Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analytics Platform System (PDW)
ODBC API, Transact-SQL ifadesinin tekrar tekrar çalıştırılmasıyla ilişkili ayrıştırma ve derleme yükünü azaltmak için hazırlanmış yürütmeyi tanımlar. Uygulama, bir SQL ifadesi içeren bir karakter dizisi oluşturur ve ardından bunu iki aşamada çalıştırır. Bu yöntem, ilanı ayrıştırıp Database Engine tarafından bir yürütme planına derlemek için SQLPrepare Function'u bir kez çağırır. Daha sonra hazırlanmış yürütme planının her yürütülmesi için SQLExecute çağrılır. Bu, her uygulamada ayrıştırma ve derleme yükünü azaltır. Hazırlanmış yürütme, uygulamalar tarafından aynı parametreli SQL ifadesini tekrar tekrar çalıştırmak için yaygın olarak kullanılır.
Çoğu veritabanı için, hazırlanmış yürütme, üç veya dört kez daha fazla çalıştırılan ifadeler için doğrudan yürütmeden daha hızlıdır çünkü ifade yalnızca bir kez derlenirken, doğrudan yürütülen imalar her yürütüldüğünde derlenir. Hazırlanmış yürütme ayrıca, sürücünün tüm SQL ifadesi yerine bir yürütme planı tanımlayıcısı ve parametre değerlerini veri kaynağına gönderebildiği için ağ trafiğinde de azalma sağlayabilir.
SQL Server, SQLExecDirect'ten alınan uygulama planlarını tespit etme ve yeniden kullanma için geliştirilmiş algoritmalar sayesinde doğrudan ve hazırlıklı yürütme arasındaki performans farkını azaltır. Bu, doğrudan yürütülen ifadelere hazırlanmış yürütmenin bazı performans avantajlarını sunar. Daha fazla bilgi için Doğrudan Uygulama'ya bakınız.
SQL Server ayrıca hazırlanmış yürütme için yerel destek sağlar. Bir yürütme planı SQLPrepare üzerine oluşturulur ve daha sonra SQLExecute çağrıldığında yürütülür. SQL Server'ın SQLPrepare'de geçici depolanmış prosedürler oluşturmak zorunda olmadığından, tempdb'deki sistem tablolarında ekstra bir yük yoktur.
Performans nedenleriyle, ifade hazırlama işlemi SQLExecute çağrılana veya metaproperty işlemi (örneğin ODBC'de SQLDescribeCol veya SQLDescribeParam gibi) gerçekleştirilene kadar ertelenmiştir. Bu varsayılan davranıştır. Hazırlanan ifadedeki hatalar, ifade yürütülene veya metaproperty işlemi yapılana kadar bilinmez. SQL Server Native Client ODBC sürücüye özgü ifade özetniteliğini SQL_SOPT_SS_DEFER_PREPARE SQL_DP_OFF olarak ayarlamak, bu varsayılan davranışı kapatabilir.
Ertelenmiş hazırlık durumunda, SQLExecute çağrısından önce SQLDescribeCol veya SQLDescribeParam çağrısı sunucuya ekstra bir gidiş-dönüş oluşturur. SQLDescribeCol'da, sürücü sorgudan WHERE cümlesini çıkarır ve sorgu tarafından döndürülen ilk sonuç kümesindeki sütunların açıklamasını almak için SET FMTONLY ON ile sunucuya gönderir. SQLDescribeParam'da, sürücü sunucuyu çağırarak sorgudaki herhangi bir parametre işaretçisi tarafından referans verilen ifadeler veya sütunların tanımını alır. Bu yöntemin ayrıca alt sorgularda parametreleri çözememesi gibi bazı kısıtlamaları vardır.
SQL Server Native Client ODBC sürücüsüyle SQLPrepare aşırı kullanımı, özellikle önceki SQL Server sürümlerine bağlandığında performansı düşürür. Hazırlanan yürütme, tek bir kez yürütülen deyimler için kullanılmamalıdır. Hazırlanmış yürütme, tek bir ifadenin doğrudan yürütülmesine göre daha yavaştır çünkü istemciden sunucuya ekstra bir ağ dönüşü gerektirir. SQL Server'ın önceki sürümlerinde ayrıca geçici bir depolanmış prosedür de oluşturulur.
Hazırlanmış ifadeler, SQL Server'da geçici nesneler oluşturmak için kullanılamaz.
Bazı erken ODBC uygulamaları, SQLBindParameter kullanıldığı her seferde SQLPrepare kullanırdı. SQLBindParameterSQLPrepare kullanımını gerektirmez, SQLExecDirect ile kullanılabilir. Örneğin, yalnızca bir kez çalıştırılan bir depolanmış prosedürden dönüş kodu veya çıktı parametrelerini almak için SQLBindParameter ile SQLExecDirect kullanın. Aynı ifade birden fazla kez çalıştırılmayacaksa, SQLPindParameter ile SQLPrepare kullanmayın.