Compartir a través de


Invoke-Sqlcmd

Ejecuta un script que contiene instrucciones compatibles con la utilidad SQLCMD de SQL Server.

Sintaxis

Invoke-Sqlcmd
      [-ServerInstance <PSObject>]
      [-Database <String>]
      [-Encrypt <String>]
      [-EncryptConnection]
      [-Username <String>]
      [-AccessToken <String>]
      [-Password <String>]
      [-Credential <PSCredential>]
      [[-Query] <String>]
      [-QueryTimeout <Int32>]
      [-ConnectionTimeout <Int32>]
      [-ErrorLevel <Int32>]
      [-SeverityLevel <Int32>]
      [-MaxCharLength <Int32>]
      [-MaxBinaryLength <Int32>]
      [-AbortOnError]
      [-DedicatedAdministratorConnection]
      [-DisableVariables]
      [-DisableCommands]
      [-HostName <String>]
      [-ApplicationName <String>]
      [-ApplicationIntent <ApplicationIntent>]
      [-MultiSubnetFailover]
      [-FailoverPartner <String>]
      [-HostNameInCertificate <String>]
      [-TrustServerCertificate]
      [-NewPassword <String>]
      [-Variable <PSObject>]
      [-InputFile <String>]
      [-OutputSqlErrors <Boolean>]
      [-IncludeSqlUserErrors]
      [-SuppressProviderContextWarning]
      [-IgnoreProviderContext]
      [-OutputAs <OutputType>]
      [-StatisticsVariable <String>]
      [-ProgressAction <ActionPreference>]
      [<CommonParameters>]
Invoke-Sqlcmd
      [-AccessToken <String>]
      [[-Query] <String>]
      [-QueryTimeout <Int32>]
      [-ErrorLevel <Int32>]
      [-SeverityLevel <Int32>]
      [-MaxCharLength <Int32>]
      [-MaxBinaryLength <Int32>]
      [-AbortOnError]
      [-DisableVariables]
      [-DisableCommands]
      [-Variable <PSObject>]
      [-InputFile <String>]
      [-OutputSqlErrors <Boolean>]
      [-IncludeSqlUserErrors]
      [-OutputAs <OutputType>]
      -ConnectionString <String>
      [-KeyVaultAccessToken <String>]
      [-ManagedHsmAccessToken <String>]
      [-StatisticsVariable <String>]
      [-ProgressAction <ActionPreference>]
      [<CommonParameters>]

Description

El cmdlet Invoke-Sqlcmd ejecuta un script que contiene los lenguajes y comandos admitidos por la utilidad SQLCMD de SQL Server.

Los comandos admitidos son instrucciones Transact-SQL y el subconjunto de la sintaxis XQuery compatible con el motor de base de datos.

Este cmdlet también acepta muchos de los comandos admitidos de forma nativa por SQLCMD, como GO y QUIT.

Este cmdlet también acepta las variables de scripting SQLCMD, como SQLCMDUSER. De forma predeterminada, este cmdlet no establece variables de scripting de SQLCMD.

Este cmdlet no admite el uso de comandos relacionados principalmente con la edición interactiva de scripts.

Los comandos no admitidos incluyen :!, :connect, :error, :out, :ed, :list, :listvar, :reset, :p erftrace y :serverlist.

Cuando se ejecuta este cmdlet, el primer conjunto de resultados que devuelve el script se muestra como una tabla con formato.

Si los conjuntos de resultados posteriores contienen listas de columnas diferentes a las primeras, esos conjuntos de resultados no se muestran.

Si los conjuntos de resultados posteriores después del primer conjunto tienen la misma lista de columnas, sus filas se anexan a la tabla con formato que contiene las filas que devolvió el primer conjunto de resultados.

Puede mostrar la salida del mensaje de SQL Server, como las que resultan de la instrucción PRINT de SQL, especificando el parámetro Verbose.

Ejemplos

Ejemplo 1: Conexión a una instancia con nombre y ejecución de un script

Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery" -ServerInstance "MyComputer\MainInstance"

