You are on page 1of 39

Comparaes entre o banco de dados do Access

2002 e SQL Server 2000


Adam Cogan - Diretor regional da Microsoft, Austrlia
(Adaptado por Emerson Tadeu)
Dezembro de 2004

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

A muito tempo venho tentando demonstrar na comunidade que existem diferenas


tcnicas que delimitam a necessidade de se utilizar um banco de dados mais robusto e
que em determinados momentos um sistema baseado em Access seria suficiente.
Neste artigo Adam Cogan fala sobre as principais limitaes das aplicaes que utilizam
Access que basicamente so:

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.

4 (Programabilidade) Access no SGBD portanto no possui recursos como stored


procedures que tem funcionamento especfico de otimizar o desempenho alm de ajudar no
reaproveitamento de cdigo, pois afinal, Crtl+C >> Crtl+V no reutilizao de cdigo
caso algum no saiba disto tambm.
Alm disto no possui recursos como triggers, functions e nem da suporte a T-SQL.

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.

Resumo: Use esta comparao de recursos na preparao da migrao do banco de


dados back-end do Access 2002 para o SQL Server 2000.

Pr-requisitos
Todas as comparaes contidas neste documento so feitas pressupondo-se o uso dos
seguintes softwares:

Microsoft Access 2002 ou posterior

Microsoft SQL Server 2000 Standard Edition ou Enterprise Edition


Tambm se pressupe que os seus dados estejam armazenados em um arquivo de
banco de dados do Access (.mdb), e no no SQL Server, e que voc no esteja
usando um ADP (projeto de dados do Access) que oferea suporte a muitos dos
recursos do SQL Server descritos neste documento.
Quem deve ler este documento
Este documento tem como pblico-alvo desenvolvedores do Access, desenvolvedores
do Microsoft Visual Basic e desenvolvedores do .NET familiarizados com os recursos do
Access e que estejam pensando na possibilidade de migrar sua infra-estrutura de
back-end (dados e consultas) para o Microsoft SQL Server.
Os leitores precisam estar familiarizados com estes recursos do Access:

SQL Bsico

Importao e exportao de dados em vrios formatos

Backup e restaurao de dados

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.

Ferramentas do SQL Server


Usando o menu principal da janela de banco de dados do Access, voc pode criar uma
consulta, projetar um banco de dados ou pesquisar dados. Para exportar dados do
banco de dados, clique em Arquivo e em Exportar. Para importar dados do banco de
dados, clique em Arquivo, em Obter Dados Externos e em Importar.
O SQL Server fornece um conjunto de ferramentas poderosas que simplifica o
processo de navegao, consulta, importao e exportao de dados. So elas:

SQL Server Enterprise Manager

SQL Server Query Analyzer


Data Transformation Services

SQL Server Profiler

Ferramentas do SQL Server para criar bancos de dados e consultas, bem


como pesquisar dados
Com o SQL Server, voc usa duas ferramentas para executar tarefas de manuteno
do banco de dados, bem como pesquisar dados e edit-los. So elas o SQL Server
Enterprise Manager e o SQL Server Query Analyzer. Os desenvolvedores de
formulrios do Access que planejam migrar seus formulrios para o .NET acharo o
Microsoft Visual Studio .NET til, pois ele oferece uma maneira integrada de criar e
gerenciar o banco de dados do SQL Server e os formulrios de acesso a dados no
mesmo ambiente de desenvolvimento.

SQL Server Enterprise Manager


O SQL Server Enterprise Manager o aplicativo incorporado ao SQL Server para criar
e gerenciar bancos de dados, como mostra a Figura 1, bem como navegar pelos
dados, como mostra a Figura 2. O Enterprise Manager tambm fornece funcionalidade
para:
Gerenciar tabelas, campos e dados; relacionamentos de tabelas; procedimentos

armazenados; modos de exibio; disparadores; funes; e tipos de dados


definidos pelo usurio.

Criar diagramas de banco de dados.

Criar backups dos bancos de dados e restaurar dados.

Gerenciar logons e permisses de objeto do banco de dados.


Importar e exportar dados em vrios formatos que usem o DTS (Data

Transformation Services).

Figura 1. O SQL Server Enterprise Manager substitui a caixa de dilogo


principal para criao e gerenciamento de bancos de dados do Access.

Figura 2. Use o Enterprise Manager para pesquisar dados e edit-los como no


Access.
SQL Server Query Analyzer

O SQL Server Query Analyzer uma ferramenta de consulta grfica completa que
substitui o principal designer de consulta do Access. Ele permite:

Criar e depurar consultas.

Executar vrias consultas simultneas.

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

Execution Plan (Mostrar plano de execuo).


Depurar consultas avanadas. Para isso, basta clicar em Tools, em Object

Browser (Pesquisador de objetos) e em Debug (Depurar).


