Временная метка SSMA. Для чего, как он используется?

Я повторно использовал помощник миграции SQL Server для импорта базы данных в SQL Server 2005. Я заметил, что несколько импортированных таблиц были изменены с новым столбцом SSMA_timestamp.

Может ли кто-нибудь сказать мне, для чего это и как он будет использоваться?

Ответ 1

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

Если вы продолжаете использовать Access в качестве передней части этой конкретной базы данных, вы перенесли на SQL Server (в этом случае см. ответ Саймона), я не думаю, что они будут использованы для чего-либо после завершения миграции, поэтому следует сбросить эти новые столбцы, если вы уверены, что все сделано.

Ответ 2

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

Из статьи MSDN Оптимизация приложений Microsoft Office Access, связанных с SQL Server:

Поддержка Concurrency Проверки

Вероятно, главной причиной проблем с обновлением в связанных с Office Access таблицах является то, что Office Access не может проверить, соответствуют ли данные на сервере тем, что было в последний раз обновлено обновляемым dynaset. Если Office Access не может выполнить эту проверку, предполагается, что строка сервера была изменена или удалена другим пользователем и она прерывает обновление.

Существует несколько типов данных, которые Office Access не может надежно проверить для сопоставления значений. К ним относятся большие типы объектов, такие как текстовые, ntext, image и varchar (max), nvarchar (max) и varbinary (max) типы, введенные в SQL Server 2005. Кроме того, числовые типы с плавающей запятой, такие как real и float, подвержены вопросам округления, которые могут привести к неточности сравнений, что приведет к отмене обновлений, когда значения не изменились. Office Access также имеет проблемы с обновлением таблиц, содержащих столбцы бит, которые не имеют значения по умолчанию и содержат нулевые значения.

Быстрый и простой способ устранения этих проблем - добавить столбец timestamp в таблицу на SQL Server. Данные в столбце временной метки полностью не связаны с датой или временем. Вместо этого это двоичное значение, которое гарантировано является уникальным в базе данных и автоматически увеличивается каждый раз, когда новое значение присваивается любому столбцу в таблице. Стандартным термином ANSI для этого типа столбца является rowversion. Этот термин поддерживается в SQL Server.

Office Access автоматически определяет, когда таблица содержит этот тип столбца и использует его в предложении WHERE всех операторов UPDATE и DELETE, влияющих на эту таблицу. Это более эффективно, чем проверка того, что все остальные столбцы все еще имеют те же значения, что и при обновлении dynaset.

Помощник по миграции SQL Server для Office Access автоматически добавляет столбец с именем SSMA_TimeStamp в любые таблицы, содержащие типы данных, которые могут повлиять на обновляемость.