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

问题描述 投票:0回答:1

我有一个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错误不被视为脚本执行错误,就可以认为它是成功的运行。工作历史包含有用的信息。

sql-server powershell sql-server-agent
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.