zoukankan      html  css  js  c++  java
  • Sharepoint 复制备份系列使用编程方式复制列表2(Copy a SharePoint List or site ,web Programmatically)

    Sharepoint 复制备份系列--使用编程方式复制列表2(Copy a SharePoint List or site ,web Programmatically)

    微软sharpoint server 2007和windows sharepoint services 3.0是一个相当优秀的工具,帮助企业组织公司的日常内容并且可以有效的应用于业务之中。但是所有的存在的信息怎么样保存和移动呢?虽然说2007和wss是一个很好的平台,但是处理这些问题,可以操作的工具还是比较不足的。这篇文章将会介绍解决这些问题的一些方法,从一个位置复制或者移动到另一个位置。

    我们知道Windows SharePoint Services 30里面有这样的一个类,它支持从windows sharepoint services 网站集导出特定的内容为一个CAB文件形式(扩展文件名),它是以xml形式的存在。

    SPExport (Microsoft.SharePoint.Deployment)

    命名空间: Microsoft.SharePoint.Deployment
    程序集: Microsoft.SharePoint (在 microsoft.sharepoint.dll 中)

     

    [SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel=true)]

    public sealed class SPExport : SPDeployment

    备注

    这个类可以用来导出,导入,发布,迁移sharepoint 的内容,支持备份和恢复。

    但需要设置Spexportsettings

    You can initiate an export operation by first initializing an instance of the Microsoft.SharePoint.Deployment.SPExportSettings class with the required export settings and then passing the SPExportSettings object to the constructor of SPExport class; you then call the SPExport.Run method.

    示例

    The following code example demonstrates how to perform a full export of an entire site collection.

    SPExportMethodType.ExportAll; 可选。枚举,指定导出操作是完全导出还是增量导出(根据自上一次导出以来所发生的变化)。

    ExportAll

    指定应将所有导出对象导出到内容迁移数据包。

    ExportChanges

    指定只应导出自内容迁移数据包的上一版本后发生了更改的导出对象。

    settings.IncludeSecurity = SPIncludeSecurity.All;

    None

    指定未迁移任何用户或组信息。(默认)

    WssOnly

    仅应用 Windows SharePoint Services 3.0 安全设置。包括用户成员资格和角色分配(如默认角色,例如,网站设计者或从默认角色扩展的任何自定义角色)。迁移每个对象的访问控制列表 (ACL)。不包括 DAP LDAP 服务器中定义的任何用户信息。

    All

    应用所有可用的 Windows SharePoint Services 3.0 安全设置。包括用户成员资格和角色分配(如默认角色,例如,网站设计者或从默认角色扩展的任何自定义角色)。迁移每个对象的 ACL。此外,还包括在 DAP LDAP 服务器中定义的用户信息。

    [C#]

    SPExportSettings settings = new SPExportSettings();

    settings.SiteUrl = "http://servername:80";

    settings.FileLocation = @"c:\exportdata";

    settings.BaseFileName = "exportfile.cmp";

    settings.FileCompression = true;

    settings.ExportMethod = SPExportMethodType.ExportAll;

    SPExport export = new SPExport(settings);

    export.Run();

    The following code example demonstrates how to perform an incremental export. Notice that the code sets the ExportMethod property to ExportChanges and then provides a change token.

    [C#]

    settings.ExportMethod = SPExportMethodType.ExportChanges;

    settings.ExportChangeToken = "1;1;87a71761-2987-48eb-9d29-48428270e01;632937036861200000;5512";

    SPExport/SPImport

    SPExport/SPImport在Microsoft.SharePoint.Deployment命名空间里,这些类提供了一些方法来做一些基本的备份,恢复网站,列表和其他对象,还有一些在sharepoint designer 使用的也可以用这个方法。要使用这两个类,你必须要配置settings这个类。

    以下是一个main方法:

    static void Main(string[] args)

    {

    int readValues;

    char charValues;

    Console.WriteLine("Please enter the source web url:");

    string sourceUrl = Console.ReadLine();

    Console.WriteLine("Please Enter the destination web url:");

    string destUrl = Console.ReadLine();

    Console.WriteLine("Please Enter the list your want to copy:");

    string copyList = Console.ReadLine();

    string retval = "Hello,the source web url:" + sourceUrl + ", the destination web url:" + destUrl + ",the list:"+copyList;

    Console.WriteLine(retval);

    Console.WriteLine("Let us begin to copy: y(yes) or n(No)");

    readValues = Console.Read();

    charValues = (char)readValues;

    char yesTag = 'y';

    if (charValues != yesTag)

    {

    return;

    }

    string filePath = @"C:\Export Files\" + copyList + ".cmp";

    if (File.Exists(filePath))

    {

    Console.WriteLine( copyList + ".cmp"+ "is existd,please check and do again!");

    Thread.Sleep(3000);

    return;

    }

    ExportMethod(sourceUrl,copyList);

    ImportMethod(destUrl, copyList);

    Console.WriteLine("Copy:"+copyList+" task is done.");

    Console.WriteLine(retval);

    Thread.Sleep(10000);

    }

    T As stated above, the export process is configured using the settings class, SPExportSettings in this case.

    public static void ExportMethod(string sourceUrl,string copyList)

    {

    // Get handle to web and doclib to export

    SPSite site = new SPSite(@sourceUrl);

    SPWeb web = site.OpenWeb();

    SPList list = web.GetList("/itws/Lists/" + copyList);

    // Define export settings

    SPExportSettings settings = new SPExportSettings();

    settings.ExcludeDependencies = true;

    settings.SiteUrl = sourceUrl;

    settings.FileLocation = @"C:\Export Files\";

    settings.BaseFileName = copyList+".cmp";

    settings.ExportMethod = SPExportMethodType.ExportAll;

    settings.LogFilePath = settings.FileLocation + copyList+"_export_log.txt";

    settings.CommandLineVerbose = true;

    settings.IncludeSecurity = SPIncludeSecurity.All;

    // Add reference to document library to export

    SPExportObject exportObject = new SPExportObject(list.ID, SPDeploymentObjectType.List, web.ID, false);

    settings.ExportObjects.Add(exportObject);

    // Export it

    SPExport export = new SPExport(settings);

    try

    {

    export.Run();

    }

    catch (Microsoft.SharePoint.SPException ex)

    {

    throw ex;

    }

    }

    同样,导入的时候也要设置SPImportSettings

    public static void ImportMethod(string destUrl,string copyList)

    {

    // Settings for import

    SPImportSettings settings = new SPImportSettings();

    // File & path

    settings.FileLocation = @"C:\Export Files\";

    settings.BaseFileName = copyList+".cmp";

    // Site and web to import to

    settings.SiteUrl = destUrl;

    settings.WebUrl = destUrl;

    // Set log file location

    settings.LogFilePath = settings.FileLocation + copyList+"_import_log.txt";

    // Display messages while running

    settings.CommandLineVerbose = true;

    settings.IncludeSecurity = SPIncludeSecurity.All;

    // Don't retain object GUIDs, only necessary

    // if want to do incremental imports to same list

    // at a later time

    settings.RetainObjectIdentity = false;

    // Keep security, versions, and date/time stamps

    settings.UpdateVersions = SPUpdateVersions.Append;

    settings.UserInfoDateTime = SPImportUserInfoDateTimeOption.ImportAll;

    // Import it

    SPImport import = new SPImport(settings);

    try

    {

    import.Run();

    }

    catch (SPException ex)

    {

    throw ex;

    }

    }

  • 相关阅读:
    php 安装 Redis 扩展
    远程连接mysql出现"Can't connect to MySQL server 'Ip' ()"的解决办法
    MySQL 连接超时:报错SQLSTATE[HY000] [2002] Connection timed out解决
    linux命令解压压缩rar文件
    Xshell、Xftp评估过期的解决办法
    远程连接mysql出现1045错误的解决办法
    PHP 判断当前日期是否是法定节假日或者休息日
    PHP解压压缩包文件到指定目录的实现
    PHP逐行解析文件,并写入数据库
    PHP编程实现多维数组按照某个键值排序的方法
  • 原文地址:https://www.cnblogs.com/sunjunlin/p/1828251.html
Copyright © 2011-2022 走看看