10

私は50人未満の比較的小さな会社で働いており、おそらくDBAに最も近いものです...私は実際にはプログラマーですが、それは重要ではありません。SQL Server 2000100の異なるデータベースがあります。それらのほとんどすべてにSQLログインが関連付けられており、そのログインはDB_OWNER特定のデータベースのデータベースロールに関連付けられています。DB_DATAREADERデータベースの役割に設定されているログインもいくつかあります。

新品のマシンを購入しました(現在は12年前のもので、ハードウェア障害が原因でビジネスが許容できないほど長く停止する可能性があることを心配しています)。SQLServerのバージョンはアップグレードしていません。私たちは2000年に固執するつもりです。

私の質問は、これを行う最も簡単な方法は何ですか。私の考えは、すべてのデータベースを切り離し、それらを新しいマシンにコピーしてから、各データベースを再接続することです。マシン名とIPを同じに保ち、完了したら古いサーバーを削除するだけなので、接続文字列を変更する必要はありません。それはそれほど悪くはないようで、週末に簡単にそれを行うことができます。この方法での私の問題は、それを行った後、データベースからユーザーを削除してから、loginユーザー名/パスワードを使用して、各ユーザーに適切な役割を割り当てます。私はここに5年しかいませんが、特定のデータベースとプログラムが使用している可能性のあるすべてのユーザー名/パスワードを持っているわけではありません。既存のプログラムを壊したり、すべてのマシンにアクセスしてこれを更新したりする必要はありません...または、古いソースコードを見つけて再コンパイルする必要があります...はい、一部のレガシーのものにはユーザー名/パスワードがハードコーディングされていますソースで:(。

したがって、主な質問はscript、既存のサーバーで実行して、新しいマシンで実行するスクリプトを生成し、以前と同じユーザー名/パスワードで既存のlogins、をセットアップできるということだと思います。usersroles

あるマシンから別のマシンにSQLサーバーインスタンスを転送する簡単な方法がある場合。ぜひ聞きたいです。

参考までに、既存のサーバーから仮想マシンで使用するVHDを作成しようとしましたが、そのルートを使用しました。マシンをWindowsで起動させることはできませんでした。それがドライバーの問題だったと思います。

4

4 に答える 4

4

移行先のマシンで 64 ビット バージョンの SQL サーバーを実行している場合を除き、最初のコメントに記載されているリンクを使用すると、ログインを正常に転送できます。

そのリンクの「異なるバージョンの SQL Server 間でログインとパスワードを転送するための完全な解決策」というタイトルのセクションでは、目標を達成するための段階的な手順が提供されます。

これを行うのは確かに非常に危険ですが、Norton Ghostなどのツールを使用して既存のサーバーのドライブのイメージをいつでも作成し、そのイメージを新しいハードウェアに復元することができます。

従来のドライブからソリッド ステート ドライブに移行するときにこれを実行しましたが、長い時間 (数時間) かかりましたが、問題なく動作しました。もちろん、OS を変更している場合、このアプローチは機能せず、ハードウェアとドライバーの違いにより正しく機能しない可能性があります。

確かに手間はかかりますが、これらの種類のアップグレードにより、db サーバーを新しいインストールに移行するのを困難にしている問題の一部を修正する機会が得られます (例: ハードコードされた資格情報など)。 . これらの問題を修正する能力、時間、および願望がある場合は、そうする価値があるかもしれません.

于 2012-08-28T23:35:39.580 に答える
3

サーバーをシャットダウンしてから、データベースに関連するすべてのファイルを新しいサーバーにコピーし、コピーしたファイルを使用して新しいsqlserverを再起動できる可能性があると思いました。http://www.sqlservercentral.com/Forums/FindPost959329.aspxを介して、これ以外にこれ以上見つけることはできません

このリンクは、何をすべきかについての支持意見を提供しますhttp://support.microsoft.com/kb/314546

VHDルートを考慮して、競合製品も試しましたか?あなたはVMWareを試してみるかもしれません、私はそれについて非常に良いことを聞いたことがあり、他の人が失敗したところで成功するかもしれません。http://www.vmware.com/nl/products/datacenter-virtualization/vsphere-hypervisor/overview.html

于 2012-08-23T15:44:10.677 に答える
2

SQL 2000 をハッキングしてから長い時間が経ちましたが、2005 以降には当てはまらない方法でハッキング可能でした。以下は、「これをやるとどうなるか…」という昔の記憶に基づくアイデアと提案です。現在、SQL 2000 インスタンスにアクセスできないため、特定のコマンドや例を示すことはできません。

  • 「新しい」マスター データベースのバックアップを作成します。
  • 2 つの異なるボックスでの SQL 2000 の 2 つのインスタンス。それらを「古い」と「新しい」と呼びます。
  • 古いものをシャットダウン
  • マスター データベース ファイル (master.mdf、master.log、または名前が付けられているもの) を新しいサーバーにコピーします。
  • 「新しい」マスター データベースのバックアップがあることを確認します。
  • それらをユーザー データベースとして新しいインスタンスにアタッチします。ファイルの名前を「OldMaster」などに変更します。
  • 両方のマスター データベースで適切なシステム データベースを見つけます。シスログイン?SysLoginX? オンライン ブックが役に立ちます (これらのシステム テーブルは 2000 年以降完全に改訂されています)。
  • INSERT... SELECT... あるデータベースから別のデータベースへ。私はかつてこれをやったとかなり確信しています。(SA アカウントを削除する直前に、可能かどうかを確認しました。) (ああ、SA アカウントを削除しないでください。)
  • システム データベースの手動更新を可能にするために、切り替えなければならない sp_options スイッチがいくつかあると思います。
  • 「新しい」マスター データベースのバックアップを作成しましたね。(実際には、インスタンスをシャットダウンし、マスター データベース ファイルをコピーして、それらを再起動しても問題ありませんでした。シャットダウンして、混乱したファイルにコピーをコピーし、再起動するだけです。だった -- 他のデータベースをいじっていない限り.)

sp_change_users_login(「レポート」を使用してから「自動修正」を使用) は、ここで非常に重要であることが証明されます。ログイン (マスター データベースの定義) をユーザー (データベースに保存されている定義) と同期するために使用できます。繰り返しますが、現在の私には当てはまりませんが、データベースをあるボックスから別のボックスに移動するたびに、この手順を使用する必要がありました。は。暗号化されたパスワードを使用してログインをスクリプト化し、その「ログインの作成」を別のボックスで実行する方法がいくつかありましたが、それが何であったか思い出せません。sp_CreateLogin のドキュメント、または 2000 で SQL ログインを作成するために使用されたものを調べます。

私がこれまでに理解したほとんどすべてのことは、Books Onlineを読んで、いじり回して得たものです。時間があるかどうかはわかりませんが、要件があれば、最終的に機能させることができます。

于 2012-08-29T00:30:57.983 に答える
2

最も簡単な方法は、新しいサーバーをインストールした後であると思います (さまざまな理由から、sql2008 以降へのアップグレードを再検討することをお勧めします)。

次に、データベースのコピー ウィザードを使用します。で説明されている手順に従います。

http://msdn.microsoft.com/en-us/library/ms188664.aspx

こんにちは、ジャコ

于 2012-08-29T15:07:11.583 に答える