一段时间以来,我一直在努力寻找使用SSRS报告(Sharepoint 2010和SQL Server 2008 R2)报告SharePoint列表数据的最佳选择 .

Part 1 - Confession Time

最初,我非常巧妙地设法避免所有的建议说不要直接从SQL查询SharePoint数据库...所以我最终得到了几个SQL视图,就是这样,即直接查询SP数据库 . 这些SQL视图为存储过程提供数据,而这些存储过程又由SSRS报告调用,因此我正在寻找一种方法来正确地重写视图,而无需更改存储过程和报告 .

Part 2 - A False Dawn calling SharePoint Web Services from a SQL CLR Function

为了纠正我在第1部分中的错误,我决定我需要重新编写SQL视图并决定沿着这里详述的路径: -

https://www.mssqltips.com/sqlservertip/1546/how-to-call-a-sharepoint-web-service-from-a-sql-server-clr-function/

  • 我发现的问题是性能,例如虽然对List.asmx GetListCollection()方法的调用非常快,但对GetListItems()的调用花费的时间要长得多,通常每次调用大约250ms . 这里的问题是我需要为主站点的每个子站点调用GetListItems() - 即每个子站点都有一个我需要数据的列表,并且假设可能有几百个子站点,所有那些250ms添加达到相当差的表现 .

Part 3 - Possible Salvation using the SharePoint Object Model

我目前的想法是使用这里详述的方法: -

http://www.sharepointjohn.com/technology/sharepoint/sharepoint-2010-sql-server-2008-query-the-sharepoint-object-model-from-a-net-sql-server-clr-function/

我的问题是: -

1)使用Sharepoint对象模型是否会提供比Web服务更好的性能? (我想知道对象模型是否提供了一种更好的循环遍历所有子站点并从列表中获取所需数据的方法) .

2)上面链接的第11步需要将大量.NET程序集加载到SQL中 - 这是否会对SQL Server本身产生影响?抱歉,如果这是一个愚蠢的问题,但我现在真的没有知识,并且非常警惕将这样的更改发送到 生产环境 服务器,我只是不明白将程序集加载到SQL时会发生什么 .

3)我是否完全用错误的树吠了?!?!你可能已经聚集了我,我是一个相当初级的开发人员(知识多年来!),有时这样看不到树木的木材 .

任何帮助将非常感激,

非常感谢 :-)