HELP !!! RESTORE (SQLSERVER 2008) VIA BAT

SQL Server

14/07/2016

Prezados, bom dia !

Sou inciante em banco de dados e estou desenvolvendo um script para otimização de rotinas no SQLServer.

Essa bat esta sendo executada em um ambiente Windows e, ao executar a bat os arquivos de backup são exibidos na tela, mas gostaria de uma solucão que, após selecionarmos um backup, o mesmo deveria ser preenchido na sintaxe correspondente de restore, por exemplo (RESTORE DATABASE teste FROM  DISK = N'C:\SQLServer\Backup\bkp_xpto.bak' ) . Gostaria que o backup selecionado, fosse preenchido automaticamente na sintaxe de restore, ou que eu pudesse apenas digitar  o nome do backup, na sintaxe de restore.--> RESTORE DATABASE teste FROM  DISK = N'C:\SQLServer\Backup\bkp_XPTO.bak.' )

Obs : Os arquivos de backup nunca são substituidos, eles são geradoscom data e hora.


SEGUE A ESTRUTURA DA BAT :

Att,

Douglas Ramos

==============================================================================================


Echo.
@echo [1] Listar backups
@echo ============================================
echo.
echo.
set /p opcao= Informe a opcao escolhida :
echo.



@if /i "%opcao%"=="1" goto 1
@if [%Check%]==[] GOTO :erro



:1



echo off


SET index=1


SETLOCAL ENABLEDELAYEDEXPANSION


cd C:\SQLServer\Backup

FOR %%f IN (*.bak) DO (
SET file!index!=%%f
ECHO !index! - %%f
SET /A index = !index! + 1
)



SETLOCAL DISABLEDELAYEDEXPANSION
@echo.
@echo.

SET /P selection = "Informe o backup que voce deseja restaurar:"





SET file%selection% >nul 2>&1


IF ERRORLEVEL 1 (
ECHO invalid number selected
EXIT /B 1.

)



========================= como e exibido ==================================

[1] Listar backups :


Informe a opcap escolhida :

1- bkp_dbxpto_20160513.bak
2-bkp_dbxpto_20160212.bak
3-bkp_dbxpto_20140220.bak
4-bkp_dbxpto_20130214.bak

Informe o backup que deseja restaurar :
Douglas Ramos

Douglas Ramos

Curtidas 0

Respostas

Vinicius Gaspar

Vinicius Gaspar

14/07/2016

Bom dia Douglas,

Utilizo um bat para restaurar a base de dados em SQL.

Segue a estrutura do bat que eu utilizo:

@ECHO OFF

SET username= Nome do usuário para conectar ao SQL
SET password=Senha do usuário
SET server= Servidor SQL
SET database= Nome da base de dados
SET pathBAK=Local onde esta o arquivo .bak (C:\\BACKUP\\Arquivo.bat)

sqlcmd -S %server% -U %username% -P %password% -Q "DECLARE @KillCommands nvarchar(MAX) = (SELECT 'KILL ' + CAST(session_id AS varchar(5)) + ';' from sys.dm_exec_sessions es inner join sys.databases db on (db.database_id = es.database_id) where db.name = '%database%' FOR XML PATH('')); EXEC(@KillCommands);"

ECHO Conexoes da base de dados retiradas!

sqlcmd -S %server% -U %username% -P %password% -Q "RESTORE DATABASE %database% FROM DISK = N'%pathBAK%' WITH FILE = 1, REPLACE"

ECHO Base de dados restaurada com sucesso!


Espero ter ajudado.
GOSTEI 0
POSTAR