У меня есть требование автоматически печатать отчет ssrs на определенном принтере в сети всякий раз, когда в таблицу базы данных вставляется новая строка. В таблице базы данных есть триггер, который использует xp_cmdshell для вызова консольного приложения, которое отображает и печатает отчет. Когда я запускаю консольное приложение из командной строки, оно работает. Кроме того, когда я изменяю учетную запись, на которой сервер sql работает как администратор, xp_cmdshell работает как положено, и отчет печатается. Но я не хочу, чтобы сервер sql запускался от имени администратора, поэтому я настроил учетную запись прокси-сервера, используя sp_xp_cmdshell_proxy_account. Я использовал администратора как учетную запись, что SQL Server выполняет xp_cmdshell как и настроить SQL Server для запуска в качестве локальной системы. Однако, когда я вхожу в SQL Server с учетной записью, которая не является системным администратором, и запускаю консольное приложение с xp_cmdshell, консольное приложение создает следующее исключение:
RPC-сервер недоступен. e) в System.Drawing.Printing.PrintController.Print (документ PrintDocument) в System.Drawing.Printing.PrintDocument.Print () в PrintQCChecklist.Program.Main (String [] args)
Затем я вызвал whoami.exe с помощью xp_cmdshell, и он возвращает «Администратор». Зачем печатать документ, когда sql-сервер работает от имени администратора, но сбой при работе под прокси-сервером от имени администратора ??? (Пожалуйста, не отмахивайтесь от использования xp_cmdshell. Я знаю о рисках безопасности. Спасибо.)