sql >> Base de Datos >  >> RDS >> Database

Métodos de automatización de Azure

Durante el año pasado, presenté muchas sesiones sobre Azure SQL Database y escribí numerosos artículos y blogs. A menudo me preguntan si el mantenimiento de la base de datos sigue siendo un factor importante al usar Azure SQL Database. Sí, tareas como el mantenimiento de índices, las actualizaciones de estadísticas y la verificación de consistencia siguen siendo importantes y depende del DBA programar estas tareas. La confusión se debe a que Azure SQL Database es una plataforma como servicio y Microsoft es responsable de la infraestructura y del manejo de las copias de seguridad. Si bien algunos aspectos de la corrupción física pueden tenerse en cuenta, la corrupción lógica dentro de la base de datos no lo es. Por ese motivo, sigo recomendando a los clientes que ejecuten DBCC CHECKDB para garantizar que estén totalmente protegidos.

El problema que surge con cualquier DBA nuevo que trabaje con Azure SQL Database es que no hay un Agente SQL Server integrado como al que estamos acostumbrados con las ediciones Standard y Enterprise de SQL Server.

Para programar trabajos de mantenimiento en una base de datos SQL de Azure, tiene varias opciones:

  • Servidores vinculados
  • Planes de mantenimiento de bases de datos
  • Powershell
  • Servicios de Azure
  • Trabajos elásticos

Las siguientes demostraciones asumen que ya configuró cuentas de inicio de sesión, reglas de firewall y otras configuraciones de seguridad para acceder de forma remota a sus bases de datos Azure SQL.

Servidores vinculados

Conectarse a una base de datos SQL de Azure mediante un servidor vinculado es un enfoque muy común, ya que la mayoría de los administradores de bases de datos ya están familiarizados con la creación y administración de servidores vinculados. Las dos formas más comunes en las que he visto clientes que usan servidores vinculados son con SQL Server Native Client o Microsoft OLE DB Provider para controladores ODBC como proveedor. Si usa el cliente nativo, deberá proporcionar el nombre del servidor como fuente de datos; sin embargo, si usa el controlador ODBC, deberá obtener la cadena de conexión y usarla como la cadena del proveedor. Ambos valores se pueden encontrar en Azure Portal para su base de datos. Una vez que haga clic en su base de datos, verá el nombre del servidor y una opción para mostrar las cadenas de conexión de la base de datos. Este nombre de servidor, sqlperformance.database.windows.net es lo que usaría para la fuente de datos de SQL Server Native Client.

Cuando hace clic en "Mostrar cadenas de conexión de la base de datos", actualmente tiene opciones para ADO.NET, JDBC, ODBC y PHP. Para ver la cadena de conexión para ODBC, haga clic en la pestaña ODBC.

A continuación, deberá crear el servidor vinculado en SSMS. En "Objetos del servidor", haga clic con el botón derecho en "Servidores vinculados", seleccione "Nuevo servidor vinculado" e ingrese la información requerida según su elección de proveedor de origen de datos.

A continuación, haga clic en "Seguridad" y defina sus preferencias. Por lo general, veo la opción "Hacerse usando este contexto de seguridad" con un inicio de sesión remoto y una contraseña proporcionada.

Una vez que tenga todo esto definido, haga clic en Aceptar. Ahora puede hacer clic derecho en su nuevo servidor vinculado y probar la conexión.

Ahora puede hacer referencia al servidor vinculado para llamar a cualquier procedimiento almacenado, como Index Optimize y DatabaseIntegrityCheck de Ola Hallengren directamente contra Azure SQL Database en un paso de trabajo del Agente SQL.

Planes de mantenimiento de bases de datos

Si planea usar un plan de mantenimiento de base de datos para su mantenimiento, el proceso es un poco más fácil. Para comenzar, simplemente cree su plan de mantenimiento manualmente o con el asistente. Si usa el asistente, una vez que cree el plan de mantenimiento, puede editar el plan y luego agregar la conexión de Azure. Luego cambia cada tarea para usar la nueva conexión. Su pantalla de conexión debería ser similar a la siguiente:

Ahora puede programar los planes de mantenimiento de su base de datos para que se ejecuten durante su ventana de mantenimiento.

PowerShell

PowerShell es una excelente opción para trabajar con tareas repetibles y usar PowerShell con Azure SQL Database es sencillo. Puede usar la función Invoke-SqlCmd para consultar o ejecutar declaraciones en sus bases de datos.

Un enfoque común es usar un script similar a:

  $params = @{
   'Database' = 'YourDatabase'
   'ServerInstance' = 'instance.database.windows.net'
   'Username' = 'UserName'
   'Password' = 'ComplexP@$$word'
   'Query' = 'Your Query Here'
  }
  Invoke-Sqlcmd @params

Para su consulta, puede utilizar la optimización del índice y las comprobaciones de consistencia de Ola Hallengren, o cualquier script personalizado que haya estado utilizando. A continuación, deberá programar sus scripts de PowerShell con el programador que utilice para su organización.

