如何查询Sharepoint列表数据?

时间:2013-09-25 06:45:27

标签: sql sql-server sharepoint sharepoint-2010

有没有人知道如何使用基于特定sharepoint用户的sql查询来获取Sharepoint List数据。

4 个答案:

答案 0 :(得分:4)

无法使用 不应该使用 SQL从SharePoint列表中获取数据。最常见的方法是自定义解决方案,您可以使用CAML(SPQuery)检索列表项的数据(例如,由用户创建)http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spquery.aspx,否则您可以公开SharePoint服务以获得相同的结果{ {3}}

答案 1 :(得分:3)

只要是SharePoint 2010,只要您拥有列表ID GUID

,从SQL中提取它仍然相对容易。

请参阅here

    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.UserData ud
    WHERE (ud.tp_ListId =  '[{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}')

答案 2 :(得分:0)

我案例的解决方案 - 显示SP列表

select l.tp_title
, n1.title.value('(text())[1]', 'nvarchar(32)') as Title
, n2.[status].value('(text())[1]', 'nvarchar(32)') as [Status]
, n3.[priority].value('(text())[1]', 'nvarchar(32)') as [Priority]
from Lists l
join UserData u on u.tp_ListId = l.tp_ID
cross apply tp_ColumnSet.nodes('/nvarchar1') AS n1(title)
cross apply tp_ColumnSet.nodes('/nvarchar3') AS n2([status])
cross apply tp_ColumnSet.nodes('/nvarchar4') AS n3([priority])
where l.tp_title = 'LIST NAME'

答案 3 :(得分:0)

首先,您的SP列表将需要一个用于捕获用户帐户信息的字段。将SQL Report Builder与SharePoint列表数据连接一起使用,在报表上为@User设置一个参数。将此设置为隐藏参数。将此参数的默认值设置为=Right(User!UserID,8):这将为您提供用户帐户信息的后8个字符,然后您可以在该字符上过滤数据集(您的帐户信息可能大于或小于8,因此基于您的设置)。您将需要在数据集或表本身上设置过滤器,以使列表中的字段与参数匹配。