2009-07-13 4 views

답변

4

귀하가 발급 한 방법에 따라 다릅니다. "BULK INSERT"문구가있는 sql 문자열이 있고 정상적인 (차단) 함수를 사용하여 해당 문자열을 실행하면 아니오, 비동기가 아닙니다. 원하는 경우 ExecuteNonQuery()이 아닌 BeginExecuteNonQuery()/EndExecuteNonQuery()과 같은 함수 쌍을 사용할 수 있습니다.

사용할 수있는 SqlBulkCopy 클래스가 있습니다. 또한 동기식으로 실행됩니다 (WriteToServer()에 대한 호출이 차단됩니다.)

마지막으로, 귀하의 질문 텍스트에 내 심령 디버깅 기능을 사용하여 실제로 처리중인 내용이 잠긴 파일의 문제임을 추측합니다. 해당 파일을 읽는 데 사용하는 코드를 공유 할 수 있습니까?

1

BULK INSERT 명령이 다른 것과 같으면 서버가 완료 될 때까지 Execute를 호출하면 차단됩니다.

AFAIK, SQL Server에는 비동기 명령이 없습니다. SqlCommand에서 비동기 메서드 중 하나를 사용하지 않으면 BULK INSERT가 비동기로 실행되는 방식을 볼 수 없습니다.

또한 명령이 반환되면 SQL Server가 파일에 대해 가진 모든 잠금이 해제되었다고 가정합니다.

다른 의미가 없지만 잠금을 유지하거나 비동기가 아닌 이유는 무엇입니까?

관련 문제