2010-03-30 4 views
4

나는 값이있는 다양한 데이터베이스 유형의 명령 텍스트와 매개 변수가 들어있는 채워진 SqlCommand 개체가 있습니다. 필요한 것은 명령 개체에서 ExecuteNonQuery 메서드를 호출 할 때와 동일한 효과를 낼 수있는 T-SQL 스크립트입니다.쉽게 SqlCommand를 T-SQL 문자열로 변환 할 수 있습니까?

"스크립트 덤프"같은 쉬운 방법이 있습니까? 아니면 명령 개체에서 수동으로 스크립트를 구성해야합니까?

+0

제 기능을하지 못하기 때문에 SqlCommand 개체를 (정적) 메서드로 전달하여 직접 작성해야 할 것 같습니다. – Fabian

답변

4

SqlCommand 개체에서 전체 SQL 문을 직접 가져올 수 있다고 생각하지 않습니다. SQL Server에 보낸 모든 명령을 기록하면 전달 된 명령 텍스트가 SqlCommand 개체의 명령 텍스트와 동일하다는 것을 알 수 있습니다. 매개 변수 값은 별도로 전달됩니다.

그래서 나는 명령 텍스트를 직접 작성하는 것이 유일한 방법이라고 생각합니다. 이것은 실제로 아주 쉽습니다. SqlCommand의 CommandText로 시작하여 매개 변수 컬렉션을 반복하여 매개 변수 자리 표시자를 (이스케이프 된) 매개 변수 값으로 바꿉니다. 이렇게하면 이후의 작업을 수행하는 완전한 SQL 쿼리가 생성됩니다.

+0

괜찮 았지만이 값을 벗어나는 쉬운 방법이 있습니까? –

+0

+1. 이 접근법을 사용하여 "TSQL 스크립트"덤프를 포함하도록 SQL 예외를 로그 아웃하여 SSMS에서 수동/디버그를 시도하여 복사 및 붙여 넣기를 수행 할 준비가되었습니다. – AdaTheDev

+0

BLOB 또는 XML 데이터와 같은 복잡한 유형을 전달하는 경우이를 탈출하는 것이 어려울 수 있습니다. 그러나 varchars와 숫자 같은 간단한 값을 전달한다고 가정하면 아포스트로피 (')로 값을 묶고 포함 된 아포스트로피를 doulbe로 바꾸는 것만 큼 간단해야합니다 ('with '로 대체). 조심해야 할 것은 데이트입니다. 그것들은 적절하게 포맷되어야하지만, 지금 당장은 형식을 기억하지 못합니다. –

관련 문제