有没有人知道如何使用基于特定sharepoint用户的sql查询来获取Sharepoint List数据。
答案 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,因此基于您的设置)。您将需要在数据集或表本身上设置过滤器,以使列表中的字段与参数匹配。