FIX: 반복적으로 트리거 실행 계획을 다시 때 트리거를 발생시키는 DML 작업의 가장 성능이 저하될 수 있습니다.

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

이 페이지에서

문서 내용

요약

이 문서에서는 다음을 이 핫픽스 릴리스에 대한 설명입니다.
  • 이 핫픽스 패키지에서 해결된 문제.
  • 핫픽스 패키지 설치를 위한 전제 조건
  • 핫픽스 패키지 설치 후 컴퓨터를 다시 시작해야 하는지 여부
  • 핫픽스 패키지가 다른 핫픽스 패키지로 대체되는지 여부
  • 레지스트리 변경을 여부를 합니다.
  • 핫픽스 패키지에 포함된 파일.

현상

UPDATE 같은 데이터 조작 언어 (DML) 문을 실행할 때 삽입 또는 삭제 트리거를 발생시키는 문을, 트리거 실행 성능을 향상시키려면 트리거 실행 계획을 Microsoft SQL Server 프로그램 다시 컴파일할. 그러나 트리거 실행 계획이 반복되는 재컴파일 트리거 실행 성능이 저하될 수 있습니다.

다음 조건에 해당하는 경우 트리거 실행 계획이 반복되는 재컴파일이 발생할 수 있습니다.
  • 여러 번 DML 문을 실행할 수 있습니다.
  • DML 문에 의해 영향을 받는 행 수를 DML 문을 실행할 때마다 다릅니다.
이전 핫픽스 목록을 "Microsoft SQL Server 2000 서비스 팩 3 또는 Microsoft SQL Server 2000 서비스 팩 3a 핫픽스를" 섹션에서 Microsoft 기술 자료의 다음 문서를 참조하십시오.
290211가장 최근의 SQL Server 2000 서비스 팩을 구하는 방법

해결 방법

서비스 팩 정보

이 문제를 해결하려면 Microsoft SQL Server 2000의 최신 서비스 팩을 구하십시오. 추가 정보는 다음 문서 번호를 클릭하여 Microsoft 기술 자료에서 확인하십시오:
290211최신 SQL Server 2000 서비스 팩을 구하는 방법

핫픽스 정보

전제 조건

이 핫픽스가 필요한 Microsoft SQL Server 2000 서비스 팩 3 (SP3). SQL Server 2000 서비스 팩 3 구하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
290211가장 최근의 SQL Server 2000 서비스 팩을 구하는 방법

정보를 다시합니다

이 핫픽스를 적용한 후에는 컴퓨터를 다시 시작할 필요가 없습니다.

참고 이 핫픽스를 적용한 후 컴퓨터에서 실행 중인 SQL Server 2000 프로그램을 다시 시작해야 합니다.

핫픽스 파일 정보

이 핫픽스에는 이 문서에 나와 있는 문제를 해결하는 데 필요한 파일만 포함되어 있습니다. 이 핫픽스에는 제품을 최신 빌드로 완전히 업데이트하는 데 필요한 파일이 없을 수 있습니다.

