Lorsque j'essaie d'utiliser la cmdlet Invoke-Sqlcmd de SQL Server 2008 pour exécuter une requête contenant des variables de script, ex. $(MyVar)
, je reçois l'exception suivante:L'applet de commande Invoke-Sqlcmd génère une exception lors de l'utilisation du paramètre -Variable
Invoke-Sqlcmd: Référence d'objet non définie sur une instance d'un objet.
Voici le code que j'essaie de lancer (qui est un copier/coller de the Books Online example avec seulement les paramètres de connexion ajoutés).
$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 je remplace $(MyVar1)
et $(MyVar2)
dans le -Query
avec 'x'
et 'y'
il fonctionne parfaitement.
$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"
Quelqu'un peut-il me dire pourquoi cela ne fonctionne pas?
Selon l'exemple en ligne Livres, attribuer les 2 chaînes du tableau est exactement ce qui doit se produire puisque la cmdlet attend un tableau des affectations variables. – joshuapoehls