Saya akhirnya ingin menggunakan PowerShell untuk menggantikan skrip KornShell lama yang kami gunakan untuk monitor contoh SQL. Saya mengalami kesulitan, meskipun, mendapatkan otak saya di semua cara yang berbeda bahwa PowerShell benar-benar dapat berbicara dengan SQL server. Tidak yakin apakah ini semua dari mereka, tetapi di sini ada 5 cara yang sama sekali berbeda saya dapat meminta versi dari server SQL:
1. SQLConnection .NET Class
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=MyServer;Database=Master;Integrated Security=True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "Select @@version as SQLServerVersion"
$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]
2. Penyedia WMI
$sqlProperties = Get-WmiObject
-computerName "MyServer"
-namespace root\Microsoft\SqlServer\ComputerManagement10
-class SqlServiceAdvancedProperty
-filter "ServiceName = 'MSSQLSERVER'"
$sqlProperties.VERSION
3. SMO
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | Out-Null
$smo-var = New-Object ('Microsoft.SqlServer.Management.Smo.Server') 'MyServer\instancename'
$smo-var.VersionString
4. PSDrive
Set-Location SQLSERVER:\SQL\MyServerName\
$server = Get-Item Default
$server.get_VersionString()
5. Invoke-SQLCMD
Invoke-Sqlcmd -Query "SELECT @@version" -ServerInstance "MyServer"
Bagaimana saya harus memutuskan teknik mana yang akan digunakan untuk skenario yang berbeda? Apakah ada pro / kontra dari masing-masing? Apakah beberapa teknik PowerShell 1.0 yang diunggulkan di 2.0? Akankah beberapa dari mereka tidak bekerja untuk berkomunikasi dengan server SQL 2000 atau 2005?
Pada satu tingkat, saya yakin jawabannya adalah "gunakan apa pun yang berhasil", tetapi bagi seseorang yang baru mengenal Powershell, sangat membingungkan untuk melihat begitu banyak contoh yang ditulis seperti # 1 di atas, ketika itu adalah yang terpanjang dan (dalam pikiran saya) paling tidak Contoh "mirip tenaga".
Info sedikit lebih banyak dalam hal itu relevan: server SQL yang benar-benar akan menjalankan skrip monitor adalah SQL 2005, tetapi digunakan untuk terhubung ke beberapa contoh dari SQL 2000 hingga 2008R2.