Usar los cmdlets de SQL Server

Los cmdlets de Windows PowerShell son comandos de una sola función que normalmente siguen la convención de nomenclatura verbo-nombre, como Get-Help o Set-MachineName. El proveedor de SQL Server para Windows PowerShell proporciona cmdlets específicos a SQL Server.

cmdlets de SQL Server

SQL Server 2008 implementa una pequeña parte de los cmdlets de SQL Server.

En el entorno de Windows PowerShell, el cmdlet Get-Help proporciona información de ayuda para cada cmdlet. Get-Help devuelve información como la sintaxis, las definiciones de parámetro, los tipos de entrada y salida, y una descripción de la acción realizada por el cmdlet.

Estos ejemplos devuelven la ayuda básica, la ayuda completa, el diagrama de sintaxis, los parámetros y los ejemplos para el cmdlet Encode-SqlName de SQL Server:

get-help "Encode-SqlName"
get-help "Encode-SqlName" -Full
get-help "Encode-SqlName" -Syntax
get-help "Encode-SqlName" -Parameter *
get-help "Encode-SqlName" -Examples

Invoke-Sqlcmd

Invoke-Sqlcmd admite la ejecución de comandos o scripts de sqlcmd que contienen instrucciones de XQuery o Transact-SQL. Puede aceptar la entrada de sqlcmd como parámetro de entrada de la cadena de caracteres o como nombre de un archivo de script que se va a abrir. Para obtener más información, vea Usar el cmdlet Invoke-Sqlcmd.

Invoke-PolicyEvaluation

Invoke-PolicyEvaluation informa si un conjunto de objetos de SQL Server de destino cumple las condiciones definidas en las directivas de administración basadas en directivas. Opcionalmente, el cmdlet se puede usar para volver a configurar cualquier opción que se pueda establecer en los objetos de destino que no cumplan las condiciones de la directiva. Para obtener más información, vea Usar el cmdlet Invoke-PolicyEvaluation.

Codificar y descodificar identificadores de SQL Server

Los identificadores son los nombres de objetos de SQL Server. Los identificadores de SQL Server admiten un intervalo más amplio de caracteres que el lenguaje de Windows PowerShell. Los identificadores entre paréntesis o entrecomillados de Motor de base de datos tienen muy pocas restricciones en cuanto a los caracteres que se usan en los nombres. Algunos de los caracteres utilizados en identificadores entre paréntesis o entrecomillados no se pueden eludir mediante el carácter de escape de Windows PowerShell (`), y esto puede producir problemas si se usa el proveedor de SQL Server.

El cmdlet Encode-SqlName toma como entrada un identificador de SQL Server y cambia el formato de todos los caracteres no admitidos por el lenguaje de Windows PowerShell con una representación que funcionará en Windows PowerShell. El cmdlet Decode-SqlName toma como entrada un identificador de SQL Server codificado y devuelve el identificador original. Por ejemplo:

  • Encode-SqlName "Table:Test" devuelve la cadena "Table%3ATest".

  • Decode-SqlName "Table%3ATest" devuelve "Table:Test".

Para obtener más información, vea Usar los identificadores de SQL Server en PowerShell.

Convertir los URN en rutas de acceso

El modelo de objetos de administración de SQL Server (SMO) genera nombres de recursos uniformes (URN) para sus objetos. Cada URN tiene la misma información que una ruta de acceso al objeto, pero en un formato diferente. Por ejemplo, esta es la ruta de acceso a una tabla:

SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks2008R2\Tables\Person.Address

Y este es el URN para el mismo objeto:

Server[@Name='MyComputer']\Database[@Name='AdventureWorks2008R2']\Table[@Name='Address' and @Schema='Person']

El cmdlet Convert-UrnToPath convierte las cadenas URN de SMO en rutas de acceso de Windows PowerShell. Si los nombres de nodo contienen caracteres extendidos que no se admiten en los nombres de ruta de acceso de Windows PowerShell, Convert-UrnToPath los codifica en su representación hexadecimal. Por ejemplo "My:Table" se devuelve como "My%3ATable".

En Windows PowerShell, ejecute Get-Help Convert-UrnToPath -Examples para obtener ejemplos de la utilización del cmdlet.

Nombres de parámetros parciales

No tiene que especificar el nombre completo de un parámetro de cmdlet. Solo tiene que especificar una parte del nombre que sea suficiente para separarlo de forma exclusiva de los otros parámetros admitidos por el cmdlet. Por ejemplo, en estos ejemplos se muestran tres formas de especificar el parámetro Invoke-Sqlcmd -QueryTimeout:

Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTimeout 3
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTime 3
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryT 3