jos*_*hls 5 sql-server powershell sql-server-2008
当我尝试使用SQL Server 2008中的Invoke-Sqlcmd cmdlet来执行包含脚本变量的查询时,例如.$(MyVar),我收到以下异常:
Invoke-Sqlcmd:对象引用未设置为对象的实例.
这是我正在尝试运行的代码(这是从联机丛书示例中复制/粘贴,只添加了连接参数).
$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"
Run Code Online (Sandbox Code Playgroud)
如果我更换$(MyVar1),并$(MyVar2)在-Query同'x'和'y',然后它运行完美.
$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"
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么这不起作用?
确实这是SQL Server中的一个错误 - 在这里进行跟踪和修复 https://connect.microsoft.com/sqlserver/feedback/details/358291/invoke-sqlcmd-powershell-cmdlet-fails-when-array-passed-via-variable
但是,有一个已发布的解决方法.删除作业周围的空格.而不是
$MyArray = "MyVar1 = 'String1'", "MyVar2 = 'String2'"
Run Code Online (Sandbox Code Playgroud)
使用
$MyArray = "MyVar1='String1'", "MyVar2='String2'"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4017 次 |
| 最近记录: |