Xem mẫu

  1. Ki m tra SQL Server b ng Windows PowerShell – Ph n 2 Ph n 1 c a lo t bài này chúng tôi ã gi i thi u cho các b n cách ping n host, ó chính là ki m tra u tiên trên SQL Server. Ki m tra quan tr ng th hai m c h i u hành là xem xem t t c các d ch v Windows có liên quan n SQL Server trên host hi n có ang ho t ng hay không và báo cáo v tr ng thái c a h th ng. Ph n 2 này s gi i thi u cho các b n cách truy c p vào d ch v Windows trên máy t xa b ng cách s d ng Windows PowerShell và WMI-Object. B c1 ánh ho c copy và paste o n mã d i ây vào file C:\CheckSQLServer\CheckServices.ps1. # Function to check windows services related to SQL Server Function checkservices ([string] $Hostname ) { $Services=get-wmiobject -class win32_service -computername $hostname| where {$_.name -like '*SQL*'}| select-object Name,state,status,Started,Startname,Description foreach ( $service in $Services) { if($service.state -ne "Running" -or $service.status -ne "OK" -or $service.started -ne "True" ) { $message="Host="+$Hostname+" " +$Service.Name +" "" +$Service.state +" +$Service.status +" " +$Service.Started +" " +$Service.Startname write-host $message -background "RED" -foreground "BLACk" } else { $message="Host="+$Hostname+" " +$Service.Name +" " +$Service.state +" " +$Service.status +" " +$Service.Started +" " +$Service.Startname write-host $message -background "GREEN" -foreground "BLACk" } } }
  2. B c2 B sung thêm vào file C:\CheckSQLServer\CheckSQL_Lib.ps1 o n mã d i ây: . ./checkservices.ps1 Lúc này C:\CheckSQLServer\CheckSQL_Lib.ps1 s có c pinghost và d ch v ki m tra (checkservices) nh th hi n bên d i. #Source all the functions relate to CheckSQL . ./PingHost.ps1 . ./checkservices.ps1 L u ý: File CheckSQL_Lib.ps1 này s c c p nh t ngu n c a các k ch b n b n m i gi ng nh checkservices.PS1 B c3 G n vào file C:\CheckSQLServer\CheckSQLServer.ps1 b ng cách copy và paste o n mã d i ây. checkservices $Hostname Lúc này file C:\CheckSQLServer\CheckSQLServer.ps1 s có c pinghost và checkservices nh th hi n bên d i. Chúng ta ã thêm vào m t s tuyên b hi n toàn b quá trình. #Objective: To check various status of SQL Server #Host, instances and databases. #Author: MAK #Date Written: June 5, 2008 param ( [string] $Hostname ) . ./CheckSQL_Lib.ps1 Write-host "Checking SQL Server....." Write-host "........................" Write-host " " Write-host "Arguments accepted : $Hostname" write-host "........................" Write-host "Pinging the host machine" write-host "........................" PingHost $Hostname Write-host "Checking windows services on the host related to SQL Server" write-host "..........................................................." checkservices $Hostname
  3. L u ý: CheckSQLServer.ps1 này s c c p nh t các i u ki n m i và c ng nh các tham s trong các cài t sau c a lo t bài này. Ngu n d n c b n load các ch c n ng c li t kê trong file k ch b n và làm cho nó hi n h u trong toàn b PowerShell session. Trong tr ng h p này, chúng ta ang d n ngu n cho m t k ch b n. B c4 Hãy th!c thi k ch b n CheckSQLServer.ps1 b ng vi c chuy n host “Powerpc” nh m t is , xem th hi n bên d i. ./CheckSQLServer.ps1 PowerPC B n s có c các k"t qu nh th hi n bên d i (xem hình 1.0) Checking SQL Server..... ........................ Arguments accepted : PowerPC ........................ Pinging the host machine ........................ PowerPC is REACHABLE Checking windows services on the host related to SQL Server ........................................................... Host=PowerPC msftesql$SQL2008 Stopped OK False .\mak Host=PowerPC MSSQL$NY0QD1 Running OK True .\mak Host=PowerPC MSSQL$SQL2008 Stopped OK False .\mak Host=PowerPC MSSQLServerADHelper100 Stopped OK False NT AUTHORITY\NETWORK SERVICE Host=PowerPC SQLAgent$NY0QD1 Stopped OK False .\mak Host=PowerPC SQLAgent$SQL2008 Stopped OK False .\mak Host=PowerPC SQLBrowser Stopped OK False NT AUTHORITY\LOCAL SERVICE Host=PowerPC SQLWriter Running OK True LocalSystem
  4. Hình 1.0 T k"t qu b n có th th#y c r ng b#t k$ SQL Server nào có liên quan t i d ch v u không c kh%i t o ho c c ánh d#u tr ng thái “OK” màu & và t#t c các d ch v liên quan "n SQL Server ang ho t ng c ánh d#u màu xanh. B c5 Chúng ta hãy th!c thi k ch b n trên máy tính không t n t i nh th hi n bên d i. ./CheckSQLServer.ps1 TestMachine Khi ó b n s nh n c k"t qu nh th hi n d i ây (xem hình 1.1) K t qu Checking SQL Server..... ........................ Arguments accepted : TestMachine ........................ Pinging the host machine ........................ TestMachine is NOT reachable Checking windows services on the host related to SQL Server ........................................................... Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA) At C:\checksqlserver\checkservices.ps1:5 char:24 + $Services=get-wmiobject
  5. Hình 1.1 N"u b n b t g p l'i “Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)” thì nguyên nhân có th là m t s lý do d i ây: • Host không hi n h u (ví d : b c 5) • T ng l a khóa ch n tính n ng qu n tr t xa N"u b n mu n vô hi u hóa t ng l a, hãy th!c thi l nh d i ây t i nh c l nh: netsh.exe firewall set service type=REMOTEADMIN mode=ENABLE scope=ALL N"u mu n gi các thi"t l p t ng l a và ch( cho phép các c ng c yêu c u i v i qu n tr t xa, hãy th!c thi o n mã d i ây: netsh firewall add portopening protocol=tcp port=135 name=DCOM_TCP135 • D ch v Windows Management Instrumentation không ho t ng Thi"t l p d ch v WMI ch y t! ng và sau ó kh%i t o d ch v • Add ng i dùng hi n hành vào DCOM users. K t lu n Ph n th hai này chúng ta ã c gi i thi u v cách truy c p d ch v Windows Service trên máy t xa b ng Windows PowerShell và WMI-Object. Trong ph n ti"p theo c a lo t bài, chúng tôi s b sung thêm các ki m tra khác chúng ta không ph i th!c hi n t#t c các ki m tra n"u ping b th#t b i. Thêm vào ó chúng tôi s gi i thi u cách capture m t s thông tin ph n c ng và h i u hành.