Alex's answer (iterando attraverso siti -> pagine> parti web) è buono e il modo "corretto" per farlo è piuttosto costoso su un sito molto grande.
Un'alternativa è una query di database. Tutti i soliti avvertimenti riguardano l'accesso al database direttamente: non modificare nulla, potrebbero interrompersi in qualsiasi momento con i service pack ecc ecc ma assumendo che siamo tutti grandi ragazzi qui: -
Per prima cosa devi scoprire il WebPartTypeId del web part la tua interessata a
Avanti eseguilo su TUTTI i database del contenuto.
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>'
Si potrebbe fare questo il contrario (ottenere un elenco di tutti gli WebPartTypeId è in uso), ma non è possibile ottenere il nome assembly dalla hash WebPartTypeId così si dovrebbe fare una sorta di elenco di ricerca dei web part> typeid's.
@ Ryan: Non sappiamo @ sfondo di Active_t quindi state attenti a ipotesi ;-) Durante la lettura dal database utilizzando NOLOCK è essenziale per prevenire situazioni di stallo e si deve ammettere che i risultati possono essere imprecisi. Chiedo scusa se predica al convertito! –
Ho modificato per aggiungere il suggerimento per non bloccare, ma dobbiamo ricordare che non è un proiettile d'argento e introduce potenziali problemi propri (dati incoerenti). Hai qualche buon riferimento sulla possibilità di causare deadlock? Sarebbe bello avere delle risposte definitive su quello, ma non sorprendentemente la linea ufficiale è ... no. – Ryan
Detto questo, i problemi che sarebbero causati dalla lettura di dati incoerenti in questo esempio sono probabilmente abbastanza piccoli. – Ryan