sql >> データベース >  >> Database Tools >> SSMS

SSMSを使用したSQLデータベースの移行

    サーバー間でMSSQLを移行することは、順調に進むための適切なガイドラインがないと難しい場合があります。この記事では、サーバー間またはインスタンス間でMicrosoftSQLServerデータベースを移行するさまざまな方法の概要を説明します。単一のデータベース、多数のデータベース、ログイン、またはストアドプロシージャとビューを移動する必要があるかどうかにかかわらず、私たちがカバーしています!

    データベースを移動したり、データベースを復元したりする必要がある状況はたくさんあります。最も一般的な理由は次のとおりです。

      まったく新しいサーバーへの移行。 SQLの別のインスタンスに移動します。 開発サーバーを作成するか、本番サーバーに稼働させます。 バックアップからのデータベースの復元。

    SQLデータベースを移動するには、主に2つの方法があります。手動でMicrosoft SQL Server Management Studio(SSMS)を使用するか、コマンドラインを使用します。選択する方法は、何を達成する必要があるかによって異なります。単一のデータベースまたは少数のデータベースを移動する場合は、SSMSを使用してデータベースを手動でバックアップおよび復元するのが最も簡単な方法です。多数のデータベース(10を超えると考えてください)を移動する場合は、コマンドライン方式を使用するとプロセスが高速化されます。コマンドライン方式では、事前に準備作業が多くなりますが、数十のデータベースを転送する場合は、各データベースを個別に移行するのではなく、スクリプトの構成に時間をかけるだけの価値があります。どちらの方法を使用すればよいかわからない場合は、プロセスに慣れている間に、最初に手動によるアプローチを試してください。方法論をより深く理解するために、最後まで読むことをお勧めします。

    用語の役立つリファレンス

    SSMS – Microsoft Sの頭字語 QL S erver M anagement S tudio。

    ソースサーバー –データベースを移動するサーバーまたはインスタンス またはオフ

    宛先サーバー –データベースを移動するサーバーまたはインスタンス 。

    手動による方法

    手動による方法でSQLデータベースを移動するのは非常に簡単です。これは、少数以下のデータベースを転送するための推奨プロセスです。ガイドのこの部分に従うには、MSSQLとMicrosoft SQL Server Management Studio(SSMS)がインストールされている必要があります。

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

    1.ソースサーバー(データベースを移動元または移動元のサーバー)にログインすることから始めます。 [スタート]>[MicrosoftSQL Server]> [Microsoft SQL Server Management Studio]を選択して、Microsoft SQL ServerManagementStudioを開きます。 。

    2.Windows認証またはSQL認証を使用してSQLサーバーにログインします。

    3.サーバーを展開します(この場合は SQL01 )、データベースを展開します 、移動する最初のデータベースを選択します(下の図を参照)。

    4.データベースを右クリックして、タスクを選択します 次に、[バックアップ]をクリックします 。

    5.ここから、データベースのバックアップに移動します。 画面。 フルなどのバックアップタイプを選択できます またはディファレンシャル 、正しいデータベースが選択されていることを確認し、SQLバックアップの宛先を設定します。この例では、バックアップを残すことができます タイプ フルとして 。

    6.バックアップの下 タイプ 、[コピーのみのバックアップ]のチェックボックスをオンにします 。」 DPMまたは別の形式のサーバーバックアップを実行している場合は、コピー専用なしでバックアップします。 フラグを立てると、バックアップログチェーンが切断されます。

    7.目的地の下に場所が表示されます 新しいバックアップのパス。通常、削除します このエントリを追加します SQLが読み取り/書き込みアクセス権を持つフォルダーを選択するための新しいフォルダー。新しいバックアップ先の追加 次のようなパスを示しています:

    C:\ Program Files \ Microsoft SQL Server \ MSSQL13.MSSQLSERVER \ MSSQL \ Backup \

    このC:\パスは、保存されたデータベースのバックアップがある場所です。これは保存されたバックアップへのデフォルトのパスであり、SQLサービスの適切な読み取り/書き込みアクセス権が必要になるため、後で参照できるようにこの場所に注意してください。

    注:上級ユーザーは、出力フォルダーのアクセス許可が正しい場合は、宛先をそのままにしておくのが快適な場合があります。

    8.次に、このパスの最後に AdventureWorks2012-081418などのファイル名を追加します。 .bak –ファイル名は必ず拡張子.bakで終了し、 OKを選択してください。

    10. OKを押したら バックアップ先の選択 プロンプトが表示されたら、データベースをバックアップする準備ができています。今あなたがする必要があるのはOKを押すことだけです 、データベースのバックアップが開始されます。左下隅にプログレスバーが表示され、バックアップが完了すると、「データベース「AdventureWorks2012」のバックアップが正常に完了しました。」というウィンドウが表示されます。 '

    前述の宛先パスに移動します(この場合、 C:\ Program Files \ Microsoft SQL Server \ MSSQL13.MSSQLSERVER \ MSSQL \ Backup \ )新しく作成したファイル(この場合は AdventureWorks2012-081418.bak )が表示されます ) - おめでとう!このファイルはデータベースの完全なエクスポートであり、新しいサーバーにインポートする準備ができています。さらにデータベースがある場合は、移動するデータベースごとに上記の手順を繰り返します。すべてのデータベースプロセスをコピーして、データベースを宛先サーバーに復元する次のステップに進みます。

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

    これで、ソースサーバー上のすべてのデータベースの.bakファイルが作成されます。これらのデータベースファイルは、移行先サーバーに転送する必要があります。データを移行先サーバーに移動する方法は多数あります。 USB、Robocopy、またはFTPを使用できます。データベースをコピーした後、それを宛先サーバーに保存できます。この例では、データベースをCドライブの C:\dbbackupsという名前のフォルダーに保存しています。

    1. Microsoft SQL ServerManagementStudioを開きます。

    2.Windows認証またはSQL認証を使用してSQLサーバーにログインします。

    3.サーバーを展開し、データベースを右クリックします データベースの復元を選択します。

    4.データベースの復元 画面はデータベースのバックアップと非常によく似ています 画面。[ソース]で、[デバイス]を選択します。 データベースの代わりに 。 デバイスを選択する ファイルから直接復元できます。 デバイスを選択したら 、参照アイコンをクリックします[…]

    5.追加を選択します 、次に、.bakファイルが存在するフォルダーに移動します。 (この場合、 C:\ dbbackups

    6.復元する最初のデータベース.bakを選択し、[OK]をクリックします。

    7. OKをクリックします これで、データベースをインポートする準備が整いました。インポートする前に、左側の[オプション]セクションを見てみましょう。 オプションの下 既存のデータベースの上書きなど、データベースを復元するための他の構成が表示されます。 、レプリケーション設定を保持する および復元されたデータベースへのアクセスを制限する 。この場合、既存のデータベースを置き換えるわけではないので、これらすべてのオプションをオフのままにします。既存のデータベースを置き換える場合(たとえば、バックアップされたデータベースに宛先サーバーよりも新しいデータがある場合、または開発データベースまたは本番データベースを置き換える場合)、[既存のデータベースを上書きする]を選択するだけです。 。

    注:上級ユーザーは、出力フォルダーのアクセス許可が正しい場合は、宛先をそのままにしておくのが快適な場合があります。

    8. OKをクリックします 「データベース」「AdventureWorks2012」が正常に復元されましたというポップアップウィンドウで示されるように、復元プロセスを開始します。データベースを移行元サーバーから移行先サーバーに移行しました。

    移行するデータベースごとにこのプロセスを繰り返します。次に、スクリプト/アプリケーションのパス参照を更新して、新しいサーバーを指すようにし、移行が成功したことを確認します。

    MicrosoftSQLServerログインの移行

    データベースをインポートした後、SQLログインを使用して接続できない場合は、「ユーザーのログインに失敗しました」というエラーが表示される場合があります。 (Microsoft SQL Server、エラー:18456)。 'データベースが従来のログインおよびユーザーモデルにあるため 、ログインはソースサーバーに個別に保存され、資格情報はデータベース自体には含まれません。この時点から、宛先サーバーは包含データベースユーザーモデルを使用するように構成できます。 これにより、ログインがデータベースに保持され、ソースサーバーから除外されます。それまでは、従来のモデルの一部として、ユーザーを移動して操作する必要があります。以下を続行して、SQLユーザーの移行を続行します。

    データベースをバックアップおよび復元すると、SQLログインの関係がデータベースに移動しました(ログインは引き続き正しいアクセス許可を持つ正しいデータベースに関連付けられています)が、実際のログイン自体は新しいサーバーに転送されませんでした。これを確認するには、SSMS(SQL Server Management Studio を開きます。 宛先サーバーで、サーバー>セキュリティ>ログインに移動します s。以前のサーバーで作成したカスタムSQLログインはここでは転送されませんでしたが、サーバー>データベース>データベース(この場合はAdventureWorks2012)>セキュリティ>ユーザーに移動すると データベースに関連付けられた正しいログインが表示されます。

    1人または2人のSQLユーザーがいる場合は、サーバー>データベース>AdventureWorks2012>セキュリティ>ユーザーでデータベースへのユーザーの関連付けを削除できます。 、サーバー>セキュリティ>ログインでユーザーを再作成します そしてそれを適切なデータベースにマッピングします。

    ログイン数が多い場合は、以下に概説する追加のプロセスに従う必要があります。すべてのSQLユーザーを移行するには、新しいクエリを開きます ソースサーバーのウィンドウで次のスクリプトを実行します:

    SQLログインスクリプト

    +

    このスクリプトは、これらのログインの移行に役立つ2つのストアドプロシージャをソースデータベースに作成します。 [新しいクエリ]ウィンドウを開き、次を実行します。
    EXEC sp_help_revlogin

    このクエリは、宛先サーバーの新しいログインを作成するスクリプトを出力します。このクエリの出力をコピーして、後で使用できるように保存します。これは宛先サーバーで実行する必要があります。

    このクエリの出力をコピーしたら、移行先サーバーでSSMSにログインし、[新しいクエリ]ウィンドウを開きます。前のスクリプトの内容を貼り付け(ログイン:BUILTIN \ Administrators
    CREATE LOGIN [BUILTIN \ Administrators] FROM WINDOWS WITH DEFAULT_DATABASE =[master]のような一連の行が必要です)、[実行]をクリックします。

    これで、すべてのSQLログインが正常にインポートされ、以前の資格情報を使用して、データベースが移行先サーバーに移行されたことを確認できます。

    ビューとストアドプロシージャの移行

    一般的なSQLテープのバックアップを使用している場合、ビューとストアドプロシージャはデータベースとともに移行されます。ビューとストアドプロシージャを個別に移行する必要がある場合は、以下の手順に従ってください。

    1. ソースサーバーでMicrosoftSQLManagementStudioを開きます。
    2. SQLサーバーにログインします。
    3. サーバーとデータベースを拡張します 。
    4. データベースの名前を右クリックして、タスク>スクリプトの生成に移動します。 。
    5. [次へ]をクリックします 。
    6. データベース全体とすべてのデータベースオブジェクトのスクリプトを変更します 特定のデータベースオブジェクトを選択する ビューのみをチェックしてください およびストアドプロシージャ。
    7. [次へ]をクリックし、[ファイルに保存]オプションに注目してください。リストされているファイルパスに注意してください。私の場合は、C:\ Users \ Administrator \ Documents\script.sql-保存されたビューとストアドプロシージャのパスです。
    8. 次へをクリックします>> 次へ>> 終了 C:\ Users \ Administrator \ Documents \ script.sqlを選択します コピー先のサーバーにコピーします。
    9. 宛先サーバーに移動し、SSMSを開いて、SQLサーバーにログインします。
    10. ファイル>開く>ファイルに移動します または、キーボードショートカットのCTRL+Oを使用してSQLスクリプトを開きます。ファイル C:\ Users \ Administrator \ Documents \ script.sqlを選択します 開くには。
    11. すべてのビューとストアドプロシージャを含む、ソースサーバーから生成されたスクリプトが表示されます。 実行をクリックします または、キーボードショートカットF5を使用して、スクリプトを実行します。
    注:残念ながら、コマンドラインでこれを行う組み込みの方法はありません。サードパーティのツールがあり、さらに高度なスクリプトを作成するためのmssql-scripterと呼ばれるMicrosoftのツールもあります。

    これで、ビューとストアドプロシージャが移行先サーバーに移行されました。移行するデータベースごとにこのプロセスを繰り返します。データベース管理では、少しのガイダンスが大いに役立ちます。すべてのSQLServerには独自の構成と直面する障害がありますが、この記事がMicrosoftSQLServerの移行の強力な基盤となることを願っています。

    簡単にスケーラブルでビジネスとともに成長できる、高可用性でプラットフォームに依存しないSQLサービスをお探しですか? LiquidWebで提供されているSQLasaService製品を確認してください。すばらしいホスティングアドバイザーの1人に相談して、あなたにぴったりのソリューションを見つけてください。


    1. PhpmyadminでMysqlサーバーのポートを変更します

    2. 致命的なエラー:ウェブサイトから毎日実行すると、最大実行時間が30秒を超えました

    3. phpMyAdminは追加された列を表示しません

    4. LocalhostまたはphpMyAdminがサーバーに見つかりません:修正方法は?