新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在SQLServer上得到客户端信息(操作的数据库名,计算机名,用户名,网卡物理地址,IP地址,程序名)
10余年的五莲网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整五莲建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“五莲网站设计”,“五莲网站推广”以来,每个客户项目都认真落实执行。
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 )
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 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
GO
//显示所有本机的连接信息:
exec p_getlinkinfo
//显示所有本机的连接信息,包含ip地址:
exec p_getlinkinfo @includeip=1
//显示连接指定数据库的信息:
exec p_getlinkinfo @dbname=表名,@includeip=1
有二种方式来查看正在执行的SQL语句
使用SQL自带的SQL Server Profiler,以可视化界面的方式来查看。
从开始=》所有程序=》Microsoft SQL Server 2008=》性能工具打开Profiler工具,也可以打开SQL Server Management Studio=》工具=》SQL Server Profiler。
然后选择文件=》新建=》跟踪打开一个连接窗口,选择将要跟踪的服务器实例然后连接,并打开“跟踪属性”对话框,点运行即可看到正在执行的SQL语句。
使用SQL语句来查看正在运行的语句,如下
SELECT [Spid] = session_id ,
ecid ,
[Database] = DB_NAME(sp.dbid) ,
[User] = nt_username ,
[Status] = er.status ,
[Wait] = wait_type ,
[Individual Query] = SUBSTRING(qt.text,
er.statement_start_offset / 2,
( CASE WHEN er.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text))
* 2
ELSE er.statement_end_offset
END - er.statement_start_offset )
/ 2) ,
[Parent Query] = qt.text ,
Program = program_name ,
hostname ,
nt_domain ,
start_time
FROM sys.dm_exec_requests er
INNER JOIN sys.sysprocesses sp ON er.session_id = sp.spid
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) AS qt
WHERE session_id 50 -- Ignore system spids.
AND session_id NOT IN ( @@SPID ) -- Ignore this current statement.
ORDER BY 1 ,
目前随着客服数据量的增大,大量的局从SQLSERVER迁移到oracle数据库,目前常用的工具是微软SQLSERVER的DTS,对于服务器配置比较高的局(小型机)可以用此方法。但是对于某些配置不太高的,大表用此方法就太慢。因此,本文就数据迁移提出一个快速的方法。
Year(getdate()) --当前年
Month(getdate()) --当前月
Day(getdate()) --当前日
Datediff(d,时间字段,getdate()) --得到离过生日还剩的天数
使用操作系统验证的情况下:
1 select user
2 go
------------------
dbo
(1 行受影响)
1 SELECT SESSION_USER
2 go
-----------------------
dbo
(1 行受影响)
1 select CURRENT_USER
2 go
---------------------------
dbo
(1 行受影响)
使用SQL Server 验证的情况下:
C:\sqlcmd -S "localhost\SQLEXPRESS" -U test_user
密码:
1 use test
2 go
已将数据库上下文更改为 'test'。
1 select CURRENT_USER
2 go
------------------------------------------------
test_user
(1 行受影响)
1 select user
2 go
------------------------------------------------
test_user
(1 行受影响)
1 select SESSION_USER
2 go
------------------------------------------------
test_user
(1 行受影响)
注:
看了看 badkano 的答案, 好像他那个更好一些。
因为他那个函数, 在 使用操作系统验证的情况下。 能够返回当前登录的 操作系统级别的用户名。