почему команда execute-mysql не подключается к серверу и не запускает строки

#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, и теперь команды работают.