Можно ли получить MAC-адрес с помощью хранимой процедуры? - PullRequest
2 голосов
/ 03 августа 2010

Интересно, можно ли было получить MAC-адрес сервера с помощью хранимой процедуры?Я какое-то время искал, но ничего не нашел.Это использует SQL2008.

Обновление К сожалению, ответ, использующий newsequentialid (), может вернуть неправильный MacAddress, если на сервере есть VMWare.

Ответы [ 6 ]

5 голосов
/ 03 августа 2010

Немного о методе!

declare @t table
(
i uniqueidentifier default newsequentialid(),
m as cast(i as char(36))
)

insert into @t default values;

select
    substring(m,25,2) + '-' + 
    substring(m,27,2) + '-' + 
    substring(m,29,2) + '-' +
    substring(m,31,2) + '-' +
    substring(m,33,2) + '-' +
    substring(m,35,2) AS MacAddress
FROM @t
2 голосов
/ 03 августа 2010

Я думаю, вам нужно выполнить команду оболочки из SQL, чтобы получить MAC-адрес.Если я правильно помню, вы должны включить опцию команды execute shell, прежде чем сможете ее использовать.Затем вы можете запустить «getmac», чтобы получить список MAC-адресов для интерфейсов на сервере.Вам нужно было бы пройтись по возвращенному тексту, но это не должно быть слишком сложно.

1 голос
/ 03 августа 2010

sys.sysprocesses , столбец net_address.Для моего соединения из SSMS это 795C70BAD9B0

В sys.dm_exec_connections нет эквивалента (net_address - это IP-адрес, а не MAC-адрес, и 111.222.111.222 из моей SSMS).На самом деле sys.sysprocesses не эквивалентны ни

Так что вы можете просто запросить sys.sysprocesses в своем собственном хранимом процессе ...

0 голосов
/ 16 апреля 2014
DECLARE @IP_Address varchar(20);
DECLARE @mac_Address varchar(20);

SELECT @IP_Address=client_net_address,@mac_Address=net_address 
    FROM sys.dm_exec_connections c
    join sys.sysprocesses p on c.session_id=p.spid
    WHERE c.Session_id = @@SPID
0 голосов
/ 21 февраля 2014

объявите @macadd nvarchar (50) выберите @ macadd = net_address из master.dbo.sysprocesses где имя_программы, такое как «SQLAgent%» и имя хоста = SERVERPROPERTY («Имя_компьютера») и адрес_сети <> '000000000000' - набор MAC-адресов @ macadd = SUBSTRING (@ macadd, 1,2) + '-' + SUBSTRING (@ macadd, 3,2) + '-' + SUBSTRING (@ macadd, 5,2) + '- '+ SUBSTRING (@ macadd, 7,2) +' - '+ SUBSTRING (@ macadd, 9,2) +' - '+ SUBSTRING (@ macadd, 11,2) --Чтобы включить «-» между каждыми двумя символами MAC-адреса, выберите @ macadd

0 голосов
/ 03 августа 2010

Что ж, поскольку в Sql Server 2008 процесс Stored может содержать управляемый код, однако, возможно, технически вы запустите приложение ac # / vb, которое было запущено SqlServer, вместо того, чтобы по-настоящему получать информацию отсохраненный процесс, хотя это скорее теоретическая, нежели практическая разница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...