DAC 连接数据库需要做些什么

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:

Below is what is collected

  • Shows SQL Servers information
  • Shows top 5 high cpu used statemants
  • Shows who so logged in
  • Shows long running cursors
  • Shows idle sessions that have open transactions
  • Shows free space in tempdb database
  • Shows total disk allocated to tempdb database
  • Show active jobs
  • Shows clients connected
  • Shows running batch
  • Shows currently blocked requests
  • Shows last backup dates
  • Shows jobs that are still executing
  • Shows failed MS SQL jobs report
  • Shows disabled jobs
  • Shows avail free DB space
  • Shows total DB size (.MDF+.LDF)
  • Show hard drive space available
复制代码

  
  
USE master
GO

-- This stored procedure will give you infomation on the SQL server in question.-- Connect with DAC and then execute this stored procedure located in the master database

CREATE PROC sp_dba_DAC
AS
SELECT ' *** Start of DAC Report *** '

SELECT ' -- Shows SQL Servers information '
EXEC ( ' USE MASTER ' )
SELECT CONVERT ( CHAR ( 20 ), SERVERPROPERTY( ' MachineName ' )) AS ' MACHINE NAME '
,
CONVERT ( CHAR ( 20 ), SERVERPROPERTY( ' ServerName ' )) AS ' SQL SERVER NAME '
,(
CASE WHEN CONVERT ( CHAR ( 20 ), SERVERPROPERTY( ' InstanceName ' )) IS NULL
THEN ' Default Instance '
ELSE CONVERT ( CHAR ( 20 ), SERVERPROPERTY( ' InstanceName ' ))
END ) AS ' INSTANCE NAME '
,
CONVERT ( CHAR ( 20 ), SERVERPROPERTY( ' EDITION ' )) AS EDITION
,
CONVERT ( CHAR ( 20 ), SERVERPROPERTY( ' ProductVersion ' )) AS ' PRODUCT VERSION '
,
CONVERT ( CHAR ( 20 ), SERVERPROPERTY( ' ProductLevel ' )) AS ' PRODUCT LEVL '
,(
CASE WHEN CONVERT ( CHAR ( 20 ), SERVERPROPERTY( ' ISClustered ' )) = 1
THEN ' Clustered '
WHEN CONVERT ( CHAR ( 20 ), SERVERPROPERTY( ' ISClustered ' )) = 0
THEN ' NOT Clustered '
ELSE ' INVALID INPUT/ERROR '
END ) AS ' FAILOVER CLUSTERED '
,(
CASE WHEN CONVERT ( CHAR ( 20 ), SERVERPROPERTY( ' ISIntegratedSecurityOnly ' )) = 1
THEN ' Integrated Security '
WHEN CONVERT ( CHAR ( 20 ), SERVERPROPERTY( ' ISIntegratedSecurityOnly ' )) = 0
THEN ' SQL Server Security '
ELSE ' INVALID INPUT/ERROR '
END ) AS ' SECURITY '
,(
CASE WHEN CONVERT ( CHAR ( 20 ), SERVERPROPERTY( ' ISSingleUser ' )) = 1
THEN ' Single User '
WHEN CONVERT ( CHAR ( 20 ), SERVERPROPERTY( ' ISSingleUser ' )) = 0
THEN ' Multi User '
ELSE ' INVALID INPUT/ERROR '
END ) AS ' USER MODE '
,
CONVERT ( CHAR ( 30 ), SERVERPROPERTY( ' COLLATION ' )) AS COLLATION



