Existe uma maneira de desanexar um banco de dados sem excluí-lo?
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
Desanexar um banco de dados removerá sua entrada da lista interna de bancos de dados gerenciados pelo mestre, mas deixará o arquivo lá para reanexar. Isso muitas vezes pode não ser o melhor curso de ação a tomar, mas para fazê-lo, siga os documentos do MS para desanexar um banco de dados .
Você pode executar o seguinte, mas pode falhar se os usuários estiverem conectados ao banco de dados em sua instância:
Você sempre pode executar um sp_who2 rápido para ver quem está conectado ao seu banco de dados ou um mais completo :
Como o BradC respondeu, colocar um banco de dados 'offline' também é uma boa opção que tem seus próprios benefícios e desvantagens. A desanexação desbloqueia o arquivo para que você possa manipulá-lo enquanto ele é desanexado. Apenas observe que ter um banco de dados 'offline' pode fazer com que seus scripts ou tarefas de manutenção que varrem todos os seus bancos de dados relatem falhas. Ele ainda vai 'ver' o banco de dados, tentar acessá-lo, mas não conseguirá. Normalmente, a maioria dos scripts de manutenção que escrevo tem lógica para lidar com isso, mas muitos na natureza não apenas observam isso.
Sua pergunta é um pouco vaga, mas se você deseja trabalhar com os arquivos do banco de dados em disco sem que o SQL perca todos os metadados sobre o banco de dados, o que você deseja é colocar o banco de dados offline :
O banco de dados ainda é exibido na lista de servidores, mas não pode ser acessado até que você o coloque novamente online.
Esta instrução pode falhar se houver conexões ativas. Para forçá-lo, use
WITH ROLLBACK IMMEDIATE
:Agora mova seus arquivos e certifique-se de informar ao SQL onde procurá-los:
Em seguida, traga-o de volta on-line:
Em vez de desanexar um banco de dados, é sempre uma decisão sábia fazer backup (e restaurar em um servidor diferente)
Outra opção usando o PowerShell é usar dbatools -
Dismount-DbaDatabase
por exemplo, o comando abaixo se destaca com força (como precaução, usei -whatif para não executar nenhuma ação e apenas para imprimir o que o comando fará)
Se você tem um banco de dados separado e precisa de mais informações sobre isso, o dbatools o cobre usando
Get-DbaDetachedDatabaseInfo