Banco de Dados Evolutivo – Parte 7

Nesse post da série Banco de Dados Evolutivo, você irá efetuar a primeira refatoração no database AdventureWorks_Homolog através da ferramenta de versionamento de banco de dados Liquibase. Iremos aprender um pouco sobre o funcionamento do comando UPDATE (Para informações teóricas sobre este comando, leia a Parte 4 do conjunto de posts).


Antes de iniciarmos, para que fique mais claro do que o exposto na Parte 5 da série e não tenhamos erros futuros, se você executou todos os passos para instalação e configuração do ambiente de testes você percebeu que no link para download do arquivo jdbc para o SQL Server existem várias opções. Você precisará fazer o download do arquivo sqljdbc_4.1.5605.100_ptb.tar.gz. Após o download concluído será necessário que você descompacte o arquivo e copie o sqljdbc4.jar para dentro da pasta do Liquibase que está no diretório C:\ (conforme explicado na Parte 5 do conjunto de posts).

Agora finalmente começaremos os testes na ferramenta Liquibase. Dentro do diretório C:\changelog (gerado com base no post anterior – Parte 6) crie o arquivo master.xml usando o código da Listagem 1.

 <databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd
        http://www.liquibase.org/xml/ns/dbchangelog-ext
 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">

 <include file="C:/changelog/versao_1.0/master_1.0.xml" />

 </databaseChangeLog>

Listagem 1. Comando usado dentro do arquivo master.xml criado.

Após isso, dentro do diretório C:\changelog\versao_1.0 crie o arquivo master_1.0.xml segundo o codigo da Listagem 2.

 <databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd
        http://www.liquibase.org/xml/ns/dbchangelog-ext
 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">

 <include file="C:/changelog/versao_1.0/changelog_1.xml" />

 </databaseChangeLog>

Listagem 2. Comando usado dentro do arquivo master_1.0.xml criado.

Faremos a nossa primeira experiência com a ferramenta criando uma tabela chamada teste_liquibase no nosso banco de dados AdventureWorks_Homolog. Para isso criaremos um arquivo chamado changelog_1.xml (use o código da Listagem 3). Não precisaremos alterar o arquivo master_1.0.xml pois, quando o criamos, já adicionamos a tag que inclui esse XML de refatoração. A tag changeset, como fora dito anteriormente (Parte 4 do conjunto de posts), contém as alterações DDL e/ou DML da base de dados para qual está sendo apontada.

 <databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd
        http://www.liquibase.org/xml/ns/dbchangelog-ext
 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">

 <changeSet author="arthur" id="cria tabela teste_liquibase">
     <createTable
          tableName="teste_liquibase">
             <column name="id" type="integer"/>
             <column name="nome" type="varchar(255)"/>
             <column name="telefone" type="varchar(11)"/>
     </createTable>
 </changeSet>

 </databaseChangeLog>

Listagem 3. Comando usado dentro do arquivo changelog_1.xml criado.

Para que seja possível executar o comando UPDATE é necessário que passemos uma serie de parâmetros via linha de comando para o Liquibase. Para que não seja necessário redigitar todos esses parâmetros todas as vezes que formos realizar alguma alteração em nosso banco de dados é possível que criemos um arquivo de propriedades. Esse arquivo que se chamará liquibase.properties irá armazenar todas as informações necessárias para que possamos trabalhar de forma mais simples. Para criá-lo utilize o código da Listagem 4. Salve-o dentro do diretório do Liquibase localizado em C:\. Atribua aos parâmetros <user> e <password> respectivamente o usuário e senha com permissões de alterações DDL, DML e DCL no database.

driver: com.microsoft.sqlserver.jdbc.SQLServerDriver 
classpath: C:/liquibase-3.0.8-bin/sqljdbc4.jar 
url: jdbc:sqlserver://localhost:1433;databaseName=AdventureWorks_Homolog 
username: 
password:  
changeLogFile: C:/changelog/master.xml

