{"id":1016,"date":"2019-01-19T16:13:09","date_gmt":"2019-01-19T19:13:09","guid":{"rendered":"http:\/\/thesqltimes.com\/blog\/?p=1016"},"modified":"2019-01-19T16:13:09","modified_gmt":"2019-01-19T19:13:09","slug":"conhecendo-o-processo-do-sql-server-no-windows-e-linux-parte-3","status":"publish","type":"post","link":"https:\/\/thesqltimes.com\/blog\/2019\/01\/19\/conhecendo-o-processo-do-sql-server-no-windows-e-linux-parte-3\/","title":{"rendered":"Conhecendo o Processo do SQL Server no Windows e Linux &#8211; Parte 3"},"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=\"1016\" 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 3\/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\"> 6<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span><p style=\"text-align: justify;\">Ol\u00e1! Este \u00e9 mais um post da s\u00e9rie de post sobre o processo do SQL Server no Windows e Linux.<\/p>\r\n<p style=\"text-align: justify;\">Nas duas primeiras partes, mostramos alguns conceitos importantes, como por exemplo, o que \u00e9 um processo e o que \u00e9 um thread. Voc\u00ea tamb\u00e9m aprendeu algumas ferramentas muito \u00fateis para monitorar e obter mais informa\u00e7\u00f5es de processos no Windows. Ainda, mostramos como podemos aplicar todos esses conceitos para obter informa\u00e7\u00f5es \u00fateis sobre uma inst\u00e2ncia SQL Server, como o usu\u00e1rio que est\u00e1 executando, privil\u00e9gios, etc.<\/p>\r\n<p style=\"text-align: justify;\">Hoje vamos focar tudo o que vimos e aprendemos, no Linux. O SQL Server no Linux \u00e9 mais que uma realidade, ent\u00e3o, nada mais justo do que aprender todos estes conceitos e ferramentas, tamb\u00e9m neste ambiente. O post assume que o leitor j\u00e1 possui uma experi\u00eancia b\u00e1sica com Linux, conseguindo abrir um terminal ou uma sess\u00e3o ssh, e digitar comandos. Se voc\u00ea n\u00e3o possui esta experi\u00eancia, mas possui alguma experi\u00eancia com powershell, voc\u00ea n\u00e3o ter\u00e1 dificuldades em compreender os exemplos.<\/p>\r\n<h2 style=\"text-align: justify;\">O &#8220;Gerenciador de Tarefas&#8221;<\/h2>\r\n<p style=\"text-align: justify;\">A esta altura, voc\u00ea j\u00e1 percebeu o\u00a0 Gerenciador de Tarefas do Windows \u00e9, na verdade, um &#8220;Gerenciador de Processos&#8221;. Ele te d\u00e1 uma lista contendo cada processo que existe no Windows com diversas informa\u00e7\u00f5es sobre cada um deles. H\u00e1 o &#8220;process explorer&#8221; e o &#8220;Get-Process&#8221;, do powershell, tamb\u00e9m. No Linux, assim como no Windows, possu\u00edmos diversas ferramentas que nos fornecem as mesmas informa\u00e7\u00f5es, umas com mais detalhes, outras com menos.<\/p>\r\n<p style=\"text-align: justify;\">Por exemplo, voc\u00ea pode usar o comando &#8220;ps&#8221; para encontrar a linha de comando usada para iniciar o SQL Server:<\/p>\r\n<p style=\"text-align: justify;\"><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-7.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-932\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-7.png\" alt=\"\" width=\"946\" height=\"113\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-7.png 946w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-7-300x36.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-7-768x92.png 768w\" sizes=\"auto, (max-width: 946px) 100vw, 946px\" \/><\/a><\/p>\r\n<p style=\"text-align: justify;\">Note que h\u00e1 dois processos. S\u00e3o duas inst\u00e2ncias? N\u00e3o. No Linux, o sql server inicia um processo conhecido como &#8220;watchdog&#8221;,e este por sua vez \u00e9 quem inicia um segundo processo que ir\u00e1 atuar como uma inst\u00e2ncia SQL como a conhecemos. Como pode notar, ambos usam o mesmo execut\u00e1vel.\u00a0 O primeiro processo fica monitorando o segundo, e em caso de falhas, ir\u00e1 gerar os dumps para an\u00e1lise. No Windows, \u00e9 um recurso nativo do sistema operacional quem faz esse trabalho. <a href=\"https:\/\/blogs.msdn.microsoft.com\/bobsql\/2018\/07\/18\/sql-server-on-linux-why-do-i-have-two-sql-server-processes\/\">Este artigo do Bob Dorr<\/a>, detalha.<\/p>\r\n<p style=\"text-align: justify;\">Voc\u00ea pode usar o seguinte comando para exibir o PID do processo, o usu\u00e1rio e a linha de comando usada:<\/p>\r\n<pre class=\"lang:sh decode:true\">ps -C sqlservr -o pid,ppid,user,command<\/pre>\r\n<p style=\"text-align: justify;\">Um exemplo:<\/p>\r\n<p style=\"text-align: justify;\"><!-- \/wp:post-content -->\r\n\r\n<!-- wp:image {\"id\":935} --><\/p>\r\n<figure class=\"wp-block-image\" style=\"text-align: justify;\"><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-9.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-935\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-9.png\" alt=\"\" width=\"989\" height=\"117\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-9.png 989w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-9-300x35.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-9-768x91.png 768w\" sizes=\"auto, (max-width: 989px) 100vw, 989px\" \/><\/a><\/figure>\r\n<figure class=\"wp-block-image\" style=\"text-align: justify;\"><\/figure>\r\n<p style=\"text-align: justify;\"><!-- \/wp:image -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p style=\"text-align: justify;\">No exemplo acima, o processo 25526 foi iniciado pelo processo 1 (PPID\u00a0 = parent pid, ou, pid pai). O processo 1 (init) \u00e9 semelhante ao processo System e wininit.exe do Windows, que s\u00e3o os respons\u00e1veis por iniciar os servi\u00e7os. Ent\u00e3o, podemos dizer que o processo 25526\u00a0 \u00e9 o &#8220;watchdog&#8221;, pois ele foi o primeiro processo com o execut\u00e1vel do SQL Sever a ser iniciado. A linha seguinte, demonstra que o respectivo processo, de PID 25531, \u00e9 filho de 25526 (o\u00a0 watchdog), ent\u00e3o, este \u00e9 a inst\u00e2ncia SQL (\u00e9 este processo, por exemplo, quem escuta na porta 1433, e processa os comandos SQL que chegam).<\/p>\r\n<p style=\"text-align: justify;\">O comando &#8220;htop&#8221; pode ser uma alternativa interessante ao comando &#8220;ps&#8221;. Usando a tecla F5, voc\u00ea consegue trocar a exibi\u00e7\u00e3o entre uma \u00e1rvore de processos e uma lista ordenada:<a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-10-e1544908513396.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-936 size-large\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-10-e1544908513396-1024x210.png\" alt=\"\" width=\"1024\" height=\"210\" data-id=\"936\" data-link=\"http:\/\/thesqltimes.com\/blog\/?attachment_id=936\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-10-e1544908513396-1024x210.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-10-e1544908513396-300x61.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-10-e1544908513396-768x157.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-10-e1544908513396.png 1548w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\r\n<p style=\"text-align: justify;\">Aqui, a coluna &#8220;PID&#8221; \u00e9 auto explicativa. Ela cont\u00e9m o PID do processo, conceito que voc\u00ea j\u00e1 aprendeu no post anterior. \u00c9 a mesma coisa. A coluna &#8220;User&#8221; informa qual o usu\u00e1rio sob o qual o processo est\u00e1 executando. A mesma informa\u00e7\u00e3o est\u00e1 dispon\u00edvel tanto no Gerenciador de Tarefas e no Process Explorer. No powershell \u00e9 necess\u00e1rio um script mais elaborado para obt\u00ea-la.<\/p>\r\n<pre class=\"lang:ps decode:true\" title=\"Exibir username de um processo com powershell \"># Execute como administrador\r\nGet-WmiObject Win32_Process | %{  $o = $_.GetOwner(); $UserName = $o.Domain+\"\\\"+$o.User; $_ | Add-Member -Type Noteproperty -Name UserName -Value $UserName  -PassThru } | select ProcessId,Name,UserName<\/pre>\r\n<p style=\"text-align: justify;\">No Windows, voc\u00ea consegue ver essa rela\u00e7\u00e3o de processo pai e processo filho melhor com o Process Explorer. Aqui est\u00e1 um exemplo no Windows:<\/p>\r\n<figure id=\"attachment_1017\" aria-describedby=\"caption-attachment-1017\" style=\"width: 692px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/img_5c2665e956e02.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1017 size-full\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/img_5c2665e956e02.png\" alt=\"\" width=\"692\" height=\"140\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/img_5c2665e956e02.png 692w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/img_5c2665e956e02-300x61.png 300w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/a><figcaption id=\"caption-attachment-1017\" class=\"wp-caption-text\">Note que no Windows, n\u00e3o temos um outro processo pai chamado sqlservr.exe. O sqlservr.exe \u00e9 filho de &#8220;services.exe&#8221;, pois eu o iniciei atrav\u00e9s de um servi\u00e7o do Windows. Entretanto, ao executar um xp_cmdshell &#8216;ping www.microsoft.com&#8217;, podemos ver claramente processos filhos do SQL Server sendo criados. O Process Explorer demonstra que cmd.exe \u00e9 filho de sqlservr.exe. E PING.EXE \u00e9 filho de cmd.exe<\/figcaption><\/figure>\r\n<p style=\"text-align: justify;\">\u00a0<\/p>\r\n<p>Onde est\u00e3o os argumentos? No caso do SQL Server no Linux, todos os par\u00e2metros default vem do registro (na verdade, uma implementa\u00e7\u00e3o parecida, para o Linux):<\/p>\r\n<p id=\"BqLPzmn\"><img loading=\"lazy\" decoding=\"async\" width=\"1450\" height=\"125\" class=\"alignnone size-full wp-image-1025 \" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c4363c43d249.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c4363c43d249.png 1450w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c4363c43d249-300x26.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c4363c43d249-768x66.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c4363c43d249-1024x88.png 1024w\" sizes=\"auto, (max-width: 1450px) 100vw, 1450px\" \/><\/p>\r\n<p style=\"text-align: justify;\">Assim, como no Windows, ainda \u00e9 poss\u00edvel usar os par\u00e2metros em linha de comando:<\/p>\r\n<p id=\"lxvHYOU\"><img loading=\"lazy\" decoding=\"async\" width=\"1522\" height=\"485\" class=\"alignnone size-full wp-image-1026 \" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c43669ddb8d2.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c43669ddb8d2.png 1522w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c43669ddb8d2-300x96.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c43669ddb8d2-768x245.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c43669ddb8d2-1024x326.png 1024w\" sizes=\"auto, (max-width: 1522px) 100vw, 1522px\" \/><\/p>\r\n<p style=\"text-align: justify;\">A primeira linha \u00e9 o comando sudo. Da maneira em que foi executado na imagem, ele faz com que mudemos o usu\u00e1rio atual. O nome do usu\u00e1rio \u00e9 &#8220;mssql&#8221;, criado por padr\u00e3o na instala\u00e7\u00e3o do SQL. Na pr\u00f3xima linha, eu apenas inicio o execut\u00e1vel do SQL Server, com o par\u00e2metro &#8220;-e&#8221;, alterando o local do Error Log, semelhante como fizemos no Windows. A raz\u00e3o pelo qual eu mudei de usu\u00e1rio \u00e9 apenas para evitar problemas de permiss\u00e3o quando eu iniciar o servi\u00e7o normalmente usando o gerenciador de servi\u00e7o (systemctl). Eu recomendo que n\u00e3o fa\u00e7a isso, principalmente em ambiente de produ\u00e7\u00e3o, pois pode vir a ter seu servi\u00e7o inoper\u00e1vel. Mas, se o fizer, e tiver problemas, tente restabelecer as permiss\u00f5es, desta maneira:<\/p>\r\n<pre class=\"lang:sh decode:true\" title=\"Restaurando permissoes do diretorio do SQL Server\">chown -R mssql:mssql \/var\/opt\/mssql<\/pre>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>Aqui est\u00e1 o processo, usando o comando &#8220;ps&#8221;, como mostrado anteriormente:<\/p>\r\n<p id=\"phKAiJm\"><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c4370a4ea19b.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1028 size-full aligncenter\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c4370a4ea19b.png\" alt=\"\" width=\"1086\" height=\"125\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c4370a4ea19b.png 1086w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c4370a4ea19b-300x35.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c4370a4ea19b-768x88.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c4370a4ea19b-1024x118.png 1024w\" sizes=\"auto, (max-width: 1086px) 100vw, 1086px\" \/><\/a><\/p>\r\n<p>Note que o processo \u00e9 filho do processo 23892. Utilizando o comando ps, podemos observar quem \u00e9:<\/p>\r\n<figure id=\"attachment_1029\" aria-describedby=\"caption-attachment-1029\" style=\"width: 522px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1029 size-full\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c437177edb6c.png\" alt=\"\" width=\"522\" height=\"90\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c437177edb6c.png 522w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/01\/img_5c437177edb6c-300x52.png 300w\" sizes=\"auto, (max-width: 522px) 100vw, 522px\" \/><figcaption id=\"caption-attachment-1029\" class=\"wp-caption-text\">bash \u00e9 um programa que atua como um shell no Linux, semalhante ao que o cmd, ou mesmo o powershell, \u00e9 no Windows. Ele \u00e9 respons\u00e1vel por captar e exibir a sa\u00edda de comandos fornecidos no terminal. Quando eu iniciei o SQL Server na linha de comando do Linux, foi o bash da minha sess\u00e3o quem o fez. Por isso, ele \u00e9 o pai.<\/figcaption><\/figure>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:image {\"id\":939} --><\/p>\r\n<figure class=\"wp-block-image\"><\/figure>\r\n<p>&nbsp;<\/p>\r\n<p>No Windows voc\u00ea tamb\u00e9m consegue iniciar o servi\u00e7o do SQL Server na linha de comando. Basta mandar executar o arquivo sqlservr.exe e passar os devidos par\u00e2metros:<\/p>\r\n<p><!-- \/wp:image -->\r\n\r\n<!-- wp:image {\"id\":940} --><\/p>\r\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"193\" class=\"wp-image-940\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-14-1024x193.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-14-1024x193.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-14-300x57.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-14-768x145.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-14.png 1862w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<p>Neste exemplo, eu parei o servi\u00e7o do SQL, usando o Configuration Manager, e executei esta linha de comando:<\/p>\r\n<p><!-- \/wp:image -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<pre class=\"lang:sh decode:true\">\"C:\\Program Files\\Microsoft SQL Server\\MSSQL13.SQL16\\MSSQL\\Binn\\sqlservr.exe\" -sSQL16<\/pre>\r\n<p>Quando eu iniciei o sqlservr.exe, o usu\u00e1rio com o qual eu abrir o prompt \u00e9 o usu\u00e1rio quem vai rodar esse processo. Sendo assim, todas os recursos do Sistema Operacional que minha inst\u00e2ncia precisar, estar\u00e3o sujeitos a esse usu\u00e1rio. Note que n\u00e3o \u00e9 o mesmo usu\u00e1rio que eu configurei l\u00e1 &#8220;Configuration Manager&#8221;. Aquele \u00e9 o usu\u00e1rio que ser\u00e1 usado quando o sql for iniciado por l\u00e1 (ou pelo gerenciador de servi\u00e7os).<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:image {\"id\":942} --><\/p>\r\n<figure class=\"wp-block-image\">\r\n<figure id=\"attachment_942\" aria-describedby=\"caption-attachment-942\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-942\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-16-1024x163.png\" alt=\"\" width=\"1024\" height=\"163\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-16-1024x163.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-16-300x48.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-16-768x122.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/image-16.png 1206w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption id=\"caption-attachment-942\" class=\"wp-caption-text\">Note que, como no Linux, o processo agora \u00e9 filho do &#8220;cmd.exe&#8221; (semelhante ao bash&#8217;).<\/figcaption><\/figure>\r\n<\/figure>\r\n<p>No Linux, \u00e9 o mesmo caso, por\u00e9m, eu apenas optei por utilizar o mesmo usu\u00e1rio configurado nas defini\u00e7\u00f5es do servi\u00e7o. No caso do Windows, os efeitos de ser fazer isso n\u00e3o s\u00e3o t\u00e3o graves como no Linux, mas ainda sim, n\u00e3o recomendo que fa\u00e7a isso em um ambiente operacional, pois poder\u00e1 ter os mesmos problemas.<\/p>\r\n<p>Como o sqlservr.exe \u00e9 uma &#8220;ConsoleApplication&#8221;, ele come\u00e7ou a gerar a sa\u00edda na tela, al\u00e9m do errorlog. Isso acontece nas vers\u00f5es para ambos os sistemas operacionais.<\/p>\r\n<hr \/>\r\n<p>Bom, h\u00e1 muito o que falar sobre processos. Esta foi uma introdu\u00e7\u00e3o cujo o objetivo \u00e9 mostrar como ambos os sistemas operacionais fornecem a mesma vis\u00e3o. Por\u00e9m, apesar das informa\u00e7\u00f5es simples, elas s\u00e3o poderosas armas em situa\u00e7\u00f5es de an\u00e1lises. As vezes, os simples fato de olhar o usu\u00e1rio com o qual o processo est\u00e1 rodando, pode te ajudar a perceber um problema devido a permiss\u00f5es de acesso.<\/p>\r\n<p><!-- \/wp:image -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>H\u00e1 ainda uma s\u00e9rie de ferramentas poderos\u00edssimas, como o<a href=\"https:\/\/docs.microsoft.com\/en-us\/sysinternals\/downloads\/procmon\"> Process Monitor<\/a>, ou o <a href=\"https:\/\/linux.die.net\/man\/1\/strace\">strace<\/a>, que ajudam a compreender tudo o que um processo est\u00e1 fazendo. Conhecer o que s\u00e3o os processos e seus conceitos mais simples, ajudam a melhor utilizar essas ferramentas. E em algum momento iremos dedicar aten\u00e7\u00e3o a elas aqui no blog!<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>Aqui est\u00e3o algumas fontes e refer\u00eancias do assunto de hoje:<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:list --><\/p>\r\n<ul>\r\n<li>Local dos arquivos de uma inst\u00e2ncia SQL Server<br \/><a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/tools\/sqlservr-application?view=sql-server-2017\">https:\/\/docs.microsoft.com\/en-us\/sql\/tools\/sqlservr-application?view=sql-server-2017<\/a><\/li>\r\n<li>Execut\u00e1vel\u00a0sqlservr<br \/><a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/tools\/sqlservr-application?view=sql-server-2017\">https:\/\/docs.microsoft.com\/en-us\/sql\/tools\/sqlservr-application?view=sql-server-2017<\/a><\/li>\r\n<li>Linux Bash<br \/><a href=\"http:\/\/tldp.org\/LDP\/Bash-Beginners-Guide\/html\/Bash-Beginners-Guide.html#chap_01\">http:\/\/tldp.org\/LDP\/Bash-Beginners-Guide\/html\/Bash-Beginners-Guide.html#chap_01<\/a><\/li>\r\n<li>Instalando SQL Server no Linux<br \/><a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/linux\/sql-server-linux-setup?view=sql-server-2017\">https:\/\/docs.microsoft.com\/en-us\/sql\/linux\/sql-server-linux-setup?view=sql-server-2017<\/a><\/li>\r\n<li>Processo e Threads no Windows<br \/><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/desktop\/procthread\/processes-and-threads\">https:\/\/docs.microsoft.com\/en-us\/windows\/desktop\/procthread\/processes-and-threads<\/a><\/li>\r\n<li>Linux clone system call (\u00fatil para aprender como processos s\u00e3o criados no Linux)<br \/><a href=\"http:\/\/man7.org\/linux\/man-pages\/man2\/clone.2.html\">http:\/\/man7.org\/linux\/man-pages\/man2\/clone.2.html<\/a><\/li>\r\n<li>Conceitos de Processo e Threads no Linux<br \/><a href=\"https:\/\/www.thegeekstuff.com\/2013\/11\/linux-process-and-threads\/\">https:\/\/www.thegeekstuff.com\/2013\/11\/linux-process-and-threads\/<\/a><\/li>\r\n<li>SQL Server PAL (nova arquitetura de processos introduzida no SQL Server)<br \/><a href=\"https:\/\/cloudblogs.microsoft.com\/sqlserver\/2016\/12\/16\/sql-server-on-linux-how-introduction\/\">https:\/\/cloudblogs.microsoft.com\/sqlserver\/2016\/12\/16\/sql-server-on-linux-how-introduction\/<\/a><\/li>\r\n<\/ul>","protected":false},"excerpt":{"rendered":"<div class=\"seriesmeta\">This entry is part 3 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>Ol\u00e1! Este \u00e9 mais um post da s\u00e9rie de post sobre o processo do SQL Server no Windows e Linux. Nas duas primeiras partes, mostramos alguns conceitos importantes, como por exemplo, o que \u00e9 um processo e o que \u00e9 um thread. Voc\u00ea tamb\u00e9m aprendeu algumas ferramentas muito \u00fateis para monitorar e obter mais informa\u00e7\u00f5es&hellip;&nbsp;<a href=\"https:\/\/thesqltimes.com\/blog\/2019\/01\/19\/conhecendo-o-processo-do-sql-server-no-windows-e-linux-parte-3\/\" rel=\"bookmark\"><span class=\"screen-reader-text\">Conhecendo o Processo do SQL Server no Windows e Linux &#8211; Parte 3<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1017,"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":[9,208,94,7,1],"tags":[214,209,96,224,73,87],"series":[216],"class_list":["post-1016","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arquitetura","category-linux","category-powershell","category-sql-server","category-uncategorized","tag-bash","tag-linux","tag-powershell","tag-processos","tag-sql-server","tag-windows","series-sql-process-linux-win"],"_links":{"self":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1016","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=1016"}],"version-history":[{"count":7,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1016\/revisions"}],"predecessor-version":[{"id":1031,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1016\/revisions\/1031"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media\/1017"}],"wp:attachment":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media?parent=1016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/categories?post=1016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/tags?post=1016"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/series?post=1016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}