VB e SQLServer - O Acesso aos dados e a migração.


 Se você até hoje tem desenvolvido suas aplicações para banco de dados usando a plataforma Access e nunca se preocupou em saber como usar uma outra plataforma para banco de dados. Se você esta tranquilo e orgulhoso , usando o seu 'banquinho' de dados Access e nem sonha em ter que migrar para outro banco de dados.

Se você acha que esta tudo bem como esta , e, que não se 'mexe em time que esta ganhando' ... Ao ler este artigo você pode ter as seguintes reações: 

1-) Indiferente -  "Afinal eu sou o bom e não tenho que dar ouvidos a qualquer artigo que se lê por ai...   

2-) Especulativo - "Bem , na verdade tudo esta bem , mas eu sei que com a internet as mudanças virão ;  então antes que eu seja pego desprevenido vou verificar melhor esta possibilidade... 

3-) Desesperado - " Meu Deus !!! amanhã mesmo vou migrar todas as minhas aplicações ..."

Espero que sinceramente você esteja enquadrado no item 2 . Eu a chamaria de a opção do bom senso. Mas por que tudo isto ? Do que vamos tratar aqui ?? 

Vamos tratar em como usar o seu VB com o banco de dados SQL Server no ambiente Cliente/Servidor e como migrar seus aplicativos para esta plataforma.

O que é mesmo um ambiente Cliente/Servidor ?   

O ambiente Cliente/Servidor para uma aplicação de banco de dados é um sistema no qual uma aplicação ,  o servidor de banco de dados , é utilizado para armazenar e manipular os dados. Outra aplicação , o cliente do banco de dados , é utilizado para apresentar os dados ao usuário. Podemos enquadrar nesta última categoria tanto o Visual Basic como o Microsoft Access . Como servidores de banco de dados podemos citar : SQL Server , Oracle , Informix , Sybase e DB/2 .

A idéia principal da arquitetura Cliente/Servidor é que tanto o cliente como o Servidor são inteligentes e especializados nas tarefas que se propõe a fazer. 

Quais os benefícios da arquitetura Cliente/Servidor ?

1-) Especialização :  Cada componente em uma aplicação cliente/servidor pode ser designada e otimizada para realizar uma tarefa específica. Ex: O SQL Server é especializado em processar consultas e gerenciar os dados.

2-) Segurança : No Caso do SQL Server podemos aplicar os direitos dos usuários usando a segurança do Windows NT ou do SQL Server. Cada login pode ter um perfil definido para cada banco de dados. As permissões aos objetos ( tabelas , stored procedures ,etc..) podem ser atribuídas ou revogadas a nível de usuário ou de grupos. A Aplicação Cliente nada precisa fazer quanto a segurança , o trabalho fica por conta do SQL Server.

3-) Integridade : O servidor do Banco de dados além de gerenciar o armazenamento dos dados também controla todos os direitos para modificar ou excluir os dados. Além disso possui mecanismos para recuperação de dados em caso de uma corrupção de arquivos. Em uma aplicação usando o Access um usuário pode simplesmente deletar a base de dados. 

4-) Desempenho : Aplicações usando o Access podem enfrentar problemas de desempenho em uma rede quando gerencia uma grande quantidade de dados. No ambiente cliente/servidor a aplicação somente solicita os dados e os resultados são processados e devolvidos ao Cliente.

Quando migrar para uma arquitetura Cliente/Servidor

1-) O tamanho do banco de dados : O tamanho do banco de dados é um dos principais fatores a considerar ao planejar uma migração para a arquitetura cliente/servidor. Não existe uma lei definida , cada caso deve ser estudado com cuidado , mas você pode começar a  considerar uma migração quando sua base de dados estiver se aproximando dos 100-200 MB.

2-) A complexidade do Banco de dados : Outro fator que pesa bastante numa possível migração é uma base de dados grande e complexa. Quando falamos em complexidade estamos falando na quantidade de tabelas que a base de dados possui , nos relacionamentos entre as mesmas e nas junções entre as tabelas quando da criação de consultas.

3-) Número de usuários: A concorrência é outro fator muito importante a considerar , enquanto uma base de dados Access suporta no máximo o acesso simultâneo de até 255 usuários ( de 10 a 20 usuários é o número ideal .). O SQL Server suporta bem mais que isto.

4-) O Compartilhamento de dados : O SQL Server pode compartilhar dados com outras aplicações além do Access e do Visual Basic. 

5-) Outras características específicas :  O SQL Server permite a você realizar um backup da base de dados enquanto os usuários a estão utilizando . Já tentou fazer isto com o Access ??? . O SQL Server mantém um log de transações o que permite recuperação de dados em caso de falhas sem ter que fazer um backup completo. 

ODBC , OLE DB e ADO

Ao desenvolver aplicações cliente/servidor é muito importante como você vai fazer a conexão entre a interface ( Cliente) e a base de dados ( Servidor ). Num passado recente os drivers ODBC eram bastante usados , hoje com o advento da ADO e OLE DB são , e , com a disponibilização de novos provedores , seu uso esta declinando.

