
私は SQL Server (2000、2005、2008) を持っており、SQL エージェント (または単純なバックアップ データベース 'xxx' をディスク = 'yyy' にバックアップする) を使用して、リモート ドライブにバックアップしたいと考えています。
つまり、SQL マシンにマップされたドライブがあります。たとえば、「M:」は \\otherbox\someshare にマップされます。
デフォルトでは、SQL Server はそのようなドライブへのバックアップを許可しませんが、それを有効にする方法があると思います。どなたかドキュメントを教えていただけますか?
前もって感謝します。
答え1
宛先を指定するときは UNC パスを使用します。SQL エージェントには「マップされた」「ドライブ」という概念がありません。
また、SQL エージェントは通常、「ローカル サービス」または「ローカル システム」として実行されるため、他のコンピューター上のリモート共有に対する権限はありません。
いくつかの選択肢があります:
ドメイン内のロール アカウントとして SQL エージェントを実行します。そのアカウントに、バックアップを保存するディレクトリ/共有への書き込み権限を付与します。
SQL エージェントを「ネットワーク サービス」として実行します。サービスが実行されているマシンのドメイン コンピュータ アカウントを使用して共有サーバーに認証します。そのアカウントに、バックアップを保存するディレクトリ/共有への書き込み権限を付与します。
ドメインがない場合は、SQL エージェントをホストするマシンとバックアップ ファイルをホストするマシンの両方に同じユーザー名とパスワードを持つアカウントを作成します。SQL エージェントをこの「ロール」アカウントとして実行するように変更し、そのアカウントにバックアップを保存するディレクトリ/共有への書き込み権限を付与します。(「貧者のドメイン」...)
答え2
UNC パスに関する両方の回答に完全に同意します。
また、マップされたドライブでも簡単な回避策があることを付け加えておきます。サーバーの通常のドライブのいずれかにバックアップを実行できます。その後、
xp_cmdshell 'XCOPY [source] [destination] \flags'
実行するジョブまたは SQL スクリプトへの SQL コマンド。
xp_cmdshell を使用すると、さらに多くのことが可能になります。たとえば、7z などの外部アーカイブ コマンド ライン ツールを実行して、ファイルをマップされたドライブにコピーする前に圧縮することができます (リモート接続が遅すぎる場合など)。
PS: xp_cmdshell は、Surface Area Configuration ツールを使用し、sp_configure を実行することで有効または無効にできることを忘れていました (デフォルトでは無効になっています)。
答え3
SQL Serverがドメインアカウントで実行されていない場合は、ここに記載されているように、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'
答え4
ここで、SQL Server はネットワーク遅延に非常に弱いことに注意してください。ネットワーク遅延が発生すると (発生する傾向があります)、バックアップは失敗します。実稼働環境では、この方法はまったくお勧めしません。
ローカルにバックアップしてからコピーする方がよいでしょう。