根据进程号获取该进程所在客户端的ip地址

发表于:2007-05-25来源:作者:点击数: 标签:
create PROCEDURE dbo.SP_SPIDtoIP @SPID int AS -- SPID to MAC -- lj DECLARE @MAC as varchar(12) SELECT @MAC = NET_ADDRESS FROM master..sysprocesses WHERE SPID = @SPID -- MAC to IP DECLARE @MACDisplay as varchar(18) DECLARE @IP as varchar(15
create PROCEDURE dbo.SP_SPIDtoIP @SPID int

AS


-- SPID to MAC


-- lj


DECLARE @MAC as varchar(12)


SELECT @MAC = NET_ADDRESS FROM master..sysprocesses WHERE SPID = @SPID


-- MAC to IP

DECLARE @MACDisplay as varchar(18)


DECLARE @IP as varchar(15)


CREATE TABLE #temp (OUTPUT varchar(255) null)

SET NOCOUNT ON

INSERT INTO #temp EXEC master..xp_cmdshell 'arp -a'

if @@error<>0

begin

RAISERROR ('The level for job_id:%d should be between %d and %d.',
16, 1)

--ROLLBACK TRANSACTION


end


SELECT @MACDisplay = LEFT(@MAC, 2) + '-' + SUBSTRING(@MAC, 3, 2) + '-' + SUBSTRING(@MAC, 5, 2) + '-' + SUBSTRING(@MAC, 7, 2) + '-' + SUBSTRING(@MAC, 9, 2) + '-' + SUBSTRING(@MAC, 11, 2)
SELECT @IP = SUBSTRING(output, 3, 15) FROM #temp WHERE output LIKE '%' + @MACDisplay + '%'





-- Resolve the IP

--DECLARE @CMD as varchar(100)


--select @CMD = 'master..xp_cmdshell "ping -a ' + @IP + '"'

--exec (@CMD)


DROP TABLE #temp

SET NOCOUNT OFF

GO

原文转自:http://www.ltesting.net