none
Erro ao fazer um restore RRS feed

  • Pergunta

  • Boa tarde a todos, estou tentando fazer um restore no BD (SQL Server 2005) usando um caminho da rede,  utilizando o seguinte script :

    RESTORE

     

    DATABASE [PRODUCAO]

    FROM

     

    DISK = N'\\bmtlspdb01\n$\Backup Extra\Delsoft.bak'

    WITH

     

    FILE = 1,

    NOUNLOAD

     

    ,

    REPLACE

     

    ,

    STATS

     

    = 10

    GO

    mas esta me dando o seguinte erro:

    Cannot open backup device '\\bmtlspdb01\n$\Backup Extra\Delsoft.bak'. Operating system error 5(Acesso negado.).

    aguem tem alguma idéia do tipo de permissão que preciso dar na pasta, ou para o usuário do banco...?

    • Movido Gustavo Maia Aguiar terça-feira, 3 de novembro de 2009 12:56 (De:Programação avançada com o SQL Server)
    sexta-feira, 30 de outubro de 2009 18:51

Respostas

  • Sugiro que vc compartilhe diretamente a pasta onde está o backup, e não utilize o compartilhamento da unidade:

    Você vai passar a fazer referência assim: de "'\\bmtlspdb01\n$\Backup Extra" para "'\\bmtlspdb01\Backup Extra"

    Os servidores fazem parte de um domínio? O serviço do SQL está subindo com uma conta de domínio?
    Indico que você defina permissão para a conta que sobe o serviço do SQL... Se não estiver no domínio, defina controle total e faça um teste.

    Após esse ajuste, você pode testar também utilizando um Device Backup, apontando para este caminho na rede. E você tenta restaurar chamando o device, ex:

    RESTORE DATABASE [PRODUCAO] FROM [NOME DO DEVICE] 
    WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10 
    GO


    Abs.


    Ivan Candido - http://ivandba.spaces.live.com
    • Sugerido como Resposta Heberton Melo domingo, 1 de novembro de 2009 16:25
    • Marcado como Resposta Andre_Bel terça-feira, 3 de novembro de 2009 12:15
    sábado, 31 de outubro de 2009 13:35
  • Olá Andre Abel,

    Se você estiver utilizando um Device Backup não necessário você informa o caminho do backup, basta somente informa o nome do Device como mostra o exemplo que segue.

    -- CRIANDO UM BACKUP DEVICE

     EXEC sp_addumpdevice 'Disk', 'Heberton', 'C:\Backup\DbTeste.bak'

     GO

     

     -- BACKUP

     BACKUP DATABASE DbTeste

     TO Heberton

     WITH INIT, STATS = 50

     GO

     

     --RESTORE

     RESTORE DATABASE DbTeste

     FROM Heberton

     WITH RECOVERY,

            REPLACE

    Mas claro que esse não é o motivo do erro, pois você pode optar entre informa o caminha ou o nome do Backup Divece,

    Em fim aconselho você seguir a sugestão de Ivan em compartilhar a pasta onde está o backup.

    Caso tenha lhe ajudado não se esqueça de marca como útil, só assim ajudará a melhorar a qualidade do fórum.

    Heberton Melo
    MCP | MCTS em SQL Server 2008 | Projetista de Dados

    Blog: http://heberton-melo.spaces.live.com

    • Sugerido como Resposta Heberton Melo domingo, 1 de novembro de 2009 16:25
    • Marcado como Resposta Andre_Bel terça-feira, 3 de novembro de 2009 12:15
    domingo, 1 de novembro de 2009 16:24
  • André, esse path deve ser do seu servidor de produção. Na hora do restore você deve apontar para o caminho correto onde serão armazenados os datafiles no servidor onde você está realizando o restore, ou você deve ter a mesma estrutura de diretórios no mesmo servidor.
    Tenta fazer o restore pelo Management Studio e nas opções você modifica o path onde os arquivos serão restaurados ou utiliza a opção MOVE  no script de restore. Exemplo:

    -- Exemplo1:
    RESTORE DATABASE [PRODUCAO] FROM [NOME DO DEVICE] 
    WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10,
    MOVE '[NOME DO DATAFILE]' TO '[PATH + NOME FISICO DO ARQUIVO]'
    GO
    -- Exemplo2:
    RESTORE DATABASE MeuBanco FROM MeuBanco_Device 
    WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10, 
    MOVE 'MeuBanco_Data' TO 'D:\SQL\MeuBanco.mdf', 
    MOVE 'MeuBanco_Log' TO 'D:\SQL\MeuBanco.ldf' 
    GO

    Abs.


    Ivan Candido - http://ivandba.spaces.live.com

    • Marcado como Resposta Andre_Bel terça-feira, 3 de novembro de 2009 12:15
    terça-feira, 3 de novembro de 2009 11:11

