SQL Serverがリモートマシン/ドライブでバックアップできるようにする


8

SQL Server(2000、2005、2008)を使用していて、リモートドライブにバックアップするために、SQLエージェント(または、単純なバックアップデータベース 'xxx' to disk = 'yyy')を使用したいと考えています。

つまり、SQLマシンにマップされたドライブがあります。例:\\ otherbox \ someshareにマップされる「M:」

デフォルトでは、SQL Serverはこのようなドライブへのバックアップを許可しませんが、それを有効にする方法はあると思います。誰かがドキュメントを私に指摘できますか?

前もって感謝します。


1
SQLBackupAndFTPなどのサードパーティツールを使用して、SQL Serverをリモートでバックアップできますか?sqlbackupandftp.com/blog/...
ニック・テイラー

回答:


8

宛先を指定するときはUNCパスを使用してください。SQLエージェントには、「マップされた」「ドライブ」の概念がありません。

また、SQLエージェントは通常「ローカルサービス」または「ローカルシステム」として実行されるため、他のコンピューター上のリモート共有に対する権限がありません。

次の2つの選択肢があります。

  • ドメインのロールアカウントとしてSQLエージェントを実行します。そのアカウントに、バックアップを保存するディレクトリ/共有への書き込み権限を付与します。

  • SQLエージェントを「ネットワークサービス」として実行します。サービスが実行されているマシンのドメインコンピュータアカウントを使用して、共有サーバーに対して認証を行います。そのアカウントに、バックアップを保存するディレクトリ/共有への書き込み権限を付与します。

  • ドメインがない場合は、SQLエージェントをホストするマシンとバックアップファイルをホストするマシンの両方で、同じユーザー名とパスワードを使用してアカウントを作成します。この「ロール」アカウントとして実行するようにSQLエージェントを変更し、バックアップを保存するディレクトリ/共有への書き込み権限をそのアカウントに付与します。(「貧者の領域」...)


UNCパスについて言及するだけでなく、ユーザーが実際にUNCパスに接続することをお勧めします。これをすばやく簡単に行うには、Webブラウザーをポップオープンして入力するだけです。ユーザー名/パスワードの入力を求められ、通常は将来のためにそのユーザー/パスを覚えておきたいと言うことができます。道のりの99%で物事がうまくいかない理由がわからない人が多すぎます。接続をテストしてください!笑!:-)
KPWINC 2009

それが私が探していたものです(「貧乏人のドメイン」の部分);)ありがとう!
Martin Marconcini、2009

4

UNCパスに関する両方の回答に完全に同意します。

また、マップされたドライブでも簡単な回避策があることを追加したいと思います。サーバーの通常のドライブのいずれかにバックアップを実行できます。そして、あなたは追加することができます

xp_cmdshell 'XCOPY [source] [destination] \flags'

実行するジョブまたはSQLスクリプトに対するSQLコマンド。

xp_cmdshellを使用すると、さらに多くのことができます。たとえば、7zなどの外部アーカイブコマンドラインツールを実行して、マップされたドライブにコピーする前にファイルを圧縮します(リモート接続が遅すぎる場合...)

PS:xp_cmdshellは、セキュリティ構成ツールを使用してsp_configureを実行することで有効および無効にできることを忘れていました(デフォルトでは無効になっています)


Win2003リソースキットのROBOCOPYユーティリティは、このタイプの操作に役立つ、XCOPYを超える追加オプションをいくつか提供します。私の場合、以前にコピーしたバックアップを上書きしない機能、または2つのバックアップディレクトリをミラーリングする機能は、追加のスクリプトを作成しなくても簡単に実装できます。
カーマット2009

1

エージェントはネットワーク共有にアクセスする必要があります。事前にマッピングする必要はありません。

あなたはこのようにします:

BACKUP DATABASE myDB TO DISK = '\\machine\share\dir\file.bak'

ジョブを所有するユーザーがsql sysadminの場合、それはエージェントの下で実行され、それ以外の場合は非sysadminユーザーとして実行されると思います。


1

SQL Serverがドメインアカウントで実行されていない場合は、このStackoverflowの回答で説明されているように、ネットワークドライブをsqlserverアカウント(アカウントではない)にマップできます。

まず、xp_cmdshellを有効にする必要があります

-- allow changes to advanced options 
EXEC sp_configure 'show advanced options', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO

次に、以下を使用してドライブをマップできます。

EXEC xp_cmdshell 'NET USE Z: \\Srv\Path password1 /USER:Domain\UserName'

最後に、そのマップされたドライブにバックアップできます。

BACKUP DATABASE myDB TO DISK = 'z:\file.bak'

0

ここで、SQL Serverはネットワークの遅延に非常に強いことを覚えておいてください。それらが発生し、その傾向がある場合、バックアップは失敗します。本番環境では、この方法はお勧めしません。

ローカルにバックアップしてからコピーすることをお勧めします。


0

最も簡単な方法は、ディスク管理を通じてネットワーク共有上に.vhdドライブを作成し、それにドライブ文字を割り当てることです。SQLは変更なしでこのドライブにアクセスできます。

再起動時に自動接続するために、起動時にdiskpart.exeスクリプトをスケジューラに追加するだけです。

例select vdisk file = "\ {ip address / server} {networkshare} {filenamep.vhd}" attach vdisk //割り当てられた最後のドライブ文字を記憶しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.