web-dev-qa-db-ja.com

リモートのSQL Serverデータベースをローカルドライブにバックアップする方法を教えてください。

データベースをリモートサーバーからローカルサーバーにコピーする必要があります。 SQL Server Management Studioを使用しようとしましたが、リモートサーバー上のドライブにしかバックアップされません。

いくつかのポイント:

  • ファイルをコピーする方法でリモートサーバーにアクセスできません。
  • 私は自分のサーバーへのUNCパスを設定する権限がありません。

このデータベースをコピーする方法について何か考えはありますか。サードパーティ製のツールを使用する必要がありますか?

217
Fernando

Microsoft SQL Server Management Studioでは、バックアップしたいデータベースを右クリックして、「タスク」 - >「スクリプトの生成」をクリックすることができます。

これにより、データベースの適切なバックアップを実行するために次の設定を行うことができるウィザードが開きます。リモートサーバーでも

  • バックアップしたいデータベースを選択して次にクリックしてください。
  • オプションではそれはあなたに提示します:
    1. 2010年:Table/View Optionsの下で、 'Script Data'と 'Script Indexes'をTrueに変更して次にヒットしてください。
    2. 2012年:[全般]の下の[スクリプトするデータの種類]を[スキーマのみ]から[スキーマとデータ]に変更します。
    3. 2014年:「スクリプトオプションの設定」の手順でデータをスクリプト化するオプションが「非表示」になったため、「詳細」をクリックして「スクリプトのデータの種類」を「スキーマとデータ」の値に設定する
  • 次の4つのウィンドウで、 'select all'を押してから次に、
  • 新しいクエリウィンドウにスクリプトを作成するように選択する

それが完了したら、あなたはあなたの前に準備ができているバックアップスクリプトを持つでしょう。新しいローカル(またはリモート)データベースを作成し、新しいデータベースを使用するようにスクリプト内の最初の 'USE'ステートメントを変更します。スクリプトを安全な場所に保存し、先に進んで新しい空のデータベースに対して実行します。これにより、(ほぼ)複製のローカルデータベースが作成され、好きなようにバックアップできます。

リモートデータベースへのフルアクセスがある場合は、ウィザードの最初のウィンドウで[すべてのオブジェクトのスクリプトを作成]を選択してから[スクリプトデータベース]を変更します。 '次のウィンドウで' Trueにするオプション。ただし、スクリプト内のデータベース名を完全検索して新しいデータベースに置き換える必要があります。この場合は、スクリプトを実行する前に作成する必要はありません。これにより、より正確な複製が作成されるはずですが、アクセス許可の制限により利用できないことがあります。

170
Daniel Gill

データとスキーマのみをコピーする(ストアドプロシージャ、関数などをコピーしない)には、SQL Serverのインポート/エクスポートウィザードを使用し、コピー先データベースを選択するときにNew ...を選択します。

「データベース」>「タスク」>「データのインポート」を右クリックします。

データソースを選択

  • データソース:SQL Serverネイティブクライアント
  • サーバー名:リモートサーバー
  • 認証
  • データベース:データベース名

目的地を選択

  • データソース:SQL Serverネイティブクライアント
  • サーバー名:ローカルサーバー
  • 認証
  • データベースNew...

残りは簡単です。

43
Shaun Luttin

まず、Everyoneを使用して、(以下に示すように)あなたのマシンのローカルパスへのフルコントロールアクセス許可を与えます。 (または、 具体的には権限を付与する SQL Serverエージェントアカウントに)。

次に、以下を実行します。

BACKUP DATABASE [dev] TO  DISK = N'\\myMachine\c\dev.bak' WITH COPY_ONLY, INIT;
32
T. Webster

あなたできないリモートサーバーからローカルディスクへのバックアップを作成する - これを行う方法は全くありません。私が知る限り、これを行うためのサードパーティ製ツールもありません。

あなたができることは、リモートサーバーマシン上にバックアップを作成し、誰かにそれを圧縮してもらうことです。

27
marc_s

私はこれが遅い答えであることを知っています、しかし私はSSMSでスクリプトを生成するオプションを使うことを言う最も投票された答えについてコメントをしなければなりません。

それに伴う問題は、このオプションは依存関係を考慮に入れていないため、必ずしも正しい実行順序でスクリプトを生成しないことです。

小規模なデータベースではこれは問題になりませんが、大規模なデータベースでは確かにスクリプトを手動で並べ替える必要があるためです。 500オブジェクトデータベースでそれを試してください;)

残念ながらこの場合の唯一の解決策はサードパーティ製のツールです。

私は ApexSQL (DiffとData Diff)の比較ツールを似たような作業に使用することに成功しました。

17
Phill C

あなたは SQLBackupAndFTP を試すことができます。データベース内のすべてのオブジェクトを作成するスクリプトと、テーブル内のすべての行に対するINSERTステートメントを作成します。どのデータベースでもこのスクリプトファイルを実行でき、データベース全体が再作成されます。

13
adinas

リモートデータベースをコピーする方法については、このブログを参照してください。

共有ホスティング環境からSQL Server 2008データベースをバックアップする

7
Marcel W

あなたのローカルPCにリモートSQL ServerからBAKファイルを取得するための99%の解決策があります。私は私のポストでそれを説明しました http://www.ok.unsode.com/post/2015/06/27/remote-sql-backup-to-local-pc

