SQL Server 2012 데이터베이스와 3 백만 개의 행과 50 개의 열이있는 테이블이 있습니다. 무인 백그라운드 .net 프로세스 (일부 SQL 또는 Powershell 명령을 발행 할 수 있음)를 사용하여 각 데이터 행마다 한 줄씩 텍스트 파일로 내보내는 가장 빠른 방법은 무엇입니까? .net 프로세스는 내보내기가 완료된시기 또는 오류가 있는지 알아야합니다. 데이터 유형은 모두 int
또는 nvarchar
입니다.
ado.net을 사용하여 select *
명령 을 실행하고 데이터 리더를 반복하고 각 레코드의 파일에 쓰는 순수한 C # 코드 가 느리고 가정 할 수 없다고 가정합니다.
SQL Server 컴퓨터의 로컬 폴더가 아닌 원격 공유 네트워크 폴더로 내보내는 것이 이상적입니다. SQL Server는 HA 클러스터입니다. SSIS가 이에 더 적합합니까? 데이터 변환이 필요하지 않습니까?
.Net 프로세스는 시스템 A에서 실행되고 시스템 B의 SQL Server에서 실행되며 최종 파일 대상은 네트워크 공유입니다. 한 가지 옵션은 SQL Server가 파일을 네트워크 공유에 직접 작성하는 것입니다. 다른 옵션은 SQL Server가 시스템 A에 쓴 다음 파일이 기록 될 때 .net 프로세스가 파일을 네트워크 공유에 복사하는 것입니다. 공식적인 SLA는 없지만 파일 쓰기에 30 분-1 시간이 걸립니다.
"Ideally the export will be to a remote shared network folder and not a local folder on the SQL Server machine."
-.NET 앱은 어디에서 실행됩니까? 최악의 경우, 이는 데이터가 2 개의 네트워크 홉을 통해 이동해야한다는 것을 의미 할 수 있으며 이는 아마도 가장 큰 병목 현상이 될 것입니다. 또한 행 수는 다소 관련이 없습니다. 대략적인 총 데이터 크기는 얼마입니까? 이 프로세스를 위해 충족해야하는 성능 SLA가 있습니까?