Listagem 4. Comando usado dentro do arquivo liquibaseHomolog.properties criado.

Observe que por termos os apontamentos realizados através das tags de include dentro do arquivo master.xml, sempre que você o executar, estará efetuando todas as mudanças construídas através dos demais changelogs (Lembrando que graças aos registros dentro da tabela de controle databasechangelog o Liquibase não se perde e refaz algo que já tenha sido executado anteriormente. Ou seja, ele varre essa tabela de controle e procura tudo que foi executado para realizar somente aquilo que ainda não foi executado).

Para realizar o UPDATE abra o cmd, vá para a pasta raiz do sistema operacional e digite os comandos da Listagem 5. Primeiramente o Liquibase é executado. Depois a ferramenta receberá os parâmetros que foram guardados no arquivo liquibaseHomolog.properties e, por último, teremos a execução do comando UPDATE que será responsável pela criação da tabela teste_liquibase na nossa base AdventureWorks_Homolog.

java -jar C:\liquibase-3.0.8-bin\liquibase.jar --defaultsFile=C:\liquibase-3.0.8-bin\liquibaseHomolog.properties update

Listagem 5. Comando usado no cmd para execução do comando UPDATE através do Liquibase.

capture 1
Figura 1. Tabelas de controle databasechangelog e databasechangeloglock e tabela teste_liquibase.

Após a execução do comando você poderá ver que as duas tabelas de controle (databasechangelog e databasechangeloglock) foram criadas na base AdventureWorks_Homolog. E poderá ver também que temos uma nova tabela chamada teste_liquibase no schema dbo – Veja na Figura 1. Se você realizar um SELECT na tabela databesechangelog será possível observar que ela guardou os dados da alteração executada no campo description. Veja também os campos id e autor – Figura 2.

Capture 2
Figura 2. SELECT executado na tabela de controle databasechangelog após a execução do comando UPDATE.

Caso ao executar o comando da Listagem 5 a tela do cmd apresentar o seguinte erro:

Liquibase update Failed: com.microsoft.sqlserver.jdbc.SQLServerException:
The TC P/IP connection to the host localhost, port 1433 has failed. Error:
 "Connection refused: connect. Verify the connection properties. Make sure
 that an instance o f SQL Server is running on the host and accepting TCP/
IP connections at the port . Make sure that TCP connections to the port 
are not blocked by a firewall.". C:\>
Captura de Tela 2015-06-27 às 2.12.24 AM
Figura 3. Configurando a porta TCP/IP para que o Liquibase consiga acessar o SQL Server.

Você precisará da seguinte configuração:

  1. Abrir o Sql Server Configuration Manager;
  2. Expandir a aba SQL Server Network Configuration;
  3. Clicar em Protocols for <instance_name>;
  4. Abrir a opção TCP/IP (dentro de Protocol Name);
  5. Marcar como YES a opção Enabled (caso esteja diferente disso);
  6. Ir até a aba IP Addresses;
  7. Descer a barra de rolagem até a opção IPAII;
  8. preencher a opção TCP Port com o valor 1433 (Veja a Figura 3).
  9. Reiniciar a instância de banco de dados.

Depois do término da configuração exposta acima, você poderá executar novamente o comando da Listagem 5 que receberá uma mensagem de sucesso.


No próximo post aprenderemos sobre o comando RollbackCount (um dos tipos de rollbacks permitidos pela ferramenta de versionamento de banco de dados Liquibase).

Anúncios

3 comentários sobre “Banco de Dados Evolutivo – Parte 7

  1. Pingback: Banco de Dados Evolutivo – Parte 8 | Arthur Luz | Data's Light

  2. Pingback: Banco de Dados Evolutivo – Parte 9 | Arthur Luz | Data's Light

  3. Pingback: Banco de Dados Evolutivo – Parte 14 | Arthur Luz | Data's Light

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s