Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Встроенные InsertDate и UpdateDate  [new]
ЕвгенийGEM
Member

Откуда:
Сообщений: 94
Здравствуйте, уважаемые форумчане.
Есть ли возможность стандартными средствами узнать когда запись была вставлена в таблицу и когда она была изменена?
22 окт 13, 14:06    [15014689]     Ответить | Цитировать Сообщить модератору
 Re: Встроенные InsertDate и UpdateDate  [new]
Glory
Member

Откуда:
Сообщений: 104751
ЕвгенийGEM
Есть ли возможность стандартными средствами узнать когда запись была вставлена в таблицу и когда она была изменена?

Нет.
22 окт 13, 14:07    [15014701]     Ответить | Цитировать Сообщить модератору
 Re: Встроенные InsertDate и UpdateDate  [new]
ЕвгенийGEM
Member

Откуда:
Сообщений: 94
Glory, спасибо)
С какой-то стороны и жаль.
22 окт 13, 14:09    [15014721]     Ответить | Цитировать Сообщить модератору
 Re: Встроенные InsertDate и UpdateDate  [new]
Glory
Member

Откуда:
Сообщений: 104751
ЕвгенийGEM
С какой-то стороны и жаль.

Вот делать нечего серверу, как за каждой записью следить
И самому еще решать, что же значит "запись была изменена"
Например, update mytable set f1=f1 - это "изменение" или нет ?
22 окт 13, 14:11    [15014759]     Ответить | Цитировать Сообщить модератору
 Re: Встроенные InsertDate и UpdateDate  [new]
ЕвгенийGEM
Member

Откуда:
Сообщений: 94
Glory, почти всегда надо знать когда была вставлена запись и когда она модифицировалась.
Хотя в моем случае важнее именно вставка.
Обновление же нужно, чтобы поймать за руку и в данном случае годится даже тупо факт обновления, даже если при этом значение не изменилось.
Поэтому сверху да-можно считать обновлением.
Просто натыкаюсь на архитектуру и там не было предусмотрено сих полей...а нужно знать в каком порядке записи создавались и когда менялись и прочее.
22 окт 13, 18:41    [15016816]     Ответить | Цитировать Сообщить модератору
 Re: Встроенные InsertDate и UpdateDate  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3752
ЕвгенийGEM
Glory, почти всегда надо знать когда была вставлена запись и когда она модифицировалась.
Хотя в моем случае важнее именно вставка.
Обновление же нужно, чтобы поймать за руку и в данном случае годится даже тупо факт обновления, даже если при этом значение не изменилось.
Поэтому сверху да-можно считать обновлением.
Просто натыкаюсь на архитектуру и там не было предусмотрено сих полей...а нужно знать в каком порядке записи создавались и когда менялись и прочее.

CDC
22 окт 13, 19:00    [15016885]     Ответить | Цитировать Сообщить модератору
 Re: Встроенные InsertDate и UpdateDate  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
ЕвгенийGEM
Glory, почти всегда надо знать когда была вставлена запись и когда она модифицировалась.
Хотя в моем случае важнее именно вставка.
Обновление же нужно, чтобы поймать за руку и в данном случае годится даже тупо факт обновления, даже если при этом значение не изменилось.
Поэтому сверху да-можно считать обновлением.
Просто натыкаюсь на архитектуру и там не было предусмотрено сих полей...а нужно знать в каком порядке записи создавались и когда менялись и прочее.


добавьте поля в таблицы, и в триггерах ставьте дату и юзера
22 окт 13, 19:01    [15016888]     Ответить | Цитировать Сообщить модератору
 Re: Встроенные InsertDate и UpdateDate  [new]
ЕвгенийGEM
Member

Откуда:
Сообщений: 94
Winnipuh, на счет триггеров не согласен.
Если обновляются или добавляются несколько записей-представляешь какую дату он им выставит? На микросек отличающуюся.
Лучше в хранимках все писать, а InsertDate выставить тупо по умолчанию getdate().
Я в таблицу всегда вставляю поля дат, просто часто приходится иметь дело с уже убитыми данными и их надо как-то восстанавливать-вот и спрашивал нет ли встроенных средств.
23 окт 13, 12:05    [15019561]     Ответить | Цитировать Сообщить модератору
 Re: Встроенные InsertDate и UpdateDate  [new]
KRS544
Member

Откуда:
Сообщений: 497
Может поможет
отслеживание изменений
23 окт 13, 12:13    [15019641]     Ответить | Цитировать Сообщить модератору
 Re: Встроенные InsertDate и UpdateDate  [new]
Exproment
Member

Откуда:
Сообщений: 416
ЕвгенийGEM
Winnipuh, на счет триггеров не согласен.

У вас нет выбора соглашаться или нет. Если разговор идет именно о техническом логировании, не завязанными на бизнес логику, то единственный надежный вариант в версии ниже 2012 - это триггеры. Проблема с вашими датами решаема изменением архитектуры. Что если некий юзверь решая HD задачу произведет прямой инсерт, минуя вашу процедуру ? Тогда вы так-же не узнаете кто это сделал.

P.S. В CDC нельзя залогировать пользователя, выполнившего изменения
P.P.S. В 2012 Audit должен уметь делать нормальное логирование.
23 окт 13, 12:18    [15019692]     Ответить | Цитировать Сообщить модератору
 Re: Встроенные InsertDate и UpdateDate  [new]
Exproment
Member

Откуда:
Сообщений: 416
KRS544
Может поможет
отслеживание изменений

в Change Tracking, аналогично Change Data Capture нельзя залогировать пользователя, сделавшего изменения.
23 окт 13, 12:20    [15019716]     Ответить | Цитировать Сообщить модератору
 Re: Встроенные InsertDate и UpdateDate  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3752
Exproment
KRS544
Может поможет
отслеживание изменений

в Change Tracking, аналогично Change Data Capture нельзя залогировать пользователя, сделавшего изменения.

пользователя автор не просил. Только когда вставлена и когда изменена. Для этих целей CDC идеально подходит.
23 окт 13, 13:06    [15020123]     Ответить | Цитировать Сообщить модератору
 Re: Встроенные InsertDate и UpdateDate  [new]
читаем внимательнее
Guest
Exproment
KRS544
Может поможет
отслеживание изменений

в Change Tracking, аналогично Change Data Capture нельзя залогировать пользователя, сделавшего изменения.

а где Вы нашли у ТС o "залогировать пользователя, сделавшего изменения"?
23 окт 13, 13:10    [15020143]     Ответить | Цитировать Сообщить модератору
 Re: Встроенные InsertDate и UpdateDate  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2414
ЕвгенийGEM
Winnipuh, на счет триггеров не согласен.
Если обновляются или добавляются несколько записей-представляешь какую дату он им выставит? На микросек отличающуюся.
.


кто мешает в тригере сделать

declare @getdate datetime
set @getdate = getdate()

update 
  ...=@getdate
  from 
 ...


да и микросекунды-секунды-минуты обычно никого не волнуют.

но согласен, что лучше в исходной архитектуре (хранимках) это продумывать заранее
23 окт 13, 14:40    [15020877]     Ответить | Цитировать Сообщить модератору
 Re: Встроенные InsertDate и UpdateDate  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
Ivan Durak
пользователя автор не просил

Ну как-же!
ЕвгенийGEM
Обновление же нужно, чтобы поймать за руку


ЕвгенийGEM
Winnipuh, на счет триггеров не согласен.
Если обновляются или добавляются несколько записей-представляешь какую дату он им выставит? На микросек отличающуюся.
Лучше в хранимках все писать, а InsertDate выставить тупо по умолчанию getdate().
Я в таблицу всегда вставляю поля дат, просто часто приходится иметь дело с уже убитыми данными и их надо как-то восстанавливать-вот и спрашивал нет ли встроенных средств.
При выхове нескольких хранимок дата тоже будет отличаться.

Какая проблема, собственно? Дата будет реальная, когда изменились данные - ведь это и нужно, да?
ЕвгенийGEM
часто приходится иметь дело с уже убитыми данными и их надо как-то восстанавливать
Тогда писать версии данных на триггерах.
Поищите в этом форуме по "логирование изменений", подробно обсуждались несколько вариантов. Так же можно посмотреть в ФАК-е и в статьях.
23 окт 13, 14:57    [15021051]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить