Düzeltme: SQL Server 2008 veya SQL Server 2005'te Web eşitleme birleştirme çoğaltması kullandığınızda bellek yetersiz hata iletileri alıyorsunuz

# Hata: 119532 (İçerik Bakımı)
Sayı VSTS hata: 344705
Sayı VSTS hata: 365477
Sayı VSTS hata: 365476

Microsoft, Microsoft SQL Server 2005 düzeltmeleri karşıdan yüklenebilen bir dosya dağıtır. Düzeltmeleri birikimlidir, her yeni sürüm tüm düzeltmeleri içerir ve sürüm önceki SQL Server 2005 ile gelen tüm güvenlik düzeltmelerini düzeltmek çünkü. Microsoft, Microsoft SQL Server 2008 düzeltmeleri karşıdan yüklenebilen bir dosya dağıtır. Düzeltmeleri birikimlidir, her yeni sürüm tüm düzeltmeleri içerir ve sürüm önceki SQL Server 2008'de bulunan tüm güvenlik düzeltmelerini düzeltmek çünkü.

Belirtiler

SQL Server 2005 birleştirme çoğaltması kullanın veya SQL Server 2008 birleştirme çoğaltması Web eşitleme abone bağlı. Yinelenen eşitlemeler sonra bellek sızıntısı oluşuyor ve bir süre sonra "bellek yetersiz" hatası alabilirsiniz. Ana bilgisayar işlemi Birleştirme Aracısı (Replmerg.exe) ile sürekli - anahtarı kullanıldığında gibi uzun bir süre için yeniden değil, bu dikkat çekici olur veya Aracısı profilde öğesine uygulanan sürekli parametresi belirtildiğinde. Ayrıca bu sorun bir RMO uygulaması veya uygulama çıkmadan birkaç gün boyunca çalışırken eşitleme bir döngüde çalışır, geliştirilmiş hizmet etkileyebilir.

Neden

Birkaç dahili nesneleri her eşitleme sırasında sızmasına.

Çözüm

SQL Server 2005 Service Pack 3


Bu sorunla ilgili düzeltme, SQL Server 2005 Service Pack 3 için toplu güncelleştirme 6 önce 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ını tıklatın:

974648 toplu güncelleştirme paketi 6 SQL Server 2005 Service Pack 3 içinNot: Yapýlar birikimli olduğu için her yeni düzeltme yayımlanan tüm düzeltmeleri içerir ve sürüm önceki SQL Server 2005 ile gelen tüm güvenlik düzeltmelerini düzeltin. Microsoft, bu düzeltmeyi içeren en son düzeltme sürümü uygulama ele almanızı ö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:

960598 SQL Server 2005, SQL Server 2005 Service Pack 3 yayımlandıktan sonra yayımlanan oluşturur.
Microsoft SQL Server 2005 düzeltmeleri belirli SQL Server hizmet paketleri için oluşturulur. SQL Server 2005 Service Pack 3 yüklemesi için bir SQL Server 2005 Service Pack 3 düzeltme uygulamanız gerekir. Varsayılan olarak, bir SQL Server hizmet paketinde sağlanan herhangi bir düzeltme sonraki SQL Server hizmet paketinde bulunmaktadır.

SQL Server 2008'in yayın sürümü

Önemli SQL Server 2008'in yayım sürümünü çalıştırıyorsanız, bu düzeltmeyi yüklemeniz gerekir.

Bu sorunla ilgili düzeltme, ilk toplu güncelleştirme 8'de yayımlanmıştır. SQL Server 2008 için bu toplu güncelleştirme paketini elde etme hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:

SQL Server 2008 için 975976 toplu güncelleştirme paketi 8Not: Derlemeler birikimli olduğu için her yeni düzeltme, bir önceki SQL Server 2008 düzeltme sürümünde bulunan tüm düzeltmeleri ve güvenlik düzeltmelerini içerir. Bu düzeltmeyi içeren en son düzeltme sürümü uygulama ele almanızı ö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:

956909 SQL Server 2008, SQL Server 2008'de yayımlandıktan sonra yayımlanan oluşturur

SQL Server 2008 Service Pack 1

Önemli SQL Server 2008 Service Pack 1'i çalıştırıyorsanız, bu düzeltmeyi yüklemeniz gerekir.


