我正在尝试创建一个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;
}
我已经在互联网上寻找解决方案,但没有找到适合我的东西。
所以基本上我需要找出如何:
提前致谢! 问候, Vlad Ardelean
答案 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,则以下链接可能有所帮助。
创建一个文件夹 - http://thingsthatshouldbeeasy.blogspot.in/2009/09/how-to-add-folder-to-sharepoint-list.html
您可以递归执行创建文件夹步骤,直到您创建了目标树结构。
复制文件 - http://msdn.microsoft.com/en-us/library/ms454491.aspx,http://msdn.microsoft.com/en-us/library/ms470176.aspx
我不明白你在SQL的bitestreams中复制文件是什么意思。如果要通过ADO.Net从SQLServer读取二进制数据,请使用System.Data.SqlDbType.VarBinary
将数据从SQL Server读取到流并写入临时文件,将该临时文件从本地复制到SP。或者您甚至可以在没有临时文件的情况下直接将数据以流的形式写入SP。