choral's blog

SharePoint, Office, File Formats
随笔 - 87, 评论 - 477, 引用 - 20

导航

关于

Books I Co-authored


Books I Contributed To

Books Read and Reading









标签

每月存档

最新留言

广告

SharePoint列表导入/导出命令

在使用SharePoint的时候我们常常需要做这样一个操作:把某个列表(或文档库)从一个网站转移到另一个网站上去。

比较常见的做法是,把这个列表存为模板文件,然后再在新的网站位置创建一遍。但这种方法比较麻烦,步骤繁琐,而且还受网站模板类型的限制。

SharePoint的对象模型里提供了导入导出内容的功能,其粒度可达列表条目级。

stsadm命令中内置的“import/export”操作就是使用的这套API,但只能操作网站级别的内容。

为了能够便捷的移动列表内容,或者对某个指定的列表进行归档,我开发了两个stsadm命令的扩展操作。

举例:我想把“http://site1”网站里的列表“ABCList”导出并导入到“http://site2”网站里,就可以用以下的命令完成:

stsadm -o exportlist -siteurl http://site1 -listname ABCList -filename d:\abclist.cmp (导出列表到一个文件)

stsadm -o importlist -siteurl http://site2 -filename d:\abclist.cmp         (把一个文件导入到SharePoint网站里,恢复成一个列表)

语法说明:

列表导出操作(exportlist)

stsadm -o exportlist
        -siteurl <SharePoint Site URL>
        -listname <List Display Name>
        -filename <Content Migration Package File Name>
        [-overwrite]
        [-nocontent]

:-nocontent:只导出列表结构,不包含列表内容。

列表导入操作(importlist)

stsadm -o importlist
        -siteurl <SharePoint Site URL>
        -filename <Content Migration Package File Name>
        [-retainobjectid]
        [-originalinfo <all|none|systemaccount>]

:-retainobjectid:导入回导出位置,可用在类似备份还原的场景下。

       -originalinfo :"all"为保留一切原始信息,即导入的数据保持原修改时间和创建者信息。"none"为不保留上述信息。"systemaccount"为修改创建者信息为系统帐户。此选项默认为"all"。

此扩展命令以wsp解决方案包的形式安装部署,下载地址:

http://www.live-share.com/files/302411/xc_stsadmextension.zip.html

KNOWN ISSUE:我不知道怎么通过这套API把条目权限设置也保存下来,谁能给些建议么?(我尝试了IncludeSecurity属性,可是貌似不起作用。)

相关阅读:

如何扩展stsadm命令

Dive in SharePoint Content Deployment/Migration API

如何制作SharePoint解决方案包

SharePoint解决方案包生成工具WSPBuilder

posted on 2008-01-30 18:21:00 by choral  评论(3) 阅读(7980)

SharePoint中的用户信息同步

SharePoint在存放用户信息(显示名称、邮箱地址等)的时候采用了分散存储的方法,即在不同的网站集分别存放用户的信息。这在之前的版本里就造成了一些不同网站用户信息不统一的麻烦。

在MOSS2007里,该信息存储的方式仍然是分布式的,但SharePoint通过一个定时程序使各个网站集里的该信息与用户配置文件保持同步。而用户配置文件里的信息又是和AD同步的。

这个用来同步用户信息的timer job就是:

"Profile Synchronization",每小时运行一次。

用户信息从AD导入到SharePoint用户配置文件,再由上述TimerJob同步到各个网站集。

所以不要担心各网站集里的用户信息不统一了。

如果您的这个timer job运行失败,请参看这两个文章,可能会有所帮助:

http://www.sharepointblogs.com/rlangley/archive/2007/10/10/failure-trying-to-sync.aspx

http://blogs.technet.com/corybu/archive/2007/06/01/detaching-databases-in-moss-2007-environments.aspx

BTW,从后面的这个文章里,我又得到一个宝贵的教训,就是在deletecontentdb之前,要记得运行preparetomove。

<update>

@momo:

这个timer job不需要管理员做任何操作,它是SharePoint预先设置好的,每小时运行的。如果你等不及1小时,需要马上测试这个(或者其他的某个)job的运行结果,那得通过stsadm或者对象模型临时改变这个job的运行周期。参考如下链接:

http://www.codeguru.com/cpp/misc/misc/microsoftofficeoutlook/article.php/c14133/

http://mindsharpblogs.com/ben/archive/2007/09/25/2965.aspx

</update>

posted on 2008-01-28 18:32:00 by choral  评论(6) 阅读(9685)

Powered by: Joycode.MVC引擎 0.5.2.0