SQL 2005 で約 1,500 万件のレコードがある既存のテーブルに自動付番列を追加する必要があります。
どれくらい時間がかかると思いますか?それを行うより良い方法は何ですか?
SQL 2005 で約 1,500 万件のレコードがある既存のテーブルに自動付番列を追加する必要があります。
どれくらい時間がかかると思いますか?それを行うより良い方法は何ですか?
影響を最小限に抑えるために、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
どれくらいの時間がかかるかを言うのは本当に難しいです。
私の意見では、本番データベースのコピーを戻し、それを開発環境に復元し、そこに変更を適用して、所要時間を確認することをお勧めします。
そこから、サイトのダウンタイムを調整したり、ユーザーが接続していないときに更新を実行するようにスケジュールしたりできます。
緊急でない限り:
必要なダウンタイムを確認するには、新しい DB への復元を行い、そこで変更を加えます。
それほど長くはありません。行数だけでなく、各行のデータ量にもよります。(SQL Server はテーブル全体をコピーしようとしています。)
運用データベースをバックアップし、変更を別のサーバーに適用し、接続文字列を変更するオプションはありますか? 元のサーバーと同じサーバーに復元し、接続文字列を変更して、古いデータベースを削除することもできます。
ディスク容量が限られている場合、実行できない場合があります。