![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Узнать текст запроса и Host [MSSQL]
ivc_andr © (2005-06-16 14:23:00)Ув мастера! Подскажите пожалуйста!
Задача: Я пишу тригер в MSSQL, который во время апдэйта поля записывает данные в другую таблицу (короче веду ЛОГ). Как мне узнать и записать в таблицу(ЛОГ) текст запроса, которым делался этот апдэйт и Host(ну там IP-ник или имя машины) с которой он проводился.
Буду очень признателен. ОЧЕНЬ НАДО!
evvcom (2005-06-16 16:18:00) [1]
> работает с базой куча клиентов, в таблице начали стираться
> данные и я не могу вычислить почему
Вот для этого не надо давать пользователям полномочия напрямую работать с таблицами. Есть хранимые процедуры, есть вьюхи, а гранты на таблицы для всех пользователей надо поубивать. Имхо.
Nikolay M. (2005-06-16 16:07:00) [2]
> Я наверное не совсем понял, текст какого запроса надо логгировать?
Да вообще, задача, имхо, довольно бредовая. Особенно учитывая цель, ради которой все это затевается.
Воспользоваться [8] и не изобретать велосипед.
Ega23 (2005-06-16 16:04:00) [3]А тогда в чём, собственно говоря, проблема?
ivc_andr (2005-06-16 15:50:00) [4]Я наверное не совсем понял, текст какого запроса надо логгировать?
А если с клиента запускается ХП, которая делает update в 10 таблицах? Что должно записаться? Строка 'exec s_myproc @param1=value1 ....' или все 10 апдейтов?
нужно записать текст того запроса, который меняет значение нужного поля, для чего я тригер и начал писать. Нужно знать, какой запрос портит данные
Ega23 (2005-06-16 15:43:00) [5]Очевидно, обычный UPDATE. А почему ЕМ такой особенный?
Я наверное не совсем понял, текст какого запроса надо логгировать?
А если с клиента запускается ХП, которая делает update в 10 таблицах? Что должно записаться? Строка 'exec s_myproc @param1=value1 ....' или все 10 апдейтов?
"Не могу понять..." (с)
Nikolay M. (2005-06-16 15:40:00) [6]
> мне же нужно вычислить действия в момент апдейта.
Запустить профайлер с необходимыми фильтрами?
Nikolay M. (2005-06-16 15:38:00) [7]
> какой текст запроса должен отписаться
> в твою таблицу протокола, если ты в Enterprise Manager'е
> запись ручками поправишь?
Очевидно, обычный UPDATE. А почему ЕМ такой особенный?
> ivc_andr (16.06.05 14:23)
Имхо, не стоит создавать проблемы там, где их нет. Для анализа Transaction log-а можно воспользоваться одной из существующих программ, например, ApexSQL.
ivc_andr (2005-06-16 15:35:00) [8]Позволь полюбопытствовать: если это триггер, то какой текст запроса должен отписаться в твою таблицу протокола, если ты в Enterprise Manager'е запись ручками поправишь?
работает с базой куча клиентов, в таблице начали стираться данные и я не могу вычислить почему, поэтому мне и нужно знать как и откуда это происходит.
sp_who и (select sp.loginame, sp.hostname, sp.program_name, sp.status, sp.sid, spid
from master.dbo.sysprocesses as sp
inner join master.dbo.sysdatabases as sd on sp.dbid=sd.dbid
where sd."Name"='TestADOMD')отображают всю активность с базой, мне же нужно вычислить действия в момент апдейта. По какому признаку его вытягивать из всех подключений к базе
Stanislav (2005-06-16 15:33:00) [9]Ega23 © (16.06.05 15:01) [4]
Наверное Update...
Stanislav (2005-06-16 15:30:00) [10]HOST_NAME() - машина
APP_NAME() - программа
SUSER_SNAME() -Юзер
Ega23 (2005-06-16 15:01:00) [11]Так я это понимаю. А как тогда из Transaction Log выдернуть этот текст и записать в тадлицу....Задача такая
Позволь полюбопытствовать: если это триггер, то какой текст запроса должен отписаться в твою таблицу протокола, если ты в Enterprise Manager'е запись ручками поправишь?
Ярослав (2005-06-16 14:47:00) [12]Под MS SQL попробуй
select sp.loginame, sp.hostname, sp.program_name, sp.status, sp.sid, spid
from master.dbo.sysprocesses as sp
inner join master.dbo.sysdatabases as sd on sp.dbid=sd.dbid
where sd."Name"='TestADOMD'
Где TestADOMD - имя базы
ivc_andr (2005-06-16 14:34:00) [13]А НАФИГА???? У тебя сам сервер Transaction Log ведёт.
Так я это понимаю. А как тогда из Transaction Log выдернуть этот текст и записать в тадлицу....Задача такая
Ega23 (2005-06-16 14:27:00) [14]которым делался этот апдэйт и Host(ну там IP-ник или имя машины)
exec sp_who
Как мне узнать и записать в таблицу(ЛОГ) текст запроса, которым делался этот апдэйт
А НАФИГА???? У тебя сам сервер Transaction Log ведёт.