대량 삽입과 대량 복사를 동시에 수행하는 방법이 궁금합니다. 그들은 서로에 의존하기 때문에 대량 복사에 영향을 받아야하는 2 개의 테이블이 있습니다.SQl BulkCopy에 대한 질문
그래서 테이블 1을 삽입하는 동안 레코드가 없어지면 테이블 2가 롤백되고 테이블 2는 결코 업데이트되지 않기를 원합니다. 또한 테이블 1이 good을 삽입하고 테이블 2가 실패하면 테이블 1이 롤백됩니다.
대량 복사로이 작업을 수행 할 수 있습니까?
편집
나는 C#을하지만 대량 삽입을하고있는 중이 언급한다.
일종의 모습이지만 이것은 제가 수행 한 예입니다. 그래서 나는
private static void BatchBulkCopy()
{
// Get the DataTable
DataTable dtInsertRows = GetDataTable();
using (SqlBulkCopy sbc = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity))
{
sbc.DestinationTableName = "TBL_TEST_TEST";
// Number of records to be processed in one go
sbc.BatchSize = 500000;
// Map the Source Column from DataTabel to the Destination Columns in SQL Server 2005 Person Table
// sbc.ColumnMappings.Add("ID", "ID");
sbc.ColumnMappings.Add("NAME", "NAME");
// Number of records after which client has to be notified about its status
sbc.NotifyAfter = dtInsertRows.Rows.Count;
// Event that gets fired when NotifyAfter number of records are processed.
sbc.SqlRowsCopied += new SqlRowsCopiedEventHandler(sbc_SqlRowsCopied);
// Finally write to server
sbc.WriteToServer(dtInsertRows);
sbc.Close();
}
}
미안하지만 C# 코드를 통해이 모든 작업을 수행하고 있다고 언급해야합니다. 그래서 나는 당신이 보여준 것을 어떻게하는지 확신하지 못합니다. 그것들은 외래 키 제약 조건입니다. 그러나 서로에 의존한다고 할 때 나는 테이블 2가 이미 채워져 있음을 의미합니다.하지만 삽입이 일어나면 테이블 2의 레코드를 활성화 된 상태로 만듭니다. (이것은 라이센스를위한 것입니다. 사용자 목록을 얻는다면 각각 데이터베이스에 이미 있지만 비활성으로 설정 한 키를 얻으므로이 시간에 활성으로 변경하고 싶습니다. – chobo2