上篇文章中,我们解析了Windows Server 2008中域控制准备工具复制链接ID的冲突错误,本文中,我们将讨论如何解决这个问题。 案例分析 在我曾经接触到的一个案例中,一个名叫“Cognos”的应用程序有两个属性,每个属性都有链接 ID值。 在Windows Server 2003中,这些属性值正常工作,但在Windows Server 2008中,系统中出现了使用这些同一链接ID值的新属性。因此,当域控制准备工具运行时我们就会发现这些错误。
该应用程序的文档明确指出它使用的链接ID值不会超过13800,但实际上却并没有照此执行。 解决这个问题的诀窍就是找出Windows S……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
上篇文章中,我们解析了Windows Server 2008中域控制准备工具复制链接ID的冲突错误,本文中,我们将讨论如何解决这个问题。
案例分析
在我曾经接触到的一个案例中,一个名叫“Cognos”的应用程序有两个属性,每个属性都有链接 ID值。
在Windows Server 2003中,这些属性值正常工作,但在Windows Server 2008中,系统中出现了使用这些同一链接ID值的新属性。因此,当域控制准备工具运行时我们就会发现这些错误。该应用程序的文档明确指出它使用的链接ID值不会超过13800,但实际上却并没有照此执行。
解决这个问题的诀窍就是找出Windows Server 2008中与Cognos属性相冲突的对象,然后为这些属性提供新的ID值。微软知识库第969307号文章详细阐述了这个问题,并且也是用Cognos为例。但是这篇文章,至少在我看来,描述的不是很清楚、容易误导读者,所以在这里我要更正某些在该文中出现的错误。下面是解决该域控制准备工具错误的过程:
1、诊断错误。Adprep运行时出现了错误:“域控制准备工具无法更新林信息”。在域控制准备工具日志文件中,我们可以看到如下信息:
Adprep was unable to upgrade the schema on the schema master. [Status/Consequence] The schema will not be restored to its original state. [User Action] Check the Ldif.err log file in the C:WINDOWSdebugadpreplogs20100301111718 directory for detailed information.
打开LDIF.err或(LDIF.err.34)文件,我们看到:
Entry DN_CN=ms-PKI-DPAPIMasterKeys,CN=Schema,CN=Configuration,DC=Corp,
DC=com Add error on line 123: Unwilling To Perform The server side error is "Schema update failed: An attribute with the same link identifier already exists." An error has occurred in the program
An identical error exists in the LDIF.err file.
2、找到有同一链接ID值的新属性。域控制准备工具使用的是名为SCHxx.ldf(其中xx为连续的整数)的文件来修改活动目录架构。这些文件保存在Windows Server 2008光盘中的SourcesADPrep目录下,出现问题的属性就被列在这些文件中。从上面提到的错误信息中可知,出错的属性就是CN=ms-PKI-DPAPIMasterKey。
简单搜索一下DVD中的.ldf文件,即可找到出错的属性,得到其链接ID为2046。在这个例子中,包含出错属性的文件是SCH34.ldf。至此,我们知道新属性和链接ID 204是6一起加入的,接下来要做的就是找到目录中哪些属性拥有该链接 ID。
3、找出链接ID相冲突的属性(本例中,链接ID为2046)。使用一次简单的LDIFDE搜索,我们就能找到冲突的Cognos属性:
ldifde -f linkID.ldf -d "CN=Schema,CN=Configuration,DC=,DC=com" -r "(&(objectclass=*)(linkid=2046))"
本例中的输出文件为linkID.ldf,在记事本中打开后我发现了如下内容:
DN: CN=camDBSignonRef,CN=Schema,CN=Configuration,DC=corp,DC=com
2> objectClass: top; attributeSchema
1> cn: camDBSignonRef
<snip>
1> linkID: 2046
如果我们想从一个没有安装Cognos的Windows 2008域上转储ms-PKI-DPAPIMasterKey属性,那么它的链接ID就会是2046。由于我们不应该搞乱Windows系统的属性,我们可能会修改Cognos的属性,。但正如之前所提到的,链接ID的具体值是什么根本无关紧要,只要它们是唯一的非零正整数就行。再声明一次,重要的是ID值必须唯一。
在本例中,我们还发现了另一个Cognos属性与Windows的ms-DS-Bridgehead-Servers-Used属性相冲突,这也意味着你需要找出的属性可能不止一个。
4、解决办法。必须给新的属性(本例中是Windows2008属性)分配新的链接ID。按照上面所提到的KB 969307号文章 “解决方案”部分中的步骤做就行了,主要有以下几步:
1)将Windows Server 2008光盘中的Adprep目录拷贝到服务器硬盘上。我建议你新建一个目录C:ADPrep,然后再拷贝。
2)打开LDIF.err.xx文件(包含冲突属性的文件),用1.2.840.113556.1.2.50替代冲突属性的链接ID(在本例中为2046)。这串数字会引起系统自动为该属性分配新的唯一ID。
3)从你拷贝.ldf文件的目录(步骤1中的C:ADPrep)运行域控制准备工具,修改链接ID。
4)注意,如果你的属性具有后向链接,那么你同样需要对它们进行修改。上面提到的微软知识库文件中有详细的修改说明。
值得注意的是,如果开发人员在开发过程中没注意这些问题,那么上述错误就很容易发生。再重申一次,链接ID必须是唯一的。你在Windows属性或在应用程序中对链接ID进行修改并不重要,但属性的选择会相对容易并且可以正常运行。
作者
相关推荐
-
IT管理员应该如何管理Docker容器?
随着容器管理软件在目前容器虚拟化技术中日趋成熟,管理员应该在这方面建立自己的技术积累。
-
System Center 2016最显著的特征是什么?
虽然System Center 2016可以管理好一个非常复杂的环境,但是,在对旧版本进行更新升级之前,管理员应该评估新版本的各项功能特性。
-
活动目录备份和恢复的工具与技巧 TOP5
活动目录允许管理员通过实施和执行安全策略对用户和计算机进行管理。这里的TOP5活动目录工具与技巧可以帮助企业简化活动目录的备份和恢复过程。
-
Active Directory数据库太杂乱?ADSI Edit来清理
随着Active Directory数据库老化,系统会在局部删除用户账号、安装应用程序失败或者其他管理上的失误后积累乱七八糟的东西,以及出现崩溃现象。本文介绍如何使用ADSI Edit来清理Active Directory数据库。