PowerShellを使用してSQL Serverインスタンスにbakファイルを復元しようとしています。SQLデータベースを復元する場合は、
スクリプトにそれを置く前に、私はちょうど
cmd.exe /C SqlCmd -E -S COMPUTER01 -Q "RESTORE DATABASE TestDB FROM DISK = N'.\TestDB.bak' WITH FILE = 1, MOVE N'TESTING' TO N'.\DataStore\TestDB.mdf', MOVE N'TESTING_log' TO N'.\LogStore\TestDB.ldf', NOUNLOAD, STATS = 5"
プロンプトのPowerShellからコマンドを実行しようとしていた
それは私がその後、セミコロンを追加するために、私のCMDを変え
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
エラーを投げた
cmd.exe /C SqlCmd -E -S COMPUTER01 -Q "RESTORE DATABASE TestDB FROM DISK = N'.\TestDB.bak'**;** WITH FILE = 1, MOVE N'TESTING' TO N'.\DataStore\TestDB.mdf', MOVE N'TESTING_log' TO N'.\LogStore\TestDB.ldf', NOUNLOAD, STATS = 5"
今、エラーをスローしています:
"Incorrect syntax near ..."
誰かが私にDBが既に名前「TestDBと」それが存在する場合
- チェック、DBを削除することができ、作業ピースコードをお願いできますTestDBという名前のTestDB.bak
私はこのスクリプトをPowerShell 5で使用しており、cmd.exe /C SqlCmd
のみを使用する必要はありません。もっと良い方法があれば、私もそれに適応します。
「cmd/c」が必要なのはなぜですか?それを削除するとどうなりますか? –
また、あなたの質問はPowerShell v5と言い、タグはPowerShell v3と言います。どちらですか? –
タグを編集してpowershell 3.0を削除しました。間違ったタグ付けにごめんね。 Btw私はcmd.exe/C構文が他のソリューションで使用されているのを見ました。たとえば、 http://stackoverflow.com/questions/38347095/powershell-sqlcmd-mode-error 私はpowershellからsqlcmdsを実行する方法だと思います。 –