Я пытаюсь создать сценарий PowerShell, который будет запускать сценарии MS SQL, которые будут обновлять базу данных SQL Server. Сценарии SQL будут сохранены в определенной папке, и после запуска PowerShell он должен запускать сценарии без запуска Management Studio.
У меня есть команда PowerShell, которая может запускать и запускать sqlcmd
в PowerShell, но меня подводит то, что когда я использую функцию Invoke-item
PowerShell, она запускает Microsoft SQL Server Management Studio. Я хочу передать учетные данные для входа в сценарий и запустить сценарии SQL без запуска SQL Server Management Studio.
PS C:\Users\Admin> $SqlServer = "localhost"
PS C:\Users\Admin> $SqlDBName = "Test"
PS C:\Users\Admin> $SqlConnection =New-Object System.Data.SqlClient.SqlConnection
PS C:\Users\Admin> $SqlConnection.ConnectionString ="Server = $SqlServer; Database =$SqlDBName; User id ='**'; password ='**'"
PS C:\Users\Admin> Invoke-Item 'D:\MSSQLScripts\AlterTable.sql'
AlterTable.sql похож на это
use Test
Alter table employee
add Dateofjoining date;
select * from Employee
Итак, PowerShell запускает сценарий AlterTable.sql
и запускает вход в Microsoft SQL Server Management Studio на странице. Я хочу, чтобы это было гладко - никакого другого участия человека. Страница входа не должна появляться вообще. Причина передачи учетных данных в строке SqlConnection
состоит в том, чтобы этого избежать. Следует просто изменить базу данных и все, что пользователи должны проверять в файле журнала.