이 핫픽스의 영어 버전은 다음 표에 나열된 파일 특성(또는 그 이후의 파일 특성)이 있습니다. 이러한 파일의 시간과 날짜는 UTC (협정 세계시) 로 나열됩니다. 파일 정보에서는 현지 시간으로 변환됩니다. UTC와 로컬 시간의 차이를 알려면 제어판의 날짜 및 시간 도구에서 표준 시간대 탭을 사용하십시오.
    Date         Time   Version       Size       File name
   ------------------------------------------------------------------
   18-Jun-2004  14:14  2000.80.954.0    664,128  Autoplt.dll      
   18-Jun-2004  14:14  2000.80.954.0     78,400  Console.exe      
   18-Jun-2004  14:14  2000.80.954.0    315,968  Custtask.dll     
   18-Jun-2004  14:14  2000.80.954.0     33,340  Dbmslpcn.dll     
   08-Apr-2004  09:12                   786,432  Distmdl.ldf
   08-Apr-2004  09:12                 2,359,296  Distmdl.mdf
   10-Oct-2003  06:18                       180  Drop_repl_hotfix.sql
   18-Jun-2004  14:14  2000.80.954.0  1,905,216  Dtspkg.dll       
   18-Jun-2004  14:14  2000.80.954.0    528,960  Dtspump.dll      
   18-Jun-2004  14:14  2000.80.954.0  1,557,052  Dtsui.dll        
   18-Jun-2004  14:14  2000.80.954.0    639,552  Dtswiz.dll       
   10-Oct-2003  06:18                   747,927  Instdist.sql
   10-Oct-2003  06:18                     1,581  Inst_repl_hotfix.sql
   18-Jun-2004  14:14  2000.80.954.0    352,828  Isqlw.exe        
   18-Jun-2004  14:14  2000.80.954.0     82,492  Itwiz.exe        
   18-Jun-2004  14:14  2000.80.954.0     90,692  Msgprox.dll      
   19-May-2004  11:13  8.11.40209.0     209,408  Mssdi98.dll      
   18-Jun-2004  14:14  2000.80.954.0     62,024  Odsole70.dll     
   18-Jun-2004  14:15  2000.80.954.0     25,144  Opends60.dll     
   18-Jun-2004  14:14  2000.80.954.0     57,904  Osql.exe         
   18-Jun-2004  14:14  2000.80.954.0    279,104  Pfutil80.dll     
   10-Oct-2003  06:07                   550,780  Procsyst.sql
   08-Apr-2004  09:12                    12,305  Qfe469315.sql
   08-Apr-2004  09:12                    19,195  Qfe469571.sql
   17-Jun-2004  02:42                 1,105,167  Replmerg.sql
   18-Jun-2004  14:14  2000.80.954.0    221,768  Replprov.dll     
   18-Jun-2004  14:14  2000.80.954.0    307,784  Replrec.dll      
   16-Jun-2004  14:07  2000.80.954.0    159,813  Replres.rll
   10-Oct-2003  06:18                 1,087,150  Replsys.sql
   10-Oct-2003  06:18                   986,603  Repltran.sql
   18-Jun-2004  14:14  2000.80.954.0    287,304  Rinitcom.dll     
   18-Jun-2004  14:14  2000.80.954.0     78,416  Sdiclnt.dll      
   18-Jun-2004  14:14  2000.80.954.0     66,112  Semmap.dll       
   18-Jun-2004  14:14  2000.80.954.0     57,916  Semnt.dll        
   18-Jun-2004  14:14  2000.80.954.0    492,096  Semobj.dll       
   16-Jun-2004  14:44  2000.80.954.0    172,032  Semobj.rll
   18-Jun-2004  14:14  2000.80.954.0     53,832  Snapshot.exe     
   11-Mar-2004  14:40                   117,834  Sp3_serv_uni.sql
   18-Jun-2004  14:13  2000.80.954.0     28,672  Sqlagent.dll     
   18-Jun-2004  14:14  2000.80.954.0    311,872  Sqlagent.exe     
   18-Jun-2004  14:13  2000.80.954.0    168,001  Sqlakw32.dll     
   18-Jun-2004  14:14  2000.80.954.0     33,344  Sqlctr80.dll     
   18-Jun-2004  14:14  2000.80.954.0  4,215,360  Sqldmo.dll       
   18-Jun-2004  14:14                    25,172  Sqldumper.exe    
   16-Jun-2004  13:54  2000.80.954.0     28,672  Sqlevn70.rll
   18-Jun-2004  14:14  2000.80.954.0    180,792  Sqlmap70.dll     
   18-Jun-2004  14:14  2000.80.954.0    188,992  Sqlmmc.dll       
   16-Jun-2004  14:52  2000.80.954.0    479,232  Sqlmmc.rll
   18-Jun-2004  14:14  2000.80.954.0    401,984  Sqlqry.dll       
   18-Jun-2004  14:14  2000.80.954.0     57,920  Sqlrepss.dll     
   18-Jun-2004  14:14  2000.80.954.0  7,581,777  Sqlservr.exe     
   18-Jun-2004  14:14  2000.80.954.0    590,396  Sqlsort.dll      
   18-Jun-2004  14:14  2000.80.954.0     45,644  Sqlvdi.dll       
   18-Jun-2004  14:14  2000.80.954.0    106,588  Sqsrvres.dll     
   18-Jun-2004  14:14  2000.80.954.0     33,340  Ssmslpcn.dll     
   18-Jun-2004  14:14  2000.80.954.0     82,492  Ssnetlib.dll     
   18-Jun-2004  14:14  2000.80.954.0     25,148  Ssnmpn70.dll     
   18-Jun-2004  14:14  2000.80.954.0    123,456  Stardds.dll      
   18-Jun-2004  14:14  2000.80.954.0    158,240  Svrnetcn.dll     
   18-Jun-2004  14:14  2000.80.954.0     76,416  Svrnetcn.exe     
   18-Jun-2004  14:14  2000.80.954.0     49,228  Ums.dll          
   18-Jun-2004  14:14  2000.80.954.0     98,872  Xpweb70.dll      

참고 파일 종속 관계로 인해 이러한 파일이 들어 있는 최신 핫픽스 또한 추가 파일이 들어 있을 수 있습니다.

