Как сделать веб-запрос вызова на sqlpad? - PullRequest
0 голосов
/ 30 декабря 2018

Привет, я пытался сделать веб-запрос на вызов sqlpad.

У меня есть основа скрипта для установления соединения

Invoke-WebRequest -uri

Однако, когда я запускаю команду, я получаю соединение 200, показывающее, что оно установило соединение, но как мне использовать кэшированные куки или как мне войти в sqlpad с использованием учетных данных и выполнить запрос всего с помощью веб-запроса.

Извините, яновичок в powershell и webrequest, поэтому я ценю все ваши советы, спасибо.

1 Ответ

0 голосов
/ 31 декабря 2018

Это должно быть выполнимо.Вам нужно будет использовать sqlpad api.Чтобы сохранить куки-файлы, вам нужно создать переменную сеанса при входе в систему и повторно использовать ее при последующих вызовах.Чтобы извлечь данные запроса, вам нужно использовать конечную точку запроса.Вам нужно знать connectionId (можно искать API / соединения с помощью браузера) и код SQL (текст запроса).Оказывается, нет прямого способа выполнить запрос по имени запроса.Поэтому вам нужно знать sql запроса или вы можете извлечь его из / api / query для конкретного запроса

 $baseUrl = "http://localhost:39325/api"

 $user = "yourEmail"
 $password = "yourPassword"

 $signinUrl = "$baseUrl/signin?email=$user&password=$password&redirect=false"

 # sign in and create session variable $ws
 if(!$ws) { $r = Invoke-WebRequest -Uri $signinUrl -SessionVariable ws -Method Post } else { Write-Host "connected"}

 # list of available queries and connections. May need to run this to determine connection id or existing query sql
 $QueryList = Invoke-RestMethod -Uri  "$baseUrl/queries" -WebSession $ws
 $ConnectionList = Invoke-RestMethod -Uri "$baseUrl/connections" -WebSession $ws
 Write-Host "Available queries:"
 $QueryList.queries | select name, connectionId, queryText | ft -AutoSize

 # Execute Query

 $params = @{
    connectionId = "vhsNXMXCJeI9QlUL" #use $ConnectionList var or just look up on http://localhost:39325/api/connections/
    cacheKey = "null" #just some dummy value, parameter is required but it's not really affecting anything
    queryName = "test2"  #optional
    queryText = "select top 15 * from sys.columns"  # required
 } | ConvertTo-Json

 $head = @{'Content-Type'='application/json'}

 $data = Invoke-RestMethod -Uri "$baseUrl/query-result" -Method Post -Body $params -Headers $head -WebSession $ws

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