2008-11-05 5 views
0

Мне нужно изменить триггер в SQL Server 2005, и я хочу сделать это, используя адаптер таблицы и инструкцию sql, а не хранимую процедуру. Я знаю, что могу запустить это в браузере запросов и выполнить его, но мне нужно развернуть его в нескольких базах данных и использовать адаптер таблицы в обновлении. Это возможно?Изменение триггера в Sql Server 2005

Doing Add Query -> Обновление -> вставить код ниже -> Query Builder, чтобы увидеть, если он разбирает

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

альтер TRIGGER SQL построить или оператор не поддерживается.

Я до сих пор довольно новичок в этом и не удивлюсь, что либо я либо пойду по этому пути и/или это невозможно обойтись без хранимой процедуры.

EDIT: Да, я делаю это на C#.

спасибо. Я могу сделать это таким образом, начиная с ALTER TRIGGER, это выполнит свою работу.

ответ

2

TableAdapter ожидает набор результатов, а не фактический запрос. Для этого вам нужно будет использовать объект SqlCommand для фактического изменения вашего обновления.

Если вы еще не использовали один, прежде чем это будет довольно просто, сначала объявите свое соединение, затем создайте свою команду, используя соединение. После создания команды задайте командный текст, равный вашему сценарию, а затем вы можете вызвать метод 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(); 
}