新しいサーバーができたので、既存のSQL Server 2008インスタンスを古いdbボックスからコピーする必要があります。
私は通常、.mdfとログファイルをコピーしてそれらを添付することでこれを行いますが、データベースを24時間年中無休で使用しているため、データベースをオフラインにできないため、データベースをバックアップし、新しいデータベースに復元しました。機械。しかし、私はいくつかの問題を抱えており、そのうちの1つは 孤立したユーザー に関連しています。だから私が探しているのは、最小限の大騒ぎ/他人/頭痛ですべてを横切るフェイルセーフプロセスです。私は.Net開発者であり、かなりの量のSQLを身につけていますが、SQL Serverの内部の動作はほとんど謎であり、MSのドキュメントをトロールするのは苦痛です。
助けてください。
データベースをオフラインにできない場合は、バックアップ/復元を行う必要があります。私は以下を提案します:
新しいボックスを構築して古いボックスとまったく同じように構成すると、手間が最小限に抑えられます。
データベースのサイズがわからないので、この方法には時間がかかる場合があります。最も簡単な方法は、古いボックスをシャットダウンしてMDFおよびLDFファイルをコピーし、(マスターを復元した後)SQLを再起動してデータベースをオンラインにするだけです。しかし、データベースをオフラインにすることは許可されていないため、これはオプションではありません。
24時間年中無休の運用について言及しているので、これを行う最善の方法は、新しいシステムで データベースミラー を作成することです。その後、アプリケーションの状態に応じて、最小値-おそらくゼロで切り替えることができます。構造化-クライアント側リダイレクトを使用したダウンタイム。基本的な手順は次のとおりです。
WITH NORECOVERY
両方のサーバーに「エンドポイント」を作成し、接続(ファイアウォールルールなど)を確認し、ポートとIPアドレスを正しく設定します。例:
CREATE ENDPOINT endpoint1
STATE=STARTED AS TCP(LISTENER_PORT = 5222, LISTENER_IP = 192.168.1.5)
FOR DATA_MIRRORING(ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = REQUIRED ALGORITHM RC4)
ミラーでミラーリングを設定し、プライマリをポイントします。
ALTER DATABASE GaiusMirrorDB SET PARTNER = 'TCP://192.168.1.5:5222'
go
EXEC sys.sp_dbmmonitoraddmonitoring
go
プライマリでは、ミラーを指します(データベース名とIPアドレスが異なるだけです)。
次に、時間が来たら、プライマリをミラーに切り替えます。
ALTER DATABASE GaiusDB SET PARTNER FAILOVER
GO
注:これら2つのサーバーは同じネットワーク上にあると想定しているため、同期モードで操作しても問題ありません。これがWAN=リンク上にある場合は、非同期モードを使用します。