1

SQL 2005 で約 1,500 万件のレコードがある既存のテーブルに自動付番列を追加する必要があります。

どれくらい時間がかかると思いますか?それを行うより良い方法は何ですか?

4

4 に答える 4

3

影響を最小限に抑えるために、ID 列を追加した新しいテーブルを作成し、古いテーブルから選択して新しいテーブルに挿入し、古いテーブルを削除して新しいテーブルの名前を変更します。以下に基本的な概要を説明します。外部キーなどを処理するには、追加の手順が必要になる場合があります。

create table NewTable (
   NewID int identity(1,1),
   Column1 ...
)
go

insert into NewTable
   (Column1, ...)
   select Column1, ...
       from OldTable
go

drop table OldTable
go

exec sp_rename 'NewTable', 'OldTable'
go
于 2010-09-28T19:42:25.590 に答える
2

どれくらいの時間がかかるかを言うのは本当に難しいです。

私の意見では、本番データベースのコピーを戻し、それを開発環境に復元し、そこに変更を適用して、所要時間を確認することをお勧めします。

そこから、サイトのダウンタイムを調整したり、ユーザーが接続していないときに更新を実行するようにスケジュールしたりできます。

于 2010-09-28T19:34:56.787 に答える
2

緊急でない限り:

  1. ライブ データベースに変更を加えないでください。
  2. ライブ データベースに変更を加えないでください。

必要なダウンタイムを確認するには、新しい DB への復元を行い、そこで変更を加えます。

それほど長くはありません。行数だけでなく、各行のデータ量にもよります。(SQL Server はテーブル全体をコピーしようとしています。)

于 2010-09-28T19:50:10.597 に答える
0

運用データベースをバックアップし、変更を別のサーバーに適用し、接続文字列を変更するオプションはありますか? 元のサーバーと同じサーバーに復元し、接続文字列を変更して、古いデータベースを削除することもできます。

ディスク容量が限られている場合、実行できない場合があります。

于 2010-09-28T20:15:56.767 に答える