SPS2007数据结构(转)
SPS2007数据结构分析一
董章河加入了SPS2007的研究,所以我就要做做其他的事情。
地球人都知道WSS以及SPS存储到SQLServer中,看看他们是怎么存储的确实有点意思,我想分析这个事情,但是不知道能走多远。
前段时间在看SPS2007的时候,我从外部感觉在SPS2007中,所有的列表、库的模型以及特征应该是完全一致的,究竟是不是这样呢?我没有时间和能力去阅读大量的文档或反编译程序来看,所以想到通过数据库分析的方式来证实这个问题。
首先我们打开安装SPS系统的数据库,看到情况如下:
对应上表我们可以知道凡是Share以及WSS开头的都是SPS建立的数据库。
|
SharedServices2_DB |
|
|
SharedServices2_Search_DB |
|
|
SharePoint_AdminContent_* |
|
|
SharePoint_Config |
|
|
WSS_Content* |
所谓的WSS内容网站集数据库,每一个网站集一个数据库,在安装SPS的时候自动建立一个缺省的网站集,再建立一个个人网站集,以后每建立一个网站集就建立一个这样的数据库 |
|
WSS_Search_moss |
|
其中WSS_Content开头的是每个门户系统单独建立的数据库,我们从这里入手,希望能找到我们需要的东西。
呵呵,其中蓝色标明的那个数据库是昨天新建立的数据库,我们从这里入手比较好办。
首先要找到网站或网站集存储在那里?
我们知道一个新建立的门户本身就是一个网站集,我们看看这个网站集下边有多少网站:
一共5个;
在数据库发现一个【Sites】的表,打开一个记录,有一个【Webs】的表打开6个记录:
报告
门户系统
文档中心
网站
新闻
搜索
对比上述的情况,原来门户系统本身就是一个网站,我们得到如下的资料:
|
Sites |
存储网站集信息 |
|
Webs |
存储网站信息 |
|
AllLists |
列表信息 |
|
AllUserData |
类似列表的用户数据存储 |
|
WebParts |
存放以下的内容: 1、安装到页面的webpart以及list产生的webpart。 2、list的视图也记录到了这里。
|
|
Workflow |
工作流实例信息 |
|
WorkflowAssociation |
工作流流程信息 |
为了验证刚才的分析
我们先建立一个网站看看情况:的确如此,Webs增加了一条记录。
新建立一个网站集,也在Sites中找到一个记录。其中有一个字段设置了启动网站。
我们记录下刚才新建立的网站的id为【30e95f81-889a-457f-9e79-3022d2e70262】
因为作这个分析的初衷是分析列表的情况,所以我们要先找到列表在那里存储的。
发现一个【Lists】的表
新建立一个【胡涛的自定义列表】也找到了这个记录,由于这是分析重点,所以我们提出其字段来分析:
我们记录下这个列表的id【d8777117-b1b5-46c3-a483-29bd6c6000c8】
|
字段名 |
类型 |
为空 |
说明 |
|
tp_WebId |
uniqueidentifier |
Unchecked |
网站id |
|
tp_ID |
uniqueidentifier |
Unchecked |
列表id |
|
tp_Title |
nvarchar(255) |
Unchecked |
列表说明 |
|
tp_Created |
datetime |
Unchecked |
创建时间 |
|
tp_Modified |
datetime |
Unchecked |
最后修改时间 |
|
tp_LastDeleted |
datetime |
Unchecked |
|
|
tp_DeleteCount |
int |
Unchecked |
|
|
tp_LastSecurityChange |
datetime |
Unchecked |
|
|
tp_Version |
int |
Unchecked |
|
|
tp_Author |
int |
Checked |
|
|
tp_BaseType |
int |
Unchecked |
|
|
tp_FeatureId |
uniqueidentifier |
Checked |
|
|
tp_ServerTemplate |
int |
Unchecked |
|
|
tp_RootFolder |
uniqueidentifier |
Unchecked |
|
|
tp_Template |
uniqueidentifier |
Checked |
|
|
tp_ImageUrl |
nvarchar(255) |
Unchecked |
|
|
tp_ReadSecurity |
int |
Unchecked |
|
|
tp_WriteSecurity |
int |
Unchecked |
|
|
tp_Subscribed |
bit |
Unchecked |
|
|
tp_Direction |
int |
Checked |
|
|
tp_Flags |
bigint |
Unchecked |
|
|
tp_ThumbnailSize |
int |
Checked |
|
|
tp_WebImageWidth |
int |
Checked |
|
|
tp_WebImageHeight |
int |
Checked |
|
|
tp_ItemCount |
int |
Unchecked |
|
|
tp_NextAvailableId |
int |
Unchecked |
|
|
tp_Description |
ntext |
Unchecked |
列表说明 |
|
tp_EmailInsertsFolder |
nvarchar(255) |
Checked |
|
|
tp_EmailInsertsLastSyncTime |
nvarchar(50) |
Checked |
|
|
tp_EmailAlias |
nvarchar(128) |
Checked |
|
|
tp_DeleteTransactionId |
varbinary(16) |
Unchecked |
|
|
tp_ScopeId |
uniqueidentifier |
Unchecked |
|
|
tp_HasFGP |
bit |
Unchecked |
|
|
tp_HasInternalFGP |
bit |
Unchecked |
|
|
tp_EventSinkAssembly |
nvarchar(255) |
Checked |
|
|
tp_EventSinkClass |
nvarchar(255) |
Checked |
|
|
tp_EventSinkData |
nvarchar(255) |
Checked |
|
|
tp_MaxRowOrdinal |
int |
Unchecked |
|
|
tp_Fields |
ntext |
Checked |
基于XML的列表字段描述 |
|
tp_ContentTypes |
ntext |
Checked |
|
|
tp_AuditFlags |
int |
Checked |
|
|
tp_InheritAuditFlags |
int |
Checked |
|
|
tp_SendToLocation |
nvarchar(512) |
Checked |
|
|
tp_ListDataDirty |
int |
Unchecked |
|
|
tp_CacheParseId |
uniqueidentifier |
Checked |
|
|
tp_MaxMajorVersionCount |
int |
Checked |
|
|
tp_MaxMajorwithMinorVersionCount |
int |
Checked |
|
|
tp_DefaultWorkflowId |
uniqueidentifier |
Checked |
|
那么,下一个问题就是列表的定义存在什么地方的呢?
发现一个AllUserData的表,在其中发现了这个数据的存储,可以明确列表数据是存储在AllUserData中的。
那么列表的字段说明在那里呢?呵呵,利用XML文件存储的描述。
如:
<FieldRef Name="ContentTypeId"/><Field ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Type="Text" Name="Title" DisplayName="项目" Required="TRUE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Title" FromBaseType="TRUE" ColName="nvarchar1" IMEMode="" MaxLength="255" Version="1" RowOrdinal="0">
<Default/>
</Field><FieldRef Name="_ModerationComments" ColName="ntext1"/><FieldRef Name="File_x0020_Type" ColName="nvarchar2"/><Field Type="Note" DisplayName="说明" Required="FALSE" NumLines="6" RichText="TRUE" RichTextMode="Compatible" Sortable="FALSE" IMEMode="inactive" ID="{e762be22-ce63-4f35-93c0-03fd776d0b64}" SourceID="{d8777117-b1b5-46c3-a483-29bd6c6000c8}" StaticName="_x8bf4__x660e_" Name="_x8bf4__x660e_" ColName="ntext2" RowOrdinal="0" Version="1"/><Field Type="DateTime" DisplayName="日期1" Required="FALSE" Format="DateOnly" IMEMode="inactive" ID="{d1ca0850-6c1a-4ef3-9058-5c798b3fbc49}" SourceID="{d8777117-b1b5-46c3-a483-29bd6c6000c8}" StaticName="_x65e5__x671f_1" Name="_x65e5__x671f_1" ColName="datetime1" RowOrdinal="0" Version="1">
<Default>[today]</Default>
</Field><Field Type="DateTime" DisplayName="日期2" Required="FALSE" Format="DateOnly" IMEMode="inactive" ID="{42d37052-8b65-448a-8711-0b0bfca372f9}" SourceID="{d8777117-b1b5-46c3-a483-29bd6c6000c8}" StaticName="_x65e5__x671f_2" Name="_x65e5__x671f_2" ColName="datetime2" RowOrdinal="0" Version="1">
<Default>[today]</Default>
</Field><Field Type="DateTime" DisplayName="日期3" Required="FALSE" Format="DateOnly" IMEMode="inactive" ID="{c778523e-0da6-4a3b-b5de-c537938d63c4}" SourceID="{d8777117-b1b5-46c3-a483-29bd6c6000c8}" StaticName="_x65e5__x671f_3" Name="_x65e5__x671f_3" ColName="datetime3" RowOrdinal="0" Version="1">
<Default>[today]</Default>
</Field><Field Type="DateTime" DisplayName="日期4" Required="FALSE" Format="DateOnly" IMEMode="inactive" ID="{892ddce7-b9d0-4cd1-a07b-d98f8031c4e1}" SourceID="{d8777117-b1b5-46c3-a483-29bd6c6000c8}" StaticName="_x65e5__x671f_4" Name="_x65e5__x671f_4" ColName="datetime4" RowOrdinal="0" Version="1">
<Default>[today]</Default>
</Field><Field Type="DateTime" DisplayName="日期5" Required="FALSE" Format="DateOnly" IMEMode="inactive" ID="{26d8e9df-b5b1-4807-bb2c-547c79f9e0fb}" SourceID="{d8777117-b1b5-46c3-a483-29bd6c6000c8}" StaticName="_x65e5__x671f_5" Name="_x65e5__x671f_5" ColName="datetime5" RowOrdinal="0" Version="1">
<Default>[today]</Default>
</Field><Field Type="DateTime" DisplayName="日期6" Required="FALSE" Format="DateOnly" IMEMode="inactive" ID="{20672267-48a5-4aa2-8574-f8906646278b}" SourceID="{d8777117-b1b5-46c3-a483-29bd6c6000c8}" StaticName="_x65e5__x671f_6" Name="_x65e5__x671f_6" ColName="datetime6" RowOrdinal="0" Version="1">
<Default>[today]</Default>
</Field><Field Name="_x65e5__x671f_7" FromBaseType="FALSE"
Type="DateTime" DisplayName="日期7" Required="FALSE" Format="DateOnly" IMEMode="inactive" ID="{936061e8-8bf8-4be4-8781-38c858263b51}" Version="2" StaticName="_x65e5__x671f_7" SourceID="{d8777117-b1b5-46c3-a483-29bd6c6000c8}" ColName="datetime7" RowOrdinal="0">
<Default>[today]</Default>
</Field><Field Type="DateTime" DisplayName="日期8" Required="FALSE" Format="DateOnly" IMEMode="inactive" ID="{cf96fcce-0ab4-45b8-85d4-54b3fbd047c4}" SourceID="{d8777117-b1b5-46c3-a483-29bd6c6000c8}" StaticName="_x65e5__x671f_8" Name="_x65e5__x671f_8" ColName="datetime8" RowOrdinal="0" Version="1">
<Default>[today]</Default>
</Field><Field Type="DateTime" DisplayName="日期9" Required="FALSE" Format="DateOnly" IMEMode="inactive" ID="{529799a1-8a04-49fb-848b-1fabeca94742}" SourceID="{d8777117-b1b5-46c3-a483-29bd6c6000c8}" StaticName="_x65e5__x671f_9" Name="_x65e5__x671f_9" ColName="datetime1" RowOrdinal="1" Version="1">
<Default>[today]</Default>
</Field><Field ID="{bc91a437-52e7-49e1-8c4e-4698904b2b6d}" ReadOnly="TRUE" Type="Computed" Name="LinkTitleNoMenu" DisplayName="项目" Dir="" DisplayNameSrcField="Title" AuthoringInfo="(链接到项目)" EnableLookup="TRUE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="LinkTitleNoMenu" FromBaseType="TRUE">
<FieldRefs>
<FieldRef Name="Title"/>
<FieldRef Name="LinkFilenameNoMenu"/>
</FieldRefs>
<DisplayPattern>
<IfEqual>
<Expr1>
<LookupColumn Name="FSObjType"/>
</Expr1>
<Expr2>1</Expr2>
<Then>
<Field Name="LinkFilenameNoMenu"/>
</Then>
<Else>
<HTML><![CDATA[<a onfocus="OnLink(this)" href="]]></HTML>
<URL/>
<HTML><![CDATA[" ONCLICK="GoToLink(this);return false;" target="_self">]]></HTML>
<Column HTMLEncode="TRUE" Name="Title" Default="(无标题)"/>
<IfEqual>
<Expr1>
<GetVar Name="ShowAccessibleIcon"/>
</Expr1>
<Expr2>1</Expr2>
<Then>
<HTML><![CDATA[<img src="http://www.agilelabs.cn/_layouts/images/blank.gif" mce_src="http://www.agilelabs.cn/_layouts/images/blank.gif" class="ms-hidden" border=0 width=1 height=1 alt="]]></HTML>
<HTML>使用 Shift+Enter 可打开菜单(新窗口)。</HTML>
<HTML><![CDATA[">]]></HTML>
</Then>
</IfEqual>
<HTML><![CDATA[</a>]]></HTML>
<IfNew>
<HTML><![CDATA[<IMG src="http://www.agilelabs.cn/_layouts/2052/images/new.gif" mce_src="http://www.agilelabs.cn/_layouts/2052/images/new.gif" alt="]]></HTML>
<HTML>新建</HTML>
<HTML><![CDATA[">]]></HTML>
</IfNew>
</Else>
</IfEqual>
</DisplayPattern>
</Field><Field ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" ReadOnly="TRUE" Type="Computed" Name="LinkTitle" DisplayName="项目" DisplayNameSrcField="Title" ClassInfo="Menu" AuthoringInfo="(链接到带编辑菜单的项目)" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="LinkTitle" FromBaseType="TRUE">
<FieldRefs>
<FieldRef Name="Title"/>
<FieldRef Name="LinkTitleNoMenu"/>
<FieldRef Name="_EditMenuTableStart"/>
<FieldRef Name="_EditMenuTableEnd"/>
</FieldRefs>
<DisplayPattern>
<FieldSwitch>
<Expr>
<GetVar Name="FreeForm"/>
</Expr>
<Case Value="TRUE">
<Field Name="LinkTitleNoMenu"/>
</Case>
<Default>
<Field Name="_EditMenuTableStart"/>
<SetVar Name="ShowAccessibleIcon" Value="1"/>
<Field Name="LinkTitleNoMenu"/>
<SetVar Name="ShowAccessibleIcon" Value="0"/>
<Field Name="_EditMenuTableEnd"/>
</Default>
</FieldSwitch>
</DisplayPattern>
</Field>
AllData表有一个非常有意思的事情,就是针对SPS要使用的数据类型,针对一种类型预算设置了很多的字段,比如日期型设置了8个,如果超过了8个,则采用复制一条记录的方式来处理,第二个字段就存储的第二个记录的第一个字段里边。即使删除多的字段,扩展的记录也不会消失了。
现在可以看看,附件在什么地方?看到一个【AllDocs】目录,新增加附件以后,确实是存放到这里的。
在列表中可以建立目录,目录数据存放在那里呢?还是存放在AllUserData中的。
下一个重要的问题就是视图,视图存放在那里呢?
增加一个名为【new】只有一个字段的视图,按照刚才的分析,可能是采用XML方式存储的,在那里呢?发现文档库表增加了一个名为【new.aspx】的记录,但是比较new.aspx和allitem.aspx发现内容是一样的,仅仅是页面的框架描述。
那么视图存放在什么地方呢?呵呵,通过张文韬的分析,原来发现在【WebParts】里边存储的XML文件,事例如下:
<ViewFields>
<FieldRef Name="Attachments"/>
<FieldRef Name="DocIcon"/>
<FieldRef Name="LinkTitle"/>
<FieldRef Name="_x8bf4__x660e_"/>
<FieldRef Name="_x65e5__x671f_1"/>
<FieldRef Name="_x65e5__x671f_2"/>
<FieldRef Name="_x65e5__x671f_3"/>
<FieldRef Name="_x65e5__x671f_4"/>
<FieldRef Name="_x65e5__x671f_5"/>
<FieldRef Name="_x65e5__x671f_6"/>
<FieldRef Name="_x65e5__x671f_7"/>
<FieldRef Name="_x65e5__x671f_8"/>
</ViewFields>
<ViewFields>
<FieldRef Name="DocIcon"/>
</ViewFields><Query/><Aggregations Value="Off"/><RowLimit Paged="TRUE">100</RowLimit>
本来没有太多的信心继续,这样可以继续完成所谓的《SPS2007列表体系分析了》
我们去分析一下一个新建立的网站集在【WebParts】中有那些记录?
通过SQL查询,看到21个记录,我去网站集新建立一个网站看看情况。新建立网站后,记录变成了26个。
删除主页上缺省的图象Pasrt记录没有变化,增加一个Part,增加了一个记录。
肯定的一个WebPart要放到一个页面上,这个表中也有tp_PageUrlID,我们通过对比发现这个网站的主页的id值为"A8E8C4DA-1996-4F68-BC73-A54B6D4023CE",这又是那个表的id呢?从昨天的分析来看应该是Alldocs,去看看。确实找到了这个记录,说明问题了。
我们搜索的范围更加减小了。
通过搜索,确实主页上存在过3个webpart,所以有三个记录
通过关闭已经添加的webprt,我们发现tp_IsIncluded字段的作用,0表示没有不显示在页面上,1表示显示在页面上,如果一个WebPart添加到页面在关闭掉就是这样处理的,关闭掉以后的记录应该是永远都存在。
现在我们要做的是增加一个自定义列表,看看webparts的记录变化情况。
发现新增4个记录,分别是怎么回事呢?找出这4条记录,找到这四个记录,经过分析,这四个记录是一般自定义列表的新增,编辑,显示和所有内容列表的内容。
现在把这个列表放到主页上,看看WebParts的记录变化情况。
增加了一个记录,我们再次添加这个列表看看情况。
修改其中一个的当前视图,发现tp_view字段有内容了。
更改另外一个部件的视图为简要视图,其tp_view字段也有内容了,如果选择所有项目视图,结果这个字段的内容由为空了。
为了加快进度,赶快作一个讨论来研究一下吧
新建立一个讨论,发现这个网站集下的在AllLists中的记录增加一个。
在AllDocs中增加了10个记录:
内容为文件夹以及aspx页面(6个aspx文件,4个目录)。
在webparts中有针对这个讨论列表的6个记录,3个为列表视图,3个操作视图。
现在需要观察AllListData表了
查询基于这个讨论的内容,记录为0。
增加一个讨论,发现1个记录,增加一个回复,有两个记录,发现一些内容,不过不过瘾,在针对答复给一个答复。
这是tp_ThreadIndex字段的情况
0x01C92A31423C1843B1D1B3F344C4A1C989F5047C4E7D
0x01C92A31423C1843B1D1B3F344C4A1C989F5047C4E7D0000133CC6
0x01C92A31423C1843B1D1B3F344C4A1C989F5047C4E7D0000133CC60000273FEC
从这里可以发现另外一种树型结构的数据设计方式,是否有意义就不知道了。
呵呵,和卢彦、吴庆伟讨论这个事情,说是这样的设计方式在程序编制的时候非常方便,但是问题是如果使用不同的数据库,可能就麻烦了,如果有的数据库不支持取字符串的函数,就不得行了。同时这样的方式可能导致大量的全表扫描。
再增加一个新的讨论【***是大救星】发现Alldocs中也有相应的记录,讨论的主题是建立一个一个目录,为什么是这样设计呢?
查询自定义列表也有这样的问题,联想到前两天分析的自定义列表等可以建立子目录,可能这样作就形成了一个有效的目录体系。
附件存放在那里?
为自定义列表增加一个附件,发现AllDocs增加了2个记录,一个是新建立的目录,一个是上传的文件。在增加一个附件,增加一个记录。
为没有附件的自定义列表项目增加附件,AllDocs增加了2个记录,一个是新建立的目录,一个是上传的文件。
为自定义列表项目增加附件增加同名附件出错,这点从数据结构是可以看到的。
建立一个文档库来分析一下情况。
AllLists增加了一条记录。
AllListData没有增加记录
AllDocs增加内容 如下:
|
sites/hts/oldht |
DocLib |
1 |
|
sites/hts/oldht/DocLib |
Forms |
1 |
|
sites/hts/oldht/DocLib/Forms |
AllItems.aspx |
0 |
|
sites/hts/oldht/DocLib/Forms |
Combine.aspx |
0 |
|
sites/hts/oldht/DocLib/Forms |
DispForm.aspx |
0 |
|
sites/hts/oldht/DocLib/Forms |
Document |
1 |
|
sites/hts/oldht/DocLib/Forms |
EditForm.aspx |
0 |
|
sites/hts/oldht/DocLib/Forms |
repair.aspx |
0 |
|
sites/hts/oldht/DocLib/Forms |
template.doc |
0 |
|
sites/hts/oldht/DocLib/Forms |
Upload.aspx |
0 |
|
sites/hts/oldht/DocLib/Forms |
WebFldr.aspx |
0 |
为文档库上载一个文档
AllListData增加一个记录
AllListdocs增加一个记录
到这里,不管以前SPS2003是怎么设计的,在SPS2007中,确实正如我前段时间设想的那样,所有的列表和库都是一种列表和库的表现体,只是结构、规则不一样而已。
大家可以对比一下下表和实际看到的目录情况,不难发现SPS2007就是利用AllDocs构建了一个资源目录体系。
|
sites/hts |
oldht |
2 |
|
sites/hts/oldht |
_catalogs |
1 |
|
sites/hts/oldht |
_private |
1 |
|
sites/hts/oldht |
_vti_pvt |
1 |
|
sites/hts/oldht |
default.aspx |
0 |
|
sites/hts/oldht |
DocLib |
1 |
|
sites/hts/oldht |
images |
1 |
|
sites/hts/oldht |
Lists |
1 |
|
sites/hts/oldht |
m |
1 |
|
sites/hts/oldht/_catalogs |
masterpage |
1 |
|
sites/hts/oldht/_catalogs/masterpage |
default.master |
0 |
|
sites/hts/oldht/_catalogs/masterpage |
Forms |
1 |
|
sites/hts/oldht/_catalogs/masterpage/Forms |
AllItems.aspx |
0 |
|
sites/hts/oldht/_catalogs/masterpage/Forms |
DispForm.aspx |
0 |
|
sites/hts/oldht/_catalogs/masterpage/Forms |
EditForm.aspx |
0 |
|
sites/hts/oldht/_catalogs/masterpage/Forms |
MasterPage |
1 |
|
sites/hts/oldht/_catalogs/masterpage/Forms |
Upload.aspx |
0 |
|
sites/hts/oldht/DocLib |
Forms |
1 |
|
sites/hts/oldht/DocLib |
无标题.jpg |
0 |
|
sites/hts/oldht/DocLib/Forms |
AllItems.aspx |
0 |
|
sites/hts/oldht/DocLib/Forms |
Combine.aspx |
0 |
|
sites/hts/oldht/DocLib/Forms |
DispForm.aspx |
0 |
|
sites/hts/oldht/DocLib/Forms |
Document |
1 |
|
sites/hts/oldht/DocLib/Forms |
EditForm.aspx |
0 |
|
sites/hts/oldht/DocLib/Forms |
repair.aspx |
0 |
|
sites/hts/oldht/DocLib/Forms |
template.doc |
0 |
|
sites/hts/oldht/DocLib/Forms |
Upload.aspx |
0 |
|
sites/hts/oldht/DocLib/Forms |
WebFldr.aspx |
0 |
|
sites/hts/oldht/Lists |
aaaa |
1 |
|
sites/hts/oldht/Lists |
List |
1 |
|
sites/hts/oldht/Lists |
List1 |
1 |
|
sites/hts/oldht/Lists/aaaa |
1_.000 |
0 |
|
sites/hts/oldht/Lists/aaaa |
2_.000 |
0 |
|
sites/hts/oldht/Lists/aaaa |
AllItems.aspx |
0 |
|
sites/hts/oldht/Lists/aaaa |
Attachments |
1 |
|
sites/hts/oldht/Lists/aaaa |
DispForm.aspx |
0 |
|
sites/hts/oldht/Lists/aaaa |
EditForm.aspx |
0 |
|
sites/hts/oldht/Lists/aaaa |
Item |
1 |
|
sites/hts/oldht/Lists/aaaa |
NewForm.aspx |
0 |
|
sites/hts/oldht/Lists/aaaa/Attachments |
1 |
1 |
|
sites/hts/oldht/Lists/aaaa/Attachments |
2 |
1 |
|
sites/hts/oldht/Lists/aaaa/Attachments/1 |
256406545.jpg |
0 |
|
sites/hts/oldht/Lists/aaaa/Attachments/1 |
无标题.jpg |
0 |
|
sites/hts/oldht/Lists/aaaa/Attachments/2 |
无标题.jpg |
0 |
|
sites/hts/oldht/Lists/List |
1_.000 |
0 |
|
sites/hts/oldht/Lists/List |
2_.000 |
0 |
|
sites/hts/oldht/Lists/List |
3_.000 |
0 |
|
sites/hts/oldht/Lists/List |
Attachments |
1 |
|
sites/hts/oldht/Lists/List |
DispForm.aspx |
0 |
|
sites/hts/oldht/Lists/List |
EditForm.aspx |
0 |
|
sites/hts/oldht/Lists/List |
Item |
1 |
|
sites/hts/oldht/Lists/List |
NewForm.aspx |
0 |
|
sites/hts/oldht/Lists/List |
nnn.aspx |
0 |
|
sites/hts/oldht/Lists/List1 |
AllItems.aspx |
0 |
|
sites/hts/oldht/Lists/List1 |
Attachments |
1 |
|
sites/hts/oldht/Lists/List1 |
Discussion |
1 |
|
sites/hts/oldht/Lists/List1 |
DispForm.aspx |
0 |
|
sites/hts/oldht/Lists/List1 |
EditForm.aspx |
0 |
|
sites/hts/oldht/Lists/List1 |
Flat.aspx |
0 |
|
sites/hts/oldht/Lists/List1 |
Message |
1 |
|
sites/hts/oldht/Lists/List1 |
NewForm.aspx |
0 |
|
sites/hts/oldht/Lists/List1 |
Threaded.aspx |
0 |
|
sites/hts/oldht/Lists/List1 |
×××是大救星 |
1 |
|
sites/hts/oldht/Lists/List1 |
胡涛是好人 |
1 |
|
sites/hts/oldht/Lists/List1/胡涛是好人 |
2_.000 |
0 |
|
sites/hts/oldht/Lists/List1/胡涛是好人 |
3_.000 |
0 |
|
sites/hts/oldht/m |
default.aspx |
0 |
到这里,基于开头提出的设想得到了证实,这些分析内容在以后的分析中肯定就有用了。
我拷,WSS网站集数据库中70多张表居然没有一个关系。
评论
posted on 2008-03-04 17:18 skind@126.com 阅读(770) 评论(0) 收藏 举报
浙公网安备 33010602011771号
# re: SPS2007数据结构分析一
恭喜你找到列字段名称的存储位置.
哈哈,确实如我所料,它是以XML数据格式存在那张表中的.
因为只有这样它才能方便地描述字段的各种属性.