Capitulo 9 - Lección 2: Implementar Scripts mediante Windows PowerShell

Como desarrollador, puede usar PowerShell de SQL Server 2008 para automatizar el proceso de despliegue de sus aplicaciones. También puede utilizar PowerShell de SQL Server para automatizar la enumeración de los objetos de base de datos y las propiedades de los objeto. Además, puede invocar a través de Sqlcmd PowerShell de SQL Server, lo que le permite ejecutar cualquier válida comandos SQL desde dentro del entorno de Windows PowerShell.

¿Qué es Windows PowerShell? (Más información AQUI)
Windows PowerShell es un entorno de línea de comandos de shell y un lenguaje que le permiten automatizar las tareas administrativas y el desarrollo mediante la creación de scripts robustos. Como las funciones de Windows PowerShell existen en muchas aplicaciones de Microsoft, una vez que aprenda este lenguaje de programación común, se puede utilizar para administrar varios servidores y productos.
Al instalar SQL Server 2008, el programa de instalación instala Windows PowerShell 1.0 (si no está instalado), el proveedor de SQL Server PowerShell, un conjunto de cmdlets de PowerShell de SQL Server, y la utilidad sqlps para habilitar la funcionalidad de SQL Server en el entorno de PowerShell.
Con PowerShell de SQL Server, puede crear secuencias de comandos que puede ejecutar en la fecha prevista mediante trabajos del Agente SQL Server, mediante el uso de la opción Iniciar PowerShell en SSMS, o ejecutando un entorno de la aplicación SQL Server PowerShell tales como sqlps o una aplicación personalizada.
Soporte de Windows PowerShell: En SQL Server 2008, Windows PowerShell se limita a apoyar las SMO en relación con el motor de base de datos y de Service Broker. Un proveedor de Windows PowerShell para SQL Server Analysis Services (SSAS) está disponible en el sitio web de CodePlex en http://www.codeplex.com/powerSSAS
Precaución: Cuando se crea pasos de trabajo dentro de Windows PowerShell en el Agente SQL Server, cada paso inicia un proceso sqlps separado. Cada uno de estos procesos requiere aproximadamente 20 megabytes (MB) de memoria. Si ejecuta un gran número de pasos de trabajo de SQL Server PowerShell al mismo tiempo, usted debe probar los recursos y el impacto en el rendimiento.
Navegar por la jerarquía de SQL Server PowerShell (Más información AQUI)
SQL Server utiliza una jerarquía para representar cómo los objetos se relacionan entre sí dentro de un servidor.
Por ejemplo, existe una tabla en un esquema, que existe dentro de una base de datos, que existe dentro de una instancia de SQL Server, que reside en un servidor.SQL Server PowerShell utiliza una representación de la unidad y de la ruta de esta jerarquía. La estructura de la unidad y de la ruta utilizada por SQL Server PowerShell se construye utilizando una terminología similar y los comandos a los que se utiliza en un sistema de archivos.
El nodo raíz de SQL Server es el SQLSERVER: la unidad. Bajo el SQLSERVER:unidad, el proveedor de SQL Server PowerShell implementa las siguientes tres carpetas:
  • SQLSERVE R:\SQL: Contiene objetos de base de datos, como bases de datos, tablas, vistas y procedimientos almacenados.
  • SQLSERVE R:\SQLPolicy: Contiene objetos basados ​​en políticas de gestión, tales como las políticas y los aspectos.
  • SQLSERVE R:\SQLRegistration: Contiene objetos registrados servidor, tales como los grupos de servidores y servidores registrados
Dentro de cada motor y carpeta, se puede definir la ruta de acceso al objeto que desea crear, ver o administrar. Las carpetas, las subcarpetas y los objetos que se puede acceder son definidas por el modelo SMO incluye en SQL Server 2008 (Más información AQUI).
Cuando se utiliza el Explorador de objetos en el SSMS para iniciar una sesión de PowerShell de SQL Server, la ruta se establece en el objeto desde el que comenzó la sesión, como se muestra en las figuras siguientes:
image
image

La ruta SQL Server PowerShell comienza con la unidad, seguida de una de las tres carpetas compatibles. Para la carpeta de SQL, el nombre del servidor y el nombre de la instancia siguen a la carpeta.
Si usted se está refiriendo a la instancia predeterminada, debe especificar la palabra DEFAULT. Después de que el nombre de la instancia, la ruta alterna entre el tipo de objeto y el nombre del objeto al que se refieren
Por ejemplo, PS SQLSERVER:\SQL\MAGC\DEFAULT+sa\Databases\AdventureWorks2008\Tables\Person.Contact se refiere a la tabla de Contact en el esquema Person en la base de datos AdventureWorks2008 en la instancia predeterminada de un servidor llamado MAGC.


Usando SQL Server PowerShell para enumerar los objetos
Una vez que se establece la ruta al objeto correcto, usted puede enumerar los elementos secundarios, mover elementos, cambiar el nombre, y realizar muchas otras acciones también. Cmdlets de PowerShell puede ser referida con su nombre completo o con cualquiera de una serie de alias. Una lista de los cmdlets, sus funciones, y sus alias implementado en SQL Server 2008 son los siguientes:
  • Get-Location: Devuelve el nombre del nodo actual. Alias: gl, pwd
     image
  • Set-Location: Cambios en el nodo actual. Alias: sl, cd, chdir.
    image
  • Get-ChildItem: Las listas de los objetos almacenados en el nodo actual. Alias: GCI, dir, ls.
    image
  • Get-Item: Devuelve las propiedades del elemento actual. Alias: gu.
    Move-Item: Mueve un elemento. Alias: mi, move, mv.
  • Rename-Item: Renombra un objeto. Alias: rni, rn, ren,
    Antes:
    image
    Como cambie el nombre:
    image
    Después
     image
  • Remove-Item: Elimina un objeto. Alias: ri, del, rd, rm, rmdir.
