2012-10-10 18 views
1

我正在project.it需要使用SQL查詢來獲取使用SharePoint 2010有關網站收集和web.I'm一些信息的共享點:爲什麼SharePoint內容數據庫中的Sites.FullUrl爲空?哪裏可以找到網站收集網址?

SELECT 
    Webs.Title AS [Site Title] 
, Webs.FullUrl AS [Site Url] 
, Lists.tp_Title AS [List/Library Title] 
, COUNT(*) AS [Total GIF] 
, CAST(CAST(SUM(Docs.Size) AS FLOAT)/1024.0 AS DECIMAL(10,3)) AS [Size (KB)] 
FROM Docs 
INNER JOIN Webs On Docs.WebId = Webs.Id 
INNER JOIN Sites ON Webs.SiteId = Sites.Id 
INNER JOIN Lists ON Docs.ListId = Lists.tp_ID 
WHERE Docs.Type <> 1 
AND Docs.LeafName LIKE '%.gif' 
AND Docs.LeafName NOT LIKE 'template%' 
GROUP BY 
    Webs.FullUrl 
, Webs.Title 
, Lists.tp_Title 
ORDER BY 
    [Site Url] 
, [List/Library Title] 
, [Total Gif] 
, [Size (KB)] 

,當我直接檢查內容數據庫,我發現Sites.FullUrl始終爲空,但我確實有多個網站集和網站(webs.FullUrl不爲空)。

我檢查了2 Sharepoint 2010我安裝在VM上,它們都爲null爲Sites.FullUrl。有人可以確認Sites.FullUrl不應該是空白的嗎?這是因爲SharePoint 2010嗎?

使用powershell,我可以得到我想要的所有信息。所以,我想我應該能夠直接從數據庫獲取所有信息。它是否正確?

+0

加入在問題的查詢。謝謝 – urlreader

回答

1

不建議您查詢內容數據庫。你應該把它當作一個黑盒子,as explained in this other question

如果您需要某種方式從外部應用程序動態檢索SPSite的URL,可以將URL存儲在列表中,然後使用列表Web服務調用檢索它。

1

如果您要查找網站集的網址,可以使用Sites.RootWebId與網站結合,然後使用Webs.FullUrl。

例如:

select SiteID=Sites.ID 
    , RootWebId=Sites.RootWebId 
    , RootWebURL = Webs.FullUrl 
from Sites 
    inner join Webs on Sites.RootWebId = Webs.Id 
相關問題