Düzeltme: silmeye ya da bir bağlantılı sunucu tablosunu güncelleştirmek için bir dağıtık sorgu çalıştırdığınızda satırlar beklenmedik biçimde siliniyor

Makale çevirileri Makale çevirileri
Makale numarası: 825043 - Bu makalenin geçerli olduğu ürünleri görün.
# Hata: 469673 (SQL Server 8.0)
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Four-part bir adı silmek için veya bir bağlantılı sunucu tablosunu bir Microsoft SQL Server 2000 veritabanında bir satırda güncelleştirmek için kullandığı bir dağıtık sorgu çalıştırdığınızda, bağlı sunucu tablodaki birleştirme koşulu karşılayan satırları da silinir. DELETE Transact-SQL deyimini veya Transact-SQL UPDATE deyimi dağıtılmış sorguda birleştirme içerir ve ANSI olmayan sözdizimi kullanırsa, bu sorun oluşabilir. SQL Server örneği aynı dağıtılmış sorguda bağlantılı sunucu olarak kullanan bir dağıtık sorgu çalıştırdığınızda bu sorun oluşabilir.

Çözüm

Hizmet paketi bilgileri

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:
290211En son SQL Server 2000 hizmet paketi nasıl elde edilir

Düzeltme bilgileri

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 aracında saat dilimi sekmesini kullanın.
   Date         Time   Version            Size    File name
   ---------------------------------------------------------------------
   31-May-2003  06:15  2000.80.818.0      78,400  Console.exe      
   24-Jun-2003  12:31  2000.80.818.0      33,340  Dbmslpcn.dll     
   24-Apr-2003  13:42                    786,432  Distmdl.ldf
   24-Apr-2003  13:42                  2,359,296  Distmdl.mdf
   29-Jan-2003  13:25                        180  Drop_repl_hotfix.sql
   23-Jun-2003  10:10  2000.80.837.0   1,557,052  Dtsui.dll        
   23-Jun-2003  10:10  2000.80.837.0     639,552  Dtswiz.dll       
   23-Apr-2003  14:21                    747,927  Instdist.sql
   02-May-2003  13:26                      1,581  Inst_repl_hotfix.sql
   07-Feb-2003  18:10  2000.80.765.0      90,692  Msgprox.dll      
   31-Mar-2003  13:37                      1,873  Odsole.sql
   04-Apr-2003  13:16  2000.80.800.0      62,024  Odsole70.dll     
   07-May-2003  08:11  2000.80.819.0      25,144  Opends60.dll     
   02-Apr-2003  09:18  2000.80.796.0      57,904  Osql.exe         
   02-Apr-2003  10:45  2000.80.797.0     279,104  Pfutil80.dll     
   22-May-2003  10:27                     19,195  Qfe469571.sql
   11-Jul-2003  04:34                  1,084,147  Replmerg.sql
   04-Apr-2003  09:23  2000.80.798.0     221,768  Replprov.dll     
   07-Feb-2003  18:10  2000.80.765.0     307,784  Replrec.dll      
   11-Jul-2003  04:26                  1,085,925  Replsys.sql
   31-May-2003  12:31  2000.80.818.0     492,096  Semobj.dll       
   31-May-2003  05:57  2000.80.818.0     172,032  Semobj.rll
   28-May-2003  11:59                    115,944  Sp3_serv_uni.sql
   31-May-2003  12:31  2000.80.818.0   4,215,360  Sqldmo.dll       
   07-Apr-2003  05:14                     25,172  Sqldumper.exe    
   19-Mar-2003  05:50  2000.80.789.0      28,672  Sqlevn70.rll
   01-Jul-2003  11:48  2000.80.834.0     180,736  Sqlmap70.dll     
   07-Feb-2003  18:10  2000.80.765.0      57,920  Sqlrepss.dll     
   21-Jul-2003  07:24  2000.80.842.0   7,553,105  Sqlservr.exe     
   07-Feb-2003  18:10  2000.80.765.0      45,644  Sqlvdi.dll       
   24-Jun-2003  12:31  2000.80.818.0      33,340  Ssmslpcn.dll     
   31-May-2003  12:31  2000.80.818.0      82,492  Ssnetlib.dll     
   31-May-2003  12:31  2000.80.818.0      25,148  Ssnmpn70.dll     
   31-May-2003  12:31  2000.80.818.0     158,240  Svrnetcn.dll     
   31-May-2003  06:29  2000.80.818.0      76,416  Svrnetcn.exe     
   30-Apr-2003  11:22  2000.80.816.0      45,132  Ums.dll          
   01-Jul-2003  11:49  2000.80.834.0      98,816  Xpweb70.dll   
Not Dosya bağımlılıkları nedeniyle, en son düzeltme veya özellik, bu dosyaları içeren ek dosyalar da içerebilir.

Pratik Çözüm

