我使用SQL Server 2008和.NET 3.5 Framework。以編程方式創建SQL作業
在我的程序中,數據庫上的存儲過程根據用戶輸入而改變。
用戶可以確定他的任務的日期。
所以,我想寫一個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查詢:
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