Bu sorunla ilgili düzeltme, önce SQL Server 2008 Service Pack 1 için toplu güncelleştirme 5'te 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ını tıklatın:

SQL Server 2008 Service Pack 1 için 975977 toplu güncelleştirme paketi 5Not: Derlemeler birikimli olduğu için her yeni düzeltme, bir önceki SQL Server 2008 düzeltme sürümünde bulunan tüm düzeltmeleri ve güvenlik düzeltmelerini içerir. Microsoft, bu düzeltmeyi içeren en son düzeltme sürümü uygulama ele almanızı ö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, SQL Server 2008 Service Pack 1'de yayımlandıktan sonra yayımlanan oluşturur
Microsoft SQL Server 2008 düzeltmeleri belirli SQL Server hizmet paketleri için oluşturulur. SQL Server 2008 Service Pack 1 yüklemesi için bir SQL Server 2008 Service Pack 1 düzeltme uygulamanız gerekir. Varsayılan olarak, bir SQL Server hizmet paketinde sağlanan herhangi bir düzeltme sonraki SQL Server hizmet paketinde bulunmaktadır.

Durum

Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.

Geçici çözüm

Bu soruna geçici bir çözüm için aşağıdaki yöntemlerden birini kullanın:

Yöntem 1

Birleştirme Aracısı sürekli modunda kullanıyorsanız, Birleştirme Aracısı işlemi belirli aralıklarla durdurun ve yeniden başlatın.

Örneğin, beş gün sonra "bellek yetersiz" hatası alıyorsunuz ve, Birleştirme Aracısı iş olarak planlanır. Daha sonra sp_stop_job sp_start_job tarafından etkilenen işlemi beş günde geçiş yapmak, Birleştirme Aracısı iş adı belirterek ve ardından arama için yeni bir SQL Server Agent iş zamanlama. Birleştirme Aracısı (Replmerg.exe) işlemini durdurduğunuzda, işlem bellek alanı içinde herhangi bir sızdırılan bellek serbest bırakılır.

Kullanımı hakkında daha fazla bilgi için - sürekli anahtarının Birleştirme Aracısı, aşağıdaki Microsoft Developer Network (MSDN) Web sitesine bakın:

http://msdn.microsoft.com/en-us/library/ms147839.aspx

sp_stop_job http://msdn.microsoft.com/en-us/library/ms182793(SQL.90).aspx

sp_start_job http://msdn.microsoft.com/en-us/library/ms186757(SQL.90).aspx

Yöntem 2

Birleştirme Aracısı bir işten kullanırsanız, işin içine el ile döngü mantığı sürekli parametresi güvenmek yerine ek adımları kullanarak yapılandırabilirsiniz. Dahili olarak sonsuza kadar sürekli döngü bir Birleştirme Aracısı işlemi yerine Birleştirme Aracısı iş adım her dakika gibi düzenli aralıklarla yinelenen olarak zamanlayın. İşlemi yeniden denemeler arasında çıkacak ve bu herhangi bir sızdırılan bellek serbest bırakır.
Birleştirme Aracısı iş arasında bir duraklama ile beraber bir döngü içinde adımları tekrarlayın böylece yineler düzenleyin.

  1. Sonra adım [3] [4] yeni adım Ekle "nonlogged aracısı kapatma saptama" "Belirsiz yeniden deneme döngüsü" adlı TSQL ve komutu için türü belirlenmiş "waitfor gecikme ' 0: 00:05'", bu TSQL gecikme Birleştirme Aracısı'nı duraklatma kısaca yürütmeleri arasında ve sürekli çalışmaz bir şekilde bir yoklama aralığı olarak yapılandırdığınız 5 ikinci duraklama sağlayacaktır. Gelişmiş sekmesinde "üzerinde başarı eylemi" olarak "[2] Çalıştır Aracısı adım Git" ve "Failure Action" "Git" [2] adım Çalıştır aracısı olarak belirtin

  2. Adım [4] döngü ulaşıldığında sağlamak için adım [2] Çalıştır Aracısı düzenleyin. Üzerinde başarı eylem adım [2] Gelişmiş sekmesinde ayarlanır "adıma gidin: [4] belirsiz yeniden deneme döngüsü" ve "Git" sonraki adıma On başarısızlık eyleme ayarlayın

  3. Adım [3] Düzenle "Algıla nonlogged aracısı kapatma" adım [4] döngüde ulaşıldığında emin olmak için. Üzerinde başarı "sonraki adıma geçin" eylemi, adım [3] Gelişmiş sekmesinde ayarlayın. Adım [3] hatası ayarlanacak eylemde isteyip istemediğinizi de karar verebilirsiniz gibi "sonraki adıma geçin" veya "hata raporlama iş çıkın." Çıkmak için yapılandırılmışsa, Replication Monitor ve proje İzleyicisi'nde iş hatası gösterecektir. Başarısızlık durumunda dördüncü döngüsü adımına gitmek için yapılandırılmışsa, Birleştirme Aracısı süresiz olarak tekrar ve sonsuza kadar hataların günlüğe.

