Проверьте имя ip и dns - PullRequest
       2

Проверьте имя ip и dns

1 голос
/ 17 февраля 2010

T-SQL

Можно ли проверить, совпадают ли ip-адрес и имя DNS?

Ответы [ 3 ]

4 голосов
/ 17 февраля 2010

Преобразование имени хоста в IP-адрес - это то, что легко сделать в хранимой процедуре CLR.

Если вы новичок в CLR, вы можете начать со следующих статей:

Что касается кода для разрешения имени хоста, это легко сделать в C # следующим образом:

string hostname = "stackoverflow.com";
IPAddress[] ipList = Dns.GetHostAddresses(hostname);

foreach (IPAddress ip in ipList)
{
   // ... check each ip with an IP address you pass
   //     as a parameter.
}

Если вам интересно, почему вы получаете список IP-адресов, вас может заинтересовать следующая публикация переполнения стека:

2 голосов
/ 17 февраля 2010

HOST_NAME() возвращает имя компьютера клиента.

Этот код разрешает свой IP-адрес, используя ping и xp_cmdshell:

set nocount on
declare @ip varchar(255), @cmd varchar(100) 
set @cmd = 'ping -n 1 ' + HOST_NAME() 
create table #temptb (grabfield varchar(255)) 
insert into #temptb exec master.dbo.xp_cmdshell @cmd 
select @ip = substring(grabfield,  charindex('[',grabfield)+1,
 charindex(']',grabfield)-charindex('[',grabfield)-1) from #temptb  where left(grabfield,7) = 'Pinging' 
print @ip 
drop table #temptb
set nocount off 

Источник: http://www.sqlservercentral.com/Forums/Topic150196-8-1.aspx

0 голосов
/ 17 февраля 2010

Вы можете использовать этот запрос, чтобы получить много информации о соединении:

SELECT
    c.*,s.*
    FROM sys.dm_exec_sessions                 s
        INNER JOIN sys.dm_exec_connections    c ON s.session_id=c.session_id
    WHERE s.session_id = @@SPID

sys.dm_exec_connections.client_net_address = адрес хоста клиента, подключающегося к этому серверу.

sys.dm_exec_connections.local_net_address = Представляет IP-адрес на сервере, на который нацелено это соединение. Доступно только для соединений, использующих транспортный провайдер TCP.

вы можете попытаться узнать, есть ли дубликаты IP-адресов, используя запрос, подобный следующему:

SELECT
    c.client_net_address, COUNT(*) AS CountOf
    FROM sys.dm_exec_connections   c
    GROUP BY c.client_net_address
    HAVING count(*)>1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...