ネットワーク経由でデータベースのバックアップを復元する
-
08-06-2019 - |
質問
SQL Server 2005 を使用してネットワーク経由でデータベースのバックアップを復元するにはどうすればよいですか?以前にこれを行った記憶がありますが、その方法には何か奇妙さがありました。
解決
多くの場合、データベースはネットワーク アクセスのないアカウントでサービスとして実行されます。この場合、ネットワーク経由で直接復元することはできません。バックアップをローカル マシンにコピーするか、適切なネットワーク アクセスを持つユーザーとしてデータベース サービスを実行する必要があります。
他のヒント
ネットワーク ファイルをバックアップ ソースとして使用するにはいくつかのオプションがあります
- MS-SQL Server と同じユーザーの下で、ネットワーク ドライブ/パス、ホスティング ファイルをマッピングします。
- xp_cmdshell 拡張ストアド プロシージャを使用して、MS SQL 内からネットワーク ドライブをマップします (このようにすると、コマンド シェルは SSMS を実行しているユーザー アカウントと同じ権限を持ちます)
-- 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'
その後、Z を運転します。Server Management Studio に表示されるか、単に
RESTORE DATABASE DataBaseNameHere FROM DISK = 'Z:\BackNameHere.BAK'
GO
これは SSMS GUI では実行できませんが、スクリプトを使用すると実行できます。RESTORE DATABASE from DISK='\unc\path\filename' このプロセスを自動化する必要がある場合、最良の方法は、SQL Server ジョブをセットアップし、ファイルの場所にアクセスできるユーザーとして実行することです。
ユーザーが SQL services
で "Services.msc"
アクティブディレクトリです "Domain User"
これで問題は解決します。
SP xp_cmdshell を使用して SQL サーバーのネットワーク ドライブをマップできます。その後、ファイル参照ウィンドウに表示されます。
EXEC xp_cmdshell 'NET USE Z: SERVERLOCATION PASSWORD /USER:DOMAIN\USERNAME'
詳細はこちら: ネットワークドライブからのDBリストア
私にとっては役に立ちました!
これを何度か行う必要がありましたが、私が知っている選択肢は 2 つだけです。ファイルを SQL Server にローカルにコピーするか、SQL Server 上でバックアップ ファイルを含む共有にマップされたネットワーク ドライブを作成します。
また、ネットワーク アクセスと、バックアップ ファイルが存在する共有へのアクセス許可を持つユーザーとして SQL Server サービスが実行されていることを確認する必要があります。「ローカル システム」にはネットワークにアクセスする権限がありません。
余談ですが、仮想マシン上で SQL を実行している場合は、バックアップ ファイルをコピーするのに十分なスペースのある新しいドライブを VM 上に一時的にセットアップし、その新しいローカル コピーから復元する方が手間がかからないことがよくあります。その後、一時ドライブを削除します。
これは、アカウントを変更するために SQL サービスを停止/開始することが問題となる場合に役立ちます。
バックアップがあるマシン上に共有ドライブを作成します。たとえば、server1 の「Backups」フォルダーにバックアップがあります。SQL Server を実行しているアカウントにフル コントロールを付与します。SSMS を起動するために復元したいサーバーで、データベースの復元に移動し、[デバイスから] を選択します。[バックアップ ファイルの検索 - "サーバー"] ダイアログ ボックスで、[選択したパス] フィールドにあるものをすべて削除し、[ファイル名] フィールドにフル パス (\server\backups\db.bak) を入力します。少なくとも、05 から 08 に移行するときはうまくいきました。ネットワークの障害により復元に問題が発生する可能性があるため、推奨される方法ではありません。
EXEC sp_configure 'show advanced options', 1
GO
-- 詳細オプションの現在構成されている値を更新します。
RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
-- 詳細オプションの現在構成されている値を更新します。
RECONFIGURE
GO
--これはコマンド プロンプト (cmd) で実行する必要があります。
NET USE Z: \\172.100.1.100\Shared Password /USER:administrator /Persistent:no
次にSQL Server上で
EXEC xp_cmdshell 'NET USE Z: \\172.100.1.100\Shared Password /USER:administrator /Persistent:no'
--その後、Z を運転します。Server Management Studio に表示されるか、単に
RESTORE DATABASE DB FROM DISK = 'Z:\DB.BAK'
WITH REPLACE