Dica: o Query Analyzer oferece suporte aos recursos descritos anteriormente e
fornece realce de sintaxe para facilitar a exibio e a depurao de consultas, como
mostra a Figura 3. Embora voc possa gravar procedimentos armazenados no
Enterprise Manager, como mostra a Figura 4, os desenvolvedores do Access
acharo o Query Analyser mais rico em recursos.
Figura 3. O Query Analyzer substitui o designer de consulta do Access e
adiciona recursos, como realce de sintaxe e depurao de consultas.

Figura 4. Criar procedimentos armazenados avanados no Enterprise


Manager no to fcil quanto no Query Analyzer
O recurso Criar Consulta Usando o Assistente do Access no tem equivalente no SQL
Server. Voc deve criar consultas usando o designer de consulta ou as instrues do
SQL Server.

Visual Studio .NET


Com o Visual Studio .NET, voc pode gerenciar o banco de dados e seus objetos
praticamente da mesma maneira que o faz com o Enterprise Manager, como mostra a
Figura 5. Dependendo de sua verso do Visual Studio .NET, voc pode criar um
projeto de banco de dados que permita:
Criar e executar procedimentos armazenados, modos de exibio, disparadores e

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.

Figura 5. O Visual Studio .NET fornece uma maneira integrada de gerenciar


dados

Ferramentas do SQL Server para importar e exportar dados

Data Transformation Services


O DTS (Data Transformation Services) 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. O DTS substitui as funes de importao e exportao
do Access (como mostra a Figura 7) e tambm oferece funcionalidade para:

Exportar dados para/importar dados de outro banco de dados SQL Server.


Exportar e importar dados em vrios formatos, como Excel (arquivos .xls), valores

separados por vrgula (arquivos .csv) e Microsoft Access (consulte a Figura 6).
Executar transformaes nos dados.

Figura 6. Use o DTS para importar e exportar dados em vrios formatos.

O DTS mais eficiente do que os comandos de importao e exportao do Access.


Muitas tarefas executadas em um processo de importao do Access em vrias etapas
(por exemplo, popular tabelas temporrias e executar vrias consultas para fazer a
transformao) podem ser executas no DTS em apenas uma etapa. Voc pode
executar transformaes de dados, como copiar dados de uma tabela para outra
usando uma consulta SQL ou executar cdigo VBScript para transformar partes dos
dados antes da insero na tabela de destino, como mostra a Figura 8.
Figura 7. O DTS substitui os assistentes de importao e exportao do
Access e permite transformaes de dados eficientes.

Figura 8. O DTS executa transformaes eficientes nos dados que


demorariam muito mais no Access.
SQL Server Profiler

O SQL Server Profiler uma ferramenta essencial de otimizao do desempenho do


banco de dados. Ele especialmente til aps a migrao de um sistema somente
cliente, como o Access. Ele exibe todos os comandos executados no servidor, como
conexes abertas e fechadas e transaes do banco de dados, como mostra a Figura
9. Isso ajuda a identificar as transaes especialmente longas ou que consomem
muitos recursos.

Figura 9. O SQL Server Profiler monitora a atividade do banco de dados para


ajudar na otimizao do desempenho.

Arquitetura
H vrias diferenas, semelhanas e desvantagens entre a arquitetura do Access e do
SQL Server. As diferenas esto em:

Modelos de acesso a dados.

Design de tabela.

Relacionamentos.

Indexao.

Tipos de consulta de dados.


O SQL Server tambm inclui ferramentas eficientes para otimizar e simplificar a

manipulao de dados, incluindo:

Disparadores.

Tabelas temporrias.
Funes definidas pelo usurio.

Requisitos do sistema

Requisitos mnimos do sistema


Como o SQL Server tem mais recursos e mais escalonvel do que o Access, ele
exige um pouco mais de requisitos do sistema. A Tabela 1 compara os requisitos
mnimos entre os dois sistemas.

Tabela 1. Requisitos mnimos do sistema para o SQL Server e o Access

Access SQL Server

Processador Pentium 75 MHz Pentium 166 MHz

Memria 8 MB, mais 4 MB para cada aplicativo 128 MB de RAM ou mais


executando simultaneamente, e mais
128 MB para o Microsoft Windows XP

Espao no 30 MB 270 MB (instalao


disco rgido completa)

Sistema Microsoft Windows Server 2003, Microsoft Windows Server


operacional Windows XP, Windows 2000, Windows 2003, Windows XP,
NT 4.0 com Service Pack 6 (SP6), Windows 2000, Windows
Windows Millennium Edition, Windows NT 4.0, Windows 98
98 Segunda Edio, Windows 98 ou Segunda Edio, Windows
Windows 95 98, Windows 95 ou
Windows CE

Requisitos realistas do sistema


Os requisitos mnimos listados na Tabela 1 no so realistas em um ambiente
operacional comum. Os requisitos do sistema dependem principalmente da quantidade
de dados e do nmero de usurios simultneos.
Em um cenrio de 10 usurios simultneos em um banco de dados de 1 GB, o sistema
especificado na Tabela 2 o recomendado para executar o Access ou o SQL Server
em um ambiente de produo.

Tabela 2. Requisitos recomendados do sistema para o SQL Server e o Access

Recomendado

Processador Pentium III 650 MHz

Memria 384 MB

