Как запретить обновление версии клиента Dynamics NAV

Если гвозди забивать микроскопом,
они будут забиты с микроскопической точностью.

Народное.

Давным-давно, когда я еще учился в автошколе, на первом занятии инструктор сказал — каждый из вас попадет в ДТП. Группа нервно засмеялась. А он говорит — я не шучу. Каждый.

И время показало, что он был прав.

Давным-давно, когда я пришел на свою первую работу в должности разработчика, нет — не попал в ДТП — положил базу во время очередного обновления объектов. Как сейчас помню звонок из бухгалтерии — ой, а что у нас с базой? Что-то она не работает.

И уверен, что каждый может вспомнить подобную историю из своей практики.

Сегодня в студии — очередной хинт, повышающий устойчивость системы к внешним воздействиям. На этот раз запрещаем обновление версии клиента, которое требует обновления БД.

CREATE TRIGGER dbo.TRG_Deny_Version_Update ON dbo.[$ndo$dbproperty]
FOR UPDATE
AS

DECLARE @OldVersion INT, @NewVersion INT
DECLARE @OldID VARCHAR(2000), @NewID VARCHAR(2000)

SELECT @NewID = identifiers, @NewVersion = databaseversionno
FROM inserted

SELECT @OldID = identifiers, @OldVersion = databaseversionno
FROM deleted

IF @OldID <> @NewID OR @OldVersion <> @NewVersion
BEGIN
    RAISERROR('Обновление версии клиента запрещено.', 16, 1)
    IF @@TRANCOUNT <> 0
        ROLLBACK TRANSATION
END

При необходимости все-таки сделать обновление версии надо временно отключить этот триггер.

P.S. Работает, естественно, только для SQL-ной базы.

Автор:

Количество статей, опубликованных автором: 4. Дополнительная информация об авторе появится вскоре.

Добавить комментарий