invoke-sqlcmd を使用して 1 つのリモート サーバーに対してのみ tsql クエリを実行する PowerShell スクリプトを作成しようとしています。これらの tsql クエリは、データベースのバックアップ/復元、ユーザーの作成などの単純なものです。以下はその抜粋です。
# 5 # Create clientdb database on secondary server by restoring the full backup for primary
Try {
Invoke-sqlcmd -ServerInstance 'REMOTESQLSRV'`
-Username 'ts_sql' -Password 'somepassword'`
-InputFile "$LScltid\__01_On_Secondary_CreateDB2_srv2.sql"`
-ErrorAction Stop
Write-Host " clt_$id is now restored to secondary server "`
-ForegroundColor White -BackgroundColor Green
} Catch {
Write-Host " Restore operation for clt_$id did not succeed. Check the error logs " -ForegroundColor Black -BackgroundColor Red
}
私のスクリプトはいつもここで壊れます。頭を抱えることができなかったいくつかの理由により、invoke-sqlcmd は変数「$LScltid」を使用して、.sql スクリプトを見つけるパスを解決しません。
実行する必要があるたびに、現在のディレクトリが SQLERVER:\ プロバイダーまたはその他のいずれかに変更され、このステップでスクリプトが失敗しました。
私はこれを正しい方法でやっていますか?もしそうなら、コマンドを期待どおりに実行するにはどうすればよいですか?
UPDATE 変数値をハードコードしてスクリプトを実行すると、必要な結果を得ることができます(この場合、デバイスからデータベースを復元します)。
フィードバックをお寄せいただきありがとうございます。