TimeOfQuery
-----------
9/21/2017 2:48:24 PM

Este comando se conecta a una instancia con nombre del motor de base de datos SQL en un equipo y ejecuta un script básico de Transact-SQL.

Ejemplo 2: Invocar comandos en un archivo de script y guardar la salida en un archivo de texto

Invoke-Sqlcmd -InputFile "C:\ScriptFolder\TestSqlCmd.sql" | Out-File -FilePath "C:\ScriptFolder\TestSqlCmd.rpt"
Output sent to TestSqlCmd.rpt.

Este comando lee un archivo que contiene instrucciones Transact-SQL y comandos SQLCMD, ejecuta el archivo y escribe la salida en otro archivo.

El archivo de salida puede contener información propietaria, por lo que debe proteger los archivos de salida con los permisos NTFS adecuados.

Ejemplo 3: Invocar un script y pasar valores de variable de una cadena

$StringArray = "MYVAR1='String1'", "MYVAR2='String2'"
Invoke-Sqlcmd -Query "SELECT `$(MYVAR1) AS Var1, `$(MYVAR2) AS Var2" -Variable $StringArray

Var1     Var2
----     ----
String1  String2

Este comando usa una matriz de cadenas de caracteres como entrada para el parámetro Variable.

La matriz define varias variables SQLCMD.

