2016-01-24 82 views
-2

我有一个SharePoint站点,并且我在其上创建了一个列表。我想用SQLServer表来加入这个列表。我有权访问SQLServer中的Sharepoint DB,并在此数据库中创建了一个新表。我的问题是,我无法在Sharepoint DB中找到我的列表以加入此新表。 我该如何做到这一点。如何在SQLServer中使用SharePoint列表作为视图

+0

Microsoft不支持直接访问Sharepoint数据库,请阅读本文[https://support.microsoft.com/zh-cn/kb/841057]以获取更多信息。我的建议是编写一个从sharepoint读取并写入SQL的SSIS或程序,并在那里写入连接查询。 – Max

回答

0

即使仅用于阅读,也不应访问SharePoint DB。但是如果你想这样做,那就没有关于这个的文档(没有db模型)。在网上有一些关于此的帖子,如Where does SharePoint store list itemsHOW TO PULL SHAREPOINT LIST DATA FROM SQL SERVER

SELECT 
ud.tp_ID 
, ud.tp_ListId 
, ud.tp_Author 
, ud.nvarchar1 
, ud.nvarchar2 
, ud.nvarchar3 
, ud.nvarchar4 
, ud.nvarchar5 
, ud.nvarchar6 
, ud.nvarchar7 
, ud.nvarchar8 
, ud.nvarchar9 
, ud.nvarchar10 
, ud.nvarchar11 
, ud.nvarchar12 
, ud.* 
FROM dbo.AllLists l 
INNER JOIN dbo.AllUserData ud ON l.tp_ID = ud.tp_ListId 
WHERE (ud.tp_ListId = ‘{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}’) 

在SP2013的DB模式已经改变,列出的数据现在存储在列tp_ColumnSet的AllUserData表XML。

+0

谢谢,但WSS_Content中没有名为dbo.Lists和dbo.UserData的表。这些在哪里? – mghj

+0

你有哪些SharePoint版本?在SP2013中,数据库模型已更改,列表数据现在以XML格式存储在列“tp_ColumnSet”的“AllUserData”表中。 – STORM

0

我终于解决了我的问题,并分享它来帮助你。在名为WSS_Content的sql服务器中有一个数据库,您可以找到dbo.AllUserData表。在SharePoint列表数据,保存在该表:

image of DB name

如果从该表中选择数据,可以看到名称的列:[tp_ColumnSet]有数据。

你必须找出列名有你的数据,并最终创建这个列名这样的观点:

选择ntext2 AS地址,nvarchar1标题,nvarchar5 AS文件名 FROM dbo.AllUserData