Espao no disco rgido 2 GB

Sistema operacional Microsoft Windows Server 2003 ou Windows 2000


Verses do SQL Server
O SQL Server 2000 est disponvel em seis edies:

Enterprise

Standard

Personal

Developer

Desktop Engine (MSDE)

SQL Server CE (uma verso compatvel com o Windows CE)

A Tabela 3 mostra os requisitos de sistema operacional para as diferentes edies do


SQL Server.

Tabela 3. Requisitos de sistema operacional para as diferentes edies do


SQL Server

Sistema Enterprise Standard Personal Developer Desktop SQL


operacional Edition Edition Edition Edition Engine Server
(MSDE) CE

Windows Sim Sim Sim Sim Sim No


Server 2003,
Standard
Edition

Windows Sim Sim Sim Sim Sim No


Server 2003,
Enterprise
Edition

Windows Sim Sim Sim Sim Sim No


Server 2003,
Datacenter
Edition

Windows XP No No Sim Sim Sim No


Professional

Windows CE No No No No No Sim

Windows 9x No No Sim No Sim No

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.

Modelos de acesso a dados


O Access um RDBMS (sistema de gerenciamento de banco de dados relacional)
somente cliente. Isso significa que todo o processamento de dados, como classificao
e filtragem, feito em um nico computador.
Geralmente, os desenvolvedores de Access tentam emular o mtodo cliente/servidor
dividindo o banco de dados. Em um ambiente no qual vrios usurios usam o Access
simultaneamente, normalmente instala-se um banco de dados do Access em cada
computador cliente. Esse banco de dados contm formulrios, relatrios, consultas
salvas e cdigo de formulrio do Microsoft VBA (Visual Basic for Applications). Todos
os dados so mantidos em um banco de dados do Access em um servidor central e
so devolvidos s mquinas cliente quando solicitados. Esse cenrio exige muitos
recursos da rede e do cliente. Essa estrutura mostrada na Figura 10.

Figura 10. Diviso de banco de dados do Access (o vermelho indica a carga


de trabalho)

Nesse cenrio, no h processamento de dados no servidor. Quando um cliente


solicita dados, todo o conjunto de dados enviado a ele atravs da rede e qualquer
processamento feito na mquina cliente.
Por exemplo, uma financeira tem um banco de dados com um milho de registros em
sua tabela Contas a Receber (arquivo .mdb do Access). Um aplicativo do Access quer
exibir a soma total das contas a receber (um campo calculado). Para isso, o Access
tem que transferir a tabela inteira pela rede e executar os clculos na estao de
trabalho.
Isso pode causar srios problemas de desempenho no servidor e na rede. Vrias
solicitaes de grandes quantidades de dados consumiro recursos do servidor, e
transferir conjuntos inteiros de dados por uma conexo de rede a deixar
consideravelmente mais lenta.
O SQL Server, no entanto, um RDBMS cliente/servidor puro. Isso significa que o
cliente e o servidor compartilham a carga de processamento. O cliente (por exemplo,
um aplicativo do .NET Windows) envia uma solicitao de dados com qualquer
parmetro e o servidor executa qualquer classificao e filtragem e devolve ao cliente
apenas o conjunto filtrado de dados. Essa estrutura mostrada na Figura 11.

Figura 11. O SQL Server ajuda a reduzir o trfego da rede e a carga do


servidor por meio da distribuio de tarefas de processamento entre o cliente
e o servidor.

Como o SQL Server processa toda a filtragem e a classificao no servidor, apenas o


conjunto de resultados especificado retornado. Isso ajuda a reduzir o trfego da
rede de forma significativa, pois h uma transferncia menor de dados entre cliente e
servidor. Isso tambm ajuda a reduzir o volume de processamento do servidor, pois
ele no precisa retornar tantos registros quanto precisaria no Access.

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.

Tabela 4. Comparao de tipos de dados entre o Access e o SQL Server


Jet (Access) SQL Server

Texto char, nchar, varchar, nvarchar

Memorando text, ntext

Byte tinyint

Inteiro smallint

Inteiro Longo integer

Simples real

Duplo float

Cdigo de Replicao uniqueidentifier

Decimal decimal

Data/Hora smalldatetime, datetime, timestamp

Moeda smallmoney, money

AutoNumerao int + identity property

Sim/No bit

Objeto OLE image

Hiperlink <sem equivalente>

<sem equivalente> binary, varbinary

Dica: no Access, as colunas de numerao automtica so geradas automaticamente


assim que o usurio comea a editar um novo registro. No SQL Server, a numerao
automtica gerada somente quando o registro salvo. Cuidado ao recriar qualquer
lgica existente que dependa do valor da numerao automtica no Access.

Tipos de dados definidos pelo usurio


O SQL Server permite definir tipos de dados personalizados, chamados de UDDTs
(tipos de dados definidos pelo usurio). Os UDDTs tm como base os tipos de dados
j existentes no SQL Server. Alm disso, possvel adicionar restries diretamente
aos tipos para:
Especificar um valor padro. (Um valor que ser inserido automaticamente em um

campo se nenhum valor for especificado para esse registro.)

