Jaki jest najłatwiejszy sposób sprawdzenia wersji SQL Server Edition i wersji przy użyciu programu powershell?Jak sprawdzić wersję programu SQL Server przy użyciu Powershell?
Odpowiedz
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTimeout 3
Wszystko, co potrzebne jest, aby połączyć się z SQL Server i uruchomić tę kwerendę:
select @@version
To, oczywiście, będzie pracować dla każdego narzędzia roboczego.
Dodatkowo, jest również dostępna:
SELECT SERVERPROPERTY('productversion'),
SERVERPROPERTY ('productlevel'),
SERVERPROPERTY ('edition')
więcej sposobów, aby określić wersję SQL Server tutaj: "" http://support.microsoft.com/kb/321185
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null
$srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" "."
$srv.Version
$srv.EngineEdition
Oczywiście, należy wymienić z nazwą instancji. Jeśli chcesz zobaczyć wszystkie dostępne metody, wejdź na here.
To jest świetne, ponieważ pozwala na łatwe użycie numeru wersji (lub cokolwiek chcesz) w pozostałej części skryptu. –
Tylko opcja korzystania z rejestru, znalazłem to może być szybciej na niektóre z moich systemów:
$inst = (get-itemproperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances
foreach ($i in $inst)
{
$p = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL').$i
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$p\Setup").Edition
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$p\Setup").Version
}
Hacked się informacje z tego wątku (i kilka innych), to poszło w moim psprofile:
Function Get-SQLSvrVer {
<#
.SYNOPSIS
Checks remote registry for SQL Server Edition and Version.
.DESCRIPTION
Checks remote registry for SQL Server Edition and Version.
.PARAMETER ComputerName
The remote computer your boss is asking about.
.EXAMPLE
PS C:\> Get-SQLSvrVer -ComputerName mymssqlsvr
.EXAMPLE
PS C:\> $list = cat .\sqlsvrs.txt
PS C:\> $list | % { Get-SQLSvrVer $_ | select ServerName,Edition }
.INPUTS
System.String,System.Int32
.OUTPUTS
System.Management.Automation.PSCustomObject
.NOTES
Only sissies need notes...
.LINK
about_functions_advanced
#>
[CmdletBinding()]
param(
# a computer name
[Parameter(Position=0, Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[System.String]
$ComputerName
)
# Test to see if the remote is up
if (Test-Connection -ComputerName $ComputerName -Count 1 -Quiet) {
# create an empty psobject (hashtable)
$SqlVer = New-Object PSObject
# add the remote server name to the psobj
$SqlVer | Add-Member -MemberType NoteProperty -Name ServerName -Value $ComputerName
# set key path for reg data
$key = "SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"
# i have no idea what this does, honestly, i stole it...
$type = [Microsoft.Win32.RegistryHive]::LocalMachine
# set up a .net call, uses the .net thingy above as a reference, could have just put
# 'LocalMachine' here instead of the $type var (but this looks fancier :D)
$regKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($type, $ComputerName)
# make the call
$SqlKey = $regKey.OpenSubKey($key)
# parse each value in the reg_multi InstalledInstances
Foreach($instance in $SqlKey.GetValueNames()){
$instName = $SqlKey.GetValue("$instance") # read the instance name
$instKey = $regKey.OpenSubkey("SOFTWARE\Microsoft\Microsoft SQL Server\$instName\Setup") # sub in instance name
# add stuff to the psobj
$SqlVer | Add-Member -MemberType NoteProperty -Name Edition -Value $instKey.GetValue("Edition") -Force # read Ed value
$SqlVer | Add-Member -MemberType NoteProperty -Name Version -Value $instKey.GetValue("Version") -Force # read Ver value
# return an object, useful for many things
$SqlVer
}
} else { Write-Host "Server $ComputerName unavailable..." } # if the connection test fails
}
Może bardziej szczegółowo opisać, co robi twój kod? – cereallarceny
Mam nadzieję, że edycja pomogła – brendan62269
Cóż, tutaj jest to stary sposób szkoła, to proste:
sqlcmd -Q "select @@version;"
A oto jak go używać z Serverspec:
require 'windows_spec_helper'
describe 'MS SQL Server Express' do
describe service('MSSQLSERVER') do
it { should be_enabled }
it { should be_running }
end
describe port(1433) do
it { should be_listening }
end
describe command('sqlcmd -Q "select @@version;"') do
its(:stdout) { should match /Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)/ }
end
end
Aby dodać do kodu Brendana .. to się nie powiedzie, jeśli urządzenie jest 64-bitowy, więc trzeba odpowiednio przetestować.
Function Get-SQLSvrVer {
<#
.SYNOPSIS
Checks remote registry for SQL Server Edition and Version.
.DESCRIPTION
Checks remote registry for SQL Server Edition and Version.
.PARAMETER ComputerName
The remote computer your boss is asking about.
.EXAMPLE
PS C:\> Get-SQLSvrVer -ComputerName mymssqlsvr
.EXAMPLE
PS C:\> $list = cat .\sqlsvrs.txt
PS C:\> $list | % { Get-SQLSvrVer $_ | select ServerName,Edition }
.INPUTS
System.String,System.Int32
.OUTPUTS
System.Management.Automation.PSCustomObject
.NOTES
Only sissies need notes...
.LINK
about_functions_advanced
#>
[CmdletBinding()]
param(
# a computer name
[Parameter(Position=0, Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[System.String]
$ComputerName
)
# Test to see if the remote is up
if (Test-Connection -ComputerName $ComputerName -Count 1 -Quiet) {
$SqlVer = New-Object PSObject
$SqlVer | Add-Member -MemberType NoteProperty -Name ServerName -Value $ComputerName
$base = "SOFTWARE\"
$key = "$($base)\Microsoft\Microsoft SQL Server\Instance Names\SQL"
$type = [Microsoft.Win32.RegistryHive]::LocalMachine
$regKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($type, $ComputerName)
$SqlKey = $regKey.OpenSubKey($key)
try {
$SQLKey.GetValueNames()
} catch { # if this failed, it's wrong node
$base = "SOFTWARE\WOW6432Node\"
$key = "$($base)\Microsoft\Microsoft SQL Server\Instance Names\SQL"
$regKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($type, $ComputerName)
$SqlKey = $regKey.OpenSubKey($key)
}
# parse each value in the reg_multi InstalledInstances
Foreach($instance in $SqlKey.GetValueNames()){
$instName = $SqlKey.GetValue("$instance") # read the instance name
$instKey = $regKey.OpenSubkey("$($base)\Microsoft\Microsoft SQL Server\$instName\Setup") # sub in instance name
# add stuff to the psobj
$SqlVer | Add-Member -MemberType NoteProperty -Name Edition -Value $instKey.GetValue("Edition") -Force # read Ed value
$SqlVer | Add-Member -MemberType NoteProperty -Name Version -Value $instKey.GetValue("Version") -Force # read Ver value
# return an object, useful for many things
$SqlVer
}
} else { Write-Host "Server $ComputerName unavailable..." } # if the connection test fails
}
Try This
Invoke-SqlCmd -query "select @@version" -ServerInstance "localhost"
Sprawdź wszystkie dostępne metody Get the build number of the latest Cumulative Update/Service Pack that has been installed in SQL Server
Czy słyszałeś o wklejeniu TEKSTU, gdy chcesz udostępnić kod lub polecenia? To jest l33t. –
- 1. Jak wywołać procedurę przechowywaną programu SQL Server z programu PowerShell?
- 2. Jak zatrzymać wykonywanie procedury składowanej przy użyciu programu SQL Server?
- 3. Jak sprawdzić wersję db2
- 4. Jak przechowywać i pobierać obrazy przy użyciu programu SQL Server (Server Management Studio)
- 5. Połączyć się z bazą danych programu SQL Server od PowerShell
- 6. Jak zatrzymać usługi IIS przy użyciu programu PowerShell?
- 7. przy użyciu regex w SQL Server
- 8. Aktualizacja SQL Server przy użyciu wielu tabel
- 9. Jak ustawić strefę czasową przy użyciu Powershell
- 10. Wyświetlenia indeksowane programu SQL Server
- 11. Alternatywa programu Doradca dostrajania programu SQL Server?
- 12. Upuść bazę danych SQL Server z powershell
- 13. Narzędzie różnicowe programu SQL Server
- 14. Określanie wersji programu SQL Server z ADO.NET
- 15. Jak uzyskać wszystkich przodków węzła przy użyciu hierarchyid programu SQL Server 2008?
- 16. Czytanie danych z SQL Server przy użyciu Spark SQL
- 17. Jak przekonwertować plik .mdf programu SQL Server 2008 do programu SQL Server 2012?
- 18. Wstawianie obrazu do obrazu SQL Server 2005 przy użyciu tylko SQL
- 19. Jak przechowywać wiele rekordów w SQL Server przy użyciu DataGridView
- 20. sqlbulkcopy przy użyciu sql CE
- 21. Powershell - Odwzorowanie użytkowników SQL Server 2012
- 22. Jak sprawdzić, czy baza danych istnieje w SQL Server?
- 23. Jak sprawdzić równość przy użyciu Iskry Dataframe bez zapytania SQL?
- 24. Jak sprawdzić wersję boostu?
- 25. Jak znaleźć wersję Lazur PowerShell?
- 26. Różnica między przystawkami/narzędziami PowerShell/SQL Server?
- 27. Tworzenie tabeli tymczasowej w programie SQL Server 2008 przy użyciu makra programu Excel (ADODB)
- 28. Przeprowadzanie operacji podobnej do SUMIF przy użyciu programu SQL Server Report Builder
- 29. Jak sprawdzić, czy dana usługa jest uruchomiona na komputerze zdalnym przy użyciu PowerShell
- 30. Nawiązanie połączenia z wystąpieniem programu SQL Server przy użyciu pymssql w systemie Windows
wymaga, aby zalogować się do instancji. nie do końca natywna PS –
Działa to dla mnie, ale wynikowy ciąg jest obcięty. W jaki sposób uzyskać cały wynik (wielowierszowy) z powrotem do PowerShell jako jeden długi (pełny/kompletny/nieobcinany) ciąg? – Mark