【问题标题】:How to run C# Console application from SQL Job in SQL Server 2008?如何在 SQL Server 2008 中从 SQL 作业运行 C# 控制台应用程序?
【发布时间】:2012-05-24 18:43:10
【问题描述】:

我想尝试从 SQL Job 运行我的 C# 控制台应用程序。所以为了测试它,我简单地创建了一个控制台应用程序并使用 C# 和 SMO,编写了几行代码来创建一个数据库。我可以成功运行它并按预期在 SQL Server 中创建一个数据库。

然后在 IDE 中,我点击了Build-->Publish myProject to E:\myFolder\MakeNewDB24,因为那是我的 SQL Server 所在的位置。

上述操作将以下文件复制到指定位置,即 E:\myFolder\MakeNewDB24

  • 应用程序文件
  • setup.exe
  • myProject.application

然后我打开了我的 SQL Server,通过 rt. clicking Jobs Folder-->New Job。 我填写了一般的所有信息。 在 Steps 中,我在 Command 下,

\\mySQLServer\myFolder\MakeNewDB24\setup.exe

Type: Operating System(CmdExec)
Run as: SQL Server Agent Service Account

我负责这项工作。结果显示为“成功” 当我查看历史时,

Executed as user: mySQLServer\SYSTEM. The step did not generate any output.  Process Exit Code 0.  The step succeeded.

我很高兴。但是当我去检查应该创建的数据库时,它不可用,这意味着 SQL JOb 没有完成创建我的数据库的工作。

我不知道我在这里错过了什么?如果有人知道这方面的知识,请与我分享。我真的很想看到我的 SQL 作业完成这项工作。我使用 SQL 作业的原因是因为我所有的自动化任务都从这里开始。谢谢。

【问题讨论】:

  • 如果在将程序复制到新位置后双击运行程序会怎样?
  • 到达,但作业步骤是否设置为类型“操作系统(CmdExec)”?默认为 T-SQL。您也可能(再次)遇到问题,因为 SQL Server 代理与您的用户帐户不同。最后,为什么作业不能在 T-SQL 中运行 CREATE DATABASE?
  • 当我从 E:\ 双击 setup.exe 时,我收到应用程序安装安全警告。我点击了安装按钮。然后它安装它并繁荣,我可以看到我的代码在 SQL Server 中创建的数据库。请让我知道我错过了什么。谢谢。
  • 该应用程序安装安全警告将阻止 SQL Server 在后台运行此作业(并且可能会留下与您启动该作业的次数一样多的孤立进程)。命令行程序可以引发 NO DIALOGS 并且不需要 USER INPUT。确保禁用 UAC,并且该程序根本不需要任何用户交互。
  • @Aron Bertrand,是的,我的 JOb 设置为类型“操作系统(CmdExec)”。默认可能是 T-SQL,但在我的场景中,我没有使用任何 T-SQL 来创建数据库。相反,我使用我的 c# 控制台应用程序来创建一个数据库,它在从 Visual Studio 运行时完成它的工作。如何禁用 UAC 以及如何确保该程序不需要任何用户交互 - 甚至不需要从 E:\ 安装它?

标签: c# .net sql sql-server-2008


【解决方案1】:

您的问题几乎肯定与权限有关。您需要检查用于运行 SQL Server 代理作业的用户 ID。我的猜测是它在某处没有权限。

您的作业返回成功的原因是,如果 CMD 作业成功启动 CMD 可执行文件,它们总是返回成功。它与你的代码是否成功无关。

在我不必担心安全性的环境中,我养成了一个不幸的习惯,即赋予一切管理员权限,因此我不必担心在哪里需要什么权限。祝你好运。

【讨论】:

    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多