Windows-Server-2008

在 SQL 中查詢 Windows 2008 主機的 Active Directory 域

  • June 29, 2012

我們店裡的程式碼必須查詢 SQL Server 2008 伺服器,確定主機所屬的 Active Directory 域,並在 SQL 中根據此資訊創建 Windows 登錄主體。在 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”系統資料庫項不再存在)。任何人都知道是否有一個系統資料庫項可以可靠地報告 Windows 2008 伺服器所屬的 Active Directory 域?更好的是,是否有一種完全不同的處理方式更有意義?謝謝。

首先確保機器在域中,而不是工作組的一部分。

然後你可以在這裡找到“域”鍵:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

如果您只在 ‘.’ 之前查找域的左半部分,則可能需要使用 T-SQL 字元串函式 SUBSTRING 和 CHARINDEX

如果您正在尋找另一種在沒有系統資料庫的情況下執行此操作的方法,請考慮使用 SQLCLR 項目或可能使用Domain.GetComputerDomain() .NET 方法的 PowerShell 腳本。

引用自:https://serverfault.com/questions/177964