SSMA时间戳.它是什么,它是如何使用的?

Chr*_*ris 12 database sql-server sql-server-migration-assi

我经常使用SQL Server迁移助手将数据库导入SQL Server 2005.我注意到导入的一些表已被一个名为SSMA_timestamp的新列修改.

谁能告诉我这是什么以及它将如何使用?

Sim*_*wsi 22

添加的SSMA_timestamp列不仅在迁移期间使用.当Access更新链接到SQL Server的表中的记录时,它们实际上有助于避免错误.因此,如果您仍在使用链接到迁移的SQL Server数据库的Access前端,则最好不要删除SSMA_timestamp列.

从MSDN文章优化链接到SQL Server的Microsoft Office Access应用程序:

支持并发检查

Office Access链接表中可更新性问题的主要原因可能是Office Access无法验证服务器上的数据是否与正在更新的动态集最后检索的数据相匹配.如果Office Access无法执行此验证,则会假定服务器行已被其他用户修改或删除,并且中止更新.

Office Access无法可靠地检查匹配值的几种类型的数据.这些包括大型对象类型,例如text,ntext,image以及SQL Server 2005中引入的varchar(max),nvarchar(max)和varbinary(max)类型.此外,浮点数字类型,例如real和浮动,受到可能使比较不精确的舍入问题的影响,导致在值没有真正改变时取消更新.Office Access也无法更新包含没有默认值且包含空值的位列的表.

解决这些问题的一种快速简便的方法是在SQL Server上的表中添加时间戳列.时间戳列中的数据与日期或时间完全无关.相反,它是一个二进制值,保证在整个数据库中是唯一的,并且每次将新值分配给表中的任何列时自动增加.此类列的ANSI标准术语是rowversion.SQL Server支持此术语.

Office Access会自动检测表何时包含此类型的列,并在影响该表的所有UPDATE和DELETE语句的WHERE子句中使用它.这比验证所有其他列仍具有上次刷新动态集时所具有的值相同更有效.

Office Access的SQL Server迁移助手会自动将名为SSMA_TimeStamp的列添加到包含可能影响可更新性的数据类型的任何表中.

  • @Aaron:好点.我根据你的建议编辑了我的回复.谢谢. (3认同)

Aar*_*and 11

我认为这是生成的,以便迁移助手可以在迁移期间检测数据的更改.

除非您继续使用Access作为此特定数据库的前端,否则您已迁移到SQL Server(在这种情况下请参阅Simon的答案),我不认为迁移完成后它们将用于任何内容,因此它应该是一旦确定一切都完成,就可以放弃这些新列.

  • @Aaron:不,我没有低估你,因为你的回答一般是正确的,而且在一个特定的例子中是不正确的.我贬低它是因为它显然是不正确的.SSMS_timestamp列不用于迁移,并且在迁移完成后无法安全删除它.我认为实际上很好的社区精神可以用不正确的答案来确保人们寻找答案(即使是那些来自谷歌3年后的人,就像我一样)并不认为不正确的信息是正确的.我没有养成贬低的习惯,如果你在这种情况下被冒犯,我很抱歉. (3认同)
  • @Aaron:我已经根据您的更新删除了我的downvote。对我来说,重要的区别在于,如果继续使用Access前端,则删除SSMA_timestamp列是不安全的,但是如果不再使用Access,则可以。 (2认同)