以编程方式创建SQL作业
我使用SQL Server 2008和.NET 3.5 Framework。以编程方式创建SQL作业
在我的程序中,数据库上的存储过程根据用户输入而改变。
用户可以确定他的任务的日期。
所以,我想写一个SQL程序来改变存储过程的程序是由程序创建的。
如何以编程方式创建作业?
可以通过编程做在两个方面:
1. 如果你只需要改变一个过程:
// written from the head
...
using System.Data.SqlClient;
using Smo = Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
string strConnectionString = ".......";
string strAlterProcCommandText = "ALTER PROC dbo.blablabla (..) AS .......\r\nGO";
using (var conn = new SqlConnection(strConnectionString))
{
conn.Open();
var server = new Smo.Server(new ServerConnection(conn));
var result = server.ConnectionContext.ExecuteNonQuery(strAlterProcCommandText);
Console.WriteLine("Result: " + result);
}
2. 或者,如果你想与SQL工作要做到这一点,您可能必须使用上面的示例,但是执行将添加SQL作业的命令而不是strAlterProcCommandText = "ALTER PROC..."
。通常我生成这样一个sqljob查询:
- 打开SQL Server Management Studio中
- 在“对象资源管理器”的一些服务器,我去的窗口:SQL Server代理»乔布斯»鼠标右键单击»新的工作...
- 然后创建一个简单的工作,将看起来像我想被执行,有的名称到创建工作
- 右键单击添加的作业,并按照这种方式在上下文菜单:脚本作为»创建到»新查询编辑器窗口
- 复制生成的脚本,根据需要对其进行参数化,然后将其放入
strAlterProcCommandText
。
希望你有我的想法。
改变将在某些日期发生。例如,它将在今天的代码中添加一些代码,并在下个月删除代码。但是,所有这些日期都是由仅知道应用程序UI的用户给出的。所以,这个工作需要通过应用程序来创建,或者一个Windows服务是必不可少的? – 2011-03-31 07:47:48
嗯,我想这应该取决于你的需求。无论如何,我确信有很多不同的方式来完成这项工作。例如,您可以尝试使用SMO命名空间中的Job类来处理来自C#的作业。查看本手册:http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.agent.job.aspx – Genius 2011-03-31 09:17:51
是否有一个原因,你不想使用绑定变量来做到这一点? – 2011-03-31 06:59:09
你想只更新存储的特效?如果是这样,你为什么需要这份工作呢? – tobias86 2011-03-31 07:00:11
@ tobias86你知道更好的方法吗? @ pm_2我不知道绑定变量,但现在搜索。 – 2011-03-31 07:14:08