2014-01-29 4 views
0

В идеале вы должны быть знакомы с MSSQL Row-Level Versioning.MSSQL Управление версиями на уровне базы данных

Мой вопрос в том, существует ли существующий механизм (или можно создать нечто подобное) для получения версии базы данных? Я бы предпочел инкрементное число (например, ROWVERSION), но я был бы в восторге от хэша последнего запроса, который изменил базу данных (INSERT или UPDATE).

+0

что вы пытаетесь достичь? Отслеживание для каждой базы данных изменяется или каждый раз, когда некоторые данные изменяются? Пожалуйста, уточните, что вы хотите знать? – vasin1987

+0

Я хочу отслеживать каждый раз, когда данные меняются ... Я был конкретным, вы не меняете схему БД с помощью 'INSERT' /' UPDATE', нет? Хотя с этой мыслью я хотел бы указать, что я хочу знать, когда схема тоже изменится. – Christian

+0

Тогда какая часть rowversion не отвечает вашим потребностям, так как она обновляется каждый раз, когда данные изменяются? Еще одно решение, которое я использую для отслеживания изменений данных, - это обновление [ModifyDate] при каждом изменении данных приложения. Это позволяет пользователю напрямую редактировать данные в базе данных. – vasin1987

ответ

1

В этом нет ничего, что позволит вам это сделать.

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

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

Итак, я не вижу надежного и неинтрузивного способа сделать это. Тем не менее, я не могу понять, почему вам нужно - что бы вы сделали с чем-то, что сказала version = 123456? Что, если это была версия = 123457?

+0

Спасибо за ответ. Кажется, мои варианты довольно ограничены. – Christian

Смежные вопросы