zoukankan      html  css  js  c++  java
  • DAC 连接数据库需要做些什么

    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
  • 相关阅读:
    mysql索引失效的N种情况
    JDK,JRE,JVM的区别
    mysql排名函数解析
    mysql经典50道基础练习题(附加答案)
    常用SQL
    Application.DoEvents()
    【转】mapreduce中的全局文件使用方法:以k-means为例
    【转】MapReduce中的Combiner 和 in-Mapper Combining
    Linux 下安装hadoop,伪分布模式配置
    VS2010中配置 CUDA5.5
  • 原文地址:https://www.cnblogs.com/Amaranthus/p/2000975.html
Copyright © 2011-2022 走看看