Consultando o domínio do Active Directory de um host do Windows 2008 no SQL

1

Existe um código em nossa loja que deve consultar um servidor SQL Server 2008, determinar o domínio do Active Directory ao qual o host pertence e, em SQL, criar entidades de login do Windows com base nessas informações. No servidor Windows 2003, era possível consultar o nome do domínio através do SQL Server da seguinte forma:

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

No entanto, isso não funciona mais no Windows 2008 (a chave do Registro 'CachePrimaryDomain' não existe mais). Alguém sabe se há uma chave de registro que relata de maneira confiável o domínio do Active Directory ao qual pertence um servidor Windows 2008? Melhor ainda, existe uma maneira completamente diferente de lidar com isso que faz mais sentido? Obrigado.

    
por Eldergriffon 04.09.2010 / 03:20

2 respostas

2

Primeiro, certifique-se de que a máquina esteja em um domínio e não faça parte de um grupo de trabalho.

Então você pode encontrar a chave "Domínio" aqui:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Você pode precisar usar as funções de string T-SQL SUBSTRING e CHARINDEX se estiver procurando apenas a metade esquerda do domínio antes de '.'

Se você estiver procurando outra maneira de fazer isso sem o registro, considere um projeto SQLCLR ou, potencialmente, um script do PowerShell que use o Domain.GetComputerDomain () Método .NET.

    
por 05.09.2010 / 19:03
1

Obrigado pela sua ajuda, qualquer pessoa interessada pode usar o seguinte.

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)
    
por 29.06.2012 / 08:33