获取更改数据库的PC或笔记本电脑的mac id。 SQL Server

时间:2018-05-06 21:31:23

标签: sql sql-server tsql alter-table spid

是否可以获取用于在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。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

SELECT DISTINCT hostname,net_address FROM sys.sysprocesses
WHERE net_address<>''