2009-10-02 46 views
5

當我嘗試使用SQL Server 2008中的Invoke-Sqlcmd cmdlet執行包含腳本變量的查詢時,例如, $(MyVar),我收到以下異常:Invoke-Sqlcmd cmdlet在使用-Variable參數時拋出異常

Invoke-Sqlcmd:未將對象引用設置爲對象的實例。

這是我試圖運行的代碼(這是從the Books Online example複製/粘貼,僅添加了連接參數)。

$MyArray = "MyVar1 = 'String1'", "MyVar2 = 'String2'" 
Invoke-Sqlcmd -Query "SELECT `$(MyVar1) AS Var1, `$(MyVar2) AS Var2;" -Variable $MyArray -ServerInstance "localhost" -Database "master" -UserName "who" -Password "me" 

如果我在-Query'x''y'更換$(MyVar1)$(MyVar2)然後它完美地運行。

$MyArray = "MyVar1 = 'String1'", "MyVar2 = 'String2'" 
Invoke-Sqlcmd -Query "SELECT 'x' AS Var1, 'y' AS Var2;" -Variable $MyArray -ServerInstance "localhost" -Database "master" -UserName "who" -Password "me" 

誰能告訴我爲什麼這不起作用?

回答

4

確定。我在SQL Server論壇上發佈了同樣的問題,顯然,這是SQL Server 2008的PowerShell cmdlet中的一個錯誤... follow the thread here

-1

試試這個孤獨: PS> $ MYARRAY = 「MyVar1 = '字符串1'」, 「MyVar2 = 'String2的'」

現在: PS> $ MYARRAY 和 PS> MyVar1

現在: PS> $ MyArray | get-member

PowerShell認爲您已將2個字符串對象分配給$ MyArray,僅此而已。此方法不會導致將變量$ MyVar1和$ MyVar2定義到PowerShell。

對不起,我不能開除我的SQL2008 VM現在對其他部分評論...

+0

按照聯機叢書例如,分配2個字符串數組正是需要做的,因爲該cmdlet期待變量賦值的數組。 – joshuapoehls 2009-10-05 20:01:28