Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Desanexa uma base de dados que atualmente não está em uso de uma instância de servidor e, opcionalmente, executa-se UPDATE STATISTICS em todas as tabelas antes de ser destacada.
Para que uma base de dados replicada seja destacada, tem de ser inédita. Para mais informações, consulte a secção de Observações mais adiante neste artigo.
Transact-SQL convenções de sintaxe
Sintaxe
sp_detach_db
[ [ @dbname = ] N'dbname' ]
[ , [ @skipchecks = ] N'skipchecks' ]
[ , [ @keepfulltextindexfile = ] N'keepfulltextindexfile' ]
[ ; ]
Arguments
[ @dbname = ] N'dbname'
O nome da base de dados a ser destacada.
@dbname é sysname, com um padrão de NULL.
[ @skipchecks = ] N'skipchecks'
Especifica se deve saltar ou executar UPDATE STATISTICS.
@skipchecks é nvarchar(10), com um padrão de NULL. Para saltar UPDATE STATISTICS, especifique true. Para executar UPDATE STATISTICSexplicitamente , especifique false.
Por defeito, UPDATE STATISTICS é realizado para atualizar informações sobre os dados nas tabelas e índices. O desempenho UPDATE STATISTICS é útil para bases de dados que vão ser movidas para suportes apenas de leitura.
[ @keepfulltextindexfile = ] N'keep fulltextindexfile'
Especifica que o ficheiro índice em texto completo associado à base de dados que está a ser destacada não é eliminado durante a operação de desligamento da base de dados.
@keepfulltextindexfile é nvarchar(10), com um padrão de true.
- Se @keepfulltextindexfile for
false, todos os ficheiros índice em texto completo associados à base de dados e os metadados do índice em texto completo são eliminados, a menos que a base de dados seja apenas de leitura. - Se
NULLoutrue, os metadados relacionados com o texto integral forem mantidos.
Importante
Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.
Valores de código de retorno
0 (sucesso) ou 1 (fracasso).
Conjunto de resultados
Nenhum.
Observações
Quando uma base de dados é destacada, todos os seus metadados são eliminados. Se a base de dados era a base de dados padrão de quaisquer contas de login, master torna-se a base de dados predefinida.
Observação
Para informações sobre como visualizar a base de dados padrão de todas as contas de login, consulte sp_helplogins. Se tiveres as permissões necessárias, podes usar o ALTER LOGIN para atribuir uma nova base de dados por defeito a um login.
Limitações
Uma base de dados não pode ser destacada se algum dos seguintes pontos for verdadeiro:
A base de dados está atualmente em uso. Para mais informações, consulte Obter acesso exclusivo.
Se replicada, a base de dados é publicada.
Antes de poderes desligar a base de dados, tens de desativar a publicação executando sp_replicationdboption.
Se não conseguires usar
sp_replicationdboption, podes remover a replicação executando sp_removedbreplication.Existe um snapshot da base de dados na base de dados.
Antes de poderes separar a base de dados, tens de eliminar todos os seus snapshots. Para mais informações, consulte Drop a Database Snapshot.
Um snapshot de base de dados não pode ser destacado ou anexado.
A base de dados está a ser espelhada.
A base de dados não pode ser destacada até que a sessão de espelhamento da base de dados seja terminada. Para mais informações, consulte Remoção do Espelhamento de Base de Dados (SQL Server).
A base de dados é suspeita.
Deve colocar uma base de dados suspeita em modo de emergência antes de poder desligar a base de dados. Para mais informações sobre como colocar uma base de dados em modo de emergência, consulte ALTER DATABASE.
A base de dados é uma base de dados do sistema.
Obtenha acesso exclusivo
A separação de uma base de dados requer acesso exclusivo à base de dados. Se a base de dados que queres desligar estiver em uso, antes de a poderes destacar, define a base de dados em SINGLE_USER modo para obter acesso exclusivo.
Antes de definir a base de dados para SINGLE_USER, verifique se a AUTO_UPDATE_STATISTICS_ASYNC opção está definida para OFF. Quando esta opção está definida para ON, o thread em segundo plano usado para atualizar estatísticas liga-se à base de dados, e não consegue aceder à base de dados em modo de utilizador único. Para obter mais informações, consulte Definir um banco de dados para o modo de usuário único.
Por exemplo, a seguinte ALTER DATABASE declaração obtém acesso exclusivo à base de dados AdventureWorks2025 depois de todos os utilizadores atuais se desconectarem da base de dados.
USE master;
ALTER DATABASE AdventureWorks2022
SET SINGLE_USER;
GO
Para forçar os utilizadores atuais a saírem da base de dados imediatamente ou dentro de um número de segundos especificado, também pode usar a ROLLBACK opção.
ALTER DATABASE <database_name>
SET SINGLE_USER
WITH ROLLBACK <rollback_option>;
Para obter mais informações, consulte ALTER DATABASE.
Reanexar uma base de dados
Os ficheiros destacados permanecem e podem ser reanexados usando CREATE DATABASE (com a FOR ATTACH opção ou).FOR ATTACH_REBUILD_LOG Os ficheiros podem ser movidos para outro servidor e anexados lá.
Permissions
Requer a pertença ao papel fixo de administrador do sistema ou ao papel db_owner da base de dados.
Examples
Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que pode ser descarregado da página inicial de Exemplos e Projetos da Comunidade do Microsoft SQL Server.
O exemplo seguinte destaca a AdventureWorks2025 base de dados com @skipchecks definido em true.
EXECUTE sp_detach_db 'AdventureWorks2022', 'true';
O exemplo seguinte destaca a AdventureWorks2025 base de dados e mantém os ficheiros de índice em texto completo e os metadados do índice em texto completo. Este comando executa UPDATE STATISTICS, que é o comportamento padrão.
EXECUTE sp_detach_db
@dbname = 'AdventureWorks2022',
@keepfulltextindexfile = 'true';