All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
SQL,SERVER2008安装_mssql学习_编程技术
asp.net,css控制打印功能_[Asp.Net教程]
温故知新ASP.NET,2.0(C#)(8),-,DataSourceControl(数据源控件)_[Asp.Net教程]
ASP.Net环境下使用Jmail组件发送邮件_[Asp.Net教程]
PHP网站开发中关于包含路径问题的解决方案_php资料_编程技术
C#技巧:给datagrid的按钮列添加css_[Asp.Net教程]
让php5在win2003 X64 下运行的方法_[PHP教程]
一步步教你配置SQL SERVER合并复制(三)配置Distributor_[SQL Server教程]
C#中显示XML文件使用实例
PHP动态网页程序中常用的表单验证类_php资料_编程技术
Reading number is top 10 pictures
程序员的悲哀
Lewd,it is too lewd.
Athena chu perspective cheongsam shine with New York
Men don't mature ten sign
The money of more than 100 countries and regions4
A beautiful girl to bud2
粉红蕾丝的美女
So beauty, will let you spray blood9
50个至今影响世界的德国发明
30 beautiful school beauty5
Download software ranking
Tram sex maniac 2 (H) rar bag1
1400篇各类破解文章
Unix video tutorial5
Unix video tutorial6
Call Of Duty5
星际争霸1.08硬盘免安装版
XML+Web+Service开发教程
Kung.Fu.Panda.2
C#编程思想
Unix video tutorial14
delv published in(发表于) 2013/12/30 4:33:26 Edit(编辑)
MSSQL2005,SYS.SYSPROCESSES使用--整理帖_mssql学习_编程技术

MSSQL2005,SYS.SYSPROCESSES使用--整理帖_mssql学习_编程技术

MSSQL2005 SYS.SYSPROCESSES使用--整理帖_mssql学习_编程技术-你的首页-uuhomepage.com
SQL SERVER 2005 SYS.SYSPROCESSES 的使用
(一)理論部份
sysprocesses 表中保存关于运行在 Microsoft® SQL Server™ 上的进程的信息。这些进程可以是客户端进程或系统进程。sysprocesses 只存储在 master 数据库中。
Sysprocesses各部份作用:
字段 數據類型 描述
spid smallint 进程ID
kpid smallint 线程ID
blocked smallint 分块进程ID (spid)
waittype binary(2) 保留
waittime int 当前等待时间(以毫秒为单位)当进程不处于等待时,为 0。
lastwaittype nchar(32) 表示上次或当前等待类型名称的字符串。
waitresource nchar(32) 锁资源的文本化表示法。
dbid smallint 当前正由进程使用的数据库 ID。
uid smallint 执行命令的用户 ID。
cpu int 进程的累计CPU时间无论SET STATISTICS TIME ON选项是ON还是OFF都为所有进程更新该条目。
physical_io int 进程的累计磁盘读取和写入。
memusage int 当前分配给该进程的过程高速缓存中的页数。一个负数,表示进程正在释放由另一个进程分配的内存。
login_time datetime 客户端进程登录到服务器的时间。对于系统进程,是存储 SQL Server 启动发生的时间。
last_batch datetime 客户端进程上次执行远程存储过程调用或 EXECUTE 语句的时间。对于系统进程,是存储 SQL Server 启动发生的时间。
ecid smallint 用于唯一标识代表单个进程进行操作的子线程的执行上下文 ID。
open_tran smallint 进程的打开事务数。
status nchar(30) 进程 ID 状态(如运行、休眠等)。
sid binary(85) 用户的全局唯一标识符 (GUID)。
hostname nchar(128) 工作站的名称。
program_name nchar(128) 应用程序的名称。
hostprocess nchar(8) 工作站进程 ID 号。
cmd nchar(16) 当前正在执行的命令。
nt_domain nchar(128) 客户端的 Windows NT 4.0 域(如果使用 Windows 身份验证)或信任连接的 Windows NT 4.0 域。
nt_username nchar(128) 进程的 Windows NT 4.0用户名(如果使用 Windows 身份验证)或信任连接的 Windows NT 4.0 用户名。
net_address nchar(12) 指派给每个用户工作站上的网络接口卡唯一标识符。当用户登录时,该标识符插入 net_address 列。
net_library nchar(12) 用于存储客户端网络库的列。每个客户端进程都在网络连接上进入。网络连接有一个与这些进程关联的网络库,该网络库使得这些进程可以建立连接。有关更多信息,请参见客户端和服务器 Net-Library。
loginame nchar(128) 登录名。
(二)實戰部份
(2.1)恢复数据库而不能获得专门的访问,特别是恢复数据库时候,报错:(数据库正在被其他用户使用)
use master
go
select spid
from sys.sysprocesses
where dbid=db_id('db_Sunrise') and spid<>@@spid
/*
spid
------
51
52
57
58
59
61
62
64
*/
KILL 51;
KILL 52 WITH STATUSONLY;
GO
--返回当前用户进程的会话 ID、登录名和用户名。
SELECT @@SPID AS 'ID',
SYSTEM_USER AS 'Login Name',
USER AS 'User Name'
--如果進程比較多,可以動態執行
declare @sql varchar(8000)
select @sql =coalesce(@sql,'') +'Kill '+CAST(spid AS VARCHAR(10))+ ';'
from sys.sysprocesses WHERE DBID=DB_ID('db_wip')
exec(@sql)
(2.2)查詢死鎖,解決死鎖
概念:
死锁是一种可能发生在任何多线程系统中的状态,而不仅仅发生在关系数据库管理系统中。多线程系统中的一个线程可能获取一个或多个资源(如锁)。如果正获取的资源当前为另一线程所拥有,则第一个线程可能必须等待拥有线程释放目标资源。这时就说等待线程在那个特定资源上与拥有线程有相关性。
如果拥有线程需要获取另外一个资源,而该资源当前为等待线程所拥有,则这种情形将成为死锁:在事务提交或回滚之前两个线程都不能释放资源,而且它们因为正等待对方拥有的资源而不能提交或回滚事务。例如,运行事务 1 的线程 T1 具有 Supplier 表上的排它锁。运行事务 2 的线程 T2 具有 Part 表上的排它锁,并且之后需要 Supplier 表上的锁。事务 2 无法获得这一锁,因为事务 1 已拥有它。事务 2 被阻塞,等待事务 1。然后,事务 1 需要 Part 表的锁,但无法获得锁,因为事务 2 将它锁定了。事务在提交或回滚之前不能释放持有的锁。因为事务需要对方控制的锁才能继续操作,所以它们不能提交或回滚。
死锁经常与正常阻塞混淆。当一个事务锁定了另一个事务需要的资源,第二个事务等待锁被释放。默认情况下,SQL Server 事务不会超时(除非设置了 LOCK_TIMEOUT)。第二个事务被阻塞,而不是被死锁。
use master
go
declare @spid int,@bl int
declare s_cur cursor for
select 0 ,blocked
from (select * from sysprocesses where blocked>0 ) a
where not exists(select * from (select * from sysprocesses where blocked>0 ) b where a.blocked=spid)
union
select spid,blocked from sysprocesses where blocked>0
open s_cur
fetch next from s_cur into @spid,@bl
while @@fetch_status = 0
begin
if @spid =0
select N'引起数死鎖的是:'+ltrim(@bl)+N'进程号,其执SQL语法如下'
else
select N'进程号:'+ ltrim(@bl)+N'被'+N'进程号:'+ltrim(@bl)+N'阻塞,其当前进 进程執行的SQL语法如下:'
dbcc inputbuffer (@bl )
fetch next from s_cur into @spid,@bl
end
close s_cur
deallocate s_cur
(2.3) 获取连接SQL服务器的信息
if object_id('p_getlinkinfo','P')is not null drop proc p_getlinkinfo
go
create proc p_getlinkinfo
@dbname sysname=null, --要查詢的數據庫名,默認表示所有
@includeip bit=0 --是否顯示IP信息
as
begin
declare @dbid int
set @dbid=db_id(@dbname)
if object_id('tempdb..#tb')is not null drop table #tb
if object_id('tempdb..#ip')is not null drop table #ip
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,
net_ip,
prog_name
from #tb
end
go
exec p_getlinkinfo @dbname='DB_WIP',@includeip=1




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.