A importância do passado técnico na vida de um gestor…

Antes de qualquer palavra escrita a respeito do assunto relacionado ao título deste post, quero ressaltar que esta é apenas a minha visão e não representa nenhum caso ou cenário específico que eu por ventura já tenha visto e/ou vivenciado. Há algum tempo já se fala muito em globalização, informação, a velocidade desta mesma informação […]

MVP, Pythian e SQLSat Porto

Fala galera, várias novidades pra contar pra vocês… Vamos lá.   MVP   Dia ‘20140701’ chegou e trouxe o dia em que eu renovaria ou não meu título de MVP em SQL Server, e depois de muita ansiedade finalmente o tão aguardado e-mail chegou. Pois é, fui novamente abençoado com o título MVP em SQL […]

Aplicando Tratamento de Erros no Microsoft SQL Server 2012 e 2014 – Utilizando o Comando THROW.

Bom tarde, Comunidade e Amantes do Microsoft SQL Server. Tudo bem? No último mês de Abril a Microsoft lançou a última versão do Microsoft SQL Server, conhecida como 2014, que internamente é tratada como versão de número 12. Mas ainda estou focado em evoluir o meu conhecimento e experiência na versão 2012, que particularmente foi […]

Clustered Columnstore Indexes – part 34 (“Deleted Segments Elimination”)

Continuation from the previous 33 parts, starting from http://www.nikoport.com/2013/07/05/clustered-columnstore-indexes-part-1-intro/ Segment Elimination for Deleted Row Groups After some very interesting and inspiring conversations during SQLBits, I came to an idea of testing a Segment Elimination while working with a fully deleted…

Tunning no SharePoint e SQL Server com o Developer Dashboard

  Fala galera, mais um artigo no WIKI: “Tunning no SharePoint com o Developer Dashboard” http://social.technet.microsoft.com/wiki/pt-br/contents/articles/25451.sharepoint-2013-tunning-no-sharepoint-com-o-developer-dashboard.aspx Abraço, Demétrio Silva

Recuperando a base de sistema tempdb após um crash de disco!

Olá pessoal tudo certo? Espero que sim! Hoje irei simular a perda de um disco com os arquivos da base de sistema tempdb em uma instalação do SQL Server stand-alone, após o crash da instância, irei mostrar como você pode contornar a situação! Vamos lá!

Simulando o problema...

Tenho dois discos, o disco T: é exclusivo da TEMPDB.


Rodando o comando sp_helpfile no banco de dados TEMPDB, veja que os dois arquivos estão no disco T:


Parei o serviço da instância do SQL Server via Configuration Manager, por estar em um SQL Server stand-alone também seria possível fazê-lo através de outros mecanismos como por exemplo usando o NET STOP.:


Depois fui até o Disk Management, cliquei com o botão direito sobre o disco T:, selecionei “Delete Volume” e confirmei a operação:
 


Pronto, o disco T: está fora da jogada e os arquivos do TEMPDB também:


De volta ao Configuration Manager, tentei iniciar a instância do SQL Server:
 

Não funcionou, fui até o diretório de log da instância, e abri o ERRORLOG:


No ERRORLOG visualizei os seguintes erros no final do arquivo:

2014-05-30 13:26:22.24 spid10s     Clearing tempdb database.
2014-05-30 13:26:22.24 spid10s     Error: 5123, Severity: 16, State: 1.
2014-05-30 13:26:22.24 spid10s     CREATE FILE encountered operating system error 3(The system cannot find the path specified.) while attempting to open or create the physical file 'T:\Data\tempdb.mdf'.
2014-05-30 13:26:22.29 spid10s     Error: 17204, Severity: 16, State: 1.
2014-05-30 13:26:22.29 spid10s     FCB::Open failed: Could not open file T:\Data\tempdb.mdf for file number 1.  OS error: 3(The system cannot find the path specified.).
2014-05-30 13:26:22.33 spid10s     Error: 5120, Severity: 16, State: 101.
2014-05-30 13:26:22.33 spid10s     Unable to open the physical file "T:\Data\tempdb.mdf". Operating system error 3: "3(The system cannot find the path specified.)".
2014-05-30 13:26:22.45 spid10s     Error: 1802, Severity: 16, State: 4.
2014-05-30 13:26:22.45 spid10s     CREATE DATABASE failed. Some file names listed could not be created. Check related errors.
2014-05-30 13:26:22.45 spid10s     Could not create tempdb. You may not have enough disk space available. Free additional disk space by deleting other files on the tempdb drive and then restart SQL Server. Check for additional errors in the event log that may indicate why the tempdb files could not be initialized.
2014-05-30 13:26:22.46 spid10s     SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no user action is required.

