YOMEDIA
Microsoft Windows Power Shell và SQL Server 2005 SMO – Phần 4
Chia sẻ: Abcdef_43 Abcdef_43
| Ngày:
| Loại File: PDF
| Số trang:11
67
lượt xem
5
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Tham khảo tài liệu 'microsoft windows power shell và sql server 2005 smo – phần 4', công nghệ thông tin, cơ sở dữ liệu phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
AMBIENT/
Chủ đề:
Nội dung Text: Microsoft Windows Power Shell và SQL Server 2005 SMO – Phần 4
- Microsoft Windows Power Shell và SQL Server 2005 SMO – Phần 4
Phần I và Phần II của loạt bài này đã chỉ dẫn các thiết lập Power Shell, SMO
và WMI cmdlet đơn giản. Phần III chỉ dẫn viết mã PowerShell và kết nối với
SQL Server. Phần 4 sẽ giới thiệu cách sử dụng mã PowerShell để lặp nội dung
tập tin và kết nối tới các máy chủ khác.
Hãy tưởng tượng rằng chúng ta muốn kết nối tới các SQL Servers khác nhau
và thu thập thông tin chính xác nh ư tên máy chủ, phiên bản và tất cả tên các cơ
sở dữ liệu.
Bước 1
Chúng ta cần tạo một đoạn mã PowerShell hiển thị tất cả các thông tin trên đối
với một máy chủ. Tạo connect2.ps1 nh ư minh họa dưới đây. [Hình 1.0]
param (
[string] $SQLSERVER
)
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString =
"Server=$SQLSERVER;Database=master;Integrated Security=True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "select 'Servername:
'+@@servername as Result union Select 'Version:'+
@@version as Result union select 'Database:' +name from sysdatabases as
Result
order by Result desc "
$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]
- Hình 1.0
Bước 2
Thực hiện đoạn m ã sau: [Hình 1.1]
./connect2 "HOME"
Chú ý: HOME là tên máy ch ủ. Hãy thay vào đó tên máy chủ của bạn.
Kết quả
Result
------
Version:Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) ...
Servername: HOME
Database: VixiaTrack
Database: vixiadata
Database: vixia
Database: TrackEquipment
Database: test
- Database: tempdb
Database: Sales2
Database: Sales
Database: pubs
Database: Northwind
Database: msdb
Database: model
Database: master
Database: Legacy_Vixia
Database: abc3
Database: abc2
Database: abc
Hình 1.1
Bước 3
Hãy lặp qua một tập tin và hiển thị ra nội dung của tập tin đó. Tạo mã
loop1.ps1 sau đây: [Hình 1.2] Đồng thời tạo tập tin serverlist.txt file. [H ình
1.3]
param (
[string] $filename
)
$computers = get-content $filename
foreach ($computer in $comp uters)
{
write-host $computer
- }
Hình 1.2
Serverlist.txt
HOME
HOME\SQLEXPRESS
Hình 1.3
Hãy thực hiện mã loop1.ps1. [Hình 1.4]
./loop1 serverlist.txt
- Hình 1.4
Bước 4
Bây giờ hãy kết hợp connect2.ps1 và loop1.ps1 để thu được tên của SQL
Server, phiên bản SQL Server và tất cả tên các cơ sở dữ liệu liệt kê trên
serverlist.txt.
Tạo connect3.ps1 như sau: [Hình 1.5]
param (
[string] $filename
)
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$computers = get-content $filename
foreach ($computer in $computers)
{
write-host "Details of the Server :" $computer
write-host "----------------------------------- "
$SqlConnection.ConnectionString =
"Server=$computer;Database=master;Integrated Security=True"
$SqlCmd = New-Object System.Data .SqlClient.SqlCommand
$SqlCmd.CommandText = "select 'Servername: '+@@servername as Result
union Select 'Version: '
+@@version as Result union select 'Database:' +name from sysdatabases as
Result
order by Result desc "
- $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]
}
Hình 1.5
Bước 5
Hãy thực hiện đoan mã sau đây: [Hình 1.6]
./connect3 serverlist.txt
- Hình 1.6
Kết quả:
Details of the Server : HOME
-----------------------------------
19
Result
------
Version: Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) ...
Servername: HOME
Database: VixiaTrack
Database: vixiadata
Database: vixia
Database: TrackEquipment
Database: test
Database: tempdb
Database: Sales2
Database: Sales
Database: pubs
Database: Northwind
Database: msdb
Database: model
Database: master
Database: Legacy_Vixia
Database: abc3
Database: abc2
- Database: abc
Details of the Server : HOME\SQLEXPRESS
-----------------------------------
11
Version: Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86) ...
Servername: HOME\SQLEXPRESS
Database: XMLTest
Database: VixiaTrack
Database: test
Database: tempdb
Database: msdb
Database: model
Database: master
Database: AdventureWorks
Database: admin
Bây giờ bạn hãy tạo một mã PowerShell thực hiện giống nhau, sử dụng SQL
Server SMO.
Bước 1
Tạo mã connect4.ps1 PowerShell [Hình 1.7]
param
(
[string] $filename
)
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$computers = get-content $filename
foreach ($computer in $computers)
{
write-host "Details of the Server :" $computer
write-host "----------------------------------- "
$Server = new-object ("Microsoft.SqlServer.Management.Smo.Server")
"$computer"
write-host "Server Version: " $Server.Serverversion
write-host "Server Name: " $Server.Information.VersionString
foreach($database in $Server.databases)
{
- write-host "Database:" $database.name
}
}
Hình 1.7
Bước 2
Thực hiện mã connect4.ps1 được tạo ra ở trên [Hình 1.8]
./connect4 serverlist.txt
- Hình 1.8
Kết quả
PS C:\ps> ./connect4 serve rlist.txt
GAC Version Location
--- ------- --------
True v2.0.50727
C:\WINDOWS\assembly\GAC_MSIL\Microsoft.SqlServer.Smo\9...
Details of the Server : HOME
-----------------------------------
Server Version:
Server Name: 8.00.2039
Database: abc
Database: abc2
Database: abc3
Database: Legacy_Vixia
Database: master
Database: model
Database: msdb
Database: Northwind
Database: pubs
Database: Sales
Database: Sales2
Database: tempdb
Database: test
Database: TrackEquipment
Database: vixia
Database: vixiadata
Database: VixiaTrack
Details of the Server : HOME\SQLEXPRESS
- -----------------------------------
Server Version:
Server Name: 9.00.2047.00
Database: admin
Database: AdventureWorks
Database: master
Database: model
Database: msdb
Database: tempdb
Database: test
Database: VixiaTrack
Database: XMLTest
Kết luận
Phần IV giới thiệu cách sử dụng mã PowerShell script để lặp qua nội dung của
tập tin và kết nối tới các máy chủ khác nhau. Phần này cũng giới thiệu cách
làm tương tự sử dụng SQL Server SMO.
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
ERROR:connection to 10.20.1.100:9315 failed (errno=111, msg=Connection refused)
ERROR:connection to 10.20.1.100:9315 failed (errno=111, msg=Connection refused)
Đang xử lý...