Kiểm tra SQL Server bằng Windows PowerShell – Phần 5
Kiểm tra SQL Server bằng Windows PowerShell – Phần 1 Kiểm tra SQL Server bằng Windows PowerShell – Phần 2 Kiểm tra SQL Server bằng Windows PowerShell – Phần 3 Kiểm tra SQL Server bằng Windows PowerShell – Phần 4 Muthusamy Quản trị mạng - Phần 1 ...
Kiểm tra SQL Server bằng Windows PowerShell – Phần 1
Kiểm tra SQL Server bằng Windows PowerShell – Phần 2
Kiểm tra SQL Server bằng Windows PowerShell – Phần 3
Kiểm tra SQL Server bằng Windows PowerShell – Phần 4
Muthusamy
Quản trị mạng - 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:CheckSQLServerCheckinstance.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:CheckSQLServerCheckconfiguration.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:CheckSQLServerCheckSQL_Lib.ps1 đoạn mã sau.
. ./checkinstance.ps1
. ./checkconfiguration.ps1
Lúc này file C:CheckSQLServerCheckSQL_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:CheckSQLServerCheckSQLServer.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 PowerServer3SQL2008
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 POWERSERVER3SQL2008
InstanceName POWERSERVER3SQL2008
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
|
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.