MicrosoftWindowsPowerShellvàSQLServer2005SMO–PhầnIIPhần I của loạt này chỉ dẫn cách thiết lập và sử dụng lệnh
PowerShell vàSMO đơn giản.Trong phầnII này chúng ta
sẽ tìm hiểu thêm về PowerShell cũng như các đặc tính của
nó kết hợp với SMO. Nếu bạn đã từng biết sơ qua các
ngôn ngữ lập trình như PERL, Python hay C thì có thể tìm
thấy điểm tương đồng với các cú pháp sử dụng trong
PowerShell. Thêm vào đó nó cũng tương thích với các hệ
điều hành như UNIX, Linux, MS-DOS
Mặc dù PowerShell có sức mạnh lớn nhưng không phải
nhiệm vụ nào cũng có thể sử lý được bằng PowerShell. Tuy nhiên, các thiếu sót của Power Shell
có thể được lấp đầy bằng cách sử dụng các lớp .NET và các trình quản lý Window, như là WMI.
Kỹ thuật tự động hoá của các cmdlet Power Shell có thể được hoàn thành bằng tạo mã kịch bản.
Phục hồi ngày và giờ hệ thống sử dụng Power Shell
Một giá trị ngày giờ đơn giản của hệ thống có thể được phục hồi sử dụng một cmdlet “date” đơn
giản. [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 của hệ thống có thể phục hồi bằng các sử dụng một lớp .NET, thực hiện
theo các cmdlet sau đây. [Hình 1.1]
Hình 1.1
Chúng ta thậm 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ử dụng cmdlet WMI để phục hồi 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 bạn chạy hay thực hiện các truy vấn SQL ad-hock đối với các cơ sở
dữ liệuSQL 2000 hay SQL2005.
Chúng ta có thể lấy giá trị Date and Time từ SQL Server sử dụng SQLServer Management
Object và hàm getdate(). Trong ví dụ này, chúng ta thực hiện kết nối đơn giản tới một SQL
Server và thực hiện hàm đơn giản getdate() để phục hồi giá trị Date and Time theo các lệnh
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ử dụng cho bất kỳ truy vấn adhoc nào. Hãy thực hiện thủ tục
đượ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
created : Apr 22 2007
status :
compatibility_level : 90
name : XMLTest
db_size : 2.68 MB
owner : HOME\MAK
dbid : 7
created : Apr 17 2007
status : Status=ONLINE, Updateability=READ_WRITE,
UserAccess=MULTI_USER, Recovery=SIMPLE, Version=611, Col
lation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52,
IsAutoClose, IsAutoCreateStatistics, IsAuto
UpdateStatistics, IsFullTextEnabled
compatibility_level : 90
Kết luận
Trong phầnII chúng tôi đã giới thiệu các phương pháp khác nhau (WMI, các lớp .Net ) mà bạn
có thể sử dụng để khôi phục thông tin trên máy chủ Window vàSQLServer
. Microsoft Windows PowerShell và SQL Server 2005 SMO – Phần II
Phần I của loạt này chỉ dẫn cách thiết lập và sử dụng lệnh
PowerShell và SMO đơn. truy vấn SQL ad-hock đối với các cơ sở
dữ liệu SQL 2000 hay SQL 2005.
Chúng ta có thể lấy giá trị Date and Time từ SQL Server sử dụng SQLServer Management