Kiểm tra SQL Server bằng Windows PowerShell – Phần 1

Muthusamy

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ử dụng nó lần đầu tiên. Nếu bạn gặp phải thông báo lỗi dưới đây như thể hiện trong hình 1.7, hãy thực thi lệnh để kích hoạt sự thực thi kịch bản không bị hạn chế của PowerShell.


Hình 1.7: Lỗi trong quá trình thực thi kịch bản PowerShell

set-executionpolicy unrestricted

Lưu ý: Bạn không phải thực thi lệnh trên nhiều lần mà chỉ thực thi một lần.
Bạn có thể kiểm tra chính sách thực thi của cấu hình PowerShell hiện hành bằng cách thực thi lệnh dưới đây (xem thể hiện trong hình 1.8)

get-executionpolicy


Hình 1.8: Chính sách thực thi

Kết luận

Đây là phần đầu tiên của loạt bài này. Phần đầu tiên này đã giới thiệu được cho các bạn về cách tạo một kịch bản PowerShell để ping đến một máy chủ. Trong đó nó cũng giới thiệu cách sử dụng nguồn hàm PowerShell và cách gọi hàm. Trong các phần sau của loạt bài này, chúng tôi sẽ tiếp tục đi sâu hơn nữa về các tính năng khác của Windows PowerShell trong việc kiểmt ra trạng thái của SQL Server.

Thứ Năm, 20/09/2018 09:21
52 👨 11.350
0 Bình luận
Sắp xếp theo
    ❖ SQL Server