⑴ 如何查询sqlServer某进程当前正在执行或其最近一次执行的SQL语句
SELECT
c.session_id,c.net_transport,c.encrypt_option,
c.auth_scheme,s.host_name,s.program_name,
s.client_interface_name,s.login_name,s.nt_domain,
s.nt_user_name,s.original_login_name,c.connect_time,
s.login_time,q.text
FROMsys.dm_exec_connectionsASc
JOINsys.dm_exec_sessionsASs
ONc.session_id=s.session_id
crossapplyfn_get_sql(most_recent_sql_handle)q
where条件自己写
⑵ sqlServer查看死锁及解锁
--查看死锁
select spid, blocked, loginame, last_batch, status, cmd, hostname, program_name
from sysprocesses
where spid in
( select blocked from sysprocesses where blocked <> 0 ) or (blocked <>0)
--解锁
kill 进程号(spid)
⑶ sqlserver怎么用sql查看具体那个表被锁住了
查看被锁表:
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName
from sys.dm_tran_locks where resource_type='OBJECT'
--spid 锁表进程
--tableName 被锁表名
解锁:
declare @spid int
Set @spid = 57 --锁表进程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid as varchar)
exec(@sql)
--查询出死锁的SPID
select 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)
--输出引起死锁的操作
DBCC INPUTBUFFER (@spid)
--查询当前进程数
select count(-1) from sysprocesses
where dbid in (select dbid from sysdatabases where name like '%telcount%');
⑷ sqlserver如何查看哪个进程堵塞
SELECT blocking_session_id '阻塞进程的ID', wait_ration_ms '等待时间(毫秒)', session_id '(会话ID)' FROM sys.dm_os_waiting_tasks!
⑸ 关于SQLserver数据库的进程问题
一般来说SQL的进程有几个
SQL
BROWSER
你的客户端连接的进程
SQLSERVR你的数据库实例的主服务
SQLWB
这是你启动MANAGER
STUDIO后产生的进程
SQLWRITER
省略
SQLAGENT
省略
似乎是这些,我也记不清楚了
如果你设置成手动,那么你设置的这些服务不会启动,但是进程上会存在。特别是SQLSERVR(其他的我没注意),此时你观察它的内存使用量,虽然不算特别大,但是也够大了。但你启动你的SQL
SERVER时,内存使用量会增加很多。(我理解是此时连接了你的服务器,所以要占用内存)
而当你关闭了SQLSERVER以后,内存使用量并不会减少太多,说明你的服务器依旧在运行。
所以根据我的这个观察,我觉得,你将
服务设置手动,只是设置了该服务器的实例不会自动运行。而不是SQL
SERVER这个软件不会自动运行。
如果真的要全部停止服务的话。似乎你用SQL
SERVER
CONFIGURATION
来设置服务应该可以实现你的要求/
⑹ 如何查看sqlserver的启动/停止日志
您好,很高兴为您解答。
缺省情况下,在Program FilesMicrosoft SQL ServerMSSQLLog目录下。最近的错误日志名称是ERRORLOG,如果停止并重启SQL Server,旧的日志将被压缩和新建一个文件。此外,也可以通过DBCC ERRORLOG 命令或者sp_cycle_errorlog 系统存储过程回收错误日志。
[@more@]
以下是一些没有写在文档中但是众所周知的系统存储过程,这些存储过程可以从SQL Server自身读取错误日志。
exec xp_enumerrorlogs 1 will list SQL Engine errorlog file numbers
exec xp_readerrorlog <errorlognumber>, 1 will return the content of the requested Engine errorlog file.
exec xp_enumerrorlogs 2 will list the Agent error log file numbers
exec xp_readerrorlog <errorlognumber>, 2 will return the content of the requested Agent error log file.
举例:
exec xp_enumerrorlogs 2
存档# 日期 日志文件大小(字节)
1 08/06/2012 10:52 11399188
2 07/13/2012 00:58 1048
3 07/13/2012 00:55 1048
4 07/13/2012 00:55 12682508
5 06/16/2012 09:53 12869230
6 05/20/2012 05:38 10492
7 05/20/2012 05:25 11766
8 05/20/2012 05:08 10012278
9 04/29/2012 00:41 15371150
0 08/08/2012 11:30 939606
exec xp_readerrorlog 1, 2
时间 错误级别 内容
2012-07-13 01:07:03.0 3 [393] 正在等待 SQL Server 恢复数据库...
2012-07-13 01:18:29.0 3 [100] Microsoft SQLServerAgent 版本 9.00.1399.06 (内部版本号 x86 unicode 零售): 进程 ID 1996
2012-07-13 01:18:29.0 3 [101] SQL Server SVCTAG-4GCYY2X 版本 9.00.1399 (连接限制: 0)
2012-07-13 01:18:29.0 3 [102] SQL Server ODBC 驱动程序版本 9.00.1399
2012-07-13 01:18:29.0 3 [103] 驱动程序使用的 NetLib 是 DBNETLIB.DLL;本地主机服务器是
2012-07-13 01:18:29.0 3 [310] 检测到 8 个处理器和 4096 MB RAM
2012-07-13 01:18:29.0 3 [339] 本地计算机是 SVCTAG-4GCYY2X,运行的是 Windows NT 5.2 (3790) Service Pack 2
2012-07-13 01:18:29.0 3 [431] 正在填充子系统缓存...
2012-07-13 01:18:36.0 3 [432] 子系统缓存中有 11 个子系统
2012-07-13 01:18:36.0 3 [124] 已成功加载子系统“TSQL”(最大并发数: 160)
2012-07-13 01:18:37.0 3 [124] 已成功加载子系统“ActiveScripting”(最大并发数: 80)
2012-07-13 01:18:37.0 3 [124] 已成功加载子系统“CmdExec”(最大并发数: 80)
2012-07-13 01:18:38.0 3 [124] 已成功加载子系统“Snapshot”(最大并发数: 800)
2012-07-13 01:18:38.0 3 [124] 已成功加载子系统“LogReader”(最大并发数: 200)
~ O(∩_∩)O~