2010-06-18 2 views
0

쿼리 실행을 제어 할 수 있습니까?ExecuteNonQuery를 제어하는 ​​방법

예를 들어 커다란 쿼리가 있는데 갑자기 오류가 발생하지만 실행을 중단하고 싶지는 않습니다.이 단계를 건너 뛰고 계속 진행하고 싶습니다.

또는 사용자에게 무슨 일이 일어나고 있는지, 현재 서버에서 실제로 일어나고있는 일을 알려주고 싶습니다.

SQL 서버로부터 피드백을받을 수 있습니까? "방금 방아쇠를 성공적으로 삭제했습니다"또는 "방금 테이블 교대로 나사로 감았습니다 ... So-n-so"

답변

1

저장 프로 시저를 몇 개의 작은 조각으로 나눠서 트랜잭션으로 모두 래핑 할 수 있습니다.

+0

아니요. C# 코드에서 SQL 스크립트의 런타임을 제어하는 ​​방법을 의미합니까? – Agzam

+0

정확히 storeproc가 아닙니다. Management Studio 마법사에서 생성 한 스크립트를 C# 코드에서 실행하여 해당 스크립트를 기반으로 데이터베이스를 만들려고합니다. 때로는 어떤 이유로 예외가 발생합니다. 그러나 스크립트의 수명을 제어하고 문제가있는 부분을 건너 뛰고 싶습니다. 스크립트의 어느 부분 (실제 t-sql 문)이 현재 올바르게 작동하고 있는지 사용자에게 알려주고 싶습니다. 이론적으로 가능합니다. 맞습니까? – Agzam

+0

마법사가 생성 한 스크립트를 수정하면 변수를 삽입하고 주기적으로 업데이트하여 진행 상황을 추적 할 수 있습니다. 스크립트의 모든 문 다음에 오류를 확인하는 코드 (@@ ERROR 사용)를 삽입하면 스크립트를 종료하고 오류 및 진행 변수를 호출 프로그램에 다시 전달할 수 있습니다. 진행 상황을보고 할 때 가장 좋은 방법은 마법사에서 스크립트를 여러 개의 작은 조각으로 나누어 순차적으로 호출하고 각 조각을 실행 한 후 사용자에게 진행 상황을보고하는 것입니다. – TLiebe

0

물론 가능합니다. 사용

SAVE { TRAN | TRANSACTION } { savepoint_name | @savepoint_variable } 
[ ; ] 

http://msdn.microsoft.com/es-es/library/ms188378.aspx

으로는 문이 커밋 또는은없는 입자 제어 할 수 있으며, 포인트를 저장.

마지막으로 정보가있는 테이블 을 변수로 앱에 반환 할 수 있습니다.

+0

ExecutNonQuery 또는 다른 것과 같은 것을 사용하여 C# 코드에서 SQL 관리 스크립트 마법사에 의해 생성 된 스크립트를 실행하려고하면 오류가 발생합니다. 어떻게 제어 할 수 있습니까? – Agzam

관련 문제