Вопрос

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

Выполняем «Добавить запрос» -> «Обновить» -> вставляем приведенный ниже код -> «Построитель запросов», чтобы проверить, анализируется ли он.

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, и это выполнит работу.

Это было полезно?

Решение

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();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top