0

是否可以获取用于对 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。

我在某处读到,如果他的 PC 使用相同的 LAN,我只能获取 MAC ID。但这里不是这样。我也尝试了下面的代码。

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。但这并不是特定的“主机名”/PC 所独有的。所以我只得到了服务器 macid。任何帮助,将不胜感激。

4

1 回答 1

0
SELECT DISTINCT hostname,net_address FROM sys.sysprocesses
WHERE net_address<>''
于 2018-05-07T08:51:38.960 回答