我一直使用SQL Server遷移助手將數據庫導入到SQL Server 2005中。我注意到導入的許多表格都被一個名爲SSMA_timestamp的新列修正了。SSMA時間戳。它是什麼,它是如何使用的?
任何人都可以告訴我這是什麼以及如何使用它?
我一直使用SQL Server遷移助手將數據庫導入到SQL Server 2005中。我注意到導入的許多表格都被一個名爲SSMA_timestamp的新列修正了。SSMA時間戳。它是什麼,它是如何使用的?
任何人都可以告訴我這是什麼以及如何使用它?
我認爲這是生成的,以便遷移助理可以在遷移期間檢測到數據的更改。
除非您繼續將Access用作遷移到SQL Server的特定數據庫的前端(在這種情況下請參閱Simon的答案),否則我認爲遷移完成後它們不會用於任何事情,所以一旦你確定一切都完成了,放棄這些新的列應該是安全的。
添加的SSMA_timestamp列不僅用於遷移過程中。當Access更新鏈接到SQL Server的表中的記錄時,它們實際上有助於避免錯誤。因此,如果您仍在使用鏈接到遷移的SQL Server數據庫的Access前端,最好不要刪除SSMA_timestamp列。
從MSDN文章Optimizing Microsoft Office Access Applications Linked to SQL Server:
支持併發檢查
大概在辦公室訪問鏈接表可更新性問題的主要原因是,Office訪問是無法驗證是否在服務器上的數據匹配動態集更新後最後檢索的是什麼。如果Office Access無法執行此驗證,它將假定服務器行已被其他用戶修改或刪除,並中止更新。
Office Access無法可靠地檢查匹配值有幾種類型的數據。這些包括大型對象類型,如SQL Server 2005中引入的文本,ntext,圖像以及varchar(max),nvarchar(max)和varbinary(max)類型。此外,浮點數字類型和浮點數都受到舍入問題的影響,這些問題可能會導致比較不精確,導致在值未發生真正更改時取消更新。 Office Access也無法更新包含沒有默認值並且包含空值的位列的表。
解決這些問題的一種快速而簡單的方法是將時間戳列添加到SQL Server上的表中。時間戳列中的數據與日期或時間完全無關。相反,它是一個二進制值,保證在整個數據庫中都是唯一的,並在每次將新值分配給表中的任何列時自動增加。這種列的ANSI標準術語是rowversion。 SQL Server支持這個術語。
Office Access會自動檢測表何時包含此類型的列,並在影響該表的所有UPDATE和DELETE語句的WHERE子句中使用它。這比驗證所有其他列仍然具有與動態集上次刷新時相同的值更有效。
Office Access的SQL Server遷移助理自動將名爲SSMA_TimeStamp的列添加到任何包含可能影響可更新性的數據類型的表中。
不要在明天可能會消失的某個網站上發佈某些論壇的鏈接,爲什麼不在這裏發佈實際相關的信息部分,所以無論這些其他網站發生什麼情況,這個答案都會對用戶有用? – 2012-10-17 22:01:34
@Aaron:好點。我已根據您的建議編輯了我的回覆。謝謝。 – 2012-10-17 22:25:31
感謝您的信息! – Chris 2009-11-18 16:40:09
請注意,儘管此答覆已被標記爲答案,但它不正確(請參閱下面的回覆鏈接,詳細解釋了SSMA_timestamp列的用途)。 – 2012-10-17 21:53:13
@SimonTewsi讓我三年前回答這個三年前的問題在你繼續使用Access作爲前端的情況下是不正確的,OP沒有說明他正在做的事情,給我投票?良好的社區精神。 – 2012-10-17 21:57:34