Sql server PowerShell调用SqlCmd切换到主数据库

Sql server PowerShell调用SqlCmd切换到主数据库,sql-server,powershell,Sql Server,Powershell,我有使用Invoke-SqlCmd运行的SQL脚本。在每个文件的顶部,我有一个USE语句。我注意到,发生错误后,用户会被发送回默认数据库(通常是master)。问题是它继续运行脚本;它只是在主模式下转储所有内容。然后我必须遍历并删除一堆表、视图等 现在我只是依靠-AbortOnError立即退出。然而,大多数时候,我的错误其实不是什么大问题。只要所有内容都在同一个数据库下运行,多次运行脚本实际上就能解决问题。显然,长期的解决方案是修复我的SQL脚本。我想知道是否有一种方法可以防止调用SqlCmd

我有使用Invoke-SqlCmd运行的SQL脚本。在每个文件的顶部,我有一个USE语句。我注意到,发生错误后,用户会被发送回默认数据库(通常是master)。问题是它继续运行脚本;它只是在主模式下转储所有内容。然后我必须遍历并删除一堆表、视图等


现在我只是依靠-AbortOnError立即退出。然而,大多数时候,我的错误其实不是什么大问题。只要所有内容都在同一个数据库下运行,多次运行脚本实际上就能解决问题。显然,长期的解决方案是修复我的SQL脚本。我想知道是否有一种方法可以防止调用SqlCmd同时切换到另一个数据库

例如:

# Use Windows Authentication
Invoke-SqlCmd -InputFile "test.sql"

我了解到,在使用声明之后,我没有立即尝试。如果没有它,USE语句与下一个GO之前的所有语句都在同一批中。该用法不适用于其他批次。

1。你能把密码寄出去吗?2.您的问题是Powershell中的SQL提供程序路径正在更改吗?如果使用Invoke Sqlcmd的-database参数设置数据库会发生什么情况?@BryanEargle-部分问题是我的脚本正在创建数据库。当脚本开始运行时,它不存在。您需要将Create Database命令与任何其他更改数据库的命令分开。。。。。要创建数据库,实际上您正在使用master db,并且应该使用-database master来执行此命令。从那时起,如前所述指定-Database参数。多次运行脚本实际上可以解决问题…您应该编写脚本以幂等方式运行。Aka,没有错误和相同的结果…无论你调用它多少次。正在编写需要多次运行才能解决问题的代码。。。。我的代码审查会失败…只是说'