【发布时间】: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