Definir o tamanho mximo do campo.

Definir se o campo pode ser nulo.


Os UDDTs tornam-se sem valor ao especificar campos em tabelas cujas propriedades
possam mudar no futuro. Por exemplo, se voc definisse um campo de identificador
exclusivo cujo tipo de dados base do SQL Server fosse varchar(15) (seqncia de 15
caracteres) e definisse todos os procedimentos armazenados relacionados para aceitar
um parmetro do tipo varchar(15), alterar o comprimento ou o tipo de dados do
campo se tornaria um grande problema de manuteno. Todos os procedimentos
armazenados e as tabelas precisariam ser alterados para refletir as mudanas no tipo
de dados.
Uma soluo melhor seria criar um UDDT chamado "CodeType", por exemplo, e definir
o comprimento e o tipo de dados base no UDDT. Todos os procedimentos
armazenados e as definies de tabela usariam esse UDDT; portanto, se o tamanho
do campo aumentasse, bastaria alterar a definio do UDDT.
Os UDDTs so definidos por meio do Enterprise Manager, como mostra a Figura 12.

Figura 12. Especificando UDDTs para usar em objetos de banco de dados do


SQL Server
Design de tabela

As tabelas so representadas de forma semelhante no Access e no SQL Server. Ambos


os DBMSs (sistemas de gerenciamento de banco de dados) so relacionais, ou seja,
dados relacionados so armazenados em tabelas lgicas vinculadas por identificadores
exclusivos. A interface de design de tabela semelhante no Access e no SQL Server,
como mostra a Figura 13.
Figura 13. Design semelhante de tabelas no Access e no SQL Server
Relacionamentos

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:

NOT NULL. Especifica que a coluna no pode conter um valor NULL.


CHECK. Restringe os valores que podem ser inseridos em uma coluna. O cdigo a

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

EmployeeID int PRIMARY KEY,

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.

usado normalmente em colunas de identificao.


PRIMARY KEY. Identifica a coluna ou um conjunto de colunas cujos valores

identificam uma linha da tabela de forma exclusiva.


FOREIGN KEY. Estabelece os relacionamentos entre tabelas. O cdigo a seguir cria

uma tabela EmployeePosition que faz referncia a EmployeeID na tabela Employee


criada anteriormente.
CREATE TABLE EmployeePosition

EmployeePositionID int PRIMARY KEY,

EmployeeID int FOREIGN KEY

REFERENCES Employee(EmployeeID)

ON DELETE CASCADE

Position char(50)

Figura 14. O SQL Server oferece suporte a relacionamentos semelhantes


aos do Access

A clusula ON DELETE tem duas opes:

CASCADE. Especifica que, se o registro de um funcionrio for excludo da tabela


Employee, qualquer registro com um EmployeeID correspondente na tabela
EmployeePosition tambm ser excludo.
NO ACTION. Especifica que o registro EmployeePosition no ser afetado se o

registro pai usado como referncia na tabela Employee for excludo.

O SQL Server tambm oferece suporte clusula ON UPDATE, que especifica a ao a


ser realizada se um registro pai for atualizado. Ele tambm oferece suporte s opes
CASCADE e NO ACTION.
Lembre-se de que os relacionamentos no SQL Server no so to flexveis quanto no
Access. No Access, voc pode:
Atualizar em cascata, atualizar ou fazer uma atualizao de excluso de uma tabela

para ela mesma.


Atualizar em cascata, atualizar ou fazer uma atualizao de excluso de chaves

externas em uma tabela na qual a propriedade Required esteja definida como


Yes.
Embora o SQL Server no oferea suporte a essas duas opes, isso pode levar a
bancos de dados mais robustos e com menos probabilidade de problemas de
relacionamento e de chave.

Referncias circulares na atualizao em cascata sem suporte


Ao contrrio do Access, o SQL Server no permite integridade referencial circular.
Digamos, por exemplo, que haja um funcionrio de nvel snior no departamento de
vendas de uma empresa. No banco de dados, o Employee Type do funcionrio
Senior e Category Sales. No entanto, no banco de dados, o Employee Type Senior
est na Sales Category. Como mostra a Figura 15, a estrutura do banco de dados que
permite isso cria uma referncia circular que o SQL Server no permite. Se tentar
criar restries de atualizao circulares, voc receber algo semelhante a este erro:
Unable to create relationship 'FK_EmployeeType_Employee'.

ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]Introducing

FOREIGN KEY constraint 'FK_EmployeeType_Employee' on table


'EmployeeType'

may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION


or

ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.

[Microsoft][ODBC SQL Server Driver][SQL Server]Could not create

constraint. See previous errors.

Isso acontece porque h a possibilidade de causar um loop infinito se um campo for


atualizado em qualquer uma das tabelas. Neste exemplo, atualizar um campo
CategoryID far com que o prximo campo CategoryID seja atualizado (devido
integridade referencial da atualizao em cascata), o que faria com que o prximo
campo CategoryID fosse atualizado e assim sucessivamente.
Figura 15. Restries de atualizao em cascata circular causam erros no SQL
Server.

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

