Basit Parameterization

Içinde SQL Server, parametreleri veya parametre imleyicileri içinde kullanma Transact-SQL ifadeleri, ilişkisel altyapı yeni bir SQL deyimi, önceden derlenmiş yürütme planları ile'eşleşen yeteneğini artırır.

Security noteSecurity Note:

Son kullanıcılar tarafından yazılan değerleri değerler ya da veri erişim API yöntem, yürütmek deyim kullanarak sonra yürütülen bir dizeye bitiştirme'den daha güvenli tutmak için parametre veya parametre imleyicileri kullanan veya Sp_executesql saklı yordamını.

Parametreler olmadan, bir SQL deyim gerçekleştirildiğinde SQL Server dahili olarak, varolan bir yürütme planı karşı eşleşen olasılığını artırmak için deyim parameterizes. Bu işlem, basit parameterization denir.Içinde SQL Server 2000, işlem otomatik olarak parameterization başvurulan.

Bu deyim göz önünde bulundurun:

SELECT * FROM AdventureWorks.Production.Product 
WHERE ProductSubcategoryID = 1;

deyim sonunda 1 değeri, parametre olarak belirtilebilir.Parametre 1 değeri yerine belirtilen gibi ilişkisel altyapı, bu toplu iş iş işlemi için yürütme planı oluşturur.Bu basit parameterization nedeniyle SQL Server Aşağıdaki iki deyim temelde aynı yürütme planı oluştur ve ilk ikinci tablo için plan yeniden algılar:

SELECT * FROM AdventureWorks.Production.Product 
WHERE ProductSubcategoryID = 1;

SELECT * FROM AdventureWorks.Production.Product 
WHERE ProductSubcategoryID = 4;

Karmaşık SQL deyimleri işlerken, ilişkisel altyapı hangi ifadeler parametreli belirleme zorluk olabilir.ilişkisel altyapı, kullanılmayan yürütme planları için karmaşık SQL deyimleri eşleşen yeteneğini artırmak için , açık olarak kullanarak parametrelerini belirtin Sp_executesql veya parametre imleyicileri.Daha fazla bilgi için bkz:Parametreler ve yürütme, yeniden planla.

Not

Zaman +,-, *, /, veya % aritmetik işleçler, örtülü veya açık dönüştürme gerçekleştirmek için kullanılır int, smallint, tinyint, veya bigint için sabit değerleri float, real, decimal veya numeric veri türleri SQL Server duyarlık ifade sonuçlarının ve türünü hesaplamak için belirli kurallar uygulanır. Ancak, bu kurallar, mı yoksa sorgu veya parametrelenmiştir bağlı farklı.Bu nedenle, benzer ifadeleri sorgularda bazı durumlarda, farklı sonuçlar alabilirsiniz.Daha fazla bilgi için bkz:int, bigint, smallint ve tinyint (Transact-SQL).

Basit bir parameterization varsayılan davranışını altında SQL Server görece küçük bir sınıf sorgularının parameterizes. Ancak, veritabanındaki tüm sorguları, bazı sınırlamalar için FORCED için ALTER DATABASE komutunun PARAMETERIZATION seçeneği ayarlayarak parametreli gerektiğini belirtebilirsiniz.Bunu yaparsanız, sorgu derleme sıklığı azaltarak eşzamanlı sorguları yüksek miktarlarda karşılaşan veritabanlarının performansını artırabilir.Daha fazla bilgi için bkz:Zorlanmış Parameterization.

Alternatif olarak, tek bir sorguda ve tüm diğerleri sözdizimsel olarak eşdeğer olan, ancak yalnızca kendi parametre değerleri, farklı parametreli gerektiğini belirtebilirsiniz.Daha fazla bilgi için bkz:Plan Kılavuzları'nı kullanarak sorgu Parameterization davranışı belirleme.

See Also

Other Resources