2009-06-16 6 views
2

SQL Server 2005/2008의 "대량로드시 테이블 잠금"의 sp_tableoption 설정에 대한 장단점은 무엇입니까? 내 시나리오는 데이터베이스에 3 개의 스레드, 하나의 쿼리 스레드, 하나의 대량 삽입 스레드 및 하나의 삭제 스레드가 있습니다.SQL Server의 sp_tableoption

다음

sp_tableoption에 대한 MSDN 관련 링크가 사전에

http://msdn.microsoft.com/en-us/library/ms173530.aspx

덕분에, 조지

답변

1

그냥 대신

예 벌크 INSERT에

대량을 삽입 할 테이블을 삽입하십시오

BULK INSERT Northwind.dbo.[ORDER Details] 
    FROM 'f:\orders\lineitem.tbl' 
    WITH 
    (
     FIELDTERMINATOR = '|', 
     ROWTERMINATOR = ':\n', 
     FIRE_TRIGGERS, 
     TABLOCK --this is it 
    ) 

이 문은 (힌트) -h 스위치와 "TABLOCK"를 사용하여 테이블을 TABLOCK와

BULK INSERT Northwind.dbo.[ORDER Details] 
     FROM 'f:\orders\lineitem.tbl' 
     WITH 
     (
      FIELDTERMINATOR = '|', 
      ROWTERMINATOR = ':\n', 
      FIRE_TRIGGERS 
     ) 

BCP를 고정하지 않습니다 것은

bcp pubs..authors2 in authors.txt -c -t, -Sservername -Usa -Ppass -h "TABLOCK" 

당신은 대량 삽입을 할 수 SSIS 또는 DTS 내에서 및 테이블 잠금에

예를 들어 DTS 변환 데이터 작업에서 옵션 탭을 살펴보고 빠른로드 사용 확인 및 테이블 잠금 SSIS는 비슷한 것을 가지고 있습니다

+0

혼란 스럽습니다. 당신은 언급했다 - "그냥 BULK INSERT 대신에해라."하지만 벌크 삽입 SQL 문에서 테이블 옵션을 설정했는지 알지 못했습니까? 제발 좀 명확히 해줄 수 있니? – George2

+1

첫 번째 쿼리에서 TABLOCK 인수를 사용하고 두 번째 쿼리에서 -h "TABLOCK"을 사용합니다. – SQLMenace

+1

Tablock을 사용하지 않고 BULK INSER 하나에 대해 2 개의 쿼리를 제공하여 답변을 업데이트했습니다. – SQLMenace