Usuário com melhor resposta
[Dúvida] Take database offline

Pergunta
-
Pessoal, boas!
Me tirem um dúvida, estou precisando mudar um arquivo de log de diretório, para isso o primeiro passo a ser feito é colocar o banco em estado Offline, eu cliquei com o botão direto no banco >> Task >> Take Offline, porém o SQL Server está nesse processo a mais de 7 horas! Talvez tenha relação, mas esse meu banco tem 137gb... É normal essa demora devido ao tamanho do banco?
Valeu!
Abraços!
Respostas
-
Damasceno,
A demora pode estar sendo causada por conexoes que estao usando essa database. Verifique se existem conexoes para essa database e finalize-as.
Voce poderá ver as conexoes abertas em:
USE masterSELECT * FROM sys.sysprocesses WHERE dbid = DB_ID('SeuDB')
Ou forçar fechar todas as conexoes...
ALTER DATABASE <SeuDB> SET OFFLINE WITH ROLLBACK IMMEDIATE
att.
Rafael Melo- Marcado como Resposta Bruno M Damasceno terça-feira, 6 de setembro de 2011 13:37
Todas as Respostas
-
Seguem alguns links de apoio:
http://www.mcdbabrasil.com.br/modules.php?name=News&file=article&sid=257
http://social.technet.microsoft.com/Forums/pt-BR/sqlserver2000pt/thread/83d5ecba-7976-4957-90a3-c448a16c5949/
Att.,
Marco Antônio Pinheiro / MCTS - MCC http://marcoantoniopinheiro.blogspot.com -
-
Damasceno,
A demora pode estar sendo causada por conexoes que estao usando essa database. Verifique se existem conexoes para essa database e finalize-as.
Voce poderá ver as conexoes abertas em:
USE masterSELECT * FROM sys.sysprocesses WHERE dbid = DB_ID('SeuDB')
Ou forçar fechar todas as conexoes...
ALTER DATABASE <SeuDB> SET OFFLINE WITH ROLLBACK IMMEDIATE
att.
Rafael Melo- Marcado como Resposta Bruno M Damasceno terça-feira, 6 de setembro de 2011 13:37
-
Damasceno,
Não é normal não, o tamanho do banco não influencia na hora de coloca-lo offline ou realizar um detach.
O que provavelmente estava acontecendo é que alguem estava utilizando seu banco, portanto seu processo entrou em lock, veja que para se colocar uma base offline, não necessariamente uma query deve estar sendo rodada, apenas alguem conectado ja teria problemas.
Para se verificar os locks, execute essa query:
SELECT * FROM SYS.SYSPROCESSES WHERE BLOCKED <> 0
Provavelmente na primeira coluna ira aparecer o SPID da sua sessão cuja qual voce tentou coloca-lo offline, a terceira coluna, ira aparecer qual SPID esta bloqueando.
Para ver se existe alguem na base, execute:
SP_WHO2Analise se essa pessoa esta fazendo algo, se não, pode matar a sessão:
KILL SpId
Outra coisa, para a transferencia de disco de um arquivo de log, voce não iria conseguir fazer com a base simplismente offline, com ela simplismente offline, só os usuarios que não conseguirao se logar nela e utilizar seus objetos, mas a mesma ainda esta sendo reconhecida pelo SQL Server, portanto a movimentação do arquivo fisico se tornaria impossivel.
O detach e atach ao meu ver é a melhor opção, porem outras opções como a criação de um novo arquivo de log com a base online no novo destino e a deleção do arquivo de log antigo podem ser uma alternativa para que essa manobra seja feita online.
Fabrizzio A. Caputo
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -