{"id":9285,"date":"2018-08-13T07:49:56","date_gmt":"2018-08-13T10:49:56","guid":{"rendered":"http:\/\/www.fabriciolima.net\/?p=9285"},"modified":"2018-08-13T08:00:12","modified_gmt":"2018-08-13T11:00:12","slug":"azure-sql-database-como-criar-um-job-para-executar-uma-procedure","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2018\/08\/13\/azure-sql-database-como-criar-um-job-para-executar-uma-procedure\/","title":{"rendered":"Azure SQL Database &#8211; Como criar um Job para executar uma procedure?"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" width=\"591\" height=\"354\" class=\"size-full wp-image-9316 aligncenter\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSerie04.png\" alt=\"\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSerie04.png 591w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSerie04-300x180.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSerie04-410x246.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSerie04-100x60.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSerie04-275x165.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSerie04-20x12.png 20w\" sizes=\"auto, (max-width: 591px) 100vw, 591px\" \/><\/p>\n<p>Fala Pessoal,<\/p>\n<p>Continuando a s\u00e9rie de posts sobre <strong>Azure SQL Database<\/strong>, dessa vez vou resolver um problema que muitos de voc\u00eas que j\u00e1 est\u00e3o trabalhando com o Azure SQL devem ter passado.<\/p>\n<p><strong>Fabr\u00edcio, o Azure SQL Database n\u00e3o tem um Agent????<\/strong><\/p>\n<p>Como que vou rodar meus Jobs de Desfragmenta\u00e7\u00e3o de \u00cdndices, Atualiza\u00e7\u00e3o de Estat\u00edsticas, CheckDB e procedures agendadas dos sistemas da minha empresa???<\/p>\n<p>Help-me!!!<\/p>\n<p>Pois \u00e9&#8230;<\/p>\n<p>Quem j\u00e1 brincou um pouco com o SQL Azure Database sabe que agendar uma execu\u00e7\u00e3o de uma procedure n\u00e3o \u00e9 uma tarefa t\u00e3o f\u00e1cil como \u00e9 em uma inst\u00e2ncia do SQL Server.<\/p>\n<p><strong>Bot\u00e3o direito-&gt;New Job<\/strong> n\u00e3o existe no Azure SQL Database&#8230;.\u00a0 =(<\/p>\n<p>Pesquisei sobre o assunto e n\u00e3o consegui achar nenhum passo a passo simples. At\u00e9 pedi para alguns brothers que j\u00e1 tinham mais experi\u00eancia com Azure para publicar algo sobre isso que eu n\u00e3o encontrava nada em portugu\u00eas, mas na correria do dia a dia n\u00e3o conseguiram fazer.<\/p>\n<p>Como estou trabalhando em um projeto de migra\u00e7\u00e3o de um ambiente para o Azure SQL Database, um dos desenvolvedores dessa empresa (<a href=\"https:\/\/www.linkedin.com\/in\/matheus-felix\/\" target=\"_blank\" rel=\"noopener\">Matheus Felix<\/a>) j\u00e1 tinha agendado algumas procedures e me explicou uma das formas de fazer isso. Obrigado pela ajuda Matheus!!!<\/p>\n<p>Dito isso, vamos a um passo a passo de como agendar uma procedure para executar em um Job no Azure SQL Database.<\/p>\n<p>Antes de come\u00e7ar a criar o job, criei <strong>duas tabelas<\/strong> e <strong>duas procedures<\/strong> em uma database chamada <strong>Database02<\/strong> que tenho no azure.<\/p>\n<p>Quando os 2 jobs que vamos criar rodarem, eles v\u00e3o fazer um simples insert nessas tabelas.<\/p>\n<pre class=\"lang:tsql decode:true\">CREATE TABLE Teste_Execucao_Job_1 ( Dt_Log DATETIME, Ds_Obs VARCHAR(100) )\r\nCREATE table Teste_Execucao_Job_2 ( Dt_Log DATETIME, Ds_Obs VARCHAR(100) )\r\nGO\r\nCREATE procedure dbo.stpTeste_Execucao_Job_1\r\nas\r\ninsert into Teste_Execucao_Job_1(Dt_Log,Ds_Obs)\r\nselect SYSDATETIMEOFFSET() AT TIME ZONE 'E. South America Standard Time','Aeeeeee!!!!!! Consegui criar um job no azure!!!!! At\u00e9 que enfim!!!!'\r\nGO\r\nCREATE procedure dbo.stpTeste_Execucao_Job_2\r\nas\r\ninsert into Teste_Execucao_Job_2(Dt_Log,Ds_Obs)\r\nselect SYSDATETIMEOFFSET() AT TIME ZONE 'E. South America Standard Time','Aeeeeee!!!!!! Funcionou de novo!!!!! Agora ningu\u00e9m me segura !!!!'<\/pre>\n<p>Passo a passo para criar um Job no Azure SQL Database utilizando <strong>runbook<\/strong>:<\/p>\n<h5><strong>1) Criar um servi\u00e7o de Automa\u00e7\u00e3o<\/strong><\/h5>\n<p>Clique em Create a resource -&gt; Procure por &#8220;Automation&#8221; -&gt; Clique em Automation -&gt; Create<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9303\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation01.png\" alt=\"\" width=\"797\" height=\"166\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation01.png 1737w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation01-300x62.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation01-1024x213.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation01-768x160.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation01-1536x319.png 1536w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation01-700x145.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation01-410x85.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation01-100x21.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation01-275x57.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation01-20x4.png 20w\" sizes=\"auto, (max-width: 797px) 100vw, 797px\" \/><\/p>\n<p>Escolha um nome -&gt; Coloque a Subscription -&gt; Crie ou use um Resource Group j\u00e1 existente -&gt; Escolha a Localiza\u00e7\u00e3o -&gt; Create<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9302\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation02.png\" alt=\"\" width=\"280\" height=\"586\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation02.png 407w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation02-143x300.png 143w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation02-100x209.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation02-275x575.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation02-10x20.png 10w\" sizes=\"auto, (max-width: 280px) 100vw, 280px\" \/><\/p>\n<p>Aguarde o Deploy concluir.<\/p>\n<p>Com o deploy conclu\u00eddo, visualize o servi\u00e7o de automa\u00e7\u00e3o que acabamos de criar.<\/p>\n<p>Repare que tem uma op\u00e7\u00e3o chamada <strong>Runbooks<\/strong>. \u00c9 ali que vamos clicar no pr\u00f3ximo passo.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9301\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation03.png\" alt=\"\" width=\"1043\" height=\"603\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation03.png 1488w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation03-300x174.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation03-1024x593.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation03-768x444.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation03-700x405.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation03-410x237.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation03-100x58.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation03-275x159.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation03-20x12.png 20w\" sizes=\"auto, (max-width: 1043px) 100vw, 1043px\" \/><\/p>\n<h5>2) Criar um Runbook para executar nossa procedure<\/h5>\n<p>Clique em Runbook (conforme foto anterior) -&gt; Clique em Add a runbook -&gt; Create a new runbook -&gt; Escolha um nome para o seu Runbook -&gt; Em Runbook type coloque PowerShell -&gt; Descri\u00e7\u00e3o -&gt; Create<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9300\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook01.png\" alt=\"\" width=\"520\" height=\"551\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook01.png 785w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook01-283x300.png 283w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook01-768x814.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook01-700x742.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook01-410x435.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook01-100x106.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook01-275x291.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook01-20x20.png 20w\" sizes=\"auto, (max-width: 520px) 100vw, 520px\" \/><\/p>\n<p>Em seguida voc\u00ea vai ter que pegar esse Script PowerShell abaixo e realizar as altera\u00e7\u00f5es para os dados da sua base de dados no Azure SQL Database:<\/p>\n<ul>\n<li>Seu servidor no Azure:\u00a0&#8216;srvfabriciolimasolucoes.database.windows.net&#8217;<\/li>\n<li>Sua base no Azure:\u00a0&#8216;database02&#8217;<\/li>\n<li>Seu usu\u00e1rio para conectar na base: &#8216;Seu_Usuario&#8217;<\/li>\n<li>Senha desse usu\u00e1rio:\u00a0&#8216;XXXX&#8217;<\/li>\n<li>Alterar tamb\u00e9m essa parte da Connection Scring: &#8220;User ID=Seu_Usuario;Password=XXXX&#8221;<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<pre class=\"lang:tsql decode:true\">write-output \"Ser\u00e1 que o meu Job no Azure vai funcionar?\"\r\n\r\n$SQLInstaciaAzure = 'srvfabriciolimasolucoes.database.windows.net'\r\n$SQLDatabase = 'database02'\r\n$SQLUser = 'Seu_Usuario'\r\n$SQLPassword = 'XXXX'\r\n$SQLConnection = New-Object System.Data.SqlClient.SqlConnection\r\n$SQLConnection.ConnectionString = \"Server=tcp:$SQLInstaciaAzure,1433;Initial Catalog=$SQLDatabase;Persist Security Info=False;User ID=Seu_Usuario;Password=XXXX;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Pooling=false\"\r\n\r\n$SQLQuery = \"dbo.stpTeste_Execucao_Job_1\"\r\nwrite-output $SQLQuery\r\n$SQLCmd = New-Object System.Data.SqlClient.SqlCommand($SQLQuery,$SQLConnection)\r\n$SQLConnection.Open()\r\n$SQLCmd.CommandTimeout = '0'\r\n$SQLCmd.ExecuteScalar()\r\n$SQLConnection.Close()\r\n\r\nwrite-output \"Aeeee!!!! Cheguei no final do job!!!!\"\r\n<\/pre>\n<p>Com o script alterado para a sua realidade, copie o c\u00f3digo para RUNBOOKS conforme a foto abaixo:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9299\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook02.png\" alt=\"\" width=\"919\" height=\"404\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook02.png 1308w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook02-300x132.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook02-1024x450.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook02-768x338.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook02-700x308.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook02-410x180.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook02-100x44.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook02-275x121.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook02-20x9.png 20w\" sizes=\"auto, (max-width: 919px) 100vw, 919px\" \/><\/p>\n<p>Voc\u00ea tamb\u00e9m pode testar o <strong>Runbook<\/strong> clicanto em <strong>Test Pane -&gt; Start<\/strong> -&gt; Se tudo der certo no teste, a tabela j\u00e1 ter\u00e1 uma linha nesse momento.<\/p>\n<p>Vou deixar para mostrar o print dos inserts realizados pelos agendamentos no final desse post.<\/p>\n<p>Saia da tela de teste e volte para a tela anterior clicando em <strong>&#8220;Edit PowerShell RunBook&#8221;<\/strong> no caminho no alto da tela.<\/p>\n<p>Para concluir o <strong>Runbook<\/strong>, Clique em Save-&gt; Clique em Publish-&gt; Aperte YES<\/p>\n<p>Segue abaixo como ficou nosso RunBook:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9298\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook03.png\" alt=\"\" width=\"999\" height=\"541\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook03.png 1455w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook03-300x162.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook03-1024x555.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook03-768x416.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook03-700x379.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook03-410x222.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook03-100x54.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook03-275x149.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook03-20x11.png 20w\" sizes=\"auto, (max-width: 999px) 100vw, 999px\" \/><\/p>\n<h5>3) Criar o Scheduler para executar nosso RunBook<\/h5>\n<p>Clique no <strong>Runbook<\/strong> que acabamos de criar -&gt; Clique em Schedule -&gt; Link a schedule to your runbook -&gt; Create a new schedule -&gt; Coloque um nome no agendamento -&gt; Escreva uma descri\u00e7\u00e3o -&gt; Escolha a data e hor\u00e1rio inicial do job -&gt; Clique em Recurring para que o job se repita -&gt; Selecione Hour, Day, Week or Month<\/p>\n<p>Como voc\u00ea pode perceber, o menor intervalo que vamos conseguir agendar nosso job ser\u00e1 a cada 1 hora.<\/p>\n<p><strong>Mas Fabr\u00edcio, como coloco um job para rodar a cada 15 minutos?<\/strong><\/p>\n<p>Ai podemos fazer um jeitinho brasileiro e criar 4 schedulers (minuto 00, minuto 15, minuto 30 e minuto 45).<\/p>\n<p><strong>E se precisar de um job a cada 1 minuto?<\/strong><\/p>\n<p>Resposta no site do Azure: <em>&#8220;Criar um\u00a0<a href=\"https:\/\/docs.microsoft.com\/pt-br\/azure\/automation\/automation-webhooks\" data-linktype=\"relative-path\">webhook<\/a>\u00a0para o runbook e usar o\u00a0<a href=\"https:\/\/docs.microsoft.com\/pt-br\/azure\/scheduler\/scheduler-get-started-portal\" data-linktype=\"relative-path\">Agendador do Azure<\/a>\u00a0para chamar o webhook.\u00a0O Agendador do Azure fornece granularidade mais refinada ao definir uma agenda.&#8221;<\/em><\/p>\n<p><strong>Fonte:<\/strong> <a href=\"https:\/\/docs.microsoft.com\/pt-br\/azure\/automation\/automation-schedules\">https:\/\/docs.microsoft.com\/pt-br\/azure\/automation\/automation-schedules<\/a><\/p>\n<p>Revise as informa\u00e7\u00f5es do agendamento:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9297\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento01.png\" alt=\"\" width=\"831\" height=\"574\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento01.png 1193w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento01-300x207.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento01-1024x706.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento01-768x530.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento01-700x483.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento01-410x283.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento01-100x69.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento01-275x190.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento01-20x14.png 20w\" sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><\/p>\n<p>Clique em Create.<\/p>\n<p>Repita esses passo para criar outros 3 agendamentos para os minutos 15, 30 e 45.<\/p>\n<p>Feito isso teremos 4 agendamentos conforme abaixo:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9296\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento02.png\" alt=\"\" width=\"946\" height=\"539\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento02.png 1429w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento02-300x171.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento02-1024x583.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento02-768x437.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento02-700x399.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento02-410x234.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento02-100x57.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento02-275x157.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAgendamento02-20x11.png 20w\" sizes=\"auto, (max-width: 946px) 100vw, 946px\" \/><\/p>\n<p>Nesse passo 3 n\u00f3s j\u00e1 criamos os agendamentos e associamos para o nosso RunBook.<\/p>\n<p><strong>Mas Fabr\u00edcio, toda vez que criar um job para rodar a cada 15 min vou ter que criar esses 4 agendamentos?<\/strong><\/p>\n<p>N\u00e3o.<\/p>\n<p>Repita o passo 2 para criar um segundo runbook para chamar a procedure <strong>stpTeste_Execucao_Job_2.<\/strong><\/p>\n<p>Veja como fica com o segundo RunBook criado:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9295\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_01.png\" alt=\"\" width=\"855\" height=\"381\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_01.png 1216w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_01-300x134.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_01-1024x456.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_01-768x342.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_01-700x312.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_01-410x183.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_01-100x45.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_01-275x123.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_01-20x9.png 20w\" sizes=\"auto, (max-width: 855px) 100vw, 855px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Clique no Runbook 2 -&gt; Clique em Schedule -&gt; Link a schedule to your runbook -&gt; Escolha um dos agendamentos que criamos para o job anterior -&gt; Clique em ok<\/p>\n<p>Repita isso para todos os schedules para esse segundo Job tamb\u00e9m ficar com 4 agendamentos.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9294\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_02.png\" alt=\"\" width=\"547\" height=\"321\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_02.png 805w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_02-300x176.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_02-768x451.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_02-700x411.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_02-410x241.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_02-100x59.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_02-275x162.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_02-20x12.png 20w\" sizes=\"auto, (max-width: 547px) 100vw, 547px\" \/><\/p>\n<p>Clicando em Schedule desse Runbook 2, conseguimos ver novamente os 4 agendamentos:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9293\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_03.png\" alt=\"\" width=\"1091\" height=\"400\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_03.png 1451w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_03-300x110.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_03-1024x375.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_03-768x282.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_03-700x257.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_03-410x150.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_03-100x37.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_03-275x101.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseRunBook_2_03-20x7.png 20w\" sizes=\"auto, (max-width: 1091px) 100vw, 1091px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Ou seja, n\u00e3o precisamos recriar os agendamentos.\u00a0 \\o\/<\/p>\n<p>Pronto. A cria\u00e7\u00e3o dos nossos 2 jobs foi conclu\u00edda com sucesso.<\/p>\n<p>Agora \u00e9 s\u00f3 aguardar os agendamentos serem executados.<\/p>\n<p>Esse servi\u00e7o de Automa\u00e7\u00e3o de processos tem um <strong>pequeno custo para ser utilizado<\/strong>. Voc\u00ea tem 500 minutos gr\u00e1tis a cada m\u00eas e o que passar disso voc\u00ea paga R$ 0,007\/minuto.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9292\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAutomationCost.png\" alt=\"\" width=\"1080\" height=\"268\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAutomationCost.png 1790w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAutomationCost-300x75.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAutomationCost-1024x255.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAutomationCost-768x191.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAutomationCost-1536x382.png 1536w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAutomationCost-700x174.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAutomationCost-410x102.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAutomationCost-100x25.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAutomationCost-275x68.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseAutomationCost-20x5.png 20w\" sizes=\"auto, (max-width: 1080px) 100vw, 1080px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Se um job de desfragmenta\u00e7\u00e3o de \u00edndice demorar <strong>1 hora<\/strong>\u00a0por dia:<\/p>\n<p>Custo Mensal = 1.800 minutos &#8211; 500 gr\u00e1tis = 1.300* 0,007 = <strong>R$ 9,10 por m\u00eas<\/strong><\/p>\n<p>Um valor bem acess\u00edvel para a empresa de voc\u00eas.<\/p>\n<p><strong>Fonte:<\/strong>\u00a0<a href=\"https:\/\/azure.microsoft.com\/pt-br\/pricing\/details\/automation\/\" target=\"_blank\" rel=\"noopener\">https:\/\/azure.microsoft.com\/pt-br\/pricing\/details\/automation\/<\/a><\/p>\n<p>Esperei quase uma hora para deixar os agendamentos executarem e mostrar os resultados para voc\u00eas.<\/p>\n<p>Ap\u00f3s as execu\u00e7\u00f5es dos Jobs, vamos conferir se temos um INSERT a cada 15 min:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9307\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobInsertTable.png\" alt=\"\" width=\"643\" height=\"326\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobInsertTable.png 823w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobInsertTable-300x152.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobInsertTable-768x389.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobInsertTable-700x355.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobInsertTable-410x208.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobInsertTable-100x51.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobInsertTable-275x139.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobInsertTable-20x10.png 20w\" sizes=\"auto, (max-width: 643px) 100vw, 643px\" \/><\/p>\n<p><strong>WOW!!! N\u00e3o \u00e9 que funciona??? TOP em!!!<\/strong><\/p>\n<p>No portal do azure, tamb\u00e9m podemos monitorar a execu\u00e7\u00e3o desses jobs de algumas formas.<\/p>\n<p>Nessa tela abaixo podemos ver um overview da execu\u00e7\u00e3o de todos os Jobs. Isso \u00e9 mais perto do Agent que temos, j\u00e1 que conseguimos ver os jobs que est\u00e3o rodando, que falharam, que executaram com sucesso e etc&#8230;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9305\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation_log_execucao.png\" alt=\"\" width=\"765\" height=\"511\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation_log_execucao.png 1124w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation_log_execucao-300x200.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation_log_execucao-1024x684.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation_log_execucao-768x513.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation_log_execucao-600x400.png 600w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation_log_execucao-700x468.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation_log_execucao-410x274.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation_log_execucao-100x67.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation_log_execucao-275x184.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation_log_execucao-20x13.png 20w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobAutomation_log_execucao-272x182.png 272w\" sizes=\"auto, (max-width: 765px) 100vw, 765px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Visualiza\u00e7\u00e3o das execu\u00e7\u00f5es de um Runbook espec\u00edfico:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9306\" src=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobLogRunBook.png\" alt=\"\" width=\"845\" height=\"408\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobLogRunBook.png 1480w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobLogRunBook-300x145.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobLogRunBook-1024x494.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobLogRunBook-768x371.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobLogRunBook-700x338.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobLogRunBook-410x198.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobLogRunBook-100x48.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobLogRunBook-275x133.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSQLdatabaseJobLogRunBook-20x10.png 20w\" sizes=\"auto, (max-width: 845px) 100vw, 845px\" \/><\/p>\n<p>\u00c9 isso ai galera. Um post um pouco longo mas acredito que ser\u00e1 MUITO \u00fatil para voc\u00eas que est\u00e3o migrando seus sistemas para o Azure SQL Database.<\/p>\n<p>At\u00e9 a pr\u00f3xima.<\/p>\n<p>Posts relacionados sobre o Azure SQL Database:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2018\/07\/10\/azure-sql-database-funcao-getdate-com-valor-errado-no-azure-e-isso-mesmo\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">Azure SQL Database \u2013 Fun\u00e7\u00e3o getdate() com valor errado no Azure. \u00c9 isso mesmo?<\/a><\/li>\n<li><a href=\"http:\/\/www.fabriciolima.net\/blog\/2018\/03\/17\/azure-sql-db-managed-instance-introducao\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">Azure SQL DB Managed Instance \u2013 Introdu\u00e7\u00e3o<\/a><\/li>\n<li><a href=\"http:\/\/www.fabriciolima.net\/blog\/2018\/07\/12\/azure-sql-database-como-fazer-um-join-entre-tabelas-de-bases-diferentes\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">Azure SQL Database \u2013 Como fazer um join entre tabelas de bases diferentes?<\/a><\/li>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2018\/07\/17\/azure-sql-database-quanto-posso-usar-de-transaction-log-e-ilimitado\/\" target=\"_blank\" rel=\"noopener\">Azure SQL Database \u2013 Quanto posso usar de Transaction Log? \u00c9 ilimitado?<\/a><\/li>\n<\/ul>\n<p><b>Gostou da dica?<\/b><\/p>\n<p>Curta, comente, compartilhe com os coleguinhas\u2026<\/p>\n<p>Assine meu canal no\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.youtube.com\/channel\/UCeBRAO_LLrUdSrOXIywjzRA\" target=\"_blank\" rel=\"external noopener noreferrer nofollow\" data-wpel-link=\"external\">Youtube<\/a>\u00a0e curta minha\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\" rel=\"external noopener noreferrer nofollow\" data-wpel-link=\"external\">P\u00e1gina no Facebook<\/a>\u00a0para receber Dicas de Leituras e Eventos sobre SQL Server.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>Microsoft Data Platform MVP<\/p>\n<p>Consultor e Instrutor SQL Server<\/p>\n<p>Trabalha com SQL Server desde 2006<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fala Pessoal, Continuando a s\u00e9rie de posts sobre Azure SQL Database, dessa vez vou resolver um problema que muitos de voc\u00eas que j\u00e1 est\u00e3o trabalhando com o Azure SQL devem ter passado. Fabr\u00edcio, o Azure SQL Database n\u00e3o tem um Agent???? Como que vou rodar meus Jobs de Desfragmenta\u00e7\u00e3o de \u00cdndices, Atualiza\u00e7\u00e3o de Estat\u00edsticas, CheckDB [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[1616,1617,280],"tags":[1653,1644,1656,1646,1654,1650,1651,1641,1639,1640,1648,1643,1649,1652,1645,1638,1647,1642,1655,1657],"class_list":["post-9285","post","type-post","status-publish","format-standard","hentry","category-azure-sql-database","category-managed-instance","category-virtual-pass-br","tag-agendamento-azure","tag-agendar-job-azure","tag-agendar-procedure-azure","tag-agendar-query-azure","tag-agent-no-azure","tag-automation","tag-automation-azure","tag-azure","tag-azure-sql","tag-azure-sql-db","tag-job-azure","tag-paas","tag-runbook","tag-schedule-runbook","tag-scheduler-job-azure","tag-se-azure-sql-database","tag-sql-agent-azure","tag-sql-como-servico","tag-sql-job-azure","tag-sql-server-agent-azure"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/9285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/comments?post=9285"}],"version-history":[{"count":16,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/9285\/revisions"}],"predecessor-version":[{"id":9318,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/9285\/revisions\/9318"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=9285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=9285"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=9285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}