我正在尝试编写一个 PowerShell 脚本,该脚本将使用 invoke-sqlcmd 仅对一台远程服务器执行 tsql 查询。这些 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:\ 提供程序或其他导致脚本在此步骤失败的其他目录。
我这样做对吗?如果是这样,我应该如何调整命令以按预期执行。?
更新 忘了提一下,如果我使用硬编码的变量值运行脚本,我能够得到我需要的结果(在这种情况下,从设备恢复数据库)。
感谢您的反馈。