FIX: The locks of a table are not escalated when you insert many rows into a table in SQL Server 2008

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

Bu Sayfada

Belirtiler

Şu senaryoyu inceleyin::

  • You insert many rows into a table in Microsoft SQL Server 2008 by using one of the following queries:
    • INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
    • SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>
    NOTLAR
    • The<target_table></target_table>placeholder represents the actual target table name.
    • The<predicate></predicate>placeholder represents the actual predicate.
    • The<source_table></source_table>placeholder represents the actual source table.
  • The lock escalation threshold of the table is exceeded.
In this scenario, the database engine does not escalate the locks of the table.

Neden

Bu sorun, SQL Server, INSERT işlemleri tarafından oluşturulan tüm yeni kilitler dahili sayılmaz nedeniyle oluşur. Gerektiğinde, bu nedenle, Kilit etkinleşmesini eşik tetiklenmeye değil.

Çözüm

Hizmet paketi bilgileri

Bu sorunu gidermek için SQL Server 2008'in en son hizmet paketini edinin.

Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın::
968382SQL Server 2008'in en son hizmet paketi nasıl elde edilir

Durum

Microsoft, "Geçerli Olduğu Ürünler" bölümünde listelenen Microsoft ürünlerinde bu sorunun olduğunu onaylamıştır.
Bu sorun ilk olarak SQL Server 2008, SQL Server 2008 Service Pack 2'de giderilmiştir.

Daha fazla bilgi

Kilitleme yükseltmesi hakkında daha fazla bilgi için aşağıdaki Microsoft TechNet Web sitesini ziyaret edin:
Kilit etkinleşmesini hakkında genel bilgiler
Tablonun kilit escalated olup olmadığını belirlemek için aşağıdaki Transact-SQL deyimlerini çalıştırın:
USE tempdb
GO

CREATE TABLE x 
(
i INT NOT NULL PRIMARY KEY
)
GO

BEGIN TRAN
INSERT x
SELECT TOP (40000)
ROW_NUMBER() OVER 
(
ORDER BY (SELECT NULL)
) AS r
FROM 
master..spt_values a, 
master..spt_values b
ORDER BY
r

SELECT
COUNT(*)
FROM sys.dm_tran_locks
WHERE 
request_session_id = @@SPID 
ROLLBACK
GO

DROP TABLE x   
Tablo kilidi escalated, son SELECT deyiminin ya da bir değeri döndürür.1veya2. Tablo kilidi escalated, son SELECT deyiminin ya da bir değeri döndürür.40,066veya40,067.


Özellikler

Makale numarası: 2448971 - Last Review: 5 Kasım 2010 Cuma - Gözden geçirme: 2.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Developer
Anahtar Kelimeler: 
kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2448971 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:2448971

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