Bu soruna geçici bir çözüm için aşağıdaki adımları izleyin:
  1. Dağıtık sorgu silen bir bağlantılı sunucu tablosunu ya da güncelleştirmeleri, benzersiz bir dizin oluşturun.
  2. ANSI olmayan Transact-SQL DELETE deyimi veya dağıtılmış sorguda UPDATE Transact-SQL deyiminin sözdizimini ANSI sözdizimi ile değiştirin.
Aşağıdaki örnek, sorun koşul yeniden oluşturur:
  1. Kaynak sunucu kullanılacak olan SQL Server örneğinizle sınama bir veritabanı oluşturun.
  2. SQL Server örneğinizle SQL Server bağlantılı sunucu olarak çalışan bir bilgisayara ekleyin.
  3. Iki tablo oluşturmak için aşağıdaki Transact-SQL komut dosyası, SQL Server çalıştıran ve bir bağlantılı sunucu eklenmiş olan bilgisayarda çalıştırın:
    CREATE TABLE ct_batch (
    [BAT_PKEY] int NOT NULL ,
    [BTYP_KEY] int NOT NULL ,
    [BAT_START_DT] datetime NULL,
    [BAT_END_DT] datetime NULL,
    [BAT_STATUS] varchar(50) NULL,
    [BAT_DO_WORK_FLAG] int NULL)
    
    CREATE TABLE ct_batch_element ( 
    [BAT_KEY] int NOT NULL ,
    [BECC_KEY] int NOT NULL ,
    [BE_LINK_KEY] int NOT NULL ,
    [BE_CUST_STRING] varchar(20) NULL,
    [BE_CUST_VALUE] float NULL)
    GO
  4. 3. Adımda oluşturduğunuz tablolardaki sınama verileri doldurmak için aşağıdaki Transact-SQL komut dosyasını çalıştırın: @ sayısı
    DECLARE @count int
    SET @count = 0
    WHILE @count < 100
    BEGIN
    INSERT INTO ct_batch VALUES (@count,2,GETDATE(),GETDATE(),'closed',0)
    INSERT INTO ct_batch_element VALUES (100,1,@count,null,null)
    SET @count = @count + 1
    END
    INSERT INTO ct_batch VALUES (100,2,GETDATE(),GETDATE(),'current',0)
    GO
  5. Kaynak SQL sunucu veritabanı üzerinde aşağıdaki Transact-SQL komut dosyasını çalıştırın:
    DELETE Linked Server Name.pubs.dbo.ct_batch_element 
    FROM Linked Server Name.pubs.dbo.ct_batch_element A 
    JOIN Linked Server Name.pubs.dbo.ct_batch B
    ON A.bat_key=B.bat_pkey 
    WHERE A.be_link_key = 1
    Not bir yüz satırlar yerine tek satır silinemez.
Önceki örnekte oluşan bir sorunu gidermek için <a0></a0>, aşağıdaki adımları izleyin:
  1. Silinen sınama verileri yeniden doldurmak için aşağıdaki Transact-SQL komut dosyası, SQL Server çalıştıran ve bir bağlantılı sunucu eklenmiş olan bilgisayarda çalıştırın: @ sayısı
    DECLARE @count int
    SET @count = 0
    WHILE @count < 100
    BEGIN
    INSERT INTO ct_batch VALUES (@count,2,GETDATE(),GETDATE(),'closed',0)
    INSERT INTO ct_batch_element VALUES (100,1,@count,null,null)
    SET @count = @count + 1
    END
    INSERT INTO ct_batch VALUES (100,2,GETDATE(),GETDATE(),'current',0)
    GO
  2. SQL Server çalıştıran ve bir bağlantılı sunucu eklenmiş olan bilgisayarda aşağıdaki Transact-SQL komut dosyasını çalıştırın:
    CREATE UNIQUE INDEX idx1 ON ct_batch_element(be_link_key)
  3. Kaynak SQL sunucu veritabanı üzerinde aşağıdaki Transact-SQL komut dosyasını çalıştırın:
    DELETE Linked Server Name.pubs.dbo.ct_batch_element 
    FROM Linked Server Name.pubs.dbo.ct_batch_element A
    WHERE A.be_link_key = 1 
    AND EXISTS ( SELECT * 
    	     FROM Linked Server Name.pubs.dbo.ct_batch B 
    	     WHERE B.bat_pkey = A.bat_key )
    
    Not tek bir satır silindi, sorgu filtresi koşulu olarak belirtilen.

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 Microsoft SQL Server 2000 Service Pack 4'te giderilmiştir.

Daha fazla bilgi

Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
824684Microsoft yazılım güncelleştirmelerini açıklamak için kullanılan standart terminolojinin açıklaması

Özellikler

Makale numarası: 825043 - Last Review: 2 Kasım 2007 Cuma - Gözden geçirme: 4.3
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Anahtar Kelimeler: 
kbmt kbhotfixserver kbqfe kbqfe kbtsql kbserver kbdatabase kbremoting kbquery kbsqlserv2000presp4fix kbfix kbbug KB825043 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:825043

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