【问题标题】:Need help getting Invoke-Sqlcmd, -InputFile & -Variable working nicely together需要帮助让 Invoke-Sqlcmd、-InputFile 和 -Variable 很好地协同工作
【发布时间】:2013-10-17 11:46:56
【问题描述】:

我的 File1.ps1 包含如下命令:

$VariableArray = "PrincipleName='Jack'"
Invoke-Sqlcmd -InputFile "C:\Amit\Test.sql" -Variable $VariableArray -ServerInstance "3STOOGES"

我的 Test.sql 包含
--Test.sql
声明 @PrincipleName varchar(20)
SELECT 'PrincipleName=' + @PrincipleName

这给了我输出
专栏1
--------

我试过here提到的东西

我在 Test.sql 中尝试了 $(PrincipleName) 的选项,但它抱怨 SQL server Management Studio。

请告知我在 Windows 2012 上安装了带有 Powershell 3.0 的 SQL Server 2012

【问题讨论】:

  • 您正在设置一个名为 EmpName 的变量,但随后在 SQL 文件中引用了 @PrincipleName。不知道这将如何工作。尝试将 EmpName 更改为 PrincipleName。
  • 我在 ps1 文件中将其更正为 PrincipleName。

标签: sql-server powershell


【解决方案1】:

语法全错了。 SELECT @PrincipleName 将不会返回任何内容,因为未设置变量。

在 powershell ISE 中使用此语法。

Import-Module “sqlps” -DisableNameChecking
$MyArray = "MyVar1 = 'String1'", "MyVar2 = 'String2'"
Invoke-Sqlcmd -InputFile "C:\temp\john.sql" -Variable $MyArray

在 sql 文件中使用此语法。

SELECT $(MyVar1) AS Var1, $(MyVar2) AS Var2;

输出显示在这里并且工作正常。

【讨论】:

    猜你喜欢
    • 2013-05-15
    • 1970-01-01
    • 2017-09-22
    • 2015-02-11
    • 2011-02-25
    • 2019-09-09
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    相关资源
    最近更新 更多