Professional Documents
Culture Documents
Nota da adaptao:
Como infelizmente a Microsoft vive alterando o caminho dos seus links, diversos posts
que se utilizaram deste recurso se tornaramm absoletos com extrema rapidez, por
isto resolvi criar este documento e disponibiliz-lo em forma de artigo mas que at a
data de sua publicao era uma verso bastante fiel do texto existente no link:
http://www.microsoft.com/brasil/msdn/Tecnologias/sql/AccessToSQLServer.mspx#top
1 (Segurana) O arquivo .mdb colocado em rede exige que os usurios que o acessem
tenham direitos plenos de leitura e gravao na pasta em que ele se encontra, o que
permite que ele seja copiado ou deletado e sabemos que arquivos deletados pela rede
no vo para a lixeira enquanto que os arquivos do SQL Server ficam protegidos, uma vez
que quem os manipula ser sempre o SGBD, estes no seriam deletados nem por um
usurio logado como administrador no servidor pois como o arquivo est sendo utilizado
pelo processo SQL Server fica travado por esta operao. Por fim o SQL Server permite
Backups com o Servidor ativo e tem mecanismos de recuperao de dados absolutamente
mais robustos.
2 (Desempenho) O cursor das consultas SEMPRE ser executado do lado do cliente pois o
servidor funciona exclusivamente como file-server. Isto implica no fato de que basicamente
a qualquer select a tabela inteira e as junes utilizadas precisam percorrer a rede e serem
processadas no micro solicitante, e nem uma utilizao tima de indices salvam este
desastre em caso de tabelas com grande volume de dados. Outro detalhe relevante que
como o SQL Server mantem um servio sempre ativo no Servidor no precisa ser
inicializado a cada movimentao no BD ao passo que o JET (Mecanismo utilizado pelo
Access) precisa ser inicalizado e encerrado o que derruba desempenho principalmente em
loops de manipulao de vrios itens.
3 (Limite) Arquivos .mdb no comportam mais do que 2 GB, O Access oferece suporte a,
no mximo, 255 conexes simultaneas enquanto o O SQL Server oferece suporte a
uma base de usurios simultneos limitada apenas pela memria disponvel no
sistema.
A minha concluso por todas estas caractersticas que o Access s pode ser
o BD mais utilizado pelos desenvolvedores VB para todas as circustncias por
que aproximadamente 99% destes inicializaram seus estudos com
este programa e ento aplicar solues aos seus clientes utilizando esta
tecnologia teria uma curva de aprendizado nula.
Pelos argumentos aqui apresentados solues Access devem ser aplicadas
nica e exclusivamente para aplicaes Mono-Usurias e que no precisem
em nenhum momento trafegar dados pela rede por causa de suas limitaes
em segurana e desempenho.
Alm disto esta base no poder crescer em quantidade de dados acima de
2GB nem em conexes simultneas acima de 255.
O nico fator que acredito ser opcional seria quanto a programabilidade,
afinal se o usurio optar em no utilizar Stored Procedures, Functions ou
triggers por conta dele, mas estaria diminuindo o desempenho do seu
desenvolvimento e da propria aplicao.
Obviamente que para implementar uma soluo baseada em MSSQL Server
Express (Verso Free) precisaramos de um computador que prestaria o
servio de servidor de dados e que necessitaria ter alguns recursos a mais tal
qual 512 MB de RAM, mas afinal qual empresa que tem demanda para um
sistema multi user com rede que no teria ao menos uma mquina PIII 1GHz
512 ?
PS: Este documento NO foi baseado em SQL Server 2005 Express Edition
embora a maioria dos conceitos (No as Ferramentas) ainda possam ser
na sua maioria aplicados.
Fim da Adaptao.
Pr-requisitos
Todas as comparaes contidas neste documento so feitas pressupondo-se o uso dos
seguintes softwares:
SQL Bsico
Implementao de segurana
Este documento foi criado para ajudar os novos desenvolvedores do SQL Server a
comparar os recursos do Access e do SQL Server.
Introduo
Geralmente, os desenvolvedores do Microsoft Access pensam em migrar para o SQL
Server por razes de desempenho, segurana e estabilidade. Esse processo
conhecido como upsizing e os desenvolvedores encontraro algumas diferenas
fundamentais ao migrar do Access para o SQL Server. essencial que essas
diferenas sejam notadas e que se tomem as devidas providncias para garantir uma
migrao perfeita e sem incidentes.
O Microsoft SQL Server um sistema de gerenciamento de dados de nvel corporativo.
Ele inclui segurana, escalabilidade e flexibilidade de gerenciamento padro da
indstria. Alm disso, h suporte para XML e consultas na Internet.
Transformation Services).
O SQL Server Query Analyzer uma ferramenta de consulta grfica completa que
substitui o principal designer de consulta do Access. Ele permite:
Exibir dados.
Exportar dados. Para isso, basta clicar em Query (Consulta) e em Results to File
(Resultado em arquivo).
Otimizar consultas. Para isso, basta clicar em Query (Consulta) e em Show
funes.
Pesquisar tabelas.
Exibir dados.
Esse recurso til para desenvolvedores do .NET, pois oferece um mtodo integrado
de gerenciamento de bancos de dados. Os desenvolvedores podem criar aplicativos e
gerenciar bancos de dados em um nico aplicativo.
separados por vrgula (arquivos .csv) e Microsoft Access (consulte a Figura 6).
Executar transformaes nos dados.
Arquitetura
H vrias diferenas, semelhanas e desvantagens entre a arquitetura do Access e do
SQL Server. As diferenas esto em:
Design de tabela.
Relacionamentos.
Indexao.
Disparadores.
Tabelas temporrias.
Funes definidas pelo usurio.
Requisitos do sistema
Recomendado
Memria 384 MB
Enterprise
Standard
Personal
Developer
Windows CE No No No No No Sim
Implementao do mecanismo
O mecanismo de bancos de dados Jet do Access diferente no SQL Server, pois ele
no permanentemente executado como um servio, como acontece no SQL Server,
mas iniciado cada vez que um usurio abre um arquivo de banco de dados Jet
(arquivo .mdb) usando o Access ou algum outro mtodo de acesso a dados. Quando
um usurio fecha um arquivo .mdb e o arquivo no est mais em uso, o mecanismo
Jet descarregado da memria.
A principal diferena que, se no houver usurios acessando o arquivo .mdb, ser
possvel copi-lo ou mov-lo para outro local usando o Windows. No caso do SQL
Server, o seu servio est constantemente em execuo e est conectado aos
arquivos de banco de dados do SQL Server (arquivo .mdf) registrados com ele. Para
copiar um arquivo .mdf, voc precisa parar o servio do SQL Server ou desanexar o
arquivo .mdf do servio atual para poder mov-lo.
Tipos de dados
H vrias diferenas nos tipos de dados entre o Access e o SQL Server. A maioria
desses tipos de dados automaticamente convertida durante o upsizing, embora seja
importante verificar isso no banco de dados do SQL Server aps o upsizing. A Tabela 4
mostra as diferenas nos tipos de dados entre o Access e o SQL Server. Observe que
tambm h alguns tipos de dados sem suporte.
Byte tinyint
Inteiro smallint
Simples real
Duplo float
Decimal decimal
Sim/No bit
No Access, voc pode especificar regras para os campos das tabelas, por exemplo,
quando um valor em uma tabela for alterado, os valores nas tabelas relacionadas
sero automaticamente atualizados (atualizao em cascata).
No SQL Server, possvel criar as mesmas regras por meio do designer de diagrama
do Enterprise Manager (como mostra a Figura 14). O SQL Server oferece suporte a
cinco classes de restries:
seguir cria uma tabela Employee que adiciona uma restrio CHECK ao campo
Salary para que o valor esteja entre 10.000 e 1.000.000.
CREATE TABLE Employee
Name char(50),
Address char(50),
Salary money,
CONSTRAINT chk_Salary CHECK (Salary BETWEEN 10000 and 1000000)
UNIQUE. Garante que todos os valores de uma coluna da tabela sejam exclusivos.
REFERENCES Employee(EmployeeID)
ON DELETE CASCADE
Position char(50)
Para contornar esse problema no SQL Server, voc ter que remover as restries de
integridade referencial das tabelas e criar um disparador em cada uma delas para
executar as atualizaes.
Aprimoramentos na indexao
No Access, os ndices podem ser criados em um ou vrios campos de uma tabela,
conhecidos como chave composta.
O SQL Server lida com a indexao praticamente da mesma maneira. As tabelas
indexadas so, na verdade, classificadas no disco rgido e armazenadas na ordem
classificada. Esse processo chamado de agrupamento. Agrupamento refere-se
classificao e ao armazenamento de dados do SQL Server no disco rgido com base
no ndice agrupado. Se um campo for indexado e no for agrupado, o SQL Server ter
primeiro que consultar o ndice para localizar os dados, o que poder reduzir o
desempenho.
Por exemplo, uma tabela de funcionrios poderia ter um identificador exclusivo
chamado EmployeeID. No entanto, essa tabela quase sempre pesquisada com base
no campo FirstName. O acesso aos dados da coluna FirstName otimizado pela
definio de um ndice no campo EmployeeID e pela definio de sua propriedade
clustered como true (como mostra a Figura 16). Como est agrupada, ela
armazenada fisicamente no disco rgido na ordem classificada, o que torna o acesso
aos dados mais eficiente.
Figura 16. Definio de um ndice na tabela para usar o agrupamento no SQL
Server e obter benefcios no desempenho
Consultas do Access versus modos de exibio do SQL Server
de pedidos.
Com o SQL Server, voc tambm pode depurar os procedimentos armazenados, o que
til ao trabalhar com procedimentos armazenados que contenham lgica comercial
complexa. O depurador oferece suporte definio de pontos de interrupo,
estabelecendo expresses de inspeo de variveis e criando procedimentos passo-a-
passo, como mostra a Figura 21.
Juntamente com as funes internas do SQL Server, voc tambm pode especificar
blocos personalizados de instrues T-SQL. Esses blocos so conhecidos como UDFs
(funes definidas pelo usurio). Implementadas praticamente da mesma maneira
que as funes nas linguagens de programao, as UDFs so uma ferramenta
poderosa que permite a reutilizao de cdigo e o encapsulamento da lgica
comercial. Elas podem retornar um nico valor (escalar) ou uma tabela.
UDFs escalares
Por exemplo, voc poderia criar uma UDF para aceitar um valor em dinheiro, executar
clculos de impostos e retornar o preo incluindo o imposto. Essa funo poderia,
ento, ser chamada em qualquer procedimento armazenado que exigisse um clculo
de imposto.
UDFs de tabela
O SQL Server 2000 introduziu um tipo de dados table, o qual pode retornar uma
tabela de dados de uma funo. Usar os tipos de dados table nas UDFs muito mais
eficiente do que criar e excluir tabelas fsicas para executar consultas nos
subconjuntos de dados. Eles so armazenados e manipulados na memria e no
exigem nenhum acesso ao disco.
Para obter mais informaes sobre funes definidas pelo usurio.
Escalabilidade e desempenho
O SQL Server oferece aprimoramentos significativos em relao ao Access no que diz
respeito ao dimensionamento da soluo de banco de dados para atender ao aumento
de demanda dos negcios. Alm disso, a arquitetura cliente/servidor aprimorada
distribui a carga do processamento e resulta em melhor desempenho.
Figura 23. O Lumigent Log Explorer oferece controle total sobre o banco de
dados do SQL Server, pois possibilita a anlise de todas as transaes
anteriores.
Consultando dados
Otimizao de consultas
Quando os dados so consultados remotamente no Access, todos so retornados ao
cliente e qualquer filtragem e classificao feita no cliente. Como os dados do SQL
normalmente so consultados pela rede de um cliente, podem ocorrer grandes
problemas de largura de banda da rede. Portanto, ao migrar seu back-end para o SQL
Server, importante recriar as consultas para que retornem apenas o conjunto
solicitado de dados ao cliente (em vez de todo o conjunto de dados). Por exemplo,
uma consulta com base em um formulrio do Access seria:
SELECT * FROM Customers
Ela retornaria apenas uma linha/um registro. Cada vez que o usurio fosse para o
registro anterior ou o prximo registro do formulrio, CustomerID seria alterado e a
consulta teria que ser novamente feita no banco de dados para recuperar o registro
atual.
Esse mtodo de filtragem no servidor ajuda a reduzir o trfego da rede, pois executa
a filtragem e a classificao no servidor do banco de dados e retorna apenas a
quantidade mnima de dados solicitados.
Tipos de consulta
O Access fornece vrios mtodos de exibio de dados e criao de consultas. A
Tabela 5 lista as opes possveis ao migrar tipos de consulta internos do Access para
o SQL Server.
Make table Uma instruo make table pode ser implementada como uma
instruo T-SQL que usa a clusula SELECT INTO para copiar dados
de uma tabela para outra.
Update Uma instruo update pode ser armazenada como uma instruo T-
SQL ou um procedimento armazenado que usa a clusula UPDATE.
Append Uma instruo append pode ser armazenada como uma instruo T-
SQL ou um procedimento armazenado que usa a clusula INSERT
INTO.
Delete Uma instruo delete pode ser armazenada como uma instruo T-
SQL ou um procedimento armazenado que usa a clusula DELETE
FROM.
Declaraes (CREATE No No
ASSERTION, DROP ASSERTION,
etc.)
Procedimentos armazenados.
Transaes distribudas.
Aliases em consultas.
Backup e restaurao de dados.
A linguagem T-SQL uma poderosa extenso ao conjunto padro de comandos SQL.
Ela fornece toda a funcionalidade necessria para:
Executar clculos.
FROM Customers
WHERE Orders.CustomerID IN
SELECT Customers.CustomerID
FROM Customers
And
WHERE OrderHistory.CustomerID IN
(
SELECT Customers.CustomerID
FROM Customers
And
Essa uma maneira ineficiente de executar essa operao, pois um filtro LIKE, que
consome muitos recursos, teria que ser executado na tabela Customers para cada
operao de excluso. Executar esses filtros WHERE com caracteres curinga criaria
grandes problemas de desempenho, pois a tabela Customers ficaria com milhes de
registros.
Uma maneira mais eficiente de executar essa operao usar variveis de tabela, um
recurso disponvel no SQL Server. As variveis de tabela so usadas como tabelas
comuns na sintaxe de SQL. No entanto, elas diferem das tabelas comuns, pois so
armazenadas temporariamente na memria e no no disco rgido. Como o acesso
memria significativamente mais rpido do que o acesso ao disco rgido, as
variveis de tabela tornam-se teis na execuo de vrias operaes no mesmo
conjunto de dados filtrados ou associados.
Para implementar o exemplo anterior usando uma varivel de tabela, voc:
Declararia a tabela:
WHERE Orders.CustomerID IN
SELECT CustomerID
FROM @tmpCustomerIDs
And
DELETE FROM OrderHistory
WHERE OrderHistory.CustomerID IN
SELECT CustomerID
FROM @tmpCustomerIDs
And
WHERE Customers.CustomerID IN
SELECT CustomerID
FROM @tmpCustomerIDs
As tabelas temporrias so outro mecanismo oferecido pelo SQL Server para executar
operaes em um conjunto dinmico de dados de forma eficiente. Ao contrrio das
variveis de tabela, elas permanecem na memria por mais tempo e, portanto, podem
exigir mais bloqueios de dados e recursos de registro em log.
bancos de dados, que usar mtodos proprietrios exclusivos para extrair dados do
banco de dados. Esse um processo provavelmente caro e pode ter implicaes de
segurana, pois terceiros manusearo seus dados.
Figura 25. Erro ao tentar abrir um banco de dados corrompido do Access
O SQL Server oferece um controle muito maior sobre a recuperao de dados. Voc
pode selecionar um dos trs modelos de recuperao em cada banco de dados do SQL
Server para determinar como foi feito o backup dos dados e qual a sua exposio
perda de dados. Os trs modelos de recuperao so:
alteraes estruturais.
dados de destino.
Concluso
O Microsoft SQL Server 2000 uma soluo de banco de dados de nvel corporativo
com recursos amplamente aprimorados de escalabilidade, manuteno e recuperao
de bancos de dados em comparao com o Microsoft Access 2002. Por ter como base
a arquitetura cliente/servidor, o SQL Server bem diferente do Access na forma como
processa e envia dados por uma conexo remota. O SQL Server tambm oferece
muitos recursos para facilitar e tornar mais flexvel a tarefa de consulta de dados,
reutilizao de lgica comercial e backup de dados.
Glossrio
ADO.NET
Um modelo de acesso a dados fornecido com o Microsoft .NET Framework. Ele foi
criado especificamente para a Web, considerando escalabilidade, ausncia de estado e
XML.
Arquitetura cliente/servidor
Uma arquitetura de software que promove escalabilidade permitindo que vrios
clientes faam solicitaes e recebam resultados de um servidor central ou grupo de
servidores. A carga de processamento compartilhada entre o cliente e o servidor.
Agrupamento
Um mtodo de indexao e classificao de dados diretamente no disco rgido para
permitir uma consulta de dados extremamente rpida.
Data Transformation Services
Uma ferramenta fornecida com o SQL Server que permite importar dados de/exportar
dados para vrias fontes de dados que usam uma arquitetura baseada em banco de
dados OLE, como o Microsoft Excel.
OLAP
Processamento analtico online. Um modelo de armazenamento de dados para ajud-
lo a analisar dados comerciais de diferentes pontos de vista. Por exemplo, voc pode
usar o OLAP para exibir todos os produtos vendidos em uma determinada regio,
acima de um preo especfico e em um determinado perodo de tempo.
SQL Server Enterprise Manager
Uma ferramenta fornecida com o SQL Server para facilitar o gerenciamento de
objetos, usurios, backups e permisses do banco de dados.
SQL Server Profiler
Uma ferramenta fornecida com o SQL Server para ajud-lo a otimizar consultas pela
identificao de transaes do banco de dados especialmente lentas ou que
consumam muitos recursos.
SQL Server Query Analyzer
Uma ferramenta fornecida com o SQL Server para permitir a criao e a depurao de
consultas do banco de dados.
T-SQL
Transact-SQL. Uma extenso do padro de linguagem de consulta SQL-92 que fornece
mais recursos ao SQL Server, como procedimentos armazenados, backup e
restaurao de dados, bem como transaes distribudas.
UDDT
Tipos de dados definidos pelo usurio. Um recurso do SQL Server que permite criar
seus prprios tipos de dados com base nos tipos de dados base j existentes no
programa. Os UDDTs aplicam lgicas comerciais mais rgidas aos dados.
UDFs
Funes definidas pelo usurio. Blocos personalizados de instrues T-SQL que
facilitam a reutilizao da lgica comercial por todo o aplicativo de banco de dados.
Visual Studio .NET
Um IDE (ambiente de desenvolvimento integrado) para que os desenvolvedores
possam criar visualmente vrios aplicativos conectados ao Microsoft .NET. Ele fornece
ferramentas eficientes de criao, desenvolvimento, teste e implantao de aplicativos
da Web e do Windows habilitados para .NET.
XML
Extensible Markup Language. Uma maneira padro amplamente usada de representar
texto e dados em um formato que possa ser processado sem muita ao humana ou
de mquina.
Para obter mais informaes
Sobre o autor
Adam Cogan Diretor de arquitetura da SSW, um Microsoft Certified Partner
especializado em solues baseadas no Office e no .NET. Na SSW, Adam desenvolve
solues personalizadas para empresas de vrios setores usando tecnologias da
Microsoft, como SQL Server 2000, .NET e Office 2003. Adam tambm responsvel
pelo Grupo de Usurios do Microsoft .NET em Sydney e est ativamente envolvido no
processo regional de gerenciamento da INETA.