2011-09-19 159 views
1

我正在创建一个PowerShell脚本,用于将数据从SQL Server数据库迁移到SharePoint 2010列表中。我必须从数据库中读取500,000多条记录,对其执行一些操作,然后将其导入各种SharePoint列表。我可以得到这个工作,但基本上我正在寻找最快的方式将这些数据导入SharePoint。从SQL Server将数据导入SharePoint 2010

我已经尝试使用SharePoint API直接添加和更新列表项,但是我将其留在晚上运行,并且它在早上还没有完成。

我也尝试使用lists.asmx web服务为每个项目上传预生成的XML,但是这种方法似乎并不特别快。为此,将XML分解成批以避免超时Web服务请求。我尝试使用异步Web服务请求上传批处理,但基本上杀死了SharePoint网站,所以现在我只使用同步请求,这也是很慢的。

有关如何从SQL Server读取,转换数据并将其添加到SharePoint列表的任何建议?

加成

当从数据库项目的操纵插入到SharePoint列表,这导致要插入771900个别列表项。

+0

您是否检查每分钟处理多少条记录? SharePoint没有内置的批量加载功能,其数据库结构在性能方面非常糟糕,并且您已经从多个不同角度处理了这个问题,因此我认为您需要很长时间才能获得显着收益。如果您知道流程的当前速度,则可以估算需要多少时间,并决定是否值得对其进行优化。 –

+0

不幸的是,很多时间并不是我所拥有的。根据到目前为止所花费的平均时间,插入到sharepoint的每分钟项目是432.我已经推断出这个计算总运行时间为29-30小时(!!!!!!)。 – Jason

+0

源数据库和SP位于不同的计算机上,但此时我不再与源进行交互 - 只需上传已从本地计算机上生成的XML(所有XML文件均<200kb)即可。 SharePoint机器目前占用CPU的90%以上和RAM的80%左右。 – Jason

回答

1

禁用列表中的工作流程可以大大提高性能。新估计的进口时间从原来估计的29个小时缩短至7小时以上。

+0

将此工作流程配置为在创建新项目时启动**或**是否足以将工作流程与列表关联以创建性能问题? –

+1

它们被配置为在创建新项目时启动。因此,上传的每个XML文件都创建了150个项目,导致工作流程针对每个文件运行。在正常操作期间,工作流程不会导致任何明显的性能问题。 – Jason

+0

只是一个说明;当进程再次对服务器运行时,它花费了3个多小时。我对7小时的估计有点过分,所以我认为我们可以假定29小时的估计也会超过实际时间。 – Jason