El uso de alias: Aunque por lo general es más fácil de usar alias cuando se trabaja de forma interactiva, utilizando el nombre completo del cmdlet hará scripts almacenados más fáciles de leer y mantener.
Cuando se trabaja de forma interactiva en la sesión de PowerShell de SQL Server, puede utilizar los siguientes consejos:
  • Use las teclas de flecha arriba y abajo para desplazarse por los comandos que se han ejecutado anteriormente.
  • Utilice las teclas de flecha izquierda y derecha para desplazarse y editar un comando que ha sido devuelto con las teclas de flecha arriba y abajo, o uno que acaba de escribir.
  • Usar los alias para minimizar escribir.
  • Utilice la ruta completa o relativa en función de los caminos actual y el deseado,como se muestra en los siguientes ejemplos:
    • Si su ruta actual es SQLSERVER:\SQL\MAGC\DEFAULT\ Databases\AdventureWorks2008\Tablas\Person.Address y que desea mover a la subcarpeta Tablas directamente sobre la ruta actual, puede escribir cd .. para subir un nivel en el camino.
      image
    • Si su ruta actual es SQLSERVER:\SQL\MAGC\DEFAULT\ Databases\AdventureWorks2008\Tablas\Person.Address y se desea mover a la carpeta de Directiva de SQL (SQLPolicy), la opción más sencilla es probablemente escribir cd \SQLPolicy
      image
  • Use cls para limpiar la pantalla para que su conjunto de resultados más fáciles de leer.
  • Use el parámetro -force para ver los objetos del sistema, tales como el esquema de sistema y los objetos en él.
  • Utilice auto relleno al escribir una ruta parcial o nombre de cmdlet y pulsar la tecla Tab para recibir una lista de objetos cuyos nombres coincidan con lo que ha escrito.
Los cmdlets Adicionales de SQL Server PowerShell
Además de los cmdlets mencionados anteriormente, el proveedor de SQL Server PowerShell incluye otros elementos de construcción en cmdlets para proporcionar una mayor funcionalidad. Los siguientes cmdlets podría ser beneficioso para los desarrolladores:
  • Get-Help: Proporciona información de ayuda sobre cada cmdlet. El-Full parámetro proporciona la ayuda técnica completa, incluyendo las muestras. La imagen siguiente muestra los resultados de la pantalla de ayuda para el cmdlet Invoke-Sqlcmd.
    image 
  • Invoke-Sqlcmd: Ejecuta un script Transact-SQL (T-SQL) o XQuery. (En la imagen muestro la ejecución de la consulta “Select top 5 pc.FirstName, pc.LastName, pc.EmailAddress from Person.Contact pc” y vemos los resultados en pantalla)
    image
  • Encode-SqlName: Codifica un identificador de SQL Server (nombre del objeto) para reformatear los caracteres no admitidos por el lenguaje de PowerShell de SQL Server.
  • Decode-SqlName: Devuelve el identificador original de SQL cuando se les da un identificador codificado SQL
  • Convert-UrnToPath: Convierte un SMO Uniform Resource Name (URN) a una ruta utilizada por SQL Server PowerShell. Tanto la ruta como URN contienen la misma información, pero el formato es diferente. (Más información AQUI)
Uso de SQL Server PowerShell-Ejemplos
Los siguientes ejemplos se proporcionan para ayudar a que se familiarice con algunos de los cmdlets y las opciones disponibles cuando se utiliza SQL Server PowerShell de SQL Server 2008. 
Este primer ejemplo se utiliza la opción Get-Item y la evalúa y muestra el estado actual de la política de SQL Server modo de conexión en un servidor llamado MIAMI.Esta política es una de las mejores prácticas de políticas incluye con SQL Server 2008, que se puede importar en las políticas de su servidor. Si su servidor está configurado para sólo la autenticación integrada, el resultado devuelto es True. Si la configuración de seguridad permitirá ambas SQL y los inicios de sesión de Windows integrada, el resultado devuelto es falso, como se muestra en la siguiente figura.
image
La segunda muestra, en la figura se muestra la lista de subcarpetas disponibles en la instancia predeterminada en el servidor de MAGC en la carpeta SQL. Observe que el ejemplo se utiliza el alias de ls en lugar de detallar la completa cmdletGet-ChildItem.
image
El último ejemplo, en la figura muestra el uso del cmdlet Get-ChildItem para listar los parámetros definidos en el procedimiento almacenado HumanResources.uspUpdateEmployeeLogin en la base de datos AdventureWorks2008 en la instancia predeterminada del servidor de MAGC.
image


Resumen de la lección
  • SQL Server PowerShell es un shell de línea de comandos y el entorno de programación basado en Windows PowerShell.
  • SQL Server PowerShell utiliza una jerarquía para representar cómo los objetos están relacionados unos con otros.
  • Las tres carpetas que existen en el proveedor de PowerShell de SQL Server son SQLSERVER:\SQL, SQLSERVER:\SQLPolicy, y SQLSERVER\SQLRegistration.
  • Puede navegar por la jerarquía mediante el uso de cualquiera de los nombres de cmdlet o sus alias.

No hay comentarios:

Publicar un comentario