Zorlanmış Parameterization

Varsayılanı geçersiz kılar Basit parameterization davranışıSQL Server veritabanındaki tüm SELECT, INSERT, UPDATE ve DELETE deyimlerini parametreli belirterek, belirli sınırlamaları konu. Zorlanmış parameterization FORCED içinde PARAMETERIZATION seçeneği ayarlayarak etkin alter VERİTABANI ekstresi.Zorlanmış parameterization sorgu derleme ve yeniden sıklığı azaltarak, belirli veritabanlarının performansını artırabilir.Zorlanmış parameterization ' yararlanabilir veritabanları genellikle yüksek birimleri point-of-sale uygulamaları gibi kaynaklardan eşzamanlı sorgularının karşılaşan bağlantılardır.

PARAMETERIZATION seçeneği olduğunda küme sorgu derlenirken bir SELECT içinde görüntülenen ZORLANMıŞ, herhangi bir hazır bilgi değeri için herhangi bir form içinde INSERT, UPDATE veya DELETE deyim için bir parametre dönüştürülür.Özel durumlar, aşağıdaki sorgu yapılar ' görüntülenen harfleri şunlardır:

  • ... yürütmek deyimlerinin INSERT.

  • Statements inside the bodies of stored procedures, triggers, or user-defined functions.SQL Server already reuses query plans for these routines.

  • Istemci tarafı uygulama zaten parametreli hazırlanmış deyimleri.

  • Yöntem bir bağlamda burada bağımsız değişkenlerinin genellikle, bir WHERE yan tümcesini gibi parametreli göründüğü, XQuery yöntem çağrıları içeren ifadeleri.Yöntem bir bağlamda burada bağımsız değişkenleri olmayan parametreli belirirse, deyimin geri kalanı parametrelenmiştir.

  • Ifade içinde bir Transact-SQL imleç. (SELECT deyimi içinde API imleçler parametreli.)

  • Onaylanmamış bir sorgu oluşturur.

  • ANSI_PADDING veya ANSI_NULLS içeriğinde çalıştırılan herhangi bir deyim KAPALı ayarlayın.

  • Parameterization için uygun olan birden fazla 2,097 harfleri içeren ifadeleri.

  • Değişkenleri gibi başvuru ifadeleri WHERE T.col2 >= @bb.

  • RECOMPILE sorgu ipucu içeren ifadeleri.

  • Bir COMPUTE yan tümce içeren ifadeleri.

  • WHERE CURRENT OF yan tümce içeren ifadeleri.

Ayrıca, aşağıdaki sorgu yan tümceleri parametreli değil.Bu gibi durumlarda, yan tümcesi yalnızca yok parametreli olduğunu unutmayın.Aynı sorgu içinde diğer yan tümceleri Zorlanmış parameterization için uygun olabilir.

  • The <select_list> of any SELECT deyim. Bu alt sorgular SELECT listesi ve INSERT deyimleri içinde SELECT listelerini içerir.

  • Bir IF deyim içinde görünen bir deyim alt sorgu.

  • TOP, TABLESAMPLE, HAVING, GROUP BY, ORDER BY, OUTPUT... INTO veya IÇIN XML yan tümcelerini sorgu.

  • Bağımsız değişkenler, doğrudan veya OPENROWSET, OPENQUERY OPENDATASOURCE OPENXML veya herhangi bir FULLTEXT işleç, subexpressions olarak.

  • The pattern and escape_character arguments of a LIKE yan tümce.

  • The style argument of a CONVERT yan tümce.

  • Tamsayı sabit bir IDENTITY yan tümce içinde.

  • Sabitler, ODBC uzantısı söz dizimini kullanarak belirtildi.

  • Bağımsız olan sabit foldable ifadeler +,-, *, / ve % işletmenleri.Zorlanmış bir parameterization için uygunluğunu belirleneceğine karar verirken SQL Server ifade aşağıdaki koşullardan biri doğru olduğunda sabit foldable olmasını dikkate alır:

    • Hiçbir sütun, değişkenleri veya alt sorgular, ifade görünür.

    • Ifade, bir durum yan tümce içeriyor.

    Sabit foldable ifadeler hakkında daha fazla bilgi için bkz: Düşük Query performans sorun giderme: Sabit Katlama ve ifade değerlendirme sırasında önem tahmin.

  • Sorgu ipucu yan tümceleri için bağımsız değişkeni.Bunlar number_of_rows HıZLı sorgu ipucu, bağımsız değişkeni number_of_processors bağımsız değişkeni MAXDOP sorgu ipucu ve number MAXRECURSION sorgu ipucu bağımsız değişkeni.

Parameterization tek düzeyde gerçekleşir. Transact-SQL ifadeler. Baþka bir deyiþle, bir toplu iş ayrı tablolarda parametreli.Parametreli hale getirilmiş bir sorguya derleme sonra bunu özgün gönderilme toplu iş iş bağlamında yürütülür.Bir sorgu için yürütme planı önbellekteyse, sorguyu başvurarak parametreli olup olmadığını belirleyebilirsiniz SQL sütunsys.syscacheobjects dinamik yönetimi görüntüleyin.Sorguda parametrelenmiştir, adları ve parametre veri türleri, bu sütundaki gönderilen toplu iş iş metinden önce gibi gelir (@ 1 tinyint).Sorgu planı önbelleğe alma hakkında daha fazla bilgi için bkz: Yürütme planı önbelleğe alma ve yeniden.

Not

