Database
 sql >> Base de données >  >> RDS >> Database

Méthodes d'automatisation Azure

Au cours de l'année écoulée, j'ai présenté de nombreuses sessions sur Azure SQL Database et rédigé de nombreux articles et blogs. On me demande souvent si la maintenance de la base de données est toujours un facteur important lors de l'utilisation d'Azure SQL Database. Oui - les tâches telles que la maintenance des index, les mises à jour des statistiques et la vérification de la cohérence sont toujours importantes, et c'est au DBA de planifier ces tâches. La confusion provient du fait qu'Azure SQL Database est une plate-forme en tant que service et que Microsoft est responsable de l'infrastructure ainsi que de la gestion des sauvegardes. Bien que certains aspects de la corruption physique puissent être pris en compte, la corruption logique au sein de la base de données ne l'est pas. Pour cette raison, je recommande toujours aux clients d'exécuter DBCC CHECKDB pour s'assurer qu'ils sont entièrement protégés.

Le problème qui se pose avec tout nouvel administrateur de base de données fonctionnant avec Azure SQL Database est qu'il n'y a pas d'agent SQL Server intégré comme nous en avons l'habitude avec les éditions SQL Server Standard et Enterprise.

Pour planifier des tâches de maintenance sur une base de données SQL Azure, vous disposez de plusieurs options :

  • Serveurs liés
  • Plans de maintenance de la base de données
  • Powershell
  • Services Azure
  • Tâches élastiques

Les démos suivantes supposent que vous avez déjà configuré des comptes de connexion, des règles de pare-feu et d'autres paramètres de sécurité pour accéder à distance à vos bases de données SQL Azure.

Serveurs liés

La connexion à une base de données SQL Azure à l'aide d'un serveur lié est une approche très courante, car la plupart des administrateurs de base de données sont déjà familiarisés avec la création et la gestion de serveurs liés. Les deux façons les plus courantes dont j'ai vu des clients utiliser des serveurs liés sont soit le client natif SQL Server, soit le fournisseur Microsoft OLE DB pour les pilotes ODBC en tant que fournisseur. Si vous utilisez le client natif, vous devrez fournir le nom du serveur comme source de données ; Cependant, si vous utilisez le pilote ODBC, vous devrez obtenir la chaîne de connexion et l'utiliser comme chaîne de fournisseur. Ces deux valeurs se trouvent dans le portail Azure de votre base de données. Une fois que vous avez cliqué sur votre base de données, vous verrez le nom du serveur et une option pour afficher les chaînes de connexion à la base de données. Ce nom de serveur, sqlperformance.database.windows.net, est ce que j'utiliserais pour la source de données SQL Server Native Client.

Lorsque vous cliquez sur "Afficher les chaînes de connexion à la base de données", vous avez actuellement des options pour ADO.NET, JDBC, ODBC et PHP. Pour voir la chaîne de connexion pour ODBC, cliquez sur l'onglet ODBC.

Ensuite, vous devrez créer le serveur lié dans SSMS. Sous « Objets serveur », faites un clic droit sur « Serveurs liés », sélectionnez « Nouveau serveur lié » et saisissez les informations requises en fonction de votre choix de fournisseur de source de données.

Cliquez ensuite sur « Sécurité » et définissez vos préférences. Généralement, je vois l'option "Être créé en utilisant ce contexte de sécurité" avec un identifiant et un mot de passe à distance fournis.

Une fois que vous avez tout défini, cliquez sur OK. Vous pouvez maintenant faire un clic droit sur votre nouveau serveur lié et tester la connexion.

Vous pouvez désormais référencer le serveur lié pour appeler n'importe quelle procédure stockée, telle que Index Optimize et DatabaseIntegrityCheck d'Ola Hallengren directement sur la base de données Azure SQL dans une étape de travail de l'agent SQL.

Plans de maintenance de la base de données

Si vous envisagez d'utiliser un plan de maintenance de base de données pour votre maintenance, le processus est un peu plus simple. Pour commencer, créez simplement votre plan de maintenance manuellement ou à l'aide de l'assistant. Si vous utilisez l'assistant, une fois que vous avez créé le plan de maintenance, vous pouvez modifier le plan, puis ajouter la connexion Azure. Vous modifiez ensuite chaque tâche pour utiliser la nouvelle connexion. Votre écran de connexion devrait ressembler à ce qui suit :

Vous pouvez désormais planifier l'exécution de vos plans de maintenance de base de données pendant votre fenêtre de maintenance.

PowerShell

PowerShell est une excellente option pour travailler avec des tâches répétables et l'utilisation de PowerShell avec Azure SQL Database est simple. Vous pouvez utiliser la fonction Invoke-SqlCmd pour interroger ou exécuter des instructions sur vos bases de données.

Une approche courante consiste à utiliser un script similaire à :

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

Pour votre requête, vous pouvez utiliser l'optimisation d'index et les vérifications de cohérence d'Ola Hallengren, ou tout script personnalisé que vous avez utilisé. Vous devrez ensuite planifier vos scripts PowerShell à l'aide du planificateur que vous utilisez pour votre organisation.

Services Azure

