Como recuperar um banco de dados SQL usando a recuperação de linha de comando com o NMM

Ця стаття стосується Ця стаття не стосується Ця стаття не стосується якогось конкретного продукту. У цій статті зазначено не всі версії продукту.

Instructions


Este artigo documenta o procedimento a ser seguido para uma restauração bem-sucedida de um banco de dados SQL que foi submetido a backup com o NMM usando VDI

A restauração de um banco de dados SQL a partir do backup usando a linha de comando talvez seja necessária se houver um problema com a restauração a partir da GUI (Networker user para GUI do SQL Server ou o plug-in SSMS). A tarefa de navegação na GUI está lenta ou o banco de dados necessário não está visível na GUI para restauração.


Normalmente, os seguintes savesets são criados quando é feito backup de um só banco de dados:

Um backup completo de um só banco de dados terá os seguintes savesets:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:26:41 PM 119 MB 3209027663 cb completo MSSQL$FINANCE:testdb ==> Saveset
de backup completo SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:29:16 PM 5 KB 3192250597 cb incr MSSQL$FINANCE: testdb ==> saveset de metadados.


Um backup incremental de um só banco de dados terá os seguintes savesets:
SQLbackups.001 Data Domain sql12srv1 25/5/2016 13:34:14 PM 1320 MB 3141919250 cb incr MSSQL$FINANCE:testdb ==> Saveset
de backup de log SQLbackups.001 Data Domain sql12srv1 25/5/2016 13:40:31 PM 5 KB 3125142409 cb incr MSSQL$FINANCE:testdb ==> saveset de metadados Observe que cada backup tem um saveset


de metadados, que sempre é criado como nível 'incr' e normalmente é muito pequeno. Esse saveset contém informações que possibilitam ver a listagem do banco de dados na GUI "Networker User for SQL Server". Esse saveset é criado com cada backup de VDI do SQL. No entanto, é possível que esse saveset não exista se o processo de clonagem manual não incluir incorretamente esse saveset para clonagem e se os savesets originais não existirem mais. Se esse for o caso, a restauração da linha de comando é a única opção.

Depois de determinar de qual backup você precisa se recuperar, você pode construir a linha de comando. Veja abaixo um exemplo de um comando de restauração:

nsrsqlrc -s nsr-server -c sql12srv1 -t "5/25/2016 1:34:14 PM" -d "MSSQL$FINANCE:testdb-recovered" -C " 'testdb' = 'c:\recover\testdb.mdf', 'testdb_log' = 'c:\recover\testdb_log.ldf', 'testdb_log1' = 'c:\recover\testdb_log1.ldf'" "MSSQL$FINANCE:testdb"

No comando

acima, a opção "s" é especificar o nome do servidor do Networker,
-c option é usado para especificar o client de origem (se a recuperação estiver sendo feita em um host diferente do client de origem),
-d especifica o DB de destino para o qual restaurar. Esse banco de dados não existirá. O processo de restauração criará o banco de dados na instância de destino.
-C especifica que esta é uma restauração de cópia. Os parâmetros após -C especificam os nomes lógicos dos arquivos no banco de dados.  Observe que esses nomes precisam corresponder exatamente aos nomes lógicos do banco de dados que está sendo restaurado.  Se o banco de dados existir, execute as propriedades no nome do banco de dados na GUI do SSMS e procure em 'Files'.

Se a restauração estiver sendo feita em um SQL Server em cluster, adicione o "-A "virtual-Server name" ao comando de restauração.

O último componente no comando é o nome do banco de dados que está sendo restaurado, por exemplo, MSSQL$
FINANCE:testdb

Se você não tiver certeza de quais são os nomes lógicos dos arquivos de banco de dados, poderá fornecer um comando incompleto como abaixo:

nsrsqlrc -s nsr-server -c sql12srv1 -t "5/25/2016 1:34:14 PM" -d "MSSQL$FINANCE:testdb-recovered" -C " 'mydb' = 'c:\ recover\testdb.mdf'" "MSSQL$FINANCE:testdb"
43708:(pid 2144):Hora de início: Wed May 25 15:37:42 2016
43621:(pid 2144):Computer Name: SQL12SRV1 Nome de usuário: administrator
NSR_CLIENT: sql12srv1.jets.local;
                  NSR_SERVER: nsr-server;
37725:(pid 2144):Recuperando o banco de dados 'testdb' em 'testdb-recovered' ...
142468:(PID 2144):[2292]nsr/db_apps/bsmsql/rcstripes.c(222): Localizando o backup do saveset MSSQL$FINANCE:/testdb.
37945:(pid 2144):Realocação ausente para testdb de arquivo lógico.
37945:(pid 2144):Realocação ausente para arquivo lógico testdb_log.
37945:(pid 2144):Realocação ausente para arquivo lógico testdb_log1.
37946:(pid 2144):Nenhum arquivo lógico chamado mydb no banco de dados
original 29401:(pid 2144):D Erro na lista de realocação de arquivos atabase. A lista de arquivos real é:
37947:(pid 2144):       testdb = C:\Arquivos de Programas\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\
testdb.mdf 37947:(PID 2144):       testdb_log = C:\Arquivos de Programas\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log.ldf
37947:(PID 2144):       testdb_log1 = C:\Arquivos de Programas\Microsoft SQL Server\MSSQL11. FINANÇAS\MSSQL\DATA\testdb_log1.ldf

