2009年11月2日 星期一

取得文件庫中所有簽出文件的所有權

有同事一次將4000 多個檔案放到MOSS 的文件庫後,卻沒有簽入。此時,再請他簽入時,卻只能一個一個檔案簽入了。

救命啊!果然不是人做的。此時只有使用系統帳號,取得所的已取出文件的所有權,然後再以系統帳號再簽入。

可是,還是不行。因為一次要處理的文件太多了,全選並取得所有權時,伺服器會出現 Sql Server Parameters 最多只能有 2100 個的限制。

只好寫程式了。以下就是我寫的程式。

private static void TakeOwnershipOverAllCheckoutFiles(string sitePath, string refWeb, string listName)
    {
      using (SPSite site = new SPSite(sitePath))
      {
        SPWeb web = site.OpenWeb(refWeb);
        SPList list = web.Lists[listName];

        SPDocumentLibrary library = (SPDocumentLibrary)list;

        IList<SPCheckedOutFile> files = library.CheckedOutFiles;

        foreach (SPCheckedOutFile file in files)
          file.TakeOverCheckOut();
      }
    }

這樣一來,就避免了Web UI 的限制。

沒有留言:

Share with Facebook