Microsoft Windows PowerShell và SQL Server 2005 SMO – Phn II
Phn I ca lot này ch dn cách thiết lp và s dng lnh
PowerShell và SMO đơn gin.Trong phn II này chúng ta
s tìm hiu thêm v PowerShell cũng như các đặc tính ca
nó kết hp vi SMO. Nếu bn đã tng biết sơ qua các
ngôn ng lp trình như PERL, Python hay C thì có th tìm
thy đim tương đồng vi các cú pháp s dng trong
PowerShell. Thêm vào đó nó cũng tương thích vi các h
điu hành như UNIX, Linux, MS-DOS...
Mc dù PowerShell có sc mnh ln nhưng không phi
nhim v nào cũng có th sđược bng PowerShell. Tuy nhiên, các thiếu sót ca Power Shell
có th được lp đầy bng cách s dng các lp .NET và các trình qun lý Window, như là WMI.
K thut t động hoá ca các cmdlet Power Shell có th được hoàn thành bng to mã kch bn.
Phc hi ngày và gi h thng s dng Power Shell
Mt giá tr ngày gi đơn gin ca h thng có th được phc hi s dng mt cmdlet “date” đơn
gin. [Hình 1.0]
Cmdlet:
date
Kết qu:
Tuesday, June 12, 2007 8:52:27 AM
Hình 1.0
Giá tr Date and Time ca h thng có th phc hi bng các s dng mt lp .NET, thc hin
theo các cmdlet sau đây. [Hình 1.1]
Hình 1.1
Chúng ta thm chí có th đưa ra các thông tin chi tiết như Year, Month và Day. [Hình 1.2]
Cmdlet:
[System.DateTime]::get_now().Year
[System.DateTime]::get_now().month
[System.DateTime]::get_now().day
Kết qu:
2007
6
12
Hình 1.2
S dng cmdlet WMI để phc hi thông tin Date and Time. [Hình 1.3]
Cmdlet:
get-wmiobject -Namespace root\cimv2 -Class Win32_CurrentTime
Kết qu:
__GENUS : 2
__CLASS : Win32_LocalTime
__SUPERCLASS : Win32_CurrentTime
__DYNASTY : Win32_CurrentTime
__RELPATH : Win32_LocalTime=@
__PROPERTY_COUNT : 10
__DERIVATION : {Win32_CurrentTime}
__SERVER : HOME
__NAMESPACE : root\cimv2
__PATH : \\HOME\root\cimv2:Win32_LocalTime=@
Day : 12
DayOfWeek : 2
Hour : 9
Milliseconds :
Minute : 3
Month : 6
Quarter : 2
Second : 0
WeekInMonth : 3
Year : 2007
__GENUS : 2
__CLASS : Win32_UTCTime
__SUPERCLASS : Win32_CurrentTime
__DYNASTY : Win32_CurrentTime
__RELPATH : Win32_UTCTime=@
__PROPERTY_COUNT : 10
__DERIVATION : {Win32_CurrentTime}
__SERVER : HOME
__NAMESPACE : root\cimv2
__PATH : \\HOME\root\cimv2:Win32_UTCTime=@
Day : 12
DayOfWeek : 2
Hour : 13
Milliseconds :
Minute : 3
Month : 6
Quarter : 2
Second : 0
WeekInMonth : 3
Year : 2007
Hình 1.3
Power Shell cũng cho phép bn chy hay thc hin các truy vn SQL ad-hock đối vi các cơ s
d liu SQL 2000 hay SQL 2005.
Chúng ta có th ly giá tr Date and Time t SQL Server s dng SQLServer Management
Object và hàm getdate(). Trong ví d này, chúng ta thc hin kết ni đơn gin ti mt SQL
Server và thc hin hàm đơn gin getdate() để phc hi giá tr Date and Time theo các lnh
dưới đây. [Hình 1.4]
Hình 1.4
Cmdlets
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString =
"Server=HOME\SQLEXPRESS;Database=master;Integrated Security=True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "select getdate() as MyDate"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]
Kết qu
MyDate
------
6/12/2007 9:35:18 AM
Ví d tương t này có th được s dng cho bt k truy vn adhoc nào. Hãy thc hin th tc
được lưu tr “sp_helpdb” trình bày dưới đây.
Cmdlets
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString =
"Server=HOME\SQLEXPRESS;Database=master;Integrated Security=True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "sp_helpdb"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]
Kết qu
name : master
db_size : 4.75 MB
owner : sa
dbid : 1
created : Apr 8 2003
status : Status=ONLINE, Updateability=READ_WRITE,
UserAccess=MULTI_USER, Recovery=SIMPLE, Version=611, Col
lation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52,
IsAutoCreateStatistics, IsAutoUpdateStatist
ics
compatibility_level : 90
name : model
db_size : 1.69 MB
owner : sa
dbid : 3
created : Apr 8 2003
status : Status=ONLINE, Updateability=READ_WRITE,
UserAccess=MULTI_USER, Recovery=SIMPLE, Version=611, Col
lation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52,
IsAutoCreateStatistics, IsAutoUpdateStatist
ics
compatibility_level : 90
name : msdb
db_size : 5.44 MB
owner : sa
dbid : 4
created : Oct 14 2005
status : Status=ONLINE, Updateability=READ_WRITE,
UserAccess=MULTI_USER, Recovery=SIMPLE, Version=611, Col
lation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52,
IsAutoCreateStatistics, IsAutoUpdateStatist
ics, IsFullTextEnabled
compatibility_level : 90
name : tempdb
db_size : 2.50 MB
owner : sa
dbid : 2
created : Jun 12 2007
status : Status=ONLINE, Updateability=READ_WRITE,
UserAccess=MULTI_USER, Recovery=SIMPLE, Version=611, Col
lation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52,
IsAutoCreateStatistics, IsAutoUpdateStatist
ics
compatibility_level : 90
name : test
db_size : 2.68 MB
owner : HOME\MAK
dbid : 5
created : Jan 15 2007
status :
compatibility_level : 90
name : VixiaTrack
db_size : 6.94 MB
owner : HOME\MAK
dbid : 6