2008年4月6日,星期日

成功使用内容部署向导的食谱

所以我的工具 SharePoint内容部署向导 现已开放一段时间,我一直在监视反馈和人们密切关注的问题。当前版本被标记为“ beta 2”,但我对当前代码库的稳定性感到满意,因此可能会很快将其重新标记为“ release 1.0”(遵循有关beta标签心理方面的一些反馈意见:-) )。

只有少数人提出了问题,并且所有问题几乎都与该工具使用的基础Microsoft代码有关,而不是向导本身。我对此可能应该感到高兴,但实际上,如果有人从该工具中获得错误,那实际上并不重要 为什么 它发生了。好消息是,看来Microsoft终于在其结尾处整理了Content Deployment API的一些问题。这是我的指南清单中的关键点,我会向任何遇到向导错误的人提供指导。请注意,前两个同样适用于使用Central Admin的标准内容部署的使用:

提示1-Service Pack 1和修补程序很重要

Service Pack 1解决了内容部署的许多问题。不幸的是,它还破坏了一些以前通过SP1之前的修补程序修复的问题。我花了一段时间才意识到这一点,但是确实是这样。在这方面,最常见的问题可能是“违反主键错误。有报道说,可以通过修改某些库上的版本设置来解决此问题,但是MS现在最近才发布了一个修补程序,该修补程序似乎可以很好地解决SP1环境中的问题。目前,这仅是通过特殊请求-所需的KB为KB950279。这个 论坛主题 讨论这个问题,对我们有用。有趣的是,我在SPC2008上与Tyler Butler(内容部署程序经理)进行了交谈,他表示SharePoint中的“内容部署”可能会“在未来30至60天内变得更加稳定”。我猜这个修补程序就是他指的,或者至少是其中的一部分。

提示2-始终从 一个空白的网站模板 从STSADM创建的空站点-o目标上的createsite

目前,官方指南指出,内容部署要求已经从“空白”网站模板创建了目标网站-有关详细信息,请参见 KB文章923592。但是,Stefan在下面的评论中详细介绍的一种更好的方法是创建一个 空的 使用STSADM -o createsite命令创建站点。这与从空白模板创建的网站不同,这是创建将使用Content Deployment或向导的网站的最安全方法。这意味着,即使您要基于开发中的发布站点模板创建站点,也应以这种方式创建希望将内容部署到的任何其他环境。值得注意的是,对于发布站点,也不应为首次部署启用发布功能-当第一次部署发生时,将为您解决。否则,您将收到相同的“对象已存在”错误。

提示3-注意“保留对象ID”选项

通常,这里的正确选项是选择您确实要保留对象ID,并且应该从第一次部署开始就完成-唯一的例外是将网站/列表移动到站点结构的不同部分(重新创建)。但是,请务必注意,如Stefan在其推荐的“内容部署和迁移API-避免常见问题的帖子。

“向导”中提供的选项的更全面说明可在“使用SharePoint内容部署向导'。还请注意,就工具而言,它不是- 除了项目级重定级和增量部署之类的额外功能外,我还希望重构代码,以便可以从命令行编写向导向导。

特别感谢我的同事Nigel Price处理此修补程序的情况,非常感谢:-)

19条评论:

匿名 said...

克里斯,你好

保持良好的工作状态!

一些评论:

1)SP1中修复了一种主键约束问题。但是仍然存在KB950279中固定的第二种味道。
因此,这不是SP1中引入的新错误,而是第二个错误,独立于SP1之前和之后的错误。

也请继续关注泰勒所说的话。 30-60天的时间表尚未结束。 ;-)

2)您不应该从空白网站模板开始!您需要从一个空的站点开始。并且空白站点模板不是一个空站点。
因此,您应该使用

stsadm -o createsite -url ... -ownerlogin ... -owneremail。

这将创建一个空的网站集。

干杯,
斯特凡

克里斯·奥'Brien说过...

嗨,斯蒂芬,

感谢您的评论,很高兴知道您在听;-)

感谢对主键约束错误的澄清,由于两个不同的原因,我不知道发生了这种情况,因此很高兴听到它实际上不是SP1引入的。

就通过STSADM而非“空白”模板创建空站点而言,我知道这种方法,但是有什么区别呢?我在“空白”站点上创建的网站始终能够成功接收内容部署作业,因此,此指南是否有特定原因?

干杯,

克里斯。

匿名 said...

克里斯,你好

如果您使用SharePoint Designer基于这两种方法连接到网站集,则很容易看出区别。

您将看到“空白”网站模板会手动将几个项目填充到网站集中。

使用标准的发布模板,这些项目没有冲突,因此这意味着您可以将其用作内容部署的目标-但最终会在目标上获得源中不在的其他项目。所以,您可能不想要的东西。

而且我们遇到了这样一个案例,即客户完成的自定义实际上与来自空白网站模板的项目冲突。使用STSADM方法将确保您确实有一个空的网站集,并且您的目的地可以与源相同。

干杯,
斯特凡

克里斯·奥'Brien说过...

斯蒂芬

这是有用的信息,谢谢。我对文章进行了修改以反映这一点-尝试尝试并获得更新的官方“内容部署计划”指南可能会有所帮助 http://technet.microsoft.com/en-us/library/cc263428.aspx?

再次感谢,

克里斯。

匿名 said...

克里斯,你好

感谢您提供有关内容部署的大量信息(以及您的工具)。
我正在构建一个基于Web的部署工具。导出似乎可以正常工作(仅整个和增量),但是当我尝试导入时,在import.Run()上出现以下错误:

