【问题标题】:Console app doesn't print when executing with xp_cmdshell under sql server agent proxy在 sql server agent 代理下使用 xp_cmdshell 执行时,控制台应用程序不打印
【发布时间】:2011-07-29 18:55:08
【问题描述】:

每当向数据库表中插入新行时,我需要自动将 ssrs 报告打印到网络上的特定打印机。数据库表上有一个触发器,它使用 xp_cmdshell 调用控制台应用程序,该应用程序呈现和打印报告。当我从命令提示符执行控制台应用程序时,它可以工作。此外,当我更改 sql server 以管理员身份运行的帐户时,xp_cmdshell 会按预期工作并打印报告。但是,我不想让 sql server 以管理员身份运行,所以我设置了一个代理帐户,使用 sp_xp_cmdshell_proxy_account。我使用管理员作为 SQL Server 执行 xp_cmdshell 的帐户,并将 SQL Server 设置为本地系统运行。但是,当我使用不是 sysadmin 的帐户登录 SQL Server 并使用 xp_cmdshell 执行控制台应用程序时,控制台应用程序会生成以下异常:

RPC 服务器不可用 - Source:System.Drawing - Stack Trace: at System.Drawing.Printing.StandardPrintController.OnStartPrint(PrintDocument document, PrintEventArgs e) at System.Windows.Forms.PrintControllerWithStatusDialog.OnStartPrint(PrintDocument document, PrintEventArgs e) 在 System.Drawing.Printing.PrintDocument.Print() 在 System.Drawing.Printing.PrintController.Print(PrintDocument document) 在 PrintQCChecklist.Program.Main(String[] args)

然后我用 xp_cmdshell 调用 whoami.exe,它返回“管理员”。为什么当 sql server 以管理员身份运行时会打印文档,但在代理下以管理员身份运行时会崩溃??? (请不要因为使用xp_cmdshell而咬我的头。我知道安全风险。谢谢。)

【问题讨论】:

    标签: sql-server sql-server-2008 proxy xp-cmdshell


    【解决方案1】:

    您是否考虑过将 SSRS 报告发布到网络共享,并让打印机程序获取报告、打印并存档?我曾经使用廉价的第三方打印工具做类似的事情 - 由供应商支持,并且 - 在我看来 - 更清洁。

    【讨论】:

    • 感谢您的回复。在这一点上,我绝对有兴趣探索替代方案。您的设置是否有任何时间延迟?报告需要或多或少地即时打印。另外,您使用的是什么 3rd 方打印工具?
    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    相关资源
    最近更新 更多