1

リモートSQLDBからフォルダーツリー構造を取得し、Sharepointのドキュメントライブラリにその構造を再作成するSSISパッケージを作成しようとしています。

スクリプトタスクを(ハード)コーディングして1つのフォルダーだけを作成しようとしましたが、次のエラーが発生します: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でコピーします

前もって感謝します!よろしく、Vlad Ardelean

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

destinationName: パス + ドキュメント名

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.aspxhttp://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 に答える