在我们的商店中有代码必须查询SQL Server 2008服务器,确定主机所属的Active Directory域,并在SQL中根据此信息创buildWindowslogin主体。 在Windows 2003服务器下,可以像这样通过SQL Server查询域名:
DECLARE @Domain nvarchar(255) EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon', N'CachePrimaryDomain',@Domain OUTPUT SELECT @Domain AS Domain
但是,这不再适用于Windows 2008(“CachePrimaryDomain”registry项不再存在)。 任何人都知道是否有一个可靠地报告Windows 2008服务器所属的Active Directory域的registry项? 更好的是,是否有一个完全不同的方式来处理这个更有意义? 谢谢。
首先确定机器是在一个域上,而不是工作组的一部分。
那么你可以在这里find“域名”键:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
您可能需要使用T-SQLstring函数SUBSTRING和CHARINDEX,如果您只在“。”之前查找域的左半部分。
如果您正在寻找另一种方法来在没有registry的情况下执行此操作,请考虑使用Domain.GetComputerDomain(). NET方法的SQLCLR项目或潜在的PowerShell脚本。
感谢您的帮助,任何有兴趣的人都可以使用以下内容。
DECLARE @strDomain VARCHAR(255), @strServer VARCHAR(255), @strSubject VARCHAR(255) EXECUTE master..xp_regread 'HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters', 'Domain', @strDomain output SELECT @strDomain select LEFT(@strDomain,charindex('.',@strDomain,1)-1)