ssis脚本任务在Sharepoint文档库中创建文件夹

时间:2012-09-06 16:02:33

标签: c# sharepoint ssis

我正在尝试创建一个SSIS包,该包从远程SQL DB获取文件夹树结构,并在Sharepoint中的文档库中重新创建该结构。

我尝试(硬)编写脚本任务代码来创建一个文件夹,但我收到此错误: http://img856.imageshack.us/img856/1386/helpel.png

仅运行此脚本的一部分后:

Microsoft.Sharepoint.Client.dll
Microsoft.Sharepoint.Client.Runtime.dll

public void Main()
    {
        ClientContext clientContext = new ClientContext("http://spdemo.example.com/");
        clientContext.Credentials = new System.Net.NetworkCredential("admin", "password", "SPDEMO");
        Web rootWeb = clientContext.Web;

        Dts.TaskResult = (int)ScriptResults.Success;
    }

我已经在互联网上寻找解决方案,但没有找到适合我的东西。

所以基本上我需要找出如何:

  1. 创建文件夹
  2. 使用子文件夹
  3. 填充它
  4. 将bitestreams中的文件从SQL复制到Sharepoint,全部都在SSIS中
  5. 提前致谢! 问候, Vlad Ardelean

2 个答案:

答案 0 :(得分:1)

经过一些研究后我发现,为了在SSIS脚本任务中引用DLL,首先必须是strong named

相反,我找到了一种更简单的方法来创建文件夹和上传文件:

public void CreateFolder(string url)
    {
        HttpWebRequest request = (System.Net.HttpWebRequest)HttpWebRequest.Create(url);
        request.Credentials = new NetworkCredential(user, pass);
        request.Method = "MKCOL";
        HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
        response.Close();
    }

public void UploadDocument(byte[] file, string destinationName)
    {
        byte[] buffer = file;

        WebRequest request = WebRequest.Create(destinationName);
        request.Credentials = new System.Net.NetworkCredential(user, pass);
        request.Method = "PUT";
        request.ContentLength = buffer.Length;

        BinaryWriter writer = new BinaryWriter(request.GetRequestStream());
        writer.Write(buffer, 0, buffer.Length);
        writer.Close();

        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        response.Close();
    }

url:表示您要创建的文件夹的网址路径

http://spsite.host.com/DocLib/FolderToCreate

destinationName:路径+文档名称

http://spsite.host.com/DocLib/FolderToCreate/DocToCreate.docx

答案 1 :(得分:0)

您是否尝试在Visual Studio中使用C#编写的独立Windows应用程序运行代码? 如果我在SSIS中遇到错误,我的首选是在Visual Studio中彻底测试该代码,然后将其移植到SSIS中的脚本任务。

如果您尚未完成文件夹创建和文件复制到SharePoint,则以下链接可能有所帮助。

  1. 创建一个文件夹 - http://thingsthatshouldbeeasy.blogspot.in/2009/09/how-to-add-folder-to-sharepoint-list.html

  2. 您可以递归执行创建文件夹步骤,直到您创建了目标树结构。

  3. 复制文件 - http://msdn.microsoft.com/en-us/library/ms454491.aspxhttp://msdn.microsoft.com/en-us/library/ms470176.aspx

  4. 我不明白你在SQL的bitestreams中复制文件是什么意思。如果要通过ADO.Net从SQLServer读取二进制数据,请使用System.Data.SqlDbType.VarBinary

    将数据从SQL Server读取到流并写入临时文件,将该临时文件从本地复制到SP。或者您甚至可以在没有临时文件的情况下直接将数据以流的形式写入SP。