Por que eu colocaria um banco de dados offline?

14

Por quais razões e em quais situações você usaria o ALTER DATABASE dbName SET OFFLINErecurso "Take Offline" .

Quais tarefas você pode executar com um banco de dados offline? Quais tarefas você pode executar apenas com um banco de dados offline?

Greg B
fonte

Respostas:

15

Você pode mover o arquivo MDF para outro servidor para colocá-lo online.

mfinni
fonte
4
+1, ou outra unidade / pasta / SAN ...
Chris S
Esse é o único uso para "colocar offline"?
Greg B
5
Não, eu posso pensar em outras razões. Imagine que você tem vários bancos de dados, para vários aplicativos. Um desses aplicativos está recebendo uma atualização do aplicativo front-end (aplicativo Web, cliente, quem sabe.) Você deseja desativar o acesso ao banco de dados por qualquer pessoa durante a atualização, mas não deseja desativar o servidor inteiro por causa dos outros bancos de dados. Esse pode ser um motivo para desativá-lo. Tenho certeza de que sua imaginação também pode ter outras razões.
mfinni
Minha imaginação não pode ter medo, daí a pergunta. Eu não acho que você poderia alterar um banco de dados offline, então eu não vejo como colocá-lo offline poderia ajudar no processo de atualização
Greg B
2
Greg B - eu disse especificamente atualizar o front-end, não o próprio banco de dados. No cenário que descrevi, o banco de dados permanece inalterado. Seria colocado offline para garantir que ninguém o esteja acessando durante a transição.
mfinni
18

Em ambientes de desenvolvimento / armazenamento temporário, às vezes é útil colocar um banco de dados offline para garantir que você esteja se conectando à instância correta do banco de dados no aplicativo e que não tenha uma cadeia de conexão suspensa em algum lugar.

Dito isso, nessa situação, é uma idéia muito melhor ter nomes de bancos de dados diferentes para os diferentes ambientes e um processo de compilação que configurará automaticamente as cadeias de conexão ...

Da mesma forma, eu gosto de colocar os bancos de dados offline por um período de tempo antes de descomissioná-los com a possibilidade de que, por algum motivo, eles precisem voltar a ficar online. Já fui mordido algumas vezes por desenvolvedores que têm ganchos que não conheço em um dos meus bancos de dados quando quero me livrar dele. Colocá-lo offline muito menos drástico e menos demorado do que excluí-lo e restaurá-lo, se necessário.

Outra coisa seria como uma salvaguarda de emergência. Eu já tive que fazer isso antes. Às vezes, é encontrado um bug desagradável no seu aplicativo que, embora não seja malicioso, ainda corrompe os dados no seu banco de dados. Colocar o banco de dados offline é uma maneira rápida de parar o sangramento até que você identifique o bug. Você pode colocá-lo novamente online para avaliar os danos no banco de dados.

squillman
fonte
2
Eu gosto da idéia de ficar off-line antes de excluir
Greg B
8
Idem. Eu tenho quatro mil bancos de dados ish em nossos ambientes de pré-produção. Às vezes é difícil saber quem é o dono do quê. Colocá-lo offline e aguardar os guinchos é ocasionalmente a única opção.
Michael Green
6

Embora algumas das respostas aqui possam fornecer algumas idéias sobre o que você pode fazer com um banco de dados com acesso restrito, pouco pode realmente ser feito com um banco de dados offline. Você não pode atualizar, atualizar, adicionar ou excluir dados, etc.

joeqwerty
fonte
2
Corrigir. Se você quiser fazer muito com o banco de dados, é melhor colocá-lo no modo de usuário único. Então você ainda restringe o acesso, mas pode fazer muito mais.
21810 Sean Howat
Você nem pode renomeá-lo!
Dima Fomin
0

Meu principal motivo, o que eu tenho que vender para os DBAs com mais frequência do que gostaria de enumerar ...

"A SAN precisa de reparo ... e não, eu não posso simplesmente trocar uma unidade a quente, o backplane / controladores estão com falha".

As instâncias de banco de dados se comportam muito mal quando seus discos desaparecem.

Portanto, eu desligo as instâncias SQL antes de colocar a SAN offline e as trago de volta uma de cada vez, para que elas não contestem recursos - a primeira instância pega todos os recursos do cluster e se torna o nó do Active DB, as instâncias subseqüentes são executadas como nós passivos.

George Erhard
fonte
-3

Há muitas razões pelas quais você precisaria fazer isso.

Por exemplo,

consider changing or upgrading the actual database program/binary...
consider changing or upgrading the schema or tables..
consider changing or upgrading index's..

O ponto mais importante ..

Is taking a backup.. to get a perfect snapshot in time.. 

(em alguns bancos de dados, você apenas cria um bloqueio em todas as tabelas)

Arenstar
fonte
+1, também DBMS mais antigo para desfragmentar ou reduzir o banco de dados.
Chris S
1
re: "alterando ou atualizando o esquema", dos manuais online "OFFLINE O banco de dados é fechado, encerrado de forma limpa e marcado como offline. O banco de dados não pode ser modificado enquanto estiver offline." Como você pode atualizar o esquema nessa situação?
Greg B
Desculpe ... eu estava me referindo a fazer alterações em um banco de dados inativo .. Sou um seguidor do MySQL, presumi que uma atualização ocorreria em um banco de dados marcado como offline, portanto, não havia nenhum problema de simultaneidade com nada além da alteração necessária. Talvez possamos deixar isso de fora ..: D
Arenstar 12/11/10
2
Bancos de dados reais suportam backups reais, você sabe. Você não precisa levar nada além de um brinquedo on-line para fazer um backup consistente e perfeito no tempo. Um banco de dados que exige uma trava ou algum outro mecanismo estúpido é um brinquedo. Realmente. Todos os principais bancos de dados não têm problemas com backups completos, consistentes, enquanto em uso pesado.
TomTom