Sonuçta SQL örneği izleyiciler için kullandığımız eski KornShell scriptlerini değiştirmek için PowerShell'i kullanmak isterdim. Yine de, beynimi PowerShell'in aslında SQL sunucusuyla konuşabileceği farklı şekillerde dolaştırmakta zorlanıyorum. Bunların hepsi olup olmadığından emin değilim, ancak bir SQL sunucusunun sürümünü sorgulayabileceğim tamamen farklı 5 yöntem var:
1. SQLConnection .NET Sınıfı
$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. WMI Sağlayıcısı
$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. Çağırın-SQLCMD
Invoke-Sqlcmd -Query "SELECT @@version" -ServerInstance "MyServer"
Bu senaryolardan hangisinin farklı senaryolar için kullanılacağına nasıl karar vereceğim? Her birinin artıları / eksileri var mı? Bu powershell 1.0 tekniklerinden bazıları 2.0'da üst üste getirilmiş midir? Bazıları SQL 2000 veya 2005 sunucuları ile iletişim kurmak için çalışmayacak mı?
Bir düzeyde, cevabın "ne işe yararsa onu kullan" olduğundan eminim, ancak Powershell'de yeni olan biri için, yukarıda en çok ve en az (en çok aklımda) olduğu gibi, yukarıdaki # 1 gibi yazılmış birçok örneği görmek çok kafa karıştırıcı. "powershell benzeri" örneği.
İlgili olması durumunda biraz daha fazla bilgi: Monitör komut dosyalarını çalıştıracak olan SQL sunucusu SQL 2005, ancak SQL 2000'den 2008R2'ye kadar birden fazla örneğe bağlanmak için kullanılır.