是否可以获取用于在SQL Server数据库上执行某些恶意操作的PC /笔记本电脑的MAC ID。
我使用了这个SQL命令:
DECLARE @current VARCHAR(500);
DECLARE @start VARCHAR(500);
DECLARE @indx INT;
SELECT @current = path
FROM sys.traces
WHERE is_default = 1;
SET @current = REVERSE(@current)
SELECT @indx = PATINDEX('%\%', @current)
SET @current = REVERSE(@current)
SET @start = LEFT(@current, LEN(@current) - @indx) + '\log.trc';
-- CHNAGE FILER AS NEEDED
SELECT
CASE EventClass
WHEN 47 THEN 'Object:Deleted'
WHEN 164 THEN 'Object:Altered'
END, *
FROM::fn_trace_gettable(@start, DEFAULT)
WHERE
EventClass IN (47, 164)
AND EventSubclass = 0
AND DatabaseID <> 2
ORDER BY
StartTime DESC
这可以提供有关操作的大量信息。其中一个是主机名,同样可以获得所述主机名的MAC ID。
我在某处读到我只能获得MAC ID如果他的PC使用相同的LAN。 但事实并非如此。我也尝试了下面的代码。
use master
select
hostname,
MAC = substring(net_address, 1, 2) + '-' +
substring(net_address, 3, 2) + '-' +
substring(net_address, 5, 2) + '-' +
substring(net_address, 7, 2) + '-' +
substring(net_address, 9, 2) + '- ' +
substring(net_address, 11, 2)
from
sysprocesses
where
spid in ('51','55','64','58','60','65','73','79','80','81','83')
这里的spid我得到了Previous命令。但这并不是特定的“主机名”/ PC所独有的。所以我只得到服务器macid。任何帮助将不胜感激。
答案 0 :(得分:0)
SELECT DISTINCT hostname,net_address FROM sys.sysprocesses
WHERE net_address<>''