Microsoft Windows PowerShell và SQL Server 2005 SMO – Phần I
Như bạn có lẽ đã biết, Windows PowerShell là tiện ích
dòng lệnh mới và là ngôn ngữ kịch bản cung cấp một
môi trường dòng lệnh cho việc khảo sát tương tác và
quản trị của máy tính. Ngoài ra, nó cung cấp một khả
năng viết kịch bản cho các lệnh này vì thế mà chúng tôi
có thể hoạch định và chạy chúng nhiều lần.
Windows PowerShell phụ thuộc vào .NET framework
2.0.
SQL Server Management Objects, được biết đến như SMO, là một mô hình đối tượng cho SQL
Server và thiết lập cấu hình của nó. Ứng dụng nền tảng SMO sử dụng các ngôn ngữ .NET
Framework để lập trình chống lại mô hình đối tượng bộ nhớ.
Trong loạt bài này, tôi sẽ chứng minh sức mạnh của Windows PowerShell phối hợp với SQL
Server 2005. Cụ thể là trong phần I này, chúng tôi sẽ chỉ dẫn cách thiết lập và sử dụng lệnh một
lệnh PowerShell và SMO đơn giản.
Giả thiết
a. Máy tính đã cài đặt .NET 2.0
b. Máy tính đã cài đặt phiên bản gói dịch vụ SQL Server 2005 mới nhất
Tải về và cài đặt Microsoft PowerShell
a. Tải về file cài đặt Microsoft PowerShell “WindowsXP-KB926139-x86-ENU.exe” từ địa chỉ
http://download.microsoft.com
b. Cài đặt PowerShell lên máy tính
Bước 1: Kích đúp vào file chạy “WindowsXP-KB926139-x86-ENU.exe”. [Hình 1.0]
Hình 1
Bước 2: Kích “Run”. [Hình 1.1]
Hình 2
Bước 3: Kích “Next”. [Hình 1.2]
Hình 3
Bước 4: Chọn tùy chọn “I agree”. [Hình 1.3]
Hình 4
Bước 5: Chờ quá trình cài đặt. [Hình 1.4]
Hình 5
Bước 6: Kích Finish. [Hình 1.5]
Hình 6
Chạy PowerShell
Có một số cách để chạy PowerShell. Một phương pháp là tìm tới dấu nhắc lệnh và nhập lệnh
PowerShell. [Hình 1.6]
PowerShell
Hình 7
Lệnh PowerShell xuất hiện. [Hình 1.7]
Hình 8
Cách khác, bạn có thể chạy PowerShell bằng cách chọn Programs-Windows PowerShell 1.0-
Windows PowerShell. [Hình 1.8]
Hình 9
Lệnh Help
Trong các cửa sổ PowerShell, bạn có thể truy cập vào danh sách các lệnh bằng cách nhập lệnh
Get-command
Lệnh này sẽ hiển thị toàn bộ các lệnh có sẵn trong PowerShell. [Hình 1.9]
Add-Content New-Alias
Add-History New-Item
Add-Member New-ItemProperty
Add-PSSnapin New-Object
Clear-Content New-PSDrive
Clear-Item New-Service
Clear-ItemProperty New-TimeSpan
Clear-Variable New-Variable
Compare-Object Out-Default
ConvertFrom- Out-File
SecureString Out-Host
Convert-Path Out-Null
ConvertTo-Html Out-Printer
ConvertTo- Out-String
SecureString Pop-Location
Copy-Item Push-Location
Copy-ItemProperty Read-Host
Export-Alias Remove-Item
Export-Clixml Remove-ItemProperty
Export-Console Remove-PSDrive
Export-Csv Remove-PSSnapin
ForEach-Object Remove-Variable
Format-Custom Rename-Item
Format-List Rename-ItemProperty
Format-Table Resolve-Path
Format-Wide Restart-Service
Get-Acl Resume-Service
Get-Alias Select-Object
Get- Select-String
AuthenticodeSignature Set-Acl
Get-ChildItem Set-Alias
Get-Command Set-
Get-Content AuthenticodeSignature
Get-Credential Set-Content
Get-Culture Set-Date
Get-Date Set-ExecutionPolicy
Get-EventLog Set-Item
Get-ExecutionPolicy Set-ItemProperty
Get-Help Set-Location
Get-History Set-PSDebug
Get-Host Set-Service
Get-Item Set-TraceSource
Get-ItemProperty Set-Variable
Get-Location Sort-Object
Get-Member Split-Path
Get-PfxCertificate Start-Service
Get-Process Start-Sleep
Get-PSDrive Start-Transcript
Get-PSProvider Stop-Process
Get-PSSnapin Stop-Service
Get-Service Stop-Transcript
Get-TraceSource Suspend-Service
Get-UICulture Tee-Object
Get-Unique Test-Path
Get-Variable Trace-Command
Get-WmiObject Update-FormatData
Group-Object Update-TypeData
Import-Alias Where-Object
Import-Clixml Write-Debug
Import-Csv Write-Error
Invoke-Expression Write-Host
Invoke-History Write-Output
Invoke-Item Write-Progress
Join-Path Write-Verbose
Measure-Command Write-Warning
Measure-Object
Move-Item
Move-ItemProperty
Hình 10
Một SMO đơn giản trong PowerShell
Hãy truy vấn sys.sydatabases của SQL Server trường hợp “SQLEXPRESS” từ máy chủ
“HOME” sử dụng PowerShell và SMO.
Bước 1: Vào cửa sổ lệnh: Start – run – cmd
Bước 2: Bắt đầu PowerShell bằng cách nhập lệnh
PowerShell
Bước 3: Thực hiện các lệnh, từng bước một, như sau
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$Server = new-object ("Microsoft.SqlServer.Management.Smo.Server")
"HOME\SQLEXPRESS"
foreach($database in $Server.databases) {$database.name}
Bạn sẽ thu được kết quả như hình dưới. [Hình 2.0]
Hình 11
Các thành phần SMO
Để hiển thị tất cả các thành phần liên quan đến đối tượng $Server, thực hiện lệnh dưới đây.
Bước 1: Vào cửa sổ lệnh: Start – run – cmd
Bước 2: Bắt đầu PowerShell bằng cách nhập lệnh
PowerShell
Bước 3: Thực hiện các lệnh, từng bước một, như sau
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$Server = new-object ("Microsoft.SqlServer.Management.Smo.Server")
"HOME\SQLEXPRESS"
$server | get-member
Bạn sẽ thu được kết quả như hình dưới. [Hình 2.1]
Alter get_State
AttachDatabase get_SystemDataTypes
CompareUrn get_SystemMessages
DeleteBackupHistory get_Triggers
Deny get_Urn
DetachDatabase get_UserData
DetachedDatabaseInfo get_UserDefinedMessages
EnumAvailableMedia get_UserOptions
EnumCollations Grant
EnumDatabaseMirrorWitnessRoles Initialize
EnumDetachedDatabaseFiles IsDetachedPrimaryFile
EnumDetachedLogFiles IsWindowsGroupMember
EnumDirectories KillAllProcesses
EnumErrorLogs KillDatabase
EnumLocks KillProcess
EnumMembers PingSqlServerVersion
EnumObjectPermissions ReadErrorLog
EnumPerformanceCounters Refresh
EnumProcesses Revoke
EnumServerAttributes SetDefaultInitFields
EnumServerPermissions set_DefaultTextMode
EnumStartupProcedures set_UserData
EnumWindowsDomainGroups ToString
EnumWindowsGroupInfo ActiveDirectory
EnumWindowsUserInfo BackupDevices
Equals Configuration
GetActiveDBConnectionCount ConnectionContext
GetDefaultInitFields Credentials
GetHashCode Databases
GetPropertyNames DefaultTextMode
GetSmoObject Endpoints
GetType Events
get_ActiveDirectory FullTextService
get_BackupDevices Information
get_Configuration InstanceName
get_ConnectionContext JobServer
get_Credentials Languages
get_Databases LinkedServers
get_DefaultTextMode Logins
get_Endpoints Mail
get_Events Name
get_FullTextService NotificationServices
get_Information Properties
get_InstanceName ProxyAccount
get_JobServer ReplicationServer
get_Languages Roles
get_LinkedServers ServiceMasterKey
get_Logins Settings
get_Mail State
get_Name SystemDataTypes
get_NotificationServices SystemMessages
get_Properties Triggers
get_ProxyAccount Urn
get_ReplicationServer UserData
get_Roles UserDefinedMessages
get_ServiceMasterKey UserOptions
get_Settings
Hình 12
Kết luận
Như đã giải thích từ đầu bài viết, loạt bài này sẽ minh họa sức mạnh Windows PowerShell phối
hợp với SQL Server 2005. Trong loạt bài này, tôi sẽ chứng minh sức mạnh của Windows
PowerShell phối hợp với SQL Server 2005. Phần I của loạt này đã chỉ dẫn cách thiết lập và sử
dụng một lệnh PowerShell và SMO đơn giản.