如何更改Windows SID影响SQL Server?

我们的Windowspipe理员已经发现了克隆Windows服务器的一个问题。 显然,一些克隆的服务器在操作系统级别具有相同的SID。 我听说微软不支持有重复的SID的服务器。 因此,这些服务器上的SID需要更改。

我很好奇这是如何影响SQL Server的。 有任何想法吗? 它如何影响集群数据库服务器?

独自离开SID。 NewSID已经退休了,因为Mark Russinovich做了一些挖掘,发现整个“重复的SID ==不好!” 在过去十年左右,我们所有人都被卷入了我们的头骨,这只是一片废话。

请参阅Mark的最新博客条目: The Machine SID Duplication Myth 。

我肯定会build议不要更改SID,直到您阅读后: 更改计算机SID与NewSID中断SQL Server(以及如何解决它)

显然,一些克隆的服务器在操作系统级别最终具有相同的SID。

我会冒险猜测你所有的克隆系统都有相同的SID。 GhostWalk可以为您重新生成SID。 在初始克隆映像上使用sysprep也可以节省您未来的系统。

如果您安装了SQL Server,请不要更改SID。 坏事会发生。

您可以使用sysinternals NewSID: http ://technet.microsoft.com/en-us/sysinternals/bb897418.aspx

在SQL中更改计算机名称:

use master sp_dropserver '<old computer name>' GO sp_addserver '<new computer name>', local GO sp_helpserver -- will show you the new computer name 

然后重新启动sql服务器服务。

如果您的数据库使用Microsoft分布式事务处理协调器执行远程事务,请注意,克隆的计算机也具有相同的MSDTC ID,而不是SID,并且不会被NewSID更改。

你会在事件查看器中看到这个:

本地MS DTC检测到服务器上的MS DTC具有与本地MS DTC相同的唯一标识。 这意味着两个MS DTC将无法相互通信。 如果其中一个系统是使用不受支持的克隆工具克隆的,则通常会出现此问题。 MS DTC要求使用受支持的克隆工具(如SYSPREP)克隆系统。 运行“msdtc -uninstall”然后在命令提示符下运行“msdtc -install”将会解决这个问题。 注意:运行“msdtc -uninstall”会导致系统丢失所有的MS DTCconfiguration信息。

我这样解决:

 msdtc -uninstall 

等几分钟

 msdtc -install sc config msdtc start= auto sc start msdtc 

使用现在Microsoft拥有的工具NewSID或sysprep,这就像重新安装Windows没有所有的文件复制。

我不认为你可以join两台计算机到相同的SID相同的域名,所以我会说群集SQL服务器将无法忍受的机会,因为服务器需要在一个域。

sysprep是克隆系统唯一受支持的方式。 有一堆为什么不克隆一个SQL服务器的原因:

– 它不受Microsoft CSS的支持。

-SQL在“重命名”之前将不能正常工作。

如果你有报告服务,它也会被清理。

– 系统和networking服务帐户将获得新的SID和密码,所以如果您将这些帐户用作服务帐户,将会有一些痛苦。

-SQL Server使用这种格式创build好几个本地组。 SQLServer2005MSSQLUser $$ MSSQLSERVER。 不支持重命名这些

为了纠正这种情况,我会 –

打破集群,重build系统,安装SQL,创build新集群,在未重build的服务器上运行备份,然后停止,将备份恢复到新集群,将应用程序指向新集群,重build剩余的服务器并将其添加到新群集

– 或者(可能更简单)为什么不用新的名字构build一个新的服务器(这将解决任何types的SID的潜在问题),然后中断群集安装SQL将其join群集,故障转移到该框,然后重复该过程方式没有宕机,也不需要备份/恢复(虽然我build议你尽pipe如此)。 我们使用zznode1,zznode2和创buildzznode3的方式创buildzznode3的集群名称很简单,因为集群中没有引用节点。 希望有所帮助。