2

私はSharePointプロジェクトに取り組んでいます。サイトコレクションとWebに関する情報を取得するにはSQLクエリを使用する必要があります。SharePoint2010を使用しています。

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)]

コンテンツデータベースを直接確認すると、複数のサイトコレクションとWebがありますが(webs.FullUrlはnullではありません)、Sites.FullUrlは常にnullであることがわかりました。

VMにインストールした2つのSharepoint2010を確認しましたが、Sites.FullUrlでは両方ともnullです。Sites.FullUrlが空白であってはならないことを誰かが確認できますか?それはSharePoint2010のせいですか?

PowerShellを使用すると、必要なすべての情報を取得できます。ですから、データベースからもすべての情報を直接取得できるはずです。これは正しいです?

4

2 に答える 2

1

サイト コレクションの URL を探している場合は、Sites.RootWebId を使用して Web に参加し、Webs.FullUrl を使用できます。

例えば:

select SiteID=Sites.ID
    , RootWebId=Sites.RootWebId
    , RootWebURL = Webs.FullUrl
from Sites 
    inner join Webs on Sites.RootWebId = Webs.Id
于 2014-01-14T20:36:24.473 に答える
1

コンテンツ データベースにクエリを実行することはお勧めしません。この他の質問で説明されているように、ブラックボックスとして扱うことになっています。

SPSiteの URL を外部アプリケーションから動的に取得する何らかの方法が必要な場合は、URL をリストに保存してから、リスト Web サービス呼び出しを使用して取得できます。

于 2012-10-11T06:57:51.913 に答える