从sqlcmd捕获动态SQL输出的最佳方法

时间:2018-10-30 18:03:17

标签: sql-server powershell

我有一个.sql文件,该文件使用动态SQL编写DB用户和权限的脚本。它使用PRINT命令输出要执行的实际脚本。我正在使用Powershell来自动化需要执行的过程:

  1. 针对MyDatabase执行此脚本并保存结果
  2. MyDatabase顶部恢复新数据库
  3. 执行在步骤1中创建/保存的用户/权限脚本。

当前,我正在捕获输出并将其使用sqlcmd -o参数保存为文件,如下所示:

sqlcmd -e -i ($path + "ScriptUsers.sql") 
       -d $MyDatabase -S $MyServer -o "MyNewUsersScript.sql"

在大多数情况下,这都很好用。缺点是MyNewUsersScript.sql包含ScriptUsers.sql的整个文本以及打印输出。我只真正想要打印的输出,并且我假设这就是我要提供的输出,因此我不确定为什么MyNewUsersScript.sql包含ScriptUsers.sql的脚本及其输出。 FWIW,我尝试在Get-Content上进行MyNewUsersScript.sql,并用空字符串替换ScriptUsers.sql中的文本,但这没用。

0 个答案:

没有答案