script ejemplos ejecutar powershell sqlcmd

powershell - ejemplos - sqlcmd linux



¿Cómo ejecutar sqlcmd desde powershell? (7)

Así es como construyo un comando externo en mis scripts

$scriptblock = {fullpath/sqlcmd -S `"(local)/instance1`" <# comment option -S #>` -U a ` -P a ` -i `"c:/temp/sql.sql`" } Invoke-Command -ScriptBlock $scriptBlock

Luego puede usar la variable $ args dentro de ella e incluso iniciarla remotamente.

$scriptblock = {fullpath/sqlcmd -S `"(local)/instance1`" <# comment option -S #>` -U a ` -P a ` -i `"$($args[0])`" } Invoke-Command -ScriptBlock $scriptBlock -argumentList "c:/temp/sql.sql" -computer "remote1"

Observación:

Esto permite comentar cada param.

Tenga cuidado de no olvidar un "` "y ningún espacio después de ellos donde están al final de la línea.

Tengo una cadena en powershell, que contiene un comando sqlcmd nativo. El comando en sí puede ejecutarse con éxito en cmd.exe. Tengo dificultades para ejecutarlos en powershell. ¿Alguien puede ayudar? Gracias.

Esto es sql.sql

select @@servername go select @@servicename

Este es el resultado cuando ejecuto el comando sqlcmd desde cmd.exe

C:/Users/test>sqlcmd -S "(local)/instance1" -U a -P a -i "c:/temp/sql.sql" -------------------------------------------------- thesimpsons/INSTANCE1 (1 rows affected) -------------------------------------------------- INSTANCE1 (1 rows affected) C:/Users/test>

Este es el script powershell para llamar al comando sqlcmd.

$sql = @" sqlcmd -S "(local)/instance1" -U a -P a -i "c:/temp/sql.sql" "@ Invoke-Command $sql

Cuando ejecuto este script de powershell, recibí el siguiente error.

PS C:/TEMP> $sql = @" sqlcmd -S "(local)/instance1" -U a -P a -i "c:/temp/sql.sql" "@ Invoke-Command $sql Invoke-Command : Parameter set cannot be resolved using the specified named parame ters. At line:5 char:15 + Invoke-Command <<<< $sql + CategoryInfo : InvalidArgument: (:) [Invoke-Command], ParameterBin dingException + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands .InvokeCommandCommand


El primer parámetro posicional de invoke-command es -scriptblock, y espera un argumento de bloque de script. Para aprovechar una cadena de aquí para construir el comando y luego ejecutarlo con el comando invocar, necesita convertir la cadena de aquí en un bloque de secuencia de comandos:

$sql = @" sqlcmd -S "(local)/instance1" -U a -P a -i "c:/temp/sql.sql" "@ Invoke-Command ([scriptblock]::create($sql))


Esto es lo que me funcionó para usar sqlcmd desde el script powershell usando el operador &, ver muestra para generar un archivo csv:

& cmd / c "sqlcmd -S $ sv -i $ PROCFILE -s, -v varDB = $ dbclean -o $ filename"

$sv tiene un nombre de servidor como SERVERNAME/INSTANCE

$PROCFILE es como d:/TSTSQL/Sqlquery.SQL

$filename d:/TSTSQL/Desiredoutfilename.CSV es d:/TSTSQL/Desiredoutfilename.CSV

$dbclean es un parámetro pasado al archivo sql


Para llamar a un ejecutable de Win32, desea utilizar el operador de llamada & así:

& sqlcmd -S "(local)/instance1" -U a -P a -i "c:/temp/sql.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 secuencias de comandos que contienen declaraciones de los idiomas (Transact-SQL y XQuery) y comandos compatibles con la utilidad sqlcmd

Simplemente abre la utilidad ''sqlps'' y ejecuta

Invoke-Sqlcmd -InputFile "C:/temp/sql.sql"

Por favor vea Ejecución de PowerShell de SQL Server.

También puede cargar los complementos de SQL Server manualmente en PowerShell antes de usar ''Invoke-Sqlcmd'';
para MS SQL Server 2012 puede hacerlo ejecutando
Import-Module SqlPs


Tanto el nombre de la instancia como el nombre de usuario deben estar completamente calificados

<domain_name>/Instanc_name y <domai_name>/Username . Sólo el nombre de su instancia está correctamente escrito.


Usa Invoke-Expression lugar de Invoke-Command