Cuando intento utilizar el cmdlet Invoke-Sqlcmd de SQL Server 2008 para ejecutar una consulta que contiene variables de script, p. Ej. $(MyVar)
, recibo la siguiente excepción:El cmdlet Invoke-Sqlcmd arroja una excepción al usar el parámetro -Variable
Invoke-Sqlcmd: Referencia de objeto no establecida en una instancia de un objeto.
Aquí está el código que estoy tratando de ejecutar (que es copiar/pegar desde the Books Online example con solo los parámetros de conexión agregados).
$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"
Si sustituyo $(MyVar1)
y $(MyVar2)
en el -Query
con 'x'
y 'y'
entonces funciona perfectamente.
$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"
¿Alguien me puede decir por qué esto no está funcionando?
Según el ejemplo de los libros en pantalla, la asignación de las 2 cadenas de la matriz es exactamente lo que debe suceder ya que el cmdlet se espera una serie de asignaciones de variables. – joshuapoehls