Посмотрите столбец базы данных, чтобы определить, что модифицирует - PullRequest
1 голос
/ 11 июня 2009

Как мне узнать, какое приложение или SP модифицирует значения в таблице конфигурации? Я думал, что изолировал приложение, которое ответственно, но эти конкретные значения продолжают возвращаться к истине, когда я продолжаю изменять их как ложные.

Ответы [ 3 ]

5 голосов
/ 11 июня 2009

Сначала создайте таблицу регистрации:

CREATE TABLE modlog(
   datestamp smalldatetime,
   username varchar(255) NOT NULL DEFAULT SYSTEM_USER
   );

Затем создайте триггер UPDATE на своей таблице:

CREATE TRIGGER mytable_mods ON mytable FOR UPDATE AS
   INSERT INTO modlog(smalldatetime) VALUES (GETDATE());

Просто загляните в таблицу modlog, чтобы выяснить, кто и когда обновляет таблицу. Вы можете получить фантазию, а также регистрировать обновления определенных полей.

Другой подход - настроить трассировку в SQL Server Profiler, отфильтровать его, чтобы он возвращал только обновления в этой таблице, и держать его открытым, пока что-то не произойдет.

Если ваши приложения включают в свои строки подключения параметр ApplicationName , вы можете использовать App_Name () вместо SYSTEM_USER , который будет регистрировать имя приложения, удаляя лишнюю детективную работу. Знание пользователя все еще может быть полезным, чтобы вы могли выяснить, что он делает для запуска обновления.

1 голос
/ 11 июня 2009

Создайте триггер для отката обновления. Подождите, пока приложение не выдаст ошибку. Это может быть очень простой триггер:

CREATE TRIGGER BugOffRogueProgram
ON MyConfigTable
FOR UPDATE
AS
BEGIN
ROLLBACK TRAN
END

0 голосов
/ 11 июня 2009

Ответы, представленные до сих пор, абсолютно на месте - это способ сделать это в SQL Server 2005.

Так же, как краткий тизер: в SQL Server 2008 появилась новая функция под названием Изменить сбор данных для поддержки этого точного сценария «из коробки» без необходимости самостоятельно создавать триггеры и обновлять таблицы. Очень удобно!

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...