FIX: 삭제 또는 연결된 서버의 테이블을 업데이트하려면 분산된 쿼리를 실행할 때 행 갑자기 삭제됩니다.

기술 자료 번역 기술 자료 번역
기술 자료: 825043 - 이 문서가 적용되는 제품 보기.
# 버그: 469673 (SQL Server 8.0)
모두 확대 | 모두 축소

이 페이지에서

현상

네 부분으로 된 이름을 삭제 또는 Microsoft SQL Server 2000 데이터베이스에 연결된 서버 테이블에서 행을 업데이트하기 위해 사용하는 분산된 쿼리를 실행할 때 연결된 서버 테이블의 조인 조건을 충족하지 않는 행이 삭제됩니다. Transact-SQL DELETE 문을 또는 UPDATE Transact-SQL 문을 분산 쿼리에 조인이 포함되어 및 비-ANSI 구문을 사용하는 경우 이 문제가 발생할 수 있습니다. SQL Server의 같은 인스턴스에 연결된 서버로 분산 쿼리에서 사용하는 분산된 쿼리를 실행할 경우 이 문제가 발생하지 않을 수 있습니다.

해결 방법

서비스 팩 정보

이 문제를 해결하려면 Microsoft SQL Server 2000의 최신 서비스 팩을 구하십시오. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
290211최신 SQL Server 2000 서비스 팩을 구하는 방법

핫픽스 정보

이 핫픽스의 영어 버전은 다음 표에 나열된 파일 특성(또는 그 이후의 파일 특성)이 있습니다. 이러한 파일의 시간과 날짜는 UTC (협정 세계시) 로 나열됩니다. 파일 정보에서는 현지 시간으로 변환됩니다. UTC와 로컬 시간의 차이를 알려면 제어판의 날짜 및 시간 도구에서 표준 시간대 탭을 사용하십시오.
   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   
참고 파일 종속 관계로 인해 가장 최근의 핫픽스나 이러한 파일이 포함된 기능을 추가 파일이 들어 있습니다.

해결 과정

이 문제를 해결하려면 다음과 같이 하십시오.
  1. 분산된 쿼리를 삭제합니다 연결된 서버 테이블 또는 업데이트 고유 인덱스를 만듭니다.
  2. Transact-SQL DELETE 문의 또는 분산 쿼리의 UPDATE Transact-SQL 문의 비-ANSI 구문을 ANSI 구문을 사용하여 대체하십시오.
다음 예제에서는 문제가 조건을 다시 만들어집니다.
  1. 테스트 데이터베이스를 원본 서버로 사용할 수 있는 SQL Server 인스턴스를 만듭니다.
  2. SQL Server 인스턴스에 연결된 서버로 SQL Server를 실행하는 컴퓨터를 추가하십시오.
  3. 두 테이블을 만들려면 다음 Transact-SQL 스크립트 및 연결된 서버로 추가된 SQL Server를 실행하는 컴퓨터에서 실행할:
    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단계에서 만든 테이블의 테스트 데이터를 채우려면 다음 Transact-SQL 스크립트를 실행하여: @ 개수가
    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. 원본 SQL Server 데이터베이스에 대해 다음 Transact-SQL 스크립트를 실행하여:
    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
    한 행 대신 노트 1 수백 행을 삭제할 수 있습니다.
이전 예제에서 발생하는 문제를 해결하려면 다음과 같이 하십시오.
  1. SQL Server를 실행하고 연결된 서버로 추가된 컴퓨터에서 삭제된 테스트 데이터를 다시 채우지 다음 Transact-SQL 스크립트를 실행할: @ 개수가
    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. 다음 Transact-SQL 스크립트 및 연결된 서버로 추가된 SQL Server를 실행하는 컴퓨터에서 실행할:
    CREATE UNIQUE INDEX idx1 ON ct_batch_element(be_link_key)
  3. 원본 SQL Server 데이터베이스에 대해 다음 Transact-SQL 스크립트를 실행하여:
    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 )
    
    한 행을 삭제할 노트 쿼리의 필터 조건을 지정한.

현재 상태

Microsoft는 "본 문서의 정보는 다음의 제품에 적용됩니다." 절에 나열된 Microsoft 제품에서 이 문제를 확인했습니다.이 문제는 Microsoft SQL Server 2000 서비스 팩 4에서 처음 수정되었습니다.

추가 정보

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
824684Microsoft 소프트웨어 업데이트를 설명하는 데 사용되는 표준 용어에 대한 설명

속성

기술 자료: 825043 - 마지막 검토: 2007년 11월 2일 금요일 - 수정: 4.3
본 문서의 정보는 다음의 제품에 적용됩니다.
  • 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
키워드:?
kbmt kbhotfixserver kbqfe kbqfe kbtsql kbserver kbdatabase kbremoting kbquery kbsqlserv2000presp4fix kbfix kbbug KB825043 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

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