{"id":1461,"date":"2020-04-22T14:30:25","date_gmt":"2020-04-22T17:30:25","guid":{"rendered":"https:\/\/thesqltimes.com\/blog\/?p=1461"},"modified":"2020-04-22T16:24:09","modified_gmt":"2020-04-22T19:24:09","slug":"sql-linux-unable-read-instanceid","status":"publish","type":"post","link":"https:\/\/thesqltimes.com\/blog\/2020\/04\/22\/sql-linux-unable-read-instanceid\/","title":{"rendered":"SQL on Linux: Erro Unable to read instance id from \/var\/opt\/mssql\/.system\/instance_id"},"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=\"1461\" 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><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\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span><p>Na \u00faltima segunda-feira (20\/04\/2020), v\u00e9spera de feriado, um cliente da Power Tuning nos chamou dizendo que o seguinte erro ocorreu no SQL Server em um Ubuntu:<\/p>\n<div>systemd[1]: mssql-server.service: Main process exited, code=killed, status=6\/ABRT<br \/>\nsystemd[1]: mssql-server.service: Unit entered failed state.<br \/>\nsystemd[1]: mssql-server.service: Failed with result &#8216;signal&#8217;.<br \/>\nsystemd[1]: mssql-server.service: Service hold-off time over, scheduling restart.<br \/>\nsystemd[1]: Stopped Microsoft SQL Server Database Engine.<br \/>\nsystemd[1]: mssql-server.service: Start request repeated too quickly.<br \/>\nsystemd[1]: Failed to start Microsoft SQL Server Database Engine.<br \/>\nsystemd[1]: mssql-server.service: Unit entered failed state.<br \/>\nsystemd[1]: mssql-server.service: Failed with result &#8216;start-limit-hit&#8217;.<\/div>\n<div><\/div>\n<p>Para quem est\u00e1 acostumado com Linux, este \u00e9 um t\u00edpico erro reportado pelo <a href=\"https:\/\/www.google.com\/search?q=linux+systemd&amp;oq=linux+systemd&amp;aqs=chrome.0.69i59j0l4j69i60l3.1831j0j9&amp;sourceid=chrome&amp;ie=UTF-8\">systemd<\/a> (um gerenciador de servi\u00e7o do Linux) quando o servi\u00e7o falha ao iniciar, at\u00e9 esgotar as tentativas.<\/p>\n<p>Como no bom e velho Windows, a alternativa aqui \u00e9 analisar com mais detalhes os logs. No caso, o meu &#8220;Event Viewer&#8221; \u00e9 o comando <a href=\"https:\/\/manpages.debian.org\/stretch\/systemd\/journalctl.1.en.html\">journalctl<\/a>, e estou interessando em um servi\u00e7o chamado <strong>mssql-server<\/strong>:<\/p>\n<div>\n<pre class=\"lang:sh decode:true \" title=\"Consultando os logs do SQL Server no Ubuntu\">journalctl -u mssql-server<\/pre>\n<p id=\"PvAkhfj\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"357\" class=\"alignnone size-full wp-image-1462 \" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5e9e467f85e1f.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5e9e467f85e1f.png 1280w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5e9e467f85e1f-300x84.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5e9e467f85e1f-1024x286.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5e9e467f85e1f-768x214.png 768w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<\/div>\n<p>O log foi esse, e eu marquei as partes que mais me chamaram a aten\u00e7\u00e3o:<\/p>\n<p>sqlservr[1202]: sqlservr: <strong>Unable to read instance id from \/var\/opt\/mssql\/.system\/instance_id<\/strong>: Success (0)<br \/>\nsqlservr[1202]: This program has encountered a fatal error and cannot continue running at Mon Apr 20 23:24:16 2020<br \/>\nsqlservr[1202]: The following diagnostic information is available:<br \/>\nsqlservr[1202]: Reason: 0x00000003<br \/>\nsqlservr[1202]: <strong>Message: Unexpected call to legacy ABI.<\/strong><br \/>\nsqlservr[1202]: Stacktrace: 000055a12a12e464 000055a12a12dfdf 000055a12a07266e<br \/>\nsqlservr[1202]: 000055a12a0bf977<br \/>\nsqlservr[1202]: Process: 1202 &#8211; sqlservr<br \/>\nsqlservr[1202]: Thread: 1463<br \/>\nsqlservr[1202]: Instance Id:<br \/>\nsqlservr[1202]: Crash Id:<br \/>\nsqlservr[1202]: Build stamp: 70437f6583b8ef39b1ef70539ef84690980315dc7a4436c9c40015f28610e4aa<br \/>\nsqlservr[1202]: Distribution: Ubuntu 16.04.5 LTS<br \/>\nsqlservr[1202]: Processors: 2<br \/>\nsqlservr[1202]: Total Memory: 8061263872 bytes<br \/>\nsqlservr[1202]: Timestamp: Mon Apr 20 23:24:16 2020<\/p>\n<p>Pesquisando exatamente a mensagem destacada da primeira linha, eu\u00a0<a href=\"https:\/\/social.technet.microsoft.com\/Forums\/ko-KR\/32c2b50b-4000-4ddf-bd7a-6876ca22a213\/problem-starting-mssql-service-on-linux?forum=sqlsetupandupgrade\"> cheguei a esta resposta do Andrew Matta<\/a> no f\u00f3rum msdn. Ele teve um problema parecido e sugeriu mover este arquivo <strong>instance_id<\/strong>. Se voc\u00ea notou, este arquivo fica num diret\u00f3rio oculto do linux (diret\u00f3rio que come\u00e7a com <strong>. (ponto), que, neste caso, \u00e9 o .system<\/strong>).<\/p>\n<p>Ent\u00e3o, foi isso que eu fiz! Movi o arquivo para um backup:<\/p>\n<div>\n<pre class=\"lang:sh decode:true \">mv instance_id instance_id.bak<\/pre>\n<p>E ent\u00e3o, reiniciei o servi\u00e7o:<\/p>\n<pre class=\"lang:sh decode:true \" title=\"Iniciando inst\u00e2ncia do SQL Server no Linux\">systemctl start mssql-server<\/pre>\n<p>E o servi\u00e7o voltou normalmente!<\/p>\n<\/div>\n<p>Curiosamente, aqui est\u00e1 o conte\u00fado do arquivo original, antes de mover:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/s3.amazonaws.com\/movidesk-files\/CB2B95D426564AA44E544483F6BC0E1D\" \/><\/p>\n<p id=\"UeWwAKn\">E aqui, est\u00e1 o arquivo ap\u00f3s o restart (o sql recriou ele):<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/s3.amazonaws.com\/movidesk-files\/8F85A202A47B1119CB6BF8BE19B945EE\" \/><\/p>\n<p>Por algum motivo, o arquivo original perdeu a primeira linha, e deveria existir algum valor l\u00e1. Infelizmente, a documenta\u00e7\u00e3o internals do <strong>SQL Server on Linux<\/strong> carece de alguns detalhes. Eu busquei esse nome de arquivo e <a href=\"https:\/\/support.microsoft.com\/en-ph\/help\/4078097\/newsequentialid-generates-duplicate-guid-after-restarting-sql-server\">cheguei neste KB da Microsoft sobre um FIX<\/a>, que de quebra ele fala um pouco mais sobre o arquivo misterioso:<\/p>\n<p id=\"FDwVGvt\"><img loading=\"lazy\" decoding=\"async\" width=\"1086\" height=\"61\" class=\"alignnone size-full wp-image-1470 \" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5ea078cfd5bf6.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5ea078cfd5bf6.png 1086w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5ea078cfd5bf6-300x17.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5ea078cfd5bf6-1024x58.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5ea078cfd5bf6-768x43.png 768w\" sizes=\"auto, (max-width: 1086px) 100vw, 1086px\" \/><\/p>\n<p>Este arquivo pode conter diversas informa\u00e7\u00f5es codificada nestes n\u00fameros. Conforme o artigo, uma delas parece ser a fonte do NEWSEQUENTIALID, que gera identificadores universais e sequenciais (UUID).<\/p>\n<p>Outra coisa que mais me chamou a aten\u00e7\u00e3o foi a mensagem &#8220;Success (0)&#8221; na primeira linha log acima, que, num primeiro momento, me enganou, desviando a minha aten\u00e7\u00e3o dele. Eu subi um SQL 2019 em Ubuntu (e um 2017 tamb\u00e9m), e fiz algumas brincadeiras com este arquivo, mas n\u00e3o consegui obter exatamente a mesma mensagem:<\/p>\n<p id=\"iPlmaWx\"><img loading=\"lazy\" decoding=\"async\" width=\"1074\" height=\"406\" class=\"alignnone size-full wp-image-1471 \" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5ea0793c30a5e.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5ea0793c30a5e.png 1074w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5ea0793c30a5e-300x113.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5ea0793c30a5e-1024x387.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/04\/img_5ea0793c30a5e-768x290.png 768w\" sizes=\"auto, (max-width: 1074px) 100vw, 1074px\" \/><\/p>\n<p>Consegui reproduzir o problema em parte, mas ainda preciso de mais testes para identificar isso tudo.<\/p>\n<p>A percep\u00e7\u00e3o que tive \u00e9 que, quando este arquivo cont\u00e9m dados inv\u00e1lidos, ou faltantes, o SQL se atrapalha e gera um dump, e por isso estamos vendo esse monte de mensagens com bin\u00e1rios, stacks e informa\u00e7\u00f5es de processo. A melhor sa\u00edda \u00e9 fazer o backup deste arquivo e deixar o SQL criar um outro. Isso pode gerar uma inconsist\u00eancia se voc\u00ea usa <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/t-sql\/functions\/newsequentialid-transact-sql?view=sql-server-ver15\">NEWSEQUENTIALID<\/a>.<\/p>\n<p><strong>O que pode ter causado isso?<\/strong><\/p>\n<p>Uma boa pergunta. O cliente me informou que todos os dias desliga esta m\u00e1quina. Ent\u00e3o, meu melhor palpite \u00e9 que, durante um dos desligamentos, o SQL Server foi interrompido abruptamente, e ele se atrapalhou quando estava mexendo nesse arquivo. De novo, isso \u00e9 apenas uma suspeita minha e ainda n\u00e3o comprovei! Quando eu descobrir isso, eu atualizo o post.<\/p>\n<p>Eu ainda n\u00e3o encontrei muita refer\u00eancia sobre este arquivo e assim que o fizer, eu irei atualizar este post. Ali\u00e1s, todo o diret\u00f3rio <em><strong>.system<\/strong><\/em> que fica na &#8220;<strong>home<\/strong>&#8221; da instala\u00e7\u00e3o do SQL on Linux, cont\u00e9m uma mundo m\u00e1gico que vale a pena ser explorado&#8230; Quem sabe num futuro pr\u00f3ximo n\u00e3o voltamos com mais posts sobre isso aqui no blog!<\/p>\n<p>At\u00e9 mais!<\/p>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Na \u00faltima segunda-feira (20\/04\/2020), v\u00e9spera de feriado, um cliente da Power Tuning nos chamou dizendo que o seguinte erro ocorreu no SQL Server em um Ubuntu: systemd[1]: mssql-server.service: Main process exited, code=killed, status=6\/ABRT systemd[1]: mssql-server.service: Unit entered failed state. systemd[1]: mssql-server.service: Failed with result &#8216;signal&#8217;. systemd[1]: mssql-server.service: Service hold-off time over, scheduling restart. systemd[1]: Stopped&hellip;&nbsp;<a href=\"https:\/\/thesqltimes.com\/blog\/2020\/04\/22\/sql-linux-unable-read-instanceid\/\" rel=\"bookmark\"><span class=\"screen-reader-text\">SQL on Linux: Erro Unable to read instance id from \/var\/opt\/mssql\/.system\/instance_id<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1462,"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":[8,296,318,7],"tags":[321,209,322,319,73,320],"series":[],"class_list":["post-1461","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administracao","category-internals","category-sql-on-linux","category-sql-server","tag-instance_id","tag-linux","tag-newsequentialid","tag-sql-on-linux","tag-sql-server","tag-systemctl"],"_links":{"self":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1461","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=1461"}],"version-history":[{"count":9,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1461\/revisions"}],"predecessor-version":[{"id":1476,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1461\/revisions\/1476"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media\/1462"}],"wp:attachment":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media?parent=1461"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/categories?post=1461"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/tags?post=1461"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/series?post=1461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}