2013-02-19 4 views
5

SQL Server 2008에서 약 1GB 크기의 CSV를 대량 삽입하려고합니다. 내가하는 것처럼, 그것은 거대한 tempdb.mdf 파일을 생성합니다. 현재이 1GB CSV 파일의 경우 35GB입니다.tempdb.mdf 파일을 수동으로 삭제해도 안전합니까?

나는 다양한 해결책을 시도했는데 Microsoft provides, 그들은 작동하지 않는 것 같습니다.

비 생산 시스템에서 tempdb.mdf 파일을 "축소하는"가장 쉬운 방법은 SQL 서비스가 중단 된 상태에서 tempdb.mdf 파일을 삭제하는 것입니다.

문제가 있습니까? 그렇다면 어떤 종류의 문제가 예상 될 수 있습니까? 여기에 (이 약 4M 행이)가 CSV에서 행의

1)

편집 :

PS D:\> gc .\map.items.csv | select -last 1 
40747646;jdbc:patent/8046822;8683;other/patent;12/31/69 16:00:00.00 PST;E6 E6 80 6D FD 6D 0B 5F 44 66 4E 1C 35 DE 46 BB 19 36 3C 31 37 67 4D 1D DF 58 A5 99 A8 A0 3B 52;crawled;full_patent_db2;Electronic apparatus, function selection method of electronic apparatus and management system of electronic apparatus;Sony Corporation;Tokyo;03;G06F21/00 

2)가 여기에 DB가 (이국적인 아무것도 테이블 정보를 설명하지 않습니다이다, 트리거 없음) : https://gist.github.com/mlissner/4cd13db5a1bbae91dd50

3) 데이터베이스가 단순 복구 모델로 설정됩니다.

+1

테이블 구조 (색인 포함), CSV 파일의 일반 형식 (몇 줄이 적당 함) 및 파일의 행 수를 표시하십시오. 또한 CDC 및 변경 추적, 복제 등의 이국적인 기능이있는 경우 일괄 삽입하려는 테이블에 트리거가 있는지 알려주십시오. –

+1

오프라인 상태에서 삭제하는 것이 시작시 재설정되므로 많은 도움이되지 않습니까? – chrisb

+0

@chrisb 이것을 사용해 보셨습니까? 프로덕션 인스턴스에서 시도해 볼 것을 권장합니까? 이 테스트를 위해 프로덕션 인스턴스를 지원 하시겠습니까? –

답변

1

결국, 예,이 파일을 삭제해도 안전합니다. SHRINKFILE은 일관되게 작동하지 않았습니다 (이유를 모르거나 기본적인 것을 모르는 경우). 파일을 삭제하면 완벽하게 작동했습니다.

부두 이동이 가능하지만 파일이 자동으로 재생성되고 아무런 문제가 발생하지 않았습니다.

4

아니요, 아니요, tempdb mdf 파일을 삭제할 수 없습니다.

파일을 다시 축소해야하는 경우 SQL Server를 다시 시작한 다음 DBCC SHRINKFILE()을 실행하십시오. 이는 "SQL Server가 보이지 않는 동안 mdf 파일 삭제"와는 달리 지원되는 작업입니다.

대량 작업을 최적화하여 tempdb가 firts 장소에서 너무 많이 치지 않도록 할 수도 있지만 실제 문제가 무엇인지에 대한 세부 정보는 말할 수 없습니다.

+0

감사합니다. 편집 내용은 위의 내용을 참조하십시오. – mlissner

0

BCP를 사용할 수 있습니까? 대형 플랫 파일을 SQL Server에로드하는 것이 좋습니다.

또는 전체 복구 모델에서 단순 복구 모델로 전환 할 수 있습니까? 이렇게하면 서버가 수행하는 트랜잭션 로깅의 양이 줄어 듭니다.

+0

MSDN은 실제로 반대 [http://msdn.microsoft.com/en-us/library/ms190421 (v = sql.105)]라고합니다.aspx) : "Transact-SQL이 bcp보다 빠르기 때문에 가능한 경우 Transact-SQL 문을 사용하여 SQL Server로 데이터를 대량 가져옵니다." – Pondlife

+0

충분히 공정합니다. 나는 항상 BCP가 권장 접근법이라는 것을 이해했습니다. 주제 : MSDN 기사 [link] (http://msdn.microsoft.com/en-us/library/ms190422 (v = sql.105) .aspx) http://msdn.microsoft.com/en/ -us/library/ms190422 (v = sql.105) .aspx로 표시됩니다. –

관련 문제