SORUN: SET CONCAT_NULL_YIELDS_NULL neden yordamlar recompile için depolanan

Makale çevirileri Makale çevirileri
Makale numarası: 294942 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Belirtiler

Derlenmiş bu BT yürütülen her bir saklı yordamın SET CONCAT_NULL_YIELDS_NULL deyimi içerir ve deyimi CONCAT_NULL_YIELDS_NULL geçerli ayarlarını değiştirir, yordamı çekirdekler. Bu durum performans sorunlarına neden olabilir.

Neden

Recompilation gerekir çünkü CONCAT_NULL_YIELDS_NULL ayarını değiştirme, sonuç hem de komutları algılanma şeklini değiştirir. SQL Server 7.0 ve SQL Server 2000 ' varsayılan olarak, ANSI standartları ile CONCAT_NULL_YIELDS_NULL ON olarak ayarlanır.

KAPALı CONCAT_NULL_YIELDS_NULL ayarlama bağlandıklarında, ODBC ve OLE DB bu özellik için ON ayarlandığından veritabanına düzeyi istenen sonucu getirebilecek değil. (Bu biraz bağlantı pakette belirtilir, çünkü SQL Profiler bu özellik ayarlı göstermez.)

Pratik Çözüm

Saklı yordamın içinde CONCAT_NULL_YIELDS_NULL izin ayarlamayın. Önerilen çözüm ISNULL</a0> işlevini dizeleri bitiştirmek zaman kullanmaktır.

Örneğin, bir sorgu gibi yazılması gerekir:
SELECT * FROM mytable WHERE name LIKE 'Xavier ' + ISNULL(@lastname,'') + '%'
				
yerine a?a??daki:
SELECT * FROM mytable WHERE name LIKE 'Xavier ' + @lastname + '%'
				
önerilmez, ancak SET CONCAT_NULL_YIELDS_NULL deyimi, saklı yordamını çalıştırmadan önce vermek için bir diğer çözüm olabilir.

Daha fazla bilgi

Saklı yordamları, bu makalede adresleri tek nedeni, derlenmiş çekirdekler; ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
243586INF: Saklı yordam Recompilation sorun giderme

Özellikler

Makale numarası: 294942 - Last Review: 16 Ekim 2003 Perşembe - Gözden geçirme: 3.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Anahtar Kelimeler: 
kbmt kbprb KB294942 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:294942

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com