Я создаю сценарий PowerShell, который запускает SQL Server Management Studio и открывает необходимый сценарий SQL, а затем передает пользователю управление для выполнения команды выполнения для этого сценария в соответствующей базе данных.
Это связано с тем, что некоторые системы или пользователи могут иметь доступ только к одной базе данных, в то время как другие будут иметь несколько, но не все будут иметь отношение к одному и тому же программному обеспечению, например, одна SQL может иметь только База данных A для программного обеспечения, которое мы хотим обновить, но другая SQL может иметь базу данных A, B, C, где мы хотим обновить только базы данных A и C.
Поэтому мы не можем сделать это, запустив сценарий SQL в PowerShell, поскольку он не дает нам возможности выбрать базу данных, в которой мы хотели бы работать.
Сохранение этого в виду, я написал следующие строки в нашем скрипте для запуска SQL Server Management Studio, но мне нужна помощь с этим.
$serverName = $env:computer
$Selectedfile = "C:\Updatescript.sql"
$MgmtStudioexe = "ssms.exe"#you can use wildcards here for name and for extension
$ProgramFilesx64Path = "C:\Program Files\Microsoft SQL Server"
$ProgramFilesx86Path = "C:\Program Files (x86)\Microsoft SQL Server"
$GetMgmtStudioPathx64 = Get-ChildItem -Path $ProgramFilesx64Path -Filter $MgmtStudioexe -Recurse | ForEach-Object{$_.FullName} |Out-Null
$GetMgmtStudioPathx86 = Get-ChildItem -Path $ProgramFilesx86Path -Filter $MgmtStudioexe -Recurse | ForEach-Object{$_.FullName} |Out-Null
If($null -eq $GetMgmtStudioPathx64) {Write-Host "SQL Managment Studio not found in $ProgramFilesx64Path" -ForegroundColor Red -BackgroundColor Black}
Else {$SQLMgmtStudio = $GetMgmtStudioPathx64}
If($null -eq $GetMgmtStudioPathx86) {Write-Host "SQL Managment Studio not found in $ProgramFilesx86Path" -ForegroundColor Red -BackgroundColor Black}
Else {$SQLMgmtStudio = $GetMgmtStudioPathx86}
Write-Host "Launching SQL Server Management Studio, Please complete upgrading the database in SQL Manamgenet Studio, then Press Enter to continue...." -ForegroundColor Yellow
Start-Process -Wait -FilePath $SQLMgmtStudio -ArgumentList "-s $serverName $SelectedFile"
Так что скрипт сначала проверяет SQL местоположения Server Management Studio по умолчанию, если он не находит его там, то выдает сообщение, что SSMS не был найден; если найдено, $SQLMgmtStudio
задается путь, поэтому его можно вызвать позже.
Проблема в том, что если SQL Server Management Studio не найдена ни в одном месте, я хочу открыть скрипт в любом блокноте или любое другое приложение по умолчанию для открытия файла .sql
.
Также иногда SQL Server Management Studio устанавливается на P C в самом расположении по умолчанию, но скрипт не может его обнаружить, но двойной щелчок по файлу .sql
запустит SQL Server Management Studio.
Также вышеприведенный код logi c имеет недостатки, и я не знаю, как это исправить. Если операторы 2 $ null верны, то я хочу написать Write-Host "SQL Server Management Studio не найдена с запуском update.sql
в редакторе по умолчанию"