Bom dia, Boa tarde, Boa noite.
Tenho um arquivo .Bat que executa um arquivo .SQL para dropar as tabelas do banco de dados(Caso tenha) e cria-las.
O arquivo .SQL busca na pasta da determinada versão para os Scripts de criação das tabelas.
Então tenho o seguinte cenário: .Bat(para digitar login/senha) -> .SQL(para dropar as tabelas e executar os scrpits na ordem) -> .SQL(Script de fato do banco).
Eu queria digitar no .Bat a versão do banco que quero restaurar. Teria como fazer isso?
.BAT
set usuario=
set /p usuario=Digite o Usuario do Banco de Dados:
IF "%usuario%"=="" (goto erroLogin)ELSE (goto definirSenha)
:definirSenha
set /p senha=Digite a Senha do Banco de Dados:
@echo off
IF "%senha%"=="" (goto erroLogin) ELSE (goto executar)
:erroLogin
echo.
echo.
echo Preencha corretamente o login
echo.
pause
goto definirVersao
:executar
echo.
echo.
echo ----------------------------------------------------------
SQLCMD -U %usuario% -P %senha% -S SRVSQL01 -i "SQL_SERVERSCRIPTLOTE.SQL"
pause
:end
.SQL (Drop e Criação)
:setvar VERSAO ""
-- CAMINHO PARA OS SCRIPTS
:setvar CAMINHO "I:\Projeto\3.16\Banco de Dados\SQL Server\Install\\"
SET NOCOUNT ON
GO
print VERSAO
:On Error exit
PRINT 'APAGANDO TABELAS EXISTENTES...'
EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"
GO
:On Error exit
PRINT 'RECRIANDO TABELAS...'
-- TODO: CRIAR VARIÁVEL PARA INSERIR VERSÃO DO SISTEMA
:r $(CAMINHO)"02CreateTables.sql"
:r $(CAMINHO)"03Indices.sql"
:r $(CAMINHO)"04Trigger.sql"
PRINT 'PROCESSO FINALIZADO'
GO
Obs: A ideia seria parametrizar o caminho :setvar CAMINHO “I:\Projeto\3.16\Banco de Dados\SQL Server\Install\” onde a versão 3.16 seria digitada podendo ser 3.06, 3.10
Atenciosamente,