Parametre rasgele adlardır.Kullanıcılar veya uygulamalar, belirli bir adlandırma siparişinde güvenmemelisiniz.Ayrıca, aşağıdaki sürümleri arasında değiştirmek için SQL Server ve hizmet paketi: Parametre adı seçimi parametreli harfleri ve parametreli metin aralığı.

Veri türleri, Parametreler

Ne zaman SQL Server rakamları, parameterizes parametreleri aşağıdaki veri türleri için dönüştürülür:

  • Boyutları yoksa içinde uyma tamsayı harfleri int veri türü parameterize için int. Içerir (herhangi bir karşılaştırma işleç ilgili yüklemler bölümleri olan daha büyük bir tamsayı hazır bilgi <, <=, =, !=, >, >=, , !<, !>, <>TÜMÜ, ANY, SOME, ARASıNDA ve IN) için parameterize numeric(38,0). Için karşılaştırma işleçlerini içeren yüklemler bölümleri olan büyük harfleri parameterize numeric Duyarlık, Ölçek 0 olan boyutuna ve desteklemek için yalnızca yeterince büyüktür.

  • Karşılaştırma işleçlerini içeren yüklemler bölümleri olan sabit noktalı sayısal hazır bilgi, için parameterize numeric duyarlık 38 ve, Ölçek boyutuna desteklemek için yalnızca yeterince büyük. Karşılaştırma işleçlerini içeren yüklemler bölümleri olan sabit noktalı sayısal hazır bilgi, için parameterize numeric duyarlık ve ölçeği boyutuna desteklemek için yalnızca yeterince büyüktür.

  • Için kayan nokta sayısal hazır bilgi parameterize float(53).

  • Için Unicode olmayan dize hazır bilgi parameterize varchar(8000) The literal 8000 karakterden içinde ve çok sığıyorsa varchar(max) 8000 karakterden daha büyük olduğunda.

  • Için Unicode dize hazır bilgi parameterize nvarchar(4000) The literal 4.000 Unicode karakter içinde ve çok sığıyorsa nvarchar(max) The literal 4000 karakterden daha büyükse.

  • Için ikili harfleri parameterize varbinary(8000) The literal içinde 8.000 bayt sığıyorsa. 8.000 Bayttan daha büyük olduğunda dönüştürülür varbinary(max).

  • Için Money türü sabit değerleri parameterize money.

Kullanma yönergeleri Parameterization zorlanan

Aşağıdaki noktaları göz önünde bulundurun olduğunda, küme FORCED PARAMETERIZATION seçeneği:

  • Zorlanmış parameterization, etkin sorguda literal sabitler parametreler için bir sorgunun derleme dönüşür.Bu nedenle, sorgu iyileştiricisi suboptimal planları sorguları için seçebilirsiniz.Özellikle, sorgu iyileştiricisi dizinli görünüm veya hesaplanmış bir sütunda dizin sorgu eşleşen daha olasıdır.Sorgu planları suboptimal bölümlendirilmiş tablolarda çıkan ve bölümlendirilmiş görünümlerde dağıtılmış de seçebilirsiniz.Zorlanmış parameterization, dizin oluşturulmuş görünümler ve hesaplanan sütunlar dizinlerde yoğun olarak kullanan ortamlar için kullanılmamalıdır.Genellikle, böylece belirleme performansı olumsuz yönde etkilemez sonra PARAMETERIZATION ZORLANMıŞ seçeneği yalnızca deneyimli veritabanı yöneticiler tarafından kullanılmalıdır.

  • PARAMETERIZATION seçeneği olduğu sürece birden fazla veritabanına başvuran dağıtılmış sorgular için Zorlanmış parameterization uygundur küme FORCED içerik sorguyu çalıştıran veritabanındaki için.

  • PARAMETERIZATION seçeneği için FORCED ayarlama planı önbelleğinden şu anda derleniyor, recompiling çalışan veya dışındaki bir veritabanının tüm sorgu planlarını temizler.Derleme veya ayar değişikliği sırasında çalışan sorgu planları sorgu yürütüldükten sonraki açışınızda parametreli.

  • PARAMETERIZATION seçeneğini veritabanı düzey hiçbir özel kilit gerektiren bir çevrimiçi işlemdir.

  • Zorlanmış parameterization olduğu zaman (ayarlanan değer: SIMPLE) devre dışı uyumluluğunu bir SQL Server veritabanı için 80 küme veya bir önceki örnekte, bir veritabanı örneğine iliştirilmiş SQL Server 2005 veya daha yeni.

  • PARAMETERIZATION seçeneğinin geçerli ayarlarını reattaching ya da bir veritabanını geri yüklemek için korunur.

Zorlanmış parameterization davranışını geçersiz kıl belirterek bu basit parameterization tek bir sorguda ve tüm diğer sözdizimsel olarak eşdeğer olan, ancak yalnızca parametre değerleri farklı çalışıldı.Bunun tersine, Zorlanmış parameterization denedi yalnızca belirtebilirsiniz bir küme veritabanında parameterization Zorlanmış olsa bile, sözdizimsel olarak eşdeğer sorguları devre dışıdır.Plan kılavuzları, bu amaçla kullanılır.Daha fazla bilgi için bkz:Plan Kılavuzları'nı kullanarak sorgu Parameterization davranışı belirleme.

Not

PARAMETERIZATION seçeneği FORCED için ayarlanmışsa, hata iletileri raporlama, basit parameterization farklı olabilir: birden çok hata iletileri, daha az ileti altında basit parameterization burada raporlanacak durumlarda ve satır numaralarını hataları bildirdi yanlış ortaya çıktığı raporlanabilir.