sys.dm_exec_requests er
INNER JOIN sys.dm_exec_sessions es ON er.session_id = es.session_id
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)as qt
WHERE
es.session_id > 50
AND es.session_Id NOT IN (@@SPID)
)
SELECT
*
FROM
sess
UNION ALL SELECT
es.session_id,
database_name = '',
0,
0,
0,
0,
login_name,
es.status,
0,
'',
'',
'',
qt.text,
parent_query = qt.text,
program_name,
host_name,
nt_domain,
es.last_request_start_time,
DATEDIFF(MS,es.last_request_start_time,GETDATE()) as duration,
NULL AS query_plan
FROM
sys.dm_exec_sessions es
INNER JOIN sys.dm_exec_connections ec ON es.session_id = ec.session_id
CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle)as qt
WHERE
ec.most_recent_session_id IN
(
SELECT blocking_session_id FROM sess WHERE blocking_session_id NOT IN(SELECT DISTINCT session_id FROM sess)
)
ORDER BY
1, 2
分区表问题
描述:数据量千万级别了使用分区表提升性能
答:分区表的使用场景主要是管理数据,而提升性能主要是靠IO并行,需要合理规划多块物理磁盘,大多数的场景下几千万数据单一的模式查询只需要添加正确的索引即可。
高可用的选择
答:SQL自带的高可用或读写分离技术主要有:故障转移群集、发布订阅、镜像、日志传送、AlwaysON可用组(具体可以在进阶问题的资料中详细查看)
一般选用读写分离需要根据不同的场景和要求,比如同步的实时性,读写分离功能的需要情况
主要列出几个优缺点:
故障转移群集:主备模式,单活(辅助机不可读),硬件资源浪费,主要场景是数据库的高可用。
发布订阅:读写分离常用方式,配置灵活,副本节点可以多个,可以发布订阅部分数据(即可以对数据筛选),并提供多种发布订阅模式,缺点:维护比较麻烦,一般不能用作高可用。
镜像:主备模式,单活(辅助机不可读),硬件资源浪费,主要场景是数据库的高可用。相对于故障转移群集镜像是数据库级别的高可用。在镜像中可以使用快照的方式实现读写分离。
日志传送:主要用于灾备,在备用机上可读,但缺点是日志还原时不能读,读时不能还原。
AlwaysON可用组:综合性方案,满足高可用、读写分离等需要,要求:SQL Server2012 以上版本
第三方产品:moebius负载均衡集群,实现双活,读负载均衡、读写分离等。缺点实时同步不适合类似采集系统的大规模写入系统。
服务无法启动
答:服务无法启动有很多原因,需要具体问题具体定位,如果遇到此类问题要首先查看日志定位问题,日志主要两部分,SQL启动日志和windows日志,下面给出两篇经典解析SQL启动的文章:










