Sql-Server
有什麼理由不添加“rowversion”列?
TechNet 文章“優化連結到 SQL Server 的 Microsoft Office Access 應用程序”建議將rowversion列添加到從 MS Access 連結的 SQL Server 表中。從支持並發檢查部分:
Office Access 會自動檢測表何時包含此類列,並在影響該表的所有 UPDATE 和 DELETE 語句的 WHERE 子句中使用它。這比驗證所有其他列是否仍具有上次刷新動態集時的相同值更有效。
好消息是每個 UPDATE/DELETE 語句和綁定表單都將受益於此添加,而無需在 MS Access 中進行任何更改(除了重新連結表)。
直到最近我才知道這個功能。我正在考慮向我從 MS Access 連結到的 SQL Server 中的每個表 添加一個命名的*rowversion列。*在執行此操作之前,我應該注意哪些缺點?
顯然會有儲存要求和性能影響,但我認為這些可以忽略不計。此外,其中一些表是合併複製場景中的文章;這有什麼區別嗎?
除了您已經了解的一些小事情(額外的儲存要求,以及由於相同行數需要更多 I/O 而導致的潛在性能差異),不,我想不出任何真正的陷阱向這些表中添加一
ROWVERSION
列。但是,對於合併複製,一個潛在的問題是,如果 Access 從其中一個伺服器中獲取一行,然後嘗試從不同的訂閱者那裡獲取同一行的副本(不確定這在您的體系結構中是否可行)。原因是這些
ROWVERSION
值在每個訂閱者處重新生成,因此它們與源不匹配 - 這可能會使該行看起來已更改,而實際上並沒有更改。也許不可能,或者這樣的一行總是被認為是“臟的”是可以的,但要記住一些事情(並且可能要徹底測試)。您可能還想查看本文件中有關架構更改的合併複製部分。