我在SQL存储过程中使用EXECUTE xp_cmdshell来调用批处理文件。除一个命令外,批处理文件中的所有命令都会执行。
Reporting Services命令rs.exe不会执行。
xp_cmdshell有一个代理帐户,该命令从我的存储过程运行得很好:
select @message =
'\\servername\LabelPrinting\ReportPrinting\Parts\PostSubmitAdjustment.bat '+ cast(@TrxOid as nvarchar(100))
EXECUTE xp_cmdshell @message
以上作品。
问题在于它调用的批处理文件,它包含在此问题的底部。
除rs.exe外,执行.bat文件中的所有命令。
但是当我从SQL服务器调用相同的批处理文件时,使用代理帐户,批处理中的所有命令都正确执行,包括rs.exe
批处理文件:
@rem - Capture the call to this file for diagnostics and logging.
echo %1 > \\servername\LabelPrinting\ReportPrinting\logs\DataPassLogAdjust.txt
@rem - Calls the rs.exe utility, passing in the TrxOid to generate the Packing slip as a PDF then save the PDF as the TrxOid in the PackingSlip folder.
call \\servername\LabelPrinting\ReportPrinting\Parts\rs.exe -i \\servername\LabelPrinting\ReportPrinting\Parts\PackingSlipAdjustment.rss -s http://WEBSITE-02/reportserver -v Oid=%1 -v PDFName=\\servername\LabelPrinting\ReportPrinting\PackingSlips\%1_PackingSlip.PDF -e Exec2005 > \\servername\LabelPrinting\ReportPrinting\logs\RenderLogAdjust.txt
call whoami > \\servername\LabelPrinting\ReportPrinting\logs\UserLogAdjust.txt
@rem - Calls the Command Line Printing application to print the PackingSlip pdf to the printer defined in the ReportPrinter setting on the PanatrackerGP portal
call \\servername\LabelPrinting\ReportPrinting\Parts\clprint.exe /print /printer:P01 /pdffile:"\\servername\LabelPrinting\ReportPrinting\PackingSlips\%1_PackingSlip.PDF" > \\servername\LabelPrinting\ReportPrinting\logs\PrintLogAdjust.txt