我有一个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错误不被视为脚本执行错误。该工作的历史包含有用的信息。
答案 0 :(得分:0)
本质上来说,问题是您所猜测的,这是与文件操作相关的权限问题。就我而言,我能够创建一个可以访问文件系统的过程。我不确定要在哪里修改用户帐户,因此无法为您提供帮助。但是,在过程中访问文件系统的常见命令是:
EXEC xp_cmdshell 'DEL E:\folder\anotherfolder\*.txt'
然后,您只需与脚本一起在sql server agent作业中运行该过程即可。