{"id":987,"date":"2018-12-26T13:24:31","date_gmt":"2018-12-26T16:24:31","guid":{"rendered":"http:\/\/thesqltimes.com\/blog\/?p=987"},"modified":"2018-12-26T15:33:29","modified_gmt":"2018-12-26T18:33:29","slug":"conhecendo-o-processo-do-sql-server-no-windows-e-linux-parte-2","status":"publish","type":"post","link":"https:\/\/thesqltimes.com\/blog\/2018\/12\/26\/conhecendo-o-processo-do-sql-server-no-windows-e-linux-parte-2\/","title":{"rendered":"Conhecendo o Processo do SQL Server no Windows e Linux &#8211; Parte 2"},"content":{"rendered":"<div class=\"pld-like-dislike-wrap pld-template-1\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"Muito \u00fatil!\" data-post-id=\"987\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                        <i class=\"fas fa-thumbs-up\"><\/i>\r\n                <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">    <\/span>\r\n<\/div><\/div><div class=\"seriesmeta\">Post 2\/3. Este post \u00e9 parte da s\u00e9rie: <a href=\"https:\/\/thesqltimes.com\/blog\/series\/sql-process-linux-win\/\" class=\"series-216\" title=\"Conhecendo o Processo do SQL Server\">Conhecendo o Processo do SQL Server<\/a>\r\n<\/div>\r\n<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de Leitura:<\/span> <span class=\"rt-time\"> 5<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span><p style=\"text-align: justify;\">No \u00faltimo post da s\u00e9rie vimos alguns conceitos b\u00e1sicos sobre processos e threads, e tamb\u00e9m usamos algumas ferramentas no Windows para obter mais informa\u00e7\u00f5es sobre o execut\u00e1vel de um processo do SQL Server. Hoje vamos abordar mais alguns conceitos importantes e ver como podem ser \u00fateis na pr\u00e1tica!<\/p>\r\n<h2>O Execut\u00e1vel do SQL Server<\/h2>\r\n<p style=\"text-align: justify;\">O execut\u00e1vel do SQL Server \u00e9 o sqlservr.exe. No Windows voc\u00ea o encontra em:<\/p>\r\n<p><em>&lt;ProgramFiles&gt;\\Microsoft SQL Server\\&lt;Versao&gt;.&lt;NomeInstancia&gt;\\MSSQL\\Binn <\/em><\/p>\r\n<p style=\"text-align: justify;\"><!-- \/wp:post-content -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p style=\"text-align: justify;\">No Linux, ele fica em:<\/p>\r\n<p style=\"text-align: justify;\">\/opt\/mssql\/bin\/sqlservr (sem extens\u00e3o).<\/p>\r\n<p style=\"text-align: justify;\"><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p style=\"text-align: justify;\">Talvez voc\u00ea nunca tenha precisado interagir diretamente com o execut\u00e1vel do SQL Server porque voc\u00ea sempre iniciou ele atrav\u00e9s de um servi\u00e7o. Em palavras simples, um servi\u00e7o est\u00e1 fazendo a mesma coisa que voc\u00ea: pedindo ao sistema operacional que inicie a execu\u00e7\u00e3o de um arquivo.\u00a0Mas, no final das contas, ele \u00e9 apenas um processo. Voc\u00ea pode confirmar isso usando ferramentas do seu sistema operacional que permitem monitorar e gerenciar os processos, como:<\/p>\r\n<p style=\"text-align: justify;\"><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:list --><\/p>\r\n<ul>\r\n<li>Windows\r\n<ul>\r\n<li>taskmgr.exe (Gerenciador de tarefas)<\/li>\r\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/sysinternals\/downloads\/process-explorer\">Process Explorer<\/a><\/li>\r\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/powershell\/module\/microsoft.powershell.management\/get-process?view=powershell-6\">Get-Process<\/a> (powershell)<\/li>\r\n<li>tasklist.exe<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Linux\r\n<ul>\r\n<li><a href=\"http:\/\/man7.org\/linux\/man-pages\/man1\/top.1.html\">Top<\/a><\/li>\r\n<li><a href=\"https:\/\/linux.die.net\/man\/1\/htop\">htop<\/a><\/li>\r\n<li><a href=\"https:\/\/www.kernel.org\/doc\/Documentation\/filesystems\/proc.txt\">\/proc<\/a><\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify;\">Por exemplo, a seguinte imagem demonstra dois processos, cada um referente a uma inst\u00e2ncia que iniciei atrav\u00e9s do Configuration Manager:<\/p>\r\n<p><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-930\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-5-1024x69.png\" alt=\"\" width=\"1024\" height=\"69\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-5-1024x69.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-5-300x20.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-5-768x51.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-5.png 1075w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\r\n<p style=\"text-align: justify;\">No Gerenciador de Tarefas do Windows a partir da vers\u00e3o 2012\/8, voc\u00ea encontra essas informa\u00e7\u00f5es na aba &#8220;Detalhes&#8221; (ou &#8220;details&#8221;), H\u00e1 uma linha para cada processo existente no seu sistema operacional. Se h\u00e1 mais de uma inst\u00e2ncia SQL Server em execu\u00e7\u00e3o, cada inst\u00e2ncia ir\u00e1 ser executada em seu pr\u00f3prio processo. O SQL Server Agent tamb\u00e9m \u00e9 outro processo, e que usa um execut\u00e1vel diferente do SQL:<\/p>\r\n<p><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-931\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-6-1024x53.png\" alt=\"\" width=\"1024\" height=\"53\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-6-1024x53.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-6-300x16.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-6-768x40.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-6.png 1062w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\r\n<p style=\"text-align: justify;\">Assim como o SQL Browser, Analysis Services, etc. Cada um tem seu pr\u00f3prio execut\u00e1vel, e aceitam diferentes par\u00e2metros.<\/p>\r\n<h2>O PID<\/h2>\r\n<p style=\"text-align: justify;\">Uma das informa\u00e7\u00f5es mais importante sobre um processo \u00e9 seu identificador, ou &#8220;Process ID&#8221; (PID). O PID \u00e9 um n\u00famero exclusivo que um processo ganha ao ser criado no sistema operacional. Nunca existir\u00e3o dois processos com o mesmo ID em uma mesma sess\u00e3o do sistema operacional (isto \u00e9, depois do\u00a0 boot). Por\u00e9m, o ID pode ser reusado quando seu respectivo processo encerrar. Raramente voc\u00ea ver\u00e1 o servi\u00e7o do SQL Server usar o mesmo ID de processo entre seus restarts. Se ocorrer, \u00e9 uma bela sorte!<\/p>\r\n<h2>A linha de comando<\/h2>\r\n<p style=\"text-align: justify;\">Repare na \u00faltima coluna dessa imagem:<\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"53\" class=\"wp-image-931\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-6-1024x53.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-6-1024x53.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-6-300x16.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-6-768x40.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-6.png 1062w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\r\n<p style=\"text-align: justify;\">A coluna &#8220;Linha de comando&#8221; (voc\u00ea consegue habilitar mais colunas usando o bot\u00e3o direito do mouse no cabe\u00e7alho da tabela e selecionado a op\u00e7\u00e3o &#8220;Selecionar colunas&#8221;) mostra o caminho do execut\u00e1vel que foi usado para iniciar o processo. Se voc\u00ea olhar na defini\u00e7\u00e3o do servi\u00e7o desta inst\u00e2ncia, poder\u00e1 ver a mesma informa\u00e7\u00e3o:<\/p>\r\n<ol>\r\n<li>Abra o gerenciador de servi\u00e7os do Windows (digite &#8220;services.msc&#8221; no executar ou em um shell)<\/li>\r\n<li>Procure o servi\u00e7o do SQL Server ( o nome \u00e9 <strong>SQL Server (<span style=\"color: #ff6600;\">&lt;NOME INSTANCIA&gt;<\/span>)<\/strong>)<\/li>\r\n<li>Clique com o bot\u00e3o direito, e v\u00e1 em propridades. Voc\u00ea ver\u00e1 uma imagem semelhante a esta:<\/li>\r\n<\/ol>\r\n<p><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/mssql-service.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-990\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/mssql-service.png\" alt=\"\" width=\"403\" height=\"466\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/mssql-service.png 403w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/mssql-service-259x300.png 259w\" sizes=\"auto, (max-width: 403px) 100vw, 403px\" \/><\/a><\/p>\r\n<figure id=\"attachment_991\" aria-describedby=\"caption-attachment-991\" style=\"width: 414px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/mssql-service-selected.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-991 size-full\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/mssql-service-selected.png\" alt=\"\" width=\"414\" height=\"48\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/mssql-service-selected.png 414w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/mssql-service-selected-300x35.png 300w\" sizes=\"auto, (max-width: 414px) 100vw, 414px\" \/><\/a><figcaption id=\"caption-attachment-991\" class=\"wp-caption-text\">Se voc\u00ea selecionar o texto sob &#8220;Caminho do Execut\u00e1vel&#8221;, poder\u00e1 ver o resto das informa\u00e7\u00f5es.<\/figcaption><\/figure>\r\n<p style=\"text-align: justify;\">Quando o Windows \u00e9 solicitado para rodar esta linha de comando, seja diretamente pelo usu\u00e1rio, ou atrav\u00e9s de um servi\u00e7o, ele cria um novo processo e aponta a primeira thread para o execut\u00e1vel. Al\u00e9m disso, ap\u00f3s o nome do execut\u00e1vel h\u00e1 os par\u00e2metros que devem ser passados ao processo. O Windows se encarrega de disponibilizar esses valores para a primeira thread do processo, e a partir da\u00ed ela faz o que quiser com eles.<\/p>\r\n<p style=\"text-align: justify;\">No caso do sqlservr.exe, o par\u00e2metro &#8220;-s&#8221; indica que o valor a seguir \u00e9 um nome de inst\u00e2ncia. No caso do SQL Agent, \u00e9 o par\u00e2metro &#8220;-i&#8221; quem dita essa informa\u00e7\u00e3o. (No <a href=\"http:\/\/thesqltimes.com\/blog\/2018\/12\/21\/conhecendo-o-processo-do-sql-server-no-windows-e-linux-parte-1\/\">post anterior<\/a> h\u00e1 uma tabelinha contendo essas informa\u00e7\u00f5es).<\/p>\r\n<h2>O usu\u00e1rio<\/h2>\r\n<p style=\"text-align: justify;\">Uma outra informa\u00e7\u00e3o bastante \u00fatil vem da coluna &#8220;Nome de usu\u00e1rio&#8221;. Essa coluna indica com qual conta de usu\u00e1rio o processo est\u00e1 rodando. Todo processo, e, consequentemente, suas Threads, necessitam rodar sob alguma conta de usu\u00e1rio (geralmente, usamos o nome &#8220;conta de servi\u00e7o&#8221;, pois estamos falando de uma conta de usu\u00e1rio que ir\u00e1 rodar um servi\u00e7o. Mas \u00e9 tudo a mesma coisa). Essa conta \u00e9 usada pelo sistema operacional para validar o acesso a recursos do sistema operacional, como os arquivos. \u00c9 comum observar erros de Access Denied a um arquivo ou diret\u00f3rio porque esta conta n\u00e3o tem as devidas permiss\u00f5es.<\/p>\r\n<p style=\"text-align: justify;\">Uma outra situa\u00e7\u00e3o comum, \u00e9 ter que dar direitos espec\u00edficos para que o SQL Server consiga realizar determinadas opera\u00e7\u00f5es. Por exemplo, no Windows, o famoso Instant File Initialization \u00e9 permitido somente se a conta com a qual o servi\u00e7o est\u00e1 rodando possui um privil\u00e9gio chamado <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/security\/threat-protection\/security-policy-settings\/perform-volume-maintenance-tasks\">SeManageVolumePrivilege.<\/a>\u00a0H\u00e1 diversas formas de verificar se o processo tem esse privil\u00e9gio habilitado e uma delas \u00e9 usando o Process Explorer:<\/p>\r\n<ol>\r\n<li>Abra o process explorer como Administrador e procure o processo do SQL da inst\u00e2ncia desejada<\/li>\r\n<li>Clique com o bot\u00e3o direito no nome do processo e v\u00e1 em &#8220;Properties&#8221;<\/li>\r\n<li>V\u00e1 na aba &#8220;Security&#8221;. No final da janela aberta, voc\u00ea ver\u00e1 a lista de privil\u00e9gios com as quais o processo executa (que foi herdado do usu\u00e1rio associado com esse processo)<\/li>\r\n<\/ol>\r\n<p><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/sqlserver-privileges.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-996\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/sqlserver-privileges-1024x647.png\" alt=\"\" width=\"1024\" height=\"647\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/sqlserver-privileges-1024x647.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/sqlserver-privileges-300x190.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/sqlserver-privileges-768x485.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/sqlserver-privileges.png 1401w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a> \u00a0 A lista vem ordenada pelo nome do privil\u00e9gio.\u00a0Apesar da conta possuir alguns privil\u00e9gios atribu\u00eddos, o de nosso interesse n\u00e3o est\u00e1 na lista. <a href=\"https:\/\/luizlima.net\/instant-file-initialization-x-tempo-restore\/\">Ap\u00f3s adicionar o privil\u00e9gio<\/a>, e reiniciar o servi\u00e7o do SQL Server, conseguimos v\u00ea-lo: <a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/sqlserver-semanagervolume.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-997\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/sqlserver-semanagervolume.png\" alt=\"\" width=\"664\" height=\"597\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/sqlserver-semanagervolume.png 664w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/sqlserver-semanagervolume-300x270.png 300w\" sizes=\"auto, (max-width: 664px) 100vw, 664px\" \/><\/a><\/p>\r\n<p style=\"text-align: justify;\">Al\u00e9m disso, h\u00e1 uma s\u00e9rie de outras informa\u00e7\u00f5es a respeito do usu\u00e1rio, que podemos discutir melhor em um outro post.<\/p>\r\n<hr \/>\r\n<p>Hoje conhecemos mais alguns conceitos interessantes pertinentes a um processo! No pr\u00f3ximo post, vamos aplicar tudo o que vimos no Linux, j\u00e1 que at\u00e9 agora usamos somente Windows. E n\u00e3o deixe de praticar o que foi aprendido hoje:<\/p>\r\n<ul>\r\n<li>Utilize as v\u00e1rias ferramentas dispon\u00edveis e compare os usu\u00e1rios com os quais o processo executa<\/li>\r\n<li>Experimente retirar ou adicionar permiss\u00f5es da conta de servi\u00e7o utilizada pelo SQL Server,e observe os efeitos na execu\u00e7\u00e3o do servi\u00e7o.<\/li>\r\n<li>Reinicie o servi\u00e7o do SQL Server e compare os PIDs<\/li>\r\n<li><strong><span style=\"color: #0000ff;\">Powershell:\u00a0 Explore cmdlet <a href=\"https:\/\/docs.microsoft.com\/en-us\/powershell\/module\/microsoft.powershell.management\/get-service?view=powershell-6\">Get-Service<\/a> ou a classe WMI <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/desktop\/cimwin32prov\/win32-service\">win32_service<\/a> para obter mais informa\u00e7\u00f5es sobre um servi\u00e7o do Windows<\/span><\/strong><\/li>\r\n<li><span style=\"color: #ff6600;\"><strong>Pergunta de prova: Duas inst\u00e2ncias, em diferentes computadores, podem compartilhar o mesmo PID?<\/strong><\/span><\/li>\r\n<\/ul>\r\n<!-- \/wp:list -->\r\n\r\n<!-- wp:image {\"id\":930} -->\r\n<figure class=\"wp-block-image\"><\/figure>","protected":false},"excerpt":{"rendered":"<div class=\"seriesmeta\">This entry is part 2 of 3 in the series <a href=\"https:\/\/thesqltimes.com\/blog\/series\/sql-process-linux-win\/\" class=\"series-216\" title=\"Conhecendo o Processo do SQL Server\">Conhecendo o Processo do SQL Server<\/a><\/div><p>No \u00faltimo post da s\u00e9rie vimos alguns conceitos b\u00e1sicos sobre processos e threads, e tamb\u00e9m usamos algumas ferramentas no Windows para obter mais informa\u00e7\u00f5es sobre o execut\u00e1vel de um processo do SQL Server. Hoje vamos abordar mais alguns conceitos importantes e ver como podem ser \u00fateis na pr\u00e1tica! O Execut\u00e1vel do SQL Server O execut\u00e1vel&hellip;&nbsp;<a href=\"https:\/\/thesqltimes.com\/blog\/2018\/12\/26\/conhecendo-o-processo-do-sql-server-no-windows-e-linux-parte-2\/\" rel=\"bookmark\"><span class=\"screen-reader-text\">Conhecendo o Processo do SQL Server no Windows e Linux &#8211; Parte 2<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":989,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[1],"tags":[220,219,223,222,209,221,206,73,218,87],"series":[216],"class_list":["post-987","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-conta-de-servico","tag-conta-de-usuario","tag-executavel","tag-linha-de-comando","tag-linux","tag-pid","tag-process-explorer","tag-sql-server","tag-task-manager","tag-windows","series-sql-process-linux-win"],"_links":{"self":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/987","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/comments?post=987"}],"version-history":[{"count":17,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/987\/revisions"}],"predecessor-version":[{"id":1015,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/987\/revisions\/1015"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media\/989"}],"wp:attachment":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media?parent=987"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/categories?post=987"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/tags?post=987"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/series?post=987"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}