星期五, 5月 23, 2014

[SQL] SQL Server 啟動時間

記錄查詢 SQL Server 啟動時間的方法:

1. SQL Server 2005 以上版本,利用 TempDB 建立時間來判斷
SELECT 
    [create_date]
FROM [sys].[databasees]
WHERE [database_id] = 2
2. SQL Server 2008 以上版本,利用 sys.dm_os_sys_info
SELECT 
    [sqlserver_start_time]
FROM [sys].[dm_os_sys_info]
3. SQL Server 2012 以上版本,利用 sys.dm_server_services
SELECT
	ServiceName ,
	Last_Startup_Time
FROM sys.dm_server_services
4. SSMS 報表 - 伺服器儀錶板




5. 利用 sp_procoption 搭配 Database Mail 來偵測 SQL Server 啟動時間,詳見 [SQL] sp_procoption
-- Step 1:預存程序只能存在於 master 資料庫 
USE master
GO
 
-- Step 2:判斷欲建立的預存程序是否存在,存在的話則刪除預存程序
IF OBJECT_ID('[dbo].[uspSQLStart]') IS NOT NULL
  DROP PROC [dbo].[uspSQLStart]
 
-- Step 3:預存程序利用 msdb.dbo.sp_send_dbmail 來發信,當然前提是 Database Mail 已經設定好
CREATE PROC [dbo].[uspSQLStart]
AS
  DECLARE @Text varchar(512)
   
  SET @Text = 'The SQL Server [' + @@SERVERNAME + '].[' + @@SERVICENAME + '] ' +
              'restart at ' + CONVERT(char(19),GETDATE(),120) + '.'
   
  EXEC msdb.dbo.sp_send_dbmail
      @profile_name = 'Database Mail Profile' ,
      @recipients = '收件者Email' ,
      @subject = 'SQL Server 通知 - SQL Server 執行個體已經啟動' ,
      @body = @Text ,
      @body_format = 'TEXT'
GO
   
-- Step 4:最後利用 sp_procoption 把預存程序設為自動執行
EXEC sp_procoption N'uspSQLStart' , 'startup' , 'on'
GO
 
-- Step 5:重新啟動 SQL Server instance 就可以收到 Email 通知囉

沒有留言:

張貼留言