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 / 286854
Accepted
sepupic
sepupic
Asked: 2021-03-12 06:53:21 +0800 CST2021-03-12 06:53:21 +0800 CST 2021-03-12 06:53:21 +0800 CST

A restauração do backup copy_only do banco de dados criptografado feito sem FORMAT, mas com INIT falha

  • 772

Tenho a tarefa de fazer cópias periódicas do banco de dados, duas vezes ao dia, e não devo quebrar nenhuma cadeia de backup nem acumular esses backups temporários. Então, tentei fazer um copy_onlybackup initpara substituir o único arquivo de backup.

Meu banco de dados é criptografado usando TDE .

Eu uso backup compressionno nível do servidor, "padrão de compactação de backup" é 1 no meu sys.configurations. Eu não uso a with compressionopção explícita no meu comando.

Aqui minha @@versão completa:

Microsoft SQL Server 2019 (RTM-CU8) (KB4577194) - 15.0.4073.23 (X64) 23 de setembro de 2020 16:03:08 Copyright (C) 2019 Microsoft Corporation Enterprise Edition (64 bits) no Windows Server 2016 Datacenter 10.0 (Build 14393) : ) (Hipervisor)

Meu problema é esse erro abaixo:

Msg 3241, Level 16, State 40, Line 8 A família de mídia no dispositivo 'W:\SQL_backup\copy_only\billing_prod2_test.bak' está formada incorretamente. O SQL Server não pode processar esta família de mídia. Msg 3013, Level 16, State 1, Line 8 RESTORE DATABASE está terminando de forma anormal.

Aqui está o código completo que executei:

backup database billing_prod2
to disk = 'W:\SQL_backup\copy_only\billing_prod2_test.bak'
with init, copy_only--, format;
go

restore database billing_1
from disk = 'W:\SQL_backup\copy_only\billing_prod2_test.bak'
with move 'billing_prod2' to 'E:\SQL_data\billing_1.mdf',
move 'billing_prod2_log' to 'E:\SQL_data\billing_1_log.ldf',
replace

A primeira vez que executa sem erros, o tamanho do backup completo é de cerca de 35Mb e restaura perfeitamente.

Na segunda vez, o backup é executado sem erros, mas estranhamente tem um tamanho de 260Mb. Esse é o tamanho que vejo no disco e o mesmo tamanho está escrito na saída do restore headeronlyque ainda executa sem erros. Mas quando eu faço restore databaseo erro mencionado acima aparece.

Tentei executar o mesmo código usando outro db e outro disco para salvar o backup mas o resultado é sempre o mesmo: na primeira vez funciona, na segunda vez o arquivo é sobrescrito mas tem tamanho diferente que não é apenas um tamanho duplo, é quase 10 vezes o tamanho inicial. restore headeronlynunca falha e sempre relata apenas um arquivo dentro do arquivo de backup, mas o tamanho é multiplicado e restore databasefalha.

sem formato

Somente quando adicionei formata opção, o tamanho do backup tornou-se normal e a restauração foi bem-sucedida.

com formato

Minha pergunta é: por que devo usar o formato com meu backup neste caso para poder restaurar?

sql-server backup
  • 1 1 respostas
  • 160 Views

1 respostas

  • Voted
  1. Best Answer
    Tibor Karaszi
    2021-03-12T07:10:58+08:002021-03-12T07:10:58+08:00

    Este é realmente um bug no SQL Server. Nós (@sepupic e eu) tivemos algumas discussões offline e conseguimos diminuir as circunstâncias: O erro ocorre quando:

    • Você usa TDE
    • O backup é compactado
    • Você especifica COPY_ONLY
    • Você especifica INIT
    • O arquivo de backup existe

    Reprodução:

    --The database has TDE
    --Backupfile doesn't exist at this stage
    
    BACKUP DATABASE db1Encrypted
    TO DISK = 'R:\db1Encrypted.bak'
    WITH INIT, COPY_ONLY, COMPRESSION, CHECKSUM
    
    --backup file 660 kb
    
    RESTORE VERIFYONLY FROM DISK = 'R:\db1Encrypted.bak' WITH CHECKSUM
    --OK
    
    
    --Backupfile now exists, below causes unreadable backup
    
    BACKUP DATABASE db1Encrypted
    TO DISK = 'R:\db1Encrypted.bak'
    WITH INIT, COPY_ONLY, COMPRESSION, CHECKSUM
    
    --backup file 3890 kb
    
    RESTORE VERIFYONLY FROM DISK = 'R:\db1Encrypted.bak' WITH CHECKSUM
    --Fails "The media family on device 'R:\db1Encrypted.bak' is incorrectly formed"
    
    • 3

relate perguntas

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?

  • 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