2009-09-30 3 views
5

क्या यह विश्लेषण करना संभव है कि वेबपृष्ठ किस पृष्ठ का उपयोग कर रहा है?शेयरपॉइंट ढूंढें जहां वेबपार्ट उपयोग में है

मैं अपने शेयरपॉइंट सर्वर से कुछ वेबपर्ट्स को हटाना चाहता हूं, लेकिन मुझे नहीं पता कि उपयोग में क्या है और क्या उपयोग में नहीं है?

क्या इसके लिए कोई समाधान है?

इम moss2007

उत्तर

5

प्रत्येक वेब भाग का उपयोग कर वर्तमान के लिए एक पेज पेज अपने आप में संग्रहीत किया जाता है जोड़ा। कोई केंद्रीय स्टोर नहीं है जो रिकॉर्ड करता है कि प्रत्येक वेब भाग का उपयोग किया जाता है।

दुर्भाग्य से इसका मतलब है कि आपको इस जानकारी को पुनर्प्राप्त करने के लिए साइट के हर वेब पार्ट पेज के माध्यम से फिर से प्रयास करना होगा। प्रत्येक पृष्ठ पर आपको वेब पार्ट्स के असेंबली नामों की जांच करनी चाहिए। एप्लिकेशन के पूरा होने के बाद आउटपुट होने वाली सभी वेब पार्ट्स को एक सूची में जोड़ें।

एसपीवेब ऑब्जेक्ट आपको प्रत्येक पृष्ठ के लिए SPWeb.GetLimitedWebPartManager() के साथ वेब पार्ट मैनेजर पुनर्प्राप्त करने की अनुमति देता है। वेब पार्ट्स का संग्रह पुनर्प्राप्त करने के लिए SPLimitedWebPartManager.WebParts property का उपयोग करें।

4

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 हैश से विधानसभा नाम नहीं मिल सकता है तो आप के देखने सूची में किसी प्रकार का क्या करना है जाएगा वेब पार्ट्स> टाइपिड।

+1

@Ryan: हम नहीं जानते @ Active_t की पृष्ठभूमि तो मान्यताओं के बारे में ;-) जब डेटाबेस NOLOCK का उपयोग करने से पढ़ने गतिरोध को रोकने के लिए आवश्यक है और यह परिणाम गलत हो सकता है कि स्वीकार किया जाना चाहिए सावधान रहना होगा। बदले में प्रचार करने के लिए माफ़ी! –

+0

मैंने लॉक संकेत जोड़ने के लिए संपादित किया है लेकिन हमें याद रखना होगा कि यह चांदी की बुलेट नहीं है और इसकी खुद की संभावित समस्याएं (असंगत स्थिति में डेटा) पेश करती है। क्या आपको डेडलॉक्स पैदा करने के मौके पर कोई अच्छा संदर्भ है? उस पर कुछ निश्चित उत्तर प्राप्त करना अच्छा होगा, लेकिन आश्चर्य की बात नहीं है कि आधिकारिक रेखा है ... नहीं। – Ryan

+0

यह कहकर कि इस उदाहरण में असंगत डेटा पढ़ने के कारण होने वाली समस्याएं शायद काफी छोटी हैं। – Ryan

3

यह करने के लिए एक और तरीका है, गैरी Lapointe STSADM एक्सटेंशन का उपयोग है विशेष रूप से enumPageWebParts

stsadm -o gl-enumpagewebparts -url "http://intranet/hr/pages/default.aspx" -verbose

यह केवल एक विशेष पृष्ठ पर उपयोग में वेब पार्ट्स आउटपुट लेकिन आप अपनी साइट पर प्रत्येक पृष्ठ के लिए यह कह सकते हैं या साइट पर सभी पृष्ठों पर फिर से चलाने के लिए एक आदेश भी जोड़ें।

http://stsadm.codeplex.com/

+1

और यह खुला स्रोत है, मुझे विश्वास है कि यह कुछ उदाहरण कोड ढूंढना शुरू करने के लिए एक अच्छी जगह हो सकती है – Colin

1

मुझे कोई सफलता किसी भी विधि द्वारा वेब भाग प्रकार id पैदा किया है, जब मैं क्वेरी निष्पादित मैं बस कोई परिणाम नहीं मिलता है। ऐसा इसलिए था क्योंकि आईडी कभी सही नहीं थी।

इस समस्या को हल करने के लिए, मैंने एक नया पृष्ठ बनाया और उस वेब भाग का एक उदाहरण डाला जिसमें मुझे रूचि थी। मैं तब लीफनाम द्वारा क्वेरी करता हूं, इसे वह पृष्ठ देता हूं जिसे मैंने बनाया था (इसे अद्वितीय बनाने के लिए सर्वश्रेष्ठ!) । यह एक एकल परिणाम लौटाया और मैं tp_WebPartTypeId का उपयोग कर सकता था, यह पूरे सामग्री डेटाबेस से पूछताछ करने के लिए लौटा।

तो यदि आपको आईडी उत्पन्न करने में समस्या हो रही है, तो इसके बजाय इस दृष्टिकोण को आजमाएं।

2

और यदि कोई शेयरपॉइंट 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>' 
संबंधित मुद्दे