142468:(PID 2144):[2292]nsr/db_apps/bsmsql/rcstripes.c(222): Localizando o backup do saveset MSSQL$FINANCE:/testdb.
37945:(pid 2144):Realocação ausente para testdb de arquivo lógico.
37945:(pid 2144):Realocação ausente para arquivo lógico testdb_log.
37945:(pid 2144):Realocação ausente para arquivo lógico testdb_log1.
37946:(pid 2144):Nenhum arquivo lógico chamado mydb no banco de dados
original 29401:(pid 2144):D Erro na lista de realocação de arquivos do atabase. A lista de arquivos real é:
37947:(pid 2144):       testdb = C:\Arquivos de Programas\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\
testdb.mdf 37947:(PID 2144):       testdb_log = C:\Arquivos de Programas\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log.ldf
37947:(PID 2144):       testdb_log1 = C:\Arquivos de Programas\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log1.ldf

A operação de restauração foi concluída com erros. Consulte o arquivo de log de backup do módulo para obter detalhes. erro XBSA desconhecido 1169 (0x491) nsr/db_apps/bsmsql/rcovmain.cpp(442): Entrando em cleanUp(). NSR/db_apps/BSMSQL/rcovmain.cpp(500): Saindo da limpeza().
43709:(pid 2144):Tempo de parada: Qua 25 de maio 15:37:49 2016


***********************

No comando acima eu dei um nome lógico aleatório 'mydb' e o comando cospe o nome lógico real dos arquivos DB e a localização original deles. Você pode usar essas informações para criar seu comando de restauração. Observe que você precisa fornecer um caminho diferente para restaurar os dados. Você não pode e não deve fornecer o caminho de origem inicial no comando de restauração para evitar o risco de sobregravação dos dados existentes.

O tempo de backup para restauração pode ser obtido no comando mminfo. O horário de salvamento, conforme mostrado na saída, pode ser usado ou você pode relatar nsavetime e usar esse tempo.

por exemplo:

mminfo -avot -s nsr-server -q "client=sql12srv1,savetime >= yesterday"

SQLbackups.001 Data Domain sql12srv1 25/5/2016 13:26:41 PM 119 MB 3209027663 cb completo MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:29:16 PM 5 KB 3192250597 cb incr MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 25/5/2016 13:34:14 PM 1320 MB 3141919250 cb incr MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 25/5/2016 13:40:31 5 KB 3125142409 cb incr MSSQL$FINANCE:testdb

mminfo -avot -s nsr-server -q "client=sql12srv1,savetime >= yesterday" -r volume,client,sumflags,sumsize,level,savetime(25),nsavetime,name

SQLbackups.001 sql12srv1 cb 119 MB full 25/5/2016 1:26:41 PM 1464197201 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 5 KB incr 25/5/2016 13:29:16 PM 1464197356 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 1320 MB incr 25/5/2016 13:34:14 PM 1464197654 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 5 KB incr 25/05/2016 13:40:31 PM 1464198031 MSSQL$FINANCE:testdb

Observe que você pode especificar nsavetime/savetime do saveset de metadados ou do saveset de dados real. Qualquer uma delas funcionará.

Cenário 2:

Se os backups forem registrados no banco de dados de mídia sem os nomes do banco de dados, o tempo do backup necessário não será tão óbvio. Por exemplo, todos os backups de banco de dados têm os mesmos nomes de saveset abaixo:

SQLbackups.001 Data Domain sql12srv1 25/5/2016 16:43:15 PM 151 KB 2672168543 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/5/2016 16:45:26 PM 151 KB 2655391455 cb incr MSSQL$FINANCE:

Do acima não se pode dizer qual saveset tem o backup que você precisa.

Se o saveset de dados medata existir, os backups poderão ser navegados na GUI e você poderá encontrar o nome do banco de dados e o tempo de backup na GUI. Por exemplo, se o DB24 for necessário, a GUI mostrará o tempo de backup como "25/05/2016 16:49". 

kA5j0000000TNJYCA4_1_0

Se o saveset de metadados não estiver lá, você precisará executar o comando nsrinfo para localizar o horário de salvamento da restauração. e.; g se o mminfo mostra os savesets como abaixo:

SQLbackups.001 Data Domain sql12srv1 25/5/2016 16:43:15 PM 151 KB 2672168543 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:45:26 PM 151 KB 2655391455 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/5/2016 4:47:34 PM 151 KB 2638614367 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/5/2016 16:49:42 PM 151 KB 2621837279 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/5/2016 16:51:50 PM 151 KB 2605060191 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/5/2016 16:53:58 PM 151 KB 2588283103 cb incr MSSQL$FINANCE:Execute

nsrinfo nos horários de salvamento conforme abaixo para obter informações sobre o banco de dados que faz parte do saveset:

nsrinfo -n mssql -t "5/25/2016 4:43:15 PM" sql12srv1
Scanning client 'sql12srv1' for savetime 1464208995(5/25/2016 4:43:15 PM) do namespace
mssql MSSQL$FINANCE:/ DB21
MSSQL$FINANCE:/DB21%/files.1464208995.1464209044
2 objetos encontrados

nsrinfo -n mssql -t "5/25/2016 4:49:42 PM" sql12srv1
scanning client 'sql12srv1' for savetime 1464209382(5/25/2016 4:49:42 PM) do namespace
mssql MSSQL$FINANCE:/DB24 MSSQL$FINANCE:/DB24
%/files.1464209382.1464209437
2 objetos encontrados

Como os savesets não mostram os nomes de banco de dados, isso pode ser um pouco de tentativa e erro no cenário em que o saveset de metadados não existe. Use o tamanho aproximado do banco de dados como uma pista para restringir a consulta nsrinfo a alguns savesets.

Властивості статті
Article Number: 000022417
Article Type: How To
Востаннє змінено: 09 серп. 2022
Version:  4
Отримайте відповіді на свої запитання від інших користувачів Dell
Служба підтримки
Перевірте, чи послуги служби підтримки поширюються на ваш пристрій.