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 / 140703
Accepted
Henrik Staun Poulsen
Henrik Staun Poulsen
Asked: 2016-06-09 01:06:39 +0800 CST2016-06-09 01:06:39 +0800 CST 2016-06-09 01:06:39 +0800 CST

Restaurar banco de dados com uma FileTable

  • 772

Temos um banco de dados SQL Server 2014 (build 12.0.24457.0) com duas tabelas, ambas são tabelas FileStream, a maior tem 2979466 linhas, SUM(cached_file_size)= 40564905472.

Tentamos restaurar esse banco de dados em nosso servidor de teste, mas leva muito tempo. Nosso DBA desistiu após 14 dias.

Alguém mais tentou restaurar um banco de dados com tabelas FileStream, com mais de alguns arquivos?

Estou executando este script para monitorar o progresso:

BEGIN TRY
    DROP TABLE #h 
END TRY
BEGIN CATCH
END CATCH

DECLARE @r INT=1, @percent_complete NUMERIC(9,2), @Extimated_Completion_Datetime DATETIME2(0)
CREATE TABLE #h ( start_time DATETIME2(0), percent_complete NUMERIC(9,2), Estimated_completion_time NUMERIC(9,2), HoursSinceStart NUMERIC(9,2), Extimated_Completion_Datetime DATETIME2(0), session_id INT, created_date datetime2(0))
DECLARE @d VARCHAR(19) , @e VARCHAR(max)


WHILE @r > 0 BEGIN 
    INSERT INTO #h
    SELECT start_time, percent_complete, CAST(ROUND(estimated_completion_time/3600000.0,1) AS DECIMAL(9,1)) AS Estimated_completion_time
    , CAST(ROUND(total_elapsed_time/3600000.0,1) AS DECIMAL(9,1)) AS HoursSinceStart
    , DATEADD(HOUR, CAST(ROUND(estimated_completion_time/3600000.0,1) AS DECIMAL(9,1)), GETDATE()) AS Extimated_Completion_Datetime
    , session_id
    , GETDATE()
    FROM
    sys.dm_exec_requests AS r
    WHERE
    r.session_id <> @@SPID
    AND r.session_id > 50
    AND command LIKE 'restore database'
    SELECT @r = @@ROWCOUNT

    select top 1 @percent_complete=percent_complete, @Extimated_Completion_Datetime=Extimated_Completion_Datetime from  #h ORDER BY created_date DESC
    SET @d = CONVERT(VARCHAR(19), @Extimated_Completion_Datetime, 121) 
    SET @e = CONVERT(VARCHAR(19), GETDATE(), 121) + ' we are ' + LTRIM(@percent_complete) + '% complete. We estimate to finish at: ' + @d
    RAISERROR('At %s ', 10, 1, @e) WITH NOWAIT


    --WAITFOR DELAY '00:00:10'
    WAITFOR DELAY '00:01:00'
END

Até agora eu tenho este resultado:

Em 2016-06-08 10:35:46, estamos 00,01% completos.
Em 2016-06-08 14:22:46, estamos 39,26% concluídos. Estimamos terminar em: 2016-06-08 18:22:47
Em 2016-06-08 14:23:46, estamos 39,27% concluídos. Estimamos terminar em: 2016-06-08 18:23:47
Em 2016-06-08 14:24:46, estamos 39,28% concluídos. Estimamos terminar em: 2016-06-08 18:24:47
...
Em 2016-06-09 08:33:07, estamos 44,80% concluídos. Estimamos terminar em: 2016-06-10 09:33:08
Em 2016-06-09 08:34:07, estamos 44,80% concluídos. Estimamos terminar em: 2016-06-10 09:34:08
Em 2016-06-09 08:35:07, estamos 44,80% concluídos. Estimamos terminar em: 2016-06-10 09:35:08
Em 2016-06-09 08:36:07, estamos 44,81% concluídos. Estimamos terminar em: 2016-06-10 09:36:08
Em 2016-06-09 08:37:07, estamos 44,81% concluídos. Estimamos terminar em: 2016-06-10 09:37:08
Em 2016-06-09 08:38:07, estamos 44,81% concluídos. Estimamos terminar em: 2016-06-10 09:38:08
Em 2016-06-09 08:39:07, estamos 44,82% concluídos. Estimamos terminar em: 2016-06-10 09:39:08
...
Em 2016-06-10 08:12:01, estamos 47,86% concluídos. Estimamos terminar em: 2016-06-12 08:12:02
Em 2016-06-10 08:13:01, estamos 47,86% concluídos. Estimamos terminar em: 2016-06-12 08:13:02

Não exatamente rápido. Conseguiu passar de 42% para 45% em 13h45, pelo que com a velocidade atual parece terminar às 13h45 de 27-06-2016, ou seja, em 18 dias. Para 44GB!

