在从Active Directory降级服务器之后修复SQL Server 2005

让我先说这个,说我更像一个UNIX的家伙,这让我拉我的头发。 我有一台运行SQL Server 2005的Windows 2003服务器,用于VMware的虚拟基础架构系统。 理论是让这个系统成为一个活动目录控制器,但是我们决定暂时搁置这个系统。 我将服务器降级到Active Directory域(不再是控制器或任何Active Directory的成员)。 不幸的是,当我这样做时,SQL Server服务将不再启动。

当我进入SQL Serverconfigurationpipe理器并尝试更改login到pipe理员帐户或其中一个内置帐户时,出现错误“没有帐户名称和安全ID之间的映射已完成”。

我如何修复SQL Server,使其不考虑Active Directory权限和帐户ID?

一种蛮横的方法,但你有没有尝试卸载和重新安装SQL Server? 如果它不会让你,你可以尝试这些步骤 。

作为另一种select,您可以尝试这些步骤来解决本地帐户SID问题,但看起来有点痛苦。

我还没有启动一个testing实例来在我自己的盒子上重现这一点,但看起来像下面的键存储三个registry值是指由SQL Server 2005安装创build的组的SID:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\Setup 

值是AGTGROUP,FTSGROUP和SQLGROUP。 具有用于填充这些值的SID的组是(replace您的服务器计算机的名称和SQL实例名称):

 SQLServer2005MSSQLUser$SERVER-NAME$INSTANCE-NAME SQLServer2005MSFTEUsers$SERVER-NAME$INSTANCE-NAME SQLServer2005SQLAgentUsers$SERVER-NAME$INSTANCE-NAME 

从我所看到的(再次,不要自责),你需要为这个服务器创build这些组,然后获得新组的SID并把它们放到registry中。 它看起来像SQL Server安装的“修复”会做到这一点。 看看这篇文章从Microsoft Connect: http : //connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=202561

search该文章的短语“一个或多个SQL安全组已被删除”,并阅读通过解决方法。 它看起来像清理旧的组,并在修复模式下运行设置将做你想要的。 我相信,比试图重新创build他们手中的一些博客post和论坛post,我发现build议更好。

说了这么多,在开始改变之前,至less要备份registry和数据库的那一部分。 拥有良好的备份使得事情“正常工作”… <smile>