Os modos de exibio do SQL Server so semelhantes s consultas do Access, como


mostram as Figuras 17 e 18. Eles permitem especificar um conjunto de dados
filtrados, possivelmente agrupados a partir de vrias tabelas e de outros modos de
exibio.
Os modos de exibio so teis quando se lida com questes relacionadas
segurana. Por exemplo, para que um grupo de usurios possa exibir informaes
sobre um pedido de produto, mas no os detalhes do carto de crdito vinculados ao
pagamento, voc:
Criar um modo de exibio que recupere apenas os campos no sigilosos da tabela

de pedidos.

Recusar ao grupo de usurios qualquer acesso tabela de pedidos.

Conceder ao grupo de usurios acesso exibio.


Figura 17. Consultas no Access

Figura 18. Modos de exibio no SQL Server

Os modos de exibio, ao contrrio das consultas, tambm podem aproveitar a


indexao, o que pode melhorar significativamente o desempenho de um aplicativo, j
que as consultas executam determinadas associaes ou agregaes com freqncia.
Um modo de exibio indexado permite a criao de ndices em modos de exibio
cujo conjunto de resultados armazenado e indexado no banco de dados.

Consultas do Access versus procedimentos armazenados do SQL Server


O SQL Server usa procedimentos armazenados para consultar os dados e fazer
clculos com eles. A principal vantagem dos procedimentos armazenados que eles
so compilados a primeira vez em que so executados. Isso significa que o SQL
Server encontrar a melhor maneira de executar o procedimento armazenado e
armazenar esse plano de execuo na memria. A subseqente execuo do
procedimento armazenado ser mais rpida, pois o SQL Server j encontrou a melhor
forma de executar a consulta.
Os procedimentos armazenados so criados e modificados no SQL Server Enterprise
Manager, assim como as consultas do Access so editadas no Access (consulte a
Figura 19). Os procedimentos armazenados so semelhantes s consultas do Access
no que diz respeito a aceitarem parmetros de entrada.

Figura 19. Procedimentos armazenados para consultar os dados e fazer


clculos com eles

Como os procedimentos armazenados so criados em T-SQL, eles oferecem uma


vantagem em relao s consultas do Access, pois a lgica condicional e os clculos
podem ser usados para modificar ou retornar dados, bem como para executar
algumas outras funes, como mostra a Figura 20.
Figura 20. Usando T-SQL para executar lgica condicional e clculos em
consultas

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.

Figura 21. Depurao avanada de consulta no SQL Server


Consultas do Access versus funes definidas pelo usurio do SQL Server

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.

Disparadores em tabelas e modos de exibio


O SQL Server incluiu suporte para disparadores. Disparadores so procedimentos
armazenados executados quando os dados so atualizados, excludos ou inseridos em
uma tabela. Os disparadores podem ser definidos para executar quando uma linha ou
um campo especfico for atualizado. Lembre-se de que os disparadores podem ser
usados para impor integridade referencial da mesma forma que as restries. No
entanto, as restries so mais eficientes do que os disparadores e devem ser usadas
sempre que possvel.
Os disparadores podem ser usados para executar aes personalizadas quando houver
alterao nos dados de uma tabela. Por exemplo, voc poderia configurar um
disparador para comparar os dados inseridos ou atualizados com os dados de outro
campo de outra tabela, e atualiz-los de forma apropriada ou exibir uma mensagem
de erro personalizada. Para obter mais informaes sobre como usar disparadores
para impor lgicas comerciais.
Os disparadores podem ser criados atravs do SQL Server Enterprise Manager e em
um projeto de banco de dados do Visual Studio .NET, como mostra a Figura 22.
Figura 22. Disparadores criados em um projeto de banco de dados do Visual
Studio .NET

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.

Suporte para mais usurios simultneos


O Access oferece suporte a, no mximo, 255 usurios simultneos e, por isso, no
uma soluo vivel de armazenamento de dados de nvel corporativo. Em um
ambiente de produo, comum ter problemas graves de desempenho, bem como
danos aos dados, quando 20 usurios tentam usar o banco de dados do Access
simultaneamente em uma rede.
O SQL Server oferece suporte a uma base de usurios simultneos limitada apenas
pela memria disponvel no sistema e, graas ao seu mecanismo otimizado de
processamento de consultas e sua capacidade de usar simultaneamente vrios
computadores, processadores e discos rgidos, ele pode ser dimensionado para
atender a quaisquer exigncias corporativas.

Suporte a um banco de dados maior


O Access oferece suporte a um banco de dados de, no mximo, 2 GB, incluindo
tabelas vinculadas. Embora o uso de tabelas vinculadas teoricamente permita
armazenar muito mais dados, comum ter problemas de desempenho e na rede
devido quantidade de dados em processamento. Para obter mais informaes.
O SQL Server melhorou bastante os recursos de armazenamento, permitindo o
armazenamento eficiente de 1.048.516 terabytes de dados em vrios dispositivos.

Os arquivos de log mantm um registro de toda a atividade do banco de


