SQL Server PowerShell

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Instalación de SQL Server PowerShell

Hay dos módulos de SQL Server PowerShell: SqlServer y SQLPS .

El módulo SqlServer es el módulo de PowerShell actual que se va a usar.

El módulo SQLPS está incluido en la instalación de SQL Server (por motivos de compatibilidad con versiones anteriores), pero ya no se actualiza.

El módulo SqlServer contiene versiones actualizadas de los cmdlets en SQLPS e incluye cmdlets para admitir las características más recientes de SQL.

Las versiones anteriores del módulo SqlServerestaban incluidas en SQL Server Management Studio (SSMS), pero solo con las versiones 16.x de SSMS.

Para usar PowerShell con SSMS 17.0 y versiones posteriores, instale el módulo SqlServer desde la Galería de PowerShell.

También puede usar PowerShell con Azure Data Studio.

¿Por qué ha cambiado el módulo de SQLPS a SqlServer?

Para incluir las actualizaciones de SQL PowerShell, fue necesario cambiar la identidad del módulo SQL PowerShell, así como el contenedor conocido como SQLPS.exe. Debido a este cambio, ahora hay dos módulos de SQL PowerShell, SqlServer y SQLPS.

Actualice los scripts de PowerShell si importa el módulo SQLPS.

Si tiene algún script de PowerShell que ejecute Import-Module -Name SQLPS y quiere aprovechar la nueva funcionalidad de proveedor y los nuevos cmdlets, debe cambiarlos a Import-Module -Name SqlServer. El módulo nuevo se instala en la carpeta %ProgramFiles%\WindowsPowerShell\Modules\SqlServer. Por ese motivo, no tiene que actualizar la variable $env:PSModulePath. Si tiene scripts que usen una versión de comunidad o de terceros de un módulo denominado SqlServer, emplee el parámetro Prefix para evitar colisiones de nombres.

Se recomienda iniciar el script con Import-Module SQLServer para evitar problemas en paralelo si el módulo SQLPS está instalado en el mismo equipo.

Esta sección se aplica a los scripts que se ejecutan desde PowerShell y no desde el Agente SQL. El nuevo módulo se puede usar con pasos de trabajo del Agente SQL mediante #NOSQLPS.

Componentes de SQL Server PowerShell

El módulo SqlServer incluye lo siguiente:

  • Proveedores de PowerShell, que habilita un mecanismo de navegación sencillo similar a las rutas de acceso al sistema de archivos. Puede crear rutas de acceso similares a las del sistema de archivos, en las que la unidad se asocia a un modelo de objetos de administración de SQL Server y los nodos se basan en las clases del modelo de objetos. A continuación, puede usar comandos conocidos como cd (alias para Set-Location) y dir (alias para Get-ChildItem) para navegar por las rutas de acceso de modo similar a como se navega por las carpetas en una ventana del símbolo del sistema. Puede usar otros comandos, como ren (alias para Rename-Item) o del (alias para Remove-Item), para realizar acciones en los nodos de la ruta.

  • Un conjunto de cmdlets que admiten acciones como la ejecución de un script sqlcmd que contenga instrucciones de Transact-SQL o XQuery.

  • El proveedor y los cmdlets de AS, que antes se instalaban por separado.

Versiones de SQL Server

Los cmdlets de SQL PowerShell se pueden usar para administrar instancias de Azure SQL Database, Azure Synapse Analytics y todos los productos de SQL Server compatibles.

Identificadores de SQL Server que contienen caracteres no admitidos en las rutas de acceso de PowerShell

Los cmdlets Encode-Sqlname (alias para ConvertTo-EncodedSqlName) y Decode-Sqlname (alias para ConvertFrom-EncodedSqlName) le ayudan a especificar los identificadores de SQL Server que contienen caracteres no admitidos en las rutas de acceso de PowerShell. Para más información, consulte SQL Server Identifiers in PowerShell.

Use el cmdlet Convert-UrnToPath para convertir un nombre de recurso único de un objeto de Motor de base de datos en una ruta de acceso para el proveedor SQL Server PowerShell. Para más información, consulte Convert URNs to SQL Server Provider Paths.

Expresiones de consulta y nombres de recursos uniformes

Las expresiones de consulta son cadenas que usan una sintaxis similar a XPath para especificar un conjunto de criterios en el que se enumeran uno o más objetos de una jerarquía del modelo de objetos. Un nombre de recurso uniforme (URN) es un tipo específico de cadena de expresión de consulta que identifica exclusivamente un objeto único. Para más información, consulte Query Expressions and Uniform Resource Names.

Agente SQL Server

No hay ningún cambio en el módulo que usa el Agente SQL Server. Como tal, los trabajos del Agente SQL Server, que tienen pasos de trabajo de tipo de PowerShell, usan el módulo SQLPS. Para obtener más información, vea Ejecución de PowerShell con el Agente SQL Server. Pero a partir de SQL Server 2019, puede deshabilitar SQLPS. Para ello, en la primera línea de un paso de trabajo del tipo PowerShell puede agregar #NOSQLPS, que impide que el Agente SQL cargue de forma automática el módulo SQLPS. Al hacerlo, el trabajo del Agente SQL ejecutará la versión de PowerShell instalada en el equipo y, después, podrá usar cualquier otro módulo de PowerShell que quiera.

Solucionar problemas de SQLPS

Si ve que en los pasos del trabajo del agente (subsistema de PowerShell) se produce el siguiente error, esta sección puede resultarle útil para solucionarlo.

Un paso del trabajo recibió un error en la línea 1 de un script de PowerShell. La línea correspondiente es "import-module SQLPS". Corrija el script y vuelva a programar el trabajo. La información de error que devuelve PowerShell es la siguiente: "No se cargó el módulo 'SQLPS' especificado porque no se encontró ningún archivo de módulo válido en ningún directorio de módulo".

El módulo SQLPS debe estar disponible en la variable de entorno PSModulePath. Si se desinstala SSMS 16.x, es posible que se quite SQLPS de PSModulePath. Para comprobar los valores actuales que están almacenados en PSModulePath, ejecute el siguiente comando de PowerShell:

 $env:PSModulePath -split ";"

Si la ruta de acceso está establecida, verá una entrada similar a C:\Program Files (x86)\Microsoft SQL Server\130\Tools\PowerShell\Modules. Si la ruta de acceso no está establecida, busque la carpeta de SQLPS en el servidor y agréguela al valor de la variable de entorno mediante PowerShell o en Propiedades del sistema>Opciones avanzadas>Variables de entorno.

Módulo SqlServer con el Agente SQL

Si quiere usar el módulo SqlServer en el paso de trabajo del Agente SQL, puede colocar este código en las dos primeras líneas del script.

#NOSQLPS
Import-Module -Name SqlServer

Referencia de cmdlets

Pasos siguientes