[COMException(0x8102006d):此页面的安全验证无效。在Web浏览器中单击“上一步”,...

我试图与RunWithElevatedPrivileges一起运行,但没有任何效果。顺便说一句,我正在导出/导入到本地服务器。

有什么建议?
有什么建议?

克里斯·奥'Brien说过...

嗨,肖恩,

您看到此错误是因为尚未设置SPWeb.AllowUnsafeUpdates属性-从未经表单摘要验证的代码更新SPWeb对象时,此属性是必需的。

祝你工具好运:-)

HTH,

克里斯。

匿名 said...

谢谢您的回应,克里斯。
实际上,我尝试将AllowUnsafeUpdates属性设置为true,但仍得到相同的结果。

SPSite网站=新的SPSite(mysite);
SPWeb网站= site.RootWeb;
web.AllowUnsafeUpdates = true;
SPImportSettings importSettings =新的SPImportSettings();
...
SPImport import =新的SPImport(importSettings);
import.Run();

顺便说一句,我正在使用网站项目(http:// localhost:xxxx)运行此文件,以防万一这可能对您有所帮助。

任何意见?
谢谢... SK

克里斯·奥'Brien说过...

嗨,肖恩,

嗯,在很多情况下,这就是您需要做的。但是,它确实取决于代码在其下运行的身份。在我的应用程序中,我没有这种情况,因为用户必须在Windows中执行“运行方式为..”,才能以其他帐户运行该应用程序。这使我能够安全地收集身份验证详细信息等。

在您的情况下,根据身份,您可能仍需要提升特权,尽管我注意到您没有尝试这样做。

环顾了为什么仍然会收到错误的原因后,我发现了以下内容-这表明您可以在代码中进行更新时暂时禁用页面安全检查:

http://www.sharepointblogs.com/nicksevens/archive/2007/11/23/edit-sharepoint-security-in-c-quot-the-security-validation-for-this-page-is-invalid-quot.aspx

HTH,

克里斯。

埃德·查特里说过...

克里斯,

感谢您提供的宝贵信息。使用此工具,我可以解决SP部署向导遇到的GUID问题。

我注意到其他一些人也有同样的问题。可能值得更新网站以反映“空”与“空白”网站的建议...

再次感谢,
埃德

匿名 said...

克里斯,你好
好吧,我必须为此获得MS支持。无论如何,此案尚未结案,因为我一直在寻找新问题,但这是独家新闻。
1)运行Win应用程序效果很好。问题出在网络应用程序上。
2)有人告诉我它必须在与Central admin相同的apppool下运行,但我认为情况并非如此。
3)我的Web应用程序必须在SharePoint上下文下运行(在SP Web应用程序下创建了虚拟目录...)
4)在我的aspx上添加了几行代码(即Sharepoint:formdigest)

解决所有问题后,我会及时通知您。

顺便说一句,我该如何处理SSP中的搜索设置?我们的实时网站将是只读的,因此我们不需要(想要)迁移所有用户个人资料,但是我们需要迁移所有搜索设置。有什么建议?

谢谢...

克里斯·奥'Brien说过...

嗨,肖恩,

听起来您正在进步,好东西!关于搜索设置,Content Migration API并不涵盖这些内容-您需要构建一些自定义内容才能将其应用于目标。

HTH,

克里斯。

匿名 said...

你好克里斯-
很棒的工具。有关发布源计划的任何更新?

谢谢,

=杰森=

克里斯·奥'Brien说过...

嗨杰森,

感谢您的反馈。恐怕仍不确定我是否要在现阶段将该工具开源,但从长远来看不会完全排除它。

干杯,

克里斯。

匿名 said...

“ SharePoint中的内容部署可能会在“未来30-60天之内变得更加稳定”

我真的希望如此,但是由于CD遇到的问题,我不会屏住呼吸。

匿名 said...

我在哪里指定不保留对象ID?

克里斯·奥'Brien说过...

你好

在导入作业的向导中的“导入设置”屏幕上指定该选项。设置“保留对象ID和位置”有一个复选框。

HTH,

克里斯。

科琳·布里奇 said...

克里斯,你好
刚刚下载了2.6版本,通过了readme.txt并提出了问题。我导出的网站使用的是空白模板,但是我打开了一些网站功能,例如项目跟踪里程碑列表,知识库列表实例等。这些功能是Fabulous 40的免费赠品。
收到警告后,在导出中,导入失败(即使在使用stsadm -o createsite创建的空白站点上),并显示以下错误:
FatalError:内容类型名称不能包含:\ /:*?" # % < > { } | ~ &,两个连续的句点(..)或特殊字符(例如制表符)。

我已经整理了网站,甚至从“工作流程任务”列表列中删除了所有特殊字符'%Complete'. I changed it to 'Percent Complete'。关于如何解决这个问题的任何想法?否则,我必须手动重新创建该网站!

克里斯·奥'Brien说过...

嗨,科琳,

嗯,很有趣。听起来像是Fab 40模板之一有效地打破了SharePoint中命名的规则-错误是'并非来自我的工具所做的任何事情'来自SharePoint本身。它'也可能会创建违反规则的列/内容类型,但稍后在Content Deployment上将失败。

如果日志中没有详细信息,我认为您最好的办法是继续查找包含这些字符之一的列/内容类型名称。如果您可以编写一些代码进行梳理,那可能会更快。

不好意思'不是您想要的答案。

克里斯。

未知说过...

克里斯,你好
伟大的人。
但是我还需要将图像库以及它们的图像从一台服务器同步到另一台具有相同GUID的服务器。

谢谢
--Umair