2009-06-09 2 views
1

어떻게 t-sql에서 호스트 이름을 확인할 수 있습니까? 2000 호환 방법이 바람직합니다. 2005/2008 년에 효과가있는 것이 도움이 될지라도.t-sql을 사용하여 호스트 이름 확인

예 : 호스트 이름을 stackoverflow.com으로 반환하려는 경우 69.59.196.211

+0

데이터베이스가 수행 할 수있는 적절한 기능인지는 확실하지 않습니다. 또한 단일 호스트 이름이 여러 IP 주소로 해석 될 수 있다는 사실을 알고 있습니까? –

+0

네, 라운드 로빈 DNS와 같은 것들이 있다는 것을 알고 있습니다. 다른 IP를 제공 할 것이지만, 근무하는 환경에서 그걸 다루지 않아도됩니다. –

+0

때로는 당신이 가지고있는 것이 망치 일 때 .. – ahains

답변

6

글쎄, xp_cmdshell을 사용하여 nslookup을 실행하고 결과를 구문 분석 할 수 있다고 가정합니다. 그래도 SQL Server가 수행하는 것은 정말 어색한 일입니다.

exec master..xp_cmdshell 'nslookup intel.com' 

.. 그런 다음 임시 테이블에 넣고 결과를 살펴 보시기 바랍니다.

SQL Server 2005 또는 2008에 액세스 할 수 있으면 .NET에서 저장 프로 시저 또는 함수를 빌드하고 Dns.GetHostAddresses()에 대한 간단한 호출을 수행 할 수도 있습니다.

+1

명명 할 수 없다 포럼에서 완전히 검증되지 않은 : 선언 @cmd의 VARCHAR는 (255) 은/* = '192.168.100.1'을 @ip 설정 (17) 으로 절차 xp_Nslookup @ip의 VARCHAR를 생성 */ 설정 @cmd = 'for/F "skip = 2 토큰 = 1,2"% i in (' 'c : \ winnt \ system32 \ nslookup.exe'+ @ IP + '' ') @echo'+ @ IPNslookup exec master..xp_cmdshell @cmd에 삽입 데이터가 null 인 Nslookup을 삭제합니다. GO (변환) (varchar (20), getdate –

0

SQL Server가 보안 구성의 일부로 'sys.xp_cmdshell'프로 시저에 대한 액세스를 차단할 수 있습니다. 시스템 관리자는 다음과 같이 'xp_cmdshell'을 사용하도록 설정할 수 있습니다.

-- Allow advanced options. 
EXEC sp_configure 'show advanced options', 1; 
GO 
-- Update the currently configured value for advanced options. 
RECONFIGURE; 
GO 
-- Then, enable the feature. 
EXEC sp_configure 'xp_cmdshell', 1; 
GO 
-- Update the currently configured value for this feature. 
RECONFIGURE; 
GO 
-- Then you can go ahead and run ... 
exec master..xp_cmdshell 'nslookup microsoft.com' 
GO