Azure Automation est intégré à la plate-forme Azure et pour commencer, vous devez créer un compte d'automatisation. Vous devrez fournir un nom pour le compte, sélectionner votre abonnement, votre groupe de ressources, votre emplacement et déterminer si vous souhaitez créer un compte Azure Run As.

Une fois que vous avez créé votre compte, vous pouvez alors commencer à créer des runbooks. Vous pouvez faire à peu près n'importe quoi avec les runbooks. Il existe de nombreux runbooks existants que vous pouvez parcourir et modifier pour votre propre usage, y compris le provisionnement, la surveillance, la gestion du cycle de vie, etc.

Vous pouvez créer les runbooks hors ligne ou à l'aide du portail Azure, et ils sont créés à l'aide de PowerShell. Dans cet exemple, nous allons réutiliser le code de la démo PowerShell et démontrer également comment nous pouvons utiliser le planificateur de service Azure intégré pour exécuter notre code PowerShell existant et ne pas avoir à compter sur un planificateur local, un planificateur de tâches ou une machine virtuelle Azure. pour planifier une tâche.

Commencez par cliquer sur Runbooks

Cliquez ensuite sur "Ajouter un runbook"

Cliquez sur "Créer un nouveau runbook"

Fournissez un nom et un type de runbook, j'ai sélectionné PowerShell pour ma démo.

Vous êtes alors dans un écran d'édition pour votre nouveau runbook. C'est ici que vous pouvez configurer les détails et créer votre runbook. Pour cette démo, j'exécute simplement un script PowerShell pour appeler une procédure stockée sur une base de données. Une fois que vous avez élaboré tout votre code, vous pouvez publier et enregistrer votre runbook.

À partir de là, vous pouvez démarrer le runbook et valider que tout fonctionne en conséquence, ainsi que planifier l'exécution du runbook à des heures précises. Passons en revue ce processus en cliquant sur "Planifier"

Nous devrons cliquer sur "Lier un planning à votre runbook" et puisque nous n'avons pas créé de plannings auparavant, nous devrons en définir un nouveau en cliquant sur "Créer un nouveau planning".

Tout comme nous le faisons dans SQL Server Agent, fournissez un nom de planification, une description si vous le souhaitez, quand démarrer et à quelle fréquence il doit s'exécuter. J'ai configuré celui-ci tous les jours à 2 heures du matin.

J'ai maintenant un runbook publié, programmé pour s'exécuter chaque nuit à 2h du matin pour effectuer la maintenance de l'index sur l'une de mes bases de données.

Tâches élastiques

Elastic Jobs est toujours en préversion, je n'entrerai donc pas dans les détails en raison de la forte probabilité que les écrans et les fonctionnalités changent.

L'utilisation de travaux élastiques nécessite que vous ayez défini un pool de bases de données élastiques et affecté au moins une base de données au pool pour exécuter les travaux. Une fois que vous avez créé le pool élastique et ajouté une base de données, vous pouvez ensuite cliquer sur créer une tâche.

Donnez à votre travail un nom descriptif et indiquez le nom d'utilisateur et le mot de passe avec lesquels vous connecter aux bases de données, ainsi que le script que vous souhaitez exécuter. Cliquez sur Enregistrer et vous avez maintenant un travail élastique.

Vous pouvez ensuite choisir d'exécuter la tâche, d'afficher le script ou d'annuler la tâche si elle est en cours d'exécution.

Bien qu'il y ait certaines choses que vous pouvez faire via le portail Azure avec les tâches élastiques, les véritables options de puissance et de configuration sont disponibles via l'API PowerShell. Pour planifier une tâche, vous devez utiliser l'applet de commande New-AzureSQLJobSchedule. Vous trouverez plus de détails sur les fonctionnalités supplémentaires et sur la planification des tâches ici :

  • Créer et gérer des tâches élastiques SQL Database à l'aide de PowerShell

Dans l'ensemble, j'aime la fonctionnalité de tâches élastiques et j'espère que lorsqu'elle sera généralement disponible, davantage de fonctionnalités seront intégrées au portail Azure sans avoir à la gérer avec PowerShell. J'aime le fait que vous puissiez exécuter T-SQL directement, sans avoir à l'exécuter dans PowerShell et comment il peut s'exécuter sur toutes les bases de données du pool.

Résumé

En ce qui concerne Azure SQL Databases, oui, vous êtes toujours responsable de certaines opérations de maintenance sur vos bases de données. Vous disposez de nombreuses méthodes de planification des tâches et, selon vos besoins et la taille de votre environnement, certaines options constituent de meilleures solutions. Les serveurs liés et les plans de maintenance de base de données sont des méthodes simples et rapides si vous avez des machines virtuelles sur site ou Azure avec un serveur SQL déjà configuré, et un petit déploiement Azure. PowerShell est toujours une bonne option, il vous suffit de trouver une solution pour planifier l'exécution des scripts. L'automatisation Azure est une solution très robuste qui vous permet de créer des runbooks pour accomplir à peu près n'importe quoi et de planifier facilement les runbooks et les travaux élastiques est une autre excellente solution basée sur Azure si vous avez des tâches que vous devez exécuter sur un groupe de bases de données dans un pool élastique.