Запуск SQL Студия управления сервером от Powershell - PullRequest
0 голосов
/ 12 апреля 2020

Я создаю сценарий 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 в редакторе по умолчанию"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...