我們有一臺舊的SQL Server 2000機器,其中一堆作業在一夜之間運行。偶爾,執行服務器維護並重新啓動計算機後,某些SQL組件不會提供操作系統(即使它們已配置爲這樣)。因此,在我們的夜間工作應該運行之前,我想(從遠程計算機)運行一些檢查來查看SQL Server,SQL Server代理和SQL Server OLAP服務是否正在運行。我發現了一些看起來應該起作用的東西,但我想知道這個社區的專家是否可以評論每種方法的可靠性。我可以將此應用程序編碼爲通過Windows計劃任務運行的.vbs文件或創建C#Windows服務。查看SQL Server 2000進程是否正在運行的最佳方法?
候選人1: 執行查詢對master..sysprocesses,並期待在program_name列,因爲我希望找到相應的處理。
候選2: 執行查詢針對master..xpcmd_shell像這樣:
exec master..xp_cmdshell 'sc \\hostname query SQLServerAgent'
然後尋找 'STATE:4 RUNNING' 在結果
候選3: 使用.NET Framework,搜索此過程: Check if a process is running on a remote system using C#
這是真的只需要每天運行一次,如果任何應該運行的進程都沒有發送電子郵件警報。
這個想法是,如果我不能連接到SQL數據庫可言,它假定SQL Server未運行,因此SQLAgent也沒有運行。所以我發出電子郵件警報。如果我可以連接到SQL數據庫,則運行此存儲過程並檢查SQLAgent和MSSAS記錄是否都返回。如果沒有,我會發送一封電子郵件提醒您有哪些遺漏。 – jamauss 2010-03-31 17:59:09