Makale numarası: 933564 - Son Gözden Geçirme: 28 Nisan 2010 Çarşamba - Gözden geçirme: 3.0

Düzeltme: SQL Server 2005'te BIR zaman içinde WPA'ya artırma bellek tüketimini USERSTORE_TOKENPERM önbellek deposu için oluşur.

Hotfix Download is availableHotfiks Yüklemesi Mevcut
Hotfiks taleplerini görüntüle ve indir
Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hata: # 50000945 (SQL düzeltmesi)
Microsoft, Microsoft SQL Server 2005 düzeltmeleri tek bir yüklenebilir dosya dağıtır. Düzeltmeleri birikimli olduğu için her yeni sürüm, tüm düzeltmeleri içerir ve sürüm önceki SQL Server 2005 ile birlikte verilen tüm güvenlik düzeltmelerini düzeltin.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bu makalede, bu düzeltme sürümü hakkında aşağıdaki açıklanır:
  • Bu düzeltme paketi ile giderilen sorunlar
  • Düzeltme paketini uygulamak için Önkoşullar
  • Yoksa, düzeltme paketini uyguladıktan sonra bilgisayarı yeniden başlatmanız gerekir
  • Düzeltme paketinin başka bir düzeltme paketiyle değiştirilip değiştirilmediği
  • Düzeltme paketini uyguladıktan sonra kayıt defteri değişiklikleri yapmanız gerekip
  • Düzeltme paketinin içerdiği dosyalar

Belirtiler

Ne zaman Microsoft SQL Server 2005 çalışan özel bir uygulama, bellek tüketimini USERSTORE_TOKENPERM önbellek deposu için zaman içinde WPA'ya bir artış oluşuyor sık veritabanı koruma zaman damgası değişiklikleri tetikleyen özelliklerini kullanır. Ayrıca, birçok yinelenen TokenAccessResult girdileri bir sınıf 65535 sys.dm_os_memory_cache_entries dinamik bir yönetim görünümü vardır.

Sorun hakkında ve veritabanı için zaman damgası değişiklikleri koruma neden olan koşullar hakkında daha fazla bilgi için "Daha fazla bilgi" bölümüne bakın.

Neden

Bir sorgunun toplu izni onay USERSTORE_TOKENPERM önbellek deposunda 65535 sınıf olan TokenAccessResult girişi olarak depolandığından, bu sorun oluşur. TokenAccessResult koruma zaman damgası güvenlik değişiklikleri oluşmuş olup olmadığını, önbellek girdisi kılacak belirlemek için kullanır. Eski girişler geçerli olabileceği için koruma zaman damgası değişiklikleri her zaman eski önbellek girdilerini yeniden kuramıyor. Bu nedenle, yeni bir önbellek girdisi eklenmelidir. Ancak, SQL Server, bellek baskısı karşılaşır kadar eski bir girdi kaldırılmaz. Bu sorun bir artış bellek tüketimini USERSTORE_TOKENPERM önbellek mağaza tarafından neden olabilir.

Çözüm

Hizmet paketi bilgileri

