Sql server 控制台应用程序没有';在sql server代理代理下使用xp\u cmdshell执行时无法打印
我需要在数据库表中插入新行时自动将ssrs报告打印到网络上的特定打印机。数据库表上有一个触发器,它使用xp_cmdshell调用一个控制台应用程序来呈现和打印报告。当我从命令提示符执行控制台应用程序时,它会工作。此外,当我将sql server作为管理员运行的帐户更改为管理员时,xp_cmdshell将按预期工作,并打印报告。但是,我不希望sql server以管理员身份运行,因此我使用sp_xp_cmdshell_proxy_帐户设置了一个代理帐户。我使用administrator作为SQL Server执行xp_cmdshell的帐户,并将SQL Server设置为作为本地系统运行。但是,当我使用非sysadmin帐户登录SQL Server并使用xp_cmdshell执行console应用程序时,console应用程序会生成以下异常: RPC服务器不可用-源:System.Drawing-堆栈跟踪:在System.Drawing.Printing.StandardPrintController.OnStartPrint(PrintDocument文档,PrintEventArgs e)在System.Windows.Forms.PrintControllerWithStatusDialog.OnStartPrint(PrintDocument文档,PrintEventArgs e)在System.Drawing.Printing.PrintController.Print(PrintDocument文档)位于PrintQCChecklist.Program.Main(字符串[]args)的System.Drawing.Printing.PrintDocument.Print()处Sql server 控制台应用程序没有';在sql server代理代理下使用xp\u cmdshell执行时无法打印,sql-server,sql-server-2008,proxy,xp-cmdshell,Sql Server,Sql Server 2008,Proxy,Xp Cmdshell,我需要在数据库表中插入新行时自动将ssrs报告打印到网络上的特定打印机。数据库表上有一个触发器,它使用xp_cmdshell调用一个控制台应用程序来呈现和打印报告。当我从命令提示符执行控制台应用程序时,它会工作。此外,当我将sql server作为管理员运行的帐户更改为管理员时,xp_cmdshell将按预期工作,并打印报告。但是,我不希望sql server以管理员身份运行,因此我使用sp_xp_cmdshell_proxy_帐户设置了一个代理帐户。我使用administrator作为SQL
然后,我用xp_cmdshell调用了whoami.exe,它返回“administrator”。为什么sql server以管理员身份运行时会打印文档,而在以管理员身份代理运行时会崩溃??(请不要因为使用xp_cmdshell而大骂我。我知道安全风险。谢谢。)您是否考虑过将SSRS报告发布到网络共享,并让打印机程序提取报告,打印它,然后存档?我曾经使用廉价的第三方打印工具做过类似的事情-由供应商支持,并且-在我看来-更干净。谢谢您的回复。我对Explorer绝对感兴趣在这一点上,您正在寻找替代方案。您的设置是否有任何时间延迟?报告或多或少需要立即打印。另外,您使用了哪种第三方打印工具?