dados
O SQL Server tem uma vantagem em relao ao Access: todas as transaes
(atualizaes, inseres e excluses no banco de dados) so armazenadas em um
arquivo de log. Esse log registra as alteraes nos dados e informaes suficientes
para posteriormente desfazer as modificaes efetuadas durante cada transao, se
necessrio.
Ferramentas como o Lumigent Log Explorer permitem que voc analise um log de
transaes do SQL Server e desfaa manualmente as transaes (consulte a Figura
23). Para obter mais informaes, consulte o site da Lumigent.

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.

Arquivos de banco de dados e de log divididos entre vrios dispositivos


Os bancos de dados do Access so armazenados como arquivos .mdb nicos. Por isso,
eles podem ser armazenados e executados em apenas uma mquina. Isso pode
causar problemas quando o banco de dados e a base de usurios aumentam, pois o
poder de processamento e o espao de armazenamento ficam restritos ao hardware
do nico servidor do banco de dados.
Os bancos de dados do SQL Server so um grupo de arquivos fsicos gerenciados pelo
programa. Esses arquivos incluem, no mnimo, um arquivo de log de transaes (com
a extenso .ldf) e um arquivo de dados primrio (com a extenso .mdf). Os bancos de
dados do SQL Server tambm podem ter um ou mais arquivos de dados secundrios
(com a extenso .ndf). O arquivo de dados primrio usado como ponto de partida
para o banco de dados e contm dados e referncias aos arquivos de dados
secundrios.
Ao trabalhar com um banco de dados grande, armazenar o log de transaes e vrios
arquivos de dados em computadores diferentes permite aproveitar o poder de
processamento de vrios computadores. Isso tambm permite que voc use o espao
de armazenamento de vrios computadores ou discos rgidos.

Consultas mais robustas


Os desenvolvedores do Access talvez tenham encontrado um erro de Memria

Insuficiente ou Consulta Muito Complexa ao tentar executar uma consulta, um


formulrio ou um relatrio baseado em uma consulta. Normalmente, isso ocorre
porque a consulta que est tentando executar contm mais associaes de tabela
do que o Access pode processar. Para contornar esse problema, os desenvolvedores
do Access normalmente so forados a desperdiar recursos na recriao de
consultas e na reestruturao de tabelas.
O SQL Server foi reprojetado para oferecer suporte a consultas muito mais flexveis.
Em uma nica consulta, voc pode usar at:

256 tabelas na instruo SELECT;

Cerca de 256 KB de texto de consulta;

4.096 colunas na instruo SELECT.


Tambm importante observar que o Access oferece suporte a at 50 subconsultas
aninhadas, enquanto o SQL Server oferece suporte a apenas 32, no mximo.

Trabalhando com dados


Criar consultas de dados no Access diferente de cri-las no SQL Server. H
diferenas na linguagem da consulta e no designer de consulta. O SQL Server tambm
oferece suporte a procedimentos armazenados, uma maneira eficiente de armazenar
consultas de dados, bem como a funes definidas pelo usurio, as quais facilitam a
reutilizao da lgica comercial. Alm disso, o SQL Server fornece um modelo de
recuperao de falhas muito mais eficiente do que o modelo do Access.

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

A consulta anterior retornaria toda a tabela Customers quando o formulrio fosse


aberto. No SQL Server, essa consulta teria que ser otimizada para retornar apenas o
registro atual. A consulta no SQL teria este formato:
SELECT * FROM Customers WHERE CustomerID = 'C00010'

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.

Tabela 5. Opes de converso de consultas do Access para o SQL Server

Tipo de Opes de migrao do SQL Server


consulta
do Access

Select Uma instruo SELECT pode ser usada em um arquivo T-SQL, um


procedimento armazenado ou um modo de exibio. As instrues
SELECT tambm podem ser criadas usando o designer de consulta
interno do SQL Server, o qual semelhante ao designer de consulta
do Access (consulte a Figura 24).

Crosstab Uma instruo crosstab pode ser implementada como um arquivo T-


SQL, um procedimento armazenado ou um modo de exibio.
Tabelas temporrias podem ser usadas para consultar os conjuntos
de dados necessrios tabela de referncia cruzada na memria. As
tabelas temporrias podem ser associadas e consultadas para
recuperar os dados necessrios da tabela de referncia cruzada.
Converter dados da tabela de referncia cruzada do Access para que
funcionem no SQL Server pode ser uma tarefa demorada. Voc pode
considerar a possibilidade de usar um aplicativo de terceiros para
automatizar algumas das etapas.
Uma soluo flexvel, eficiente e extensvel para consultas de tabela
de referncia cruzada o SQL Server Analysis Services. Com o
Analysis Services, voc pode criar cubos de dados OLAP
(processamento analtico online) para permitir a gerao de
relatrios complexos e dinmicos. Para obter uma explicao
detalhada de como usar o SQL Server Analysis Services em seus
dados.

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.

Figura 24. Criar consultas SELECT, semelhante no Access e no SQL Server


Recursos da linguagem de consulta

