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  

***************************************************


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM