14

最近、SQL Server Migration Assistant を使用してデータベースを SQL Server 2005 にインポートしました。インポートされた多くのテーブルが、SSMA_timestamp という新しい列で修正されていることに気付きました。

これが何のためのもので、どのように使用されるのか誰か教えてもらえますか?

4

4 に答える 4

25

追加された SSMA_timestamp 列は、移行中に使用されるだけではありません。実際には、Access が SQL Server にリンクされたテーブルのレコードを更新するときのエラーを回避するのに役立ちます。そのため、移行した SQL Server データベースにリンクされた Access フロント エンドをまだ使用している場合は、SSMA_timestamp 列を削除しないことをお勧めします。

MSDN の記事Optimizing Microsoft Office Access Applications Linked to SQL Server から:

並行性チェックのサポート

おそらく、Office Access にリンクされたテーブルの更新可能性の問題の主な原因は、サーバー上のデータが更新中のダイナセットによって最後に取得されたものと一致するかどうかを Office Access が検証できないことです。Office Access がこの検証を実行できない場合、サーバー行が別のユーザーによって変更または削除されたと見なされ、更新が中止されます。

Office Access が一致する値を確実に確認できないデータの種類がいくつかあります。これらには、text、ntext、image、および SQL Server 2005 で導入された varchar(max)、nvarchar(max)、および varbinary(max) 型などのラージ オブジェクト型が含まれます。および float は、比較が不正確になる可能性のある丸めの問題の影響を受けやすく、値が実際には変更されていないときに更新がキャンセルされる可能性があります。Office Access では、デフォルト値を持たず、NULL 値を含むビット列を含むテーブルを更新する際にも問題が発生します。

これらの問題をすばやく簡単に解決するには、SQL Server のテーブルにタイムスタンプ列を追加します。タイムスタンプ列のデータは、日付または時刻とはまったく関係ありません。代わりに、データベース全体で一意であることが保証され、新しい値がテーブル内の列に割り当てられるたびに自動的に増加するバイナリ値です。このタイプの列の ANSI 標準用語は、rowversion です。この用語は、SQL Server でサポートされています。

Office Access は、テーブルにこのタイプの列が含まれていることを自動的に検出し、そのテーブルに影響を与えるすべての UPDATE および DELETE ステートメントの WHERE 句で使用します。これは、他のすべての列が、ダイナセットが最後にリフレッシュされたときと同じ値を保持していることを確認するよりも効率的です。

Office Access の SQL Server Migration Assistant は、SSMA_TimeStamp という名前の列を、更新可能性に影響を与える可能性のあるデータ型を含むすべてのテーブルに自動的に追加します。

于 2012-10-17T21:49:17.187 に答える
14

これは、移行アシスタントが移行中にデータの変更を検出できるようにするために生成されたものだと思います。

SQL Server に移行したこの特定のデータベースのフロント エンドとして Access を使用し続けない限り (その場合は、Simon の回答を参照してください)、移行が完了した後にそれらが何にも使用されるとは思わないので、そうする必要があります。すべてが完了したことを確認したら、これらの新しい列を削除しても安全です。

于 2009-11-18T15:22:25.783 に答える