ODBC - Open Database Connectivity - A maneira antiga de se fazer uma conexão com as bases de dados relacionais. As interfaces DAO - Data Access Object - e  RDO - Remote Data Object - utilizavam os drivers ODBC para acessar as fontes de dados. ODBC é um conjunto de API de baixo nivel onde o desenvolvedor tem que gerenciar a alocação da memória. Para se ter uma ídeia existem uns 100 drivers ODBC em uso atualmente. 

OLE DB - ( Não é um acrônimo ) - OLE DB é a mais recente maneira de acessar base de dados relacionais e não relacionais. Diferentes tipos de interfaces OLE DB , ou provedores , são escritos para cada tipo de fonte de dados. Como é uma tecnologia ainda recente , não existem , ainda, provedores OLE DB para alguns tipos de de fonte de dados.  Enquanto isto você pode usar a OLE DB como uma fina camada sobre  o ODBC até que o provedor esteja disponível.

ADO - ActiveX Data Objects - O novo objeto baseado no modelo COM que permite acessar e manipular fonte de dados OLE DB. Além de ser mais simples que DAO e RDO , ADO não utiliza as várias camadas para acesso a dados. 

A escolha agora é muito fácil : se existir um provedor OLE DB , use ADO . Se não existir um provedor OLE DB nativo para a fonte de dados escolha um provedor OLE DB para ODBC.

As vantagens de usar ADO

Usando ADO

Para utilizar ADO em suas aplicações Visual Basic , você precisa avisar o VB que você esta usando um objeto externo. Você faz isto simplesmente fazendo uma referência a Microsoft ActiveX Data Object 2.X Library no menu Project | References. (Naturalmente a ADO deve estar instalada no seu equipamento)

Iniciando uma conexão

Antes de iniciar uma conexão com um banco de dados SQL Server vejamos alguns conceitos básicos: Usando um DSN para ODBC usando um UDL para OLE DB.

O que é um DSN ?

Um Data Source Name ( DSN ) armazena informação sobre a conexão com sua base de dados requeridas pelo driver ODBC : localização , tipo de servidor , informação sobre segurança , etc. Para criar o seu próprio DSN , selecione Iniciar| Configurações|Painel de Controle | ODBC Data Source

Mostraremos a seguir a criação de um DSN  uma base de dados SQL Server 2000 em uma máquina local; estaremos criando uma conexão com o banco de dados Pubs . Vamos mostrar criar um Data Source Name passo a passo:
  1. Em Meu Computador acione o Painel de Controle e encontre o ícone ODBC 32 bits clicando sobre ele
Na tela do ODBC data Source Administrator/Administrador de fonte de dados ODBC clique na aba File DSN  e selecione a opção Adicionar/Add para incluirmos um novo Data Source ao nosso ambiente.
  • A seguir dentre os drivers instalados em sua máquina selecione um driver adequado a base de dados que quer acessar , no nosso caso uma base SQL Server. Selecione então SQL Server e clique no botão Avançar.
  • Na próxima janela informe o nome do seu DSN - eu usarei o nome ConSqlServer  - e clique no botão Avançar>; a seguir Clique no botão Concluir e na tela da janela Create a New Data Source to SQL Server informe a descrição para o DSN que será criado e informe a qual SQL Server você quer se conectar;  a seguir clique no botão  Avancar>
    Na janela Microsoft SQL Server DSN Configuration , selecione a opção - With SQL Server authentication using a login ID and password entered by user. e informe o LoginID e a password . No nosso caso usaremos o como login ID - sa e a password deixaremos em branco . Clique no botão Avançar>

    Ainda na janela Microsoft SQL Server DSN Configuration altere o banco de dados padrão para Pubs e clique no botão Avançar>

    Na próxima janela clique no botão Concluir> , e você deverá obter a janela a seguir com o resumo de seu DSN criado. Para testar o DSN recém criado clique no botão - Test Data Source.. . A janela da direita será exibida indicando que o teste foi realizado com sucesso. Pronto !! temos um DSN chamado ConSQLServer para conexão com o SQL Server no banco de dados Pubs.

    O que é um UDL ?

    Um UDL - Universal Data Link - é o equivalente a um arquivo DSN para um provedor OLE DB. Um UDL armazena informacão necessária a uma conexao com um banco de dados , tais como : o nome do servidor, o provedor utilizado , o método de segurança e o login a ser utilizado.

    A vantagem de usar um UDL é que ele é mais fácil distribuir pois e um arquivo texto e nao precisa ser registrado pelo sistema operacional. Para  criar um UDL siga os seguintes passos :

    Abaixo o código usado para abrir uma conexão ADO usando a UDL teste.udl . Neste caso a UDL teste.udl esta realizando uma conexão com a base de dados Biblio.mdb:

    Dim conn As New ADODB.Connection
    Dim rs As New ADODB.Recordset

    conn.Open "File Name=teste.udl;"

    rs.open "Authors" , conn , adOpenKeyset , adLockReadOnly

    rs.movelast
    debug.print rs.recordcount

    rs.close
    conn.close

    A próxima etapa será mostrar como fazer uma conexão com um banco de dados SQL Server 2000 usando a ADO - ActiveX Data Object

    Veja a continuação no artigo : Acessando dados no SQL Server com o VB 

    Referências:


    José Carlos Macoratti