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