Как запросить SQL Server (локально) из Azure, используя Runbook PowerShell? - PullRequest
0 голосов
/ 01 апреля 2019

Мне нужно выполнить запрос к локальному экземпляру SQL Server 2016 из нашей учетной записи автоматизации Azure с целью отправки сообщений электронной почты на основе содержимого в базе данных.

Клиент не может установитьсеанс, это проблема сети.Я думаю, что мне не хватает среднего шага или я не дал достаточно информации модулю SQL Server для нашего локального сервера.

  1. Я использую модуль sqlserver
  2. Iпроверил, включены ли настройки TCP / IP для локального экземпляра
  3. Я включил браузер SQL Server (я не думаю, что это требуется)
  4. Я протестировал код на своем локальном ISS Powershellи это сработало
  5. Я пытался использовать аутентификацию Windows и SQL Server

Код:

Import-Module sqlserver

$from       = "x.y@dom.com"
$to         = "email@gmail.com"
$SMTPServer = "smtp.sendgrid.net"
$SMTPPort   = "587"
$username   = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
$password   = "xxxxxxxxxxx"

$subject    = "Email test from Azure SMTP server"
$body       = "Test email body, no content to see here!"

#$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
#$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)
#$smtp.Send($From, $To, $subject, $body)



function Get-EmailBody{

}

<#
    Get all emails which have been merged into the emailChangeHistory table with the flag emailSent = 0.
#>
function Get-ChangeHistory($sqlServer, $database, $emailSent = 0){
    Invoke-Sqlcmd -Query "select 1" -ServerInstance "servername" 
}

Get-ChangeHistory -sqlServer $null, -database $null, -emailSent $null

Я получаю эту ошибку:

Invoke-Sqlcmd: при установлении соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром.
Сервер не найден или недоступен.Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.(поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server)

В строке: 30 символов: 5
+ Invoke-Sqlcmd -Query "выберите 1" -ServerInstance "имя_сервера"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: InvalidOperation: (:) [Invoke-Sqlcmd], SqlException
+ FullyQualifiedErrorId: SqlExceptionError, Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

...