Powershell para DBAs SQL Server – Vídeo 09 (Restore)

E ai Pessoal!

Segue o nono vídeo da série de Powershell para DBAs SQL Server parao canal SQLCrespi e este vídeo é dedicado a algumas dúvidas que eu recebi e sugestões que eu recebi, o foco deste vídeo é sobre restore de banco de dados SQL Server.

Abaixo segue o código usado no exemplo.

#Conecta no servidor
$cred = Get-Credential sqlcrespi\administrator
Enter-PSSession -ComputerName win2016 -Credential $cred
#cria o banco de dados de controle
sqlps
Set-Location sqlserver:
$srv = new-Object Microsoft.SqlServer.Management.Smo.Server("win2016")
$database = New-Object -TypeName Microsoft.SqlServer.Management.Smo.database ($srv, 'teste')
$database.create()
write-host  $database.name $database.CreateDate
#cria a tabela de controle
Invoke-Sqlcmd -query 'create table teste.dbo.controle (id int, descricao varchar(20))'

###Insert para o backup full
Invoke-Sqlcmd -Query "insert into teste.dbo.controle values (1, 'full')"
#Backup Full
Backup-SqlDatabase -Database teste -ServerInstance 'win2016' -CompressionOption On -BackupFile '\\WINAD\backup\teste.bak'
###Insert para o backup Diff
Invoke-Sqlcmd -Query "insert into teste.dbo.controle values (2, 'differential')"
#backup Diff
Backup-SqlDatabase -Database teste -ServerInstance 'win2016' -CompressionOption On -BackupFile '\\WINAD\backup\teste.bak' -Incremental
###Insert para o backup Log
Invoke-Sqlcmd -Query "insert into teste.dbo.controle values (3, 'log')"
#backup log
Backup-SqlDatabase -Database teste -ServerInstance 'win2016' -CompressionOption On -BackupFile '\\WINAD\backup\teste.bak' -BackupAction Log
Invoke-Sqlcmd -Query "select id, descricao from teste.dbo.controle"

#Consulta o arquivo de backup
Invoke-Sqlcmd -query "Restore headeronly from disk = '\\winad\backup\teste.bak'" | Format-Table

###Restore e teste</div>
#Restaurar o banco com um novo nome e outra alocação para arquivos
#Como vimos no vídeo 8
Restore-SqlDatabase -ServerInstance win2016 -Database 'teste2' -BackupFile '\\winad\backup\teste.bak'

###Restaura com replace e realoca os arquivos para o diretório dados2 e log2
Invoke-Sqlcmd -Query "select id, descricao from teste.dbo.controle"
#O restore-sqldatabase é um cmd-let criado através da classe Microsoft.SQLServer.Management.SMO.Restore
###Restaurar o full e aplicar um a um dos backups que estão dentro de um arquivo
#cria o diretório
new-item -ItemType Directory 'c:\Dados3'
New-Item -ItemType Directory 'c:\Log3'
#Full com recovery
$ArqDado = New-Object 'Microsoft.SqlServer.Management.Smo.RelocateFile' -ArgumentList "teste", "c:\Dados3\teste.mdf"
$ArqLog = New-Object 'Microsoft.SqlServer.Management.Smo.RelocateFile' -ArgumentList "teste_Log", "c:\log3\teste.ldf"
Restore-SqlDatabase -ServerInstance win2016 -Database 'teste3'  -BackupFile '\\WINAD\backup\teste.bak' -RelocateFile @($arqdado, $arqlog)
Invoke-Sqlcmd -Query "select id, descricao from teste3.dbo.controle"
Invoke-Sqlcmd -query "Restore headeronly from disk = '\\winad\backup\teste.bak'" | Format-Table</div>
#Full sem recovery
$ArqDado = New-Object 'Microsoft.SqlServer.Management.Smo.RelocateFile' -ArgumentList "teste", "c:\Dados3\teste.mdf"
$ArqLog = New-Object 'Microsoft.SqlServer.Management.Smo.RelocateFile' -ArgumentList "teste_Log", "c:\log3\teste.ldf"
Restore-SqlDatabase -ServerInstance win2016 -Database 'teste3' -ReplaceDatabase -RestoreAction Database -FileNumber 1 -NoRecovery -BackupFile '\\WINAD\backup\teste.bak' -RelocateFile @($arqdado, $arqlog)
Invoke-Sqlcmd -Query "select id, descricao from teste3.dbo.controle"
get-childitem sqlserver:\sql\win2016\default\databases
#Diferencial sem recovery
Restore-SqlDatabase -ServerInstance win2016 -Database 'teste3'-NoRecovery -BackupFile '\\WINAD\backup\teste.bak' -FileNumber 2
#Invoke-Sqlcmd -Query "select id, descricao from teste3.dbo.controle"
#log
Restore-SqlDatabase -ServerInstance win2016 -database 'teste3'  -BackupFile '\\WINAD\backup\teste.bak' -FileNumber 3
Invoke-Sqlcmd -Query "select id, descricao from teste3.dbo.controle"

remove-item -force teste
get-childitem
Exit-PSSession

Como sempre deem um like no vídeo, compartilhem e deixem seus comentários.

Assine o canal. ;)
Abraço, Rodrigo

Um comentário em “Powershell para DBAs SQL Server – Vídeo 09 (Restore)

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.