Todas as Respostas

  • Que tipo de autenticação você está utilizando no SQLServer? Windows ou SQLServer???

    Se for SQLServer, você precisa dar acesso de leitura na pasta para o usuário (windows) que está configurado no serviço do SQLServer
    Se tiver utilizando Windows Authentication precisa dar acesso para o seu usuário.
    Tks. Fausto Fiorese Branco DBA - SQL Server 2k5 São Paulo - Brasil * http://dba-sqlserver.blogspot.com/
    sexta-feira, 30 de outubro de 2009 19:08
  • Estou utilizando o as duas autenticações, dei permissão para as duas autenticações (controle total ) para esta fazendo teste, e conticua o mesmo erro....
    sexta-feira, 30 de outubro de 2009 19:23
  • Sugiro que vc compartilhe diretamente a pasta onde está o backup, e não utilize o compartilhamento da unidade:

    Você vai passar a fazer referência assim: de "'\\bmtlspdb01\n$\Backup Extra" para "'\\bmtlspdb01\Backup Extra"

    Os servidores fazem parte de um domínio? O serviço do SQL está subindo com uma conta de domínio?
    Indico que você defina permissão para a conta que sobe o serviço do SQL... Se não estiver no domínio, defina controle total e faça um teste.

    Após esse ajuste, você pode testar também utilizando um Device Backup, apontando para este caminho na rede. E você tenta restaurar chamando o device, ex:

    RESTORE DATABASE [PRODUCAO] FROM [NOME DO DEVICE] 
    WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10 
    GO


    Abs.


    Ivan Candido - http://ivandba.spaces.live.com
    • Sugerido como Resposta Heberton Melo domingo, 1 de novembro de 2009 16:25
    • Marcado como Resposta Andre_Bel terça-feira, 3 de novembro de 2009 12:15
    sábado, 31 de outubro de 2009 13:35
  • Olá Andre Abel,

    Se você estiver utilizando um Device Backup não necessário você informa o caminho do backup, basta somente informa o nome do Device como mostra o exemplo que segue.

    -- CRIANDO UM BACKUP DEVICE

     EXEC sp_addumpdevice 'Disk', 'Heberton', 'C:\Backup\DbTeste.bak'

     GO

     

     -- BACKUP

     BACKUP DATABASE DbTeste

     TO Heberton

     WITH INIT, STATS = 50

     GO

     

     --RESTORE

     RESTORE DATABASE DbTeste

     FROM Heberton

     WITH RECOVERY,

            REPLACE

    Mas claro que esse não é o motivo do erro, pois você pode optar entre informa o caminha ou o nome do Backup Divece,

    Em fim aconselho você seguir a sugestão de Ivan em compartilhar a pasta onde está o backup.

    Caso tenha lhe ajudado não se esqueça de marca como útil, só assim ajudará a melhorar a qualidade do fórum.

    Heberton Melo
    MCP | MCTS em SQL Server 2008 | Projetista de Dados

    Blog: http://heberton-melo.spaces.live.com

    • Sugerido como Resposta Heberton Melo domingo, 1 de novembro de 2009 16:25
    • Marcado como Resposta Andre_Bel terça-feira, 3 de novembro de 2009 12:15
    domingo, 1 de novembro de 2009 16:24
  • Bom dia a todos, me desculpem por não responder antes, voltei a trabalhar só hj, rsrs.
    Ivan executei sua solução deu certo agora ele  esta lendo o diretório correto, mas esta dando a seguinte mensagem :

    Executed as user: AUTORIDADE NT\SYSTEM. Directory lookup for the file "M:\Microsoft SQL Server\MSSQL.1\MSSQL\Data\PRODUCAO_1.ndf" failed with the operating system error 3(O sistema não pode encontrar o caminho especificado.). [SQLSTATE 42000] (Error 5133)  File 'PRODUCAO_1' cannot be restored to 'M:\Microsoft SQL Server\MSSQL.1\MSSQL\Data\PRODUCAO_1.ndf'. Use WITH MOVE to identify a valid location for the file. [SQLSTATE 42000] (Error 3156)  Problems were identified while planning for the RESTORE statement. Previous messages provide details. [SQLSTATE 42000] (Error 3119)  RESTORE DATABASE is terminating abnormally. [SQLSTATE 42000] (Error 3013).  The step failed.


    lembrando que o diretório  "M:\Microsoft SQL Server\MSSQL.1\MSSQL\Data\PRODUCAO_1.ndf" existe "no server remoto"

    o sql busca esse caminho na máquina local ?
    terça-feira, 3 de novembro de 2009 10:56
  • André, esse path deve ser do seu servidor de produção. Na hora do restore você deve apontar para o caminho correto onde serão armazenados os datafiles no servidor onde você está realizando o restore, ou você deve ter a mesma estrutura de diretórios no mesmo servidor.
    Tenta fazer o restore pelo Management Studio e nas opções você modifica o path onde os arquivos serão restaurados ou utiliza a opção MOVE  no script de restore. Exemplo:

    -- Exemplo1:
    RESTORE DATABASE [PRODUCAO] FROM [NOME DO DEVICE] 
    WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10,
    MOVE '[NOME DO DATAFILE]' TO '[PATH + NOME FISICO DO ARQUIVO]'
    GO
    -- Exemplo2:
    RESTORE DATABASE MeuBanco FROM MeuBanco_Device 
    WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10, 
    MOVE 'MeuBanco_Data' TO 'D:\SQL\MeuBanco.mdf', 
    MOVE 'MeuBanco_Log' TO 'D:\SQL\MeuBanco.ldf' 
    GO

    Abs.


    Ivan Candido - http://ivandba.spaces.live.com

    • Marcado como Resposta Andre_Bel terça-feira, 3 de novembro de 2009 12:15
    terça-feira, 3 de novembro de 2009 11:11
  • Galera muito obrigado pela ajuda, Ivan fiz o que vc sugeriu e deu certinho, como eu estva querendo, obrigado tenha uma boa semana...
    terça-feira, 3 de novembro de 2009 12:14