将 2008 服务器提升为 DC 后,我无法启动 SQL Server 2005 事务复制。
客户端不具备所需的特权。
此站点建议我需要将 SQL Server 服务从我的域帐户更改为本地帐户,然后再更改回域帐户:
http://support.microsoft.com/kb/911305
但是我在更改时收到错误:
错误代码:0x80070534 未完成帐户名和安全 ID 之间的映射。
我找到了这个http://social.msdn.microsoft.com/forums/en-US/sqlsetupandupgrade/thread/bf0c1eae-a1fa-4a63-b6a8-c18e81498780/这表明我应该删除一些注册表项——但是,如果我不确定它是否有效,我不想随意删除(这也是 Service Pack 安装的一部分)。有什么想法吗?
答案1
有趣的问题。我还没有启动测试实例来在自己的机器上重现此问题,但看起来下面的键中存储了三个注册表值,它们引用了 SQL Server 2005 安装创建的组的 SID:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\Setup
这些值为 AGTGROUP、FTSGROUP 和 SQLGROUP。具有用于填充这些值的 SID 的组是(替换为服务器计算机的名称和 SQL 实例名称):
SQLServer2005MSSQLUser$SERVER-NAME$INSTANCE-NAME
SQLServer2005MSFTEUsers$SERVER-NAME$INSTANCE-NAME
SQLServer2005SQLAgentUsers$SERVER-NAME$INSTANCE-NAME
我猜您将这个盒子提升为现有域中的域控制器,而不是从这个盒子自己的本地用户和组(SAM)数据库创建一个全新的域。
据我所知(再次强调,我没有亲自重现此情况),您需要在域中为该服务器创建新组,然后获取新组的 SID 并将它们放入注册表中。看起来“修复” SQL Server 安装可以做到这一点。请查看 Microsoft Connect 中的这篇文章:http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=202561
在该文章中搜索短语“一个或多个 SQL 安全组以某种方式被删除”,然后阅读那里的解决方法。看来清除旧组并在修复模式下运行安装程序可以实现您的目标。我相信这比尝试手动重新创建它们(如我发现的一些博客文章和论坛帖子所建议的那样)更好。
话虽如此,在开始更改之前,至少要备份注册表和数据库的那部分。做好备份可以让一切“正常运转”……<微笑>