Trang chủĐăng kýĐăng nhập Cộng đồng tin học
Thứ 6, 2024-05-03, 3:14 PM
Khung đăng nhập

Khung tán gẫu
Xóm 'bà Tám'

http://congdongtinhoc.net
CHUYÊN TRANG GAME ONLINE GIẢI TRÍ//lehung-system.ucoz.net/stuff/

Thống kê diễn đàn
Bài viết mới nhất Trang chủ cập nhật Top 10 thành viên tích cực 10 Thành viên mới nhất
  • Quạt Hướng Trục
  • vào ucoz.com thiết kế web không hiểu sao...
  • Sothink DHTMLMenu 9.2 Build 90326
  • cho em quảng cáo cái
  • BIDV triển khai gói 10.000 tỷ đồng cho v...
  • Phượng Đã Nở Ngoài Hiên
  • Ngựa Ô Thương Nhớ
  • Những mẩu chuyện vui
  • 1001 cách biến "sim rác" thành...
  • Windows XP Media Center Edition 2008 - S...
  • Hướng dẫn chỉnh sửa dữ liệu trong form m...
  • 15 điều người dùng máy tính nên biết
  • Choáng vì "sâu" mới phát tán qua email
  • Giấu bớt những thành phần Control Panel ...
  • Thảo luận về IFrame Injection Attacks
  • Miễn phí bản quyền Ashampoo Anti-Malware...
  • Trải nghiệm với Camtasia Studio 7
  • 10 kỹ năng IT ‘hot’ của năm 2011
  • Intel công bố bộ vi xử lý Hệ thống trên ...
  • Kho phần mềm dành cho Android
  • Hung@info
  • thangbom
  • Hung@webmater
  • hebeo
  • giodaingan
  • david15
  • whitecat
  • luutruthongtin
  • systemfan_12
  • sha66b5cates0428
  • amir2x4
  • taiwindows075
  • kholuutru
  • shahmeerolivedigital9
  • ysg06363100
  • hetoxe6474
  • rootanalysisusa
  • memory_gift
  • systemfan_12
  • quatcongnghiep_saigon


  • [ Tổng hợp bài mới · Tổng số thành viên · Nội qui chung · Tìm kiếm bài viết · RSS ]
    • Page 1 of 1
    • 1
    Diễn đàn » Lập Trình » DATABASE » Kiểm tra SQL Server bằng Windows PowerShell (Databasejournal)
    Kiểm tra SQL Server bằng Windows PowerShell
    Hung@infoDate: Thứ 2, 2009-05-25, 2:35 PM | Bài viết # 1
    Trung úy
    Nhóm: Quản trị viên
    Bài viết: 994
    Uy tín: 10
    Hiện tại: Offline
    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 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.


    --== Cộng đồng tin học ==--
     
    Hung@infoDate: Thứ 2, 2009-05-25, 2:44 PM | Bài viết # 2
    Trung úy
    Nhóm: Quản trị viên
    Bài viết: 994
    Uy tín: 10
    Hiện tại: Offline
    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
    http://www.databasejournal.com/img/return.gif-computername $hostname|
    http://www.databasejournal.com/img/return.gifwhere {$_.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"
    http://www.databasejournal.com/img/return.gif-or $service.started -ne "True" )
    {
    $message="Host="+$Hostname+" " +$Service.Name +"
    http://www.databasejournal.com/img/return.gif "" +$Service.state +" +$Service.status +"
    http://www.databasejournal.com/img/return.gif " +$Service.Started +" " +$Service.Startname
    write-host $message -background "RED" -foreground "BLACk"
    }
    else
    {
    $message="Host="+$Hostname+" " +$Service.Name +"
    http://www.databasejournal.com/img/return.gif " +$Service.state +" " +$Service.status +"
    http://www.databasejournal.com/img/return.gif " +$Service.Started +" " +$Service.Startname
    write-host $message -background "GREEN" -foreground "BLACk"
    }
    }
    }

    Bước 2

    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ước 3

    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

    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
    ........................
    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


    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ước 5

    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 <<<< -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 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.


    --== Cộng đồng tin học ==--
     
    Hung@infoDate: Thứ 2, 2009-05-25, 2:53 PM | Bài viết # 3
    Trung úy
    Nhóm: Quản trị viên
    Bài viết: 994
    Uy tín: 10
    Hiện tại: Offline
    Kiểm tra SQL Server bằng Windows PowerShell – Phần 3

    Phần 1 của loạt bài này đã giới thiệu cho các bạn kiểm tra đầu tiên về SQL Server—cách ping một host.
    Trong phần 2 là giới thiệu về cách kiểm tra tất cả các dịch vụ của Windows có liên quan với SQL Server.
    Trong phần 3 này chúng tôi sẽ giới thiệu về cách tìm một số thông tin về phần cứng và hệ điều hành từ máy host.

    Bước 1

    Đánh hoặc Copy và paste đoạn mã bên dưới vào file C:\CheckSQLServer\Checkhardware.ps1.

    #Function to check Hardware information from a host
    Function checkhardware([string] $Hostname )
    {
    $computer=get-wmiobject -class win32_computersystem -computername
    $hostname -errorvariable errorvar
    $errorvar.size
    if (-not $errorvar)
    {
    $message="Host="+$Hostname
    write-host $message -background "GREEN" -foreground "BLACk"
    $message="Description=" +$computer.Description
    write-host $message -background "GREEN" -foreground "BLACk"
    $message="NumberOfLogicalProcessors="+
    $computer.NumberOfLogicalProcessors
    write-host $message -background "GREEN" -foreground "BLACk"
    $message="NumberOfProcessors="+ $computer.NumberOfProcessors
    write-host $message -background "GREEN" -foreground "BLACk"
    $message="TotalPhysicalMemory=" +$computer.TotalPhysicalMemory
    write-host $message -background "GREEN" -foreground "BLACk"
    $message="Model=" +$computer.Model
    write-host $message -background "GREEN" -foreground "BLACk"
    $message="Manufacturer=" +$computer.Manufacturer
    write-host $message -background "GREEN" -foreground "BLACk"
    $message="PartOfDomain="+ $computer.PartOfDomain
    write-host $message -background "GREEN" -foreground "BLACk"
    $message="CurrentTimeZone=" +$computer.CurrentTimeZone
    write-host $message -background "GREEN" -foreground "BLACk"
    $message="DaylightInEffect="+$computer.DaylightInEffect
    write-host $message -background "GREEN" -foreground "BLACk"
    }
    }

    Bước 2

    Đánh hoặc Copy và paste đoạn mã bên dưới vào file C:\CheckSQLServer\CheckOS.ps1.

    #Function to check the OS information on the host machine
    Function checkOS([string] $Hostname )
    {
    $os=get-wmiobject -class win32_operatingsystem -computername $hostname -errorvariable errorvar
    if (-not $errorvar)
    {
    $message= "OSArchitecture="+$os.OSArchitecture
    write-host $message -background "GREEN" -foreground "BLACk"
    $message= "OSLanguage="+$os.OSLanguage
    write-host $message -background "GREEN" -foreground "BLACk"
    $message= "OSProductSuite="+$os.OSProductSuite
    write-host $message -background "GREEN" -foreground "BLACk"
    $message= "OSType="+$os.OSType
    write-host $message -background "GREEN" -foreground "BLACk"
    $message= "BuildNumber="+$os.BuildNumber
    write-host $message -background "GREEN" -foreground "BLACk"
    $message= "BuildType="+$os.BuildType
    write-host $message -background "GREEN" -foreground "BLACk"
    $message= "Version="+$os.Version
    write-host $message -background "GREEN" -foreground "BLACk"
    $message= "WindowsDirectory="+$os.WindowsDirectory
    write-host $message -background "GREEN" -foreground "BLACk"
    $message= "PlusVersionNumber="+$os.PlusVersionNumber
    write-host $message -background "GREEN" -foreground "BLACk"
    $message= "FreePhysicalMemory="+$os.FreePhysicalMemory
    write-host $message -background "GREEN" -foreground "BLACk"
    $message= "FreeSpaceInPagingFiles="+$os.FreeSpaceInPagingFiles
    write-host $message -background "GREEN" -foreground "BLACk"
    $message= "FreeVirtualMemory="+$os.FreeVirtualMemory
    write-host $message -background "GREEN" -foreground "BLACk"
    $message= "PAEEnabled="+$os.PAEEnabled
    write-host $message -background "GREEN" -foreground "BLACk"
    }
    }

    Bước 3

    Gắn thêm vào file C:\CheckSQLServer\CheckSQL_Lib.ps1 đoạn mã bên dưới.

    . ./checkhardware.ps1
    . ./checkOS.ps1

    Lúc này file C:\CheckSQLServer\CheckSQL_Lib.ps1 sẽ có pinghost, checkservices, checkhardware và checkOS như thể hiện bên dưới.

    #Source all the functions relate to CheckSQL
    . ./PingHost.ps1
    . ./checkservices.ps1
    . ./checkhardware.ps1
    . ./checkOS.ps1

    Lưu ý: File CheckSQL_Lib.ps1 này sẽ được cập nhật từ các kịch bản mới như checkhardware.ps1 và checkOS.ps1

    Bước 4

    Gắn thêm vào file C:\CheckSQLServer\CheckSQLServer.ps1 đoạn mã dưới đây.

    checkhardware $Hostname
    checkOS $Hostname

    Lúc này file C:\CheckSQLServer\CheckSQLServer.ps1 sẽ có cả checkhardware và checkOS như bên dưới, Chúng tôi đã thêm môt tuyên bố write-host để 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
    Write-host "Checking hardware Information....."
    Write-host "........................"
    checkhardware $Hostname
    Write-host "Checking OS Information....."
    Write-host "........................"
    checkOS $Hostname

    Lưu ý: File CheckSQLServer.ps1 này sẽ được cập nhật các điều kiện và các tham số mới trong các phần sau của loạt bài.

    Nguồn dẫ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ộ PowerShell session. Trong trường hợp này, chúng tôi dẫn nguồn một kịch bản, kịch bản này sẽ lại lấy nguồn từ nhiều kịch bản khác.

    Bước 5

    Lúc này chúng ta hãy thực thi kịch bản, CheckSQLServer.ps1 bằng cách passing “Powerpc” host với tư cách một đối số như thể hiện bên dưới.

    ./CheckSQLServer.ps1 PowerServer2

    Khi đó kết quả cho ra sẽ như sau (tham khảo hình 1.0)

    Checking SQL Server.....
    ........................
    Arguments accepted : PowerServer2
    ........................
    Pinging the host machine
    ........................
    PowerServer2 is REACHABLE
    Checking windows services on the host related to SQL Server
    ...........................................................
    Host=PowerServer2 MSSQLSERVER Running OK True .\Administrator
    Host=PowerServer2 MSSQLServerADHelper100 Stopped OK False NT AUTHORITY\NETWORK SERVICE
    Host=PowerServer2 MSSQLServerOLAPService Stopped OK False .\Administrator
    Host=PowerServer2 SQLBrowser Stopped OK False NT AUTHORITY\LOCAL SERVICE
    Host=PowerServer2 SQLSERVERAGENT Stopped OK False .\Administrator
    Host=PowerServer2 SQLWriter Stopped OK False LocalSystem
    Checking hardware Information.....
    ........................
    Host=PowerServer2
    Description=AT/AT COMPATIBLE
    NumberOfLogicalProcessors=2
    NumberOfProcessors=1
    TotalPhysicalMemory=2145738752
    Model=OptiPlex GX270
    Manufacturer=Dell Computer Corporation
    PartOfDomain=True
    CurrentTimeZone=-240
    DaylightInEffect=True
    Checking OS Information.....
    ........................
    OSArchitecture=32-bit
    OSLanguage=1033
    OSProductSuite=274
    OSType=18
    BuildNumber=6001
    BuildTy pe=Multiprocessor Free
    Version=6.0.6001
    WindowsDirectory=C:\Windows
    PlusVersionNumber=
    FreePhysicalMemory=1511144
    FreeSpaceInPagingFiles=2402648
    FreeVir tualMemory=3966452
    PAEEnabled=False


    Hình 1.0

    Từ kết quả nhận được, bạn có thể thấy được các thông tin về phần cứng và hệ điều hành.

    Bước 6

    Hãy thực thi kịch bản trên máy không tồn tại như dưới đây.

    ./CheckSQLServer.ps1 TestMachine

    Khi đó kết quả nhận được sẽ như sau (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 <<<< -class win32_service -computername $hostname| where {$_.name -like '*SQL*'}| select-obj
    ect Name,state,status,Started,Startname,Description
    Host=TestMachine
    Checking hardware Information.....
    ........................
    Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
    At C:\checksqlserver\checkhardware.ps1:5 char:24
    + $computer=get-wmiobject <<<< -class win32_computersystem -computername $hostname -errorvariable errorvar
    Checking OS Information.....
    ........................
    Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
    At C:\checksqlserver\checkOS.ps1:5 char:18
    + $os=get-wmiobject <<<< -class win32_operatingsystem -computername $hostname -errorvariable errorvar


    Hình 1.1

    Bước 7

    Chúng ta không phải tiếp tục với checkservices, checkhardware và checkos nếu ping bị thất bại. Chính vì vậy hãy cập nhật pinghost.ps1 như thể hiện bên dưới.

    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
    {
    $global:errorvar="host not reachable"
    write-host $Hostname is NOT reachable -background "RED" -foreground "BLACk"
    }
    }
    Hãy cập nhật checksqlserver.ps1 như thể hiện bên dưới.
    #Objective: To check various status of SQL Server
    #Host, instances and databases.
    #Author: MAK
    #Date Written: June 5, 2008
    param (
    [string] $Hostname
    )
    $global:errorvar=0
    . ./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
    if ($global:errorvar -ne "host not reachable")
    {
    Write-host "Checking windows services on the host related to SQL Server"
    write-host "..........................................................."
    checkservices $Hostname
    Write-host "Checking hardware Information....."
    Write-host "........................"
    checkhardware $Hostname
    Write-host "Checking OS Information....."
    Write-host "........................"
    checkOS $Hostname
    }

    Lúc này hãy thực thi kịch bản bằng cách passing tên máy “testmachine”, tên thực sự không tồn tại với tư cách một đối số.

    ./CheckSQLServer.ps1 TestMachine

    Kết quả

    Checking SQL Server.....
    ........................
    Arguments accepted : TestMachine
    ........................
    Pinging the host machine
    ........................
    TestMachine is NOT reachable

    Lưu ý bạn có thể download các đọan mã mới nhất trong phần ba Tại đây.

    Kết luận

    Đây là phần thứ ba của loạt bài này. Trong phần thứ ba này chúng tôi đã giới thiệu được cho các bạn cách truy cập các thông tin phần cứng và hệ điều hành bằng Windows PowerShell và WMI-Object. Trong phần tiếp theo, chúng tôi sẽ bổ sung thêm một số kiểm tra khác và giới thiệu cách capture một số thông tin phần cứng và hệ điều hành.


    --== Cộng đồng tin học ==--
     
    Hung@infoDate: Thứ 2, 2009-05-25, 3:10 PM | Bài viết # 4
    Trung úy
    Nhóm: Quản trị viên
    Bài viết: 994
    Uy tín: 10
    Hiện tại: Offline
    Kiểm tra SQL Server bằng Windows PowerShell – Phần 4

    Phần 1 của loạt bài này đã giới thiệu về kiểm tra đầu tiên trên SQL Server – các ping một host. Phần 2 là giới thiệu về cách kiểm tra tất cả các dịch vụ của Windows có liên quan đến SQL Server và phần ba là cách kiểm tra các thông tin phần cứng và phần mềm. Trong phần tiếp theo này, chúng tôi sẽ giới thiệu cho các bạn các thu thập các thông tin về card mạng và ổ đĩa cứng từ máy chủ.

    Bước 1

    Đánh hoặc copy và paste đoạn mã dưới đây vào C:\CheckSQLServer\Checkhd.ps1.

    #Function to check the HDD information on the host machine

    Function checkHD([string] $Hostname )

    {

    $drives=get-wmiobject -class Win32_LogicalDisk

    -computername $hostname -errorvariable errorvar

    if (-not $errorvar)

    {

    foreach ($drive in $drives)

    {

    if ($drive.drivetype -eq "3" )

    {

    $message= "DeviceID="+$drive.Deviceid+" Size="+

    $drive.size/1048576+"MB Free Space="+

    http://www.databasejournal.com/img/return.gif$drive.freespace/1048576 +"MB Percentage Used=" +

    http://www.databasejournal.com/img/return.gif (($drive.Size/1048576)-($drive.freespace/1048576))/

    http://www.databasejournal.com/img/return.gif ($drive.Size/1048576) *100+"% "

    write-host $message -background "GREEN" -foreground "BLACk"

    }

    }

    }

    }

    Bước 2

    Đánh hoặc copy và paste đoạn mã dưới đây vào C:\CheckSQLServer\Checknet.ps1.

    #Function to check the Network netadapter information on the

    http://www.databasejournal.com/img/return.gifhost machine

    Function checknet([string] $Hostname )

    {

    $netadapter=get-wmiobject -class win32_networkadapter

    http://www.databasejournal.com/img/return.gif-computername $hostname -errorvariable errorvar

    if (-not $errorvar)

    {

    foreach ($netadapter in $netadapter)

    {

    write-host "---------------------------------------------------"

    http://www.databasejournal.com/img/return.gif-background "Blue" -foreground "BLACk"

    #$message= "netadapter Enabled="+$netadapter.Enable

    #write-host $message -background "GREEN" -foreground "BLACk"

    $message= "netadapterType="+$netadapter.netadapterType

    write-host $message -background "GREEN" -foreground "BLACk"

    $message= "Description="+$netadapter.Description

    write-host $message -background "GREEN" -foreground "BLACk"

    $message= "Manufacturer="+$netadapter.Manufacturer

    write-host $message -background "GREEN" -foreground "BLACk"

    $message= "NetworkAddresses="+$netadapter.NetworkAddresses

    write-host $message -background "GREEN" -foreground "BLACk"

    $message= "PermanentAddress="+$netadapter.PermanentAddress

    write-host $message -background "GREEN" -foreground "BLACk"

    $message= "Physicalnetadapter="+$netadapter.Physicalnetadapter

    write-host $message -background "GREEN" -foreground "BLACk"

    $message= "ProductName="+$netadapter.ProductName

    write-host $message -background "GREEN" -foreground "BLACk"

    $message= "ServiceName="+$netadapter.ServiceName

    write-host $message -background "GREEN" -foreground "BLACk"

    $message= "StatusInfo="+$netadapter.StatusInfo

    write-host $message -background "GREEN" -foreground "BLACk"

    $message= "Speed="+$netadapter.Speed

    write-host $message -background "GREEN" -foreground "BLACk"

    $message= "Status="+$netadapter.Status

    write-host $message -background "GREEN" -foreground "BLACk"

    }

    }

    }

    Bước 3

    Gán vào file C:\CheckSQLServer\CheckSQL_Lib.ps1 đoạn mã dưới đây.

    . ./checkhd.ps1

    . ./checknet.ps1

    Lúc này C:\CheckSQLServer\CheckSQL_Lib.ps1 sẽ có pinghost, checkservices, checkhardware, checkOS, checkHD và checknet như thể hiện bên dưới.

    #Source all the functions relate to CheckSQL

    . ./PingHost.ps1

    . ./checkservices.ps1

    . ./checkhardware.ps1

    . ./checkOS.ps1

    . ./checkHD.ps1

    . ./checknet.ps1

    Lưu ý: File CheckSQL_Lib.ps1 này sẽ được cập nhật với nguồn dẫn của các kịch bản mới như checkhd.ps1 và checknet.ps1.

    Bước 4

    Gắn thêm vào file C:\CheckSQLServer\CheckSQLServer.ps1 đoạn mã dưới đây.

    Write-host "Checking HDD Information....."

    Write-host "............................."

    checkHD $Hostname

    Write-host "Checking Network Adapter Information....."

    Write-host "........................................."

    checknet $Hostname

    Lúc này C:\CheckSQLServer\CheckSQLServer.ps1 sẽ có cả checkhd và checknet như thể hiên dưới. Chúng tôi đã thêm một số tuyên bố write-host để 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

    )

    $global:errorvar=0

    . ./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
    if ($global:errorvar -ne "host not reachable")
    {
    Write-host "Checking windows services on the host related to SQL Server"
    write-host "..........................................................."
    checkservices $Hostname
    Write-host "Checking hardware Information....."
    Write-host ".................................."
    checkhardware $Hostname
    Write-host "Checking OS Information....."
    Write-host "............................."
    checkOS $Hostname
    Write-host "Checking HDD Information....."
    Write-host "............................."
    checkHD $Hostname
    Write-host "Checking Network Adapter Information....."
    Write-host "........................................."
    checknet $Hostname
    }

    Lưu ý: CheckSQLServer.ps1 sẽ được cập nhật các điều kiện mới và các tham số mới trong các phần sau của loạt bài này.

    Nguồn dẫn cơ bản load các hàng được liệt kê trong file kịch bản và làm cho nó trở lên hiện hữu trong toàn bộ PowerShell session. Trong trường hợp này, chúng tôi dẫn nguồn một kịch bản, kịch bản này lại lấy nguồn từ nhiều kịch bản khác.

    Bước 5

    Chúng ta hãy thực thi kịch bản CheckSQLServer.ps1 bằng cách passing “Powerpc” host như một đối số, xem thể hiện dưới đây.

    ./CheckSQLServer.ps1 PowerServer2

    Các kết quả bạn thu được như thể hiện bên dưới (tham khảo hình 1.0)

    Checking SQL Server.....
    ........................
    Arguments accepted : PowerServer2
    ........................
    Pinging the host machine
    ........................
    PowerServer2 is REACHABLE
    Checking windows services on the host related to SQL Server
    ...........................................................
    Host=PowerServer2 MSSQLSERVER Running OK True .\Administrator
    Host=PowerServer2 MSSQLServerADHelper100 Stopped OK False
    NT AUTHORITY\NETWORK SERVICE
    Host=PowerServer2 MSSQLServerOLAPService Stopped OK
    False .\Administrator
    Host=PowerServer2 SQLBrowser Stopped OK False
    NT AUTHORITY\LOCAL SERVICE
    Host=PowerServer2 SQLSERVERAGENT Stopped OK False .\Administrator
    Host=PowerServer2 SQLWriter Stopped OK False LocalSystem
    Checking hardware Information.....
    ..................................
    Host=PowerServer2
    Description=AT/AT COMPATIBLE
    NumberOfLogicalProcessors=2
    NumberOfProcessors=1
    TotalPhysicalMemory=2145738752
    Model=OptiPlex GX270
    Manufacturer=Dell Computer Corporation
    PartOfDomain=True
    CurrentTimeZone=-240
    DaylightInEffect=True
    Checking OS Information.....
    .............................
    OSArchitecture=32-bit
    OSLanguage=1033
    OSProductSuite=274
    OSType=18
    BuildNumber=6001
    Bu ildType=Multiprocessor Free
    Version=6.0.6001
    WindowsDirectory=C:\Windows
    PlusVersionNumber=
    FreePhysicalMemory=1492684
    FreeSpaceInPagingFiles=2402648
    FreeVir tualMemory=3948148
    PAEEnabled=False
    ServicePackMajorVersion=0
    ServicePackMinorVersion=0
    Checking HDD Information.....
    .............................
    DeviceID=C: Size=38143.99609375MB Free Space=23761.51953125MB
    Percentage Used=37.7057414937619
    Checking Network Adapter Information.....
    .........................................
    ---------------------------------------------------
    netadapterType=
    Descripti on=WAN Miniport (SSTP)
    Manufacturer=Microsoft
    NetworkAddresses=
    PermanentAddress=
    Physicalnetadapter=
    ProductName=WAN Miniport (SSTP)
    ServiceName=RasSstp
    StatusInfo=
    Speed=
    Status=
    ---------------------------------------------------
    netadapterType=
    Description =WAN Miniport (L2TP)
    Manufacturer=Microsoft
    NetworkAddresses=
    PermanentAddress=
    Physicalnetadapter=
    ProductName=WAN Miniport (L2TP)
    ServiceName=Rasl2tp
    StatusInfo=
    Speed=
    Status=
    ---------------------------------------------------
    netadapterType=
    Description =WAN Miniport (PPTP)
    Manufacturer=Microsoft
    NetworkAddresses=
    PermanentAddress=
    Physicalnetadapter=
    ProductName=WAN Miniport (PPTP)
    ServiceName=PptpMiniport
    StatusInfo=
    Speed=
    Status=
    ---------------------------------------------------
    netadapterType=
    Descri ption=WAN Miniport (PPPOE)
    Manufacturer=Microsoft
    NetworkAddresses=
    PermanentAddress=
    Physicalnetadapter=
    ProductName=WAN Miniport (PPPOE)
    ServiceName=RasPppoe
    StatusInfo=
    Speed=
    Status=
    ---------------------------------------------------
    netadapterType=
    Descripti on=WAN Miniport (IPv6)
    Manufacturer=Microsoft
    NetworkAddresses=
    PermanentAddress=
    Physicalnetadapter=
    ProductName=WAN Miniport (IPv6)
    ServiceName=NdisWan
    StatusInfo=
    Speed=
    Status=
    ---------------------------------------------------
    netadapterType=
    Description =WAN Miniport (Network Monitor)
    Manufacturer=Microsoft
    NetworkAddresses=
    PermanentAddress=
    Physicalnetadapter=
    ProductName=WAN Miniport (Network Monitor)
    ServiceName=NdisWan
    StatusInfo=
    Speed=
    Status=
    ---------------------------------------------------
    netadapterType=
    Descripti on=Intel® PRO/1000 MT Network Connection
    Manufacturer=Intel
    NetworkAddresses=
    PermanentAddress=
    Physicalnetadapter=
    ProductName=Intel® PRO/1000 MT Network Connection
    ServiceName=E1G60
    StatusInfo=
    Speed=100000000
    Status=
    ---------------------------------------------------
    netadapterType=
    D escription=Microsoft ISATAP Adapter
    Manufacturer=Microsoft
    NetworkAddresses=
    PermanentAddress=
    Physicalnetadapter=
    ProductName=Microsoft ISATAP Adapter
    ServiceName=tunnel
    StatusInfo=
    Speed=100000
    Status=
    ---------------------------------------------------
    netadapterType=
    Descr iption=WAN Miniport (IP)
    Manufacturer=Microsoft
    NetworkAddresses=
    PermanentAddress=
    Physicalnetadapter=
    ProductName=WAN Miniport (IP)
    ServiceName=NdisWan
    StatusInfo=
    Speed=
    Status=
    ---------------------------------------------------
    netadapterType=
    Description=M icrosoft Tun Miniport Adapter
    Manufacturer=Microsoft
    NetworkAddresses=
    PermanentAddress=
    Physicalnetadapter=
    ProductName=Microsoft Tun Miniport Adapter
    ServiceName=tunmp
    StatusInfo=
    Speed=1073741824
    Status=
    ---------------------------------------------------
    netadapterType=
    De scription=RAS Async Adapter
    Manufacturer=Microsoft
    NetworkAddresses=
    PermanentAddress=
    Physicalnetadapter=
    ProductName=RAS Async Adapter
    ServiceName=AsyncMac
    StatusInfo=
    Speed=
    Status=


    Hình 1.0

    Từ các kết quả thu được, bạn có thể thấy được các thông tin về ổ đĩa cứng và card mạng.

    Bước 6

    Chúng ta hãy thực thi kịch bản trên máy không có ổ đĩa cứng hay card mạng.

    ./CheckSQLServer.ps1 TestMachine

    Kết quả mà bạn nhận được được thể hiện bên dưới (tham khảo hình 1.1)

    Kết quả

    Checking SQL Server.....
    ........................
    Arguments accepted : TestMachine
    ........................
    Pinging the host machine
    ........................
    TestMachine is NOT reachable


    Hình 1.1

    Lưu ý: bạn có thể download mã cho phần 3 mới nhất Tại đây.

    Kết luận

    Phần 4 này đã giới thiệu cho các bạn cách truy cập để thu thập các thông tin về ổ đĩa cứng và card mạng bằng Windows PowerShell và WMI-Object


    --== Cộng đồng tin học ==--
     
    Hung@infoDate: Thứ 2, 2009-05-25, 3:20 PM | Bài viết # 5
    Trung úy
    Nhóm: Quản trị viên
    Bài viết: 994
    Uy tín: 10
    Hiện tại: Offline
    Kiểm tra SQL Server bằng Windows PowerShell – Phần 5

    Phần 1 của loạt bài này đã giới thiệu về kiểm tra đầu tiên trên SQL Server – các ping một host. Phần 2 là giới thiệu về cách kiểm tra tất cả các dịch vụ của Windows có liên quan đến SQL Server, phần 3 là cách kiểm tra các thông tin phần cứng và phần mềm, phần 4 là giới thiệu về cách thu thập các thông tin về card mạng và ổ đĩa cứng từ máy chủ. Trong phần 5 này chúng ta sẽ kiểm tra xem có thể kết nối với SQL Server hay không và xem chúng ta có thể truy vấn một số thuộc tính liên quan đến SQL Server.

    Bước 1

    Đánh hoặc copy và paste đoạn mã dưới đây vào file C:\CheckSQLServer\Checkinstance.ps1.

    function checkinstance(
    [string] $servername
    )
    {
    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $DataSet = New-Object System.Data.DataSet
    $SqlConnection.ConnectionString =
    "Server=$servername;Database=master;Integrated Security=True"
    $SqlCmd.CommandText = "
    create table #serverproperty (property varchar(100),
    value varchar(100))
    insert into #serverproperty values
    ('MachineName',convert(varchar(100),
    SERVERPROPERTY ('Machinename')))
    insert into #serverproperty values
    ('Servername',convert(varchar(100),
    SERVERPROPERTY ('ServerName') ))
    insert into #serverproperty values
    ('InstanceName',convert(varchar(100),
    SERVERPROPERTY ('ServerName') ))
    insert into #serverproperty values
    ('Edition',convert(varchar(100),SERVERPROPERTY ('Edition') ))
    insert into #serverproperty values
    ('EngineEdition',convert(varchar(100),
    SERVERPROPERTY ('EngineEdition')) )
    insert into #serverproperty values
    ('BuildClrVersion',convert(varchar(100),
    SERVERPROPERTY ('Buildclrversion')) )
    insert into #serverproperty values
    ('Collation', convert(varchar(100),SERVERPROPERTY ('Collation')) )
    insert into #serverproperty values
    ('ProductLevel',convert(varchar(100),
    SERVERPROPERTY ('ProductLevel')) )
    insert into #serverproperty values
    ('IsClustered',convert(varchar(100),SERVERPROPERTY ('IsClustered') ))
    insert into #serverproperty values
    ('IsFullTextInstalled',convert(varchar(100),SERVERPROPERTY
    ('IsFullTextInstalled ') ))
    insert into #serverproperty values
    ('IsSingleuser',convert(varchar(100),
    SERVERPROPERTY ('IsSingleUser ') ))
    set nocount on
    select * from #serverproperty
    drop table #serverproperty
    "
    $SqlCmd.Connection = $SqlConnection
    $SqlAdapter.SelectCommand = $SqlCmd
    $SqlAdapter.Fill($DataSet)
    $DataSet.Tables[0]
    $SqlConnection.Close()
    }

    Bước 2

    Đánh hoặc copy và paste đoạn mã sau vào file C:\CheckSQLServer\Checkconfiguration.ps1.

    function checkconfiguration(
    [string] $servername
    )
    {
    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $DataSet = New-Object System.Data.DataSet
    $SqlConnection.ConnectionString = "Server=$servername;Database=master;Integrated Security=True"
    $SqlCmd.CommandText = "
    exec master.dbo.sp_configure 'show advanced options',1
    reconfigure
    "
    $SqlCmd.Connection = $SqlConnection
    $SqlAdapter.SelectCommand = $SqlCmd
    $SqlAdapter.Fill($DataSet)
    $SqlCmd.CommandText = "
    set nocount on
    create table #config (name varchar(100), minimum bigint, maximum bigint, config_value bigint, run_value bigint)
    insert #config exec ('master.dbo.sp_configure')
    set nocount on
    select * from #config as mytable
    drop table #config
    "
    $SqlCmd.Connection = $SqlConnection
    $SqlAdapter.SelectCommand = $SqlCmd
    $SqlAdapter.Fill($DataSet)
    $SqlConnection.Close()
    $DataSet.Tables[0].rows
    }

    Bước 3

    Gắn vào file C:\CheckSQLServer\CheckSQL_Lib.ps1 đoạn mã sau.

    . ./checkinstance.ps1
    . ./checkconfiguration.ps1

    Lúc này file C:\CheckSQLServer\CheckSQL_Lib.ps1 có có pinghost, checkservices, checkhardware, checkOS, checkHD, checknet, checkinstance và Checkconfiguration như thể hiện bên dưới.

    #Source all the functions relate to CheckSQL
    . ./PingHost.ps1
    . ./checkservices.ps1
    . ./checkhardware.ps1
    . ./checkOS.ps1
    . ./checkHD.ps1
    . ./checknet.ps1
    . ./checkinstance.ps1
    . ./checkconfiguration.ps1

    Lưu ý: File CheckSQL_Lib.ps1 này sẽ được cập nhật với nguồn dẫn từ các file kịch bản mới, chẳng hạn như checkinstance.ps1 and checkconfiguration.ps1

    Bước 4

    Gắn thêm vào file C:\CheckSQLServer\CheckSQLServer.ps1 đoạn mã sau.

    Write-host "Checking Instance property Information....."
    Write-host "............................."
    checkinstance $instancename
    Write-host "Checking Configuration information....."
    Write-host "........................................."
    checkconfiguration $instancename

    Lúc này file sẽ có cả hai kịch bản checkinstance và checkconfiguration như thể hiện bên dưới. Chúng tôi đã thêm vào một vài lệnh write-host để hiện thị toàn bộ quá trình. Các bạn cũng cần lưu rằng chúng tôi đã thêm $instancename với tư cách là một tham số bổ sung cho kịch bản checksqlserver.

    #Objective: To check various status of SQL Server
    #Host, instances and databases.
    #Author: MAK
    #Date Written: June 5, 2008
    param (
    [string] $Hostname,
    [string] $instancename
    )
    $global:errorvar=0
    . ./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
    if ($global:errorvar -ne "host not reachable")
    {
    Write-host "Checking windows services on the host related to SQL Server"
    write-host "..........................................................."
    checkservices $Hostname
    Write-host "Checking hardware Information....."
    Write-host ".................................."
    checkhardware $Hostname
    Write-host "Checking OS Information....."
    Write-host "............................."
    checkOS $Hostname
    Write-host "Checking HDD Information....."
    Write-host "............................."
    checkHD $Hostname
    Write-host "Checking Network Adapter Information....."
    Write-host "........................................."
    checknet $Hostname
    Write-host "Checking Configuration information....."
    Write-host "........................................."
    checkconfiguration $instancename |format-table
    Write-host "Checking Instance property Information....."
    Write-host "............................."
    checkinstance $instancename |format-table
    }

    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ố mới trong các phần sau này của loạt bài.

    Việc load về cơ bản sẽ tải các chức năng được liệt kê trong các kịch bản và làm cho nó trở lên hiện hữu trong suốt toàn bộ PowerShell session. Trong trường hợp này, chúng tôi dẫn nguồn một kịch bản, kịch bản này lại lấy nguồn từ nhiều kịch bản khác.

    Bước 5

    Lúc này chúng ta hãy thực thi kịch bản, CheckSQLServer.ps1, bằng cách passing “PowerServer3” host với tư cách một đối số như thể hiện bên dưới.

    ./CheckSQLServer.ps1 PowerServer3 PowerServer3\SQL2008

    Chúng ta sẽ gặp kết quả như thể hiện dưới đây (Hình 1.0)

    .....
    ....
    ....
    two digit year cutoff 1753 9999 2049
    user connections 0 32767 0
    user options 0 32767 0
    xp_cmdshell 0 1 0

    Checking Instance property Information.....
    .............................
    11
    property value
    -------- -----
    MachineName POWERSERVER3
    Servername POWERSERVER3\SQL2008
    InstanceName POWERSERVER3\SQL2008
    Edition Enterprise Evaluation Edition
    EngineEdition 3
    BuildClrVersion v2.0.50727
    Collation SQL_Latin1_General_CP1_CI_AS
    ProductLevel RTM
    IsClustered 0
    IsFullTextInstalled 1
    IsSingleuser 0
    ....
    ....


    Hình 1.0

    Hình 1.1

    Bước 6

    Lúc này chúng ta hãy thực thi kịch bản trên máy không tồn tại như thể hiện bên dưới.

    ./CheckSQLServer.ps1 TestMachine

    Kết quả thu được sẽ như bên dưới (tham khảo hình 1.3)

    Kết quả

    Checking SQL Server.....
    ........................
    Arguments accepted : TestMachine
    ........................
    Pinging the host machine
    ........................
    TestMachine is NOT reachable


    Hình 1.3

    Kết luận

    Phần 5 của loạt bài này đã giới thiệu cho các bạn cách truy cập các thuộc tính instance của SQL Server và các chi tiết về cấu hình của nó bằng cách sử dụng Windows PowerShell.

    DOWNLOAD kịch bản cho bài này.


    --== Cộng đồng tin học ==--
     
    Hung@infoDate: Thứ 2, 2009-05-25, 3:46 PM | Bài viết # 6
    Trung úy
    Nhóm: Quản trị viên
    Bài viết: 994
    Uy tín: 10
    Hiện tại: Offline
    Kiểm tra SQL Server bằng Windows PowerShell – Phần 6

    Phần 1 của loạt bài này đã giới thiệu về kiểm tra đầu tiên trên SQL Server – các ping một host. Phần 2 là giới thiệu về cách kiểm tra tất cả các dịch vụ của Windows có liên quan đến SQL Server, phần 3 là cách kiểm tra các thông tin phần cứng và phần mềm, phần 4 là giới thiệu về cách thu thập các thông tin về card mạng và ổ đĩa cứng từ máy chủ. Trong phần 5 chúng tôi đã giới thiệu cách kiểm tra xem có thể kết nối với SQL Server hay không và xem chúng ta có thể truy vấn một số thuộc tính liên quan đến SQL Server. Phần 6 này sẽ giới thiệu tiếp cho các bạn cách kiểm tra tất cả các cơ sở dữ liệu hiện có trong SQL Server instance và truy vấn các thuộc tính cơ sở dữ liệu.

    Bước 1

    Đánh hoặc copy và pasta đoạn mã dưới đây vào file C:\CheckSQLServer\Checkdatabases.ps1.

    function checkdatabases(
    [string] $servername
    )
    {
    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $DataSet = New-Object System.Data.DataSet
    $DataSet2 = New-Object System.Data.DataSet
    $DataSet3 = New-Object System.Data.DataSet
    $DataSet4 = New-Object System.Data.DataSet
    $SqlConnection.ConnectionString =
    "Server=$servername;Database=master;Integrated Security=True"
    $SqlCmd.CommandText = "select name from master.dbo.sysdatabases"
    $SqlCmd.Connection = $SqlConnection
    $SqlAdapter.SelectCommand = $SqlCmd
    $SqlAdapter.Fill($DataSet)|out-null
    $dbs =$DataSet.Tables[0]
    #$dbs
    foreach ($db in $dbs)
    {
    #$db.name
    $SqlCmd.CommandText = $db.name+"..sp_spaceused "
    $SqlCmd.Connection = $SqlConnection
    $SqlAdapter.SelectCommand = $SqlCmd
    $SqlAdapter.Fill($DataSet2) |out-null
    }
    $DataSet2.Tables[0]| format-table -autosize

    foreach ($db in $dbs)
    {
    #$db.name
    $SqlCmd.CommandText = "
    select '"+$db.name+"' as Dbname,
    DATABASEPROPERTY('"+$db.name+"','IsInRecovery') as Inrecovery,
    DATABASEPROPERTY('"+$db.name+"','IsInLoad') as InLoad,
    DATABASEPROPERTY('"+$db.name+"','IsEmergencyMode') as InEmergency,
    DATABASEPROPERTY('"+$db.name+"','IsOffline') as Isoffline,
    DATABASEPROPERTY('"+$db.name+"','IsReadOnly') as IsReadonly,
    DATABASEPROPERTY('"+$db.name+"','IsSingleUser') as IsSingleuser,
    DATABASEPROPERTY('"+$db.name+"','IsSuspect') as IsSuspect,
    DATABASEPROPERTY('"+$db.name+"','IsInStandBy') as IsStandby,
    DATABASEPROPERTY('"+$db.name+"','Version') as version,
    DATABASEPROPERTY('"+$db.name+"','IsTruncLog') as IsTrunclog
    "
    #$SqlCmd.CommandText
    $SqlCmd.Connection = $SqlConnection
    $SqlAdapter.SelectCommand = $SqlCmd
    $SqlAdapter.Fill($DataSet4) |out-null
    }
    $DataSet4.Tables[0]| format-table -autosize
    $SqlCmd.CommandText = "DBCC SQLPERF(LOGSPACE) WITH NO_INFOMSGS "
    $SqlCmd.Connection = $SqlConnection
    $SqlAdapter.SelectCommand = $SqlCmd
    $SqlAdapter.Fill($DataSet3)|out-null
    $DataSet3.Tables[0] | format-table -autosize
    $SqlConnection.Close()
    }

    Bước 2

    Gắn vào file C:\CheckSQLServer\CheckSQL_Lib.ps1 đoạn mã sau.

    . ./checkdatabases.ps1

    Lúc này file C:\CheckSQLServer\CheckSQL_Lib.ps1 sẽ gồm có pinghost, checkservices, checkhardware, checkOS, checkHD, checknet, checkinstance, Checkconfiguration và checkdatabases như thể hiện bên dưới.

    #Source all the functions relate to CheckSQL
    . ./PingHost.ps1
    . ./checkservices.ps1
    . ./checkhardware.ps1
    . ./checkOS.ps1
    . ./checkHD.ps1
    . ./checknet.ps1
    . ./checkinstance.ps1
    . ./checkconfiguration.ps1
    . ./checkdatabases.ps1

    Lưu ý: File CheckSQL_Lib.ps1 sẽ được cập nhật với nguồn dẫn của các kịch bản mới, chẳng hạn như checkdatabases.ps1.

    Bước 3

    Gắn thêm vào file C:\CheckSQLServer\CheckSQLServer.ps1 đoạn mã sau.

    #Objective: To check various status of SQL Server
    #Host, instances and databases.
    #Author: MAK
    #Date Written: June 5, 2008
    param (
    [string] $Hostname,
    [string] $instancename
    )
    $global:errorvar=0
    . ./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
    if ($global:errorvar -ne "host not reachable")
    {
    Write-host "Checking windows services on the host related to SQL Server"
    write-host "..........................................................."
    checkservices $Hostname
    Write-host "Checking hardware Information....."
    Write-host ".................................."
    checkhardware $Hostname
    Write-host "Checking OS Information....."
    Write-host "............................."
    checkOS $Hostname
    Write-host "Checking HDD Information....."
    Write-host "............................."
    checkHD $Hostname
    Write-host "Checking Network Adapter Information....."
    Write-host "........................................."
    checknet $Hostname
    Write-host "Checking Configuration information....."
    Write-host "........................................."
    checkconfiguration $instancename |format-table
    Write-host "Checking Instance property Information....."
    Write-host "............................."
    checkinstance $instancename |format-table
    Write-host "Checking SQL Server databases....."
    Write-host "Checking Database status and size....."
    Write-host "............................."
    checkdatabases $instancename |format-table
    }

    Lưu ý: File CheckSQLServer.ps1 sẽ được cập nhật các điều kiện mới và các tham số mới trong các phần tiếp theo của loạt bài này.

    Nguồn dẫn cơ bả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ộ PowerShell session. Trong trường hợp này, chúng tôi dấn nguồn một kịch bản, nhưng kịch bản này lại lấy nguồn từ nhiều kịch bản khác.

    Bước 4

    Lúc này chúng ta hãy thực thi kịch bản CheckSQLServer.ps1 bằng cách sử dụng “PowerServer3” với tư cách một đối số như thể hiện bên dưới.

    ./CheckSQLServer.ps1 PowerServer3 PowerServer3\SQL2008

    Bạn sẽ nhận được các kết quả như thể hiện bên dưới (tham khảo hình 1.0)

    Kết quả


    database_name database_size unallocated space
    ------------- ------------- -----------------
    master 5.00 MB 1.28 MB
    tempdb 8.75 MB 6.70 MB
    model 1.75 MB 0.16 MB
    msdb 11.00 MB 0.46 MB
    ReportServer$SQL2008 9.38 MB 0.55 MB
    ReportServer$SQL2008TempDB 3.00 MB 1.02 MB
    AdventureWorksDW2008 71.06 MB 0.00 MB
    AdventureWorksLT2008 10.31 MB 3.20 MB
    AdventureWorks2008 182.06 MB 0.00 MB

    Dbname Inrecovery InLoad InEmergency Isoffline IsReadonly IsSingleuser I
    ------ ---------- ------ ----------- --------- ---------- ------------ -
    master 0 0 0 0 0 0
    tempdb 0 0 0 0 0 0
    model 0 0 0 0 0 0
    msdb 0 0 0 0 0 0
    ReportServer$SQL2008 0 0 0 0 0 0
    ReportServer$SQL2008TempDB 0 0 0 0 0 0
    AdventureWorksDW2008 0 0 0 0 0 0
    AdventureWorksLT2008 0 0 0 0 0 0
    AdventureWorks2008 0 0 0 0 0 0
    test 0 0 1 0 0

    Database Name Log Size (MB) Log Space Used (%) Status
    ------------- ------------- ---------- -------
    master 0.9921875 50.3937 0
    tempdb 0.7421875 63.68421 0
    model 0.4921875 59.52381 0
    msdb 0.4921875 61.90476 0


    Hình 1.0

    Bước 5

    Lúc này chúng ta hãy thực thi kịch bản trên máy tính không tồn tại, xem thể hiện bên dưới.

    ./CheckSQLServer.ps1 TestServer testserver

    Các kết quả được thể hiện bên dưới (tham khảo hình 1.1)

    Kết quả

    Checking SQL Server.....
    ........................
    Arguments accepted : TestMachine
    ........................
    Pinging the host machine
    ........................
    TestMachine is NOT reachable


    Hình 1.1

    Kết luận

    Đây là phần 6 của lọat bài này. Trong phần 6 này chúng tôi đã giới thiệu cho các bạn đươc các truy cập trạng thái của cơ sở dữ liệu và các thông tin kích thước bằng Windows PowerShell.

    Download kịch bản cho phần này.


    --== Cộng đồng tin học ==--
     
    Hung@infoDate: Thứ 2, 2009-05-25, 4:14 PM | Bài viết # 7
    Trung úy
    Nhóm: Quản trị viên
    Bài viết: 994
    Uy tín: 10
    Hiện tại: Offline
    Kiểm tra SQL Server bằng Windows PowerShell – Phần 7

    Trong phần sáu chúng tôi đã giới thiệu cho các bạn cách kiểm tra trạng thái cơ sở dữ liệu các thông tin về kích thước của cơ sở dữ liệu, còn trong phần này chúng tôi sẽ giới thiệu cho các bạn về cách lấy được các thông tin đó trên TOP 10 các truy vấn dựa trên hiệu suất CPU.

    Bước 1

    Đánh hoặc copy và paste đoạn mã dưới đây vào file C:\CheckSQLServer\Checktopqueries.ps1.

    function checktopqueries(
    [string] $servername
    )
    {
    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $DataSet = New-Object System.Data.DataSet
    $SqlConnection.ConnectionString =
    "Server=$servername;Database=master;Integrated Security=True"
    $SqlCmd.CommandText = "
    If LEFT(convert(varchar(100),
    SERVERPROPERTY('productversion')),1) in ('9','1')
    begin
    select Top 10 case when sql_handle IS NULL
    then ' '
    else ( substring(st.text,(qs.statement_start_offset+2)/2,
    (case when qs.statement_end_offset = -1
    then len(convert(nvarchar(MAX),st.text))*2
    else qs.statement_end_offset
    end - qs.statement_start_offset) /2 ) )
    end as query_text
    ,creation_time, last_execution_time
    ,rank() over(order by (total_worker_time+0.0)/
    execution_count desc,
    sql_handle,statement_start_offset ) as row_no
    , (rank() over(order by (total_worker_time+0.0)/
    execution_count desc,
    sql_handle,statement_start_offset ))%2 as l1
    , (total_worker_time+0.0)/1000 as total_worker_time
    , (total_worker_time+0.0)/(execution_count*1000)
    as [AvgCPUTime]
    , total_logical_reads as [LogicalReads]
    , total_logical_writes as [LogicalWrites]
    , execution_count
    , total_logical_reads+total_logical_writes as [AggIO]
    , (total_logical_reads+total_logical_writes)/
    (execution_count+0.0) as [AvgIO]
    , db_name(st.dbid) as db_name
    , st.objectid as object_id
    from sys.dm_exec_query_stats qs
    cross apply sys.dm_exec_sql_text(sql_handle) st
    where total_worker_time > 0
    order by (total_worker_time+0.0)/(execution_count*1000)
    end
    else
    begin
    print 'Server version is not SQL Server 2005 or above. Can''t query TOP queries'
    end"
    $SqlCmd.Connection = $SqlConnection
    $SqlAdapter.SelectCommand = $SqlCmd
    $SqlAdapter.Fill($DataSet)|out-null
    $dbs =$DataSet.Tables[0]
    $dbs

    $SqlConnection.Close()
    }

    Bước 2

    Gắn thêm vào file C:\CheckSQLServer\CheckSQL_Lib.ps1 đoạn mã sau.

    . ./checktopqueries.ps1

    Lúc này file C:\CheckSQLServer\CheckSQL_Lib.ps1 sẽ có pinghost, checkservices, checkhardware, checkOS, checkHD, checknet, checkinstance, Checkconfiguration và checkdatabases như thể hiện bên dưới.

    #Source all the functions relate to CheckSQL
    . ./PingHost.ps1
    . ./checkservices.ps1
    . ./checkhardware.ps1
    . ./checkOS.ps1
    . ./checkHD.ps1
    . ./checknet.ps1
    . ./checkinstance.ps1
    . ./checkconfiguration.ps1
    . ./checkdatabases.ps1
    . ./checktopqueries.ps1

    Lưu ý: File CheckSQL_Lib.ps1 này sẽ được cập nhật từ nguồn các kịch bản mới, chẳng hạn như checktopqueries.ps1.

    Bước 3

    Gắn thêm vào file C:\CheckSQLServer\CheckSQLServer.ps1 đoạn mã sau.

    Write-host "Checking Top 10 Queries based on CPU Usage."
    Write-host "............................."
    checktopqueries $instancename |select-object query_text, AvgCPUTime |format-table
    CheckSQLServer.ps1 sẽ trở thành
    #Objective: To check various status of SQL Server
    #Host, instances and databases.
    #Author: MAK
    #Date Written: June 5, 2008
    param (
    [string] $Hostname,
    [string] $instancename
    )
    $global:errorvar=0
    . ./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
    if ($global:errorvar -ne "host not reachable")
    {
    Write-host "Checking windows services on the host related to SQL Server"
    write-host "..........................................................."
    checkservices $Hostname
    Write-host "Checking hardware Information....."
    Write-host ".................................."
    checkhardware $Hostname
    Write-host "Checking OS Information....."
    Write-host "............................."
    checkOS $Hostname
    Write-host "Checking HDD Information....."
    Write-host "............................."
    checkHD $Hostname
    Write-host "Checking Network Adapter Information....."
    Write-host "........................................."
    checknet $Hostname
    Write-host "Checking Configuration information....."
    Write-host "........................................."
    checkconfiguration $instancename |format-table
    Write-host "Checking Instance property Information.`...."
    Write-host "............................."
    checkinstance $instancename |format-table
    Write-host "Checking SQL Server databases....."
    Write-host "Checking Database status and size....."
    Write-host "............................."
    checkdatabases $instancename |format-table
    Write-host "Checking Top 10 Queries based on CPU Usage."
    Write-host "............................."
    checktopqueries $instancename |select-object query_text, AvgCPUTime |format-table
    }

    Lưu ý: File CheckSQLServer.ps1 sẽ được cập nhật các điều kiện mới và các tham số mới trong các phần sau của loạt bài này.

    Nguồn dẫn sẽ load các chức năng được liệt kê trong file kịch bản và làm cho nó trở thành hiện hữu trong suốt toàn bộ PowerShell session. Trong trường hợp này, chúng ta lấy nguồn từ một kịch bản, kịch bản đó lại được dẫn nguồn từ nhiều kịch bản khác.

    Bước 4

    Lúc này chúng ta hãy thực thi kịch bản, CheckSQLServer.ps1, bằng cách sử dụng “PowerServer3” như một đối số và Powerserver3\SQL2008 như một đối số thứ hai như thể hiện bên dưới.

    ./CheckSQLServer.ps1 PowerServer3 PowerServer3\SQL2008

    Chúng ta sẽ thu được các kết quả như thể hiên bên dưới (tham khảo hình 1.0)

    Kết quả

    ...
    ...
    ...
    ...
    Checking Top 10 Queries based on CPU Usage.
    .............................
    WARNING: column "AvgCPUTime" does not fit into the display and was removed.
    query_text
    ----------
    select top 2...
    select top 2...
    UPDATE [Notifications] WITH (TABLOCKX)...
    select name from master.dbo.sysdatabases
    select @dbsize = sum(convert(bigint,case when status & 64 = 0 then size else 0 end))...
    select @dbsize = sum(convert(bigint,case when status & 64 = 0 then size else 0 end))...
    select @configcount = count(*)...
    UPDATE [Event] WITH (TABLOCKX)...
    select @confignum = configuration_id, @prevvalue = convert(int, isnull(value, value_in_use))...
    Update [Notifications] set [ProcessStart] = NULL, [ProcessHeartbeat] = NULL, [Attempt] = [Attemp...


    Hình 1.0

    Bước 5

    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 TestServer testserver

    Các kết quả nhận được như thể hiện bên dưới (tham khảo hình 1.1)


    Hình 1.1

    Kết luận

    Phần bảy này chúng tôi đã minh chứng cho các bạn được cách truy vấn Top 10 các truy vấn được thực thi trên SQL Server instance về hiệu suất CPU.

    Download các kịch bản cho phần này.

    (Databasejournal)


    --== Cộng đồng tin học ==--
     
    Diễn đàn » Lập Trình » DATABASE » Kiểm tra SQL Server bằng Windows PowerShell (Databasejournal)
    • Page 1 of 1
    • 1
    Search:


      Copyright Cộng đồng tin học © 2024