5

我正在拼命寻找一种工具,该工具允许我将带有旧版本的文档从 SharePoint 2003 复制到 SharePoint 2007 站点。
你知道有什么简单的(最好是免费的)工具可以做到这一点吗?

4

3 回答 3

5

这对您来说可能为时已晚,但我需要从 SharePoint 2003 站点迁移到 SharePoint 2007 站点,并且不仅要保留版本,还要保留所有文档库中的文件元数据。迁移或升级的官方方法失败了,所以我最终编写了一个工具,该工具必须在目标 SharePoint 2007 服务器上运行,但可以从 2003 服务器复制所有列表和文档库,并且元数据和版本完好无损。它的源代码位于http://sourceforge.net/projects/splistcp,因此请随意使用和改进它。

于 2009-03-18T06:14:26.017 回答
3

我们最近从 SPS 2003 迁移到 MOSS 2007,我试图弄清楚如何做到这一点。可悲的是,似乎没有什么好方法。我最终做的是使用我的 SPS 2003 内容数据库的备份和 MOSS 2007 VM 对整个 SPS 2003 门户进行数据库附加升级。然后,我使用内容迁移命令(stsadm -o export、stsadm -o import)将列表及其所有版本移动到“真正的”MOSS 2007 网站集。

页面为我提供了进行数据库迁移的步骤。

还有一些不错的命令,您可以使用这些命令仅在此处移动一个列表。作为记录,迁移命令(例如 gl-exportlist、gl-importlist)仅在两个 MOSS 2007 安装之间有效。

在结果可以接受之前,我肯定不得不尝试使用 stsadm 扩展和内置命令几次。真正的关键是将数据库迁移到 VM 以将所有内容都放入 MOSS,以便我可以使用这些工具。

我知道这似乎是一项疯狂的工作,但这是我发现在不花费数千美元购买 AvePoint 的 DocAve Migrators 之类的东西的情况下完成它的唯一方法。它真的没有那么糟糕。

需要注意的一件事是,如果在执行导出和导入时包含用户安全性,您将获得大量 SharePoint 组和用户添加到您的生产网站集。

于 2008-11-07T19:16:17.817 回答
1

splistcp 工作得非常好,但是当它试图移动文件时,我每隔一段时间就会出现超时错误。我收到一条超时消息,然后是一条找不到文件的消息,然后程序就退出了。我下载了源代码,在程序试图获取文件的 MBSPListItemsMap.cs 中找到。

我在第 620 行的 catch 代码下方添加了一个 finally 块,写信给 consule,告诉我系统在做什么:

                         ` catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                            bDownloadError = true;
                        }
                        finally
                        {
                            if (bDownloadError)
                            {
                                Console.WriteLine("Error in downloading file: " + fileName);
                                Console.WriteLine("Moving to next file");
                            }

                        }
                        if (!bDownloadError)
                        {
                            if (Program.beVerbose)
                            {
                                Console.WriteLine("Attaching " + fileName);
                            }
                            byte[] fileContents = MBSPSiteMap.ByteArrayFromFilePath(downloadPath);
                            newItem.Attachments.Add(fileName, fileContents);
                            File.Delete(downloadPath);
                        } `

我还在其他地方添加了一些 Console.WriteLine 语句,让我知道系统在做什么。否则,系统只会继续运行,而您无法很好地指示它在做什么。

这个程序很有帮助,因为我必须移动 770 条记录,其中包含大约 20 列信息和几个附件。

谢谢迈克尔!!!!

于 2011-08-05T15:27:30.750 回答