powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / DDL trigger
11 сообщений из 11, страница 1 из 1
DDL trigger
    #39956865
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть чужое приложение, которое работает со своей БД.
Мне надо из этой БД, перенести данные в свою.

Они ежедневно, создают новую таблицу (старые удаляют).
Хочу вставить в эту таблицу триггер, что бы он новые данные передавал ко мне (там только insert)

Начал создавать DDL триггер
Код: sql
1.
2.
3.
CREATE TRIGGER crtrig ON DATABASE 
	FOR create_table
AS 


И тут затык. Как узнать имя таблицы, что бы вставить его?
Почитал доки, нашел только sys.trigger_events
Но оказалось это не то(
...
Рейтинг: 0 / 0
DDL trigger
    #39956872
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
DDL trigger
    #39956874
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://docs.microsoft.com/ru-ru/sql/relational-databases/triggers/use-the-eventdata-function?view=sql-server-ver15

Если имени объекта нет, то парсить команду.
...
Рейтинг: 0 / 0
DDL trigger
    #39957073
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич
https://docs.microsoft.com/ru-ru/sql/relational-databases/triggers/use-the-eventdata-function?view=sql-server-ver15

Если имени объекта нет, то парсить команду.
В хелпе для примера CREATE TABLE про имя таблицы не написано, но оно должно быть в теге ObjectName
...
Рейтинг: 0 / 0
DDL trigger
    #39957084
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdor,

Вы же понимаете, что идея очень хреновая с точки зрения последствий?
...
Рейтинг: 0 / 0
DDL trigger
    #39957224
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо. Тестирование показало полную работоспособность.
Имя таблицы определяется. В EVENTDATA оно есть.

Критик
asdor,

Вы же понимаете, что идея очень хреновая с точки зрения последствий?

Почему ?. Хотя и отказались от этой идеи, удалось заставить правильно функционировать Чужое ПО. И проблема пропала.
Вернулись к тому, как работаем уже лет 10.

Задача не критическая. Это определение Гос.№ авто. на весовой, что бы диспетчерам не вводить в ручную.

Т.е. для БП, отказ не страшен. Ну будут вручную вводить... какое то время. Что и было, пока не починили)
...
Рейтинг: 0 / 0
DDL trigger
    #39957267
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdor
КритикВы же понимаете, что идея очень хреновая с точки зрения последствий?

Почему ?. Хотя и отказались от этой идеи, удалось заставить правильно функционировать Чужое ПО. И проблема пропала.
Вернулись к тому, как работаем уже лет 10.Да, тоже не вижу, что плохого.
Речь же не о дизайне новой системы, а о костылях к чужой, которую к тому же нельзя модифицировать. В таких случаях и не так раскорячишься.

Писать, конечно, нужно аккуратно, в частности, не использовать в триггере *, что бы при добавлении полей оно не сломалось.
...
Рейтинг: 0 / 0
DDL trigger
    #39957422
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdor,

Потому что вы вносите изменения в чужую систему, если/когда все сломается, то виновник будет очевиден )
(Условно) может быть так - прилетает обновление этого ПО, там переименовали пару полей, ваш триггер конечно этого не учитывает, в результате ПО не работает (ошибка не обрабатывается и оно падает), а вы недоступны - например в отпуске где-нибудь на Курилах в пешем походе.

Ну и лицензионное соглашение (если это покупное ПО) скорее всего прямо запрещает такие действия. Последствия для вас зависят от критичности для бизнес-процессов и упоротости руководства, но на всякий случай прочитайте статью 272 - неправомерный доступ к компьютерной информации.
...
Рейтинг: 0 / 0
DDL trigger
    #39957471
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик,

подобные действия действительно могут быть расценены как вмешательство работы в базу данных. Сбор данных из outsource системы должен быть предусмотрен этой системой. Наименее "инвазивным" было бы решение, использующее сравнение схемы данных, например. Если это не запрещено лицензионным соглашением.
...
Рейтинг: 0 / 0
DDL trigger
    #39957548
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик,

В данном случае все проще.
БД у них практически на любом sql сервере.
Практически в БД всего несколько таблиц. 1 постоянная, остальные создаются - уничтожаются.
Никакого обновления ПО просто нет)))
Если б было, то касалось, полагаю, распознавания номеров, а не работы с БД.
И никаких запретов лезть в их БД нет.

Из кучи полей ихних, я к себе всего 3-4 тащу. Мне не нужны их картинки, весом, гиги)))
Мне достаточно текстового поля.

Но Благодарю за предупреждение.
Я понял ваши опасения, вполне обоснованные в общем случае, но не в данном.
Там деньги плачены за систему.
А главное у них 99.99% распознование номеров.
"Ураган" на наших дорогах первый появился )))
...
Рейтинг: 0 / 0
DDL trigger
    #39957807
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик
(Условно) может быть так - прилетает обновление этого ПО, там переименовали пару полей, ваш триггер конечно этого не учитывает, в результате ПО не работает (ошибка не обрабатывается и оно падает), а вы недоступны - например в отпуске где-нибудь на Курилах в пешем походе.

Поэтому лучше было бы сделать DDL event notification, и пусть какой-нибудь джоб в сторонке разбирал бы очередь. Если рванет, то последствия будут менее плачевны.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / DDL trigger
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]