현재 상태

Microsoft는 "본 문서의 정보는 다음의 제품에 적용됩니다." 절에 나열된 제품에서 이 문제를 확인했습니다.

이 문제는 Microsoft SQL Server 2000 서비스 팩 4에서 처음 수정되었습니다.

추가 정보

이 핫픽스 업데이트를 트리거 실행 계획이 재컴파일됩니다 임계값이 향상됩니다. 임계값을 개선 사항을 적용하려면 SQL Server 추적 플래그가 이 핫픽스를 설치한 후 9055 사용하도록 설정해야 합니다. 추적 플래그 9055 SQL Server 인스턴스에 대해 사용 가능하게 설정하려면 다음 방법 중 하나를 사용하십시오.
  • 다음 Transact-SQL 문을 실행할 SQL 쿼리 분석기에서 SQL Server의 인스턴스에 대한:
    DBCC TRACEON (9055, -1)
  • 추가 -T9055 SQL Server 시작 매개 변수로.

Windows Mobile 기반 스마트폰에 GPRS 연결이 구성되어 있는지 확인합니다

트리거 실행 계획을 재컴파일을 발생시키는 상황을 재현하려면 다음 이 단계를 수행하십시오.
  1. SQL 쿼리 분석기에서 시작하고 SQL Server 2000 인스턴스에 연결하십시오.
  2. 테이블 및 업데이트 트리거가 있는 테이블을 만듭니다. cache_test 같은 테이블 이름을 지정한 cache_test_update 업데이트를 트리거로 이름을 지정하십시오. 이렇게 하려면 다음 Transact-SQL 문을 실행할:
    use pubs
    go
    set nocount on
    go
    if exists (select 1 from sysobjects where id = object_id('dbo.cache_test'))
    drop table dbo.cache_test
    go
    create table dbo.cache_test
    (
    id int not null,
    descr varchar(30) not null,
    rowcreateddt datetime not null default getdate(),
    rowcreatedby varchar(30) not null default right(system_user,30),
    testcolumn varchar(30) null,
    primary key (id)
    )
    go
    
    create trigger dbo.cache_test_update
    on dbo.cache_test
    for update
    as
    if exists ( select 1 from inserted where id = 98654 )
    print 'test'
    return
    go
  3. cache_test 테이블의 일부 레코드를 삽입하고 프로시저 캐시에서 모든 요소를 제거하십시오. To do this, run the following Transact-SQL statements:
    insert into cache_test (id, descr, testcolumn) select 1,'Descr 1','Test 1'
    insert into cache_test (id, descr, testcolumn) select 2,'Descr 2','Test 2'
    insert into cache_test (id, descr, testcolumn) select 3,'Descr 3','Test 3'
    insert into cache_test (id, descr, testcolumn) select 4,'Descr 4','Test 4'
    insert into cache_test (id, descr, testcolumn) select 5,'Descr 5','Test 5'
    insert into cache_test (id, descr, testcolumn) select 6,'Descr 6','Test 6'
    insert into cache_test (id, descr, testcolumn) select 7,'Descr 7','Test 7'
    insert into cache_test (id, descr, testcolumn) select 8,'Descr 8','Test 8'
    insert into cache_test (id, descr, testcolumn) select 9,'Descr 9','Test 9'
    insert into cache_test (id, descr, testcolumn) select 10,'Descr 10','Test 10'
    go
    
    dbcc freeproccache
  4. cache_test 테이블의 단일 행을 업데이트하고 캐시에 이 단일 행 업데이트 위한 계획을 참고하십시오. 이렇게 하려면 다음 Transact-SQL 문을 실행할: 업데이트 cache_test
    update cache_test
    set testcolumn = 'testing '+cast(id as varchar)
    where id between 1 and 1
    go
    
    select SetOpts,UseCounts,* from master..SyscacheObjects where ObjId=Object_ID('cache_test_update') order by SetOpts, CacheObjType
    go
    다음과 비슷한 출력이 나타납니다.
    SetOpts UseCounts bucketid cacheobjtype     objtype  objid      dbid dbidexec uid refcounts usecounts pagesused lasttime maxexectime avgexectime lastreads lastwrites setopts langid dateformat status sqlbytes sql
    5371	1	  10394	   Compiled Plan    Trigger  1029578706	5    5	      1	  2	    1	      1	        0	 0	     0	         0	   0	      5371    0	     1	        0	34	cache_test_update
    5371	1	  10394	   Executable Plan  Trigger  1029578706	5    5	      1	  1	    1	      1	        0	 0	     0	         0	   0	      5371    0	     1	        0	34	cache_test_update
    
  5. cache_test 테이블의 네 개의 행을 업데이트하고 캐시에 이 여러 행의 업데이트 계획을 참고하십시오. 이렇게 하려면 다음 Transact-SQL 문을 실행할: 업데이트 cache_test
    update cache_test
    set testcolumn = 'testing '+cast(id as varchar)
    where id between 1 and 4
    go
    
    select SetOpts,UseCounts,* from master..SyscacheObjects where ObjId=Object_ID('cache_test_update') order by SetOpts, CacheObjType
    go
    다음과 유사한 출력이 표시됩니다.
    SetOpts UseCounts bucketid cacheobjtype     objtype  objid      dbid dbidexec uid refcounts usecounts pagesused lasttime maxexectime avgexectime lastreads lastwrites setopts langid dateformat status sqlbytes sql
    4347	1	  10394	   Compiled Plan    Trigger  1029578706	5    5	      1	  2	    1	      1	        0	 0	     0	         0	   0	      4347    0	     1	        0	34	cache_test_update
    4347	1	  10394	   Executable Plan  Trigger  1029578706	5    5	      1	  1	    1	      1	        0	 0	     0	         0	   0	      4347    0	     1	        0	34	cache_test_update
    5371	1	  10394	   Compiled Plan    Trigger  1029578706	5    5	      1	  2	    1	      1	        0	 0	     0	         0	   0	      5371    0	     1	        0	34	cache_test_update
    5371	1	  10394	   Executable Plan  Trigger  1029578706	5    5	      1	  1	    1	      1 	0	 0	     0	         0	   0	      5371    0	     1	        0	34	cache_test_update
    
  6. 다섯 개의 행을 업데이트) 캐시에 저장되어 cache_test 테이블과 다음 이 여러 행의 업데이트 계획 참고하십시오. 이렇게 하려면 다음 Transact-SQL 문을 실행할: 업데이트 cache_test
    update cache_test
    set testcolumn = 'testing '+cast(id as varchar)
    where id between 1 and 5
    go
    
    select SetOpts,UseCounts,* from master..SyscacheObjects where ObjId=Object_ID('cache_test_update') order by SetOpts, CacheObjType
    go
    
    다음과 비슷한 출력이 나타납니다.
    SetOpts UseCounts bucketid cacheobjtype     objtype  objid      dbid dbidexec uid refcounts usecounts pagesused lasttime maxexectime avgexectime lastreads lastwrites setopts langid dateformat status sqlbytes sql
    4347	1	  10394	   Compiled Plan    Trigger  1029578706	5    5	      1	  2	    1	      1	        0	 0	     0	         0	   0	      4347    0	     1	        0	34	cache_test_update
    4347	2	  10394	   Executable Plan  Trigger  1029578706	5    5	      1	  1	    2	      1	        0	 0	     0	         0	   0	      4347    0	     1	        0	34	cache_test_update
    

    이 출력 5단계에서 출력 비교하는 경우 트리거 실행 성능 발생할 수 있는 다음과 같은 나타날 수 있습니다.
    • 5 단계 출력 여러 행 업데이트에 해당하는 실행 계획이 삭제됩니다. 새 실행 계획을 만들려면 여러 행 업데이트에 해당하는 실행 계획을 다시 컴파일하여 때문에 이 문제가 발생합니다.
    • 실행 계획을 다시 컴파일할 수 있어야 하는 나타나더라도 실행 계획 두 번 사용되었습니다 usecounts 열을 나타냅니다. 정확하지 않습니다.
    • 또한 단일 행 업데이트에 해당하는 실행 계획은 캐시에서 삭제되었습니다.

참조

자세한 내용은 다음 Microsoft 개발자 네트워크 (MSDN) 웹 사이트를 방문하십시오.
http://msdn2.microsoft.com/en-us/library/aa175244(SQL.80).aspx
Microsoft SQL Server 업데이트를 명명 스키마에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
822499새 명명 스키마에 Microsoft SQL Server 소프트웨어 업데이트 패키지에 대한
출시 이후에 소프트웨어를 수정할 때 Microsoft에서 사용하는 용어에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
824684Microsoft 소프트웨어 업데이트를 설명하는 데 사용되는 표준 용어에 대한 설명
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
263889SQL [[컴파일]] 인하여 블로킹 잠금

속성

기술 자료: 870972 - 마지막 검토: 2007년 11월 2일 금요일 - 수정: 2.4
본 문서의 정보는 다음의 제품에 적용됩니다.
  • 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 kbtrigger kbbug kbfix kbsqlserv2000presp4fix kbhotfixserver kbqfe KB870972 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