从SharePoint列表提取数据到一个单独的SQL Server表的最简单方法是什么?

8

编辑: 如何最简单地从SharePoint列表数据中提取到单独的SQL Server表中?一个限制条件:你在一个工作环境中,无法控制SharePoint服务器后面的SQL Server,因此不能直接从UserData表中提取。

是否有任何实用工具可以用来安排夜间提取?

微软是否计划在“SharePoint 4”中进行改进?

更新于2009年1月6日:
http://connectionstrings.com/sharepoint
对于未安装office的服务器,您需要:
此下载

12个回答

5

3

抓取?就是屏幕抓取吗?你是认真的?;)

2个选项

SharePoint对象模型 - http://msdn.microsoft.com/en-us/library/ms441339.aspx

SharePoint Web服务 - http://msdn.microsoft.com/en-us/library/ms479390.aspx,特别是列表Web服务

Web服务是Excel/Access与SharePoint通信以集成其列表的方式。

实际上,一些谷歌技巧可以得到以下两个结果:-

将SQL Reporting Services连接到SharePoint列表

使用SQL Server 2005 Reporting Services访问SharePoint列表项


实际上,根据您的解决方案部署位置的不同,您可能只能选择其中之一。虽然您始终可以使用 Web 服务选项,但仅当您的解决方案在 SharePoint 服务器上运行时才可用对象模型。 - Tundey
好的观点 - 出于许多原因,WebService是更好的选择(例如,它更具可扩展性,因为它将使用任何Web农场而不是单个服务器),但缺点是它不像对象模型那样丰富。由于Excel / Access在其操作中使用它,因此应该足够丰富。 - Ryan
不是屏幕抓取...可能用词不当。我指的是数据抓取,或者提取。 - BuddyJoe
尽管你可能会不理解,这就是为什么有笑脸符号。Web服务是我们前进的方向。 - Ryan

2

MOSS 2007/2010和WSS 3.0/4.0都有一个名为Camelot .NET Connector for Microsoft SharePoint的ADO.NET适配器可用。它使您能够通过标准SQL语言查询SharePoint中的列表,使用SharePoint作为数据层。

除了连接器之外,还将提供大量开源工具和实用程序,例如将数据导出到各种格式(XML、MySQL等)的Web部件、Joomla插件、同步服务等。

请参见http://www.bendsoft.com以获取更多详细信息并观看网络广播。BendSoft目前正在寻找测试人员,并鼓励社区提供所有反馈意见。

示例:

SELECT * FROM `My Custom SharePoint List`

INSERT INTO Calendar (EventDate,EndDate,Title,Location) VALUES ('2010-11-04 08:00:00','2010-11-04 10:00:00','Morning meeting with Leia','Starbucks')

DELETE FROM `Corp Images` WHERE `Image Name` = 'marketing.jpg' 

注意: 2023年4月20日

我在Nuget网站上找到了此连接器的当前版本... https://www.nuget.org/packages/Camelot.SharePointConnector


多年的搜索后,我终于找到了这个 - @Ulf,你是英雄。 - user1945782
提醒所有用户,BendSoft网站已经关闭,但可以使用Wayback Machine访问文档。请注意:如果您没有找到想要的内容,可能需要调整存档日期。 - user1945782

2

我写了一篇详细的文章,提供了逐步截图操作,介绍如何将Sharepoint列表项归档到SQL Server中。该方法不使用任何第三方组件,只需使用SQL BI工具和Sharepoint即可。请点击这里查看。


2
两分钟的回答是使用Simego的数据同步工具(http://www.simego.com),只需将其指向您的列表和数据库,它就会同步所有更改。

1
如果你有749.95美元可以用来填补微软战略中的漏洞,那就不错了。仍然想知道SharePoint 4的选项会是什么。 - BuddyJoe

1

1
正如Ryan所说,我也建议使用对象模型/ Web服务将数据存储到单独的SQL数据库中。我认为最好的方法是编写一个事件处理程序,在您的最小化时触发并复制用户插入/更新的数据。

1
关于您对“SharePoint 4”的查询,比尔·盖茨在2008年的SharePoint会议上发表了一些言论。他建议用SharePoint数据丰富SQL表,并提到了其他几个可能很酷的事情。在我们开始看到WSS4 / MOSS 14的测试版之前,很难说他具体意味着什么,以及它是否有助于解决您未来的问题。

很有趣看到“稀疏列”如何融入混合中。 - BuddyJoe

1
我会选择simego软件,但是我没有钱,也许15天的试用期就足够了!

我认为这应该是标准做法。在支付SharePoint费用时应包括此功能。从SharePoint获取数据的API应该可以从标准ODBC驱动程序中调用。 - BuddyJoe

1

如果您已经安装了MOSS,可以从Sharepoint Central Administration设置Business Data Catalog,以自动同步数据。这是一个非常强大的产品,包含在MOSS中。当客户启用它时,我很喜欢使用它。

但有些客户没有启用BDC,对于我自己而言,我发现如果他们没有运行和可用的BDC,不可避免地他们不会给开发人员许多SQL Server权限,因此SSIS通常不可行(但也许只是我)。没问题;对于那些没有BDC的客户,我将组合一个轻量级的EXE,运行在计划任务上,查询Lists.asmx并将更改推送到SQL Server表。对于简单列表中没有删除内容的情况,这是相当琐碎的事情。获取Visual Studio 2008、CAML Builder,并准备好度过愉快的时光。Lists.asmx结果有点有趣,因为列表的行字段都是具有许多属性的单个节点,没有子节点...大概是这样的...编码时请记住这一点...

 <z:row ows_Id="1" ows_Field1="A1" ows_Field2="B1">
 <z:row ows_Id="1" ows_Field1="A2" ows_Field2="B2">

在代码中复制列表时,如果删除了项目或者SP列表之间存在父/子关系,则会出现复杂情况。你可能认为我有一些可以发送给你的代码,但我还没有把可重用的东西组合起来。

我相信还有其他处理方式,但是迄今为止,计划任务EXE对于我多个应用程序多年来一直很可靠。


谢谢提供信息。点赞!在我当前的公司中,由于价格原因,BDC不可行。想知道下一个SharePoint中这个功能会如何打包? - BuddyJoe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接