{"id":3525,"date":"2015-09-10T15:32:29","date_gmt":"2015-09-10T17:32:29","guid":{"rendered":"http:\/\/www.fabriciolima.net\/blog\/?p=3525"},"modified":"2016-07-23T22:27:33","modified_gmt":"2016-07-24T01:27:33","slug":"casos-do-dia-a-dia-servidor-sem-espaco-em-disco-e-sql-server-parado","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2015\/09\/10\/casos-do-dia-a-dia-servidor-sem-espaco-em-disco-e-sql-server-parado\/","title":{"rendered":"Casos do Dia a Dia: Servidor sem espa\u00e7o em disco e SQL Server parado"},"content":{"rendered":"<p>Ol\u00e1 Pessoal,<\/p>\n<p>Ap\u00f3s muito tempo sem postar minhas experi\u00eancias do dia a dia, vou compartilhar com voc\u00eas mais um caso que aconteceu comigo durante uma consultoria.<\/p>\n<p><strong>Cen\u00e1rio:<\/strong> O servidor de banco de dados de um cliente estava com a letra &#8220;<strong>C:&#8221;<\/strong>\u00a0com ZERO de espa\u00e7o em disco dispon\u00edvel e com o servi\u00e7o do SQL Server parado.<\/p>\n<p>Loguei no servidor para analisar o problema e sem pensar muito j\u00e1 transferi alguns arquivos de log do SQL para outra letra desse servidor, j\u00e1 que isso\u00a0n\u00e3o causa nenhum impacto no banco e libera um pequeno espa\u00e7o.<\/p>\n<p>Esses logs ficam em:<\/p>\n<p><strong><em>&#8220;C:\\Program Files\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER\\MSSQL\\Log&#8221;<\/em><\/strong><\/p>\n<p>Feito isso, liberei 150 MB, mas rapidamente esses 150 MB acabaram porque alguma aplica\u00e7\u00e3o estava enchendo um log na letra &#8220;C:&#8221;.<\/p>\n<p>Como n\u00e3o entendo da aplica\u00e7\u00e3o do cliente e s\u00f3 entendo de SQL, continuei minha an\u00e1lise da parte do SQL Server.<\/p>\n<p>Verifiquei que existiam algumas bases na letra &#8220;<strong>C:&#8221;<\/strong>.<\/p>\n<p>Como o servi\u00e7o do SQL estava parado, movi algumas bases menos cr\u00edticas para outra letra e liberei 20 GB na letra &#8220;C:&#8221; do servidor (ele tinha mais de 50 bases no SQL).<\/p>\n<p>Feito isso, o SQL subiu e as principais bases j\u00e1 estavam ONLINE. \u00a0Com as principais bases online, a aplica\u00e7\u00e3o n\u00e3o estava mais gerando erros e a letra &#8220;C:&#8221; parou de reduzir seu espa\u00e7o livre.<\/p>\n<p>Contudo, as bases que precisei mover estavam fora, pois o SQL tinha conhecimento que elas estavam em um local, mas eu alterei esse local com o servi\u00e7o parado. Dessa forma, a base subiu com o Status Recovery Pending.<\/p>\n<p>Fiz uma simula\u00e7\u00e3o desse cen\u00e1rio no meu Notebook. Segue como ficou o status da base:<\/p>\n<p><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3526\" title=\"TesteMovimentacaoBase\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase.png\" alt=\"\" width=\"494\" height=\"112\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase.png 494w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase-300x68.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase-410x93.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase-100x23.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase-275x62.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase-20x5.png 20w\" sizes=\"auto, (max-width: 494px) 100vw, 494px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>O error log do SQL mostra os erros abaixo:<\/p>\n<p>&#8220;Unable to open the physical file &#8220;C:\\Temp\\TesteMovimentacaoBase.mdf&#8221;. Operating system error 2: &#8220;2(O sistema n\u00e3o pode encontrar o arquivo especificado.)&#8221;.&#8221;<\/p>\n<p>&#8220;FileMgr::StartLogFiles: Operating system error 2(O sistema n\u00e3o pode encontrar o arquivo especificado.) occurred while creating or opening file &#8216;C:\\Temp\\TesteMovimentacaoBase_log.ldf&#8217;. Diagnose and correct the operating system error, and retry the operation.&#8221;<\/p>\n<p>Rodando essa pr\u00f3xima query, conseguimos ver onde o SQL espera que os arquivos dessa base estejam:<\/p>\n<p>select p.name, p.physical_name, p.type_desc from sys.master_files as p<br \/>\nwhere database_id = db_ID(&#8216;TesteMovimentacaoBase&#8217;)<\/p>\n<p><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3528\" title=\"TesteMovimentacaoBase2\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase2.png\" alt=\"\" width=\"606\" height=\"102\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase2.png 606w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase2-300x50.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase2-600x102.png 600w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase2-410x69.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase2-100x17.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase2-275x46.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2015\/09\/TesteMovimentacaoBase2-20x3.png 20w\" sizes=\"auto, (max-width: 606px) 100vw, 606px\" \/><\/a><\/p>\n<p>Como eu movi esses arquivos para o caminho <strong>&#8220;C:\\Temp\\NovoCaminho\\&#8221;<\/strong>, tenho que informar isso para o SQL.<\/p>\n<p><strong>Como eu fa\u00e7o isso?<\/strong><\/p>\n<p><strong>Simples. Basta executar os comandos abaixo:<\/strong><\/p>\n<p>USE master;<br \/>\nGO<br \/>\nALTER DATABASE TesteMovimentacaoBase<br \/>\nMODIFY FILE (<br \/>\nNAME = TesteMovimentacaoBase,<br \/>\nFILENAME = &#8216;C:\\Temp\\NovoCaminho\\TesteMovimentacaoBase.mdf&#8217;);<br \/>\nGO<br \/>\nALTER DATABASE TesteMovimentacaoBase<br \/>\nMODIFY FILE (<br \/>\nNAME = TesteMovimentacaoBase_log,<br \/>\nFILENAME = &#8216;C:\\Temp\\NovoCaminho\\TesteMovimentacaoBase_log.ldf&#8217;);<\/p>\n<p><strong>O SQL retorna essa informa\u00e7\u00e3o:<\/strong><\/p>\n<p>The file &#8220;TesteMovimentacaoBase&#8221; has been modified in the system catalog. The new path will be used the next time the database is started.<br \/>\nThe file &#8220;TesteMovimentacaoBase_log&#8221; has been modified in the system catalog. The new path will be used the next time the database is started.<\/p>\n<p><strong>Ap\u00f3s executar o ALTER DATABASE, a base permanece no mesmo status de Recovery Pending.<\/strong><\/p>\n<p>Como o pr\u00f3prio SQL disse, isso s\u00f3 iria funcionar ap\u00f3s a base fosse iniciada. Resolvemos isso com o comando abaixo:<\/p>\n<p><em><strong>alter database TesteMovimentacaoBase set online<\/strong><\/em><\/p>\n<p>Pronto. Base ONLINE novamente.<\/p>\n<p>Voltando ao caso real, tive que tomar uma decis\u00e3o r\u00e1pida para liberar espa\u00e7o do servidor do cliente e como n\u00e3o sabia se poderia excluir nenhum arquivo do servidor, essa a\u00e7\u00e3o de movimenta\u00e7\u00e3o de algumas bases que nem eram as principais solucionou o problema rapidamente e o SQL j\u00e1 estava no ar em poucos minutos.<\/p>\n<p>Ap\u00f3s subir o SQL, o cliente p\u00f4de validar com calma o motivo do espa\u00e7o em disco acabar de forma t\u00e3o r\u00e1pida.<\/p>\n<p>At\u00e9 o pr\u00f3ximo caso do dia a dia.<\/p>\n<p><b>Gostou dessa dica?<\/b><\/p>\n<p>Cadastre seu e-mail para receber novos Posts e curta minha <a href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\">P\u00e1gina no Facebook<\/a> para receber Dicas de Leituras e Eventos sobre SQL Server.<\/p>\n<p>Confira mais experi\u00eancias do Dia a Dia de um DBA no meu <a href=\"https:\/\/www.fabriciolima.net\/cursos-online\/treinamento-tarefas-do-dia-a-dia-de-um-dba-online\/\" target=\"_blank\">Treinamento de Tarefas do Dia a Dia de um DBA<\/a>.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>MCITP \u2013 Database Administrator<\/p>\n<p>Consultor e Instrutor SQL Server<\/p>\n<p>Trabalha com SQL Server desde 2006<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 Pessoal, Ap\u00f3s muito tempo sem postar minhas experi\u00eancias do dia a dia, vou compartilhar com voc\u00eas mais um caso que aconteceu comigo durante uma consultoria. Cen\u00e1rio: O servidor de banco de dados de um cliente estava com a letra &#8220;C:&#8221;\u00a0com ZERO de espa\u00e7o em disco dispon\u00edvel e com o servi\u00e7o do SQL Server parado. [&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":[3,6,942,991,33,280],"tags":[85,1195,1190,23,1189,1192,1194,1193,1153,1196,1191,33],"class_list":["post-3525","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-casos-do-dia-a-dia","category-consultoria-sql-server","category-dba-remoto","category-sql-server","category-virtual-pass-br","tag-alter-database","tag-base-recovery-pending","tag-bases-grande-sql","tag-dba","tag-espaco-em-disco-sql","tag-move-database","tag-mover-bases-de-dados","tag-mover-databases","tag-problema-sql-server","tag-recovery-pending","tag-sem-espaco-sql","tag-sql-server"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/3525","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=3525"}],"version-history":[{"count":0,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/3525\/revisions"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=3525"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=3525"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=3525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}