Düzeltme: Güncelleştirme, kendi kendine birleşim ile hatalı bir satır sayısını güncelleştirme

Makale çevirileri Makale çevirileri
Makale numarası: 285870 - Bu makalenin geçerli olduğu ürünleri görün.
# HATA: 101111 (SQLBUG_70)
# Hata: 351761 (SHILOH_bugs)
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Aşağıdaki koşullar yerine getirilirse bir UPDATE işlemi doğru satır sayısını değiştirme:
  • Sorgunuz bir sütun, ColA, bir tablodan TabA güncelleştirir.
  • Sorgu TabA TabB diğer adı kullanarak yeniden başvuruyor.
  • Bir sorgudaki herhangi bir yeri TabB.ColA başvuru yok.
  • Sütunların içinde TabA güncelleştirilmekte hiçbiri, dizinlenmiş sütunların değildir.
  • Karma veya birleştirme bir birleşimi kullanılır.

Neden

Cadılar Bayramı koruma sağlamak gerekli olan UPDATE işletmen aşağıda gerekli bir tablo biriktirme Sorgu planını içerebilir.

Çözüm

SQL Server 2000

Bu sorunu gidermek için <a0></a0>, Microsoft SQL Server 2000 için en son hizmet paketini edinin. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
290211BILGI: en son SQL Server 2000 hizmet paketi nasıl elde edilir

SQL Server 7.0

Bu sorunu gidermek için <a0></a0>, Microsoft SQL Server 7.0 için en son hizmet paketini edinin. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
301511BILGI: en son SQL Server 7.0 hizmet paketi nasıl elde edilir


Not: aşağıdaki düzeltmeyi Microsoft SQL Server 7.0 Service Pack 4 öncesinde oluşturulmuş.

Bu düzeltmenin ingilizce sürümünde aşağıdaki dosya öznitelikleri olmalı veya daha yenisi:
   Version      File name       Platform
   -------------------------------------

   7.00.978     s70978i.exe     x86
   7.00.978     s70978a.exe     Alpha
				
Not: Dosya bağımlılıkları nedeniyle, en son düzeltme veya özellik, yukarıdaki dosyaları içeren ek dosyalar da içerebilir.

Pratik Çözüm

Bu soruna geçici bir çözüm bulmak için <a0></a0>:
  • <a1>Seçenek</a1> ('LOOP [NULL]'JOıN) kullanarak bir döngü birleştirme zorla.

    -VEYA-

  • Dizin üzerinde güncelleştirilmiş sütunları ekleyin.

Durum

Microsoft, bu makalenin başında listelenen Microsoft ürünlerinde bir sorun olduğunu onaylamıştır.

SQL Server 2000
Bu sorun ilk olarak SQL Server 2000 Service Pack 1'de giderilmiştir.

SQL Server 7.0
Bu sorun ilk olarak Microsoft SQL Server 7.0 Service Pack 4'de giderilmiştir.

Daha fazla bilgi

Cadılar Bayramı koruma, burada bir tablo içinde bir satırın bir fiziksel konumunu, UPDATE işlemi nedeniyle değişiklikleri bir durumu önlemek için gereklidir. Sonuç olarak, aynı satıra birden çok kez gerçekleşmesi tek bir mantıksal işlem bağlamında revisited. Bu belirli bir hata ile ilgili koşulları karşılanırsa, SQL Server iyileştirici bir uygun Cadılar Bayramı koruma planı oluşturmak değil.

Sorun aşağıdaki örnekte gösterilmiştir:
set nocount on
create table test(id int, pid int, fn varchar(256), rn varchar(8))
go
declare @c int
set @c = 1
insert into test values(0, NULL, 'root', 'root')
while @c < 10
begin
   insert into test values(@c, @c-1, NULL, cast(@c as varchar(8)))
   set @c = @c + 1
end
create unique clustered index idx_c_id on test(id)
go
update test
set fn = parent.fn + '/' + test.rn
from test(index=0) , test parent(index=0)
where test.pid = parent.id and test.fn is NULL --  and parent.fn <> ''
option(hash join,force order)
				
burada olan tablonun içeriğini doğru güncelleştirmesinden sonra:

--DOĞRU sonuçlar:
id          pid         rn       fn                                                                                                                                                                                                                                                               
----------- ----------- -------- ---- 
0           NULL        root     root
1           0           1        root/1
				
burada düzeltmeyi uygulamadan önce elde sonuçları şunlardır:

--HATALı sonuçlar:
id          pid         rn       fn                                                                                                                                                                                                                                                               
----------- ----------- -------- ----
0           NULL        root     root
1           0           1        root/1
2           1           2        root/1/2
3           2           3        root/1/2/3
4           3           4        root/1/2/3/4
5           4           5        root/1/2/3/4/5
6           5           6        root/1/2/3/4/5/6
7           6           7        root/1/2/3/4/5/6/7
8           7           8        root/1/2/3/4/5/6/7/8
9           8           9        root/1/2/3/4/5/6/7/8/9

				

Özellikler

Makale numarası: 285870 - Last Review: 28 Ekim 2003 Salı - Gözden geçirme: 3.1
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Anahtar Kelimeler: 
kbmt kbbug kbfix KB285870 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:285870

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