$inicia sesión en la instrucción SELECT que identifica las variables SQLCMD se escapan mediante el carácter back-tick (').

Ejemplo 4: Invocar un script y pasar variables desde el motor de base de datos SQL

Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
PS SQLSERVER:\SQL\MyComputer\MainInstance> Invoke-Sqlcmd -Query "SELECT SERVERPROPERTY('MachineName') AS ComputerName" -ServerInstance (Get-Item .)

ComputerName
------------
MyComputer

Este comando usa Set-Location para ir a la ruta de acceso del proveedor de SQL ServerWindows powerShell para una instancia del motor de base de datos de SQL.

A continuación, llama a Get-Item para recuperar un objeto sql Management Object Server para usarlo como parámetro ServerInstance de Invoke-Sqlcmd.

Ejemplo 5: Ejecución de una consulta y visualización de la salida detallada

Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
Invoke-SqlCmd -Query "PRINT N'abc'" -Verbose
VERBOSE: abc

Este comando usa el parámetro Windows PowerShellVerbose para devolver la salida del mensaje del comando SQL PRINT.

Ejemplo 6: Invocación de un comando mediante una cadena posicional como entrada

Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance\Databases\MyDatabase"
PS SQLSERVER:\SQL\MyComputer\MainInstance> Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName"
WARNING: Using provider context. Server = MyComputer\MainInstance, Database = MyDatabase.

DatabaseName
------------
MyDatabase

Este comando usa una cadena posicional para proporcionar la entrada al parámetro Query.

También muestra cómo Invoke-Sqlcmd usa la ruta de acceso actual para establecer el contexto de la base de datos en MyDatabase.

Ejemplo 7: Capturar datos en un objeto DataSet

$DS = Invoke-Sqlcmd -ServerInstance "MyComputer" -Query "SELECT  ID, Item FROM MyDB.dbo.MyTable" -As DataSet
$DS.Tables[0].Rows | %{ echo "{ $($_['ID']), $($_['Item']) }" }

{ 10, AAA }
{ 20, BBB }
{ 30, CCC }

Este comando usa el parámetro As DataSet para capturar los datos en un objeto System.Data.DataSet de .Net y almacena el resultado en la variable "$DS". El objeto se puede usar para su posterior procesamiento.

Ejemplo 8: Obtener conjuntos de columnas específicos

$Tables = Invoke-Sqlcmd -ServerInstance "MyComputer" -Query "SELECT  Item, id FROM MyDatabase.dbo.MyTable; SELECT GETDATE() AS T" -As DataTables
$Tables[0].Rows | %{ echo $_.ID }
$Tables[1].Rows | %{ echo $_.T.DayOfWeek }

10
20
30

Monday

El primer comando usa el parámetro As DataTables para capturar los datos en una colección de objetos System.Data.DataTable de .Net. El comando obtiene dos tablas con conjuntos de columnas diferentes.

Cada tabla se puede procesar individualmente, en función de su propio esquema.

Ejemplo 9: Obtener control total de una conexión

Invoke-Sqlcmd -Query "SELECT COUNT(*) AS Count FROM MyTable" -ConnectionString "Data Source=MYSERVER;Initial Catalog=MyDatabase;Integrated Security=True;ApplicationIntent=ReadOnly"
Count
-----
127432

Este comando usuarios del parámetro -ConnectionString para obtener el control total de la conexión que establece este cmdlet, en lugar de la Invoke-Sqlcmd para compilar la cadena de conexión en función de los parámetros pasados en la línea de comandos.

Esto es útil para las propiedades menos comunes que puede usar.

Ejemplo 10: Ejecutar un procedimiento almacenado y capturar los errores de SQL

$script_sp_with_errors = @'
CREATE PROCEDURE [dbo].[TestProcedure3]
AS 
BEGIN 
  CREATE TABLE [dbo].[TestTable] (col INT NOT NULL);
  INSERT INTO [dbo].[TestTable] VALUES (NULL); -- will cause an error
END
GO
'@

# Create a test database
Invoke-SqlCmd -ServerInstance MyServer -Query 'CREATE DATABASE TestDB'
# ... adds a stored procedure that has errors in it...
Invoke-SqlCmd -ServerInstance MyServer -Database 'TestDB' -Query $script_sp_with_errors
# ... executes the SP and collected the errors
Invoke-SqlCmd -ServerInstance MyServer -Database 'TestDB' -Query 'EXEC TestProcedure3' -OutputSqlErrors $true

Here's the output:
Invoke-SqlCmd : Cannot insert the value NULL into column 'col', table 'TestDB.dbo.TestTable'; column does not allow nulls. INSERT fails.
The statement has been terminated.
 Msg 515, Level 16, State 2, Procedure TestProcedure3, Line 5.
At line:1 char:1
...

Este comando los usuarios del parámetro -OutputSqlErrors para notificar los errores al usuario. Tenga en cuenta que el mensaje de error en este caso proporciona información adicional, como el nombre del SP y el número de línea donde se produjo el error.

Ejemplo 11: Conexión a Azure SQL Database (o Instancia administrada) mediante un token de acceso

Import-Module SQLServer
Import-Module Az.Accounts -MinimumVersion 2.2.0

# Note: the sample assumes that you or your DBA configured the server to accept connections using
#       that Service Principal and has granted it access to the database (in this example at least
#       the SELECT permission).

### Obtain the Access Token: this will bring up the login dialog
Connect-AzAccount
$access_token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token

# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token`
              -query 'select * from Table1'

Ejemplo 12: Conexión a Azure SQL Database (o Instancia administrada) mediante una entidad de servicio

Import-Module SQLServer

# Note: the sample assumes that you or your DBA configured the server to accept connections using
#       that Service Principal and has granted it access to the database (in this example at least
#       the SELECT permission).

$clientid = "enter application id that corresponds to the Service Principal" # Do not confuse with its display name
$tenantid = "enter the tenant ID of the Service Principal"
$secret = "enter the secret associated with the Service Principal"

$request = Invoke-RestMethod -Method POST `
           -Uri "https://login.microsoftonline.com/$tenantid/oauth2/token"`
           -Body @{ resource="https://database.windows.net/"; grant_type="client_credentials"; client_id=$clientid; client_secret=$secret }`
           -ContentType "application/x-www-form-urlencoded"
$access_token = $request.access_token

# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token`
              -query 'select * from Table1'

Ejemplo 13: Conexión a Azure SQL Database (o Instancia administrada) mediante una identidad administrada asignada por el sistema (SAMI)

Import-Module SQLServer

# Note: the sample assumes that you or your DBA configured the server to accept connections using
#       that VM Identity you are running on and has granted it access to the database (in this 
#       example at least the SELECT permission).

Connect-AzAccount -Identity
$access_token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token

# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token `
              -query 'select * from Table1'

Ejemplo 14: Conexión a Azure SQL Database (o Instancia administrada) mediante una identidad administrada asignada por el usuario (UAMI)

Import-Module SQLServer

# Note: the sample assumes that you or your DBA configured the server to accept connections using
#       that VM Identity you are running on and has granted it access to the database (in this 
#       example at least the SELECT permission).

Connect-AzAccount -Identity -AccountId '<your-user-assigned-managed-identity-client-id>'
$access_token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token

# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token `
              -query 'select * from Table1'

Ejemplo 15: Conexión a un grupo de disponibilidad configurado para el enrutamiento de Read-Only mediante -ApplicationIntent

# In the following example:
# - MT_2009250511 is a listener for an AG configured for Read-Only Routing (port 5555)
# - AGDB_2_1 is the DB in the AG
# - VLM00226138 is the primary replica configured to only allow ReadWrite connections 
# - VLM00226137 is the secondary replica
# 
Invoke-Sqlcmd -ServerInstance "MT_2009250511,5555" -Database AGDB_2_1 `
     -HostName "PowershellBox1" -ApplicationName "ReadWrite" -ApplicationIntent ReadWrite `
     -Query "select HOST_NAME() AS HostName, APP_NAME() AS ApplicationIntent, @@SERVERNAME AS ServerName"

Invoke-Sqlcmd -ServerInstance "MT_2009250511,5555" -Database AGDB_2_1 `
     -HostName "PowershellBox2" -ApplicationName "ReadOnly" -ApplicationIntent ReadOnly `
     -Query "select HOST_NAME() AS HostName, APP_NAME() AS ApplicationIntent, @@SERVERNAME AS ServerName"  

# When you run the 2 cmdlets above, the output is going to be something like this:  
#  
# HostName       ApplicationIntent ServerName  
# --------       ----------------- ----------  
# PowershellBox1 ReadWrite         VLM00226138  
#  
# HostName       ApplicationIntent ServerName  
# --------       ----------------- ----------  
# PowershellBox2 ReadOnly          VLM00226137

que muestra que, en función del valor del parámetro -ApplicationIntent, la conexión se enruta a un servidor diferente del grupo de disponibilidad. Por cierto, observe los usos de los parámetros -ApplicationName y -HostName para diferenciar visualmente los dos resultados: se trata de una técnica común que se puede usar para realizar un seguimiento de las conexiones y sus intenciones, más allá del ejemplo de -ApplicationIntent que se muestra aquí.

Ejemplo 16: Captura de estadísticas de conexión mediante -StatisticsVariable parámetro

Import-Module SQLServer
Invoke-Sqlcmd -ServerInstance localhost -StatisticsVariable stats `
              -Query 'CREATE TABLE #Table (ID int); INSERT INTO #Table VALUES(1), (2); INSERT INTO #Table VALUES(3); SELECT * FROM #Table'

Write-Host "Number of rows affected......: $($stats.IduRows)"
Write-Host "Number of insert statements..: $($stats.IduCount)"
Write-Host "Number of select statements..: $($stats.SelectCount)"
Write-Host "Total execution time.........: $($stats.ExecutionTime)ms"

# When you run the code fragment above, is going to be something like this:  
#
# Number of rows affected......: 3
# Number of insert statements..: 2
# Number of select statements..: 1
# Total execution time.........: 5ms

En este ejemplo se muestra cómo usar el parámetro -StatisticsVariable para capturar información sobre la conexión, las instrucciones ejecutadas y el tiempo de ejecución cuando se ejecuta algún T-SQL que crea una tabla temporal, inserta algún valor y, por último, emite una selección para obtener todas las filas insertadas.

Nota: cuando se ejecuta la misma consulta en varios servidores (por ejemplo, canalizando los nombres de servidor a través del cmdlet), el StatisticsVariable captura una matriz de estadísticas, una para cada conexión. A continuación, los resultados se pueden agregar mediante, por ejemplo, ($stats.IduRows | Measure-Object -Sum).Sum.

Consulte estadísticas de proveedor de para SQL Server para obtener más información sobre las estadísticas disponibles.

Ejemplo 17: Ejecute una consulta que descifre los datos recuperados de columnas cifradas mediante Always Encrypted. Supongamos que la clave maestra de columna se almacena en un almacén de claves de Azure Key Vault.

# Connect to Azure account.
Import-Module Az.Accounts -MinimumVersion 2.2.0
Connect-AzAccount

# Obtain an access token for key vaults. 
$keyVaultAccessToken = (Get-AzAccessToken -ResourceUrl https://vault.azure.net).Token

# Pass the token to the cmdlet, so that it can use it to authenticate to Azure when decrypting data protected with Always Encrypted.
$connString = 'Data Source=MYSERVER;Initial Catalog=MyDatabase;Integrated Security=True;ApplicationIntent=ReadOnly;Column Encryption Setting=Enabled'
Invoke-Sqlcmd -Query 'SELECT COUNT(*) AS Count FROM MyTable' -ConnectionString $connString -KeyVaultAccessToken $keyVaultAccessToken

Parámetros

-AbortOnError

Indica que este cmdlet detiene el comando de SQL Server y devuelve un nivel de error a la variable ERRORLEVEL de Windows PowerShell si este cmdlet encuentra un error.

El nivel de error devuelto es 1 si el error tiene una gravedad superior a 10 y el nivel de error es 0 si el error tiene una gravedad de 10 o menos.

Si también se especifica el parámetro ErrorLevel, este cmdlet devuelve 1 solo si la gravedad del mensaje de error también es igual o superior al valor especificado para ErrorLevel.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-AccessToken

El token de acceso que se usa para autenticarse en SQL Server, como alternativa a la autenticación de usuario o contraseña de Windows.

Esto se puede usar, por ejemplo, para conectarse a SQL Azure DB y SQL Azure Managed Instance mediante un Service Principal o un Managed Identity (vea referencias en la parte inferior de esta página).

En escenarios comunes, este parámetro se obtiene con algo parecido a (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token (requiere el módulo Az.Account)

No especifique userName, passwordo credential al usar este parámetro.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ApplicationIntent

Tipo de carga de trabajo de aplicación al conectarse a una base de datos en un grupo de disponibilidad de SQL Server.

Los valores permitidos son: ReadOnly y ReadWrite.

Tipo:ApplicationIntent
Valores aceptados:ReadWrite, ReadOnly
Posición:Named
Valor predeterminado:ReadWrite
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ApplicationName

Nombre de la aplicación asociada a la conexión.

Tipo:String
Posición:Named
Valor predeterminado:.NET SqlClient Data Provider
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ConnectionString

Especifica una cadena de conexión para conectarse al servidor.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ConnectionTimeout

Especifica el número de segundos en que este cmdlet agota el tiempo de espera si no se puede conectar correctamente a una instancia del motor de base de datos. El valor de tiempo de espera debe ser un valor entero entre 0 y 65534. Si se especifica 0, los intentos de conexión no agoten el tiempo de espera.

Tipo:Int32
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Credential

Objeto PSCredential cuyos campos Nombre de usuario y Contraseña se usarán para conectarse a la instancia de SQL.

Tipo:PSCredential
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Database

Especifica el nombre de una base de datos. Este cmdlet se conecta a esta base de datos en la instancia especificada en el parámetro ServerInstance.

Si no se especifica el parámetro Database, la base de datos que se usa depende de si la ruta de acceso actual especifica la carpeta SQLSERVER:\SQL y un nombre de base de datos. Si la ruta de acceso especifica la carpeta SQL y un nombre de base de datos, este cmdlet se conecta a la base de datos especificada en la ruta de acceso. Si la ruta de acceso no se basa en la carpeta SQL o la ruta de acceso no contiene un nombre de base de datos, este cmdlet se conecta a la base de datos predeterminada para el identificador de inicio de sesión actual. Si especifica el modificador de parámetro IgnoreProviderContext, este cmdlet no tiene en cuenta ninguna base de datos especificada en la ruta de acceso actual y se conecta a la base de datos definida como valor predeterminado para el identificador de inicio de sesión actual.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-DedicatedAdministratorConnection

Indica que este cmdlet usa una conexión de administrador dedicada (DAC) para conectarse a una instancia del motor de base de datos.

Los administradores del sistema usan DAC para acciones como la solución de problemas de instancias que no aceptarán nuevas conexiones estándar.

La instancia debe configurarse para admitir DAC.

Si la DAC no está habilitada, este cmdlet notifica un error y no se ejecutará.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-DisableCommands

Indica que este cmdlet desactiva algunas características de sqlcmd que podrían poner en peligro la seguridad al ejecutarse en archivos por lotes.

Impide que las variables de Windows PowerShell se pasen al script de Invoke-Sqlcmd.

El script de inicio especificado en la variable de scripting SQLCMDINI no se ejecuta.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-DisableVariables

Indica que este cmdlet omite las variables de scripting de sqlcmd. Esto resulta útil cuando un script contiene muchas instrucciones INSERT que pueden contener cadenas que tienen el mismo formato que las variables, como $(variable_name).

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Encrypt

Tipo de cifrado que se va a usar al conectarse a SQL Server.

Este valor se asigna a la propiedad EncryptSqlConnectionEncryptOption en el objeto SqlConnection del controlador Microsoft.Data.SqlClient.

Cuando no se especifica, el valor predeterminado es Mandatory.

Este parámetro es nuevo en la versión 22 del módulo. Para obtener más información, vea Strict Connection Encryption en Vínculos relacionados.

Tipo:String
Valores aceptados:Mandatory, Optional, Strict
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-EncryptConnection

Indica que este cmdlet usa el cifrado capa de sockets seguros (SSL/TLS) para la conexión a la instancia del motor de base de datos especificado en el parámetro ServerInstance.

A partir de la versión 22 del módulo, este parámetro está en desuso. Las conexiones se cifran de forma predeterminada. Considere la posibilidad de usar el nuevo parámetro -Encrypt en su lugar. Para obtener más información, vea Strict Connection Encryption en Vínculos relacionados.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ErrorLevel

Especifica que este cmdlet muestra solo los mensajes de error cuyo nivel de gravedad es igual o superior al valor especificado. Todos los mensajes de error se muestran si no se especifica este parámetro o se establece en 0. Las gravedades de errores del motor de base de datos oscilan entre 1 y 24.

Tipo:Int32
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-FailoverPartner

Nombre o dirección del servidor asociado al que se va a conectar si el servidor principal está inactivo.

Tipo:String
Posición:Named
Valor predeterminado:""
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-HostName

Especifica un nombre de estación de trabajo. El procedimiento almacenado del sistema sp_who notifica el nombre de estación de trabajo y en la columna nombre de host de la vista de catálogo sys.processes. Si no se especifica este parámetro, el valor predeterminado es el nombre del equipo en el que se ejecuta Invoke-Sqlcmd. Este parámetro se puede usar para identificar diferentes sesiones de Invoke-Sqlcmd.

Tipo:String
Alias:WorkstationID
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-HostNameInCertificate

Nombre de host que se va a usar para validar el certificado TLS/SSL de SQL Server. Debe pasar este parámetro si la instancia de SQL Server está habilitada para Forzar cifrado y desea conectarse a una instancia mediante el nombre de host o el nombre corto. Si se omite este parámetro, es necesario pasar el nombre de dominio completo (FQDN) a -ServerInstance es necesario para conectarse a una instancia de SQL Server habilitada para Forzar cifrado.

Este parámetro es nuevo en la versión 22 del módulo. Para obtener más información, vea Strict Connection Encryption en Vínculos relacionados.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-IgnoreProviderContext

Indica que este cmdlet omite el contexto de base de datos establecido por la ruta de acceso SQLSERVER:\SQL actual. Si no se especifica el parámetro Database, este cmdlet usa la base de datos predeterminada para el identificador de inicio de sesión actual o la cuenta de Windows.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-IncludeSqlUserErrors

Indica que este cmdlet devuelve errores de script de usuario de SQL que, de lo contrario, se omiten de forma predeterminada. Si se especifica este parámetro, este cmdlet coincide con el comportamiento predeterminado de la utilidad sqlcmd.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-InputFile

Especifica un archivo que se va a usar como entrada de consulta para este cmdlet. El archivo puede contener instrucciones Transact-SQL, instrucciones XQuery y comandos sqlcmd y variables de scripting. Especifique la ruta de acceso completa al archivo. Se espera que el archivo se codifique mediante UTF-8.

Solo debe ejecutar scripts de orígenes de confianza. Asegúrese de que todos los scripts de entrada están protegidos con los permisos NTFS adecuados.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-KeyVaultAccessToken

Especifica un token de acceso para almacenes de claves en Azure Key Vault. Use este parámetro si alguna columna que se va a consultar está protegida con Always Encrypted mediante una clave maestra de columna almacenada en un almacén de claves de Azure Key Vault. Como alternativa, puede autenticarse en Azure con Add-SqlAzureAuthenticationContext antes de llamar a este cmdlet.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ManagedHsmAccessToken

Especifica un token de acceso para los HSM administrados en Azure Key Vault. Use este parámetro si alguna columna que se va a consultar está protegida con Always Encrypted mediante una clave maestra de columna almacenada en un HSM administrado en Azure Key Vault. Como alternativa, puede autenticarse en Azure con Add-SqlAzureAuthenticationContext antes de llamar a este cmdlet.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-MaxBinaryLength

Especifica el número máximo de bytes devueltos para las columnas con tipos de datos de cadena binaria, como binary y varbinary. El valor predeterminado es 1024 bytes.

Tipo:Int32
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-MaxCharLength

Especifica el número máximo de caracteres devueltos para las columnas con tipos de datos Character o Unicode, como char, nchar, varchar y nvarchar. El valor predeterminado es de 4000 caracteres.

Tipo:Int32
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-MultiSubnetFailover

Si la aplicación se conecta a un grupo de disponibilidad AlwaysOn (AG) en subredes diferentes, pasar este parámetro proporciona una detección más rápida de y la conexión al servidor activo (actualmente).

Nota: no se requiere pasar -MultiSubnetFailover con .NET Framework 4.6.1 o versiones posteriores.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-NewPassword

Especifica una nueva contraseña para un identificador de inicio de sesión de autenticación de SQL Server. Este cmdlet cambia la contraseña y, a continuación, se cierra. También debe especificar los parámetros Username y Password, con Password que especifica la contraseña actual para el inicio de sesión.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-OutputAs

Especifica el tipo de los resultados que obtiene este cmdlet.

Si no especifica un valor para este parámetro, el cmdlet establece el valor en DataRows.

Tipo:OutputType
Alias:As
Valores aceptados:DataSet, DataTables, DataRows
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-OutputSqlErrors

Indica que este cmdlet muestra mensajes de error en la salida de Invoke-Sqlcmd.

Tipo:Boolean
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Password

Especifica la contraseña del identificador de inicio de sesión de autenticación de SQL Server que se especificó en el parámetro Username. Las contraseñas distinguen mayúsculas de minúsculas. Cuando sea posible, use la autenticación de Windows. No use una contraseña en blanco, siempre que sea posible, use una contraseña segura.

Si especifica el parámetro Password seguido de la contraseña, la contraseña es visible para cualquier persona que pueda ver el monitor.

Si codifica la contraseña seguida de la contraseña en un script de .ps1, cualquier persona que lea el archivo de script verá su contraseña.

Asigne los permisos NTFS adecuados al archivo para evitar que otros usuarios puedan leer el archivo.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ProgressAction

Determina cómo Responde PowerShell a las actualizaciones de progreso generadas por un script, cmdlet o proveedor, como las barras de progreso generadas por el cmdlet Write-Progress. El cmdlet Write-Progress crea barras de progreso que muestran el estado de un comando.

Tipo:ActionPreference
Alias:proga
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Query

Especifica una o varias consultas que ejecuta este cmdlet. Las consultas pueden ser Transact-SQL o instrucciones XQuery o comandos sqlcmd. Se pueden especificar varias consultas separadas por punto y coma. No especifique el separador sqlcmd GO. Escape entre comillas dobles incluidas en la cadena. Considere la posibilidad de usar identificadores entre corchetes, como [MyTable] en lugar de identificadores entre comillas como "MyTable".

Tipo:String
Posición:0
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-QueryTimeout

Especifica el número de segundos antes de que se agote el tiempo de espera de las consultas. Si no se especifica un valor de tiempo de espera, las consultas no agota el tiempo de espera. El tiempo de espera debe ser un valor entero entre 1 y 65535.

Tipo:Int32
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ServerInstance

Especifica una cadena de caracteres o un objeto Objetos de administración de SQL Server (SMO) que especifica el nombre de una instancia del motor de base de datos. Para las instancias predeterminadas, especifique solo el nombre del equipo: MyComputer. Para las instancias con nombre, use el formato NombreDeEquipo\NombreDeInstancia.

Tipo:PSObject
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-SeverityLevel

Especifica el límite inferior para el nivel de gravedad del mensaje de error que este cmdlet devuelve a la variable ERRORLEVEL de Windows PowerShell.

Este cmdlet devuelve el nivel de gravedad más alto de los mensajes de error generados por las consultas que ejecuta, siempre que la gravedad sea igual o superior a la especificada en el parámetro SeverityLevel.

Si No se especifica SeverityLevel o se establece en 0, este cmdlet devuelve 0 a ERRORLEVEL.

Los niveles de gravedad de los mensajes de error del motor de base de datos oscilan entre 1 y 24.

Este cmdlet no notifica gravedades para los mensajes informativos que tienen una gravedad de 10.

Tipo:Int32
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-StatisticsVariable

Especifique el nombre de una variable de PowerShell que se asignará a las estadísticas en tiempo de ejecución de SQL Server cuando se ejecute el cmdlet.

El uso común de este parámetro es capturar el ExecutionTime (la cantidad acumulativa de tiempo (en milisegundos) que el proveedor ha dedicado a procesar el cmdlet) o IduRows (el número total de filas afectadas por las instrucciones INSERT, DELETE y UPDATE).

Para obtener más información, consulte estadísticas del proveedor de para SQL Server.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-SuppressProviderContextWarning

Indica que este cmdlet suprime la advertencia de que este cmdlet ha usado en el contexto de base de datos de la configuración actual de la ruta de acceso SQLSERVER:\SQL para establecer el contexto de la base de datos para el cmdlet.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-TrustServerCertificate

Indica si el canal se cifrará mientras se pasa la cadena de certificados para validar la confianza.

Este parámetro es nuevo en la versión 22 del módulo. Para obtener más información, vea Strict Connection Encryption en Vínculos relacionados.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Username

Especifica el identificador de inicio de sesión para realizar una conexión de autenticación de SQL Server a una instancia del motor de base de datos.

La contraseña debe especificarse a través del parámetro Password.

Si no se especifica el nombre de usuario y la contraseña, este cmdlet intenta una conexión de autenticación de Windows mediante la cuenta de Windows que ejecuta la sesión de Windows PowerShell. Cuando sea posible, use la autenticación de Windows.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Variable

Especifica un conjunto de variables de scripting sqlcmd para su uso en el script sqlcmd y establece un valor para las variables.

Use una matriz de Windows PowerShell para especificar varias variables y sus valores; Como alternativa, use un Hashtable donde la clave represente el nombre de la variable y el valor de la variable.

Cuando se usa una matriz, se recortan los valores de parámetro. Este comportamiento se mantuvo en la versión 22 del módulo por motivos de compatibilidad con versiones anteriores con v21. Se recomienda no confiar en este comportamiento, lo que puede cambiar en una versión principal futura del módulo.

El parámetro de tipo Hashtable solo está disponible en v22+ del módulo.

Tipo:PSObject
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

Entradas

System.Management.Automation.PSObject

Salidas

System.Object