CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

怎样才能用SQL 语句来获得登陆到SQL SERVER服务器上的用户的基本信息

楼主yanggang041617()2005-08-23 10:36:31 在 MS-SQL Server / 基础类 提问

比如:登录者的信息 问题点数:20、回复次数:8Top

1 楼MorningTea(一勺抹茶)回复于 2005-08-23 10:48:22 得分 10

1.查看所有数据库用户登录信息  
        sp_helplogins  
  2.查看所有数据库用户所属的角色信息        
        sp_helpsrvrolemember  
  3.查看远端数据库用户登录信息        
        sp_helpremotelogin  
  4.查看数据库里用户和进程的信息  
        sp_who  
  5.查看SQL   Server数据库里的活动用户和进程的信息  
        sp_who   'active'  
  Top

2 楼vivianfdlpw()回复于 2005-08-23 10:49:27 得分 10

/*--获取连接SQL服务器的信息    
   
  所有连接本机的:操作的数据库名,计算机名,用户名,网卡物理地址,IP地址,程序名    
  -*/    
   
  /*--调用示例    
  --显示所有本机的连接信息    
  exec   p_getlinkinfo    
   
  --显示所有本机的连接信息,包含ip地址    
  exec   p_getlinkinfo   @includeip=1    
   
  --显示连接指定数据库的信息    
  exec   p_getlinkinfo   '客户资料'    
  --*/    
  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    
   
  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))    
  insert   into   #tb(hostname,dbname,net_address,loginname,prog_name)    
  select   distinct   hostname,db_name(dbid),net_address,loginame,program_name   from   master..sysprocesses    
  where   hostname<>''   and   (@dbid   is   null   or   dbid=@dbid)    
   
  if   @includeip=0   goto   lb_show   --如果不显示IP地址,就直接显示    
   
  declare   @sql   varchar(500),@hostname   nchar(128),@id   int    
  create   table   #ip(hostname   nchar(128),a   varchar(200))    
  declare   tb   cursor   local   for   select   distinct   hostname   from   #tb    
  open   tb    
  fetch   next   from   tb   into   @hostname    
  while   @@fetch_status=0    
  begin    
  set   @sql='ping   '+@hostname+'   -a   -n   1   -l   1'    
  insert   #ip(a)   exec   master..xp_cmdshell   @sql    
  update   #ip   set   hostname=@hostname   where   hostname   is   null    
  fetch   next   from   tb   into   @hostname    
  end    
   
  update   #tb   set   net_ip=left(a,patindex('%:%',a)-1)    
  from   #tb   a   inner   join   (    
  select   hostname,a=substring(a,patindex('Ping   statistics   for   %:%',a)+20,20)   from   #ip    
  where   a   like   'Ping   statistics   for   %:%')   b   on   a.hostname=b.hostname    
   
  lb_show:    
  select   id,数据库名=dbname,客户机名=hostname,用户名=loginname    
  ,网卡物理地址=net_address,IP地址=net_ip,应用程序名称=prog_name   from   #tb    
   
  goTop

3 楼yanggang041617()回复于 2005-08-23 10:50:34 得分 0

谢谢你,但是我想知道如果我插入了一条数据,我想知道是谁插入的,如果我用以上的话,是不是不行呀?那我该怎样写呀?Top

4 楼MorningTea(一勺抹茶)回复于 2005-08-23 10:50:47 得分 0

--补充:  
  4.查看数据库里用户和进程的信息  
        sp_who  
  sp_who有个升级的sp,为sp_who2Top

5 楼MorningTea(一勺抹茶)回复于 2005-08-23 11:02:21 得分 0

难道我理解错了  
   
  楼主问的是前台用户的ip,电脑名称吗?  
   
  '===得到當前登入DOMAIN之用戶名(轉為小寫)  
  Function   g_GetUser()  
        Dim   Loa  
        dim   LoginName  
        LoginName=request.servervariables("logon_user")  
        Loa=instr(1,LoginName,"\")  
        LoginName=mid(LoginName,Loa+1)  
        g_GetUser=Lcase(LoginName)  
  End   Function  
   
  '===得到當前登入的網域(返回TG_DOMAIN   or   WL_Domain   or   Mht_domain)-->OK  
  Function   g_GetDomain()      
      dim   a  
      dim   i  
      dim   b    
      a=Request.ServerVariables("REMOTE_USER")    
      i=instr(a,"\")  
      b=left(a,i-1)  
      g_GetDomain=b  
  end   Function  
   
  '*********固定函數**********************  
  '*   1.Request.ServerVariables("APPL_PHYSICAL_PATH")     www根目錄的實際路徑-->c:\inetpub\wwwroot\    
  '*   2.Request.ServerVariables("PATH_INFO")                       被啟動之ASP網頁之虛擬路徑檔案名稱--->   /eng/patent/p.asp    
  '*   3.Request.ServerVariables("Script_Name")                   同2  
  '*   4.Request.ServerVariables("PATH_TRANSLATED")           被啟動之ASP網頁的實際路徑檔案名稱--->   C:\Inetpub\wwwroot\eng\patent\p.asp        
  '*   5.Request.ServerVariables("SERVER_NAME")                   當前頁面所屬之IIS服務器名---->HADES  
  '*   6.Request.ServerVariables("REMOTE_ADDR")                   作出URL請求之遠程主機之IP  
  '*   7.Request.ServerVariables("SERVER_PORT")                   HTTP請求所送到的服務器端口號  
     
  '*?8.Server.MapPath("/eng/patent")         [相對路徑]及[實際路徑]轉換為Server機器的[實際路徑]--->c:\Inetpub\wwwroot\eng...  
  '*?9.Server.HTMLEncode("")  
  '****************************************  
   
  ————不知道是否对你有用啦,仅供参考Top

6 楼yanggang041617()回复于 2005-08-23 13:38:00 得分 0

我是想知道谁登录了SQL   SERVER,也就是谁对数据表进行了操作,是在SQL   SERVER   里面的,不是基于。NET里面编程的。谢谢大家Top

7 楼vivianfdlpw()回复于 2005-08-23 13:45:44 得分 0

用Log   Explorer软件Top

8 楼MorningTea(一勺抹茶)回复于 2005-08-23 14:27:09 得分 0

这个我就是直接打开企业管理器--〉选择服务器--〉Management-->  
    Current   Activity-->Locks/Objects   -->表格--〉ProcessID-->可以看到他们的操作语句Top

相关问题

  • 服务器SQL语句问题
  • 怎么用sql语句操作另一台服务器上的数据库(sql server)?
  • 为什么ADO使用SQL 查询语句查询SQL Server 服务器的时候不分大小
  • 如何查看局域网上的SQl server服务器及数据库(SQl语句)
  • SQL Server 服务器名称
  • 关于异地(远程服务器)访问的SQL语句
  • 停止服务器的T_SQL语句是什么?急急
  • 如何实现跨服务器的SQL查询语句??
  • 如何实现跨服务器的SQL查询语句??
  • 怎样用SQL语句改SQL服务器的用户名密码?

关键词

  • 数据库
  • 用户
  • 服务器
  • 连接
  • 信息
  • 查询
  • ip
  • getlinkinfo
  • hostname
  • loginname

得分解答快速导航

  • 帖主:yanggang041617
  • MorningTea
  • vivianfdlpw

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo