Kiểm traSQLServer bằng WindowsPowerShell–Phần1 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ểmtra trạng thái hiện hành của hệ điều hành, các trường hợp của SQLServer và cơ sở dữ liệu,… bằngWindows 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 WindowsPowerShell trong vấn đề kiểmtra 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 WindowsPowerShell 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ểmtra 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 WindowsPowerShellbằ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 traSQL 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 SQLServer #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ểmtra 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 WindowsPowerShell trong việc kiểmt ra trạng thái của SQL Server. . Kiểm tra SQL Server bằng Windows PowerShell – Phần 1 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. 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