Kim tra SQL Server bng Windows PowerShell – Phn 5
Phn 1 ca lot bài này đã gii thiu v kim tra
đầu tiên trên SQL Server – các ping mt host. Phn
2 là gii thiu v cách kim tra tt c các dch v
ca Windows có liên quan đến SQL Server, phn 3
là cách kim tra các thông tin phn cng và phn
mm, phn 4 là gii thiu v cách thu thp các
thông tin v card mng và đĩa cng t máy ch.
Trong phn 5 này chúng ta s kim tra xem có th
kết ni vi SQL Server hay không và xem chúng ta có th truy vn mt s thuc tính liên quan
đến SQL Server.
Bước 1
Đánh hoc copy và paste đon 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 hoc copy và paste đon 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
Gn vào file C:\CheckSQLServer\CheckSQL_Lib.ps1 đon 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
hin 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 cp nht vi ngun dn t các file kch bn mi,
chng hn như checkinstance.ps1 and checkconfiguration.ps1
Bước 4
Gn thêm vào file C:\CheckSQLServer\CheckSQLServer.ps1 đon 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 kch bn checkinstance và checkconfiguration như th hin bên dưới.
Chúng tôi đã thêm vào mt vài lnh write-host để hin th toàn b quá trình. Các bn cũng cn
lưu rng chúng tôi đã thêm $instancename vi tư cách là mt tham s b sung cho kch bn
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 cp nht các điu kin mi và các tham s mi
trong các phn sau này ca lot bài.
Vic load v cơ bn s ti các chc năng được lit kê trong các kch bn và làm cho nó tr lên
hin hu trong sut toàn b PowerShell session. Trong trường hp này, chúng tôi dn ngun mt
kch bn, kch bn này li ly ngun t nhiu kch bn khác.
Bước 5
Lúc này chúng ta hãy thc thi kch bn, CheckSQLServer.ps1, bng cách passing
“PowerServer3” host vi tư cách mt đối s như th hin bên dưới.
./CheckSQLServer.ps1 PowerServer3 PowerServer3\SQL2008
Chúng ta s gp kết qu như th hin 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