sql >> データベース >  >> RDS >> Database

コマンドラインを使用したSQLデータベースの移行

    数十のSQLデータベースがあり、各データベースを手動でバックアップ/復元するのにプロジェクトにとって時間がかかりすぎる場合はどうなりますか?問題ない!手動の介入を必要とせずに、すべてのデータベースを一度にエクスポートおよびインポートするメソッドをスクリプト化できます。 SQLログインとストアドプロシージャとビューの転送については、SSMSを使用したMSSQLの移行に関する記事をご覧ください。

    ソースサーバー上のデータベースのバックアップ

    1.ソースサーバーでSSMS(Microsoft SQL Server Management Studio)を開き、SQLインスタンスにログインして、[新しいクエリ]ウィンドウを開きます。次のクエリを実行します:

    SELECT name FROM master.sys.databases

    このコマンドは、サーバー上のすべてのMSSQLデータベースのリストを出力します。このリストをコピーするには、結果の任意の場所をクリックし、キーボードショートカットのCTRL + A(Macユーザーの場合はCommand + A)を使用してすべてのデータベースを選択します。すべてのデータベースを強調表示した後、右クリックして[コピー]を選択します。

    2.メモ帳を開き、結果を貼り付けて、移行したくないすべてのデータベース(新しくコピーしたメモ帳のテキスト内)を削除し、次のエントリを削除します。

    • マスター
    • tempdb
    • モデル
    • msdb

    これらのエントリはシステムのデータベースであり、コピーする必要はありません。移行する必要のあるデータベースを明示的に除いて、必ずすべてを削除してください。これで、必要なすべてのデータベースのリストが1行で区切られているはずです。つまり、

    • AdventureWorks2012
    • AdventureWorks2014
    • AdventureWorks2016

    3.この結果をC:\ databases .txtとしてコンピューターに保存します 。

    4.新しいメモ帳ウィンドウを作成し、以下をコピーしてドキュメントに貼り付け、C:\ db-backup .batとして保存します。

    mkdir %systemdrive%\dbbackups
    for /F "tokens=*" %%a in (databases.txt) do ( sqlcmd.exe -Slocalhost -Q"BACKUP DATABASE %%a TO DISK ='%systemdrive%\dbbackups\%%a.bak' WITH STATS" )

    5.ファイルをC:\ db-backup.batとして保存したので、開始に移動します。 メニューに移動してcmdと入力し、コマンドプロンプトを右クリックします 管理者として実行を選択します 。次のコマンドを入力します:

    cd C:\

    そしてEnterキーを押します。その後、db-backup.batと入力し、もう一度Enterキーを押します。

    この時点で、データベースのエクスポートが開始され、各データベースのエクスポートの進捗率が表示されます(下の図を参照)。

    失敗した可能性のあるデータベースのみを使用して、完了時にバッチファイルを再実行できるため、失敗したデータベースに注意してください。データベースのバックアップに失敗した場合は、コマンドプロンプトに表示されるエラーメッセージに注意し、既存のC:\ databases.txtファイルを変更して、失敗したデータベースのみを含めてエラーに対処し、db-backup.batを再実行します。すべてのデータベースが正常にエクスポートされるまで。

    データベースを宛先サーバーに復元する

    これで、フォルダ C:\ dbbackups \ができました。 移行するデータベースごとに.bakファイルが含まれています。フォルダをおよびコピーする必要があります C:\ databases.txt 宛先サーバーへのファイル。データを移行先サーバーに移動する方法は多数あります。 USB、Robocopy、またはFTPを使用できます。移行先サーバーのCドライブ上のフォルダーは、 C:\ dbbackupsと呼ばれる必要があります。 。スクリプトはここで.bakファイルを検索するため、ファイルに正確な名前を付けることが重要です。スクリプトがここでデータベース名を検索するため、宛先サーバーにもC:\databases.txtファイルがあることを確認してください。

    1.メモ帳を開き、以下をコピーしてドキュメントに貼り付け、C:\ db-restore .batとして保存します。

    for /F "tokens=*" %%a in (C:\databases.txt) do (
    sqlcmd.exe -E -Slocalhost -Q"RESTORE DATABASE %%a FROM DISK='%systemdrive%\dbbackups\%%a.bak' WITH RECOVERY"
    )

    2.ファイルをC:\ db-restoreとして保存します 。バット

    3. [スタート]メニューに移動して、 cmdと入力します 。

    4.コマンドプロンプトを右クリックします 管理者として実行を選択します 。次のコマンドを入力します:

    cd C:\

    Enterキーを押します。次に、 db-restore.batと入力します Enterキーを押します。

    これで、データベースのインポートが開始されました。各データベースの復元の割合と、「RESTOREDATABASEが正常に処理されました」というメッセージが表示されます。 」は、正常に処理されたデータベースごとに表示されます。

    失敗したデータベースのみを使用して、完了時にバッチファイルを再実行できるため、失敗したデータベースに注意してください。データベースのバックアップに失敗した場合は、コマンドプロンプトに表示されるエラーメッセージに注意し、エラーに対処し(必要に応じてバッチファイルを変更できます)、C:\ databases.txtを変更して、失敗したデータベースのみを含めます。 -すべてのデータベースが正常にエクスポートされるまでdb-restore.batを実行します。

    おめでとうございます。これで、すべてのデータベースが新しいサーバーにバックアップおよび復元されました。移行先サーバーでSQL接続をテストしているときにログインの問題が発生した場合は、 Microsoft SQLログインの移行(アンカーリンク)を参照してください。 この記事のセクションを参照して、その中の手順に従ってください。ビューまたはストアドプロシージャを移行するには、ビューとストアドプロシージャの移行を参照してください。 セクション。すべてのSQLサーバーには構成と直面する障害がありますが、この記事がMicrosoftSQLServerの移行の強力な基盤となることを願っています。


    1. エラー1033は、スタンバイへのログオンを受信しました

    2. OraclePLSQLの例の表タイプ

    3. MySQL INSERTパラメーターを使用したC#

    4. 既存の列にIDを追加する