从SSIS works(但不是从代理作业)填充Sharepoint Online列表

从SSIS works(但不是从代理作业)填充Sharepoint Online列表,ssis,sharepoint-online,sql-server-agent,Ssis,Sharepoint Online,Sql Server Agent,我需要每日通过SQL Server 2017的一个表,在Sharepoint Online的列表中提供大量数据 我选择通过SQL Server Integration Services 2017来实现这一点,而且它工作正常 为此,我创建了一个名为包的数据流任务: 在数据流任务中,我连接到数据库(DB)以获取数据 然后,我有一个名为Script的组件脚本,用于与Sharepoint Online建立连接 然后将数据插入Sharepoint列表中: 要与sharepoint Online建立连接

我需要每日通过SQL Server 2017的一个表,在Sharepoint Online列表中提供大量数据

我选择通过SQL Server Integration Services 2017来实现这一点,而且它工作正常

为此,我创建了一个名为包的
数据流任务

数据流任务
中,我连接到数据库(DB)以获取数据

然后,我有一个名为Script
组件脚本
,用于与Sharepoint Online建立连接

然后将数据插入Sharepoint列表中:

要与sharepoint Online建立连接并在sharepoint列表中插入数据,我创建了一些参数:

在组件脚本中,我有以下代码:

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    // Starting with ClientContext, the constructor requires a URL to the
    // server running SharePoint
    string siteUrl = Variables.siteUrl.ToString();

    ClientContext clientContext = new ClientContext(siteUrl);

    // Retrieve Login
    string login = Variables.login.ToString();

    // Retrieve Password
    string password = Variables.password.ToString();

    // Credentials
    clientContext.Credentials = SignIn.Login(login, password);

    // Retrieve List Items
    List myList = clientContext.Web.Lists.GetByTitle(Variables.list.ToString());

    // Create a new ListItemCreationInformation object
    ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();

    // Create a new List Item 
    ListItem myListItem = myList.AddItem(itemCreateInfo);

    myListItem["Title"] = Row.Name;

    // Note that the web.Update() doesn't trigger a request to the server

    // Requests are only sent to the server from the client library when
    // the ExecuteQuery() method is called
    myListItem.Update();

    // Execute the query to the server
    clientContext.ExecuteQuery();
}
登录课程:

使用此包通过SQL Server代理运行作业时,出现以下错误:

以用户身份执行:INSTANCE\SQLAgentService。Microsoft(R)SQL Server 为64位版权(C)执行软件包实用程序版本12.0.4100.1 微软公司。版权所有。开始时间:14:56:49 错误:2020-09-01 14:58:52.51代码:0x00000001来源:软件包 描述:调用的目标已引发异常。 结束错误DTExec:包执行返回DTSER_SUCCESS(0)。 开始时间:14:56:49结束时间:14:58:52经过时间:122.735秒。 包已成功执行。步骤成功。

疑问:

SQLAgentService是否需要访问Sharepoint Online的权限

是否需要在SQLAgentService服务器上安装Microsoft.SharePoint.Client.Runtime.dll和Microsoft.SharePoint.Client.dlldll

对我来说,身份验证是通过nameless@test.onmicrosoft.com帐户(具有在Sharepoint Online上协作的权限)

如何通过SQL Server代理填充Sharepoint Online列表

class SignIn
{
    public static SharePointOnlineCredentials Login(string login, string password)
    {
        SecureString securePassword = new SecureString();

        foreach (char c in password)
        {
            securePassword.AppendChar(c);
        }

        return new SharePointOnlineCredentials(login, securePassword);
    }
}