Resolvendo o problema...

Para superarmos este problema, temos que subir o SQL Server usando o parâmetro /f e o traceflag 3608, os mesmos usados no post: (http://sqlmagu.blogspot.com.br/2014/01/movimentacao-incorreta-da.html). O parâmetro -f, indica que quero subir o SQL Server com uma configuração mínima, montando apenas o Resource Database e o master. E o trace flag 3608 serve para não fazer o recovery dos bancos de dados de usuário. Uma vez que meu SQL Server é uma instalação stand alone, irei usar o NET START num prompt de comando elevado. E não se esqueça de trocar o texto em vermelho pelo nome da sua instância do SQL Server:

NET START MSSQL$SQLTEST /f /t3608

Se tudo estiver correto vocês verão a mensagem abaixo:


Notem que na snap-in de Services, o serviço da instância do SQL Server está iniciado:


Como estamos no modo mínimo, apenas um sysadmin poderá se logar por vez no SQL Server, então, vou me conectar ao SQL Server via SQLCMD rodando o comando abaixo:

SQLCMD –S .\SQLTEST –E
  
O –S server para indicar o nome da instância, enquanto que o –E indica uma conexão com login integrado, ou seja, o usuário que está logado no Windows deve possuir privilégios para acessar o SQL Server. Se o comando der certo, estaremos dentro do SQL Server:


Agora basta executarmos um ALTER DATABASE e apontar os arquivos da TEMPDB para um caminho novo em outro disco. Para saber qual nome dos arquivos da TEMPDB que foram perdidos junto com o disco T:,  rode o comando abaixo:

SELECT * FROM SYSALTFILES WHERE DBID = 2
GO

Você verá algo como a seguir:


Agora vou rodar os comandos abaixo para apontar novos caminhos para estes arquivos: 

ALTER DATABASE TEMPDB MODIFY FILE (NAME=’TEMPDEV’, FILENAME=’C:\DATA\TEMPD.MDF’)
GO

ALTER DATABASE TEMPDB MODIFY FILE (NAME=’TEMPLOG’, FILENAME=’C:\LOG\TEMPLOG.LDF’)
GO 

Agora, saia do SQLCMD pressionando CTRL + C, pare o serviço do SQL Server e inicie-o normalmente. Se o serviço iniciar sem problemas, vá até o Management Studio, conecte-se na instância e dispare os comandos abaixo:

USE TEMPDB
GO
SP_HELPFILE 

Pronto! É possível ver que os arquivos estão localizados no novo caminho dentro da unidade "C":
 

Espero que tenham gostado do post! Um abraço!
http://www.virtualpass.com.br/

Recuperar DML através do Transaction Log

Todos sabem que quando é feita uma operação no banco muita coisa passa pelo Transaction Log. Pode ser de minimamente logado ou até quase absolutamente tudo e todo mundo sabe que é possível restaurar tudo do que foi feito através dos arquivos de backup. O script abaixo é o tipo de script que vale muito ser guardado com todo o carinho … Continuar lendo

Um pouquinho de PowerShell – Criando usuários locais no Windows Server

Olá pessoal, Minha área não é e nunca foi PowerShell, mas aqui onde trabalho a equipe administra mais de 500 servidores e sabe-se lá quantas instâncias e estávamos com a necessidade de criar os usuários locais no Windows Server para todos os membros da equipe de DBA. Com um pouco de pesquisa na internet e a ajuda […]

#Dica – Meu SQL Server foi reiniciado! Quando?

Fala galera, Uma forma rápida para descobrir desde quando o SQL Server está rodando é a seguinte:   Abraços e até uma próxima

Novo canal Youtube

Estou aqui pra divulgar um novo canal do youtube o SQL 8k. A ideia deste canal surgiu há algum tempo e muito conteudo foi sendo gerado para que esse canal se tornasse realidade. Mais recentemente fizemos um vídeo com os palestrantes do SQL Saturday #284 para o evento e este é o vídeo que abre os…
Go to Top