Yöntem 3

Benzer şekilde bir döngü abone veritabanına eşitler MergeSynchronizationAgent.Synchronize() yöntemini çağırmak için RMO uygulama kullanırsanız, durdurun ve düzenli olarak, bu sorun nedeniyle sızmasına tüm belleği boşaltmak için işlemi başlatın.
Bu nesne ve yöntemi hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesine bakın: http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.replication.mergesynchronizationagent.synchronize(SQL.90).aspx

Daha fazla bilgi

Çağrı yığını bilgileri

Bellek sızıntısı 1


Varsayılan yığın bu bellek sızıntısı oluşur. Varsayılan yığın küçük 32 bayt dizesi sızıntısı nedeniyle çok parçalanmış hale gelir.0:000> !heapstats 0 -sHeap=0x00140000 BusyCount=1380235 BusyBytes=55115099
Found allocations in range of 0->151496 bytes.
Largest count is 850531 for memory blocks of size 32
Largest bytes used is 27216992 bytes for memory blocks of size 32

Size Count Total Percent Of Maximum Allocation Size In Range
------ ------ -------- ----------------------------------------------------------------------------------------------------
32 850531 27216992 ****************************************************************************************************
48 306892 14730816 ******************************************************
64 100583 6437312 ***********************
16 93995 1503920 *****
80 11068 885440 ***
151496 3 454488 *
256 1386 354816 *
160 1866 298560 *
904 131 118424

Bu örnekte, kabul edilen en çok 27 MB 32 bayt ayırma ekleyin. Ancak, çünkü kısmen sızdırılan bu nesnelerin yığın üzerinde yayılır ve bloklar arasında kullanılabilir alanı parçalara varsayılan öbek büyük ayırma vardır.



Bu 32 bayt ayırma çoğunu gelen kodu SysAllocString aramalardan SysFreeString veya DELETE çağrı yok burada.0:000> kLChildEBP RetAddr
0012b878 4c0a2f7b xmlsub!CXMLSubscriber::ReadAgentProfileParameter+0x1dd
0012b8b4 4e67a7e4 msgprox!CProxyMessageDatasource::ReadAgentProfileParameter+0x5b
0012bc18 4e6a65fe replrec!CDatabaseReconciler::UpdateAgentProfileCache+0x384
0012bda8 4e6a9281 replrec!CDatabaseReconciler::MoveChangesToDest+0x219e
0012cff8 4e6aae46 replrec!CDatabaseReconciler::CoreReconcile+0x1b01
0012d9ec 4e6ab388 replrec!CDatabaseReconciler::MessageReconcile+0x1206
0012ed90 4d1b651d replrec!CDatabaseReconciler::Reconcile+0x398
0012edd0 4dbf6331 sqlmergx!CSQLMerge::Run+0x18d
0012ede0 4de729b8 Microsoft_SqlServer_Replication!SQLMERGXLib::ISQLMerge::Run+0x11
0012ee70 4de70ed1 Microsoft_SqlServer_Replication_ni!Microsoft.SqlServer.Replication.MergeSynchronizationAgent.Run()+0x14c
0012eef8 00d2862b Microsoft_SqlServer_Replication_ni!Microsoft.SqlServer.Replication.MergeSynchronizationAgent.Synchronize()+0x71

