2017-05-09 8 views
0

매일 실행되는 보고서가 있습니다. 이 보고서의 출력을 CSV 파일로 보내려고합니다. 보고서의 특성으로 인해 일부 데이터가 손실 될 수 있습니다 (새 데이터는 작업이 가끔씩 실행될 때 생성되는 경우도 있고 때로는 긴 작업이므로 일부 데이터가 손실 될 수 있음).SQL 서버 보고서 교차 검사

전날의 데이터가 손실되지 않았는지 매일 확인하는 방법이 있습니까? 아마도 데이터가 표시되지 않았 음을 보여주기 위해 각 행 끝에 체크 표시가 나옵니다 csv로 내 보낸?

중요한 정보로 작업 중이므로 어떤 보고서 세부 정보도 공유하지 않습니다.

+2

이것은 너무 광범위합니다. 우리는 귀하의 데이터, 스키마, 당신이 직면하고있는 문제의 실제 예를 데이터를 생성하는 데 사용하는 방법에 대한 정보가 거의 없습니다. 실제 프로세스를 볼 수있는 간단한 프로세스 플로우로 민감한 정보를 포함하지 않는 더미 보고서 데이터를 작성해야합니다. – Tanner

답변

0

이것은 상당히 일반적인 질문입니다. 구체적인 내용이 없으면 구체적인 답변을 제공하는 것이 매우 어렵습니다. 그러나 여기에서는 과거에 사용한 몇 가지 해결책이 있습니다.

일반적으로 이러한 보고서에는 월, 지역, 영업 사원, 제품 유형 등으로 분류 할 수있는 '총계'행이 있지만 일반적으로 '전체 위젯 판매'행이 있습니다. 이것이 빠른 쿼리 (조인 및 기타 상세 검색을 제거해야 할 수도 있음) 인 경우 보고서 데이터를 생성 한 후 해당 쿼리를 실행하면 보고서 끝에있는 총계와 총계를 비교할 수 있습니다. 결과가 다르면 보고서를 실행하는 동안 데이터가 변경된 것입니다.

다른 옵션 - SQLServer 관련 -은보고하는 데이터에 대해 checksum을 사용하는 것입니다. 보고 실행의 시작과 끝 사이에 체크섬이 변경되면 데이터가 변경되었음을 알 수 있습니다.

마지막으로 - 가장 극적으로 - 보고서의 정확도가 중요한 경우 특정 행이보고 실행에 포함되었다는 사실을 저장할 수 있습니다. 이렇게하면 보고서가 훨씬 복잡해 지지만 필요한 모든 데이터가 포함되어 있다는 것을 분명히 알 수 있습니다. 예 :

insert into reporting_history 
select @reportID, widget_sales_id 
from widget_sales 

--- reporting logic here 
select widget.cost, 
     widget_sales.date, 
     widget_sales.price, 
     widget_sales...... 
from widgets inner join widget sales on ... 
      inner join reporting_history on widget_sales.widget_sales_id = widget_sales.widget_sales_id 

---- all your other logic 
+0

완벽 함 - 필요한 부분을 정확히 실행했습니다. – JWain