sqlserver常用運維sql


1. sqlserver 檢測sql

    SELECT top 10  
        (total_elapsed_time / execution_count)/1000 N'平均時間ms'  
        ,total_elapsed_time/1000 N'總花費時間ms'  
        ,total_worker_time/1000 N'所用的CPU總時間ms'  
        ,total_physical_reads N'物理讀取總次數'  
        ,total_logical_reads/execution_count N'每次邏輯讀次數'  
        ,total_logical_reads N'邏輯讀取總次數'  
        ,total_logical_writes N'邏輯寫入總次數'  
        ,execution_count N'執行次數'  
        ,creation_time N'語句編譯時間'  
        ,last_execution_time 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'執行語句'  
        ,qp.query_plan  
    FROM  sys.dm_exec_query_stats AS qs 
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st 
    CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp  
    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%'  
    ORDER BY  total_elapsed_time / execution_count DESC;  

    
2. 死鎖

    select    
    request_session_id spid,   
    OBJECT_NAME(resource_associated_entity_id) tableName    
    from    
    sys.dm_tran_locks   
    where    
    resource_type='OBJECT' 

    GRANT SELECT ON  sys.dm_tran_locks TO zabbix

3. 連接數

    SELECT count(1) as icount FROM
    [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN ( SELECT 
    [DBID]
    FROM 
    [Master].[dbo].[SYSDATABASES]
    WHERE 
    NAME='JSTMBS'
    );

4. 數據文件大小

    select  convert(float,sum(size)) * (8192.0/1024.0)/1024.0/1024  from JSTMBS.dbo.sysfiles  

5. 查看作業 備份JSTMBS 的狀態

    select top 1 
    CASE HIST.run_status 
        WHEN 0 THEN 'Failed' 
        WHEN 1 THEN 'Succeeded'  
        WHEN 2 THEN 'Retry'  
        WHEN 3 THEN 'Canceled'  
        END as status
    FROM msdb.dbo.sysjobs JOB
    INNER JOIN msdb.dbo.sysjobhistory HIST ON HIST.job_id = JOB.job_id 
    WHERE
    JOB.name = '備份JSTMBS' 
    and HIST.step_id =0
    ORDER BY HIST.run_date desc;

6. sqlserver 統計碎片

    select B.name,C.name,A.avg_fragmentation_in_percent from  sys.dm_db_index_physical_stats(DB_ID() ,object_id('WF_WorkItem') ,NULL,NULL,NULL) A,sysobjects B,sys.indexes  C
    where A.object_id = B.id  and A.object_id = C.object_id and C.index_id = A.index_id
    and C.name is not null 
    and avg_fragmentation_in_percent > 90


7. 查看觸發器
    SELECT tb2.name AS tableName,tb1.name AS triggerName FROM Sysobjects tb1 JOIN Sysobjects tb2 ON tb1.parent_obj=tb2.id
    WHERE tb1.type='TR';

8. 調試觸發器
思路:創建存儲過程執行update語句,debug
-- 新建觸發器
    Create TRIGGER [dbo].[OverloadCaseInfoForupdate] ON [dbo].[GL_OverloadCaseInfo] 
    for update 
    AS
    DECLARE @CaseId varchar(50),  @num int
    select @CaseId=CaseId from inserted

    select @num=count(CaseId) from GL_OverloadCaseInfo where CaseId=@CaseId and (IsAccept=0 or IsAccept=2)

    if @num = 0
        begin
            ROLLBACK TRANSACTION  
        end

-- 創建存儲過程
    Create proc [dbo].[testtri]
    as 
    begin
        update GL_OverloadCaseInfo set PlateColor='7' where CaseId='HZ9482f663ec7fb901643a9dbf163b9d'
    end

-- 調試
    點擊對應的數據庫,找到存儲過程 testtri ,右鍵 執行存儲過程,點擊上面 “調試”,按F11,會進入觸發器腳本。


9. 創建鏈接服務器
    
    EXEC sp_addlinkedserver 'DB name','','SQLOLEDB','xxx.xx.xx.xxx'
    EXEC sp_addlinkedsrvlogin 'DB name','false',NULL,'user','XXXXXX'

  


免責聲明!

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



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