Düzeltme: Yavaş performans ya da bir veritabanını geri yüklemek ve sql Server 2012 aynı anda deyimleri yürütme sırasında kilitlenme

Ö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: 2725950
Microsoft, Microsoft sql Server 2012 düzeltmeler karşıdan yüklenebilen bir 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 2012 ile gelen tüm güvenlik düzeltmelerini düzeltin.
Belirtiler

Senaryo 1

Aşağıdaki senaryoyu düşünün:
  • Microsoft sql Server 2012'de bir veritabanını geri.
  • Veritabanı geri yükleme işlemi bitmeden başka bir işlem sys.database_recovery_status Katalog görünümü başvuran ve aynı veritabanı üzerinde bir kilit gerektirir. Örneğin, aşağıdaki select deyimini yürütün:

    SELECT * FROM sys.database_recovery_status
Bu senaryoda, veritabanı geri yükleme işlemi tamamlanana kadar bir işlem için select deyimi içinde bekler yavaş performans oluşur.

Senaryo 2

Aşağıdaki senaryoyu düşünün:
  • Bir veritabanını sql Server 2012 de geri.
  • Veritabanı geri yükleme işlemi bitmeden önce aşağıdaki deyimini yürütün:

    IF EXISTS (SELECT * FROM sys.database_recovery_status WHERE database_id= DataBaseID AND database_guid IS NOT NULL)
    Not , DataBaseID Veritabanı geri yükleme işlemi gerçekleştirmek veritabanının Kimliğini temsil eder.
Bu senaryoda veritabanı geri yükleme işleminde bir kilitlenme oluşur. Bu kilitlenme veritabanı geri yükleme işleminin başarısız olmasına neden olur.
Neden
"Belirtiler" bölümünde açıklanan senaryolarda, aynı nedenler tarafından neden olur.

Veritabanı geri yükleme işlemi bir veritabanı üzerinde özel kilit gerektirdiği için "Scenario1" bölümünde, sorun oluşur. Bu bölümde açıklanan deyimi yürüttüğünüzde, paylaşılan bir kilit aynı veritabanında gereklidir. Bu nedenle, özel kullanım kilidi yayımlanıncaya kadar özel kullanım kilidi için paylaşılan kilit bekler.

Bu bölümde açıklanan deyimi yürüttüğünüzde "Senaryo 2" bölümünde, paylaşılan bir kilit aynı veritabanında ve sys.sysdbreg tablosundaki gereklidir. En son aşaması olarak veritabanı geri yükleme işlemi, bir sys.sysdbreg tablosu üzerinde güncelleştirme kilidinin işlem gerektirir. Bununla birlikte, paylaşılan kilit veritabanından serbest bırakılmaz. Bu nedenle, sys.sysdbreg tablo üzerinde bir kilitlenme oluşur ve veritabanı geri yükleme işlemi, kilitlenme kurbanı olarak belirlenir.

Çözüm

Toplu Güncelleştirme bilgileri

sql Server 2012 Service Pack 1 için toplu güncelleştirme paketi 1

Bu sorunla ilgili düzeltme, ilk toplu güncelleştirme 1'de yayımlanmıştır. Bu sql Server 2012 Service Pack 1 için 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:
2765331 sql Server 2012 Service Pack 1 için toplu güncelleştirme paketi 1
Not 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 2012 ile gelen tüm güvenlik düzeltmelerini düzeltin. 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ını tıklatın:
2772858 sql Server 2012 sql Server 2012 Service Pack 1'de yayımlandıktan sonra yayımlanan oluşturur

Toplu güncelleştirme paketi 3 için sql Server 2012

Bu sorunla ilgili düzeltme, ilk toplu güncelleştirme 3'te yayımlanmıştır. sql Server 2012 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:
2723749 sql Server 2012 için toplu güncelleştirme 3
Not 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 2012 ile gelen tüm güvenlik düzeltmelerini düzeltin. 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ını tıklatın:
2692828 sql Server 2012'den sonra yayımlanan sql Server 2012 oluşturur
Durum
Microsoft bu sorunun, "Aşağıdakilere uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.
Pratik Çözüm
Senaryo 2 Bu soruna geçici bir çözüm bulmak için aşağıdaki yöntemlerden birini kullanın.
Yöntem 1


Sys.sysdbreg tablo üzerindeki paylaşılan kilit "nolock" İpucu kullanarak önlemek için ifadeyi deðiþtirin.
IF EXISTS (SELECT * FROM sys.database_recovery_status with(NOLOCK) WHERE database_id= DataBaseID AND database_guid IS NOT NULL)
Yöntem 2
"Düşük" ifadesine kilitlenme önceliğini ayarlama
SET DEADLOCK_PRIORITY LOWIF EXISTS(SELECT * FROM sys.database_recovery_status where database_id = DataBaseID AND database_guid IS NOT NULL)
Not İkinci yöntem bildirimi hem de veritabanı geri yükleme işlemi kilitlenme önlemek için kullandığınızda, IF deyimini kodları yürütülmez.
Referanslar
Özel kilit, paylaşılan kilit ve güncelleme kilidi hakkında daha fazla bilgi için aşağıdaki msdn Web sitesine gidin:sql Server için artımlı hizmet modeli daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
935897 sql Server ekibinden bildirilen sorunlar için düzeltmeler sunmak için artımlı bir hizmet modeli kullanılabilir
sql 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 Microsoft sql Server yazılım güncelleştirme paketleri için dosya 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ını tıklatın:
824684 Microsoft yazılım güncelleştirmelerini açıklamak için kullanılan standart terminolojinin açıklaması

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 2725950 - Son İnceleme: 11/20/2012 23:11:00 - Düzeltme: 2.0

Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web

  • kbtshoot kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2725950 KbMttr
Geri bildirim