Nuestros programadores estrellas han agotado sus provisiones de café, en su búsqueda diariamente por la respuesta, hasta que Lía halló el hallazgo en GitHub y hoy la compartimos con nosotros.
Solución:
Para llamar a un ejecutable de Win32, desea utilizar el operador de llamada &
como esto:
& sqlcmd -S "(local)instance1" -U a -P a -i "c:tempsql.sql"
También puede dejar de usar el ‘SQLCMD.EXE’ externo y usar el cmdlet Invoke-Sqlcmd en su lugar:
Invoke-Sqlcmd es un cmdlet de SQL Server que ejecuta scripts que contienen instrucciones de los lenguajes (Transact-SQL y XQuery) y comandos que son compatibles con la utilidad sqlcmd.
Simplemente abra la utilidad ‘sqlps’ y ejecute
Invoke-Sqlcmd -InputFile "C:tempsql.sql"
Consulte Ejecución de SQL Server PowerShell
También puede cargar los complementos de SQL Server manualmente en PowerShell antes de usar ‘Invoke-Sqlcmd’;
para MS SQL Server 2012 puede hacerlo ejecutandoImport-Module SqlPs
Así es como construyo algunos comandos externos en mis scripts
$scriptblock = fullpathsqlcmd -S `"(local)instance1`" <# comment option -S #>`
-U a `
-P a `
-i `"c:tempsql.sql`"
Invoke-Command -ScriptBlock $scriptBlock
Luego puede usar la variable $args dentro de él e incluso iniciarlo de forma remota.
$scriptblock = fullpathsqlcmd -S `"(local)instance1`" <# comment option -S #>`
-U a `
-P a `
-i `"$($args[0])`"
Invoke-Command -ScriptBlock $scriptBlock -argumentList "c:tempsql.sql" -computer "remote1"
Observación:
Esto permite comentar cada parámetro.
Tenga cuidado de no olvidar un “`” y ningún espacio después de ellos donde están al final de la línea.
valoraciones y comentarios
Recuerda que puedes comunicar esta reseña si te fue útil.