【SQL】一些或许将来能用到的sql 语句

查询blocked 的session及所占用资源
USE [master]
GO
SELECT  session_id
,blocking_session_id
,wait_time
,wait_type
,last_wait_type
,wait_resource
,transaction_isolation_level
,lock_timeout
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0
GO

--Also have a look at:

exec sp_who2 
exec sp_who
exec sp_lock
查询XML信息 
declare @CrmCustomerId xml = '<Root><CustId>c9ccebda-683f-e211-85be-00155db7bf1b</CustId></Root>'

SELECT CRMCustomers.[CrmCustId].value('.', 'nvarchar(50)')
FROM @CrmCustomerId.nodes('/Root/CustId') CRMCustomers([CrmCustId])
 Missing Index
SELECT S.name AS schemaName, T.name AS tableName, 
    ROW_NUMBER() OVER (PARTITION BY S.name, T.name
                        ORDER BY MIGS.avg_total_user_cost * MIGS.avg_user_impact * (MIGS.user_seeks + MIGS.user_scans) DESC
                    ) AS benefitRank,
       MIGS.user_seeks, MIGS.user_scans, MIGS.avg_total_user_cost, MIGS.avg_total_system_cost, MIGS.avg_user_impact,
       MID.equality_columns, MID.inequality_columns, MID.included_columns, S.name, T.name, T.object_id AS tableObjectId
FROM sys.dm_db_missing_index_group_stats MIGS
    INNER JOIN sys.dm_db_missing_index_groups MIG ON MIG.index_group_handle = MIGS.group_handle
    INNER JOIN sys.dm_db_missing_index_details MID ON MID.index_handle = MIG.index_handle
    INNER JOIN sys.objects T ON T.object_id = MID.object_id  
    INNER JOIN sys.schemas S ON S.schema_id = T.schema_id
WHERE MID.database_id = DB_ID()
查询正在执行的语句的隔离级别
SELECT db_name(sp.dbid) as DBName, CASE se.transaction_isolation_level 
            WHEN 0 THEN 'Unspecified' 
            WHEN 1 THEN 'ReadUncomitted' 
            WHEN 2 THEN 'Readcomitted' 
            WHEN 3 THEN 'Repeatable' 
            WHEN 4 THEN 'Serializable' 
            WHEN 5 THEN 'Snapshot' END as Isolation_level,
            qt.text SqlText,sp.Waittime
FROM sys.dm_exec_sessions se
inner join sys.sysprocesses sp on sp.spid=se.session_id
CROSS APPLY sys.dm_exec_sql_text(sp.sql_handle) as qt
where sp.dbid = db_id() 
查询被blocked 的sql以及blocker
SELECT sp.spid as Spid,
      sp.blocked as BlockerSpid,
      sp.Status,
      --sp.waittype as WaitType,
      sp.waittime as WaitTime,
      sp.waitresource as WaitResource,
      db_name(sp.dbid) as DBName,
      sp.loginame as LoginName,
      sp.login_time as LoginTime,   
      sp.last_batch as LastBatch,
      sp.hostname as HostName,
      sp.program_name as ProgramName,
      --er.start_time as StartTime,
      --DATEDIFF(SS,er.start_time,GETDATE()) as [TotalBlockedTime(s)],
      
      SUBSTRING(qt.text,sp.stmt_start / 2+1 , 
      ((CASE WHEN sp.stmt_end = -1 
       THEN (LEN(CONVERT(nvarchar(max),qt.text)) * 2) 
       ELSE sp.stmt_end END)  - sp.stmt_start) / 2+1) AS [BlockedStmt], 
         
      qt.text as [BlockedStmtText],
      
      --SUBSTRING(qt1.text,sp1.stmt_start / 2+1 , 
      --((CASE WHEN sp1.stmt_end = -1 
      -- THEN (LEN(CONVERT(nvarchar(max),qt1.text)) * 2) 
      -- ELSE sp1.stmt_end END)  - sp1.stmt_start) / 2+1) AS [BlockerStmt], 
               
      qt1.text AS [BlockerStmtText],
      sp1.stmt_start,sp1.stmt_end   ,sp1.spid
FROM sys.sysprocesses sp 
LEFT JOIN sys.sysprocesses sp1 ON sp1.spid = sp.blocked
CROSS APPLY sys.dm_exec_sql_text(sp.sql_handle) as qt
CROSS APPLY sys.dm_exec_sql_text(sp1.sql_handle) as qt1
WHERE sp.blocked!=0 AND sp.spid NOT IN (@@SPID) and db_name(sp.dbid)='Test'
ORDER BY sp.spid
查询索引碎片 
SELECT a.index_id, name,avg_fragmentation_in_percent

FROM sys.dm_db_index_physical_stats(DB_ID(N'POSDBNAME'),OBJECT_ID(N'dbo.RBOTRANSACTIONTABLE'),NULL,NULL, NULL) AS a 

    JOIN sys.indexesAS b ON a.object_id= b.object_idAND a.index_id = b.index_id ORDERBY avg_fragmentation_in_percent DESC;



 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值