2011-03-31 507 views
1

我使用SQL Server 2008和.NET 3.5 Framework。以編程方式創建SQL作業

在我的程序中,數據庫上的存儲過程根據用戶輸入而改變。

用戶可以確定他的任務的日期。

所以,我想寫一個SQL程序來改變存儲過程的程序是由程序創建的。

如何以編程方式創建作業?

+0

是否有一個原因,你不想使用綁定變量來做到這一點? – 2011-03-31 06:59:09

+0

你想只更新存儲的特效?如果是這樣,你爲什麼需要這份工作呢? – tobias86 2011-03-31 07:00:11

+0

@ tobias86你知道更好的方法嗎? @ pm_2我不知道綁定變量,但現在搜索。 – 2011-03-31 07:14:08

回答

4

可以通過編程做在兩個方面:

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查詢:

  1. 打開SQL Server Management Studio中
  2. 在「對象資源管理器」的一些服務器,我去的窗口:SQL Server代理»喬布斯»鼠標右鍵單擊»新的工作...
  3. 然後創建一個簡單的工作,將看起來像我想被執行,有的名稱到創建工作
  4. 右鍵單擊添加的作業,並按照這種方式在上下文菜單:腳本作爲»創建到»新查詢編輯器窗口
  5. 複製生成的腳本,根據需要對其進行參數化,然後將其放入strAlterProcCommandText

希望你有我的想法。

+0

改變將在某些日期發生。例如,它將在今天的代碼中添加一些代碼,並在下個月刪除代碼。但是,所有這些日期都是由僅知道應用程序UI的用戶給出的。所以,這個工作需要通過應用程序來創建,或者一個Windows服務是必不可少的? – 2011-03-31 07:47:48

+0

嗯,我想這應該取決於你的需求。無論如何,我確信有很多不同的方式來完成這項工作。例如,您可以嘗試使用SMO命名空間中的Job類來處理來自C#的作業。查看本手冊:http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.agent.job.aspx – Genius 2011-03-31 09:17:51