Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Тригер на конект к базе  [new]
Shovgenyuk
Member

Откуда: Ивано-Франковск-Киев
Сообщений: 467
Как сделать тригер на конект к одной базе данных?
Надо тоже самое, что TRIGGER ... FOR LOGON но он должен действовать только на одну базу.

База master не должна быть задействована.
30 апр 14, 02:09    [15955689]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Shovgenyuk
Member

Откуда: Ивано-Франковск-Киев
Сообщений: 467
SQL Server 2008 R2
30 апр 14, 02:11    [15955690]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Artny
Guest
Это вот к какой базе коннект ?
select * 
from MyDB.dbo.mytable
inner join [master].[INFORMATION_SCHEMA].[TABLES] on bla bla bla
30 апр 14, 04:41    [15955715]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Shovgenyuk
Member

Откуда: Ивано-Франковск-Киев
Сообщений: 467
CREATE TRIGGER [trLogon] ON DATABASE 
	FOR DDL_DATABASE_LEVEL_EVENTS


Не срабатывает (((

Хотя в DDL_DATABASE_LEVEL_EVENTS есть
DDL_AUTHORIZATION_DATABASE_EVENTS
ALTER_AUTHORIZATION_DATABASE

Когда же срабатывает ALTER_AUTHORIZATION_DATABASE ?
30 апр 14, 04:58    [15955720]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
Shovgenyuk
Как сделать тригер на конект к одной базе данных?
Никак. Сущности "конект к базе данных" не существует.
30 апр 14, 09:14    [15956092]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Tаrantino
Member

Откуда:
Сообщений: 3767
Shovgenyuk,

кури "триггер входа"
http://msdn.microsoft.com/ru-ru/library/bb326598.aspx
30 апр 14, 09:45    [15956281]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Shovgenyuk
Member

Откуда: Ивано-Франковск-Киев
Сообщений: 467
Плохо... а для чего же тогда DDL_AUTHORIZATION_DATABASE_EVENTS ?

"триггер входа" срабатывает для всех баз. У клиентов на серверах крутятся разные базы, кроме моей, поэтому не хотелось бы туда влезать.

Тригер входа может делать insert в таблицу пользовательськой базы или только в master?
30 апр 14, 10:44    [15956670]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8828
Shovgenyuk,
автор
Как триггеры DML, так и триггеры DDL по умолчанию выполняются в контексте того пользователя, который вызывает триггер.
30 апр 14, 13:27    [15958152]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
invm
Никак. Сущности "конект к базе данных" не существует.
А если это (localdb) ?
30 апр 14, 17:17    [15959916]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Shovgenyuk
Member

Откуда: Ивано-Франковск-Киев
Сообщений: 467
Mnior
А если это (localdb) ?


Это как? можна поподробнее?
30 апр 14, 17:45    [15960021]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
Mnior
А если это (localdb) ?
Соединение все рано устанавливается с сервером а не с БД.
30 апр 14, 18:07    [15960130]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Shovgenyuk
Mnior
А если это (localdb) ?


Это как? можна поподробнее?

Курите contained databases
30 апр 14, 20:51    [15960662]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
invm
Mnior
А если это (localdb) ?
Соединение все рано устанавливается с сервером а не с БД.
Но логины же "хранятся" в базе.
Логическая изолированность как бэ намекает.
Я не копал, а вы invm копали, или просто поддерживаете разговор?
30 апр 14, 21:51    [15960791]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Shovgenyuk
Member

Откуда: Ивано-Франковск-Киев
Сообщений: 467
А может есть какой-то способ автоматически запускать SP при обращении к любому объекту базы?

Можна писать тригеры на все табл. вюверы и т.д., но это не решение, а вот если бы написать некий один тригер на все события и применить его ко всем объектам базы...
30 апр 14, 22:32    [15960878]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Shovgenyuk
Member

Откуда: Ивано-Франковск-Киев
Сообщений: 467
О contained databases почитал
Не впечетляет....
С contained databases база станет какой-то "не традиционной" наверное с массой нюансов и ограничений
30 апр 14, 22:33    [15960883]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
Mnior
Но логины же "хранятся" в базе.
Да нет, как обычно в master. Просто для каждого пользователя ОС используется свой набор системных БД.
30 апр 14, 22:44    [15960905]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
Shovgenyuk,
Задача какова? Только задача, а не ваш способ решения "триггером на коннект к БД".
30 апр 14, 22:47    [15960913]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Shovgenyuk
Member

Откуда: Ивано-Франковск-Киев
Сообщений: 467
invm
Задача какова?...


Вести учёт обращение к БД. Не к отдельным объектам (таблицам и т.д.), а просто к базе.
При обращении к базе, писать в таблицу дату, время, логин, IP или на первых порах хотя бы название хоста, название приложения.

Но очень не хотелось бы задействовать для етого системную базу master.
"триггер входа" срабатывает для всех баз. У клиентов на серверах крутятся разные базы, кроме моей, поэтому не хотелось бы туда влезать.
30 апр 14, 23:15    [15960959]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
invm
Mnior
Но логины же "хранятся" в базе.
Да нет, как обычно в master. Просто для каждого пользователя ОС используется свой набор системных БД.
Вообще-то для каждого инстанса.
И смысл как раз в том, что каждое приложение (программное решение) имело свой инстанс, который запускается как дочерний процесс приложения его породившее. Это не полноценный сервис.

Поэтому ТС может спокойно "создавать" свой инстанс, и не важно сколько там своих баз, одна или несколько, но все свои, согласно своему решению, и спокойно ставить триггер на LOGON, ибо инстанс свой. А чужие базы и чужие инстансы он даже не увидит (в рамках своего) и ни как не будет им мешать, как и полноценным сервисам.

Но цель ТС не очень понятна. Контролировать файлы (база это просто файлы) на машине партнёра не получится. Он свободно может сделать копию и пользоваться сколько влезет и как хочет, без чего либо ведома.
1 май 14, 23:21    [15962926]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8828
автор
У клиентов на серверах крутятся разные базы, кроме моей, поэтому не хотелось бы туда влезать.


Так создайте отдельную базу для протокола, в чем беда, не пойму? И это действительно не спасет от копирования баз.
2 май 14, 14:12    [15963655]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Shovgenyuk
Member

Откуда: Ивано-Франковск-Киев
Сообщений: 467
Владислав Колосов

Так создайте отдельную базу для протокола, в чем беда, не пойму? И это действительно не спасет от копирования баз.


Тригер входа срабатывает на соединение с любой базой. Будет кто-то соединятся с какой-то 1С или ещё чем-то и для него сработает тригер входа. Мне надо писать в лог-таблицу только когда соединяются с "моей" базой, а со всеми остальными - не надо.

От копирования спасать не надо, оно меня не волнует.
2 май 14, 15:18    [15963737]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Shovgenyuk
Владислав Колосов
Так создайте отдельную базу для протокола, в чем беда, не пойму? И это действительно не спасет от копирования баз.


Тригер входа срабатывает на соединение с любой базой. Будет кто-то соединятся с какой-то 1С или ещё чем-то и для него сработает тригер входа. Мне надо писать в лог-таблицу только когда соединяются с "моей" базой, а со всеми остальными - не надо.

От копирования спасать не надо, оно меня не волнует.
Настройте аудит. Ибо триггер на коннект к базе - есть ересь, ибо можно присоединиться к master и делать запросы вида truncate table [ВашаНенагляднаяБаза]..[ВашаСамаяНужнаяТаблица]
2 май 14, 15:35    [15963770]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Shovgenyuk
Владислав Колосов
Так создайте отдельную базу для протокола, в чем беда, не пойму? И это действительно не спасет от копирования баз.


Тригер входа срабатывает на соединение с любой базой. Будет кто-то соединятся с какой-то 1С или ещё чем-то и для него сработает тригер входа. Мне надо писать в лог-таблицу только когда соединяются с "моей" базой, а со всеми остальными - не надо.

От копирования спасать не надо, оно меня не волнует.

А если я подключусь к мастеру, а запрос сделаю from mybase..mytable, этот вариант вы тоже планируете отслеживать?
2 май 14, 15:36    [15963772]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
WarAnt,

Гы, Сергей опередил меня на минуту.
2 май 14, 15:38    [15963775]     Ответить | Цитировать Сообщить модератору
 Re: Тригер на конект к базе  [new]
Shovgenyuk
Member

Откуда: Ивано-Франковск-Киев
Сообщений: 467
Есть требование ТЗ отслеживать и фиксировать все сеансы работы пользователей с приложеним.
Автор ТЗ думает, что иначе как через указанное приложение, пользователь не может получить доступ к данным.
Поэтому он полагает, что если в приложении написать код для логирования запуска и закрытия самого приложения, то он получит перечень всех пользователей которые что-то там делали с данными.
Нужно фиксировать кто когда с какого хоста начал и закончил работу с данными.

Написать в приложении такой код не проблема, и формально ТЗ будет выполнено.

Но фигня это будет, а не реальный перечень сесий работы з данными.

Все пользователь проходят SQL-аутентификацию (аутинтиф. Win не используется).

В реальности, пользователь может подключится к базе как угодно, не обязательно через указанное приложение, как думает автор ТЗ. Потенциально могут быть (хотя редко :) ) продвинутые пользователи, которые подключатся к БД с какого-то екселя, аксеса или чего угодно...

Поэтому я думаю, что надо вести учёт сесий на стороне сервера, а не из приложения.
У клиентов на серверах есть все что угодно: 1С и ещё разные свои базы...

Тригер входа будет срабатывать на все эти базы, а надо на одну...

Аудитом ето решается?
Возможен ли аудит в expres edt?
2 май 14, 16:07    [15963863]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить