前提・実現したいこと
SQLServeのリストアを自動化したい
bakファイルをリストアする際に複数のndfファイルがあることが分かったため、これの論理名を指定してリストアできるようにしたい。
発生している問題・エラーメッセージ
メッセージ 5133、レベル 16、状態 1、サーバー aaa、行 1 オペレーティング システム エラー 3(指定されたパスが見つかりません。) により、ファイル "D:xxx_2.ndf" のディレクトリ参照に失敗しました。 メッセージ 3156、レベル 16、状態 3、サーバー aaa、行 1 ファイル 'xxx_2' を 'D:xxx_2.ndf' に復元できません。WITH MOVE を使用して、そのファイルにとって有効な場所を特定してくださ い。 メッセージ 5133、レベル 16、状態 1、サーバー aaa、行 1 オペレーティング システム エラー 3(指定されたパスが見つかりません。) により、ファイル "D:xxx_3.ndf" のディレクトリ参照に失敗しました。 メッセージ 3156、レベル 16、状態 3、サーバー aaa、行 1 ファイル 'xxx_3' を 'D:xxx_3.ndf' に復元できません。WITH MOVE を使用して、そのファイルにとって有効な場所を特定してくださ い。
該当のソースコード
cmd
1sqlcmd -s localhost -U User -P Password -Q "RESTORE DATABASE database FROM DISK='C:xxx.bak' 2WITH MOVE 'xxx' TO 'C:xxx.mdf', 3MOVE 'xxx_log' TO 'C:xxx_log.ldf', 4MOVE 'xxx_L' TO 'C:xxx_L.ndf', 5REPLACE;"
試したこと
ループで何とかできないか調べてみたが見つからなかった。
補足情報(FW/ツールのバージョンなど)
SQLServe2012を使用
コマンドプロンプトに記述
xxx_L.ndfのLが数字に代わっているためそこを変数にしようとしたができなかった。
あなたの回答
tips
プレビュー