Отметка времени SSMA. Для чего, как это используется? - PullRequest
12 голосов
/ 18 ноября 2009

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

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

Ответы [ 2 ]

21 голосов
/ 18 октября 2012

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

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

Поддержка параллельных проверок

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

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

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

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

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

10 голосов
/ 18 ноября 2009

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

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

...