2010-08-19 4 views
1

지난 60 분 또는 지난 24 시간의 스팬 시간 동안 전체 사이트 모음에 대한 모든 활동 목록을 컴파일하려고합니다. 활동은 수정/생성/평가 등의 작업이며 사용자가 수행 한 작업입니다. 한 가지 방법은 무차별 공격이 모든 웹, 목록, 항목을 순회하면서 변경되거나 생성 된 것을 찾아내는 것입니다. 예 :지난 24 시간 동안 전체 사이트 수집에 대한 특정 기간의 모든 활동을 찾으려면 어떻게합니까?

foreach(SPWeb web in site.AllWebs) 
{ 
    foreach(SPList list in web.Lists) 
    { 
    foreach(SPListItem item in list.GetItems()) 
    { 
     // log what has been created/modified 
    } 
    } 
} 

그러나 더 효율적이고 효율적인 방법이 있어야합니다. 지난 24 시간 동안 모든 활동을 기록하는 어딘가가 있습니까? 데이터베이스에이 활동을 모두 보여줄 수있는 무언가 (물론 읽기만 가능)가 있습니까?

+0

이 정보는 각 콘텐츠 데이터베이스의 UserData 테이블에있을 수 있습니다. 아직 조사 중입니다 ... – Shane

답변

0

이 당신에게 마지막 날 내에서 생성되거나 수정 된 모든 것을 줄 것이다 : (? 등급을 포함 할 가능성 등)이 변수 시간 범위를 쿼리 확장 할 수 있습니다

SPSiteDataQuery query = new SPSiteDataQuery(); 
query.Webs = "<Webs Scope=\"Recursive\" />"; 
query.Query = "<Where><Gt><FieldRef Name='Modified' /><Value Type='DateTime'><Today OffsetDays='-1' /></Value></Gt></Where>" 
query.Lists = "<Lists BaseType=\"0\" />"; // for doc libs use: "<Lists BaseType=\"1\" />" 
DataTable dt = web.GetSiteData(query); 

.

+0

우수. 나는 이것을 월요일에 시험해 보겠다. 나는 더 간단한 방법이 존재한다는 것을 알고 있었다. – Shane

+0

리치 제안과 마찬가지로 효과적입니다. 모든 내 사이트를 검토해야하므로 데이터베이스를 직접 방문하는 것으로 끝났습니다 (읽기 전용). 아시다시피 각 My 사이트는 자체 사이트 모음이므로 수천 번 반복해야했습니다. 감사. 답변 수락. – Shane

관련 문제