Microsoft, Microsoft SQL Server 2008 ve Microsoft SQL Server 2008 R2 düzeltmelerini indirilebilir tek bir dosya olarak dağıtır. Düzeltmeler birikmeli olduğundan, her yeni sürüm önceki SQL ServerSQL Server 2008 veya SQL ServerSQL Server 2008 R2 düzeltme sürümünde yer alan tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir.
Belirtiler
Aşağıdaki senaryoyu ele alalım:
- Microsoft SQL ServerSQL Server 2008 veya Microsoft SQL ServerSQL Server 2008 R2'de saklı yordam oluşturursunuz.
- Saklı yordam bir ikili büyük nesne (BLOB) değişkeni kullanır.
- BLOB değişkeni bir dize işlevinde kullanılır.
- Saklı yordamı yürütürsünüz.
Bu senaryoda, saklı yordamın sorgu planı önbelleğe alınmamıştır.
Çözüm
Toplu güncelleştirme bilgileri
SQL ServerSQL Server 2008 Service Pack 1
Bu soruna yönelik düzeltme ilk olarak SQL Server 2008 Service Pack 1 için Toplu Güncelleştirme 10'da yayımlanmıştır. Bu toplu güncelleştirme paketi hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
SQL Server 2008 Service Pack 1 için 2279604 Toplu Güncelleştirme Paketi 10Not: Derlemeler birikimli olduğundan, her yeni düzeltme önceki SQL Server 2008 düzeltme sürümüne eklenmiş olan tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. Microsoft, bu düzeltmeyi içeren en son düzeltme sürümünü uygulamayı düşünmenizi önerir. Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
970365 SQL Server 2008 Service Pack 1 yayımlandıktan sonra yayımlanan SQL Server 2008 derlemeleri Belirli SQL Server hizmet paketleri için Microsoft SQL Server 2008 düzeltmeleri oluşturulmuştur. Bir SQL ServerSQL Server 2008 Service Pack 1 yüklemesine bir SQL ServerSQL Server 2008 Service Pack 1 düzeltmesi uygulamanız gerekir. Varsayılan olarak, bir SQL ServerSQL Server hizmet paketinde sağlanan tüm düzeltmeler, bir sonraki SQL ServerSQL Server hizmet paketine dahil edilir.
SQL ServerSQL Server 2008 Service Pack 2
Bu soruna yönelik düzeltme ilk olarak SQL Server 2008 Service Pack 2 için Toplu Güncelleştirme 1'de yayımlanmıştır. Bu toplu güncelleştirme paketi hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
2289254 SQL Server 2008 Service Pack 2 için Toplu Güncelleştirme 1Not: Derlemeler birikimli olduğundan, her yeni düzeltme önceki SQL Server 2008 düzeltme sürümüne eklenmiş olan tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. Bu düzeltmeyi içeren en son düzeltme sürümünü uygulamayı düşünmenizi öneririz. Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
2402659 SQL Server 2008 Service Pack 2 yayınlandıktan sonra yayımlanan SQL Server 2008 derlemeleri
SQL Server 2008 R2
Bu soruna yönelik düzeltme ilk olarak Toplu Güncelleştirme 4'te yayınlandı. SQL Server 2008 R2 için bu toplu güncelleştirme paketini edinme hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
SQL Server 2008 R2 için 2345451 Toplu Güncelleştirme Paketi 4 Not Derlemeler birikimli olduğundan, her yeni düzeltme önceki SQL Server 2008 R2 düzeltme sürümüne dahil edilen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. Bu düzeltmeyi içeren en son düzeltme sürümünü uygulamayı düşünmenizi öneririz. Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
981356 SQL Server 2008 R2 yayınlandıktan sonra yayımlanan SQL Server 2008 R2 derlemeleri
Durum
Microsoft bunun, "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde sorun olduğunu doğrulamıştır.
Daha Fazla Bilgi
Bu sorunu yeniden oluşturmak için şu adımları izleyin:
Aşağıdaki kodu çalıştırarak iki saklı yordam ("p_test1" ve "p_test2") oluşturun. "P_test1" bir BLOB değişkeni kullanır ve "p_test2" bir nvarchar(100) değişkeni kullanır.
Git
if OBJECT_ID('p_test1') is not null drop proc p_test1
if OBJECT_ID('p_test2') is not null drop proc p_test2
Git
Proc p_test1 oluşturma
@s nvarchar(max)
olarak
başla
select * from sys.objects
burada ad = BÜYÜKHARF(@s)
bitiş
Git
Proc p_test2 oluşturma
@s nvarchar(100)
olarak
başla
select * from sys.objects
burada ad = BÜYÜKHARF(@s)
bitiş
GitYordam önbelleğini temizlemek ve iki saklı yordamı yürütmek için aşağıdaki kodu çalıştırın:dbcc freeproccache
Git
exec p_test1 N'abc'
exec p_test2 N'abc'
GitÖnbelleğe alınan planı denetlemek için aşağıdaki kodu çalıştırın: select object_name(CONVERT(int, a.value)), cp.*
sys.dm_exec_cached_plans CP'den
Çapraz uygulama sys.dm_exec_plan_attributes(cp.plan_handle) a
where cp.objtype = 'Proc'
ve a.attribute = 'objectid'
Not Microsoft SQL ServerSQL Server 2008 veya Microsoft SQL Server 2008 R2 örneğinde bu tür saklı yordamın birden çok eşzamanlı yürütülmesi varsa, örnekteki derleme kilitlerinin neden olduğu engellemelerle karşılaşabilirsiniz.
Derleme kilitlerinin neden olduğu SQL Server engellemenin açıklaması hakkında daha fazla bilgi için aşağıdaki Microsoft Bilgi Bankası makalesine bakın:
263889 Derleme kilitlerinin neden olduğu SQL Server engellemenin açıklaması
Başvurular
Dize işlevleri (Transact-SQL) hakkında daha fazla bilgi için aşağıdaki Microsoft web sitesini ziyaret edin:
Dize işlevleri (Transact-SQL) SQL Server için Artımlı Hizmet Modeli hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
935897 Bildirilen sorunlara yönelik düzeltmeler sağlamak için SQL Server ekibi tarafından bir Artımlı Bakım Modeli sağlanır
SQL Server güncelleştirmelerin adlandırma şeması hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
822499 Microsoft SQL Server yazılım güncelleştirme paketleri için yeni adlandırma şemasıYazılım güncelleştirme terminolojisi hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
824684 Microsoft yazılım güncelleştirmelerini açıklamak için kullanılan standart terminolojinin açıklaması