Kiểm tra SQL Server bằng Windows PowerShell – Phần 1
Ngu
ồn : quantrimang.com
Muthusam
y
Quản trị mạng - Loạt bài này chúng tôi sẽ giới thiệu cho các bạn về các phương
pháp và các thủ tục để kiểm tra trạng thái hiện hành của hệ điều hành, các
trường hợp của SQL Server và cơ sở dữ liệu,… bằng Windows PowerShell.
Thay vì sử dụng Vbscript, các file bat, hay các thực thi sql client,… chúng tôi sẽ
giới thiệu cho các bạn về sức mạnh bên của Windows PowerShell trong vấn đề
kiểm tra trạng thái của SQL Servers.
Các điều kiện tiên quyết
•
Cài đặt .Net 2.0
•
Trên máy khách, bạn cần cài đặt Windows PowerShell 1.0.
•
Đăng nhập của bạn cần có quyền tạo các thư mục và file trong máy
khách.
Trước khi đi vào kiểm tra thực SQL Server, chúng tôi muốn giới thiệu một chút
nền tảng và xây dựng các thư mục, thư viện,…
Phần cuối của loạt bài này, sẽ có một thư viện Powershell với nhiều hàm được
dùng làm nguồn cho bất kỳ kịch bản PowerShell nào. Một , nhiều hoặc tất cả các
hàm này đều có thể đượ
c gọi từ bất kỳ kịch bản PowerShell nào khi thư viện
được dùng làm nguồn.
Bước 1
Khởi chạy Windows PowerShell bằng cách thực thi lệnh bên dưới (Hình 1.0)
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
Hình 1.0: Khởi chạy PowerShell
Bước 2
Hãy tạo một thư mục bằng cách sử dụng lệnh PowerShell bên dưới. Thư mục
này sẽ được dùng chuyên dụng cho các kịch bản, các thư viện và các hàm của
PowerShell có liên quan đến việc kiểm tra SQL Server. Thực thi lệnh được cho
bên dưới (xem hình 1.1)
New-Item -Path C:\ -Name CheckSQLServer -Type directory
Bạn có thể thấy kết quả của việc thực hiện lệnh bên dưới. Về cơ bản, thư mục
CheckSQLServer đã được tạo thành công.
Hình 1.1 Tạo thư mục mới
Bước 3
Hãy điều hướng đến thư mục CheckSQLServer và sau đó tạo các file khác bằng
lệnh PowerShell sau (xem trong hình 1.3)
set-location C:\CheckSQLServer
Notepad CheckSQL_Lib.ps1
Notepad CheckSQLServer.ps1
Notepad Pinghost.ps1
Bạn có thể thấy rằng vị trí được thay đổi thành C:\CheckSQLServer và cũng đã
mở ba cửa sổ notepad để có thể soạn thảo các file CheckSQL_Lib.sql,
CheckSQLServer.Ps1 và PingHost.ps1.
Hình 1.2: Tạo kịch bản và thư vịện PowerShell
Lưu ý: Notepad là một trình soạn thảo mà chúng tôi sử dụng cho việc soạn thảo
các kịch bản PowerShell. Bạn hòan toàn có thể tùy chọn các trình soạn thảo
khác ưa thích đối với cá nhân bạn.
Bước 4
Đánh hoặc copy/paste đ
oạn mã sau vào trình soạn thảo notepad đã mở
PingHost.ps1 như dưới đây (xem hình 1.3)
Function Pinghost ([string] $Hostname )
{
$status=get-wmiobject win32_pingstatus -Filter "Address='$Hostname'" | Select-
Object statuscode
if($status.statuscode -eq 0)
{write-host $Hostname is REACHABLE -background "GREEN" -foreground
"BLACk"}
else
{write-host $Hostname is NOT reachable -background "RED" -foreground
"BLACk"}
}
Hình 1.3: File kịch bản PingHost.ps1
Lưu file Pinghost.ps1 và thoát khỏi notepad.
Bước 5
Đánh hoặc copy/paste đoạn mã sau vào trình soạn thảo notepad đã mở
CheckSQL_Lib.ps1 như dưới đây (xem hình 1.4)
#Source all the functions relate to CheckSQL
. ./PingHost.ps1
Hình 1.4: CheckSQL_Lib.ps1
Lưu file CheckSQL_Lib.ps1 và thoát khỏi notepad.
Lưu ý: CheckSQL_Lib.ps1 này sẽ được cập nhật với nguồn của các kịch bản
mới như PingHost.PS1
Về cơ bản nguồn sẽ load các hàm được liệt kê trong file kịch bản và làm cho nó
hiện hữu trong toàn bộ session c
ủa PowerShell.
Bước 6
Đánh hoặc copy/paste đoạn mã sau vào trình soạn thảo notepad đã mở
CheckSQLServer.ps1 như dưới đây (xem hình 1.5)
#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
PingHost $Hostname
Hình 1.5: CheckSQLServer.ps1
Lưu file CheckSQLServer.ps1 và thoát khỏi notepad
Lưu ý: File CheckSQLServer.ps1 này sẽ được cập nhật các điều kiện mới và
các tham số trong các phần sau của loạt bài này.
Nguồn sẽ 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 toàn bộ session PowerShell. Trong trường hợp này, chúng tôi sẽ lấy nguồn
một kịch bản có sử dụng nhiều nguồn từ các kịch bản khác.
Bước 7
Thực thi CheckSQLServer.ps1 như
dưới đây (xem hình 1.6)
./CheckSQLServer.ps1 PowerMachine
./CheckSQLServer.ps1 TestServer
Chúng ta sẽ thấy các kết quả, dựa vào đó bạn sẽ biết được máy tính đó có khả
năng ping hay không. Nếu máy đó có thể thăm dò bằng cách ping, thì thông báo
sẽ được đánh dấu màu xanh còn không sẽ được đánh dấu màu đỏ.
Hình 1.6: Ping máy chủ
Mặc định, các kịch bản PowerShell không thể được thực thi trên máy nếu bạn sử