SQL SERVER能获得连接的用户的IP吗?
主要想实现以下:
一个用户连接到数据库,把用户的用户名与IP都保存在数据库中,来实现用户登录的功能。
最好是用户调用一个存储过程,把用户名作参数,存储过程就能把用户的用户名与IP保存下来。
请指教(只有16分了)
SQL code:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_getlinkinfo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_getlinkinfo]
GO
/*--获取连接SQL服务器的信息
所有连接本机的:操作的数据库名,计算机名,用户名,网卡物理地址,IP地址,程序名
--邹建 2003.11--*/
/*--调用示例
--显示所有本机的连接信息
exec p_getlinkinfo
--显示所有本机的连接信息,包含ip地址
exec p_getlinkinfo @includeip=1
--显示连接指定数据库的信息
exec p_getlinkinfo '客户资料'
--*/
create proc p_getlinkinfo
@dbname sysname=null, --要查询的数据库名,默认查询所有数据库的连接信息
@includeip bit=0 --是否显示IP地址,因为查询IP地址比较费时,所以增加此控制
as
declare @dbid int
set @dbid=db_id(@dbname)
create table #tb(id int identity(1,1),dbname sysname,hostname nchar(128),loginname nchar(128),net_address nchar(12),net_ip nvarchar(15),prog_name nchar(128))