|
分類:[VB.NET/VB2005 以降]
データが500万レコードあるテーブルにフィールドを追加しようとしたら、下記のエラーが発生しました。(フィールド数は300あります。)
「実行タイムアウトの期限が切れました。操作完了前にタイムアウト期間が過ぎたか、サーバーが応答していません。」
下記のSQLでテーブルをコピーし、元のテーブルを空にした後、フィールドを追加した後でデータを移そうと考えました。 SELECT * INTO <コピー先テーブル名> FROM <コピー元テーブル名>
データ移行時のSQLは下記の通りです。 INSERT INTO 新テーブル名 (フィールド名, ・・・) SELECT フィールド名, ・・・ FROM コピーしたテーブル名
データ移行時、下記のエラーが発生しました。 「'ACTIVE_TRANSACTION' により、データベース '・・・' のトランザクション ログがいっぱいになっています。」
データベースの復旧モデルは「単純」となっており、トランザクション ログの圧縮などは行えないと思います。
コピーしたテーブルから1レコードずつ取り出し、新テーブルにデータを移せばできるとは思いますが、すごく時間がかかりそうで不安です。
どのようにデータ移行するのがお勧めでしょうか?
|