【问题标题】:Syntax error when run in as step in SQL Server Agent Job在 SQL Server 代理作业中作为步骤运行时出现语法错误
【发布时间】:2018-07-20 12:42:17
【问题描述】:

当您在 PowerShell 窗口中运行以下脚本时,它可以正常工作。

Import-Csv $DestinationFile | ForEach-Object {
    Invoke-Sqlcmd -Database $database -ServerInstance $server -Query "INSERT INTO $table VALUES ('$($SourceFile)','$($_.LineNumber)','$($_.LineDescription)','$($_.Criteria)','$($_.LineValue)')"
}

但是当您通过 SQL Server 代理作业运行此脚本时......它会给出语法错误。

下面提到的行在安排为作业时也不起作用。

$objWord = New-Object -Com Word.Application
$objWord.Visible = $false # $false

使用 PowerShell,我们搜索文档并根据模式搜索,我们找到的结果...我们将它们导入数据库。

当您在 PowerShell 控制台中运行时一切正常,但当您尝试通过 SQL Server 运行 PS1 文件时,它什么也没做。

【问题讨论】:

  • 错误说明了什么?你是如何创造这份工作的?是否安装了 SQL Server PowerShell 模块?
  • 如何查看sql server powershell模块是否安装
  • 当您将其作为作业安装时 - 在类型...下,您可以选择 POWERSHELL...。
  • Get-Module -ListAvailable 是否显示模块 SqlServer?您首先使用的是哪个 SQL Server 版本?
  • 我们正在使用的SQL 2016,我也导入了Import-module sqlps

标签: sql-server powershell sql-server-2016


【解决方案1】:

请试试这个,因为在 SQL 代理中$( ... )是保留的。

Import-Csv $DestinationFile | ForEach-Object {
    Invoke-Sqlcmd -Database $database -ServerInstance $server -Query "INSERT INTO $table VALUES ('$SourceFile','" + $_.LineNumber + "','" + $_.LineDescription + "','" + $_.Criteria + "','" + $_.LineValue + "')"
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多