2014-09-18 84 views
0

我有我使用Invoke-SqlCmd运行的SQL脚本。在每个文件的顶部,我有一个USE声明。我注意到发生错误后,用户将被发回到其默认数据库(通常为master)。问题是它继续运行脚本;它只是在主模式下转储所有东西。然后,我必须通过并删除一堆表格,视图等。PowerShell Invoke-SqlCmd切换到主数据库

现在我只是依靠-AbortOnError立即退出。但是,大多数时候,我的错误实际上并不是什么大不了的事情。只要所有内容都运行在同一个数据库中,多次运行该脚本实际上可以解决问题。长期的解决方案显然是修复我的SQL脚本。我想知道是否有办法阻止Invoke-SqlCmd同时切换到另一个数据库。

例子:

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

1.你能发布代码吗? 2.您的问题是SQL提供程序路径在Powershell中发生变化吗? – briantist 2014-09-18 17:47:09

+0

如果使用Invoke-Sqlcmd的'-Database'参数设置数据库,会发生什么情况? – Bryan 2014-09-18 17:56:28

+0

@BryanEargle - 部分问题是我的脚本正在创建数据库。脚本开始运行时不存在。 – 2014-09-18 17:58:22

回答

0

我才知道,我没有一个GO立即USE语句以下。如果没有它,USE语句与下一个GO之后的所有语句在同一批中。 USE不适用于其他批次。