Изменение триггера в Sql Server 2005 - PullRequest
0 голосов
/ 05 ноября 2008

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

Выполнение добавления запроса -> Обновить -> вставка приведенного ниже кода -> 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...");

ошибка ... Конструкция или оператор SQL USE [DataBaseName] не поддерживается.

и если я уберу верхнюю часть и начну с ALTER TRIGGER

Конструкция или оператор SQL ALTER TRIGGER не поддерживается.

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

РЕДАКТИРОВАТЬ: Да, я делаю это в C #.

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

1 Ответ

2 голосов
/ 05 ноября 2008

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...