A Tabela 6 resume as principais diferenas nos recursos de linguagem de consulta aos


quais o Access e o SQL Server oferecem suporte (extrada do Access 2002 Desktop
Developer's Handbook de Paul Litwin, et alii, SYBEX Inc., 2001).

Tabela 6. Diferenas entre as consultas de dados do Access e do SQL Server


Recurso Com suporte no Access Com suporte no
SQL com as Extenses SQL Server 2000
Jet 4 SQL-92 T-SQL

Segurana (GRANT, REVOKE, Sim Sim


etc.)

Suporte transao (COMMIT, Sim Sim


ROLLBACK, etc.)

Modos de exibio (CREATE Sim Sim


VIEW)

Tabelas temporrias No Sim

Associaes na clusula FROM Sim Sim

Associaes nas instrues Sim No


UPDATE e DELETE

Suporte para FULL OUTER JOIN No Sim


e UNION JOIN

Suporte para subconsultas na No Sim


clusula SET das instrues
UPDATE

Suporte para vrias tabelas nas Sim No


instrues DELETE

SELECT DISTINCTROW Sim No

SELECT TOP Sim No

Cursores (DECLARE CURSOR, No Sim


FETCH, etc.)

Suporte a domnio (CREATE No Sim


DOMAIN, ALTER DOMAIN, etc.)

Suporte a restries de Sim Sim


verificao

Declaraes (CREATE No No
ASSERTION, DROP ASSERTION,
etc.)

Construtores de valor de linha No No

Expresses CASE No Sim

Suporte completo para No Sim


integridade referencial na
instruo CREATE TABLE

Tabelas e cdigos de erro No No


padronizados do sistema

Tabelas e cdigos de erro No No


padronizados do sistema

Tipos de dados padro Sim Sim

Operadores padro de seqncia No Sim


de caracteres

Caracteres curinga padro Sim Sim

Suporte a funes do VBA Sim No

Suporte a funes do VBA Sim No

Funes agregadas adicionais Sim No

Instruo TRANSFORM Sim No

Parmetros em consultas ou Sim Sim


procedimentos armazenados

Instruo SELECT INTO Sim Sim

Capacidade para gerar scripts de objetos


SQL (Structured Query Language) a linguagem padro usada pelo Access e pelo SQL
Server para acesso e manipulao de dados. A reviso mais recente da linguagem
SQL chamada de SQL-92, cujo nome inclui o ano em que foi concluda. A Microsoft
adicionou algumas de suas prprias extenses linguagem SQL base, as quais variam
entre as duas solues de DBMS.
O Access oferece suporte s extenses SQL-92 e Jet 4 ANSI-92, as quais incluem
suporte para gerenciamento de transaes usando o SQL.
As extenses Jet 4 ANSI-92 tambm adicionam suporte para facilitar o gerenciamento
da segurana do banco de dados. No entanto, no h suporte para alguns recursos,
como a definio e alterao de propriedade do objeto de banco de dados.
No SQL Server 2000, a Microsoft adicionou extenses personalizadas linguagem
SQL-92 base. Essas extenses adicionam suporte a scripts para alguns recursos
importantes, como:

Procedimentos armazenados.

Transaes distribudas.

Funes do sistema operacional.

Subconsultas mais flexveis.

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:

Recuperar, modificar, excluir e adicionar dados s tabelas de banco de dados.

Aceitar e retornar parmetros.

Executar clculos.

Executar funes internas e definidas pelo usurio.

Copiar dados entre servidores.


O T-SQL como um cruzamento entre as consultas do Access e o VBA, pois as
consultas de dados podem ser combinadas com lgica condicional e clculos.
Lembre-se de que o SQL Server oferece suporte total ao padro SQL-92; portanto, o
uso de extenses no necessrio.

Variveis de tabela: teis em consultas complexas


Para fazer clculos no Access em um conjunto de tabelas associadas, voc cria uma
consulta definindo as associaes. Em um aplicativo que usa esses dados, cada vez
que a consulta usada em uma instruo SELECT do SQL, todas as tabelas precisam
ser associadas novamente, uma operao que pode consumir muitos recursos
(especialmente em um ambiente de vrios usurios).
Por exemplo, para excluir todos os clientes cujo nome comece com a letra "A" e todos
os pedidos de cliente e histricos dos pedidos, no Access voc:
1. Criaria uma consulta SELECT para obter todos os cdigos de cliente
necessrios:
SELECT Customers.CustomerID

FROM Customers

WHERE Customer.FirstName LIKE 'A%'

2. Incluiria a consulta SELECT em trs consultas DELETE para excluir todos os


clientes, pedidos e histricos dos pedidos necessrios:
DELETE FROM Orders

WHERE Orders.CustomerID IN

SELECT Customers.CustomerID

FROM Customers

WHERE Customer.FirstName LIKE 'A%'

And

DELETE FROM OrderHistory

WHERE OrderHistory.CustomerID IN
(

SELECT Customers.CustomerID

FROM Customers

WHERE Customer.FirstName LIKE 'A%'

And

DELETE FROM Customers

WHERE Customer.FirstName LIKE 'A%'

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:

DECLARE @tmpCustomerIDs TABLE (CustomerID nvarchar(50))

Obteria o conjunto de registros filtrados e os armazenaria na varivel de tabela:

INSERT INTO @tmpCustomerIDs (CustomerID)

(SELECT CustomerID FROM Customers WHERE Customers.ContactName LIKE


'A%')

Executaria todas as operaes relacionadas a clientes, pedidos e histricos de

pedidos usando valores da varivel de tabela:


DELETE FROM Orders

WHERE Orders.CustomerID IN

SELECT CustomerID

FROM @tmpCustomerIDs

And
DELETE FROM OrderHistory

WHERE OrderHistory.CustomerID IN

SELECT CustomerID

FROM @tmpCustomerIDs

And

DELETE FROM Customers

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.

Recuperando-se da falha no sistema


A maioria dos desenvolvedores j encontrou um erro de Formato de banco de
dados no reconhecido ao tentar abrir um banco de dados corrompido (como
mostra a Figura 25). Quando ocorre uma falha do sistema (como uma falha do
sistema operacional ou queda de energia), as suas opes so:
Tentar recuperar os dados do arquivo .mdb corrompido usando a ferramenta de

compactao e reparo do Access e, em seguida, importar os dados recuperados


para um banco de dados em branco a fim de reduzir o nmero de registros
corrompidos. Esse no um processo prova de falhas e h a possibilidade de
perda de dados.
Restaurar de um backup recente, o que resultaria no desperdcio de recursos para

inserir os dados perdidos novamente.


Executar a ferramenta de compactao Jet, Jetcomp.exe. Normalmente, mais

eficiente do que executar a ferramenta de compactao e reparo. No entanto, ainda


no h garantia de que todos os dados no estaro corrompidos.
Enviar o banco de dados corrompido para um especialista em recuperao de

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:

Recuperao Simples. Permite a recuperao do backup mais recente.


Recuperao Completa. Permite a recuperao do banco de dados ao ponto de

falha. Esse modelo exige uma quantidade maior de recursos do sistema e de


espao em disco (para o registro em log).
Recuperao com Registro Mnimo de Transao em Massa (bulk-logged).

Permite a recuperao do banco de dados ao ponto do ltimo backup registrado em


log. Isso exige uma quantidade menor de recursos do sistema e de espao em
disco do que o modelo Recuperao Completa, embora haja uma chance maior de
voc precisar inserir os dados manualmente.
Esses modelos de recuperao fornecem flexibilidade para escolher a melhor

maneira de recuperar-se de falhas no sistema, bem como disponibilidade e recursos


do sistema.
Dica: a principal vantagem dos backups de dados do SQL Server em relao aos
backups do Access que eles podem ser feitos com o banco de dados em
funcionamento. Os usurios no precisam fazer logoff. Isso aumenta a
disponibilidade do banco de dados para os usurios e permite um tempo de
atividade muito maior.

Comparando bancos de dados


No Access, manter o banco de dados de produo ativo e atualizado com as ltimas
alteraes estruturais um projeto contnuo. O banco de dados precisa ser colocado
offline rapidamente para fazer alteraes estruturais e converter dados, mas isso pode
ser difcil quando as pessoas contam com o sistema. A converso de dados tambm
pode levar tempo, pois novos campos e relacionamentos talvez tenham sido
adicionados.
Para fazer alteraes estruturais em um banco de dados do Access, normalmente
ocorre o seguinte:
Os desenvolvedores trabalham no banco de dados do aplicativo e fazem as

alteraes estruturais no banco de dados que contm os dados.


As alteraes no banco de dados que contm os dados so rastreadas e o cdigo

Update Queries, DAO ou ADO criado para fazer a atualizao.


Aps a concluso do desenvolvimento, os bancos de dados precisam ser colocados

offline para que as atualizaes sejam feitas manualmente.


Aplicativos de terceiros, como o SSW Data Renovator, ajudam a reduzir a
indisponibilidade do sistema e a probabilidade de erros, pois automatizam parte desse
processo. O SSW Data Renovator compara o novo banco de dados com o banco de
dados de produo, gera relatrios sobre todas as diferenas entre os dois e fornece
uma interface em estilo de assistente para mover automaticamente os dados para a
nova estrutura.
Embora o SQL Server tenha o benefcio de no exigir que o banco de dados seja
colocado offline para atualizaes estruturais, os administradores do banco de dados
ainda precisam:
Analisar todos os esquemas do banco de dados e logs de quorum em busca de

alteraes estruturais.

Criar manualmente scripts de migrao para enviar ao banco de dados de destino.


Utilitrios de terceiros, como o Red-Gate SQL Compare ou o SSW SQL Deploy ajudam
a automatizar essa tarefa, pois:
Comparam todos os objetos em ambos os bancos de dados, incluindo

procedimentos armazenados, relacionamentos, tabelas, modos de exibio e


funes definidas pelo usurio.

Relatam todas as diferenas.


Geram scripts de migrao que podem ser executados diretamente no banco de

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.