每当将新行插入数据库表时,我需要自动将 ssrs 报告打印到网络上的特定打印机。数据库表上有一个触发器,它使用 xp_cmdshell 调用控制台应用程序,该应用程序呈现和打印报告。当我从命令提示符执行控制台应用程序时,它可以工作。此外,当我更改 sql server 以管理员身份运行的帐户时,xp_cmdshell 会按预期工作并打印报告。但是,我不想让 sql server 以管理员身份运行,所以我设置了一个代理帐户,使用 sp_xp_cmdshell_proxy_account。我使用管理员作为 SQL Server 执行 xp_cmdshell 的帐户,并将 SQL Server 设置为本地系统运行。然而,
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) at System.Windows.Forms.PrintControllerWithStatusDialog.OnStartPrint(PrintDocument document, PrintEventArgs e) at System.Drawing.Printing.PrintController.Print(PrintDocument 文档) 在 System.Drawing.Printing.PrintDocument.Print() 在 PrintQCChecklist.Program.Main(String[] args)
然后我用 xp_cmdshell 调用 whoami.exe,它返回“管理员”。为什么当 sql server 以管理员身份运行时会打印文档,但在代理下以管理员身份运行时会崩溃???(请不要因为使用 xp_cmdshell 而咬我的头。我知道安全风险。谢谢。)