SQL Server PowerShellSQL Server PowerShell

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database SíInstancia administrada de Azure SQLAzure SQL Managed InstanceYesInstancia administrada de Azure SQLAzure SQL Managed Instance síAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics síAlmacenamiento de datos paralelosParallel Data WarehouseyesAlmacenamiento de datos paralelosParallel Data WarehouseSe aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database SíInstancia administrada de Azure SQLAzure SQL Managed InstanceYesInstancia administrada de Azure SQLAzure SQL Managed Instance síAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics síAlmacenamiento de datos paralelosParallel Data WarehouseyesAlmacenamiento de datos paralelosParallel Data Warehouse

Instalación de SQL Server PowerShellInstall SQL Server PowerShell

Hay dos módulos de SQL Server PowerShell: SqlServer y SQLPS.There are two SQL Server PowerShell modules; SqlServer and SQLPS. 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.The SQLPS module is included with the SQL Server installation (for backwards compatibility), but is no longer being updated. El módulo de PowerShell más actualizado es SqlServer.The most up-to-date PowerShell module is the SqlServer module. El módulo SqlServer contiene versiones actualizadas de los cmdlets en SQLPS, así como nuevos cmdlets para admitir las características más recientes de SQL.The SqlServer module contains updated versions of the cmdlets in SQLPS, and also includes new cmdlets to support the latest SQL features.

Las versiones anteriores del módulo SqlServer estaban incluidas en SQL Server Management Studio (SSMS), pero solo con las versiones 16.x de SSMS.Previous versions of the SqlServer module were included with SQL Server Management Studio (SSMS), but only with the 16.x versions of SSMS.

Para usar PowerShell con SSMS 17.0 y versiones posteriores, debe tener el módulo SqlServer instalado desde la Galería de PowerShell.To use PowerShell with SSMS 17.0 and later, the SqlServer module must be installed from the PowerShell Gallery.

Para instalar el módulo SqlServer, consulte Instalar SQL Server PowerShell.To install the SqlServer module, see Install SQL Server PowerShell.

¿Por qué ha cambiado el módulo de SQLPS a SqlServer?Why did the module change from SQLPS to 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.To ship SQL PowerShell updates, we had to change the identity of the SQL PowerShell module, and the wrapper known as SQLPS.exe. Debido a este cambio, ahora hay dos módulos de SQL PowerShell, SqlServer y SQLPS.Because of this change, there are now two SQL PowerShell modules, the SqlServer module, and the SQLPS module.

Actualice los scripts de PowerShell si importa el módulo SQLPS.Update your PowerShell scripts if you import the SQLPS module.

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.If you have any PowerShell scripts that run Import-Module -Name SQLPS, and you want to take advantage of the new provider functionality and new cmdlets, you must change them to Import-Module -Name SqlServer. El módulo nuevo se instala en la carpeta %ProgramFiles%\WindowsPowerShell\Modules\SqlServer.The new module is installed to %ProgramFiles%\WindowsPowerShell\Modules\SqlServer folder. Por ese motivo, no tiene que actualizar la variable $env:PSModulePath.As such, you don't have to update the $env:PSModulePath variable. 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.If you have scripts that use a third-party or community version of a module named SqlServer, use the Prefix parameter to avoid name collisions.

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.It is recommended to start your script with Import-Module SQLServer to avoid side-by-side issues if the SQLPS module is installed on the same machine.

Esta sección se aplica a los scripts que se ejecutan desde PowerShell y no desde el Agente SQL.This section applies to scripts executed from PowerShell and not the SQL Agent. El nuevo módulo se puede usar con pasos de trabajo del Agente SQL mediante #NOSQLPS.The new module can be used with SQL Agent job steps using #NOSQLPS.

Componentes de SQL Server PowerShellSQL Server PowerShell Components

