SQL代理 - PowerShell步骤“语法错误”

时间:2015-06-27 00:16:38

标签: sql-server powershell

我有一个在PowerShell窗口中运行良好的PowerShell块但是当我将相同的代码放入SQL Server代理作业步骤并尝试执行它时,它失败并显示以下消息。

Date              27.6.2015 1:00:00
Log               Job History (JobName)
Step ID            1
Server             ServerName
Job Name           JobName
Step Name          Step1
Duration           00:00:00
Sql Severity       0
Sql Message ID     0
Operator Emailed        
Operator Net sent       
Operator Paged      
Retries Attempted   0

消息

  

无法开始执行步骤1(原因:第(46)行:语法错误)。   步骤失败了。

以下是有问题的代码

$text = $table | Where-Object {$_.Pending_Messages -gt $threshold} | Out-String 
$html = "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Strict//EN""  ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd""><html xmlns=""http://www.w3.org/1999/xhtml""><head>$style</head><body>$name <br />$warning<br /><br /><table><tr><td>Pending_Messages</td><td>Transaction Profile ID</td><td>Description</td><td>name</td><td>Last Activity</td><td>Address</td><td>Minimum Sent Time</td><td>Awake</td></tr>"
foreach ($Row in $table.Rows) { 
  if ($($Row[0]) -gt $threshold) { # <--- This is line 46
    $ToSend = 1
    write-host "value is : $($Row[0])"
    $html += "<tr><td>" + $row[0] + "</td><td>" + $row[1] + "</td><td>" + $row[2] + "</td><td>" + $row[3] + "</td><td>" + $row[4] + "</td><td>" + $row[5] + "</td><td>" + $row[6] + "</td><td>" + $row[7] + "</td></tr>"
    #break
  }
}

出了什么问题?

1 个答案:

答案 0 :(得分:0)

您还没有说过您正在运行的SQL Server或Windows操作系统的版本,但the Agent runs its own version of powershell与您可能已安装的版本不同。

  

在SQL Server 2012上,sqlps实用程序启动PowerShell 2.0

     

在SQL Server 2008 / 2008R2上,sqlps实用程序启动PowerShell 1.0

因此,您可能正在使用仅在PowerShell的更高版本中提供的语法功能,而不是代理运行的语法功能,这就是您收到语法错误消息的原因。