문제

SharePoint 2003에서 작동하는 쿼리를 찾고 있으며, 주어진 userID가 작성/터치 한 모든 문서를 보여줍니다.

사용자를위한 문서 (DOCS) 및 테이블 (userInfo, userData)이있는 테이블을 찾았지만 userData 테이블에는 99,000 개의 레코드가 있고 userInfo에는 12,000 개의 레코드가 있습니다. 400 명의 사용자가 있습니다!

나는 400 개의 레코드가있는 사용자 테이블과 문서 테이블에 가입 한 사용자 테이블과의 간단한 1에서 많은 관계를 기대하고 있다고 생각하지만, 그렇지 않습니다.

모든 도움이 감사하겠습니다.

편집 : 감사합니다 Bjorn, 저는 쿼리를 SharePoint 2003 구조로 다시 번역했습니다.

select 
d.* from 
userinfo u join userdata d 
on u.tp_siteid = d.tp_siteid  
and 
u.tp_id = d.tp_author 
where
u.tp_login = 'userid' 
and
d.tp_iscurrent = 1

이것은 나에게 siteId/listid/tp_id의 목록을 얻을 수 있습니다. 모두 : 추가 도움이 여전히 감사합니다!

도움이 되었습니까?

해결책

나는 SharePoint 2003의 데이터베이스를 본 적이 없지만 2007 년에 UserInfo는 사이트에 연결되어 있습니다. 즉, 모든 사용자는 각 사이트 컬렉션 (또는 동등한 2003 개념)에 대해 userInfo에 행이 있습니다. 따라서 해당 사이트 내에서 사이트 ID와 사용자의 ID가 모두 필요한 사용자를 식별하기 위해. 2007 년에는 다음과 같은 것으로 시작할 것입니다.

select d.* from userinfo u 
join alluserdata d on u.tp_siteid = d.tp_siteid 
and u.tp_id = d.tp_author 
where u.tp_login = '[username]'
and d.tp_iscurrentversion = 1

업데이트 : 다른 사람들이 여기에 글을 쓰면서 SharePoint 데이터베이스로 직접 이동하는 것이 좋습니다. 그러나 나는 당신의 머리를 사용하고 조심해야한다고 말할 것입니다. 업데이트는 All-Caps No-No이지만 Selects는 컨텍스트에 따라 다릅니다.

다른 팁

SharePoint 데이터베이스를 직접 쿼리하지 마십시오!

내가 그렇게 명확하게했는지 궁금합니다. :)

C#에서 사용 가능한 객체 모델을 실제로 살펴 봐야합니다. SiteCollection을 위해 SPSITE 인스턴스를 가져와야하며 SPSITE 및 SPWEB 객체에 속하는 Splist 인스턴스를 반복해야합니다.

Splist 객체가 있으면 원하는 사용자를 위해 필터링하는 쿼리를 사용하여 getListitems를 호출해야합니다.

그것이 당신이 원하는 것을하는 지원되는 방법입니다.

SharePoint가 전혀 설계되지 않았으므로 데이터베이스로 직접 이동해서는 안되며 데이터베이스의 구조가 버전과 업그레이드간에 동일하다는 보장은 없습니다 (실제로는 특정 경고가 있습니다). 농장의 여러 컨텐츠 데이터베이스에 퍼져 있습니다. 하나의 콘텐츠 데이터베이스에서 실행되는 쿼리가 다른 콘텐츠 데이터베이스에서 기대하는 것을 수행한다는 보장은 없습니다.

반복을위한 객체 모델을 보면 () 생성 한 SPSITE 및 SPWEB 객체를 처리해야합니다.

아, 그렇습니다. 400 명의 사용자가있을 수 있지만 30 개의 사이트가 있다고 생각합니다. 정보는 사이트 당 데이터베이스에서 반복됩니다 ... 30 x 400 = 데이터베이스의 항목.

SharePoint에서 해당 쿼리를 사용하려면 컨텐츠 데이터베이스에서 뷰를 작성하거나 데이터베이스에 직접 쿼리하는 것이 큰 무의미한 것 같습니다. 해결 방법은 객체 모델을 통해 반복하고 결과를 자신의 데이터베이스에 기록하는 몇 가지 사용자 정의 코드 일 수 있습니다. 이것은 타이머 기반이거나 이벤트 트리거를 기반으로 할 수 있습니다.

쿼리에 (NOLOCK)을 추가하는 잠금 장치로 선택을하지 않아야합니다. 시스템의 일부는 시간이 매우 민감하며 시스템이 예상하지 못한 잠금 장치를 도입하기 시작하면 시스템이 괴로워하는 것을 볼 수 있습니다.

그러나 실제로 객체 모델을 통해이 작업을 수행해야합니다. Ironpython과 같은 것을 엉망으로 만들고 OM에 대한 실험은 거의 유쾌합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top