在工作中接触了一些SharePoint的数据库中的一些表。在此做个总结。

一位高手告诉我了与Content Database相关的三个表:

AllUserData            AllDocs              AllDocStreams

我就是从这三个表开始研究的。而且在研究中发现 AllLists表也很重要,但遗憾的是没在msdn上找到对这个表的说明。

表中每列的含义我就不多说了,在msdn上都有。 我在此举几个例子来介绍一下这些表的使用。

 

1. 得到用户上传的文档的数目:

select count(*) as DocNumber from dbo.AllDocs
where [ExtensionForFile] <> '' and [DoclibRowId] > 0 and [ListId] in
(select [tp_ID] from dbo.AllLists where [tp_ServerTemplate] = 101 and [tp_ItemCount] > 0)

注:AllLists列表中记录着所有列表的信息,此处所说的列表指的是所有SPList对象。

 

2. 得到每个文档的平均大小:

--declare variables
declare @file_size int
set @file_size = 0
set @file_size = (select sum(Cast([Size] as bigint)) as DocSize from dbo.AllDocs
where [ExtensionForFile] <> '' and [DoclibRowId] > 0 and [ListId] in
(select [tp_ID] from dbo.AllLists where [tp_ServerTemplate] = 101 and [tp_ItemCount] > 0))
set @file_size = @file_size / 1024
print(@file_size);

注:[Size]字段是以Byte为单位的,所以要将其变为bigint类型。

 

3. 得到文档库中文档的格式及相应的数目:

select [ExtensionForFile], count(*) as FileCount from dbo.AllDocs
where [ExtensionForFile] <> '' and [DoclibRowId] > 0 and [ListId] in
(select [tp_ID] from dbo.AllLists where [tp_ServerTemplate] = 101 and [tp_ItemCount] > 0)
group by [ExtensionForFile] order by [FileCount] desc

暂时先说这些,明天接着写。