更改Windows SID对SQL Server有何影响?


11

我们的Windows管理员已发现克隆Windows服务器的方式存在问题。显然,某些克隆的服务器在操作系统级别最终具有相同的SID。我听说Microsoft不支持具有重复SID的服务器。因此,这些服务器上的SID需要更改。

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


有很多原因不克隆窗口,但SID并不是其中之一
Jim B

Answers:


9

不理会SID。NewSID已退休,因为Mark Russinovich进行了一些挖掘,发现整个“重复的SID ==不好!” 在过去的十年左右的时间里,我们所有人的脑袋都被打成一片了,这简直是胡说八道。

请参阅Mark的最新博客文章:机器SID复制神话


6

我绝对建议您不要更改SID,直到您阅读以下内容:使用NewSID更改计算机SID会破坏SQL Server(以及如何修复)

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

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

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


SysPrep +1,这是AFAIK在这种情况下支持的解决方案。
Michael Stum

1
-1表示没有支持任何sid更改-如果安装了sql,则包括sysprep。
Jim B

如果服务器已经在运行并且已经安装了东西,那么我想说一下您的产品。您应该在克隆服务器后立即更改SID。我很惊讶您可以将两个具有相同SID的服务器加入域!
尼克·卡瓦迪亚斯

2

您可以使用sysinternals NewSID:http ://technet.microsoft.com/zh-cn/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 server服务。


感谢您指出sql服务器的手动重命名。它经常被遗忘在SQL克隆(我克隆我的使用Sysprep)
陡峭的

2

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

您将在事件查看器中看到以下内容:

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

我这样解决:

msdtc -uninstall

等待几分钟,然后

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

1
由于某些奇怪的原因,“ sc config”在“ start =“和“ auto”之间需要一个空格,即“ sc config msdtc start = auto”。
ThatGraemeGuy

谢谢-我在那里有那个空间,但是当我发贴认为它是错字时就将其编辑了:)
crb

2

使用现在由Microsoft拥有的工具NewSID或sysprep,这类似于重新安装Windows而不复制所有文件。

我不认为您可以使用相同的SID将两台计算机加入到同一域中,因此我想说群集SQL Server不会有机会,因为服务器必须位于域中。


1

克隆系统的唯一受支持方法是使用sysprep。为什么不克隆SQL Server有很多原因:

-Microsoft CSS不支持。

-SQL在“重命名”之前无法正常工作。

-如果您有报告服务,则也会进行软管处理。

-系统和网络服务帐户将获得新的SID和密码,因此,如果将它们用作服务帐户,将会有些麻烦。

-SQL Server使用该格式创建了很多本地组。SQLServer2005MSSQLUser $$ MSSQLSERVER。不支持重命名这些

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

断开群集,重建系统,安装SQL,创建新群集,在尚未重建的服务器上运行备份-然后停止它,将备份还原到新群集,将应用程序指向新群集,重建其余的群集服务器并将其添加到新集群

-或者(可能更容易)为什么不使用新名称构建新服务器(这将解决任何类型的SID的潜在问题),然后中断集群安装SQL,将其加入集群,故障转移到该框,然后重复该过程,方式,无需停机,也无需备份/还原(尽管我还是建议您这样做)。我们使用zznode1,zznode2和集群名称,这样创建zznode3并将其连接到集群非常简单,因为在集群中未引用该节点。希望能有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.