1.查询死锁
WITH CTE_SID ( BSID, SID, sql_handle )
AS ( SELECT blocking_session_id ,
session_id ,
sql_handle
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0
UNION ALL
SELECT A.blocking_session_id ,
A.session_id ,
A.sql_handle
FROM sys.dm_exec_requests A
JOIN CTE_SID B ON A.SESSION_ID = B.BSID
)
SELECT C.BSID ,
C.SID ,
S.login_name ,
S.host_name ,
S.status ,
S.cpu_time ,
S.memory_usage ,
S.last_request_start_time ,
S.last_request_end_time ,
S.logical_reads ,
S.row_count ,
q.text
FROM CTE_SID C
JOIN sys.dm_exec_sessions S ON C.sid = s.session_id
CROSS APPLY sys.dm_exec_sql_text(C.sql_handle) Q
ORDER BY sid
2.干掉死锁
declare @spid int
Set @spid = 60 --锁表进程 --bsid
declare @sql varchar(1000)
set @sql='kill '+cast(@spid as varchar)
exec(@sql)
3.月数据按天统计
declare @sql NVARCHAR(4000)
set @sql = 'select SrcDepart';--需要查询什么字段在这里拼装
while @starttime < @endtime
begin
set @starttime = @starttime+1
--'''表示输出一个单引号
--'''+Convert(Varchar(10),@starttime,120)+'''表示 将变量@starttime转换为字符串 '2012-05-05'
set @sql = @sql +',(select 数量 from 表名 M where M.SrcDepart=N.SrcDepart and M.InDate='''+Convert(Varchar(10),@starttime,120)+''') as '''+Convert(Varchar(10),@starttime,120)+''''
end
set @sql = @sql+' from VCaseTranIn N where 1=1';
exec(@sql) --执行SQL
--print @sql --打印SQL
4.创建视图时,如何加group by
select TOP 100 PERCENT xx from TableName order by XX --PERCENT 代表百分之多少
--TOP 100 前一百条数据
--TOP 100 PERCENT 百分之百数据
--创建视图时,只要语句中包含top关键词,就可以使用group by
5.sqlserver用语句给表注释
EXECUTE sp_addextendedproperty N'MS_Description', N'表注释', N'user', N'dbo', N'table', N'表名', NULL, NULL
6.sqlserver用语句给表的“字段”注释
EXECUTE sp_addextendedproperty N'MS_Description', N'字段注释', N'user', N'dbo', N'table', N'表名', N'column', N'字段名'
7.查看sqlserver注释
SELECT
A.name AS table_name,
B.name AS column_name,
C.value AS column_description
FROM sys.tables A
INNER JOIN sys.columns B ON B.object_id = A.object_id
LEFT JOIN sys.extended_properties C ON C.major_id = B.object_id AND C.minor_id = B.column_id
WHERE A.name = '表名'
8.查询某张表被哪些存储过程或者视图用到的sql语句
select distinct object_name(id) from syscomments
where id in (select id from sysobjects where type in('V','P')) --V表示视图,P表示存储过程
and text like '%tablename%'--tablename为需要查询被引用的表名称
9.sql server 查询某个表的所有触发器名称
select * from sysobjects where xtype='TR'
select * from sysobjects where xtype='TR' and parent_obj=object_id('表名')
select name 表格名称 from sysobjects where xtype='U' AND id in(select parent_obj from sysobjects where xtype='TR')------查询有触发器的表
select name 表格名称 from sysobjects where xtype='U' AND id NOT in(select parent_obj from sysobjects where xtype='TR')------查询没有触发器的表
/*xtype char(2) 对象类型。可以是下列对象类型中的一种:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程 */