一般的にそれはこのようになります:

  • sQLスクリプトを実行してBAKファイルを生成する

  • sQLスクリプトを実行して、各bakファイルをvarbinaryフィールドタイプの一時テーブルに挿入し、この行を選択してデータをダウンロードします。

  • 繰り返します。あなたがbakファイルを持っているのと同じくらい多くの時間ステップ

  • sQLスクリプトを実行してすべての一時リソースを削除します。

それはそれです、あなたはあなたのローカルPCにあなたのBakファイルを持っています。

6
okarpov

あなたはコピーデータベースを使用することができます...リモートデータベースを右クリックします...タスクを選択してコピーデータベースを使用します...それはあなたにソースサーバーと目的地サーバーについて尋ねます。あなたのソースがリモートであり、宛先がSQL Serverのあなたのローカルインスタンスであること。

それはとても簡単です

5
Pouyan

AppHarborギャングはこれに苦労しており、SQLサーバー管理オブジェクトとSqlBulkCopyを使用した一時的なソリューションを開発しました。

彼らのブログ記事 をチェックするか、または コードへ直接 を調べてください。

彼らはAppHarborでそれをテストしただけだが、チェックする価値があるかもしれない。

3
Daniel Gill

上記の答えは正しくありません。データを含むSQLスクリプトはバックアップではありません。バックアップは、indizesを含む現在の構造内に完全なデータベースを含むBAKファイルです。

もちろん、すべてのデータを含むフルバックアップを含み、リモートのSQL Serverデータベースから取得したBAKファイルは、ローカルシステムで取得できます。

これは市販のソフトウェアを使って、例えばバックアップBAKファイルをあなたのローカルマシンに直接保存するために行うことができます、例えば これ はあなたのローカルマシン上のリモートSQL dbから直接バックアップを作成します。

3
Matthias

Martin Smithが言ったように、あなたがマシンやファイルシステムにアクセスできない場合は、Red GateやAdeptなどのサードパーティ製ツールを使用して、ソースシステムとターゲットシステムを比較する必要があります。 Red Gateのツールを使用すると、オブジェクトとスキーマ、そしてデータをコピーすることができます。

1
Vinnie

次の条件が満たされている場合、リモートSQL Serverインスタンスからローカルドライブにバックアップを取ることができます。

  1. ローカルドライブに共有フォルダがあります。
  2. 共有フォルダは[SQL Server]ボックスからアクセスできます。

Backupコマンドを指定するときは、diskオプションを指定するときに共有フォルダパスを使用してください。

1
Naresh

これを試してみてください。

1)あなたのコンピュータで完全な許可を得てフォルダを共有する

2)あなたのSQLサーバーで:コントロールパネル - >管理ツール - >サービス - >すべてのSQLサービスを右クリック

[ログオン]タブはドメイン管理者から始まる必要があります

3)SQL Serverのメンテナンスウィザードでバックアップの場所とフォルダ(\ yourcomputername\sharedfoldernam)を置きます

私達の会社の私はsqlサーバー2008年の8サーバーで遠隔バックアップをしました

1
Parsaria

Ola Hallengren が提供するスクリプトによるバックアップソリューションについて誰も言及していないことに驚いています。絶対にバックアップが可能です。リモートサーバーからネットワーク上のUNCパスへのDB(無料で使用しています)。SSMS経由以外でリモートアクセスが許可されていないdevサーバーから自分のdev上の共有にDBをバックアップするときに使用します。 PC)これは2008年から利用可能であり、SQL Server 2005から2014年まで動作します。

設定した共有に十分なアクセス権があることを確認する必要があります。バックアッププロセスの間、 'Everyone' ADグループへの完全な読み取り/書き込みを許可する傾向があります。個人的な選択.

よく使われ、文書化されていて、とても柔軟です。私はprocsとloggingテーブルをそれら自身の小さなユーティリティデータベースに入れてそれから起動する傾向があります。すべてがADドメイン内にあり、同じ場所にあるサーバーなどにあるという意味でリモートではない場合、これは非常にうまく機能します。

非常に古いスレッドを追加してしまったことをお詫び申し上げますが、何か他のものを探すときに私はこれに出会い、それがこのトピックを探している人にとって価値のある追加であると考えました。

1
Steve Pettifer

一部の他社製バックアッププログラムでは、特定のネットワーク権限を使用してファイル転送を設定できます。 SQL Serverサービスが制限付きアカウントで実行されており、十分なネットワーク権限がない場合に非常に便利です。このタスクを解決する EMS SQL Backup を使ってみてください。

0
curandero

私は一度それをすることができます...これをするためにあなたは共有をリモートサーバで開かなければなりません。その後、デフォルトの場所ではなく、共有自体にバックアップを直接配置できます。

通常、管理者はバックアップを取り、それを共有フォルダで共有します。私はそこにバックアップを置く場合それがうまくいくかどうか私は試してみました。出来た。

0
Vivek

私はこの目的のために Redgate backup pro 7 ツールを使用しています。あなたは他の場所にタイルを作成することでバックアップファイルからミラーを作成することができます。そしてネットワーク上およびホストストレージ上に作成した後にバックアップファイルを自動的にコピーすることができます。

0
mehdi lotfi

SSMSでGenerate Scriptsを使用する場合は、[詳細設定]ボタンをクリックしてください。 [依存オブジェクトのスクリプトを生成する]オプションで、[True]をクリックします。クリックすると、各オブジェクトの依存関係も適切な順序でスクリプト化されます。

0
user2684