Artigo: 224071 - Última revisão: terça-feira, 2 de Outubro de 2007 - Revisão: 15.5

Como mover bases de dados do SQL Server para uma nova localização utilizando funções de desligar e anexar no SQL Server

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo descreve como alterar a localização dos ficheiros de dados e os ficheiros de registo para qualquer base de dados Microsoft SQL Server 2005, SQL Server 2000 ou SQL Server 7.0.

Para mais informações sobre como mover bases de dados de sistema do SQL Server 200 8 , consulte o tópico "de bases de mover sistema dados" no SQL Server Books Online. Para ver este tópico, visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms345408.aspx (http://msdn2.microsoft.com/en-us/library/ms345408.aspx)

Mais Informação

Os passos que tem de seguir para alterar a localização para algumas bases de dados de sistema do SQL Server variam de passos que tem de seguir para alterar a localização para bases de dados de utilizador. Nestes casos especiais são descritos em separado.

Nota Bases de dados de sistema do SQL Server 7.0 não são compatíveis com o SQL Server 2000. Não anexe o SQL Server 7.0 principal , modelo , msdb ou distribuição bases de dados para o SQL Server 2000. Se estiver a utilizar o SQL Server 2005, pode anexar apenas bases de dados do SQL Server 2005 a uma instância. Todos os exemplos neste artigo partem do princípio que o SQL Server está instalado na pasta D:\Mssql7. Além disso, os exemplos partem do princípio de que todos os ficheiros de dados e ficheiros de registo são localizados na pasta de D:\Mssql7\Data predefinido. Os exemplos mover os ficheiros de dados e os ficheiros de registo para todas as bases de dados para o E:\Sqldata pasta.

Seguem-se a localização de dados predefinida para o SQL 2000 e as edições de 2005:

Pré-requisitos

  • Tornar um actual cópia de segurança de bases de dados, especialmente a base de principal dados a partir da respectiva localização actual.
  • Tem de ter permissões de administrador (sa) de sistema.
  • Deve souber o nome e a localização actual de todos os ficheiros de dados e ficheiros da base de dados de registo.

    Nota Pode determinar o nome e a localização actual da todos os ficheiros que utiliza uma base de dados, utilizando o procedimento armazenado sp_helpfile : utilização
    use <database_name>
    go
    sp_helpfile
    go
  • Deve ter acesso exclusivo à base de dados que está a mover. Se tiver problemas durante o processo e se não conseguir aceder a uma base de dados que moveu ou se não conseguir iniciar o SQL Server, examine o registo de erros do SQL Server e SQL Server Books Online para mais informações sobre os erros ocorrerem.

Mover bases de dados de utilizador

O exemplo seguinte move uma base de dados é denominado mydb . Esta base de dados contém um ficheiro de dados, mydb.mdf e um ficheiro de registo, Mydblog.ldf. Se a base de dados que está a mover tiver mais ficheiros de dados ou ficheiros de registo, especifique os ficheiros de uma lista delimitada por vírgulas no procedimento armazenado sp_attach_db . O procedimento sp_detach_db não altera independentemente da quantidade de ficheiros a base de dados contém uma vez que o procedimento sp_detach_db não lista os ficheiros.
  1. Desanexar a base de dados da seguinte forma:
    use master
       go
       sp_detach_db 'mydb'
       go
  2. Em seguida, copie os ficheiros de dados e os ficheiros de registo da localização actual (D:\Mssql7\Data) para a nova localização (E:\Sqldata).
  3. Reanexá a base de dados. Aponte para os ficheiros na nova localização da seguinte forma:
    use master
      go
      sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'
      go
    Verifique se a alteração de localizações de ficheiros utilizando sp_helpfile procedimento armazenado:
    use mydb
       go
       sp_helpfile
       go
    os valores da coluna nome de ficheiro deverão reflectir a nova localização.
Nota Artigo da base de dados de conhecimento da Microsoft 922804 descreve um problema para bases de dados do SQL Server 2005 num armazenamento ligado à rede. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
922804  (http://support.microsoft.com/kb/922804/ ) CORRECÇÃO: Volte depois de desanexar uma base de dados do Microsoft SQL Server 2005 que reside no armazenamento ligado à rede, não é possível ligar a base de dados do SQL Server
Considere este problema. Além disso, considere as permissões que são aplicadas a uma base de dados quando é desligado no SQL Server 2005. Para mais informações, consulte a secção "Desligar e anexar uma base de dados" do tópico "Proteger dados e log files" no SQL Server Books Online. Para ver este tópico, visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms189128.aspx (http://msdn2.microsoft.com/en-us/library/ms189128.aspx)

Mover bases de dados de exemplo

Para mover que os pubs exemplo da base de dados e a de base dados de exemplo no SQL Server 2000 ou no SQL Server 7.0, ou para mover dados de exemplo AdventureWorks e dados de exemplo AdventureWorksDW no SQL Server 2005, siga o mesmo procedimento para mover bases de dados de utilizador.

Mover a base de dados do modelo

SQL Server 7.0

  1. Certifique-se de que o SQL Server Agent não está utilizar actualmente.
  2. Siga o mesmo procedimento para mover bases de dados de utilizador.

SQL Server 2005 e SQL Server 2000

No SQL Server 2005 e no SQL Server 2000, não é possível desligar bases de dados de sistema utilizando o procedimento sp_detach_db armazenados. Quando tentar executar a instrução sp_detach_db 'Modelo' , receberá a seguinte mensagem de erro:
Servidor: Erro 7940, nível de 16, estado 1, linha 1
Sistema de bases de dados principal, modelo e msdb e tempdb não pode ser desligado.
Para mover a base de dados modelo , tem de iniciar do SQL Server juntamente com a opção - c , o -m opção e o sinalizador de rastreio 3608. Sinalizador de rastreamento 3608 impede que o SQL Server recuperar qualquer base de dados, excepto a base de dados principal .

Nota Não conseguirá aceder a quaisquer bases de dados utilizador depois de o fazer. Não tem de efectuar quaisquer operações, que não os seguintes passos enquanto utiliza este sinalizador de rastreio. Para adicionar o sinalizador de rastreamento 3608 como um parâmetro de arranque do SQL Server no SQL Server 2000 , siga estes passos:
  1. No SQL Server Enterprise Manager, clique com o botão direito do rato no nome do servidor e, em seguida, clique em Propriedades .
  2. No separador Geral , clique em arranque parâmetros .
  3. Adicione o novo parâmetro seguinte:
    -c -m - T3608
Se estiver a utilizar o SQL Server 2005, pode utilizar o Gestor de configuração do SQL Server para alterar os parâmetros de arranque do SQL Server serviço. Para mais informações sobre como alterar os parâmetros de arranque, visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms190737.aspx (http://msdn2.microsoft.com/en-us/library/ms190737.aspx)
Depois de adicionar a opção - c , o -m opção e o sinalizador de rastreamento 3608, siga estes passos:
  1. Pare e reinicie do SQL Server.
  2. Desligar a base de dados modelo utilizando os seguintes comandos:
    use master
       go
       sp_detach_db 'model'
       go
  3. Mova os ficheiros Model.mdf e Modellog.ldf a partir da pasta D:\Mssql7\Data para a pasta E:\Sqldata.
  4. Volte a ligar a base de dados modelo utilizando os seguintes comandos:
    use master
       go
       sp_attach_db 'model','E:\Sqldata\model.mdf','E:\Sqldata\modellog.ldf'
       go
  5. Remover - c -m - T3608 dos parâmetros de arranque no SQL Server Enterprise Manager ou no Gestor de configuração do servidor SQL.
  6. Pare e reinicie do SQL Server. Pode verificar a alteração de localizações de ficheiros utilizando o procedimento sp_helpfile armazenados. Por exemplo, utilize o seguinte comando:
    use model
       go
       sp_helpfile
       go

Mover a base de dados MSDB

SQL Server 7.0

Nota Se estiver a utilizar este procedimento ao mover as bases de dados modelo e msdb , deve voltar a ligar a base de dados de modelo pela primeira vez e, em seguida, volte a ligar a base de dados msdb . Siga estes passos:
  1. Certifique-se de que o SQL Server Agent não está utilizar actualmente.
  2. Siga o mesmo procedimento para mover bases de dados de utilizador.
Nota Se o agente do SQL Server estiver em execução, o procedimento armazenado sp_detach_db não terá êxito e receberá a seguinte mensagem:
Servidor: Erro 3702, 16, nível State 1, linha 0
Não consegue largar a base de dados 'msdb' porque está actualmente a ser utilizado.
DBCC execução concluída. Se DBCC imprimir mensagens de erro, contacte o administrador do sistema.

SQL Server 2005 e SQL Server 2000

Para mover a base de dados MSDB, tem de iniciar do SQL Server juntamente com a opção - c , o -m opção e o sinalizador de rastreio 3608. Sinalizador de rastreamento 3608 impede que o SQL Server recuperar qualquer base de dados, excepto a base de dados principal . Para adicionar a opção - c , o -m opção e o sinalizador de rastreamento 3608, siga os passos na secção "Mover a base de dados modelo". Depois de adicionar a opção - c, m - opção e o sinalizador de rastreamento 3608, siga estes passos:
  1. Pare e reinicie do SQL Server.
  2. Certifique-se de que o serviço SQL Server Agent está não em actualmente execução.
  3. Desanexar a base de dados msdb da seguinte forma:
    use master
    go
    sp_detach_db 'msdb'
    go
  4. Mover os ficheiros Msdbdata.mdf e Msdblog.ldf da localização actual (D:\Mssql8\Data) para a nova localização (E:\Mssql8\Data).
  5. Remover - c -m - T3608 na caixa parâmetros de arranque no Enterprise Manager.
  6. Pare e reinicie do SQL Server.

    Nota Se tentar voltar a ligar a base de dados msdb iniciando o SQL Server juntamente com a opção - c , o -m opção e o sinalizador de rastreamento 3608, poderá receber a seguinte mensagem de erro:
    Servidor: Erro 615, nível de 21, estado 1, linha 1
    Não foi possível encontrar a tabela de base de dados ID 3, o nome 'Modelo'.
  7. Volte a ligar a base de dados msdb da seguinte forma:
    use master
    go 
    sp_attach_db 'msdb','E:\Mssql8\Data\msdbdata.mdf','E:\Mssql8\Data\msdblog.ldf' 
    go
Nota Se utilizar este procedimento em conjunto com mover a base de dados modelo , está a tentar desligar a base de dados msdb enquanto desanexar a base de dados do modelo . Quando o fizer, terá de voltar a ligar a base de dados de modelo pela primeira vez e, em seguida, volte a ligar a base de dados msdb . Se anexá a base de dados msdb pela primeira vez, receberá a seguinte mensagem de erro quando tenta voltar a ligar a base de dados do modelo :
Msg 0, o nível de 11, State 0, 0 de linha
Ocorreu um erro grave no comando actual. Os resultados, se existirem, devem ser eliminados.
Neste caso, terá desanexar a base de dados msdb , volte a ligar a base de dados modelo e, em seguida, volte a ligar a base de dados msdb

Depois de mover a base de dados msdb , poderá receber a seguinte mensagem de erro:
Erro 229: EXECUTE permissão negada no objecto ' ObjectName ', da base de dados 'principal', 'dbo' do proprietário.
Este problema ocorre porque a propriedade cadeia foi interrompida. Os proprietários de base de dados para a base de dados msdb e para a base de dados principal não são iguais. Neste caso, a propriedade da base de dados msdb tinha sido alterada. Para contornar este problema, execute as seguintes instruções de Transact-SQL. Pode fazê-lo utilizando o OSQL.exe utilitário da linha de comandos (SQL Server 7.0 e SQL Server 2000) ou o sqlcmd.exe utilitário da linha de comandos (SQL Server 2005):
USE MSDB 
Go 
EXEC sp_changedbowner 'sa' 
Go
Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
272424  (http://support.microsoft.com/kb/272424/ ) Cadeia de propriedade de objecto verificação através de bases de dados depende do início de sessão é mapeado para os proprietários de objectos

Mover a base de dados principal

SQL Server 7.0 e SQL Server 2000

  1. Altere o caminho para os ficheiros de dados principal e os ficheiros de registo principal no SQL Server Enterprise Manager.

    Nota Também pode alterar a localização do registo de erros aqui.
  2. Clique com o botão direito do rato em SQL Server Enterprise Manager e clique em Propriedades .
  3. Clique em Parâmetros de inicialização para ver as seguintes entradas:
    -dD:\MSSQL7\data\master.mdf
       -eD:\MSSQL7\log\ErrorLog
       -lD:\MSSQL7\data\mastlog.ldf
    - d é o caminho totalmente qualificado para o ficheiro de dados da base de dados principal.

    -electrónico é o caminho totalmente qualificado para o ficheiro de registo de erros.

    -l é o caminho totalmente qualificado para o ficheiro de registo da base de dados principal.
  4. Altere estes valores da seguinte forma:
    1. Remova as entradas para os ficheiros Master.mdf e Mastlog.ldf actuais.
    2. Adicionar novas entradas especificando a nova localização:
      -dE:\SQLDATA\master.mdf
            -lE:\SQLDATA\mastlog.ldf
  5. Pare o SQL Server.
  6. Copie os ficheiros Master.mdf e Mastlog.ldf para a nova localização (E:\Sqldata).
  7. Reinicie o SQL Server.

SQL Server 2005

Para mais informações sobre como mover a base de dados principal e base de dados de recursos, visite o seguinte site da Web MSDN: http://msdn2.microsoft.com/en-us/library/ms345408.aspx (http://msdn2.microsoft.com/en-us/library/ms345408.aspx) poderá detectar uma falha ao mover a base de dados principal e base de dados de recursos. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
918695  (http://support.microsoft.com/kb/918695/ ) Poderá detectar uma falha ao instalar o SQL Server 2005 Service Pack 1 numa instância do SQL Server 2005

Mover a base de dados tempdb

Pode mover ficheiros tempdb utilizando a instrução ALTER DATABASE.
  1. Determinar os nomes de ficheiro lógico para a base de dados tempdb utilizando sp_helpfile da seguinte forma:
    use tempdb
    go
    sp_helpfile
    go
    o nome lógico para cada ficheiro incluído na coluna nome . Este exemplo utiliza os nomes de ficheiro predefinido de tempdev e templog .
  2. Utilize a instrução ALTER DATABASE, especificar como se segue o nome do ficheiro lógico:
    use master
    go
    Alter database tempdb modify file (name = tempdev, filename = 'E:\Sqldata\tempdb.mdf')
    go
    Alter database tempdb modify file (name = templog, filename = 'E:\Sqldata\templog.ldf')
    go
    deve receber as mensagens seguintes que confirmar a alteração:
    Mensagem 1
    O ficheiro 'tempdev' modificado sysaltfiles. Elimine ficheiro antigo depois de reiniciar o SQL Server.
    Mensagem 2
    O ficheiro 'templog' modificado sysaltfiles. Elimine ficheiro antigo depois de reiniciar o SQL Server.
  3. Utilizando sp_helpfile em tempdb irá não confirmar estas alterações até que reinicie o SQL Server.
  4. Pare e reinicie do SQL Server.

Referências

Para obter mais informações, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
912397  (http://support.microsoft.com/kb/912397/ ) O serviço SQL Server não é iniciado quando altera um parâmetro de arranque para uma instância de cluster do SQL Server 2000 ou do SQL Server 2005 para um valor que não é válido
274188  (http://support.microsoft.com/kb/274188/ ) Tópico "Resolução de problemas utilizadores isolados" no Books Online está incompleto
246133  (http://support.microsoft.com/kb/246133/ ) Como transferir os inícios de sessão e palavras-passe entre instâncias do SQL Server
168001  (http://support.microsoft.com/kb/168001/ ) Inícios de sessão do utilizador e permissões numa base de dados podem estar incorrectas depois de restaurado a base de dados

Para mais informações, consulte os seguintes livros:
Microsoft Corporation
Microsoft SQL Server 7.0 System Administration Training Kit
A Microsoft Press, 2001
Microsoft Corporation
MCSE Training Kit: Microsoft SQL Server 2000 System Administration (http://www.microsoft.com/mspress/books/sampchap/4885e.aspx)
A Microsoft Press, 2001
Microsoft Corporation
Microsoft SQL Server 2000 Resource Kit (http://www.microsoft.com/mspress/books/index/4939.aspx)
A Microsoft Press, 2001

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Palavras-chave: 
kbmt kbinfo KB224071 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 224071  (http://support.microsoft.com/kb/224071/en-us/ )