自动将SP2010外部列表中的数据复制到SP2010自定义列表

3
我有一个SP 2010的外部列表,里面存放着客户姓名。这个列表会在一天中不定期地更新。我希望能够在它被更新或每小时定时地将新增的姓名自动复制到另一个SP 2010列表中。
有没有简单的方法可以做到这一点?如果没有,至少有没有一种方法可以实现?
谢谢您的帮助。
5个回答

6
很抱歉,外部列表不支持工作流。因此,在这里工作流不是一个解决方案。
其中一种方法是创建一个自定义定时作业来同步项目,并配置为定期运行。有关如何创建和注册自定义作业的详细信息,请单击此处
但是,这种方法也有其缺点:
  1. 它相当复杂
  2. 您需要一个农场范围的特性和接收器来注册该作业。原因是出于安全考虑,无法从在内容Web应用程序中运行的代码中注册自定义作业(因此在网站集级别功能接收器中无法工作),仅能从在Central Admin应用程序中运行的代码中进行注册。

2
我会构建一个Windows服务或定时作业在SharePoint上,然后连接一个兼容的ado.net连接器到我的进程中。这样,您就可以像操作普通的SQL表格一样,在两个列表之间复制或同步数据。
private void example()
{    
    // Fetch data from your left sharepoint
    SharePointConnection leftConnection = new SharePointConnection(@"
        Server=mysharepointserver.com;
        Database=mysite/subsite
        User=spuser;
        Password=******;
        Authentication=Ntlm;
        TimeOut=10;
        StrictMode=True;
        RecursiveMode=RecursiveAll;
        DefaultLimit=1000;
        CacheTimeout=5");

    leftConnection.Open();

    string leftQuery = "SELECT * FROM LeftList";
    SharePointDataAdapter adapter = new SharePointDataAdapter(leftQuery, leftConnection);

    DataTable dt = new DataTable();
    adapter.Fill(dt);


    // Insert data in right sharepoint
    SharePointConnection rightConnection = new SharePointConnection(@"
        Server=anothersharepointserver.com;
        Database=whateversite
        User=spuser;
        Password=******;
        Authentication=Ntlm;
        TimeOut=10;
        StrictMode=True;
        RecursiveMode=RecursiveAll;
        DefaultLimit=1000;
        CacheTimeout=5");

    rightConnection.Open();

    // build your rightQuery here
    string rightQuery = "Insert into"...

    SharePointCommand command = new SharePointCommand(rightQuery, rightConnection);
    command.ExecuteNonQuery();

}

您可以尝试使用这个http://www.bendsoft.com/net-sharepoint-connector/。这个ado.net连接器使用SharePoint的API,所以您可以在第三台机器上运行服务,只要它有访问权限,就可以正常运行。

http://blog.bendsoft.com上有一些示例和操作指南。


0

可以轻松地为此创建一个工作流程。当项目新建或更新时,可以触发工作流程。工作流程可以将相同的项目创建到另一个列表中。

尝试使用SharePoint Designer创建工作流程,这非常简单明了。

希望这能有所帮助。:)


0

你为什么想要将外部数据复制到另一个列表中?这样做的目的是什么?也许有更好的解决方案可以实现你想要的功能。

我之所以这么说,是因为你将会复制数据,这可能会变得有些棘手,特别是如果你允许在两个地方更新数据。


嗨道格 - 基本上,我们有一个30年前为纸质世界设计的电子病历系统。该系统在保留患者数据方面工作得很好,但无法用于跟踪患者在系统中的进展。它非常有限,无法更改,实际上也是唯一的选择。幸运的是,数据库可以轻松访问,并且我们正在使用它将新的患者信息导入我们开发的SP跟踪系统中。我们不会在两个位置复制数据,只会提取最基本的信息以供其他用途。我们可以重新输入患者信息,但这样效率更高。 - Ben
嗨,本,听起来你可以利用BCS将数据带入SharePoint,并将其用于你所需的目的。 - Doug Stalter

0

我会使用MS Access从一个表中复制数据,并将其推送到另一个表中。我已经广泛使用Access/Sharepoint,它有点小bug..但通常可以工作。它可能会崩溃-但对于90%的小表格来说,当然可以做到这一点!


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