SELECT ' -- Shows top 5 high cpu used statemants '
SELECT TOP 5
total_worker_time
/ execution_count AS [ Avg CPU Time ]
,
SUBSTRING (st. text , ( qs.statement_start_offset / 2 ) + 1 ,
( (
CASE qs.statement_end_offset
WHEN - 1 THEN DATALENGTH (st. text )
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2 ) + 1 ) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY total_worker_time / execution_count DESC ;



SELECT ' -- Shows who so logged in '
SELECT login_name
,
COUNT (session_id) AS session_count
FROM sys.dm_exec_sessions
GROUP BY login_name ;



SELECT ' -- Shows long running cursors '
EXEC ( ' USE master ' )

SELECT creation_time
,cursor_id
,name
,c.session_id
,login_name
FROM sys.dm_exec_cursors ( 0 ) AS c
JOIN sys.dm_exec_sessions AS s ON c.session_id = s.session_id
WHERE DATEDIFF (mi, c.creation_time, GETDATE ()) > 5 ;

SELECT ' -- Shows idle sessions that have open transactions '
SELECT s. *
FROM sys.dm_exec_sessions AS s
WHERE EXISTS ( SELECT *
FROM sys.dm_tran_session_transactions AS t
WHERE t.session_id = s.session_id )
AND NOT EXISTS ( SELECT *
FROM sys.dm_exec_requests AS r
WHERE r.session_id = s.session_id ) ;

SELECT ' -- Shows free space in tempdb database '
SELECT SUM (unallocated_extent_page_count) AS [ free pages ]
,(
SUM (unallocated_extent_page_count) * 1.0 / 128 ) AS [ free space in MB ]
FROM sys.dm_db_file_space_usage ;



SELECT ' -- Shows total disk allocated to tempdb database '
SELECT SUM (size) * 1.0 / 128 AS [ size in MB ]
FROM tempdb.sys.database_files

SELECT ' -- Show active jobs '
SELECT DB_NAME (database_id) AS [ Database ]
,
COUNT ( * ) AS [ Active Async Jobs ]
FROM sys.dm_exec_background_job_queue
WHERE in_progress = 1
GROUP BY database_id ;



SELECT ' --Shows clients connected '
SELECT session_id
,client_net_address
,client_tcp_port
FROM sys.dm_exec_connections ;

SELECT ' --Shows running batch '
SELECT *
FROM sys.dm_exec_requests ;



SELECT ' --Shows currently blocked requests '
SELECT session_id
,status
,blocking_session_id
,wait_type
,wait_time
,wait_resource
,transaction_id
FROM sys.dm_exec_requests
WHERE status = N ' suspended '



SELECT ' --Shows last backup dates ' AS ' '
SELECT B.name AS Database_Name
,
ISNULL ( STR ( ABS ( DATEDIFF ( day , GETDATE (), MAX (Backup_finish_date)))),
' NEVER ' ) AS DaysSinceLastBackup
,
ISNULL ( CONVERT ( CHAR ( 10 ), MAX (backup_finish_date), 101 ), ' NEVER ' ) AS LastBackupDate
FROM master.dbo.sysdatabases B
LEFT OUTER JOIN msdb.dbo.backupset A ON A.database_name = B.name
AND A.type = ' D '
GROUP BY B.Name
ORDER BY B.name

SELECT ' --Shows jobs that are still executing ' AS ' '
EXEC msdb.dbo.sp_get_composite_job_info NULL , NULL , NULL , NULL , NULL , NULL ,
1 , NULL , NULL

SELECT ' --Shows failed MS SQL jobs report ' AS ' '
SELECT name
FROM msdb.dbo.sysjobs A
,msdb.dbo.sysjobservers B
WHERE A.job_id = B.job_id
AND B.last_run_outcome = 0

SELECT ' --Shows disabled jobs ' AS ' '
SELECT name
FROM msdb.dbo.sysjobs
WHERE enabled = 0
ORDER BY name

SELECT ' --Shows avail free DB space ' AS ' '
EXEC sp_MSForEachDB ' Use ? SELECT name AS '' Name of File '' , size/128.0 -CAST(FILEPROPERTY(name, '' SpaceUsed '' ) AS int)/128.0 AS '' Available Space In MB '' FROM .SYSFILES '

SELECT ' --Shows total DB size (.MDF+.LDF) ' AS ' '
SET nocount ON
DECLARE @name SYSNAME
DECLARE @SQL NVARCHAR ( 600 ) -- Use temporary table to sum up database size w/o using group by
CREATE TABLE #databases
(
DATABASE_NAME SYSNAME
NOT NULL
,size
INT NOT NULL
)
DECLARE c1 CURSOR FOR SELECT name FROM master.dbo.sysdatabases
-- where has_dbaccess(name) = 1
-- Only look at databases to which we have access
OPEN c1
FETCH c1 INTO @name

WHILE @@fetch_status >= 0
BEGIN
SELECT @SQL = ' insert into #databases select N ''' + @name
+ ''' , sum(size) from ' + QUOTENAME ( @name )
+ ' .dbo.sysfiles ' -- Insert row for each database
EXECUTE ( @SQL )
FETCH c1 INTO @name
END
DEALLOCATE c1

SELECT DATABASE_NAME
,DATABASE_SIZE_MB
= size * 8 / 1000 -- Convert from 8192 byte pages to K and then convert to MB
FROM #databases
ORDER BY 1

SELECT SUM (size * 8 / 1000 ) AS ' --Shows disk space used - ALL DBs - MB '
FROM #databases ;

DROP TABLE #databases ;

SELECT ' --Show hard drive space available ' AS ' ' ;
EXEC master..xp_fixeddrives ;
SELECT ' *** End of Report **** ' ;

GO
复制代码
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
3天前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
44 25
|
11天前
|
关系型数据库 MySQL 数据库连接
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
|
25天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
30天前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
55 2
|
3月前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
3月前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
3月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
3月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
3月前
|
数据库 C# 开发者
ADO.NET连接到南大通用GBase 8s数据库
ADO.NET连接到南大通用GBase 8s数据库
|
3月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
81 1

热门文章

最新文章