웹 파트가 사용중인 페이지를 분석 할 수 있습니까?Sharepoint 어디에서 webpart가 사용 중인지 찾으십시오
쉐어 포인트 서버에서 일부 웹 파트를 제거하고 싶지만 사용중인 것과 사용하지 않은 것을 모릅니다.
거기에 해결책이 있습니까? MOSS2007
웹 파트가 사용중인 페이지를 분석 할 수 있습니까?Sharepoint 어디에서 webpart가 사용 중인지 찾으십시오
쉐어 포인트 서버에서 일부 웹 파트를 제거하고 싶지만 사용중인 것과 사용하지 않은 것을 모릅니다.
거기에 해결책이 있습니까? MOSS2007
각 웹 부분을 사용
임 전류 페이지는 페이지 자체에 저장된 추가. 각 웹 파트가 사용되는 위치를 기록하는 중앙 저장소가 없습니다.
이 정보를 검색하려면 사이트의 모든 웹 파트 페이지를 반복해야합니다. 그런 다음 각 페이지에서 웹 파트의 어셈블리 이름을 확인해야합니다. 찾은 모든 웹 파트를 응용 프로그램이 완료되면 출력되는 목록에 추가하십시오.
SPWeb 개체를 사용하면 각 페이지의 웹 파트 관리자를 SPWeb.GetLimitedWebPartManager()으로 검색 할 수 있습니다. 웹 파트 컬렉션을 검색하려면 SPLimitedWebPartManager.WebParts property을 사용하십시오.
Alex's answer (사이트 -> 페이지> 웹 파트 반복)은 매우 정확하며 '올바른'방법이지만 매우 큰 사이트에서는 상당히 비쌉니다.
다른 대안은 데이터베이스 쿼리입니다. 모든 일반적인 경고는 데이터베이스에 직접 액세스하는 데 적용됩니다. 서비스 팩 등을 사용하여 언제든지 변경할 수 있지만 언제든지 변경 될 수 있지만 여기에 모두 큰 소년이라고 가정하면 -
먼저 WebPartTypeId을 찾아야합니다. 관심있는 웹 파트
다음 모든 컨텐츠 데이터베이스에서 실행하십시오.
SELECT DISTINCT D.SiteID, D.WebId, W.FullURL as WebURL, D.Id As DocumentId,
D.DirName, D.LeafName, tp_ID As WebPartSK
FROM dbo.Docs D WITH (nolock)
INNER JOIN dbo.Webs W WITH (nolock) ON D.WebID = W.Id
INNER JOIN dbo.WebParts WP WITH (nolock) ON D.Id = WP.tp_PageUrlID
WHERE WP.tp_ListId Is Null AND WP.tp_Type Is Null AND WP.tp_Flags Is Null
AND WP.tp_BaseViewID Is Null AND WP.tp_DisplayName Is Null
AND WP.tp_Version Is Null
AND WP.tp_WebPartTypeId='<your web parts id>'
당신은 주변이에게 다른 방법으로 할 수있는 (사용의 모든 WebPartTypeId 년대의 목록을 얻을) 그러나 당신의 조회 목록의 일종을해야 할 것이다, 그래서 당신은 WebPartTypeId 해시에서 어셈블리 이름을 얻을 수 없다 웹 파트> typeid 's.
이 작업을 수행하는 또 다른 방법은 특별히
stsadm -o gl-enumpagewebparts -url "http://intranet/hr/pages/default.aspx" -verbose
그것은 단지 특정 페이지에 사용되는 웹 파트를 출력하지만 당신은 사이트의 각 페이지에 대해이 부를 수있는 enumPageWebParts, 게리 LAPOINTE STSADM 확장을 사용하다 또는 사이트의 모든 페이지를 반복하는 명령을 추가 할 수도 있습니다.
그리고 오픈 소스이므로 믿을만한 예제 코드를 찾기 시작할 수 있습니다. – Colin
내가 어떤 방법으로 웹 파트 유형 ID를 생성하는 어떤 성공을 했어, 내가 쿼리를 실행할 때 단순히 어떤 결과를 얻을 수 없습니다. ID가 정확하지 않았기 때문입니다.
이 문제를 해결하기 위해 새 페이지를 만들고 관심이있는 웹 파트의 인스턴스를 삽입했습니다. 그런 다음 LeafName으로 쿼리하여 작성한 페이지를 제공합니다 (고유하게 만들기 위해 최선을 다했습니다). . 이 단일 결과를 반환하고 전체 콘텐츠 데이터베이스를 쿼리 할 반환 한 tp_WebPartTypeId 사용할 수 있습니다.
ID를 생성하는 데 문제가있는 경우 대신이 방법을 시도해보십시오.
누구나 SharePoint 2013에 대해 동일한 쿼리를 찾고있는 경우에 유용합니다. 2013 년에보기가 제거되었으며 동일한 필드가있는 테이블 이름은 dbo.AllWebParts입니다.
SELECT DISTINCT D.SiteID, D.WebId, W.FullURL as WebURL, D.Id As DocumentId,
D.DirName, D.LeafName, tp_ID As WebPartSK
FROM dbo.Docs D WITH (nolock)
INNER JOIN dbo.Webs W WITH (nolock) ON D.WebID = W.Id
INNER JOIN dbo.AllWebParts WP WITH (nolock) ON D.Id = WP.tp_PageUrlID
WHERE WP.tp_ListId Is Null AND WP.tp_Type Is Null AND WP.tp_Flags Is Null
AND WP.tp_BaseViewID Is Null AND WP.tp_DisplayName Is Null
AND WP.tp_Version Is Null
AND WP.tp_WebPartTypeId='<your web parts id>'
@Ryan : Active_t의 배경이 너무 NOLOCK을 사용하여 데이터베이스에서 읽을 때 교착 상태를 방지하기 위해 필수적이며 그 결과가 부정확 할 수 있음을 인정해야 ;-) 가정에주의 @ 우리는 모른다. 개종자에게 설교하는 경우 사과! –
노 락 힌트를 추가하기 위해 편집했지만 실버 탄환이 아니며 자체적 인 잠재적 인 문제 (일관성없는 상태의 데이터)가 있음을 기억해야합니다. 교착 상태를 일으킬 수있는 좋은 참고 자료가 있습니까? 그 중 하나에 대한 확실한 답을 얻는 것이 좋겠지 만, 당연히 공식적인 라인은 ... 아닙니다. – Ryan
이 예제에서 일치하지 않는 데이터를 읽음으로써 야기 될 수있는 문제는 매우 적을 것이라고 말했습니다. – Ryan