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ước 1
Đá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"
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
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ước 4
Hãy thực thi kịch bản CheckSQLServer.ps1 bằng việc chuyển host “Powerpc” như một đối số,
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
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 <<<< -class win32_service -computername $hostname| where
{$_.name -like '*SQL*'}| select-obj
ect Name,state,status,Started,Startname,Description
Host=TestMachine
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