El módulo SqlServer incluye lo siguiente:The SqlServer module comes with:

  • Proveedores de PowerShell, que habilita un mecanismo de navegación sencillo similar a las rutas de acceso al sistema de archivos.PowerShell Providers, which enables a simple navigation mechanism similar to file system paths. 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.You can build paths similar to file system paths, where the drive is associated with a SQL Server management object model, and the nodes are based on the object model classes. A continuación, puede usar comandos conocidos, como cd y dir , 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.You can then use familiar commands such as cd and dir to navigate the paths similar to the way you navigate folders in a command prompt window. Puede usar otros comandos, como ren o del, para realizar acciones en los nodos de la ruta de acceso.You can use other commands, such as ren or del, to perform actions on the nodes in the path.

  • Un conjunto de cmdlets que admiten acciones como la ejecución de un script sqlcmd que contenga instrucciones de Transact-SQL o XQuery.A set of cmdlets that support actions such as running a sqlcmd script containing Transact-SQL or XQuery statements.

  • El proveedor y los cmdlets de AS, que antes se instalaban por separado.The AS provider and cmdlets, which before they were installed separately.

Versiones de SQL ServerSQL Server versions

Los cmdlets de SQL PowerShell se pueden usar para administrar instancias de Azure SQL Database, Azure SQL Data Warehouse y todos los productos de SQL Server compatibles.SQL PowerShell cmdlets can be used to manage instances of Azure SQL Database, Azure SQL Data Warehouse, and all supported SQL Server products.

Identificadores de SQL Server que contienen caracteres no admitidos en las rutas de acceso de PowerShellSQL Server identifiers that contain characters not supported in PowerShell paths

Los cmdlets Encode-Sqlname y Decode-Sqlname le ayudan a especificar los identificadores de SQL Server que contienen caracteres no admitidos en las rutas de acceso de PowerShell.The Encode-Sqlname and Decode-Sqlname cmdlets help you specify SQL Server identifiers that contain characters not supported in PowerShell paths. Para más información, consulte SQL Server Identifiers in PowerShell.For more information, see 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.Use the Convert-UrnToPath cmdlet to convert a Unique Resource Name for a Database Engine object to a path for the SQL Server PowerShell provider. Para más información, consulte Convert URNs to SQL Server Provider Paths.For more information, see Convert URNs to SQL Server Provider Paths.

Expresiones de consulta y nombres de recursos únicosQuery Expressions and Unique Resource Names

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.Query expressions are strings that use syntax similar to XPath to specify a set of criteria that enumerates one or more objects in an object model hierarchy. Un nombre de recurso único (URN) es un tipo específico de cadena de expresión de consulta que identifica exclusivamente un objeto único.A Unique Resource Name (URN) is a specific type of query expression string that uniquely identifies a single object. Para más información, consulte Query Expressions and Uniform Resource Names.For more information, see Query Expressions and Uniform Resource Names.

Agente SQL ServerSQL Server Agent

No hay ningún cambio en el módulo que usa el Agente SQL Server.There's no change to the module used by SQL Server Agent. Como tal, los trabajos del Agente SQL Server, que tienen pasos de trabajo de tipo de PowerShell, usan el módulo SQLPS.As such, SQL Server Agent jobs, which have PowerShell type job steps use the SQLPS module. Para obtener más información, vea Ejecución de PowerShell con el Agente SQL Server.For more information, see How to run PowerShell with SQL Server Agent. Pero a partir de SQL Server 2019, puede deshabilitar SQLPS.However, starting with SQL Server 2019, you can disable 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.To do so, on the first line of a job step of the type PowerShell you can add #NOSQLPS, which stops the SQL Agent from auto-loading the SQLPS module. 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.When you do this, your SQL Agent Job runs the version of PowerShell installed on the machine, and then you can use any other PowerShell module you like.

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.If you want to use the SqlServer module in your SQL Agent Job step, you can place this code on the first two lines of your script.

#NOSQLPS
Import-Module -Name SqlServer

Referencia de cmdletsCmdlet reference

Pasos siguientesNext steps

Descarga del módulo de PowerShell de SQL ServerDownload SQL Server PowerShell Module