Compartilhar via


sp_attach_single_file_db (Transact-SQL)

Aplica-se: SQL Server

Anexa um banco de dados que é apenas um arquivo de dados ao servidor atual. sp_attach_single_file_db não pode ser usado com vários arquivos de dados.

Importante

Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. Em vez dessa função, recomendamos usar CREATE DATABASE <database_name> FOR ATTACH . Para saber mais, confira CRIAR BANCO DE DADOS. Não use esse procedimento em um banco de dados replicado.

Não anexe ou restaure bancos de dados de fontes desconhecidas ou não confiáveis. Esses bancos de dados podem conter um código mal-intencionado que pode executar um código Transact-SQL inesperado ou provocar erros modificando o esquema ou a estrutura física do banco de dados. Antes de usar um banco de dados de origem desconhecida ou não confiável, execute DBCC CHECKDB no banco de dados, em um servidor que não seja de produção. Além disso, examine o código, como procedimentos armazenados ou outro código definido pelo usuário, no banco de dados.

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_attach_single_file_db
    [ @dbname = ] N'dbname'
    , [ @physname = ] N'physname'
[ ; ]

Argumentos

@dbname [ = ] N'dbname'

O nome do banco de dados a ser anexado ao servidor. @dbname é sysname, sem padrão.

@physname [ = ] N'physname'

O nome físico, incluindo o caminho, do arquivo de banco de dados. @physname é nvarchar(260), sem padrão.

Esse argumento é mapeado para o FILENAME parâmetro da CREATE DATABASE instrução. Para saber mais, confira CRIAR BANCO DE DADOS.

Observação

Quando você anexa um banco de dados do SQL Server 2005 (9.x) que contém arquivos de catálogo de texto completo a uma instância de servidor mais recente do SQL Server, os arquivos de catálogo são anexados de seu local anterior junto com os outros arquivos de banco de dados, da mesma forma que no SQL Server 2005 (9.x). Para obter mais informações, veja Atualizar pesquisa de texto completo.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Conjunto de resultados

Nenhum.

Comentários

Use sp_attach_single_file_db somente em bancos de dados que foram desanexados anteriormente do servidor usando uma operação explícita sp_detach_db ou em bancos de dados copiados.

sp_attach_single_file_db Funciona apenas em bancos de dados que possuem um único arquivo de log. Quando sp_attach_single_file_db anexa o banco de dados ao servidor, ele cria um novo arquivo de log. Se o banco de dados for somente leitura, o arquivo de log será criado em seu local anterior.

Observação

Não é possível desanexar ou anexar um instantâneo do banco de dados.

Não use esse procedimento em um banco de dados replicado.

Permissões

Para obter informações sobre como as permissões são tratadas quando um banco de dados é anexado, consulte CREATE DATABASE.

Exemplos

O exemplo a seguir desanexa AdventureWorks2022 e, então, anexa um arquivo de AdventureWorks2022 para o servidor atual.

USE master;
GO
EXEC sp_detach_db @dbname = 'AdventureWorks2022';
EXEC sp_attach_single_file_db @dbname = 'AdventureWorks2022',
    @physname =
N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_Data.mdf';