2008-11-05 121 views
0

我需要更改sql server 2005中的觸發器,我想使用表適配器和sql語句來執行此操作,而不是使用存儲過程。我知道我可以在查詢瀏覽器中運行它並執行它,但我需要將它部署在多個數據庫中,並在更新中使用表適配器。這可能嗎?更改Sql Server 2005中的觸發器

做添加查詢 - >更新 - >粘貼下面的代碼 - >查詢生成器,看它是否解析

print("USE [DataBaseName] 
GO 
/****** Object: Trigger [dbo].[UpdateCurrentAddress] Script Date: 10/30/2008 14:47:15 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER TRIGGER [dbo].[UpdateCurrentAddress] ON [dbo].[PreviousAddresses] 
FOR INSERT, UPDATE, DELETE 
AS 
-- Check to see if there was an insert/update or a deletion. 
IF (SELECT COUNT(*) FROM inserted) >= 1 
BEGIN 
    IF (SELECT CountryID FROM inserted) <> 181 

...moar..."); 

錯誤... 的使用[DATABASENAME]不支持SQL構造或語句。

,如果我去掉頂部,並在剛剛ALTER TRIGGER

的ALTER TRIGGER SQL構造或不支持的語句開始。

我對這個還是比較新的,不會感到驚訝,要麼我要麼以錯誤的方式去做,要麼沒有存儲過程是不可能的。

編輯:是的,我在C#中這樣做。

謝謝。我可以從ALTER TRIGGER開始,這樣可以完成工作。

回答

2

TableAdapter期望結果集,而不是實際的查詢。要成功完成此操作,您需要使用SqlCommand對象來實際執行更新。

如果您之前沒有使用過它,那麼它非常簡單,首先聲明連接,然後使用連接創建命令。創建該命令後,將commandtext設置爲與您的腳本相同,然後您可以調用ExecuteNonQuery()方法在打開連接後運行該腳本。如果你說你正在使用什麼語言,我可以嘗試提供一個例子。

編輯

這裏是一個C#示例,快速和骯髒的,但它跨越獲取點。注意,從內存中完成,但應該是正確的。

using(SqlConnection oConnection = new SqlConnection("Yourconnectionhere")) 
using(SqlCommand oCommand = new SqlCommand(oConnection)) 
{ 
    //Configure the command object 
    oCommand.CommandText = "Your script here"; 

    //Open connectin and run script 
    oConnection.Open(); 
    oCommand.ExecuteNonQuery(); 
    oConnection.Close(); 
}