HELP !!! RESTORE (SQLSERVER 2008) VIA BAT
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 :
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
Curtidas 0
Respostas
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.
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