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'

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server数据库运维是指管理和维护SQL Server数据库系统的任务和活动。这些任务包括数据库备份和恢复、性能优化、数据库健康检查、安全管理和故障排除。在进行数据库运维时,需要使用一些常见的功能语句和工具。 其中,数据库备份和恢复是数据库运维中最重要的任务之一。可以使用sqlcmd命令行工具进行备份和恢复操作。例如,可以使用以下命令行来备份数据库: sqlcmd -S .\SQLServerName -U UserName -P Password -Q "BACKUP DATABASE [DatabaseName] TO DISK='Path\BackupFile.bak'" 要进行数据库恢复,可以使用以下命令行: sqlcmd -S .\SQLServerName -U UserName -P Password -Q "RESTORE DATABASE [DatabaseName] FROM DISK='Path\BackupFile.bak' WITH REPLACE" 在进行数据库维护时,可能会遇到一些错误和问题。例如,当出现设备未就绪错误时,可以执行数据库一致性检查(DBCC CHECKDB)来检查和修复数据库的完整性。以下是一个示例代码: use master declare @databasename varchar(255) set @databasename = 'shts_db' --将数据库设置为单用户模式 ALTER DATABASE [shts_db] SET SINGLE_USER WITH ROLLBACK IMMEDIATE dbcc checkdb(@databasename, REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(@databasename, REPAIR_REBUILD) --将数据库设置为多用户模式 ALTER DATABASE [shts_db] SET MULTI_USER WITH ROLLBACK IMMEDIATE 此外,还可以使用功能语句来进行一些常见的查询和操作。例如,可以使用以下语句查询当前数据库的名称: SELECT Name FROM Master..SysDataBases WHERE DbId = (SELECT Dbid FROM Master..SysProcesses WHERE Spid = @@spid) 还可以使用以下语句生成UUID: DECLARE @uuid VARCHAR(32) SET @uuid = CAST(REPLACE(newid(), '-', '') AS VARCHAR(32)) 总之,SQL Server数据库运维涉及多个方面,包括备份和恢复、性能优化、数据库健康检查、安全管理和故障排除。在进行数据库运维时,可以使用sqlcmd工具和各种功能语句来完成各种任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [2001—SQL Server运维随笔](https://blog.csdn.net/zhang_yling/article/details/89331836)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值