Conheça SilentIdea
e aproveite melhor suas horas diante do micro

MSDE
Bancos de dados Access são baratos, mas
funcionam bem apenas para
pequenas aplicações ou aplicações monousuário. SQL é poderoso o
bastante para suportar grandes bancos de dados com múltiplos usuários
simultâneos, mas é muito caro. Que tal se você encontrasse uma solução
intermediária? Neste artigo, Rod Stephens explica como você pode usar o MSDE
para criar pequenas aplicações multiusuários enquanto prepara-se para crescer
se o seu banco de dados precisar de performance aumentada.
Access versus SQL Server
Bancos de dados Access são relativamente baratos. Na verdade, você pode
abrir um banco de dados Access, modificar sua estrutura usando SQL, buscar
registros, modificar e atualizar dados, deletar registros usando uma aplicação
sem ter que comprar o produto Access.
Contudo, bancos de dados Access têm suas desvantagens. Eles têm algumas
restrições de tamanho (no máximo 2 GB por banco de dados), fornecem pouco
controle de acesso de usuários e têm pouco suporte para múltiplos usuários
simultâneos.
SQL Server (também pronunciado "sequel server"), por outro lado,
fornece suporte para grandes bancos de dados (até 1 TB= 1024 GB), múltiplos
usuários simultâneos e controle de acesso por usuários bem detalhado. O
grande defeito do SQL Server é o seu preço. Dependendo da sua instalação, as
licenças podem custar milhares de reais.
Infelizmente, não há uma forma simples de migrar do Access para o SQL
Server. Idealmente, você desenvolveria uma aplicação usando o banco de dados
barato do Access. Posteriormente, se você decidisse que a aplicação
necessitaria de um tamanho maior, múltiplos usuários, ou os recursos de
segurança fornecidos pelo SQL Server, você poderia migrar o banco de dados.
Infelizmente, Access e SQL Server são muito diferentes para tornar isto fácil.
Seus esquemas de segurança de usuários são completamente diferentes e suas
arquiteturas básicas tornam problemático um upgrade rápido.
Figura
1 mostra uma representação esquemática da arquitetura usada por
aplicações Access. Diferentes aplicações usam rotinas de acesso a banco de
dados para interagir com cada bancos de dados individualmente.
Figure
1 No Access, diferentes aplicações acessam o banco de dados
independentemente.
Figura
2 mostra a arquitetura usada pelo SQL Server. Aqui, as aplicações se
conectam a um servidor que contém um ou mais bancos de dados. O servidor
coordena as interações entre as aplicações e os bancos de dados. Isto torna
tarefas tais como o gerenciamento de privilégios de usuários bem mais fáceis.
Figura
2 No SQL Server, diferentes aplicações acessam o banco de dados usando um
servidor compartilhado.
A migração de uma arquitetura Access para a arquitetura SQL Server costuma
exigir muitas mudanças no modo como uma aplicação interage com os bancos de
dados. Felizmente, o MSDE oferece uma alternativa possível.
Apresentando o MSDE
O MSDE (Microsoft Data Engine) é uma versão restrita do SQL Server que
preenche o vazio entre os pequenos programas monousuários e as grandes
aplicações multiusuários. O MSDE está disponível gratuitamente na
página MSDE
da Microsoft se você possui um dos seguintes produtos:
-
Visual Studio 6.0 Professional or Enterprise edition
-
Visual Basic 6.0 Professional or Enterprise edition
-
Visual C++ 6.0 Professional or Enterprise edition
-
Visual InterDev 6.0 Professional or Enterprise edition
-
Visual J++ 6.0 Professional or Enterprise edition
-
Visual FoxPro 6.0 Professional or Enterprise edition
MSDE também está incluído nos CD-ROMs do Visual Studio .NET e Office 2000
Premium.
Por ser uma versão do SQL Server, o MSDE usa a mesma arquitetura do SQL
Server (vista na Figura 2). Isto significa que você pode atualizar uma
aplicação feita com o MSDE para um SQL Server completo de forma relativamente
fácil. Você pode criar aplicações inicialmente baratas usando o MSDE. Se,
mais tarde, você decidir que precisa de recursos mais sofisticados do SQL
Server, você poderá fazer um upgrade com um mínimo de trabalho.
O MSDE combina com os planos da Microsoft para o futuro das aplicações de
pequenos bancos de dados, assim sendo, é bem provável que valha a pena o seu
esforço para aprender a usá-lo. Estes planos fazem sentido do ponto de vista
da Microsoft, porque encorajam você a preparar sua aplicação para um upgrade
para o dispendioso produto SQL Server.
MSDE também faz sentido do seu ponto de vista. Ele lhe permite criar uma
aplicação inicial barata enquanto lhe dá a opção de um futuro upgrade. Ao
mesmo tempo lhe dá acesso a uma base de dados dotada de maiores recursos que o
Access e o lança no domínio de tecnologias de acesso a dados mais valorizadas
no mercado de trabalho.
Instalando o MSDE
O plano básico para instalar o MSDE é típico de qualquer instalação de
produto:
-
Baixe o kit de instalação ou peça-o por CD à Microsoft por um pequeno
preço e taxa de envio.
-
Descompacte o kit de instalação se ele estiver compactado.
-
Leia o arquivo readme.txt e outras documentações.
-
Rode o setup.exe.
Contudo, há várias versões diferentes do MSDE disponíveis e suas
instruções de instalação diferem ligeiramente. Os dois links a seguir podem
ajudá-lo se você pretende rodar o MSDE com o Visual Basic 6.
Este artigo foca a versão 2000 do MSDE que está incluída nos cds do Visual Studio .NET.
Esta versão é também chamada de MSDE 2000 ou
SQL Server 2000 Desktop Engine, assim você pode encontrar, na Web, páginas e
outras documentações que se referem a ele por estes nomes.
Quando você executa o programa de
instalação do Visual Studio .NET para
instalar o Visual Basic, o MSDE é selecionado por padrão. Se você não
remover a seleção, o MSDE é instalado automaticamente. Se você não tem
certeza de ter removido ou não a seleção, examine este diretório:
C:\Arquivos de Programas\Microsoft
Visual Studio .NET\Setup\MSDE
Se este diretório existir, você provavelmente instalou o MSDE. Se este
diretório não existir, você provavelmente removeu a seleção do MSDE durante
a instalação. Neste caso, re-insira o primeiro cd do Visual Studio .NET e
execute o programa de instalação. Marque a caixa de checagem Desktop Engine e
siga as instruções do programa de instalação.
O programa de instalação do Visual
Studio .NET copia os arquivos do MSDE para o disco rígido do seu computador,
mas não finaliza a instalação do MSDE. Ele sugere que você o faça tão logo
termine a instalação do Visual Studio, mas você não deve seguir esta
sugestão, pois há duas coisas por fazer antes.
Após o programa de instalação do
Visual Studio terminar, abra este arquivo no editor de textos:
C:\Arquivos de Programas\Microsoft
Visual Studio .NET\Setup\MSDE\setup.ini
Inicialmente o arquivo exibe isto:
[Options]
INSTANCENAME=VSdotNET
Edite o arquivo e mude o parâmetro
padrão de INSTANCENAME de VSdotNET para qualquer nome que você queira dar para
o servidor. Por exemplo, para nomear o servidor NetSDK, eu mudei a linha para
INSTANCENAME=NetSDK. O nome do meu computador é Bender, assim os programas
referenciarão este servidor como Bender\NetSDK.
A seguir, adicione o parâmetro
SECURITYMODE=SQL no final do arquivo. Isto faz com que o servidor use o modelo
de segurança do SQL Server ao invés de usar o esquema de autenticação de
usuário do Windows. Mudar isto agora previne alguns problemas posteriores.
O arquivo deve ficar algo parecido com
isto:
[Options]
INSTANCENAME=NetSDK
SECURITYMODE=SQL
Agora você está pronto para terminar a
instalação do MSDE. As instruções dizem para você executar o programa:
C:\Arquivos de Programas\Microsoft
Visual Studio .NET\Setup\MSDE\setup.exe
Quando você o fizer, o programa cria o
servidor no seu computador.
Instalando o Último Service Pack
Agora que você criou o servidor, você
precisa instalar o último service pack. O MSDE é uma versão do SQL Sever,
assim você precisa instalar a última versão do service pack para o SQL Server.
Certifique-se de que você está usando
um service pack que seja apropriado para a versão de MSDE que voce instalou. Se
você instalou o MSDE 7 para rodar com o Visual Basic 6, esteja certo de
instalar o service pack para o SQL Server 7. Se você seguiu as instruções
prévias e instalou o MSDE 2000 do CD-ROM do Visual Studio .NET, instale o
último service pack para o SQL Server 2000.
Para baixar a versão em português do
Service Pack 3 para o SQL Server 2000 clique aqui.
Após terminado o download, dê um duplo
clique no arquivo para descompactá-lo. Feita a descompactação leia as
instruções contidas no arquivo sp3readme.htm. Mas aqui está o que funcionou
para mim. Abra uma janela de prompt do DOS e navegue no diretório contendo os
arquivos descompactados do service pack. Então execute o seguinte comando
substituindo o nome do servidor NetSDK pelo nome que você especificou na
criação do seu servidor.
Setup.exe /p SQLRUN INSTANCENAME=NetSDK
Dê um reboot, e você estará quase
pronto para usar o servidor.
Inicie o Servidor
Após o MSDE estar instalado e você ter
instalado o último service pack, você pode iniciar o processo servidor. Logue
como Administrador. Você deverá ver um novo ícone do servidor na sua barra de
tarefas. Como exibido na Figura
3, o ícone é o segundo vindo da esquerda. O círculo branco contendo um
pequeno retângulo vermelho indica que o servidor não está rodando.
Figura
3 Um ícone na barra de tarefas mostra o servidor MSDE não ativo.
Dê um duplo clique sobre este ícone
para abrir o SQL Service Manager mostrado na Figura
4.
Figura
4 Use o SQL Service Manager para iniciar o servidor.
Clique no botão Start/Continue. Após o
serviço se iniciar, certifique-se de que a caixa de checagem Auto-start esteja
checada e feche o Service Manager. O ícone da barra de tarefas deverá aparecer
agora como na Figura
5.
Figura
5 Uma seta verde indica que o servidor está em execução.
Você provavelmente não deverá
permanecer logado com a conta de Administrador, assim, faça o logoff e torne a
se logar como um usuário comum. Agora você está pronto para dar ao novo
servidor um pouco de exercício.
Inicie a Programação!
Com o MSDE instalado e o servidor
rodando, você está pronto para usá-lo nas suas aplicações. Outros artigos
posteriores exporão como usar bancos de dados MSDE com o Visual Basic .NET, mas
esta seção fornece o bastante para iniciá-lo.
A rotina BuildBD, exibida na listagem 1,
mostra uma forma de interagir com o servidor. A rotina inicia criando uma string
de conexão que identifica o nome de usuário que o programa quer usar (sa) e o
servidor de banco de dados (Bender\NetSDK). Ele usa a string de conexão para
criar um novo objeto SQLConnection e abre este objeto. Isto conecta o programa
ao servidor.
A rotina então cria um objeto
SqlCommand anexado à conexão. Ela irá usar este objeto rapidamente para
executar uma série de comandos SQL.
BuildDB atribui à propriedade
CommandText do objeto SqlCommand um comando de SQL que cria um banco de dados
chamado MyBD. Os parâmetros para o comando dizem ao servidor o seguinte:
-
Nome do banco de dados
-
Arquivo que conterá os dados do
banco de dados e as informações de log
-
Tamanho inicial e máximo do banco
de dados
-
Quantidade pela qual o banco de
dados deverá ser acrescido quando cheio
Em seguida, a subrotina chama o método
ExecuteNonQuery para executar o comando SQL e criar o banco de dados.
A subrotina repete o processo atribuindo
um comando SQL à propriedade CommandText e então chamando o método
ExecuteNonQuery para selecionar o novo banco de dados, criar uma tabela, inserir
um registro, parar o uso do banco de dados e destruir o banco de dados. Uma
aplicação real não realizará estas tarefas de criar e destruir o banco de
dados, mas este é um bom teste para este exemplo.
A rotina termina fechando a conexão ao
banco de dados. Isto é importante. No Visual Basic .NET, conexões a bancos de
dados são armazenadas em um pool de conexões. Quando um programa
fecha uma conexão, ela é adicionada ao pool. Posteriormente, se este ou outro
programa necessita usar a mesma conexão, o sistema a recupera do pool. Isto
economiza tempo e recursos. Se o programa não fecha a conexão quando não mais
necessita dela, a conexão não é adicionada ao pool e desperdiça recursos.
Isto não tem importância para esta pequena aplicação de teste, mas causaria
problemas para um sistema grande, assim sendo, você pode iniciar adquirindo
bons hábitos desde já.
Listagem 1 Subrotina BuildDB
cria um banco de dados, adiciona uma tabela, insere um registro na tabela e
destrói o banco de dados.
Private Sub BuildDB()
' Cria uma string de conexão.
Dim connect_string As String = _
"User Id=sa;Data Source=Bender\NetSDK"
' Conecta o servidor
lblStatus.Text = "Conectando"
lblStatus.Refresh()
Dim db_connection As New SqlConnection(connect_string)
db_connection.Open()
' Cria um objeto SqlCommand
Dim sql_command As New SqlCommand()
sql_command.Connection = db_connection
' Cria o banco de dados MyDB
lblStatus.Text = "Criando o banco de dados"
lblStatus.Refresh()
sql_command.CommandText = _
"CREATE DATABASE MyDB " & _
"ON (" & _
" NAME = MyDB_data, " & _
" FILENAME = 'C:\Temp\MyDB.mdf'," & _
" SIZE = 2MB," & _
" MAXSIZE = 10MB," & _
" FILEGROWTH = 2MB)" & _
"LOG ON(" & _
" NAME = MyDB_log," & _
" FILENAME = 'C:\Temp\MyDB.ldf'," & _
" SIZE = 1MB," & _
" MAXSIZE = 5MB," & _
"FILEGROWTH = 1MB)"
sql_command.ExecuteNonQuery()
' Usa o novo banco de dados.
lblStatus.Text = "Selecionando o banco de dados"
lblStatus.Refresh()
sql_command.CommandText = "USE MyDB"
sql_command.ExecuteNonQuery()
' Cria a tabela Books.
lblStatus.Text = "Criando tabela"
lblStatus.Refresh()
sql_command.CommandText = _
"CREATE TABLE Books (" & _
" Title VARCHAR(60) PRIMARY KEY," &
_
" URL VARCHAR(60) NOT NULL)"
sql_command.ExecuteNonQuery()
' Insere um registro.
lblStatus.Text = "Inserindo registro"
lblStatus.Refresh()
sql_command.CommandText = _
"INSERT INTO Books VALUES (" & _
"'Visual Basic .NET Database Programming'," & _
"'http://www.vb-helper.com/vbdb.htm')"
sql_command.ExecuteNonQuery()
' Cessa o uso do banco de dados.
lblStatus.Text = "Usando Master"
lblStatus.Refresh()
sql_command.CommandText = "USE Master"
sql_command.ExecuteNonQuery()
' Destrói o banco de dados.
lblStatus.Text = "Destruindo o banco de dados"
lblStatus.Refresh()
sql_command.CommandText = "DROP DATABASE MyDB"
sql_command.ExecuteNonQuery()
' Fecha a conexão.
db_connection.Close()
lblStatus.Text = "Feito"
End Sub
Clique aqui
para baixar o projeto em Visual Basic .NET que usa este código para testar o
servidor de banco de dados. Você precisará modificar ligeiramente o seu
código para especificar o nome do seu servidor ao invés de BENDER\NetSDK,
e fornecer seu nome de usuário e senha se você não quiser usar sa (system
administrator).
Um Último Problema
Um problema ocorreu enquanto eu estava
tentando fazer este trabalho no meu computador. Quando meu programa tentou
conectar o servidor, ele falhou com a seguinte mensagem:
-
Not associated with a trusted SQL Server
connection.
Após uma longa
investigação online, eu descobri que este problema ocorre se o MSDE reverte ao
uso da autenticação do Windows. Ele não permitirá o usuário padrão sa
conectar-se ao servidor, possivelmente por que não há nenhuma conta de
usuário chamada sa em meu computador. Este problema pode ocorrer se você tiver
tido uma versão prévia do MSDE instalada, e eu tinha.
Atribuindo o parâmetro
SECURITYMODE=SQL no arquivo setup.ini antes de finalizar a instalação do MSDE
previne este problema. Se lhe acontecer de ter este problema, examine este
artigo no
MSDN para maiores informações e soluções.
Conclusão
Com o MSDE, a Microsoft oferece aos
desenvolvedores uma clara estratégia de migração: desenvolver com o MSDE e
fazer upgrade para SQL Server se necessário. Você não mais precisa antecipar
se um banco de dados Access irá ter o poder que você precisará para a sua
aplicação. Se você decidir aumentar o volume de dados, você poderá
simplesmente instalar o SQL Server e voltar ao trabalho ao invés de iniciar uma
total recodificação.
Rod Stepthens é autor do livro: Visual
Basic .NET Database Programming (Que, 2002, http://www.vb-helper.com/vbdb.htm).
Conheça SilentIdea
e turbine sua mente enquanto trabalha