35-SQLServer定期导出慢SQL到excel文件
一、总结
1、把执行结果导出到txt或csv文件时,如果慢SQL的脚本过程,会截断文本,并且会换行,所以这里导出到excel文件。
2、每次执行作业之前,生成的文件名不能已经存在,不然会报错,所以要每次执行完之后,重命名一下(具体操作见下面的步骤),错误如下:
二、操作步骤
1、查询慢SQL的脚本
注:这里查询的是平均执行时间超过3秒的SQL
=====================================================
SET NOCOUNT ON
SELECT
total_elapsed_time / 1000 N'总花费时间ms' ,
( total_elapsed_time / execution_count ) / 1000 N'平均时间ms' ,
execution_count N'执行次数' ,
SUBSTRING(st.text, ( qs.statement_start_offset / 2 ) + 1,
( ( CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2 ) + 1) N'执行语句'
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE SUBSTRING(st.text, ( qs.statement_start_offset / 2 ) + 1,
( ( CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2 ) + 1) NOT LIKE '%fetch%'
and (( total_elapsed_time / execution_count ) / 1000) >3000
ORDER BY total_elapsed_time / execution_count DESC;
====================================================
2、生成SSIS包
注:随便点击一个库右键导出数据即可,因为我们在后面会指定执行的SQL
3、查看部署的SSIS包
4、创建代理作业定期执行SSIS包
powershell脚本:
==================================================
$today=Get-Date
$formatDate=$today.ToString('yyyyMMdd')
rename-Item 'D:\excel\人力资源数据库.xls' -NewName 人力资源数据库_$formatDate.xls
==================================================
5、执行包测试结果
***************************************************
如下是个人开发系统,欢迎大家体验,纯属个人爱好,想一块玩的,私信。
易本浪账:www.jialany.com
***************************************************
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构