1

我正在尝试创建一个 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. 将比特流中的文件从 SQL 复制到 Sharepoint,全部在 SSIS 中

提前致谢!问候, 弗拉德·阿德林

4

2 回答 2

1

经过一些研究,我发现为了在 SSIS 脚本任务中引用 DLL,它首先必须是强命名的

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

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 :表示要创建的文件夹的url路径

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

目的地名称:路径+文档名称

http://spsite.host.com/DocLib/FolderToCreate/DocToCreate.docx
于 2012-10-01T10:01:23.583 回答
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.aspx,http://msdn.microsoft.com/en-us/library/ms470176.aspx

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

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

于 2012-09-06T17:37:22.837 回答