AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 76741
Accepted
RBarryYoung
RBarryYoung
Asked: 2014-09-17 08:41:52 +0800 CST2014-09-17 08:41:52 +0800 CST 2014-09-17 08:41:52 +0800 CST

RESTORE falhando com o erro 32 do SO, arquivo sendo usado por outro processo

  • 772

Estou escrevendo um conjunto de procedimentos para (parcialmente) automatizar a implantação de banco de dados para um cliente, que geralmente funciona bem, mas às vezes um comando RESTORE está falhando com o erro 32 do sistema operacional, sobre um arquivo que está sendo usado por outro processo (detalhes abaixo).

Eu pesquisei isso extensivamente, mas encontrei pouco que se aplica ao meu caso específico. Suspeito que há algo que estou ignorando, mas simplesmente não consigo encontrá-lo.

Aqui está o comando:

RESTORE DATABASE [NBBC_Logistics] FROM DISK = '\\wpdboardq01\Shares\DbCopy\DevBackups\NBBC_Logistics_140916112310.bak' 
    WITH FILE=1, NOUNLOAD, STATS=10,
     MOVE 'NBBC_Logistics' TO 'D:\MSSQL2K12\MSSQL11.MSSQLSERVER\MSSQL\DATA\NBBC_Logistics.mdf',
     MOVE 'NBBC_Logistics_log' TO 'D:\MSSQL2K12\MSSQL11.MSSQLSERVER\MSSQL\DATA\NBBC_Logistics_log.ldf',
     REPLACE 
    ;

Isso resulta na seguinte mensagem de erro:

Msg 3634, Level 16, State 1, Line 11
The operating system returned the error '32(The process cannot access the file because it is being used by another process.)' while attempting 'RestoreContainer::ValidateTargetForCreation' on 'D:\MSSQL2K12\MSSQL11.DEV\MSSQL\DATA\NBBC_Logistics_log.ldf'.
Msg 3156, Level 16, State 8, Line 11
File 'NBCC_Logistics_Model2_log' cannot be restored to 'D:\MSSQL2K12\MSSQL11.DEV\MSSQL\DATA\NBBC_Logistics_log.ldf'. Use WITH MOVE to identify a valid location for the file.
Msg 3119, Level 16, State 1, Line 11
Problems were identified while planning for the RESTORE statement. Previous messages provide details.
Msg 3013, Level 16, State 1, Line 11
RESTORE DATABASE is terminating abnormally.

Algumas coisas a serem observadas:

  1. Isso só acontece em algumas das Instâncias SQL de recebimento, a maioria delas está executando comandos muito semelhantes sem nenhum problema.

  2. A instância que está falhando é aquela em que há várias instâncias SQL na mesma caixa (DEV e QA) e está tentando restaurar um backup de banco de dados do DEV para a versão QA do mesmo banco de dados.

  3. Outros bancos de dados nesta mesma instância podem executar seu comando RESTORE correspondente sem problemas.

  4. Pode ser relevante que os nomes dos arquivos lógicos de origem (mostrados no erro) sejam diferentes dos existentes nos BDs (nomeados no comando), no entanto, acredito que tenha casos em que isso funcione.

  5. Além disso, observe com atenção que o caminho do arquivo relatado pelo erro NÃO é o que estou especificando no MOVE, mas sim o caminho do arquivo original (que ainda possui os arquivos de banco de dados originais em uso pela instância DEV).

Portanto, parece que ele está tentando primeiro RESTAURAR os arquivos de banco de dados para seus locais de caminho originais e só então MOVÊ-los para o caminho que eu indicar. Isso está em contraste com o que o documento diz que faz, e obviamente seria totalmente impraticável em geral, já que alguém RESTAURANDO uma cópia do banco de dados não tem controle sobre onde os arquivos originais estavam e não poderia garantir que esses caminhos existiam e já não estavam em uso .

Qualquer ajuda seria muito apreciada.


Apenas para evitar algumas das respostas automáticas que não se aplicam:

  • O banco de dados de destino não está sendo usado por mim ou por qualquer outra pessoa.
  • Nem aparece emsp_lock
  • O comando especifica REPLACE, ele deve substituir o banco de dados existente
  • Os arquivos especificados não são abertos por nenhum outro processo do Windows
  • no entanto, o arquivo mencionado no erro é aberto pela outra instância Sql na caixa
  • o local do arquivo BAK em um compartilhamento não tem nada a ver com isso, copiá-lo localmente não altera nada, nem renomeá-lo.
  • os arquivos db e os caminhos especificados são os corretos para o banco de dados de destino
sql-server sql-server-2012
  • 3 3 respostas
  • 27236 Views

3 respostas

  • Voted
  1. Best Answer
    Sean Gallardy
    2014-09-17T10:31:29+08:002014-09-17T10:31:29+08:00

    Ao usar os arquivos de backup, certifique-se de usar o nome de arquivo lógico. Ao usar vários conjuntos de backup nos mesmos arquivos de backup, certifique-se de verificar se o arquivo que está sendo usado está correto.

    Neste caso:

    File 'NBCC_Logistics_Model2_log' cannot be restored to 'D:\MSSQL2K12\MSSQL11.DEV\MSSQL\DATA\NBBC_Logistics_log.ldf'. Use WITH MOVE to identify a valid location for the file.

    Parece que você tem o nome de arquivo lógico errado ou o backup errado dentro de um conjunto de backup. Eu sei que você apontou isso, mas faria sentido interrogar as informações no conjunto de backup e verificar novamente.

    • 3
  2. Mark E
    2018-08-30T15:13:35+08:002018-08-30T15:13:35+08:00

    Procure por 'erros de digitação' ou de sintaxe em seus nomes de arquivo, como '\\' no caminho. Resolva-os e sua declaração funcionará.

    (É claro que um erro de digitação no seu caminho é uma versão da resposta dada acima em relação a um nome de arquivo incorreto, mas apenas um caso específico desse problema!)

    • 0
  3. user3365079
    2018-04-10T22:30:02+08:002018-04-10T22:30:02+08:00

    Isso funcionou para mim para o erro 32 .. outro processo está usando.

    https://support.microsoft.com/en-in/help/3153836/operating-system-error-32-when-you-restore-a-database-in-sql-server-20

    Se você estiver restaurando de um conjunto de backup distribuído que contém dados FILESTREAM no SQL Server 2012 SP3, 2014 ou 2016, poderá receber esse erro. A correção é instalar a atualização cumulativa listada para sua versão no link acima (ou um SP ou CU posterior).

    • -2

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

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve