3

それが必要かどうかはわかりません。すべてのテーブルにタイムスタンプ列がある SQL Server 2008 データベースがあります。将来の SQL Server バージョンに簡単にアップグレードできるように、timestamp データ型を rowversion に変更するのが最善ですか? もしそうなら、テーブルを再作成せずにすべてのタイムスタンプ列を行バージョンに変更する最良の方法は何ですか?

4

1 に答える 1

3

ROWVERSIONの代わりに表示するようにスクリプトを自由に変更してくださいTIMESTAMP。ただし、テーブルに変更を加えようとしても意味がありません。SQL Server 2012でも、次のようなテーブルを作成したとしても、紛らわしい名前を削除することをずっと前に誓っています。

USE tempdb;
GO
CREATE TABLE dbo.foo
(
  bar INT,
  rv ROWVERSION
);

カタログビューおよびその他の内部のすべては、それをTIMESTAMPとして認識します。

SELECT c.name, [type] = TYPE_NAME(c.system_type_id)
  FROM sys.columns AS c
  WHERE [object_id] = OBJECT_ID('dbo.foo');

結果:

name type
---- ---------
foo  int
rv   timestamp

ですから、将来のバージョンに備えるためにあなた(または誰か)ができることは何もないと思います-Microsoftはあなたと同じ船にたくさんの顧客を抱えるでしょう、それがおそらくあなたが実際にそうしなかった理由ですタイプの急速な追放を見た。彼らはおそらくまだそれを本当に排除する計画を考え出しているでしょう(そして彼らはDATETIME2私見を除いて名前を選ぶことについてずっと良くなっています)。

私の最善のアドバイスは、スクリプトとオブジェクトがすべて使用ROWVERSIONされていることを確認して、驚かないようにすることです。これは、Management Studio、カタログビュー、またはサードパーティツールから生成したスクリプトを手動で編集することを意味する場合があります。

于 2012-04-27T13:03:55.253 に答える