Alex's answer (lặp qua các trang web -> trang> phần web) là tốt và cách 'đúng' để thực hiện điều này nhưng khá đắt trên một trang web rất lớn.
Cách khác là truy vấn cơ sở dữ liệu. Tất cả các thông báo trước thường áp dụng khi truy cập trực tiếp vào cơ sở dữ liệu: không thay đổi bất cứ điều gì, có thể phá vỡ bất kỳ lúc nào với gói dịch vụ, v.v. nhưng giả sử chúng ta đều là những cậu bé lớn ở đây: -
Trước tiên, bạn cần tìm hiểu số WebPartTypeId của phần web mà bạn quan tâm trong
Tiếp theo chạy trên cơ sở dữ liệu TẤT CẢ nội dung.
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>'
Bạn có thể làm điều này theo cách khác xung quanh (có được một danh sách tất cả của WebPartTypeId sử dụng) nhưng bạn không thể có được tên lắp ráp từ các hash WebPartTypeId vì vậy bạn sẽ phải làm một số loại danh sách tra cứu của phần web> typeid's.
@Ryan: Chúng tôi không biết @ Active_t's background vì vậy hãy cẩn thận về các giả định ;-) Khi đọc từ cơ sở dữ liệu sử dụng NOLOCK là điều cần thiết để ngăn chặn deadlocks và phải chấp nhận rằng kết quả có thể không chính xác. Xin lỗi nếu rao giảng cho người cải đạo! –
Tôi đã chỉnh sửa để thêm gợi ý không khóa nhưng chúng ta phải nhớ rằng nó không phải là một viên đạn bạc và giới thiệu các vấn đề tiềm năng của riêng nó (dữ liệu ở trạng thái không nhất quán). Bạn có bất kỳ tài liệu tham khảo tốt về cơ hội gây deadlocks? Sẽ tốt hơn nếu có một số câu trả lời dứt khoát về câu trả lời đó, nhưng không ngạc nhiên là dòng chính thức là ... không. – Ryan
Có nói rằng các vấn đề sẽ được gây ra do đọc dữ liệu không nhất quán trong ví dụ này có lẽ là khá nhỏ. – Ryan