Bu sorun, SQL Server 2005 Service Pack 3'te giderilmiştir. SQL Server 2005 Service Pack 3'ü edinme hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
913089  (http://support.microsoft.com/kb/913089/ ) En son SQL Server 2005 hizmet paketi nasıl elde edilir

Düzeltme bilgileri

Desteklenen bir düzeltme Microsoft'tan edinilebilir. Ancak bu düzeltmenin, yalnızca bu makalede anlatılan sorunu gidermesi amaçlanmıştır. Bu düzeltmeyi yalnızca bu makalede açıklanan sorunun yaşandığı sistemlere uygulayın. Bu düzeltme ek sınamaya tabi olabilir. Bu nedenle, bu sorun nedeniyle önemli ölçüde etkilenmediyseniz, bu düzeltmeyi içeren bir sonraki yazılım güncelleştirmesini beklemeniz önerilir.

Düzeltme karşıdan yüklenebilir ise bu Bilgi Bankası makalesinin başında "Düzeltme karşıdan yüklenebilir" bölümü bulunur. Bu bölüm görünmüyorsa, düzeltmeyi edinmek üzere Microsoft Müşteri Hizmetleri ve Destek ekibine başvurun.

Not Ek sorunlar oluşursa veya tüm sorun giderme işlemi gerekmiyorsa, ayrı bir hizmet isteği oluşturmanız gerekebilir. Ek destek sorularına ve bu düzeltme için geçerli olmayan sorunlara normal destek ücretleri uygulanır. Microsoft Müşteri Hizmetleri ve Destek telefon numaralarının tam listesi veya ayrı bir hizmet isteği oluşturmak için, aşağıdaki Microsoft Web sitesini ziyaret edin:
http://support.microsoft.com/contactus/?ws=support (http://support.microsoft.com/contactus/?ws=support)
Not "Düzeltme karşıdan yüklenebilir" formunda, düzeltmenin kullanılabilir olduğu diller görüntülenir. Kendi dilinizi görmüyorsanız, bunun nedeni bu düzeltme, seçtiğiniz dil için kullanılamaz.

ÖNKOŞULLAR

Microsoft SQL Server 2005 Service Pack bu düzeltmeyi uygulamak için 2 (SP2) olması gerekir.

SQL Server 2005 Service Pack 2'yi edinme hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
913089  (http://support.microsoft.com/kb/913089/ ) En son SQL Server 2005 hizmet paketi nasıl elde edilir

Yeniden başlatma bilgileri

Bu düzeltmeyi uyguladıktan sonra bilgisayarı yeniden başlatmanız gerekmez.

Kayıt defteri Bilgileri

Kayıt defterini değiştirmeniz gerekmez.

Düzeltme Dosyası Bilgileri

Bu düzeltme, yalnızca bu makalede listelenen sorunları düzeltmek için gerekli olan dosyaları içerir. Bu düzeltme, bir ürünü en son sürüme tam olarak güncelleştirmek için gerekli olan dosyaları içermeyebilir.

Bu düzeltmenin İngilizce sürümü, aşağıdaki tabloda listelenen dosya özniteliklerine (veya daha yeni dosya özniteliklerine) sahiptir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'e (UTC) göre listelenir. Dosya bilgilerini görüntülediğinizde yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için <a0></a0>, Denetim Masası'ndaki tarih ve saat öğesinde saat dilimi sekmesini kullanın.
SQL Server 2005 ' in 32-bit sürümleri
Bu tabloyu kapaBu tabloyu aç
Dosya AdıDosya SürümüDosya BoyutuTARİHSAATPlatform
Microsoft.SQLServer.maintenanceplantasks.dll9.0.3153.0296,30408-Mart 200700: 38X86
Msmdlocal.dll9.0.3153.015,930,22408-Mart 200700: 38X86
Sqlaccess.dll2005.90.3153.0350,57608-Mart 200700: 38X86
Sqlservr.exe2005.90.3153.029,190,51208-Mart 200700: 38X86
SQL Server 2005 ' in 64-bit sürümleri
Bu tabloyu kapaBu tabloyu aç
Dosya AdıDosya SürümüDosya BoyutuTARİHSAATPlatform
Microsoft.SQLServer.maintenanceplantasks.dll9.0.3153.0296,30408-Mart 200700: 38X86
Msmdlocal.dll9.0.3153.015,930,22408-Mart 200700: 38X86
Sqlaccess.dll2005.90.3153.0357,74408-Mart 200710: 53X86
Sqlservr.exe2005.90.3153.038,638,96008-Mart 200710: 53X64

Durum

Microsoft, "Geçerli Olduğu Ürünler" bölümünde listelenen Microsoft ürünlerinde bu sorunun olduğunu onaylamıştır.

Daha fazla bilgi

Bu sorunla karşılaşan belirlemek için aşağıdaki iki sorgu kullanabilirsiniz.
  • Aşağıdaki Sorguyu çalıştırdığınızda, bu bellek tüketimi tarafından USERSTORE_TOKENPERM önbellek artar fark:
    select sum(single_pages_kb+multi_pages_kb) 'total memory for tokenperm' from sys.dm_os_memory_clerks where type = 'USERSTORE_TOKENPERM'
  • Aşağıdaki Sorguyu çalıştırdığınızda, birçok girişi Depo adresi</a0> sütununda ve KIMLIK sütunundaki aldığınız:
    select [Store Address], [id], count (*) 'number of entries'
    from  
    	(select 
    		 cast(entry_data as xml).value ('(//@store_address)[1]', 'varchar (100)') as [Store Address],
    		 cast(entry_data as xml).value ('(//@id)[1]', 'bigint') as [id]
    		 from sys.dm_os_memory_cache_entries
    		where type = 'USERSTORE_TOKENPERM' and cast(entry_data as xml).value ('(//@name)[1]', 'varchar (100)') = 'TokenAccessResult' and 
    			cast(entry_data as xml).value('(//@class)[1]', 'bigint') = 65535
    	) R 
    group by [Store Address], [id] 
    having count (*) > 1
    order by count (*) desc
    
    Bu sorgu sonuç oluşturursa, bu makalede anlatılan sorunla karşılaşmayan.
Çok sayıda koşul veritabanı koruma zaman damgasını değiştirin. Örneğin, çoğu veri tanımlama dili (DDL) işlemlerini koruma zaman damgasını değiştirin.

Tablo Oluştur DDL işlem ve Drop Table DDL işlem geçici tablolar için <a0>tempdb</a0> veritabanında koruma zaman damgası değiştirir.

Aşağıdaki DDL Transact-SQL deyimleri operasyonlardır. Bu işlem, master veritabanındaki koruma zaman damgası değiştirin:
  • Oturum açma oluşturma
  • Oturum açma değiştirme
  • Oturumu açılır.
  • Bitiş noktası oluşturma
  • Endpoint değiştirme
  • Endpoint bırak
Tablo nesnesi gibi kullanıcı nesneleri, DDL aşağıdaki işlemleri ile ilgilidir. Bu işlemlerden herhangi bir veritabanında koruma zaman damgası değiştirin. Bu veritabanlarından asıl veritabanını ve tempdb veritabanı içerir.
  • Oluşturma
  • Değiştirme
  • Bırak
DDL aşağıdaki işlemler için güvenlik ilişkilidir. Güvenlikle ilgili tüm operasyonları koruma zaman damgası herhangi bir veritabanında değiştirin. Bu veritabanlarından asıl veritabanını ve tempdb veritabanı içerir. Aşağıdaki listede bazı işlemlerine örnek olarak güvenlikle ilgili DDL adlandırır.
  • Oluşturma
  • Değiştirme
  • Kullanıcı bırak
  • Rol
  • Uygulama rolü
  • Sertifika
  • Şema
  • Simetrik anahtar
  • Asimetrik anahtarları
Ayrıca, verme, iptal etmek ya da nesne üzerindeki izinleri reddetme işlemleri için güvenlik ilişkilidir. Bu işlem, herhangi bir veritabanında koruma zaman damgası de değiştirir. Bu veritabanlarından asıl veritabanını ve tempdb veritabanı içerir.

Diğer koşullar da USERSTORE_TOKENPERM önbelleği zamanla büyümesine neden olabilir. Bu makalede açıklanan düzeltme için çok özel bir durumdur. Diğer bir deyişle, koruma zaman damgası değişikliği ulaşması önbellek deposu neden olur. USERSTORE_TOKENPERM önbelleği hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
927396  (http://support.microsoft.com/kb/927396/ ) Ad hoc sorguları SQL Server 2005'te TokenAndPermUserStore önbellek boyutunun büyüklüğü aştığında çalışmasını sonlandırın daha uzun sürmesine
Bu düzeltmeyi yükledikten sonra zaman damgası adlı yeni bir öznitelik sys.dm_os_memory_cache_entries görünümündeki entry_data sütunlar eklenir. Bu öznitelik, SQL Server'ın her planı izinlerini denetler sayısını belirtir. Bir planı yeni derlenen veya derlenmiş çekirdekler, zaman damgası 1'dir. Koruma zaman damgası değişirse, bu değer hesaplanır. You can use the following query to take snapshots of the timestamp:
select [store_address], [timestamp], count (*) 'number of entries'  from  
	(select 
 cast(entry_data as xml).value ('(//@store_address)[1]', 'varchar(100)')  as store_address ,
case cast(entry_data as xml).value ('(//@timestamp)[1]', 'int') when  1 then 1 
		else  null 
		end as [timestamp]
		 from sys.dm_os_memory_cache_entries
		where type = 'USERSTORE_TOKENPERM' and cast(entry_data as xml).value ('(//@name)[1]', 'varchar (100)') = 'TokenAccessResult' and 
			cast(entry_data as xml).value('(//@class)[1]', 'bigint') = 65535
	) R 
group by [store_address], [timestamp]
order by count (*) desc
If over time you see many timestamps of 1 for each store_address column, an application has a high rate of ad hoc queries or of recompile operations. Ad hoc sorgularının veya recompile işlemlerinin hızını yavaş gerekir. Alternatif olarak, her kullanıcı önbellek deposunda girdilerinin sayısını sınırlamak için 4618 izleme bayrağı uygulayarak sorunu adresleyebilir. Bu izleme bayrağı yeni girişler eklenir gibi eski önbellek girdilerini kaldırılacağından 4618 izleme bayrağı'nı kullanarak küçük bir CPU yükü tabi. Izleme bayrağı önbellek deposu büyüme boyutunu sınırlamak için bu eylemi gerçekleştirir. Ancak, CPU yükü zamana yayılır.

Daha fazla bilgi

Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
959823  (http://support.microsoft.com/kb/959823/ ) Nasıl yapılır: SQL Server 2005 Service Pack 3 TokenAndPermUserStore önbellek deposunda kotasının özelleştirme
Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
824684  (http://support.microsoft.com/kb/824684/ ) Microsoft yazılım güncelleştirmelerini açıklamak için kullanılan standart terminolojinin açıklaması

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
Anahtar Kelimeler: 
kbmt kbautohotfix kbqfe kbhotfixserver kbsql2005engine kbprb KB933564 KbMttr
Otomatik TercümeOtomatik Tercüme
Ö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:933564  (http://support.microsoft.com/kb/933564/en-us/ )