SQL Server:即使报告成功,SQL Server代理也不执行PowerShell脚本

时间:2016-03-07 12:09:49

标签: sql-server powershell sql-server-agent

我有一个PowerShell脚本:

$date = (Get-Date -Format "yyyy_MM_dd_HH_mm_ss")
$file_name_headers= "path_string_"+$date+".csv"
$file_name_data = "path_string_"+$date+".csv"
bcp "SELECT COLUMN_NAME FROM db.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'name1' AND TABLE_SCHEMA='dbo'" queryout $file_name_headers -S servername -t "," -T -c
bcp "db.dbo.name1" out $file_name_data -S servername -t "," -T -c

如果我在PowerShell终端中逐行执行它,那就完成它应该做的事情。当我将其复制粘贴到SQL Server代理中的作业步骤并运行作业时,会报告成功但我看不到应该使用该脚本创建的任何文件。我已成功运行其他代理作业(执行存储过程)。

修改

权限问题。如果SQL Server而不是我使用PowerShell写入文件,则拒绝访问。我可以用它来写入具有足够权限的位置。它被认为是一次成功的运行,因为bcp错误不被视为脚本执行错误。该工作的历史包含有用的信息。

1 个答案:

答案 0 :(得分:0)

本质上来说,问题是您所猜测的,这是与文件操作相关的权限问题。就我而言,我能够创建一个可以访问文件系统的过程。我不确定要在哪里修改用户帐户,因此无法为您提供帮助。但是,在过程中访问文件系统的常见命令是:

EXEC xp_cmdshell 'DEL E:\folder\anotherfolder\*.txt'

然后,您只需与脚本一起在sql server agent作业中运行该过程即可。