SELECT top 10000 resource_description AS resource_description, * 
FROM sys.dm_os_waiting_tasks
WHERE session_id=64

diz:

wait_type=BACKUPTHREAD

... às vezes BACKUPIOtambém

Então, configurei outra restauração para obter mensagens de restauração:

DBCC TRACEON(3604, 3605, 3014);
RESTORE DATABASE [VDCFileStreamhespotest] FROM  DISK = N'\\dkrdsvdcp19\MSSQL_Backup\Full\Misc\VDCFileStream_backup_2016_06_07_180004_7123139.bak' WITH  FILE = 1,  
NOUNLOAD,  REPLACE,  STATS = 1
, move 'VDCFileStream'      to 'P:\MSSQL\DPA\System\MSSQL10_50.DPA\MSSQL\DATA\UserDBs\VDCFileStream\VDCFileStreamDBhespo.mdf'
, MOVE 'VDCFileStream_log'  to 'P:\MSSQL\DPA\Log\Log02\VDCFileStream\VDCFileStreamDBhespo_log.ldf'
, MOVE 'VDCFileStreamF1'    to 'G:\VDCFileStream\FileStreamDatahespo'
Restore(VDCFileStreamhespotest): RESTORE DATABASE iniciado
Restore(VDCFileStreamhespotest): Abrindo o conjunto de backup
Restore(VDCFileStreamhespotest): processando os principais metadados
Restore(VDCFileStreamhespotest): O planejamento começa
Parâmetros de configuração do buffer de backup/restauração
Limite de memória: 32767 MB
Contagem de buffer: 6
Conjuntos de buffers: 2
MaxTransferSize: 1024 KB
Tamanho mínimo de transferência máxima: 1.024 KB
Espaço total do buffer: 12 MB
Contagem de dispositivos de dados tabulares: 1
Contagem de dispositivo de dados de texto completo: 0
Contagem de dispositivos de fluxo de arquivos: 1
Contagem de dispositivos TXF: 0
Alinhamento de E/S do sistema de arquivos: 512
Contagem de buffer de mídia: 6
Tamanho do buffer de mídia: 1024 KB
Contagem de buffer de codificação: 6
Restore(VDCFileStreamhespotest): Opções efetivas: Checksum=1, Compression=1, Encryption=0, BufferCount=6, MaxTransferSize=1024 KB
Restore(VDCFileStreamhespotest): Planejamento concluído
Restore(VDCFileStreamhespotest): Começando a restauração OFFLINE
Restore(VDCFileStreamhespotest): Banco de dados anexado como DB_ID=48
Restore(VDCFileStreamhespotest): Preparando contêineres
Restore(VDCFileStreamhespotest): os contêineres estão prontos
Restore(VDCFileStreamhespotest): Restaurando o conjunto de backup
Restore(VDCFileStreamhespotest): Tamanho total estimado para transferência = 45540792320 bytes
Restore(VDCFileStreamhespotest): Transferindo dados
1% processado.

Aqui, 5 dias depois, estamos na metade do caminho:mas o resto da viagem vai ser longo

sql-server sql-server-2014
  • 2 2 respostas
  • 702 Views

2 respostas

  • Voted
  1. Henrik Staun Poulsen
    2016-06-17T06:21:36+08:002016-06-17T06:21:36+08:00

    EDIT:
    finalmente consegui restaurar o banco de dados.
    Demorou apenas 124 minutos, quando alteramos algumas configurações no servidor.

    Encontrei as configurações aqui: https://support.microsoft.com/da-dk/kb/2160002

    e aqui https://technet.microsoft.com/en-us/library/cc778996.aspx

    Caso os links parem de funcionar: em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem NtfsDisableLastAccessUpdate e NtfsDisable8dot3NameCreation devem ser definidos como 1

    • 2
  2. Best Answer
    Kin Shah
    2016-06-13T11:01:52+08:002016-06-13T11:01:52+08:00

    Você está tentando restaurar um banco de dados de 45 GB com 32 GB de memória no servidor.

    O que você pode fazer é aumentar a memória (RAM) no servidor e jogar com

    1. Distribua seu backup em vários LUNs ou discos.
    2. Use BUFFERCOUNT, BLOCKSIZE,MAXTRANSFERSIZE parâmetros de backup junto com INIT& COMPRESSION(você está usando, como vejo em sua saída) para ajustar seu backup.
    3. Não use CHECKSUM durante o backup, pois isso pode contribuir para um tempo de backup mais longo. Em vez disso, tente restaurar o backup em um servidor diferente para testá-lo - isso confirmará que você pode restaurá-lo e, em seguida, execute CHECKDB para confirmar que não há corrupção.

    A partir de agora, você está recebendo apenas 6 MB, o que é muito baixo.

    • 1

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