#mysql #powershell
#mysql #powershell
Вопрос:
Я пытаюсь войти на сервер и в базу данных, и команда запускает строки подключения. все, что происходит, — это когда я запускаю команду, опубликованную ниже.
function Execute-MySqlcommand {param( [string]$Server, #the host of the SQL server
[string]$Database1, #the name of the database
[System.Data.MySqlclient.MySqlcommand]$Command) #the command to execute (name of stored command)
$mysqlConnection = new-object System.Data.MySqlclient.MySqlConnection
$MySqlConnection.ConnectionString = "DROP_VIEW DATABASE.BTXADDR;DROP_VIEW DATABASE.BTXSUPB;CREATE_VIEW DATABASE.BTXADDR FOR DATABASE1.DATABASE1S2.BTXADDR;CREATE_VIEW DATABASE.BTXSUPB FOR DATABASE1.DATABASE1S3.BTXSUPB"
$MySqlConnection.ConnectionString = "TRUNCATE TABLE DATABASE1.DATABASE1S2.BTXADDR;TRUNCATE TABLE DATABASE1.DATABASE1S3.BTXSUPB; INSERT INTO DATABASE1.DATABASE1S3.BTXSUPB SELECT * FROM DATABASE1.DATABASE1S2.BTXSUPB; select count(*) from DATABASE1.DATABASE.BTXADDR; select count(*) from DATABASE1S.DATABASE.BTXADDR; select count(*) from DATABASE1.DATABASE.BTXSURB; select count(*) from DATABASE1S.DATABASE.BTXSUPB;"
$Command.CommandType = 1 # 1 is the 'Text' command type
$Command.Connection = $mysqlConnection
$mysqlConnection.Open()
$Result = $Command.ExecuteNonQuery()
$mysqlConnection.Close()
if ($Result -gt 0) {return $True} else {return $False}
}
все, что происходит при выполнении команды, показывает, что ничто из того, что я написал в скрипте, не является неправильным, а затем завершает работу скрипта. Но я пытаюсь войти на сервер и запустить команды скрипта.
Я сам зарегистрировался на сервере, чтобы проверить, действительно ли была запущена команда, и она показывает исходные представления, которые были на месте раньше.
Ответ №1:
Ваша строка подключения не должна содержать SQL, который вы хотите запустить. Если вы подключаетесь к учетной записи домена Windows, это будет
$mysqlConnection.ConnectionString = "Server=$Server;Database=$Database1;Integrated Security=True"
Для команд
$command.CommandText = 'Drop View or whatever SQL you want to run'
$returnVal = $command.ExecuteNonQuery()
Комментарии:
1. Я изменил сценарий, чтобы сделать это, и он по-прежнему не подключался к серверу.
2. Я чувствую себя глупо, я отказался изменить разрешения в powershell, чтобы включить powershell remote. Я запустил это включение-PSRemoting, и теперь команды работают.