Изменение триггера в Sql Server 2005
-
06-07-2019 - |
Вопрос
Мне нужно изменить триггер в 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();
}