C çalışma zamanı içinde ikinci bir sızıntısı oluşuyor COM nesneleri yığın çoğaltma ile ilgili. Bu sızıntı gösteren MDACExts uzantısıyla replrov.dll kitaplığın içindeki nesnelere vftable için tüm yığın tarama tarafından görülebilir! tablescan.0:000> !tablescan 'x replprov!*vftable*' 0Count Total Bytes Size Address Function
-------- ----------- ------ ---------- ----------------------------------------------------------------------------------------------------
1806 43344 24 0x4c9d1868 replprov!CReplicationProvider::`vftable'
1719 13752 8 0x4c9d1858 replprov!CSupportErrorInfo::`vftable'
1806 2066064 1144 0x4c9d1ba0 replprov!CMergePublisher::`vftable'
1806 7238448 4008 0x4c9d6250 replprov!CMergeDatasource::`vftable'
1806 7238448 4008 0x4c9d61a8 replprov!CMergeDatasource::`vftable'

Tablo tarama yoksa sızıntıya aksi belirtilmedikçe boyutlarına (24,8,1144, 4008) görüntüleyebilirsiniz. Bunu yapmak için aşağıdaki komutu yığınlara karşı çalıştırmak:0:000> !heapstats 0x003e0000 -s
Heap=0x003e0000 BusyCount=9363 BusyBytes=12555368
Found allocations in range of 4->8192 bytes.
Largest count is 1897 for memory blocks of size 8
Largest bytes used is 7238448 bytes for memory blocks of size 4008

Size Count Total Percent Of Maximum Allocation Size In Range
----- ----- ------- ----------------------------------------------------------------------------------------------------
4008 1806 7238448 ****************************************************************************************************
3128 900 2815200 **************************************
1144 1806 2066064 ****************************
etc...


CReplicationProvider üst nesnesidir. Üç alt nesneler geri işaretçiler üst nesneye sahip. Bu nedenle, bu nesneleri birbirine başvuru sayıları ile vardır. Bu nesneleri yok etmek için tüm başvuru sayıları 0 azaltmak gerekir. Başvuru sayıları birini kodu düzgün indirildiği olmadığı için dört nesneleri her zaman nesnelerinin örneklendiği yok edilmez.



Notlar

Programları izleme sızıntısı kullanırsanız, 3 4 sızdırılan nesnelerin tahsis "replprov! yöntemidir CReplicationProvider::InitInstance".



CReplicationProvider üzerinde yeni çağrı 4 nesnesidir.



2 bellek sızıntısı


Bu sürüm tarafından giderilen bir bellek sızıntısı yığın blok boyutu 32 bayt ve 48 bayt kullanır ve çoğaltılmış makalelerinden sütun adlarını içerir. Bu yığının bir bölümü aşağıda verilmiştir:xmlsub!CXMLSubscriberCommon::ReadNodexmlsub!CXMLSubscriberCommon::FindNamedNodeInList

Başvurular

Nasıl kullanılacağı hakkında daha fazla bilgi için - sürekli anahtar Birleştirme Aracısı, aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:

http://msdn.microsoft.com/en-us/library/ms147839.aspx
Sp_stop_job saklı yordamı hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:

http://http://msdn.microsoft.com/en-us/library/ms182793(SQL.90).aspx
Sp_start_job saklı yordamı hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:

http://msdn.microsoft.com/en-us/library/ms186757(SQL.90).aspx
Daha fazla bilgi için nasıl SQL Server 2005 Service Pack 3'ü edinmek için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:

913089 SQL Server 2005 için en son hizmet paketini elde etme

SQL Server 2005 Service Pack 3 (SP3) yeni özellikler hakkında ve SQL Server 2005 SP3'ndeki geliştirmeler hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:

http://go.microsoft.com/fwlink/?LinkId=131442SQL Server güncelleştirmelerinin 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ını tıklatın:

822499 yeni adlandırma şeması Microsoft SQL Server yazılım güncelleştirme paketlerinin

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ı

Yazar: jasonh
Yazan: v-jayc
Teknik İnceleme: jasonh;
Düzenleyen: v-stepce

Daha fazla yardıma mı ihtiyacınız var?

Yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Microsoft Insider 'a katılın

Bu bilgi yardımcı oldu mu?

Geri bildiriminiz için teşekkür ederiz!

Geri bildiriminiz için teşekkürler! Office destek temsilcilerimizden biriyle görüşmeniz yararlı olabilir.

×