首页 > 数据库 >SQL SERVER日常运维(二)

SQL SERVER日常运维(二)

时间:2024-09-05 11:55:30浏览次数:7  
标签:name 运维 database SERVER sys select SQL id SELECT

以下语句请使用SA用户或者有DBA权限的用户进行执行,否则可能会出现权限不足报错。

查看当前用户查看当前用户

select system_user;

检查SQL Agent是否开启

IF EXISTS (
SELECT TOP 1 1
FROM sys.sysprocesses
WHERE program_name = 'SQLAgent - Generic Refresher'
)
SELECT 'Running'
ELSE
SELECT 'Not Running';

查看是否做了镜像

select
a.database_id
,a.name 数据库名称
,case when b.mirroring_guid is null then '否' else '是' end 是否镜像
,b.mirroring_partner_name 镜像服务器名称
from
[sys].[databases] a
left join [sys].[database_mirroring] b on a.database_id=b.database_id;

分离数据库

USE master;
--test指需要分离的数据库
EXEC sp_detach_db @dbname = 'test';

附加数据库

--查看物理数据库文件的位置
SELECT type_desc, name, physical_name from sys.database_files;
--使用带 FOR ATTACH 子句的 CREATE DATABASE 语句附加之前分离的test数据库
CREATE DATABASE test
ON (FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\test.mdf'),
(FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\test_log.ldf')
FOR ATTACH;

查看主从复制关系

SELECT * FROM msdb.dbo.sysjobs;
SELECT
serverproperty('servername') AS ServerName,
CASE
WHEN serverproperty('servername') = '主服务器名称' THEN '主服务器'
ELSE '从服务器'
END AS ServerRole;
--也可以通过以下语句来查询
SELECT * FROM sys.objects WHERE name = 'MSreplication_options';

查看实例级别的信息

select SERVERPROPERTY ('test');

查看实例级别的某个参数allow updates的配置

select * from sys.configurations where name='allow updates';

查询当前数据库的所有架构范围的对象

select * from sys.all_objects;

查询当前数据库的所有对象

select * from sys.sysobjects;

在当前数据库下可以查询到所有数据库信息,包含是否on状态

select * from sys.databases;

查询所有数据库信息

select * from sys.sysdatabases;

查询当前数据库下所有正在SQL Server 实例上运行的进程的相关信息

select * from sys.sysprocesses;

监控日志空间

DBCC SQLPERF (LOGSPACE);

查看数据库各种设置

select name,State,user_access,is_read_only,recovery_model from sys.databases;

查询当前数据库是否有会话

select DB_NAME(dbid),* from sys.sysprocesses where dbid=db_id('test');

查询当前阻塞的所有请求

SELECT session_Id,spid,ecid,DB_NAME (sp.dbid),nt_username,er.status,wait_type,
[Individual Query] =SUBSTRING (qt.text,er.statement_start_offset / 2,
( CASE
WHEN er.statement_end_offset = -1
THEN
LEN (CONVERT (NVARCHAR (MAX), qt.text)) * 2
ELSE
er.statement_end_offset
END
- er.statement_start_offset)
/ 2),
qt.text,program_name,Hostname,nt_domain,start_time
FROM sys.dm_exec_requests er
INNER JOIN sys.sysprocesses sp ON er.session_id = sp.spid
CROSS APPLY sys.dm_exec_sql_text (er.sql_handle) AS qt
WHERE session_Id > 50 /* Ignore system spids.*/
AND sp.blocked>0 AND session_Id NOT IN (@@SPID);

查看活动线程执行的sql语句,并生成批量杀掉的语句

select 'KILL '+CAST(a.spid AS NVARCHAR(100)) AS KillCmd,REPLACE(hostname,' ','') as hostname ,replace(program_name,' ','') as program_name
,REPLACE(loginame, ' ', '') AS loginame, db_name(a.dbid) AS DBname,spid,blocked,waittime/1000 as waittime
,a.status,Replace(b.text,'''','''') as sqlmessage,cpu
from sys.sysprocesses as a with(nolock)
cross apply sys.dm_exec_sql_text(sql_handle) as b
where a.status<>'sleeping' AND a.spid<>@@SPID;

查看数据库的最近备份信息

--D 表示全备份,i 表示差异备份,L 表示日志备份
SELECT database_name,type,MAX(backup_finish_date) AS backup_finish_date FROM msdb.dbo.backupset GROUP BY database_name,type ORDER BY database_name,type;

 

查看备份进度

SELECT DB_NAME(database_id) AS Exec_DB
,percent_complete
,CASE WHEN estimated_completion_time < 36000000
THEN '0' ELSE '' END + RTRIM(estimated_completion_time/1000/3600)
+ ':' + RIGHT('0' + RTRIM((estimated_completion_time/1000)%3600/60), 2)
+ ':' + RIGHT('0' + RTRIM((estimated_completion_time/1000)%60), 2) AS [Time Remaining]
,b.text as tsql
,*
FROM SYS.DM_EXEC_REQUESTS
cross apply sys.dm_exec_sql_text(sql_handle) as b
WHERE command LIKE 'Backup%' --and database_id=db_id('cardorder')
--OR command LIKE 'RESTORE%'
ORDER BY 2 DESC;

查询always on状态是否正常

SELECT
    dc.database_name,
    d.synchronization_health_desc,
    d.synchronization_state_desc,
    d.database_state_desc 
FROM
    sys.dm_hadr_database_replica_states d
    JOIN sys.availability_databases_cluster dc ON d.group_database_id= dc.group_database_id 
    AND d.is_local=1;

查看mirror镜像信息

SELECT
db_name(database_id),
mirroring_state_desc,
mirroring_role_desc,
mirroring_partner_name,
mirroring_partner_instance
FROM sys.database_mirroring;

查看每个数据库实例的数据量大小

SELECT
DB_NAME(db.database_id) DatabaseName,
(CAST(mfrows.RowSize AS FLOAT)*8)/1024 RowSizeMB,
(CAST(mflog.LogSize AS FLOAT)*8)/1024 LogSizeMB,
(CAST(mfstream.StreamSize AS FLOAT)*8)/1024 StreamSizeMB,
(CAST(mftext.TextIndexSize AS FLOAT)*8)/1024 TextIndexSizeMB
FROM sys.databases db
LEFT JOIN (SELECT database_id, SUM(size) RowSize FROM sys.master_files WHERE type = 0 GROUP BY database_id, type) mfrows ON mfrows.database_id = db.database_id
LEFT JOIN (SELECT database_id, SUM(size) LogSize FROM sys.master_files WHERE type = 1 GROUP BY database_id, type) mflog ON mflog.database_id = db.database_id
LEFT JOIN (SELECT database_id, SUM(size) StreamSize FROM sys.master_files WHERE type = 2 GROUP BY database_id, type) mfstream ON mfstream.database_id = db.database_id
LEFT JOIN (SELECT database_id, SUM(size) TextIndexSize FROM sys.master_files WHERE type = 4 GROUP BY database_id, type) mftext ON mftext.database_id = db.database_id;

查询总耗CPU最多的前3个SQL,且最近5天出现过

SELECT TOP 3
total_worker_time/1000 AS [总消耗CPU 时间(ms)],execution_count [运行次数],
qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],
last_execution_time AS [最后一次执行时间],max_worker_time /1000 AS [最大执行时间(ms)],
SUBSTRING(qt.text,qs.statement_start_offset/2+1,
(CASE WHEN qs.statement_end_offset = -1
THEN DATALENGTH(qt.text)
ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1)
AS [使用CPU的语法], qt.text [完整语法],
qt.dbid, dbname=db_name(qt.dbid),
qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
FROM sys.dm_exec_query_stats qs WITH(nolock)
CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE execution_count>1 and last_execution_time>dateadd(dd,-5,getdate())
ORDER BY total_worker_time DESC;

查看当前最耗资源的10个SQL及其spid

--前50号session_id一般是系统后台进程,sys.dm_exec_requests的status显示为background
SELECT TOP 10
session_id,request_id,start_time AS '开始时间',status AS '状态',
command AS '命令',d_sql.text AS 'sql语句', DB_NAME(database_id) AS '数据库名',
blocking_session_id AS '正在阻塞其他会话的会话ID',
wait_type AS '等待资源类型',wait_time AS '等待时间',wait_resource AS '等待的资源',
reads AS '物理读次数',writes AS '写次数',logical_reads AS '逻辑读次数',
row_count AS '返回结果行数'
FROM sys.dm_exec_requests AS d_request
CROSS APPLY
sys.dm_exec_sql_text(d_request.sql_handle) AS d_sql
WHERE session_id>50
ORDER BY cpu_time DESC;

always on

查看集群各节点的信息,包含节点成员的名称,类型,状态,拥有的投票仲裁数

SELECT * FROM sys.dm_hadr_cluster_members;

查看集群各节点的信息,包含节点成员的名称,节点成员上的sql实例名称

select * from sys.dm_hadr_instance_node_map;

查看WSFC(windows server故障转移群集)的信息,包含集群名称,仲裁类型,仲裁状态

SELECT * FROM SYS.dm_hadr_cluster;

查看AG名称

select * from sys.dm_hadr_name_id_map;
--查看集群各节点的子网信息,包含节点成员的名称,子网段,子网掩码
SELECT * FROM sys.dm_hadr_cluster_networks;

查看侦听ip

select * from sys.availability_group_listeners;

查看主从各节点的状态

复制

select d.is_local,dc.database_name, d.synchronization_health_desc,
d.synchronization_state_desc, d.database_state_desc
from sys.dm_hadr_database_replica_states d
join sys.availability_databases_cluster dc
on d.group_database_id=dc.group_database_id;

查看辅助副本(从库)延迟多少M日志量

select db_name(database_id),log_send_queue_size/1024 delay_M,*
from sys.dm_hadr_database_replica_states where is_primary_replica=0;

查看DDL操作的记录

select * from Sys.traces;

 

标签:name,运维,database,SERVER,sys,select,SQL,id,SELECT
From: https://www.cnblogs.com/LaiYun/p/18398097

相关文章

  • SQLSERVER建立Oracle Provider for OLE DB操作文档
    1、 下载ODAC-21.7-Xcopy-64-bit,并解压到目录ODAC21.72、 D盘创建目录:Oracle21C3、 CMD转向到目录ODAC21.7,输入【install.batoledbc:\oracleodac】,安装服务4、 系统环境变量中,为Path添加“D:\ Oracle21C;D:\ Oracle21C \bin;”5、 重启计算机,一定要重启6、 SQLS......
  • 20240904_172638 mysql 填空题 存储过程
    创建一个名为p1的存储过程,只写第一行createprocedurep1()存储过程的开始,单词begin存储过程的结束,单词end调用名为p1的存储过程,不传参数callp1()修改每行命令的结束符号,改成$$delimiter$$查看名为p1的存储过程的创建语句showcreateprocedurep1删除名为p1的存储过......
  • SQL SERVER日常运维(一)
    一、基础命令查看当前数据库的版本SELECT@@VERSION;查看服务器部分特殊信息selectSERVERPROPERTY(N'edition')asEdition--数据版本,如企业版、开发版等,SERVERPROPERTY(N'collation')asCollation--数据库字符集,SERVERPROPERTY(N'servername')asServerName--服......
  • mysql创建数据库和表
    MySQL数据库与表创建及增删改查操作详细文档一、前言MySQL是一种广泛使用的关系型数据库管理系统,它支持多种编程语言进行数据操作。本文档将详细介绍如何在MySQL中创建数据库和表,并进行基本的增(Insert)、删(Delete)、改(Update)、查(Select)操作。二、创建数据库在MySQL中,首先......
  • 课题分享:校园闲置物品租售系统,基于java+springboot+mysql
      一、前言介绍        传统的校园闲置物品租售系统方式是在线下实体进行的,用户需要到线下进行实际的了解传统信息,而随着信息不断的普及,越来越多的校园商家也开始出于各种各样的理由而热衷网上发展,传统的线下模式已经无法满足人们的需求了。        互联......
  • 课题分享:校园闲置物品交易网站,基于java+springboot+mysql
      一、前言介绍        计算机的普及和互联网时代的到来使信息的发布和传播更加方便快捷。用户可以通过计算机上的浏览器访问多个应用系统,从中获取一些可以满足用户需求的管理系统。网站系统有时更像是一个大型“展示平台”,用户可以选择所需的信息进入系统查看首页......
  • 课题分享:外卖点餐系统,基于java+springboot+mysql
      一、前言介绍        计算机的普及和互联网时代的到来使信息的发布和传播更加方便快捷。人们可以通过计算机上的浏览器访问多个应用系统,从中获取一些可以满足用户生活需求的管理系统。网站系统有时更像是一个大型“展示平台”,人们可以选择所需的信息进行在线下单......
  • sqlserver性能排查脚本
     一、CPU问题1、目前正在发生的cpu问题排查 --累计耗费cpu多统计PRINT'--top10ActiveCPUConsumingQueries(aggregated)--';SELECTTOP10GETDATE()runtime,*FROM(SELECTquery_stats.query_hash,SUM(query_stats.cpu_time)'Total_Request_Cpu_Time_Ms',SUM......
  • pymongo.errors.ConfigurationError: Server at localhost:27017 reports wire versio
    当你的PyMongo版本比较新时,如当前使用版本为v4.8.0,如果你尝试连接到MongoDBServerv3.4或更早版本,PyMongo可能会引发以下错误:pymongo.errors.ConfigurationError:Serveratlocalhost:27017reportswireversion5,butthisversionofPyMongorequiresatleast6(Mo......
  • 在 SQLAlchemy 中对数据异步处理的时候,获得关联集合的处理方式
    我们在定义SQLAlchemy对象模型的关系的时候,用到了relationship来标识关系,其中lazy的参数有多种不同的加载策略,本篇随笔介绍它们之间的关系,以及在异步处理中的一些代码案例。1、在SQLAlchemy中定义关系在SQLAlchemy中,relationship()函数用于定义表之间的关系(如one-to-ma......