Servicios de Azure

Azure Automation está integrado en la plataforma Azure y, para comenzar, debe crear una cuenta de automatización. Deberá proporcionar un nombre para la cuenta, seleccionar su suscripción, grupo de recursos, ubicación y determinar si desea crear una cuenta Azure Run As.

Una vez que cree su cuenta, puede comenzar a crear runbooks. Puede hacer casi cualquier cosa con los runbooks. Hay numerosos libros de ejecución existentes que puede examinar y modificar para su propio uso, incluidos el aprovisionamiento, la supervisión, la gestión del ciclo de vida y más.

Puede crear los runbooks sin conexión o con Azure Portal, y se compilan con PowerShell. En este ejemplo, reutilizaremos el código de la demostración de PowerShell y también demostraremos cómo podemos usar el programador de servicios de Azure integrado para ejecutar nuestro código de PowerShell existente y no tener que depender de un programador local, un programador de tareas o una máquina virtual de Azure. para programar un trabajo.

Comience haciendo clic en Runbooks

A continuación, haga clic en "Agregar un runbook"

Haga clic en "Crear un nuevo runbook"

Proporcione un nombre y un tipo de runbook, seleccioné PowerShell para mi demostración.

Entonces se encuentra en una pantalla de edición para su nuevo runbook. Aquí es donde puede configurar los detalles y crear su runbook. Para esta demostración, solo estoy ejecutando un script de PowerShell para llamar a un procedimiento almacenado en una base de datos. Una vez que haya resuelto todo su código, puede publicar y guardar su runbook.

Desde aquí, puede iniciar el runbook y validar que todo funcione en consecuencia, así como programar el runbook para que se ejecute en momentos específicos. Avancemos este proceso haciendo clic en "Programar"

Tendremos que hacer clic en "Vincular un cronograma a su runbook" y, como no hemos creado ningún cronograma antes, debemos definir uno nuevo haciendo clic en "Crear un nuevo cronograma".

Al igual que hacemos en el Agente SQL Server, proporcione un nombre de programa, una descripción si lo desea, cuándo comenzar y con qué frecuencia debe ejecutarse. Configuré que este ocurra todos los días a las 2 a. m.

Ahora tengo un runbook publicado, programado para ejecutarse todas las noches a las 2 a. m. para realizar el mantenimiento del índice en una de mis bases de datos.

Trabajos elásticos

Elastic Jobs todavía está en versión preliminar, por lo que no entraré en detalles debido a la alta probabilidad de que cambien las pantallas y la funcionalidad.

El uso de Elastic Jobs requiere que haya definido un grupo de bases de datos elásticas y asigne al menos una base de datos al grupo para ejecutar trabajos. Una vez que haya creado el grupo elástico y haya agregado una base de datos, puede hacer clic en crear trabajo.

Asigne a su trabajo un nombre descriptivo y proporcione el nombre de usuario y la contraseña para conectarse a las bases de datos, así como el script que le gustaría ejecutar. Haga clic en guardar y ahora tiene un trabajo elástico.

A continuación, puede optar por ejecutar el trabajo, ver el script o cancelar el trabajo si se está ejecutando.

Si bien hay ciertas cosas que puede hacer a través de Azure Portal con los trabajos elásticos, las opciones reales de potencia y configuración están disponibles a través de la API de PowerShell. Para programar un trabajo, debe usar el cmdlet New-AzureSQLJobSchedule. Puede encontrar más detalles sobre las funciones adicionales y cómo programar trabajos aquí:

  • Cree y administre trabajos elásticos de SQL Database mediante PowerShell

En general, me gusta la característica de trabajos elásticos y espero que cuando esté disponible de forma general, se integren más funciones en Azure Portal sin tener que administrarlo con PowerShell. Me gusta que pueda ejecutar T-SQL directamente, sin tener que ejecutarlo dentro de PowerShell y cómo puede ejecutarse en todas las bases de datos del grupo.

Resumen

Cuando se trata de bases de datos SQL de Azure, sí, sigue siendo responsable de cierto mantenimiento de sus bases de datos. Tiene numerosos métodos para programar trabajos y, según sus necesidades y el tamaño de su entorno, ciertas opciones son mejores soluciones. Los servidores vinculados y los planes de mantenimiento de la base de datos son métodos rápidos y sencillos si tiene máquinas virtuales locales o de Azure con el servidor SQL ya configurado y una pequeña implementación de Azure. PowerShell siempre es una buena opción, solo tiene que encontrar una solución para programar la ejecución de los scripts. La automatización de Azure es una solución muy robusta que le permite crear runbooks para lograr casi cualquier cosa y programar fácilmente los runbooks y los trabajos elásticos es otra excelente solución basada en Azure si tiene tareas que necesita ejecutar en un grupo de bases de datos en un grupo elástico.