当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 根据进程号获取该进程所在客户端的ip地址

MSSQL
SQL数据操作基础(初级)3
SQL数据操作基础(初级)4
SQL数据操作基础(初级)5
SQL数据操作基础(中级)6
SQL数据操作基础(中级)7
SQL数据操作基础(中级)8
SQL数据操作基础(中级)9
SQL数据操作基础(中级)10
如何找出消耗cup的进程信息和执行的语句
改善SQL Server内存管理
减少SQL日志的三种方法
SQL脚本生成的一些BUG(1)
SQL脚本生成的一些BUG(2)
sqlserver日志文件总结及充满处理
启动SQL SERVER时自动执行存储过程
SQL Server 连接基础知识
修改用户定义的数据类型
利用MSSQL sp自制未公开的加密函数
让你的SQL运行速度明显提高
十大绝招保护SQL Server数据库安全

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 131 ::
收藏到网摘: n/a

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