最近、SQL Server 2000データベースを2008 R2にアップグレードしました。
私がしたこと:
質問:移行を完了するために他に何をすべきですか?
したい:
つまり、古いSQL 2000データベースを新しい2008 R2データベースに正しく完全に変換する方法を知りたい、すべてが正しく行われていることを落ち着かせ、すべての新しいことに満足している特徴。
この質問をしているのは、インターネット上にさまざまなことを言っているサイトがたくさんあるので、混乱するからです。インデックスを再構築する必要があると言う人もいれば、他のことをする人もいます...今私は何も知らないので、経験豊富な人の意見と明確で段階的な指示を聞きたいです。私は非常に小さな会社で働いており、私は一人でいるので、物事を台無しにしたくありません。
サー、私はあなたの答えに本当に感動しました、私はそれほど期待していませんでした。
だからいくつかのコメント:
データベースは現在稼働中です。前述のとおり、最初の投稿で説明したように、MSDNで説明されているように、deattach-attachメソッドを使用してアップグレードされました。 http://msdn.Microsoft.com/en-us/library/ms189625.aspx それは迅速に行われなければならなかったので、私はそのようにすることを余儀なくされました。それがどれほど不適切であったかを忘れて、現在の状況に焦点を当てましょう。
ユーザー/権限はここでは問題ではありません-数は少なく、権限は単純です。
データベースを使用するアプリケーションは2012年までSQL 2000と互換性があるため、これも問題にはなりません。
データベースファイル(MDF)は大きくありません-約1GBだけです。
いくつかの質問:
バックアップ/復元方法を使用することをお勧めしますが、私は上記のようにしたので、今問題が発生する可能性はありますか?すべてが問題なく動作しました。
チェックサムと完全復旧モデルについて:SQL 2000では利用できず、有効化されていなかったので、今すぐ使用したいと思います。データベースプロパティでこれらのオプションを有効にすることだけが必要だとおっしゃっていましたか。どこかで読みましたが、それだけでは不十分であり、インデックスなども再構築する必要があります。本当にわからないので、聞いてみます。
このデータベースをSQL 2012に移行する準備をしています。つまり、最初はSQL 2000から2008 R2になりましたが、現在は2008 R2から2012になります(SQL 2000データベースのサポートがないため、これを直接行うことは不可能でした。 SQL 2012)。したがって、私はあなたのガイドに従う必要があることを理解しています:2008 R2でバックアップし、2012年に復元してから、残りのヒントを正しく実行しますか?
バックアップ/復元の方法を説明してください:データベースのSQLクエリへのダンプのようなもので、一連のクエリを実行してデータベースを復元するようなものですか?ちなみに、この方法は私のデータベースを「デフラグ」するのでしょうか?そうでない場合、手動で最適化/最適化する方法は?
SQL 2000 Expressを何年も使用していたので(管理インターフェイスなし)、エンジンを停止してDATAディレクトリをRARするだけでバックアップを実行していました。今のところ、SQL 2008を使用しているので、これはManagement Studioでバックアップ機能を使用するよりも優れていますか?
トランザクションログのバックアップを頻繁に行う完全復旧モード-トランザクションログはどこに保存されますか-LDFファイルですか?どうすれば適切にバックアップできますか?
私の質問は馬鹿げているように聞こえるかもしれません。私はプロのデータベース管理者ではありませんが、データベースエンジンのアップグレードなどの「ハードコア」タスクを実行できるのは私だけです。また、あなたのノウレッジが私のような他の人々に大いに役立つことも確信しています。
お時間と知識をありがとうございました。本当に感謝しています。
最初のステップを行うには、SQL Server 2000データベースで pgrade Advisor を実行し、それによって報告されるすべての問題に対処します。
ベストプラクティスとして、SQL Server 2000レガシーデータベースでアップグレードアドバイザーツールを使用し、トレースファイルをアップグレードアドバイザーツールにインポートして分析します。トレースファイルを使用すると、アップグレードアドバイザーは、アプリケーションに組み込まれたTSQLなど、データベースの単純なスキャンでは表示されない可能性のある問題を検出できます。 SQL Server 2000サーバーでSQLプロファイラーを使用してTSQLのトレースを通常の時間にキャプチャし、アップグレードアドバイザーを使用してこれらのトレースを分析できます。
したがって、残りの手順は次のようになります。
移行当日:
DBCC CHECKDB ('<db_name_goes_here>' ) WITH ALL_ERRORMSGS,NO_INFOMSGS, DATA_PURITY
DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
Update Statistics table_name with FULLSCAN
sp_recompile 'procedureName'
を使用してすべてのSPを再コンパイルしますSP_REFRESHVIEW view_name
SQL Server 2005以降では、 データベースメール が導入されました。したがって、SQLMailからデータベースメールに移行する必要があります。
USE [master]
GO
sp_configure 'show advanced options',1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'Database Mail XPs',1
GO
RECONFIGURE
GO
また、レプリケーションがある場合は、それをリセットする必要があります。ログシッピングやミラーリングのようなDR(2005年以降に新しく、2012年に廃止された)の場合、それもリセットする必要があります。
古いDTSパッケージは、C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSMigrationWizard.exe
(コマンドライン)または Package Migration Wizard を使用してSSISに移行する必要があります。
また、 https://dba.stackexchange.com/a/36701/878 にある私のスクリプトを使用することもできます。ただし、デタッチ/アタッチ方式を使用していますが、バックアップ/復元方式を使用することを強くお勧めします。それに応じてスクリプトを変更します。
補足として:
質問に対応しましょう...
移行を完了するには、他に何をすべきですか?
私の答えを参照してください。移行計画を適切に立てるのに役立ちます。ビジネスユーザーによる適切なアプリケーションテストと共に、移行計画を常にUAT(非運用)でテストします。
チェックサムや完全復旧モデルなどの新機能を使用します。
CHECKSUM
はSQL Server 2005以降の新機能です。上記の移行手順の一部として説明しました。
full recovery model
は新しいものではありません。それはあなたのビジネスの種類に依存し、災害の場合に失うことができるデータの量によって決まります。
トランザクションログのバックアップを頻繁に実行する完全復旧モードでは、データ損失の量を減らすことで、特定の時点の状態に復元できます。
このデータベースを、SQL Server 2008 R2で作成されたとおりに作成します。
このデータベースを完全に互換性のある正しいものにし、新しいSQL 2008 R2データベースエンジンに完全に適合させる。
これを完全に理解しないでください!しかし、上記の移行手順が役立ちます。上記の手順に従って、データベースを復元し、互換性レベル10 100
を変更するだけです。
古いSQL Server 2000データベースを新しい2008 R2データベースに正しく完全に変換する方法を知りたいだけです。落ち着いて、すべてが正しく行われ、すべての新機能に満足してください。
これには、アプリケーションコードの変更も必要になるため、注意が必要です。 SQL Server 2008 R2の新機能を使用するようにアプリケーションコードを変更した場合、問題は発生しません-UATまたはDEV環境でアプリケーションの完全なリグレッションテストを完全に実行したことが提供されます。これにより、実際の移行をPRODで行うときに最高の自信が得られます。
注:上記は覚えておくことができる手順であり、何も省略されていないことは確かです。見逃したものがある場合は、そのサイトまたは他の専門家をこのサイトに追加します。自由に追加してください。
実際の移行中に予期せぬ事態が発生しないようにするには、上記で概説したすべてのものを最初に非本番環境で再生する必要があります。
その他の質問:
バックアップ/復元方法を使用することをお勧めしますが、私は上記のようにしたので、今問題が発生する可能性はありますか?すべてが問題なく動作しました。
すべてが正常に機能し、データベースをアタッチできた場合、[〜#〜] no [〜#〜]問題は発生しません。デタッチ/アタッチvsバックアップ/復元は、データベースを別の場所に移動する方法の1つにすぎません。ただ気を付けてください.. バックアップ/復元何かがうまくいかなくて(最悪の場合)少なくともデータベースを復元および回復するためのバックアップがあるので、より安全で信頼できます。
チェックサムと完全復旧モデルについて:SQL Server 2000では利用できず、有効化されていなかったため、今すぐ使用したいと思います。データベースプロパティでこれらのオプションを有効にすることだけが必要だとおっしゃっていましたか。どこかで読みましたが、それだけでは不十分であり、インデックスなども再構築する必要があります。本当にわからないので、聞いてみます。
言ったように、チェックサムはバージョン2005以降の新機能です。これは、SQL Serverが特にI/Oによるページの破損を検出するメカニズムです。詳細については、私の回答 here を参照してください。
チェックサムを有効にするだけでなく、復旧モデルを完全に変更するには、以下のT-SQLコードを使用して実行できます。
USE master;
GO
ALTER DATABASE [your_database_name] -- change this !!
SET RECOVERY FULL, PAGE_VERIFY CHECKSUM;
GO
注:データベースオプションを設定すると、2008R2から2012への移行を行っても保持されます。
このデータベースをSQL Server 2012に移行する準備をしています-最初は2000から2008 R2でしたが、今は2008 R2から2012になります(SQLで2000データベースがサポートされていないため、これを直接実行することは不可能でしたサーバー2012)。したがって、私はあなたのガイドに従う必要があることを理解しています:2008 R2でバックアップし、2012年に復元してから、残りのヒントを正しく実行しますか?
はい、お願いします。言ったように、バックアップの復元は、それを行わない正当な理由がない限り、優先方式です。
バックアップ/復元の方法を説明してください:データベースのSQLクエリへのダンプのようなもので、一連のクエリを実行してデータベースを復元するようなものですか?ちなみに、この方法は私のデータベースを「デフラグ」するのでしょうか?そうでない場合、手動で最適化/最適化する方法は?
バックアップ/復元は... Sybase、Oracle、またはおそらくMySQLでも使用されるダンプとロードに似ています。そのSQL Serverはそれを..バックアップ/復元と呼びます。
必読: SQL Serverバックアップについて Paul Randall著。
単純な構文(完全な構文については [〜#〜] bol [〜#〜] )を参照してください:
backup database database_name
to disk = 'D:\backup\database_name_full.bak'
with init, stats =10
次に、復元先サーバーで次のように復元できます。
-宛先のディスクレイアウトがソースサーバーのディスクレイアウトと一致しない場合
restore database database_name
from disk = 'D:\backup\database_name_full.bak'
move 'logical_data_fileName' to 'physical_path\database_name.mdf'
move 'logical_log_fileName' to 'physical_path\database_name_log.ldf'
with recovery, stats = 10
-宛先のディスクレイアウトがソースサーバーのディスクレイアウトと一致すると仮定
restore database database_name
from disk = 'D:\backup\database_name_full.bak'
with recovery, stats = 10
ちなみに、この方法は私のデータベースを「デフラグ」するのでしょうか?そうでない場合、手動で最適化/最適化する方法は?
バックアップ/復元はデータベースを最適化しません。断片化レベルに応じて、Alter Index ReorganizeまたはRebuildを使用する必要があります。
SQL Serverは初めてなので、Ola Hallengren'sを使用することを強くお勧めします。
SQL Server 2000 Expressを何年も使用していたので(管理インターフェイスなし)、エンジンを停止してDATAディレクトリをRARするだけでバックアップを実行していました。今のところ、SQL Server 2008を使用しているので、これはManagement Studioでバックアップ機能を使用するよりもまだ優れていますか?
エンジンを停止することは、バックアップを実行するためにできる悪いことです!!
私が言及したバックアップに関するPaulのリンクを読み、Olaのスクリプトを使用してください。 Microsoftには、自動バックアップを実行するためのスクリプトを含むKB記事があります- SQL Server ExpressでSQL Serverデータベースのバックアップをスケジュールして自動化する方法
トランザクションログのバックアップを頻繁に行う完全復旧モード-トランザクションログはどこに保存されますか-LDFファイルですか?どうすれば適切にバックアップできますか?
すべてのSQL Serverデータベースには、すべてのトランザクションと各トランザクションによって行われたデータベースの変更を記録するログがあります。トランザクションログは、データベースの重要なコンポーネントです。
トランザクションログの通常の命名規則拡張子は「.LDF」ですが、任意の拡張子を使用できます。
これで答えが非常に無駄のないものになるので、これについてはこれ以上詳しく説明しません。 トランザクションログ管理 を参照してください。私の回答 ここ にも優れたリンクがあります。
インスタンス全体をあるバージョンから別のバージョンに移行する場合は、私は強くお勧めします PowerShellベースのソリューションを使用する Start-SqlMigration