MS SQL 日常维护管理常用脚本
--【查看数据库服务器名称】
--默认实例查询
SELECT @@SERVERNAME AS SERVERNAME;
SELECT SERVERPROPERTY('servername') AS ServerName;
SELECT srvname AS ServerName
FROM sys.sysservers;
SELECT SERVERPROPERTY('MachineName') AS ServerName --命名实例查询
SELECT SUBSTRING(@@SERVERNAME, , CHARINDEX('\', @@SERVERNAME)) AS SERVERNAME; SELECT SUBSTRING(
CONVERT(VARCHAR(), SERVERPROPERTY('servername')),
,
CHARINDEX('\', CONVERT(VARCHAR(100), SERVERPROPERTY('servername')))
) AS ServerName; SELECT SUBSTRING(srvname, , CHARINDEX('\', srvname)) AS ServerName
FROM sys.sysservers; SELECT SERVERPROPERTY('MachineName') AS ServerName --【查看数据库实例名称】
SELECT @@SERVICENAME AS InstantName;
SELECT ISNULL(SERVERPROPERTY('InstanceName'), 'MSSQLSERVER') AS InstanceName;
--下面脚本仅对命名实例有效,默认实例查询处理的是计算机名称
SELECT SUBSTRING(@@SERVERNAME, CHARINDEX('\', @@SERVERNAME) + 1, 100) AS
InstantName; SELECT SUBSTRING(srvname, CHARINDEX('\', srvname) + 1, 100) AS InstantName
FROM sys.sysservers; --【查看数据库版本号】
--方法1
SELECT SERVERPROPERTY('productversion') AS ProductVersion,
SERVERPROPERTY('productlevel') AS ProductLevel,
SERVERPROPERTY('edition') AS Edition --方法2
SELECT @@VERSION AS PRODUCT_VERSION; --【查看实例数据库的相关信息】
SELECT *
FROM sys.databases --【 查看排序规则信息】
-- :查看实例排序规则
SELECT SERVERPROPERTY(N'Collation') -- :查看数据库排序规则
SELECT NAME,
collation_name
FROM sys.databases --【查询当前数据库的磁盘使用情况】
--如需要查询其他数据库,则需在前面指定数据库名称
EXEC sp_spaceused; --【查看数据库启动相关参数】
EXEC sp_configure; --【查看数据库启动时间】
SELECT CONVERT(VARCHAR(), LOGIN_TIME, ) AS StartDateTime
FROM MASTER..sysprocesses
WHERE spid = --【查看所有数据库名称及大小】
EXEC sp_helpdb; --【查看所有数据库用户登录信息】
EXEC sp_helplogins; --【查看所有数据库用户所属的角色信息】
EXEC sp_helpsrvrolemember --【查看链接服务器】
EXEC sp_helplinkedsrvlogin --【查看远端数据库用户登录信息】
sp_helpremotelogin --【查看数据库下某个数据对象的大小】
sp_spaceused @objname --查看某数据库下某个数据对象的索引信息
sp_helpindex @objname --【查看某数据库下某个数据对象的的约束信息】
sp_helpconstraint @objname --【查看表的相关信息】
sp_help 'TABLE_NAME' --【查看数据库服务器各数据库日志文件的大小及利用率/状态】
DBCC SQLPERF(LOGSPACE) --【查看当前数据库的文件状态】
EXEC ('DBCC showfilestats') --【查看数据库存储过程】
--查看有哪些存储过程
--方法1:
EXEC sp_stored_procedures; --方法2:
SELECT *
FROM sys.procedures; --方法3:
SELECT *
FROM sys.sysobjects
WHERE xtype = 'P'; --【查看存储过程基本信息】
EXEC sp_help 'dbo.sp_who_lock' --【查看存储过程源代码:】
--方法1:
EXEC sp_helptext 'procedureName' --方法2:
SELECT *
FROM SYS.SQL_MODULES
WHERE OBJECT_ID = OBJECT_ID(N'procedureName') --方法3:
SELECT s.text AS ProcedureText,
s.encrypted AS Encrypted,
s.number AS number,
CONVERT(NCHAR(), o.xtype) AS xtype,
DATALENGTH(s.text) AS ProcedureLen
FROM dbo.syscomments s,
dbo.sysobjects o
WHERE o.id = s.id
AND s.id = OBJECT_ID(N'rpt_TrainingPlan')
ORDER BY
s.number,
s.colid
OPTION(ROBUST PLAN) --【查看数据库所在机器操作系统参数】
EXEC MASTER..xp_msver --【查看数据库服务器磁盘分区剩余空间】
EXEC MASTER.dbo.xp_fixeddrives; --【查看数据库服务器CPU/内存的大概信息】
SELECT cpu_count AS [Logical CPU Count],
hyperthread_ratio AS [Hyperthread Ratio],
cpu_count / hyperthread_ratio AS [Physical CPU Count],
physical_memory_in_bytes / AS [Physical Memory (MB)],
sqlserver_start_time
FROM sys.dm_os_sys_info
OPTION(RECOMPILE);
参考二:
http://www.cnblogs.com/Leo_wl/p/3155124.html
--【查看数据库用户信息】
SELECT *
FROM sysusers; --【查看最大工作线程数】
SELECT max_workers_count
FROM sys.dm_os_sys_info --【查看当前用户进程的会话ID】
SELECT @@SPID --【查询当前会话使用哪种协议】
SELECT net_transport
FROM sys.dm_exec_connections
WHERE session_id = @@SPID; --查看当前连接的会话信息
--进程号1--50是SQL Server系统内部用的
SELECT *
FROM sys.dm_exec_sessions
WHERE session_id >= --查看某台机器的连接会话信息
SELECT *
FROM sys.dm_exec_sessions
WHERE session_id >=
AND HOST_NAME = 'YSX' --查看某个登录名的连接会话信息
SELECT *
FROM sys.dm_exec_sessions
WHERE session_id >=
AND login_name = 'sa' --查看活动的连接会话信息
SELECT *
FROM sys.dm_exec_sessions WITH(NOWAIT)
WHERE session_id >=
AND STATUS = 'running' --查找连接到服务器的用户并返回每个用户的会话数
SELECT login_name,
COUNT(session_id) AS session_count
FROM sys.dm_exec_sessions
GROUP BY
login_name; --查看正在执行的SQL语句
--方法1
SELECT [Spid] = session_Id,
ecid,
[Database] = DB_NAME(sp.dbid),
[User] = nt_username,
[Status] = er.status,
[Wait] = wait_type,
[Individual Query] = SUBSTRING(
qt.text,
er.statement_start_offset / ,
(
CASE
WHEN er.statement_end_offset = - THEN LEN(CONVERT(NVARCHAR(MAX), qt.text))
*
ELSE er.statement_end_offset
END - er.statement_start_offset
) /
),
[Parent Query] = qt.text,
Program = 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 >= --方法2
SELECT m.session_id,
m.start_time,
m.command,
m.wait_type,
m.cpu_time,
CAST(s.text AS VARCHAR()) AS sqlText
FROM MASTER.sys.dm_exec_requests m WITH (NOLOCK)
CROSS APPLY fn_get_sql(m.sql_handle) s SELECT r.session_id,
r.start_time,
r.command,
r.wait_type,
r.cpu_time,
s.text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) s --【查看SQL SERVER进程执行的语句】
USE MASTER
DECLARE @spid INT; DECLARE @sql_handle BINARY(); SET @spid = SELECT @sql_handle = sql_handle
FROM sysprocesses AS A WITH (NOLOCK)
WHERE spid = @spid; SELECT TEXT
FROM ::fn_get_sql(@sql_handle); --【查看会话阻塞/死锁信息】
--方法1:查看那个引起阻塞,查看blk不为0的记录,如果存在阻塞进程,则是该阻塞进程的会话 ID。否则该列为零。
EXEC sp_who ACTIVE
--方法2:查看那个引起阻塞,查看字段BlkBy,这个能够得到比sp_who更多的信息。 EXEC sp_who2 ACTIVE --【查看内存状态】
DBCC memorystatus
查找一个表的主键包含哪些列? --可以根据需要,自行修改 where 字句中的 条件
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_NAME), 'ISPRIMARYKEY') = AND TABLE_SCHEMA='dbo' AND TABLE_NAME='EXPRESSION' 统计某个schema下有多少个表
--可以根据需要,修改where字句的条件,例如 表名满足一定的pattern :table_name like ‘ACCOUNT%’ SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='DBO' 统计包含某个字段名的所有表
SELECT TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME='<COLUMN_NAME>' 统计数据量比较大的表的条数
SELECT t.name, s.row_count from sys.tables t JOIN sys.dm_db_partition_stats s
ON t.object_id = s.object_id
AND t.type_desc = 'USER_TABLE'
AND s.index_id =
AND t.name ='<table_name>' 查找依赖于某个表的数据库对象(2008版本以上) --当我们要把某张表废弃掉,用这个方法可以找出所有受影响的对象
SELECT
referencing_schema_name, referencing_entity_name,
referencing_class_desc, is_caller_dependent
FROM sys.dm_sql_referencing_entities ('<TableName>', 'OBJECT') 查找某个存储过程依赖的数据库对象(2008版本以上)
SELECT
referenced_schema_name, referenced_entity_name, referenced_minor_name,
referenced_class_desc, is_caller_dependent, is_ambiguous
FROM sys.dm_sql_referenced_entities ('<StoredProcedureName>', 'OBJECT');
http://database.callback001.cn/sqlserver/62067507844201911225.html
http://database.callback001.cn/
http://www.dongcoder.com/s/1147/sql_2_server_2_2016
PowerDesigner生成sql及HTML格式数据库文档
http://www.bbsmax.com/A/kvJ3MWPAdg/
sql server 数据字典的妙用
--统计某个schema下有多少个表
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'DBO'; --查找一个表的主键包含哪些列
SELECT *
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_NAME), 'ISPRIMARYKEY') = 1
AND TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'jcms_normal_template'; --统计包含某个字段名的所有表
SELECT TABLE_CATALOG ,
TABLE_SCHEMA ,
TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'CreateUser'; --统计数据量比较大的表的条数
SELECT t.name ,
s.row_count
FROM sys.tables t
JOIN sys.dm_db_partition_stats s ON t.object_id = s.object_id
AND t.type_desc = 'USER_TABLE'
AND s.index_id = 1
AND t.name = 'Training_PlanCourserRelation';
MS SQL 日常维护管理常用脚本的更多相关文章
- MS SQL 日常维护管理常用脚本(二)
监控数据库运行 下面是整理.收集监控数据库运行的一些常用脚本,也是MS SQL 日常维护管理常用脚本(一)的续集,欢迎大家补充.提意见. 查看数据库登录名信息 Code Snippet SELEC ...
- 监控数据库运行 - MS SQL 日常维护管理常用脚本(二)
查看数据库登录名信息 use mastergoSELECT name AS LoginName , dbname AS DefaultDB , createdate AS CreateDate, up ...
- CentOS日常维护及常用脚本
[root@-.x.x xiewenming]# curl myip.ipip.net 当前 IP:42.62.x.x 来自于:中国 北京 北京 联通/电信 www.17ce.com cdn解析网站 ...
- oracle 容灾库日常维护 ,健康检查脚本 以及常见问题分析
select DEST_ID, APPLIED_SCN FROM v$archive_dest select * from v$dataguard_status; SELECT gvi.thread# ...
- MS SQL 事务日志管理小结
本文是对SQL Server事务日志的总结,文章有一些内容和知识来源于官方文档或一些技术博客,本文对引用部分的出处都有标注. 事务日志介绍 在SQL Server中,事务日志是数据库的重要组件,如 ...
- 日常维护管理-DBA运维交接清单
序号 交接内容 交接目标与要点 交接物 交接状态 交接开始时间 交接结束时间 负责人 备注 1 人事关系 与开发项目组成员互识,并了解其职责 开发项目组成员清单 2016/2/29 2016/2/29 ...
- SQL Server 监控统计阻塞脚本信息
数据库产生阻塞(Blocking)的本质原因 :SQL语句连续持有锁的时间过长 ,数目过多, 粒度过大.阻塞是事务隔离带来的副作用,它是不可避免的,而且是一个数据库系统常见的现象. 但是阻塞的 ...
- MapReduce On Yarn的配置详解和日常维护
MapReduce On Yarn的配置详解和日常维护 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MapReduce运维概述 MapReduce on YARN的运维主要是 ...
- sql server维护解决方案(备份、检查完整性、索引碎片整理)
请务必看原文 原文:https://ola.hallengren.com/frequently-asked-questions.html 经常问的问题 入门 如何开始使用SQL Server维护解决方 ...
随机推荐
- [转]115个Java面试题和答案——终极列表(下)
第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servle ...
- PHP温故知新(一)
前言 开发PHP也有几年的时间了,记得第一次接触PHP那时候还是PHP4,现在PHP版本已经是7了,虽然本人也算是一个PHP老手了,但是总觉得有些基础知识掌握的不是很好.学PHP之初只是为了混口饭吃, ...
- golang slice 切片原理
golang 中的 slice 非常强大,让数组操作非常方便高效.在开发中不定长度表示的数组全部都是 slice .但是很多同学对 slice 的模糊认识,造成认为golang中的数组是引用类型,结果 ...
- 用yum安装完mysql后没有mysqld的问题
在Centos中用命令 yum install mysql安装数据库,但装完后运行mysqld启动mysql的时候提示找不到,通过 find / | grep mysqld 也没找到mysqld的目录 ...
- java中关于volatile的理解疑问?
作者:xyzZ链接:https://www.zhihu.com/question/49656589/answer/117826278来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- Java 8:不要再用循环了 Stream替代for循环
原文:http://www.importnew.com/14841.html 在这篇文章里,我们将会去了解传统循环的一些替代方案.在Java 8的新功能特性中,最棒的特性就是允许我们去表达我们想要完成 ...
- 利用cca进行fmri分析
在肖柯的硕士毕业论文中<基于CCA的fMRI时空模型数据处理方法的研究>,他的总体思路是利用cca提取出fmri图像在时间和空间上两个相关系数,也就是两个特征,然后利用pca,对这两个特征 ...
- Clone()方法C#
class DrawBase:System.Object , ICloneable { public string name = "jmj"; public DrawBase() ...
- 通过JSONP实现完美跨域
通过JSONP实现完美跨域 三水清 2010-06-11 20:17:47 以前我经常在博客说JSONP,例如我的WordPress天气插件就是通过JSONP来调用的天气数据,今天就说说通过JSONP ...
- 深入分析JavaWeb Item40 -- 文件上传和下载
在Web应用系统开发中,文件上传和下载功能是很经常使用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传.浏览器在上传的过程中是将文件以流的形式提交到server端的.假设 ...