У меня есть триггер SQL Server, который генерирует уникальные номера идентификаторов для строк в определенной таблице.
Каждые несколько дней пользователи будут сообщать мне, что он прекратил генерировать идентификаторы.И когда я захожу в базу данных (SSMS) и смотрю на триггер, он отключается.Я включаю его, и обработка возобновляется в обычном режиме.
Насколько я знаю, единственный способ отключить триггер - это обратиться к администратору, щелкнув правой кнопкой мыши и выбрав «отключить» или запуститьсценарий DDL, который отключает его.Никто другой в группе администраторов не допускает отключения триггера.
Вопрос. Возможно ли отключение триггера, если он либо теряет сетевое подключение, либо входит в рекурсивный цикл, либо во время резервного копирования?или что-нибудь еще подобное?
Мне нужен какой-то способ объяснить, как эта штука отключается.
Интернет странно молчит об этом.
РЕДАКТИРОВАТЬ: Файлы журналакажется, нечего сказать по этому поводу.Кроме того, база данных является частью группы доступности AAG.
EDIT2: «код» триггера «голые кости».
ALTER TRIGGER [dbo].[Create_Permalink]
ON [dbo].[TABLE_NAME_1]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS (SELECT * FROM TABLE_NAME_1
WHERE (PermaLink IS NULL or Permalink = '')
AND Request_ID = (SELECT DISTINCT Request_ID FROM inserted)
AND AC_ID = (SELECT DISTINCT AC_ID FROM inserted)
AND Leg_ID = (SELECT DISTINCT Leg_ID FROM inserted)
)
BEGIN
declare @code nvarchar(32) = '';
-------------------------------------------------
-- GENERATE MULTI-PART ALPHANUMERIC IDCODE HERE
-------------------------------------------------
-- SET @code = ....Generated Code....
UPDATE TABLE_NAME_1
SET PermaLink = @code
WHERE (PermaLink IS NULL or Permalink = '')
AND Request_ID = (SELECT DISTINCT Request_ID FROM inserted)
AND AC_ID = (SELECT DISTINCT AC_ID FROM inserted)
AND Leg_ID = (SELECT DISTINCT Leg_ID FROM inserted)
END
END
Я не писал этого, поэтому не имею права голоса вчто он делает.