2013-04-10 2 views
3

SQL Server 2008 R2를 사용하여 불투명 한 응용 프로그램을 리버스 엔지니어링하고 일부 작업을 복제하려고 했으므로 대량의 데이터로드를 자동화 할 수 있습니다.SQL Server에서 데이터베이스 쓰기를 추적하려면 어떻게합니까?

나는 SQL Server Profiler로 가서 추적을 시작하고 GUI 작업을 수행하고 추적 결과를 살펴보기 만하면됩니다. 내 문제는 필터가 예상대로 작동하지 않는다는 것입니다. 특히, "쓰기"열은 "INSERT"쿼리와 같이 데이터베이스를 명확하게 변경하는 문에서도 "0"으로 표시됩니다. 이로 인해 Writes >= 1 필터를 설정할 수 없습니다.

나는 모든 것을 포함하는 추적을 설정하고 응용 프로그램을 실행함으로써 정확히 무슨 일이 일어나는지 확인했습니다. 나는 미리 테이블을 점검하고, 작업을 실행하고, 나중에 테이블을 점검하고, 테이블에 확실히 변경을 가하고있다. 추적을 살펴본 결과 INSERT 쿼리를 표시하는 줄을 포함하여 "기록"열에 0이 아닌 숫자를 나타내는 줄이 하나도 없습니다. 나는 '

-

exec sp_executesql 
    N'INSERT INTO my_table([a], [b], [c]) 
     values(@newA, @newB, @newC)', 
    N'@newA int,@newB int,@newC int', @newA=1, @newB=2, @newC=3 

(문이 확실히 테이블의 레코드를 삽입하는 위의 오류가 있다면, 내 오타가 여기)와 같은 쿼리는 아무것도 특별하지 ... 그냥 뭔가 이 동작의 핵심은 "쓰기"열의 설명에 있습니다. "물리적 디스크의 번호는 이벤트 대신 서버에서 수행 한을 기록합니다." 아마도 서버가 쓰기를 캐시하고 있으며 프로필러의 용도 외에서 발생합니다. 나는 모르겠다. 아마도 중요한 것은 아니다.

데이터베이스를 변경하는 모든 명령문을 안정적으로 찾고 기록하는 방법이 있습니까?

+2

추적이 올바르게 구성 되었습니까? 전체 통화 대신 시작 통화를보고 있습니까? 아직 일어나지 않았기 때문에 처음에는 물건을 볼 수 없습니다. –

+0

어떤 이벤트를 필터링하고 있습니까? 삽입, 업데이트 및 삭제에 대한 와일드 카드 검색을 포함하는 Textdata에서 와일드 카드 필터를 수행 할 수 있습니까? 그러나 @ Love2Learn이 말했듯이, RPC Completed와 SQL Batch Completed는 시작하지 않고 추적해야합니다. –

+0

"RPC : Completed"와 "SQL : BatchCompleted"이벤트를 모두 포함하는 "Standard (default)"템플릿을 사용하고 있습니다. Textdata 필터가 저장 프로 시저 내에서 변경된 내용을 catch합니까? 나는이 점에서 새로운 점이있다. –

답변

0

Server Side Trace을 사용해 보셨습니까? 또한 읽기와 쓰기를 문서화하기 위해 작동합니다. 올바르게 읽으면, 쓰기를 문서화하려고합니다.

+0

정확히 Profiler와 같은 결과를보고합니다. –

관련 문제