Vous êtes sur la page 1sur 818

SUMRIO

I CURSO COMPLETO00
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
II 00CURSO COMPLETO
Copyright 2001 by Jlio Battisti
Copyright 2001 by Axcel Books do Brasil Editora Ltda.
Nenhuma parte desta publicao poder ser reproduzida
sem autorizao prvia e escrita de Axcel Books do Brasil Editora.
Editora de Produo: Gisella Narcisi
Editor Responsvel: Ricardo Reinprecht
Suporte Tcnico ao Leitor
Limite de garantia: Nosso suporte tcnico limita-se ao contedo especfico do livro, e no a
questes gerais referentes ao(s) software(s) descrito(s), cessando caso esta publicao
tenha sido esgotada. Para obter esse suporte tcnico especfico, o leitor deve
informar ttulo, autor e pgina, somente via e-mail.
Todos os originais de livros enviados para avaliao pela Editora sero destrudos,
caso no sejam aprovados. No ser feita sua devoluo em nenhuma hiptese.
Os conceitos emitidos nesta obra so de inteira responsabilidade do Autor.
SQL Server 2000 Administrao e Desenvolvimento Curso Completo
Jlio Battisti
ISBN: 85-7323-153-X
E-mail:
editora@axcel.com.br
Visite nossa Home Page
http://www.axcel.com.br
Axcel Books do Brasil Editora
Av. Paris, 571 Bonsucesso
21041-020 Rio de Janeiro RJ
Tel. (21) 564-0085
SUMRIO
III CURSO COMPLETO00
CRDITOS
PRODUO
Alexandre Ramires
Carlos Alberto S Ferreira
REVISO
Vanessa Garcia
ARTE E DIAGRAMAO
Ingo Bertelli
SUPERVISOR DE PRODUO
Carlos Alberto S Ferreira
CAPA
Ingo Bertelli
EDITORA DE PRODUO
Gisella Narcisi
EDITOR RESPONSVEL
Ricardo Reinprecht



Nota sobre direitos autorais:

Este e-book de autoria de J lio Battisti, sendo comercializado diretamente atravs do
site www.juliobattisti.com.br ou atravs do site de leiles Mercado Livre:
www.mercadolivre.com.br, mediante contato atravs do email: batisti@hotmail.com ou
webmaster@juliobattisti.com.br, diretamente pelo autor. No Mercado Livre, somente o
usurio GROZA (meu apelido no Mercado Livre) que tem autorizao para
comercializar este e-book. Nenhum outro usurio/email e/ou empresa est
autorizada a comercializar este ebook.

Ao adquirir este ebook voc tem o direito de l-lo na tela do seu computador e de
imprimir quantas cpias desejar. vetada a distribuio deste arquivo, mediante cpia
ou qualquer outro meio de reproduo, para outras pessoas. Se voc recebeu este ebook
atravs do e-mail ou via ftp de algum site da Internet, ou atravs de um CD de Revista,
saiba que voc est com uma cpia pirata, ilegal, no autorizada, a qual constitui crime
de Violao de Direito Autoral, de acordo com a Lei 5988. Se for este o caso entre em
contato com o autor, atravs do e-mail webmaster@juliobattisti.com.br, para regularizar
esta cpia. Ao regularizar a sua cpia voc ir remunerar, mediante uma pequena
quantia, o trabalho do autor e incentivar que novos trabalhos sejam disponibilizados. Se
voc tiver sugestes sobre novos cursos que gostaria de ver disponibilizados, entre em
contato pelo e-mail: webmaster@juliobattisti.com.br.

Visite periodicamente o site www.juliobattisti.com.br para ficar por dentro das
novidades:

Cursos de informtica.
Guias de Estudo para os Exames de Certificao da Microsoft.
Artigos e dicas sobre Certificaes da Microsoft.
Artigos sobre Carreira e Trabalho.
Dicas de livros e sites sobre diversos assuntos.
Simulados gratuitos, em portugus, para os exames da Microsoft.

ESTE E-BOOK NO PODE SER FORNECIDO EM UM CD
OU DVD DE NENHUMA REVISTA
SE VOC OBTEVE UMA CPIA DESTE E-BOOK
ATRAVS DO E-MULE, KAZAA, MORPHEUS OU
OUTRO PROGRAMA DE COMPARTILHAMENTO,
SAIBA QUE VOC EST COM UMA CPIA ILEGAL,
NO AUTORIZADA
USAR UMA CPIA NO AUTORIZADA CRIME DE
VIOLAO DE DIREITOS AUTORAIS, COM PENA
PREVISTA DE CADEIA
VOC S PODE USAR ESTE E-BOOK SE VOC
COMPROU ELE DIRETAMENTE COM O AUTOR: JLIO
BATTISTI


Autor: J lio Cesar Fabris Battisti
Site: www.juliobattisti.com.br
Confira tambm o li vro: Windows XP Home & Professional para Usurios e Administradores

PIRATARIA CRIME, COM PENA DE CADEIA.
EU AGRADEO PELA SUA HONESTIDADE. SE
VOC COMPROU UMA CPIA DESTE CURSO,
DIRETAMENTE EM
WWW.JULIOBATTISTI.COM.BR OU
DIRETAMENTE COM O AUTOR, NO DISTRIBUA
CPIAS PARA OUTRAS PESSOAS.

SE VOC BAIXOU UMA CPIA DESTE ARQUIVO
USANDO UM SOFTWARE TAL COMO O E-MULE
OU O KAZAA, SAIBA QUE VOC EST COM UMA
CPIA PIRATA, ILEGAL. USAR UMA CPIA
ILEGAL CRIME DE VIOLAO DE DIREITOS
AUTORAIS.

ESTE ARQUIVO NO PODE SER DISTRIBUIDO
GRAVADO EM UM CD OU DVD DE REVISTA OU
LIVRO. A NICA MANEIRA DE OBTER ESTE
ARQUIVO COMPRANDO DIRETAMENTE COM
O AUTOR OU ATRAVS DO SITE
WWW.JULIOBATTISTI.COM.BR

SE VOC RECEBEU UMA CPIA ILEGAL DESTE
ARQUIVO, NO ADQUIRIDA DIRETAMENTE
PELOS MEIOS DESCRITOS NO INCIO DA
PGINA, ENTRE EM CONTATO E REGULARIZE A
SUA CPIA.






SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
IV 00CURSO COMPLETO
AGRADECIMENTOS
Mais um desafio vencido. Nos agradecimentos do trabalho anterior Criando Sites Dinmicos com
ASP 3.0, prometi que o meu prximo livro teria somente umas 200 pginas. No foi possvel cumprir
a promessa. Conforme vocs podem constatar este livro superou, em muito, as 200 pginas prometidas.
Mas, apesar das dificuldades e do isolamento necessrio para escrever um livro, valeu mais este esforo.
Quando abro o meu e-mail e encontro mensagens dos leitores com dvidas e sugestes, vejo que todo
o esforo valeu a pena. este retorno que nos motiva a trabalhar cada vez melhor. Por isso, em primeiro
lugar, gostaria de agradecer a todos que tiveram contato com algum dos livros anteriores e enviaram
suas dvidas, sugestes e crticas.
Pela pacincia e tolerncia, pelo amor, carinho e dedicao, agradeo, de corao, a minha Esposa Lu,
por estar comigo e me acompanhar em mais este desafio e me dar a certeza que estar sempre comigo,
para os prximos desafios que viro (e no sero poucos).
dona Lucy, minha me, amiga e incentivadora, pessoa que sempre me admirou e a quem muito
admiro. Por ter feito me sentir um filho sempre muito amado, por me incentivar a sempre estudar e,
principalmente, por estar sempre ao meu lado nas horas difceis. Me, mais uma vez, obrigado por
tudo. Ao seu Arcncio, em memria, meu pai que me ensinou a ser paciente e tolerante e, principalmente,
me ensinou o valor da honestidade.
Tambm no posso deixar de agradecer equipe da Axcel Books, pela sua pacincia em corrigir e
revisar mais este trabalho, sempre com sugestes para a melhoria do mesmo, de tal forma que o amigo
leitor pudesse receber uma obra de qualidade.
A Deus, por nos dar a inteligncia e a determinao na busca de cada vez fazer as coisas de maneira
melhor e mais perfeita.
SOBRE O AUTOR
Jlio Battisti profissional certificado da Microsoft, tendo sido aprovado em 19 Exames da Microsoft, com
os quais obteve certificaes como: MCP, MCP+I, MCSE, MCSE+I, MCDBA e MCSD. Trabalha como Gerente
de Rede na Secretaria da Receita Federal, e conhece o SQL Server desde suas primeiras verses. Tambm
autor de artigos de informtica e trabalha com o desenvolvimento e administrao de Web Sites. Autor dos
livros: Srie Curso Bsico & Rpido Microsoft Windows 2000 Server e Criando Sites Dinmicos com ASP
3.0, publicados pela Editora Axcel Books. Atua como instrutor de cursos de informtica tanto na Secretaria
da Receita Federal como para turmas em Universidades e outros cursos particulares.
SUMRIO
V CURSO COMPLETO00
Sumrio
INTRODUO ........................................................................................................................................... XIII
PARTE 1 FUNDAMENTOS .............................................................................................................................. 1
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL ........................................... 3
Introduo .......................................................................................................................................................... 4
Fundamentos em: Conceitos Bsicos de Bancos de Dados Relacionais............................................. 5
Entidades e Atributos ..................................................................................................................................... 6
O Conceito de Chave Primria ...................................................................................................................... 8
Relacionamentos Entre Tabelas ........................................................................................................................ 10
Relacionamento do Tipo Um para Um........................................................................................................ 10
Relacionamento do Tipo Um para Vrios .................................................................................................... 11
Relacionamento do Tipo Vrios para Vrios ................................................................................................ 12
Integridade Referencial ................................................................................................................................ 13
Normalizao de Tabelas ................................................................................................................................... 14
Primeira Forma Normal ................................................................................................................................ 14
Segunda Forma Normal ................................................................................................................................ 15
Terceira Forma Normal ................................................................................................................................. 16
Passos Para Projetar um Banco de Dados.......................................................................................................... 17
Fundamentos em: Noes Bsicas da Linguagem SQL Structured Query Language .................. 19
Introduo ........................................................................................................................................................ 19
A Instruo SELECT .......................................................................................................................................... 20
A Instruo UPDATE ......................................................................................................................................... 26
A Instruo INSERT ........................................................................................................................................... 27
A Instruo DELETE .......................................................................................................................................... 28
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000 ....................................................................... 31
Introduo ........................................................................................................................................................ 32
Fundamentos em: Modelo de Aplicaes Para a Era do Comrcio Eletrnico............................... 33
Fundamentos em: Arquitetura de Aplicaes ................................................................................... 38
A Complexidade de Gerenciamento do Modelo Cliente/Servidor e Aplicaes de Duas Camadas ................ 38
Aplicaes em Duas Camadas ........................................................................................................................... 39
Aplicaes em Trs Camadas ............................................................................................................................ 40
Aplicaes em Quatro Camadas ....................................................................................................................... 42
Questes a Considerarmos nos Modelos de Trs ou Mais Camadas ................................................................ 43
Fundamentos em: As Principais Novidades e Melhoramentos do Microsoft SQL Server 2000 ....... 44
Novidades e Melhorias do Modelo Relacional ................................................................................................. 44
Novidades e Melhorias nas Ferramentas Grficas de Administrao ............................................................... 46
Novidades e Melhorias na Replicao de Dados .............................................................................................. 47
Novidades e Melhorias no Servio DTS Data Transformation Services ......................................................... 47
Novidades e Melhorias na Documentao do SQL Server ............................................................................... 48
Fundamentos em: Instalao do Microsoft SQL Server 2000........................................................... 50
As Diferentes Edies do Microsft SQL Server 2000 ..................................................................................... 51
Requisitos de Hardware e Software Para a Instalao do SQL Server 2000 ...................................................... 52
Instalando o SQL Server 2000 no Windows 2000 Server ................................................................................. 53
Instalando o SQL Server 2000 no Windows 2000 Professional ........................................................................ 64
Instalando o SQL Server 2000 no Windows 98 ................................................................................................ 68
Criando uma Segunda Instncia do SQL Server Enterprise Edition no Windows 2000 Server ....................... 73
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
VI 00CURSO COMPLETO
Fundamentos em: Servios Disponveis com o SQL Server 2000 ..................................................... 75
O Servio SQL Server ..................................................................................................................................... 76
O Servio SQL Server Agent........................................................................................................................... 77
O Servio Microsoft Distributed Transaction Cordinator MSDTC ................................................................ 78
O Servio Microsoft Search ............................................................................................................................... 78
Fundamentos em: Gerenciamento dos Servios do SQL Server 2000 .............................................. 79
Um Pequeno Parnteses Para Aprender Sobre MMC e Snap-ins ...................................................................... 79
Utilizando o Snap-in Service Manager O Console Servios........................................................................... 85
Utilizando o Service Manager que vem com o SQL Server 2000 ..................................................................... 90
Parando e Inicializando Servios com o Comando net .................................................................................... 91
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000 ...................................... 95
Introduo ........................................................................................................................................................ 96
Fundamentos em: Utilizao do Enterprise Manager ...................................................................... 97
Fundamentos em: Armazenamento Bsico x Armazenamento Dinmico................................... 114
Armazenamento Bsico e Armazenamento Dinmico................................................................................... 114
Fundamentos em: A Estrutura de Armazenamento dos Bancos de Dados no SQL Server 2000......... 119
Entendendo o Conceito de Filegroups ........................................................................................................... 120
Fundamentos em: Criar Bancos de Dados no SQL Server 2000 com o Enterprise Manager.......... 122
Verificao dos Arquivos Criados Para o Exemplo1 e para o Exemplo2 ........................................................ 134
Fundamentos em: Entender e Utilizar o Query Analyzer .............................................................. 134
Fundamentos em: Criao de Bancos de Dados com o Query Analyzer ....................................... 139
Fundamentos em: Alterao de Bancos de Dados com o Query Analyzer.................................... 146
Fundamentos em: Excluso de Bancos de Dados
com o Query Analyzer e com o Enterprise Manager ...................................................................... 149
Concluso ....................................................................................................................................................... 150
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000 .................................................. 153
Introduo ...................................................................................................................................................... 154
Fundamentos em: Projeto de Banco de Dados e Tipos de Dados do SQL Server 2000 ................. 155
Algumas Dicas Para Definir os Tipos de Dados Para Cada Coluna ................................................................ 157
Fundamentos em: Criao de Tabelas com o Enterprise Manager................................................ 158
Fundamentos em: Criao de Tabelas com o Query Analyzer ....................................................... 172
Fundamentos em: Alterar a Estrutura de uma Tabela com o Enterprise Manager .................... 177
Fundamentos em: Alterar a Estrutura de uma Tabela com Comandos T-SQL............................. 178
Fundamentos em: Tipos de Dados Definidos Pelo Usurio............................................................ 180
Criando um Tipo de Dados Definido Pelo Usurio com o Enterprise Manager ............................................ 181
Criando um Tipo de Dados Definido Pelo Usurio com o Query Analyzer ................................................... 185
Excluindo Tipos Definidos Pelo Usurio ........................................................................................................ 186
Fundamentos em: Excluso de Tabelas ............................................................................................ 188
Para Excluir uma Tabela com o Enterprise Manager ...................................................................................... 188
Excluindo uma Tabela com o Query Analyzer ............................................................................................... 188
Fundamentos em: Definio da Chave Primria de uma Tabela .................................................. 189
Definindo uma Chave Primria Utilizando o Enterprise Manager ................................................................ 189
Definindo uma Chave Primria Utilizando o Query Analyzer ...................................................................... 192
Fundamentos em: Conceito e Criao de ndices............................................................................ 193
Uma Viso Geral dos ndices no SQL Server 2000 ......................................................................................... 193
Clustered Index ............................................................................................................................................... 194
Nonclustered Index ........................................................................................................................................ 196
Mais Algumas Questes Tericas Sobre ndices .............................................................................................. 198
Criando ndices no SQL Server 2000 .............................................................................................................. 199
SUMRIO
VII CURSO COMPLETO00
Criando um Clustered Index Simples com o Enterprise Manager ................................................................. 199
Criando um Nonclustered Index Composto com o Create Index Wizard ................................................. 202
Criando ndices com o Query Analyzer ......................................................................................................... 205
Um Fator Importante: FILLFACTOR OPTION ................................................................................................ 208
Fundamentos em: Comandos Adicionais Para Trabalhar com ndices ........................................ 210
Excluindo ndices ........................................................................................................................................... 212
Excluindo um ndice com o Enterprise Manager ........................................................................................... 212
Concluso ....................................................................................................................................................... 213
Excluindo um ndice com o Query Analyzer ................................................................................................. 213
PARTE 2 KNOW-HOW............................................................................................................................. 215
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS ...................................... 217
Introduo ...................................................................................................................................................... 218
Know-how em: Conceito de Log de Transaes no SQL Server 2000............................................. 219
Um Pouco Mais Sobre o Conceito de Transao ............................................................................................ 220
Como Funciona o Log de Transaes ............................................................................................................. 221
Know-how em: Tipos e Estratgias de Backup ............................................................................... 222
Introduo ...................................................................................................................................................... 222
Mtodos de Backup Quanto ao Contedo do Backup ................................................................................... 225
Tipos de Backup .............................................................................................................................................. 226
Alguns Exemplos de Estratgias de Backup/Restore ....................................................................................... 227
Know-how em: O Conceito Backup Devices e Criao de Backup Devices .................................. 231
O que so Backup Devices? ............................................................................................................................. 231
Devices Lgicos e Devices Fsicos ................................................................................................................... 232
Criando um Backup Device Lgico com o Enterprise Manager ..................................................................... 232
Criando um Backup Device Lgico com o Query Analyzer ........................................................................... 235
Excluindo Backup Devices .............................................................................................................................. 237
Know-how em: Fazer o Backup das Informaes ........................................................................... 238
Fazendo o Backup com o Enterprise Manager ................................................................................................ 239
Fazendo o Backup com o Assistente de Backup ............................................................................................. 242
Fazendo o Backup do Log de Transaes e Criando um Agendamento Para o Backup ................................. 247
Fazendo o Backup com o Query Analyzer ...................................................................................................... 251
Um Exemplo Mais Completo ......................................................................................................................... 255
Know-how em: Fazer o Restore das Informaes ........................................................................... 256
Fazendo o Restore com o Enterprise Manager ................................................................................................ 257
Fazendo o Restore com o Query Analyzer ...................................................................................................... 261
Know-how em: Agendamento de Tarefas no SQL Server 2000 ...................................................... 267
Criando um Job com o Enterprise Manager ................................................................................................... 269
CAPTULO 6 SEGURANA NO SQL SERVER 2000 ......................................................................................... 279
Introduo ...................................................................................................................................................... 280
Know-how em: Segurana no SQL Server 2000............................................................................... 281
Primeiro Precisamos Conectar com o Servidor SQL Server 2000 ................................................................... 281
Um Resumo da Teoria Sobre Segurana no SQL Server 2000 ......................................................................... 288
Know-how em: Segurana no Windows 2000 Server ..................................................................... 288
Domnios, Workgroups e Active Directory..................................................................................................... 289
Domnios e Grupos de Trabalho (Workgroups) ......................................................................................... 289
Active Directory ......................................................................................................................................... 290
Contas de Usurios ......................................................................................................................................... 292
Grupos de Usurios e Tipos de Grupos Existentes no Windows 2000 Server ................................................ 296
Know-how em: Criao e Gerenciamento de Login e Roles no SQL Server 2000......................... 304
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
VIII 00CURSO COMPLETO
Criando Logins com o Enterprise Manager .................................................................................................... 306
Criando Logins com Comandos T-SQL .......................................................................................................... 310
Criando Logins com o Assistente Create Login Wizard ................................................................................. 316
Criando Roles no SQL Server 2000 ................................................................................................................. 320
Para Criar Novas Roles com o Enterprise Manager ........................................................................................ 322
Para Criar Novas Roles com o Query Analyzer ............................................................................................... 323
Know-how em: Configurao de Acesso aos Objetos de um Banco
de Dados do SQL Server 2000 ............................................................................................................ 326
Dando Permisso de Acesso ao Banco de Dados com o Enterprise Manager................................................. 327
Dando Permisso de Acesso ao Banco de Dados com o Query Analyzer ....................................................... 330
Adicionando Usurios Como Membros de uma ou Mais Roles ..................................................................... 332
Know-how em: Configurao, Planejamento e Teste de Permisses de
Acesso aos Objetos de um Banco de Dados do SQL Server 2000 .................................................... 336
Definindo Permisses em Nvel de SERVIDOR\instncia .............................................................................. 337
Dando Permisses Para Banco de Dados ........................................................................................................ 339
Dando Permisses a Objetos do Banco de Dados ........................................................................................... 347
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000 ......................................... 357
Introduo ...................................................................................................................................................... 358
Know-how em: Criao de um Plano de Manuteno Para um
Banco de Dados do SQL Server 2000 ................................................................................................ 359
Know-how em: Comandos DBCC Database Consistency Checker .............................................. 370
Principais Comandos DBCC de Manuteno................................................................................................. 371
Principais Comandos DBCC de Status ........................................................................................................... 376
Principais Comandos DBCC de Validao ..................................................................................................... 379
Mais um Comando DBCC .............................................................................................................................. 382
Know-how em: Importao e Exportao de Dados com o
DTS Data Transformation Services ............................................................................................... 383
Importando Dados de Outras Fontes de Dados .............................................................................................. 383
Exportando Dados do SQL Server 2000 Para Outras Fontes de Dados .......................................................... 391
Importando e Transformando Dados com o DTS .......................................................................................... 396
Know-how em: Monitorao de Desempenho no SQL Server 2000............................................... 407
Apresentando o Console Desempenho .......................................................................................................... 409
Os Principais Contadores Para os Objetos Processador e Memria................................................................ 411
Utilizando o Console Desempenho Para Monitorar o SQL Server 2000........................................................ 412
Utilizando o Profiler ....................................................................................................................................... 415
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO ........................................................... 425
Introduo ...................................................................................................................................................... 426
Know-how em: Fundamentos Bsicos sobre Replicao ................................................................ 427
Fatores Ligados Replicao ........................................................................................................................... 430
Benefcios da Replicao e Onde Utiliz-la..................................................................................................... 431
Know-how em: O Modelo de Replicao do SQL Server 2000 ........................................................ 432
Publisher ..................................................................................................................................................... 433
Distributor .................................................................................................................................................. 433
Subscriber ................................................................................................................................................... 434
Artigo .......................................................................................................................................................... 435
Publicaes ................................................................................................................................................. 437
Know-how em: Subscries e Tipos de Subscries ........................................................................ 438
Push Subscription ........................................................................................................................................... 438
Pull Subscriptions ........................................................................................................................................... 439
Know-how em: Tipos de Replicao ................................................................................................ 439
SUMRIO
IX CURSO COMPLETO00
Snapshot Replication ...................................................................................................................................... 440
Transactional Replication ............................................................................................................................... 440
Merge Replication ........................................................................................................................................... 441
Know-how em: Os Agentes de Replicao no SQL Server 2000 ..................................................... 441
Know-how em: Configurando a Replicao no SQL Server 2000 .................................................. 443
Know-how em: Criao de Publicaes ........................................................................................... 448
Know-how em: Habilitao de Subscribers..................................................................................... 462
Os Agentes Criados Para a Replicao em SERVIDOR\SRVINST01................................................................ 471
Know-how em: Configurar Subscries do Tipo Pull Subscriptions ............................................ 480
Analisando a Pull Subscription Criada no Item Anterior ............................................................................... 486
Excluindo Elementos da Replicao ............................................................................................................... 487
Know-how em: Replicao Para Outros Tipos de Subscribers No SQL Server 2000................ 489
Replicando Dados Para um Subscriber do Microsoft Access 97 ..................................................................... 490
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS ................................................ 503
Introduo ...................................................................................................................................................... 504
Know-how em: Implementao de Integridade dos Dados no SQL Server 2000 ......................... 504
Os Tipos de Integridade de Dados Existentes no SQL Server 2000 ................................................................ 509
Know-how em: Criao e Teste de Constraints no SQL Server 2000 ............................................. 511
Criando Constraints com o Query Analyzer .................................................................................................. 512
NOT NULL Constraint .................................................................................................................................... 513
DEFAULT Constraints ..................................................................................................................................... 513
CHECK Constraints ........................................................................................................................................ 515
PRIMARY KEY Constraints .............................................................................................................................. 517
FOREIGN KEY Constraints ............................................................................................................................. 519
UNIQUE Constraints ...................................................................................................................................... 519
Verificao dos Dados Quando uma Constraint Adicionada ...................................................................... 523
Desabilitando e Habilitando Novamente Constraints ................................................................................... 524
Excluindo Constraints .................................................................................................................................... 524
Know-how em: Conceitos e Criao de Views no SQL Server 2000 ............................................... 527
Introduo ...................................................................................................................................................... 528
Tipos de Views Quanto ao Conjunto de Dados Retornados .......................................................................... 529
Por que Utilizar Views? ................................................................................................................................... 529
Limitaes na Criao de Views ..................................................................................................................... 530
Criando Views com o Enterprise Manager ..................................................................................................... 530
Mais Alguns Exemplos de Views ..................................................................................................................... 548
Criando Views com o Query Analyzer ........................................................................................................... 560
PARTE 3 DESENVOLVIMENTO .................................................................................................................... 565
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS ............................ 567
Introduo ...................................................................................................................................................... 568
Desenvolvimento em: Teoria e Desenvolvimento de
Stored Procedures no SQL Server 2000 ............................................................................................ 569
Criando Stored Procedures ............................................................................................................................. 572
Criando Stored Procedures com o Query Analyzer ........................................................................................ 572
Criando Stored Procedures com Parmetros de Entrada ................................................................................ 574
Utilizando Estruturas de Deciso em um Stored Procedure ........................................................................... 578
A Estrutura IF...ELSE ........................................................................................................................................ 578
A Estrutura WHILE...CONTINUE.................................................................................................................... 582
Definindo Parmetros de Sada (ou de Retorno) Para um Stored Procedure ................................................. 585
Excluindo um Stored Procedure ..................................................................................................................... 586
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
X 00CURSO COMPLETO
Criando Stored Procedures com o Enterprise Manager .................................................................................. 586
Criando Stored Procedures com a Opo New Stored Procedures ................................................................. 586
Criando Stored Procedures com o Assistente Create Procedure Wizard ........................................................ 589
Verificando Informaes Sobre os Stored Procedures de um Banco de Dados .............................................. 593
O Comando sp_help ....................................................................................................................................... 593
O Comando sp_helptext ................................................................................................................................. 593
O Comando sp_stored_procedures ................................................................................................................. 594
Desenvolvimento em: Teoria e Desenvolvimento de Triggers no SQL Server 2000 ..................... 594
Criando Triggers com o Query Analyzer ........................................................................................................ 597
Criando Triggers com o Enterprise Manager .................................................................................................. 607
Mais Alguns Comandos Relacionados com Triggers ...................................................................................... 609
O Comando sp_helptext ................................................................................................................................. 609
O Comando sp_helptrigger ............................................................................................................................ 610
Habilitando e Desabilitando Triggers ............................................................................................................. 610
Desenvolvimento em: Comandos Avanados da Linguagem T-SQL .............................................. 611
Pesquisando Dados em Mltiplas Tabelas ...................................................................................................... 611
Tipos de Join ................................................................................................................................................... 613
Join com Mais do que Duas Tabelas ............................................................................................................... 615
Utilizando Subconsultas ................................................................................................................................. 616
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000 ................................. 621
Introduo ...................................................................................................................................................... 622
Desenvolvimento em: Uma Introduo ao Desenvolvimento de Aplicaes em n Camadas .......... 623
Modelo em Duas Camadas Cliente/Servidor Tradicional ............................................................................ 623
Aplicaes em Duas Camadas ......................................................................................................................... 624
Aplicaes em Trs Camadas .......................................................................................................................... 625
Aplicaes em Quatro Camadas ..................................................................................................................... 626
Questes a Considerarmos nos Modelos de Trs ou Mais Camadas .............................................................. 628
Desenvolvimento em: Preparao do Servidor Para Acompanhar os Exemplos Deste Captulo ...... 628
Criando a Pasta Onde Iremos Gravar os Exemplos Deste Captulo ............................................................... 629
Tornando a Pasta LivroSQL2000, Parte do Servidor IIS .................................................................................. 630
Desenvolvimento em: Um Pouco Sobre ODBC, OLE DB e ADO...................................................... 634
Um Pouco Sobre ODBC Open Database Connectivity ................................................................................ 635
Criando uma Fonte ODBC Para um Banco de Dados do Microsoft Access 2000 .......................................... 636
Criando uma Fonte ODBC Para um Banco de Dados Pubs, da Instncia SERVIDOR\SRVINST01 ........... 640
Um Pouco Sobre OLE DB e ADO .................................................................................................................... 645
Desenvolvimento em: O Modelo de Objetos do ADO Activex Data Objects ............................... 648
Desenvolvimento em: Aplicaes com ASP Active Server Pages ................................................ 650
O Objeto Connection ..................................................................................................................................... 653
Criando Conexes ODBC .......................................................................................................................... 653
O Objeto Connection Mtodos, Propriedades e Eventos........................................................................ 654
Criando Conexes Utilizando OLE DB ...................................................................................................... 655
A Propriedade ConnectionString ............................................................................................................... 656
Configurando Conexes com Bancos de Dados do Microsoft SQL Server 2000 ........................................... 658
O Primeiro Exemplo Conectando com o Banco de Dados Northwind,
da Instncia SERVIDOR\SRVINST01 .............................................................................................................. 658
Configurando Conexes OLE DB, com Bancos de Dados ORACLE .......................................................... 662
Comentrios Finais Sobre o Objeto Connection ....................................................................................... 663
O Mtodo Close ......................................................................................................................................... 664
Pool de Conexes ................................................................................................................................... 664
SUMRIO
XI CURSO COMPLETO00
Um Exemplo Utilizando ODBC...................................................................................................................... 665
O Objeto RecordSet ......................................................................................................................................... 671
Um Pouco Sobre Cursores .......................................................................................................................... 672
Localizao do Cursor ................................................................................................................................ 674
Lock de Registros ........................................................................................................................................ 676
Propriedades do Objeto RecordSet ............................................................................................................. 677
Mtodos do Objeto RecordSet .................................................................................................................... 678
Uma Pgina ASP Para Inserir Informaes no Banco de Dados ..................................................................... 679
Demais Operaes Utilizando ASP ................................................................................................................. 690
Para Localizar um Registro.............................................................................................................................. 690
Utilizando o Nosso Exemplo...................................................................................................................... 695
Editando e Excluindo Registros ...................................................................................................................... 696
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML ..................................... 699
Introduo ...................................................................................................................................................... 700
Desenvolvimento em: Uma Rpida Reviso Sobre a Estrutura de
um Banco de Dados do Microsoft Access ......................................................................................... 701
Tabelas ............................................................................................................................................................. 702
Consultas ........................................................................................................................................................ 703
Formulrios ..................................................................................................................................................... 705
Relatrios ........................................................................................................................................................ 706
Pginas ............................................................................................................................................................ 708
Macros ............................................................................................................................................................. 710
Mdulos .......................................................................................................................................................... 712
Desenvolvimento em: Como Acessar Dados do Servidor
SQL Server 2000 Utilizando o Microsoft Access 2000 ..................................................................... 713
Importando Dados do SQL Server em Tabelas do Microsoft Access .............................................................. 713
Anexando Tabelas no Microsoft Access .......................................................................................................... 722
Criando Consultas no Microsoft Access, Baseadas em Tabelas do SQL Server 2000...................................... 726
Desenvolvimento em: Acessando Dados do Servidor SQL Server 2000
com o Navegador e o Padro XML ..................................................................................................... 734
Configurando o Acesso Atravs do Navegador .............................................................................................. 736
Testando o Acesso aos Dados do SQL Server 2000, Atravs do Navegador .................................................... 741
Uma Pouco Sobre Extensible Markup Language XML ................................................................................ 744
Primeiro um Pouco de Histria ...................................................................................................................... 744
O que Mais tem a Oferecer Este Tal de XML? ................................................................................................. 746
Concluso ....................................................................................................................................................... 747
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL ........................ 749
Introduo ...................................................................................................................................................... 750
Noes Bsicas da Linguagem SQL Comandos Para Consultar Dados ....................................... 751
Introduo ...................................................................................................................................................... 751
A Instruo SELECT ........................................................................................................................................ 752
O Operador LIKE ............................................................................................................................................. 757
Noes Bsicas da Linguagem SQL Comandos Para Alterar, Modificar e Excluir Dados......... 760
Atualizando Dados a Instruo UPDATE ..................................................................................................... 760
Inserindo Novos Registros a Instruo INSERT ........................................................................................... 762
Excluindo Dados a Instruo DELETE ......................................................................................................... 763
Comandos Para Criao e Manipulao dos Objetos do Banco de Dados .................................... 763
Criando um Banco de Dados o Comando CREATE DATABASE .................................................................. 764
Criao de Tabelas em um Banco de Dados o Comando CREATE TABLE................................................... 766
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
XII 00CURSO COMPLETO
Criao de ndices em uma Tabela o Comando CREATE INDEX ................................................................ 767
Criao de Views no Banco de Dados o Comando CREATE VIEW............................................................. 770
Criao de Stored Procedures no Banco de Dados o Comando CREATE PROCEDURE .............................. 772
Criando Stored Procedures com Parmetros de Entrada ................................................................................ 773
Criao de Triggers o Comando CREATE TRIGGER .................................................................................... 775
Comandos Para Gerenciar Logins no SQL Server 2000 .............................................................................. 779
Comandos Para a Criao de Roles ................................................................................................................. 784
ndice Remissivo ................................................................................................................................ 787
INTRODUO
XIII CURSO COMPLETO00
Introduo
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
XIV 00CURSO COMPLETO
O uso da Tecnologia da Informao TI como suporte s atividades dirias de empresas e indivduos
uma realidade inquestionvel. Desde atividades como um simples Cadastro de Clientes, at operaes
mais complexas como o controle de atividades industriais, esto sendo controladas e mesmo
executadas com o suporte de sistemas de TI cada vez mais avanados. O que mais nos impressiona,
ou assusta, o ritmo com que as mudanas vm acontecendo nos ltimos anos. Talvez o que realmente
nos apavora que no sabemos qual ser o ritmo das mudanas para os prximos anos; a nica
certeza que temos, que o ritmo das mudanas ser ainda maior.
Dentro deste cenrio, em que a TI desempenha um papel fundamental, que aumenta, a cada dia, a
utilizao de Sistemas Gerenciadores de Banco de Dados Relacionais SGBDR. No existe aplicao que
no dependa de dados, os quais so armazenados e manipulados com o auxlio de um SGBDR. Ao
consultar, por exemplo, o site da Receita Federal (www.receita.fazenda.gov.br) e verificar se a sua Restituio
do Imposto de Renda est no prximo lote, o amigo leitor estar utilizando um sistema que consulta um
Banco de Dados. Ao consultar um CEP no site do Correio, tambm estaremos utilizando informaes
armazenadas em um Banco de Dados. Poderamos preencher pginas e pginas com exemplos. O mais
difcil seria encontrar alguns exemplos de sistemas que no dependam de um Banco de Dados.
neste contexto evoluo cada vez mais rpida e Banco de Dados como suporte aos sistemas de TI
que iremos aprender a trabalhar com a mais nova verso do Banco de Dados empresarial da Microsoft
Microsoft SQL Server 2000.
Neste livro, iremos aprender desde os conceitos bsicos de Banco de Dados Relacionais, at a utilizao
de recursos avanados de Administrao e Desenvolvimento do Microsoft SQL Server 2000.
A QUEM SE DESTINA ESTE LIVRO?
Se voc est iniciando na rea de Banco de Dados e est precisando aprender os conceitos bsicos, bem
como uma ferramenta para aplic-los, este livro foi feito sob encomenda para voc, amigo leitor.
Mesmo que voc no conhea Bancos de Dados Relacionais e jamais tenha utilizado o Microsoft SQL
Server, em qualquer uma de suas verses, mesmo assim ter condies de acompanhar este livro do
incio ao fim. Em cada captulo, apresento os conceitos necessrios ao entendimento dos tpicos em
questo, juntamente com exemplos de aplicao dos mesmos. Desta forma, voc poder acompanhar
o livro, aprendendo a utilizar o Microsoft SQL Server de maneira bastante simples e prtica.
MAS E OS USURIOS QUE J POSSUEM ALGUMA EXPERINCIA?
Se voc j possui alguma experincia com Bancos de Dados e com o Microsoft SQL Server, este livro pode
ajud-lo no entendimento de conceitos importantes que voc ainda no domina, como por exemplo:
Replicao de dados.
Automao de tarefas.
Otimizao de ndices.
Desenvolvimento de aplicativos.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
INTRODUO
XV CURSO COMPLETO00
Acesso a dados do SQL Server utilizando Visual Basic, ASP e o Microsoft Access.
Introduo a linguagem XML.
Utilizao de ADO e OLE DB para acesso aos dados.
Em cada um dos captulos, estaremos apresentando uma srie de exemplos prticos. Atravs destes
exemplos, voc poder entender melhor a aplicao dos conceitos tericos apresentados. Em muitas
situaes, a melhor maneira de entender um determinado assunto, atravs da utilizao do mesmo
para resoluo de um problema prtico do dia-a-dia. Muitos dos exemplos apresentados podem ser
facilmente adaptados para uso em aplicaes que voc esteja desenvolvendo.
Ao final de cada captulo, estaremos apresentando algumas questes e exerccios, os quais servem
como uma reviso dos conceitos apresentados no captulo.
VISO GERAL DOS CAPTULOS DO LIVRO
Captulo 1: A teoria de Banco de Dados Relacionais. Neste captulo veremos a teoria de Banco
de Dados Relacionais. Aprenderemos a identificar o que so Tabelas (entidades) e seus Campos
(atributos). Veremos conceitos como Chave Primria, Chave Estrangeira, Relacionamentos,
Integridade Referencial, Diagrama Entidade x Relacionamentos, Normalizao e Design de
Banco de Dados. Este um captulo que apresenta a parte terica necessria ao acompanhamento
do restante do livro. Em seguida teremos uma noo de linguagem SQL Structured Query
Language, a qual utilizada para efetuar pesquisas em Bancos de Dados, alm de operaes
como insero, alterao e excluso de dados. No avance para os captulos seguintes sem
compreender bem, os conceitos apresentados neste captulo.
Captulo 2: Uma viso geral do Microsoft SQL Server 2000. Veremos quais as novidades
apresentadas pela verso 2000 do Microsoft SQL Server e uma viso geral do mesmo. Tambm
aprenderemos sobre os diferentes ambientes onde o Microsoft SQL Server 2000 pode ser
utilizado, bem como as diferentes edies do mesmo para as diferentes edies do Windows
2000. Veremos o conceito de aplicaes Cliente/Servidor e de aplicaes de trs ou n camadas.
Aprenderemos a fazer a instalao do SQL Server, assim como a criar mltiplas instncias do
mesmo em um nico servidor. Veremos quais os servios instalados com o SQL Server, e como
fazer o gerenciamento dos diferentes servios.
Captulo 3: Vamos apresentar a maneira como so armazenados e criados Bancos de dados.
Veremos conceitos como RAID-0, RAID 1 e RAID-5. Tambm aprenderemos a melhor maneira
de utilizar o sistema de discos de forma a obter performance dos nossos Bancos de Dados.
Aprenderemos a utilizar o SQL Server Enterprise Manager e o Query Analyzer para criar Bancos
de Dados. Estaremos utilizando diversos exemplos, para ilustrar os conceitos apresentados.
Captulo 4: Neste captulo aprenderemos a criar tabelas em um Banco de Dados e definir as
diversas caractersticas de cada campo de cada tabela. Tambm aprenderemos sobre ndices e
como cri-los. Veremos como a correta utilizao dos ndices pode ajudar na melhoria da
performance. Aprenderemos a utilizar diversos comandos T-SQL para criao e monitoramento
dos ndices.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
XVI 00CURSO COMPLETO
Captulo 5: Informaes fundamentais esto armazenadas em Bancos de Dados. A perda destas
informaes pode representar um desastre irrecupervel. Para evitar que tal desastre acontea,
aprenderemos a fazer o backup das informaes contidas em um Banco de Dados do Microsoft
SQL Server 2000. Veremos os diferentes tipos de backup possveis, bem como as vantagens e
desvantagens de cada tipo. Tambm aprenderemos a fazer a restaurao dos dados, a partir do
backup, quando necessrio. Na seqncia, falaremos sobre o agendamento e automatizao de
tarefas com o SQL Server 2000.
Captulo 6: Nos sistemas atuais, principalmente com o crescimento da Internet, segurana
um ponto fundamental. Neste captulo aprenderemos a configurar a segurana de acesso para
um Banco de Dados do SQL Server. Veremos como o SQL Server 2000 se Integra com o Active
Directory do Windows 2000 e as diversas opes de configurao possveis. Veremos como
configurar a segurana em nvel de SERVIDOR\instncia, Banco de Dados e objetos do banco
de Dados. Apresentaremos diversos exemplos passo a passo, para facilitar a aprendizagem dos
conceitos apresentados.
Captulo 7: Aprenderemos a configurar, monitorar e gerenciar o servidor SQL. Veremos como
utilizar ferramentas como o Microsoft SQL Profiler. Veremos como analisar o desempenho do
servidor SQL, atravs da utilizao do Performance Monitor do Windows 2000. Tambm
estaremos utilizando o DTS (Data Transformation Services), para acessar dados de fontes
diferentes e consolid-los em um Banco de Dados do SQL Server.
Captulo 8: Replicao de dados. A replicao de dados um dos recursos mais importantes e
teis do SQL Server. Veremos o que a replicao e os diferentes tipos disponveis.
Captulo 9: Veremos tpicos relacionados com o desenvolvimento de aplicaes com o Microsoft
SQL Server 2000. Vamos criar Constraints e Rules. Veremos como estes mecanismos podem
ajudar a manter a integridade dos dados.
Captulo 10: Neste captulo continuaremos tratando de desenvolvimento no SQL Server 2000.
Aprenderemos a criar Stored Procedures e Triggers. Veremos como a utilizao de Triggers permite
que sejam implementadas Regras de Negcio, no prprio Banco de Dados. Na parte final do
captulo, veremos algumas opes avanadas da linguagem T-SQL.
Captulo 11: Acessando dados de um Servidor SQL com o Microsoft Access e com a tecnologia
ASP Active Server Pages. Tambm aprenderemos sobre a estratgia UDA (Universal Data Ac-
cess) da Microsoft, dentro da qual se encaixam conceitos como ADO (Activex Data Objects) e
OLE DB (sem traduo).
Captulo 12: No captulo final, estaremos abordando a linguagem XML Xtensible Markup
Language. O mundo Web vive um novo momento, no qual a possibilidade de integrao e troca
de dados entre os mais diferentes sistemas uma realidade. O que torna isto possvel a utilizao
do XML como uma forma padronizada para troca de informaes entre sistemas que vo, desde
aplicativos de Mainframe a sistemas modernos desenvolvidos para o ambiente Windows.
Anexo: Um resumo de comandos da linguagem SQL e exemplos prticos atravs da utilizao
do SQL. Fontes adicionais de informao sobre o Microsoft SQL Server 2000, na Internet.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
INTRODUO
XVII CURSO COMPLETO00
EQUIPAMENTO E SOFTWARE NECESSRIOS
Para acompanhar todos os exemplos propostos no livro, precisamos de um computador com Win-
dows 2000 Server instalado. Tambm faz-se necessrio que o IIS 5.0 esteja instalado e corretamente
configurado. Caso voc no tenha o IIS 5.0 instalado, no se preocupe. Mais adiante, ainda nesta
introduo, estaremos apresentando um passo a passo, o qual ensina a instalar o IIS 5.0, caso o mesmo
no tenha sido instalado junto com o Windows 2000.
A configurao mnima necessria depende de uma srie de fatores.
Se o equipamento vai ser utilizado como um servidor Web na Internet, vrios so os aspectos a serem
considerados, tais como:
Aplicaes implementadas e recursos de hardware necessrios, tais como memria, disco e processador.
Nmero estimado de acessos simultneos e dirios, sendo esta uma das estimativas mais difceis
de se obter, uma vez que o sucesso de um site pode ser determinado por um nmero muito
grande de fatores, nem todos de fcil mensurao.
Grau de segurana necessrio e desejvel. Neste caso, entram questes como criptografia, uso
de certificados digitais, criao de VPN Virtual Private Networks (Redes Privadas Virtuais),
procedimentos de recuperao a falha, plano de contingncia, etc.
Percentual de folga desejado para recursos tais como: memria, processador, disco. Ao projetar
um site, bastante comum utilizar hardware que atenda as necessidades atuais com uma certa
folga, para que seja possvel atender a crescimentos maiores do que os estimados. Alguns sites
famosos j enfrentaram problemas de crescimentos maiores do que os esperados. Quando isso
acontece, mais recursos de hardware precisam ser adicionados com o site em funcionamento.
a bem conhecida situao de trocar o pneu com o carro andando. Eu diria que hoje, na
velocidade em que as mudanas acontecem, seria um pouco pior, algo como: trocar a turbina
com o avio em pleno vo.
Como equipamento para ser utilizado em casa, ou em um laboratrio de teste na sua empresa, com o
objetivo de acompanhar os exemplos apresentados neste livro, aconselho a seguinte configurao:
Processador Pentium II 350 ou superior.
128 MB de RAM, quanto mais melhor.
2 GB de Disco rgido.
Drive de CD-ROM.
Alm do Windows 2000 Server e do IIS 5.0, tambm precisaremos ter os seguintes programas e servios
instalados, para que possamos acompanhar os exemplos deste livro:
Internet Explorer 4.x ou superior.
Microsoft Visual Basic 6.0
Microsoft Access 97 ou Microsoft Access 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
XVIII 00CURSO COMPLETO
Conforme veremos, tambm possvel instalar o SQL Server 2000 no Windows 2000 Professional e Windows 9.x. A grande maioria
dos exemplos propostos neste livro, podem ser acompanhados em uma instalao do SQL Server em quaisquer um dos Sistemas
Operacionais mencionados.
INSTALANDO E TESTANDO O IIS 5.0
Caso voc no tenha instalado o IIS 5.0, quando da instalao do Windows 2000 Server, possvel
fazer a instalao quando for necessrio. Agora aprenderemos, passo a passo, a instalar o IIS 5.0.
Para instalar o IIS 5.0, faa o seguinte:
1. Faa o logon no Windows 2000 Server com uma conta com permisses de Administrador.
2. Abra o Painel de controle (Iniciar -> Configuraes -> Painel de controle).
3. Abra a opo Adicionar ou remover programas. Surgir a janela indicada na Figura i.1.
Figura i.1 Janela Adicionar ou remover programas.
4. No lado esquerdo da janela, d um clique na opo Adicionar ou remover componentes do
Windows. Surgir a janela indicada na Figura i.2.
5. D um clique no boto Componentes.
Ser exibida, por breves instantes, uma mensagem Aguarde.... Depois, surge a janela Assistente de
componentes do Windows.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
INTRODUO
XIX CURSO COMPLETO00
Figura i.2 A janela para alterar a instalao do Windows.
Utilizando o Assistente de componentes do Windows, podemos adicionar novos servios do Windows
2000, ou remover servios que no sejam mais necessrios.
V descendo com a barra de rolagem vertical, at localizar o item Internet Information Services (IIS),
conforme indicado pela Figura i.3.
Figura i.3 O servio Internet Information Services (IIS).
7. Se esta opo estiver marcada, o IIS 5.0 j est instalado. Neste caso, clique no boto Cancelar.
Depois, s fechar a janela Adicionar ou remover programas e o Painel de controle.
8. Se esta opo estiver desmarcada, significa que o IIS 5.0 ainda no foi instalado. Marque esta
opo para instalar o IIS 5.0.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
XX 00CURSO COMPLETO
Observe que ao marcar a opo, o boto Detalhes habilitado. O IIS 5.0 formado por uma srie de
componentes e funcionalidades. Existe um servidor de pginas (servidor HTTP), um servidor de FTP,
um servidor de notcias (NNTP), etc.
Ao instalarmos o IIS 5.0, podemos escolher um ou mais dos seus componentes, dependendo das
necessidades do nosso site. No necessrio que todos os componentes do IIS 5.0 sejam instalados.
Por exemplo, se o servio de cpia de arquivos no for necessrio, no temos porque instalar o
servio de FTP.
Instale somente os servios realmente necessrios. No uma boa idia instalar todos os servios disponveis, mesmo que somente
alguns sejam utilizados. Quanto mais servios instalados, maiores as possibilidades de um ataque e quebra da segurana do site, por
parte de um hacker.
9. Clique no boto Detalhes.
10. Na lista de opes disponveis, certifique-se de que somente as seguintes esto marcadas:
Arquivos comuns.
Documentao.
Extenses de servidor do FrontPage 2000.
Gerenciador de Internet Services (HTML).
Servidor File Transfer Protocol (FTP).
Servidor World Wide Web.
Snap-In do Internet Information Services.
Observe que, aps ter selecionado os componentes a serem instalados, o Windows 2000 Server exibe o
espao em disco necessrio, conforme indicado pela Figura i.4.
Figura i.4 Indicao do espao necessrio no disco rgido.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
INTRODUO
XXI CURSO COMPLETO00
11. D um clique em OK. Voc estar de volta ao Assistente de componentes do Windows.
12. D um clique no boto Avanar, seguindo para a prxima etapa do assistente.
13. O Windows 2000 Server exibe uma janela indicando o progresso da Instalao.
Caso o Windows 2000 Server no encontre os arquivos necessrios instalao no Disco rgido, voc
ser solicitado a inserir o CD de instalao do Windows, conforme indicado pela Figura i.5.
Figura i.5 Mensagem solicitando o CD de instalao do Windows.
14. Insira o CD e d um clique em OK. O Windows 2000 Server inicia o processo de cpia dos
arquivos.
15. Aps concluda a cpia dos arquivos, o Assistente emite uma mensagem avisando que o processo
foi concludo com sucesso. D um clique no boto Concluir, para encerrar o Assistente.
16. Voc estar de volta janela Adicionar ou remover programas. D um clique no boto Fechar
para sair desta janela.
17. Voc estar de volta ao Painel de controle. Feche-o.
Agora, o IIS 5.0 est instalado e pronto para funcionar. Vamos testar se o mesmo est funcionando
corretamente.
Para testar se o IIS 5.0 foi instalado com sucesso:
1. Abra o Internet Explorer e Digite o seguinte endereo: http://localhost.
Deve surgir uma janela conforme indicado na Figura i.6, esta a pgina inicial padro, do IIS 5.0, logo
aps a instalao.
Isto comprova que o IIS 5.0, foi instalado com sucesso.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
XXII 00CURSO COMPLETO
Figura i.6 A pgina padro do IIS 5.0, logo aps a instalao.
2. Feche o Internet Explorer.
VAMOS AO TRABALHO
Feitas as devidas apresentaes, hora de iniciarmos nossa jornada atravs do Microsoft SQL Server 2000.
O cdigo-fonte, com os exemplos de programao, e os Scripts SQL, apresentados no livro, esto
disponveis para donwload no site da Editora Axcel Books www.axcel.com.br.
Caso voc tenha alguma sugesto sobre tpicos que gostaria de ver includo em futuras edies deste
livro, queira enviar crticas e sugestes ou relatar algum erro encontrado, basta entrar em contato
atravs do e-mail: juliobattisti@hotmail.com. Ser um prazer trocar idias com o amigo leitor.
Desejo a todos uma boa leitura, e que este trabalho possa ajud-los na busca de um aperfeioamento
contnuo, rumo ao sucesso na carreira profissional.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
1 CURSO COMPLETO00
Parte 1
FUNDAMENTOS
Este material no pode ser utilizado em treinamentos e em Sala de Aula
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
3 CURSO COMPLETO00
Captulo 1
INTRODUO AOS BANCOS DE DADOS
RELACIONAIS E LINGUAGEM SQL
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
4 00CURSO COMPLETO
INTRODUO
Neste captulo aprenderemos sobre os conceitos bsicos de Bancos de Dados Relacionais. Tambm
aprenderemos sobre os comandos bsicos da linguagem SQL Structured Query Language.
Durante muito tempo as aplicaes eram baseadas em computadores de grande porte, conhecidos
como Mainframes. Nesta poca as aplicaes, normalmente desenvolvidas em linguagens como Co-
bol, PL1, Algol ou Natural Adabas, ficavam residentes nestes computadores e os dados tambm. A
lgica para acesso aos dados estava embutida dentro da prpria aplicao. Com isso, se mudasse a
estrutura de armazenamento das informaes, a aplicao teria que ser reescrita. Para acessar as
aplicaes, o usurio utilizava os chamados terminais burros (tambm conhecidos como terminais
verdes, devido a cor das letras normalmente ser verde em um fundo preto). Estes terminais eram,
simplesmente, uma extenso do Mainframe, equipados com teclado e vdeo. Nenhum processamento
era realizado no prprio terminal. Todo e qualquer comando era enviado para processamento no
Mainframe, e os resultados mandados de volta para o terminal.
Observe que utilizei os verbos sempre no passado. Voc deve estar pensando: Este cara est maluco, pois
ainda hoje muitas aplicaes rodam, e bem, no bom e velho Mainframe. E eu serei obrigado a concordar
com o amigo leitor. Muitas e importantes so as aplicaes que ainda rodam em Mainframes e duvido
que em um futuro prximo, digamos cinco anos, todas estas aplicaes sejam migradas para outras
plataformas e modelos de desenvolvimento. Mas tambm precisamos admitir que muito pequeno,
para no dizer mnimo, o desenvolvimento de novas aplicaes para o modelo Terminal Mainframe.
Com o deslocamento do modelo de desenvolvimento do Mainframe; primeiro para o modelo Cliente/
Servidor clssico de duas camadas, depois a evoluo para o modelo de desenvolvimento Web com trs
ou mais camadas, tambm sofreram modificaes os Bancos de Dados que do suporte ao
desenvolvimento destas aplicaes. O Mainframe utiliza formatos de Bancos de Dados proprietrios,
criados pelos fabricantes dos equipamentos, na maioria dos casos a IBM.
No Captulo 2 iremos detalhar os modelos de desenvolvimento em duas, trs ou n camadas. Tambm falaremos sobre as vantagens e
desvantagens de cada modelo.
Com a expanso cada vez maior das redes locais de computadores e do modelo Cliente/Servidor, a
utilizao dos chamados Bancos de Dados Relacionais cresceu bastante. Hoje a grande maioria das
novas aplicaes baseada neste tipo de Bancos de Dados.
Neste captulo estaremos falando sobre os princpios bsicos dos Bancos de Dados Relacionais, que o
modelo de Banco de Dados utilizado pelo Microsoft SQL Server 2000. Outros Bancos de Dados bastante
conhecidos e que tambm utilizam este modelo:
Microsoft Access para aplicaes de menor porte.
Oracle.
DB2 da IBM.
Sybase.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
5 CURSO COMPLETO00
MySQL para Linux.
O modelo Relacional tambm possui suas limitaes, porm bastante adequado para a grande maioria
das aplicaes comerciais atualmente em uso ou sendo desenvolvidas. Algumas aplicaes especiais
que necessitam utilizar dados mais complexos, como por exemplo arquivos multimdia, dados espaciais
e sries temporais, podem se beneficiar mais das caractersticas dos chamados Bancos de Dados
Orientados a Objetos. Este tipo de Banco de Dados ainda no amplamente utilizado, a no ser em
situaes especficas.
Um exemplo de Banco de Dados Orientado a Objetos o Jasmine da CA.
Estaremos estudando, ao longo deste captulo, os princpios bsicos dos Bancos de Dados Relacionais devido
a sua grande aceitao e utilizao. Caso voc queira maiores detalhes sobre este tipo de Banco de Dados,
existe uma farta Bibliografia, bem como inmeros sites na Internet com informaes sobre o assunto.
O Microsoft SQL Server utiliza uma srie de comandos para realizar as diversas operaes sobre os
dados armazenados, como por exemplo:
Selecionar um conjunto de registros com base em critrios especificados.
Ordenar um conjunto de registros com base em um ou mais campo de dados.
Alterar informaes no Banco de Dados.
Excluir informaes no Banco de Dados.
Inserir informaes no Banco de Dados.
Para realizar estas operaes utilizada uma linguagem conhecida com SQL Structured Query Lan-
guage. A linguagem SQL foi desenvolvida pela IBM, porm devido ao seu poder e facilidade de utilizao,
rapidamente tornou-se um padro de mercado, sendo hoje utilizada pela maioria dos Bancos de Dados
que seguem o modelo Relacional.
Pequenas diferenas podem existir entre os comandos SQL de diferentes Bancos de Dados como por exemplo o Microsoft SQL Server e
o Oracle. Neste livro estaremos utilizando, evidentemente, os comandos SQL utilizados pelo Microsoft SQL Server.
FUNDAMENTOS EM: CONCEITOS BSICOS DE BANCOS DE DADOS RELACIONAIS
PR-REQUISITOS
Nenhum.
METODOLOGIA
Apresentao dos elementos que fazem parte do modelo Relacional.
TCNICA
Apresentao de exemplos prticos para ilustrar a teoria apresentada.
Neste item iremos revisar alguns conceitos bsicos sobre Bancos de Dados Relacionais. Estes conceitos so
importantes para a correta utilizao dos Bancos de Dados, bem como para o projeto e criao dos mesmos.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
6 00CURSO COMPLETO
Em muitas situaes teremos que conectar nossas aplicaes com Bancos de Dados j existentes, neste
caso precisamos conhecer os conceitos aqui apresentados, para podermos utilizar o Banco de Dados de
uma maneira otimizada.
Em outras situaes teremos que criar o Banco de Dados a ser utilizado pela aplicao que est sendo
desenvolvida. Neste caso, os conceitos apresentados neste captulo auxiliam na criao de um Banco
de Dados melhor estruturado e otimizado, tanto em termos de espao de armazenamento, quanto da
qualidade, confiabilidade e disponibilidade das informaes nele contidas.
Veremos os seguintes conceitos:
Entidades e Atributos, a base de um Banco de Dados.
Chave Primria.
Relacionamentos entre Entidades (Tabelas).
Integridade Referencial.
Normalizao de Tabelas.
Anlise de um Banco de Dados relacional.
ENTIDADES E ATRIBUTOS
Toda a informao de um Banco de Dados Relacional armazenada em Tabelas, as quais tambm so
chamadas de Entidades. Por exemplo, poderamos ter uma Tabela Clientes, onde seriam armazenadas
informaes sobre os diversos clientes.
Para cada um dos Clientes poderamos armazenar informaes tais como: Nome, Rua, Bairro, Telefone,
CEP, Data de Nascimento, etc.
Essas diversas caractersticas de cada Cliente so os Atributos do Cliente, muitas vezes chamados de
campos da entidade Cliente, ou de maneira mais simples: Os campos da tabela Clientes.
O Conjunto de todos os Atributos de um cliente e os valores dos mesmos forma o Registro do Cliente.
Com isso teremos a tabela constituda por um conjunto de Registros (uma linha completa com informaes
sobre o cliente) e cada Registro formado por um conjunto de Atributos (Nome, Endereo, etc.).
Resumindo:
Entidade ou Tabela -> Um conjunto de registros.
Campos ou Atributos -> Caractersticas individuais de cada Entidade.
Considere o exemplo da Figura 1.1: temos uma tabela Clientes com os seus diversos Campos (Atributos).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
7 CURSO COMPLETO00
Figura 1.1 A entidade (tabela) Clientes e seus diversos atributos (campos).
Neste exemplo, temos uma entidade Clientes e seus diversos atributos:
Cdigo do Cliente.
Nome da Empresa.
Nome do Contato.
Cargo do Contato.
Endereo.
Em cada linha temos um conjunto de atributos e seus valores. Cada linha forma um Registro que
identifica um Cliente. Cada coluna um Atributo da tabela Clientes.
Um dos grandes desafios em se projetar um Banco de Dados com sucesso a correta determinao das
entidades que existiro no Banco de Dados, bem como dos atributos de cada entidade. Mais adiante
veremos algumas dicas e tcnicas para determinar as tabelas necessrias, bem como os campos necessrios
em cada tabela.
importante lembrar que o que determina quais as tabelas e campos necessrios o escopo do problema
que est sendo abordado. Por exemplo, se estamos desenvolvendo um sistema para acompanhamento
do desempenho individual de cada funcionrio, com certeza no teremos necessidade de uma tabela
de Clientes. Por outro lado, se o desempenho de cada funcionrio a ser acompanhado estiver ligado ao
nmero de clientes atendidos pelo funcionrio ou ao volume de vendas, a tabela Clientes passa a ter
importncia para o problema em questo.
Com isso podemos dizer que o que determina as tabelas e campos necessrios o problema real que o
sistema a ser desenvolvido dever solucionar.
Outro fato importante, e que iremos repetir ao longo deste captulo, que cada tabela deve conter
dados de um determinado assunto. No devemos misturar dados de diversos assuntos em uma mesma
tabela. Observe o exemplo da Tabela 1.1.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
8 00CURSO COMPLETO
Tabela 1.1 Clientes e seus pedidos.
Observe que, nesta tabela, cometemos o erro de misturar dois assuntos:
Dados sobre os Clientes
Dados sobre os Pedidos dos Clientes
Quando este tipo de situao acontece, temos uma srie de problemas que iro refletir em todo o
sistema que est sendo desenvolvido. Dentre os principais problemas podemos citar:
Informao repetida: Observe que para cada pedido de um determinado cliente, precisamos
informar novamente os campos: Nome, Endereo e Fone.
Informao inconsistente: Observe que por um erro de digitao, o nome do cliente Jos da
Silva est digitado incorretamente (sem o acento) no segundo registro, e o seu endereo est
digitado incorretamente, no terceiro registro. Isso causa inconsistncias no Banco de Dados,
gerando resultados errados quando forem feitas pesquisas pelo nome do cliente ou pelo endereo.
Para evitar este tipo de problema, deveramos separar as informaes dos Clientes e dos seus Pedidos
em duas tabelas distintas. Veremos como fazer isso mais adiante neste captulo.
O CONCEITO DE CHAVE PRIMRIA
O conceito de Chave Primria fundamental para entender o funcionamento de um Banco de Dados.
Vamos procurar entender o que significa um campo ser a Chave Primria de uma tabela.
Ao definirmos um campo como sendo uma Chave Primria, estamos informando ao Banco de Dados
que no podem existir dois registros com o mesmo valor na Chave Primria, ou seja, os valores no
campo Chave Primria precisam ser nicos.
Por exemplo, se defino um campo Nmero da Identidade da tabela Clientes como sendo uma Chave
Primria, estou dizendo ao Banco de Dados que no podem existir dois clientes com o mesmo valor no
campo Nmero da Identidade. Na prtica, estou garantindo que no podem ser cadastrados dois
clientes com o mesmo nmero de identidade.
Em outras palavras, poderamos dizer que o campo Chave Primria identifica de maneira nica cada
registro de uma tabela, isto , de posse do valor da Chave Primria somente localizaremos um registro
com aquele valor no campo Chave Primria.
Nome Endereo Fone Nm. Pedido Data Valor
Jos da Silva Rua ABC 40 222-2222 10234 10-01-2001 R$ 450,00
Jose da Silva Rua ABC 40 222-2222 10345 12-01-2001 R$ 370,00
Jos da Silva Rua ACB 40 222-2222 12321 23-02-2001 R$ 234,30
Para Pedro Rua YYU 234 111-1111 12345 23-02-2001 R$ 654,33
Para Pedro Rua YYU 234 111-1111 12444 28-02-2001 R$ 456,70
Maria Jos Rua BBB 221 123-2222 12445 01-03-2001 R$ 443,25
Maria Jos Rua BBB 221 123-2222 12446 07-03-2001 R$ 500,32
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
9 CURSO COMPLETO00
Este um conceito muito importante, pois conforme veremos mais adiante os conceitos de Integridade
Referencial e Normalizao esto diretamente ligados ao conceito de Chave Primria.
Alguns exemplos de campos que podem ser definidos como Chave Primria em suas respectivas tabelas:
O campo Nmero do Pedido, em um tabela de Pedidos.
O campo Nmero da Identidade ou CPF em uma tabela de Clientes Pessoa Fsica.
O campo Nmero do CNPJ em uma tabela de Clientes Pessoa Jurdica.
O campo Cdigo do Produto em uma tabela de Produtos.
O campo ISBN em uma tabela de Livros.
Na Figura 1.2, vemos um exemplo da tabela Clientes onde o campo Cdigo do Cliente definido
como uma Chave Primria. Observe que no existem dois clientes com o mesmo cdigo.
Figura 1.2 O campo Cdigo do Cliente uma Chave Primria.
Um detalhe importante que a Chave Primria pode ser formada pela combinao de mais do que um
campo. Podem existir casos em que um nico campo no capaz de atuar como Chave Primria, pelo
fato do mesmo apresentar valores repetidos. Nestes casos, podemos definir uma combinao de dois
ou mais campos para ser a nossa Chave Primria. Alm disso, uma tabela somente pode ter uma Chave
Primria, seja ela simples ou composta.
Um cuidado especial que devemos ter quanto ao desempenho das consultas em tabelas que possuem
Chave Primria composta por mais do que um campo. Em muitas situaes, o desempenho das consultas
inversamente proporcional ao tamanho da Chave Primria. Com isso quanto maior o tamanho da
Chave Primria, menor o desempenho das consultas, isto , mais demoradas se tornam as consultas.
Na prtica, dificilmente teremos uma Chave Primria composta por mais do que trs campos. Se voc
se deparar com uma situao em que precise uma Chave primria composta de quatro ou mais cam-
pos, revise o projeto do Banco de Dados, por que devem existir alguns problemas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
10 00CURSO COMPLETO
RELACIONAMENTOS ENTRE TABELAS
Na prtica, em um Banco de Dados Relacional, podem existir diversas tabelas, como por exemplo:
Clientes
Produtos
Pedidos
Detalhes do Pedido
Fornecedores
Categorias
Funcionrios, etc.
Embora as informaes estejam separadas em cada uma das Tabelas, devemos ter algum mecanismo
que nos permita reunir dados de duas ou mais tabelas. Por exemplo, para fazer um relatrio do total de
vendas por funcionrio, precisarei informaes das seguintes tabelas:
Funcionrios
Pedidos
Detalhes do Pedido.
O mecanismo que nos permite acessar de maneira consolidada, dados de diversas tabelas o
Relacionamento entre Tabelas.
Por exemplo: um Pedido feito por um Cliente e neste Pedido podem existir diversos Itens, os quais
so armazenados na tabela Detalhes do Pedido. Alm disso, cada Pedido possui um nmero nico, mas
um mesmo Cliente pode fazer diversos pedidos.
Veja que o pargrafo acima descreve relaes do mundo real. Estas relaes do mundo real so o nosso
guia, para definir as relaes entre as diversas tabelas do Banco de Dados.
Em um Banco de Dados precisamos de alguma maneira para representar estes relacionamentos da vida
real, em termos das tabelas e seus atributos. Isto possvel com a utilizao dos Relacionamentos, os
quais podem ser de trs tipos:
Um para Um.
Um para Vrios.
Vrios para Vrios.
Vamos analisar cada um individualmente.
RELACIONAMENTO DO TIPO UM PARA UM
Esta relao existe quando os campos que se relacionam so ambos Chaves Primrias em suas respectivas
tabelas. Cada um dos campos no apresenta valores repetidos. Na prtica existem poucas situaes
onde utilizaremos um relacionamento deste tipo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
11 CURSO COMPLETO00
Vamos imaginar o seguinte exemplo: uma escola com um cadastro de alunos na tabela Alunos, destes
apenas uma pequena parte participa da Banda da Escola. Por questes de projeto do Banco de Dados
podemos optar por criar uma segunda tabela Alunos da Banda, a qual pode se relacionar com a
tabela Alunos atravs de um relacionamento Um para Um. Cada aluno somente cadastrado uma vez
na tabela Alunos e uma nica vez na tabela Alunos da Banda. Poderamos utilizar o campo Matrcula
do Aluno como o Campo que relaciona as duas tabelas.
Na tabela Alunos da Banda poderamos colocar apenas o Nmero da Matrcula do aluno, alm das
informaes a respeito do instrumento que ele toca, tempo de banda, etc. Quando fosse necessrio buscar
as informaes tais como Nome, Endereo, etc., as mesmas podem ser recuperadas atravs do relacionamento
existente entre as duas tabelas, evitando, com isso, que a mesma informao (Nome, Endereo, etc.) tenha
que ser duplicada nas duas tabelas, diminuindo a probabilidade de erros de digitao.
Na Figura 1.3 vemos o exemplo de um relacionamento do tipo Um para Um entre as tabelas Alunos e
Alunos da Banda.
Figura 1.3 Um relacionamento do tipo Um para Um.
RELACIONAMENTO DO TIPO UM PARA VRIOS
Este, com certeza, o tipo de relacionamento mais comum entre duas tabelas. Uma das tabelas (o lado
Um do relacionamento) possui um campo que a Chave Primria e a outra tabela (o lado Vrios) se
relaciona atravs de um campo cujos valores podem se repetir.
Considere o exemplo entre a tabela Clientes e a tabela Pedidos. Cada Cliente somente cadastrado
uma nica vez (por isso o campo Cdigo do Cliente uma Chave Primria, indicando que no podem
existir dois clientes com o mesmo cdigo), portanto a tabela Clientes ser o lado Um do relacionamento.
Por outro lado, cada cliente pode fazer diversos pedidos, portanto o campo Cdigo do Cliente poder
aparecer vrias vezes na tabela Pedidos, tantas vezes quantos forem os pedidos que o Cliente tiver
feito. Por isso que temos um relacionamento do tipo Um para Vrios entre as tabelas Clientes e Pedidos,
atravs do campo Cdigo do Cliente, indicando que um mesmo Cliente pode fazer diversos pedidos.
Na Figura 1.4, vemos um exemplo de um relacionamento Um para Vrios entre as tabelas Clientes e
Pedidos, atravs do campo cdigo do cliente.
No lado Um do relacionamento o campo definido como uma Chave Primria (campo CdigoDoCliente
na tabela Clientes) e no lado Vrios no (campo CdigoDoCliente na tabela Pedidos), indicando que
no lado Vrios o Cdigo do Cliente pode se repetir, o que faz sentido, uma vez que um mesmo cliente
pode fazer diversos pedidos.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
12 00CURSO COMPLETO
Figura 1.4 Um relacionamento do tipo Um para Vrios.
Podemos citar outro exemplo clssico de relacionamentos do tipo Um para Vrios: entre as tabelas Pedidos
e Detalhes do Pedido, atravs do campo NmeroDoPedido. Na tabela Pedidos o campo NmeroDoPedido
Chave Primria. Na tabela Detalhes do Pedido, o campo NmeroDoPedido no Chave Primria. Na
tabela Detalhes do Pedido, temos as informaes sobre os diversos itens de cada pedido. Este
relacionamento indica que um mesmo pedido pode ter diversos itens, o que faz sentido.
Na Figura 1.5, vemos um exemplo de um relacionamento Um para Vrios entre as tabelas Pedidos e
Detalhes do Pedido, atravs do campo NmeroDoPedido.
Figura 1.5 Mais um exemplo de relacionamento do tipo Um para Vrios.
O campo do lado Vrios do relacionamento tambm conhecido como sendo uma Chave Estrangeira. No exemplo da Figura 1.5, o
campo NmeroDoPedido, na tabela Detalhes do Pedido, seria a nossa Chave Estrangeira do relacionamento em questo.
RELACIONAMENTO DO TIPO VRIOS PARA VRIOS
Este tipo de relacionamento ocorre em uma situao onde, em ambos os lados do relacionamento, os
valores podem se repetir. Vamos considerar o caso entre as tabelas Produtos e Pedidos. Posso ter vrios
Pedidos nos quais aparece um determinado produto, alm disso vrios Produtos podem aparecer no
mesmo Pedido. Esta uma situao em que temos um relacionamento do tipo Vrios para Vrios:
Vrios produtos podem aparecer em Vrios pedidos, e Vrios pedidos podem conter Vrios produtos.
Na prtica no temos como implementar um relacionamento deste tipo, devido a uma srie de problemas
que este tipo de relacionamento implicaria.
Para evitar problemas, bastante comum quebrarmos um relacionamento do tipo Vrios para Vrios
em dois relacionamento do tipo Um para Vrios. Isso feito atravs da criao de uma nova tabela, a
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
13 CURSO COMPLETO00
qual fica com o lado Vrios dos relacionamentos. No nosso exemplo poderamos criar a tabela Detalhes
do Pedido, onde ficam armazenadas as informaes sobre os diversos itens de cada pedido. Desta
forma, ao invs de termos um relacionamento do tipo Vrios para Vrios, teremos dois relacionamentos
do tipo Um para Vrios, conforme indicado na Figura 1.6.
Figura 1.6 Quebrando um relacionamento Vrios para Vrios.
Esta situao, em que um relacionamento Vrios para Vrios quebrado em dois relacionamentos
do tipo Um para Vrios, bastante comum. Diversas vezes utilizamos esta tcnica para eliminar uma
srie de problemas no Banco de Dados, tais como informao repetida e inconsistncia de dados.
Agora que j conhecemos os tipos de relacionamentos existentes, veremos o conceito de Integridade
Referencial. O mecanismo da Integridade Referencial nos garante a consistncia dos dados.
INTEGRIDADE REFERENCIAL
A Integridade Referencial utilizada para garantir a integridade dos dados entre as diversas tabelas
relacionadas, evitando inconsistncias nos dados, bem como repeties desnecessrias.
Por exemplo, existe um relacionamento do tipo Um para Vrios entre a tabela Clientes e a tabela
Pedidos (um cliente pode fazer vrios pedidos). Com a Integridade Referencial, o Banco de Dados no
permite que seja cadastrado um Pedido para um Cliente que ainda no foi cadastrado na tabela de
Clientes. Atravs da Integridade Referencial, tambm podemos garantir outros detalhes:
Quando o cdigo de um cliente for alterado na tabela Clientes, o Banco de Dados atualiza,
automaticamente, todos os Cdigos do Cliente na tabela Pedidos, de tal maneira que no
fiquem registros rfos, isto , registros de Pedidos com um Cdigo de Cliente que no existe
mais na tabela Clientes. Essa ao conhecida como Propagar atualizao dos campos
relacionados ou Propagar atualizaes em cascata.
Quando um cliente for excludo da tabela Clientes, podemos pedir para que o Banco de Dados
exclua, na tabela Pedidos, todos os Pedidos para o cliente que est sendo excludo. Essa opo
conhecida como Propagar excluso dos registros relacionados ou Propagar excluses em
cascata, e pode ser habilitada ou no, dependendo do projeto do Banco de dados. Caso seja
necessrio manter todo o histrico de compras do cliente, por exemplo, esta opo no deve
ser habilitada. Com isso, quando o cliente for eliminado da tabela Clientes, os seus pedidos
continuaro gravados na tabela Pedidos.
Essas opes so definidas no momento da criao do Banco de Dados, quando da criao das tabelas
e dos relacionamentos entre as mesmas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
14 00CURSO COMPLETO
A opo de Propagar atualizao dos campos relacionados utilizada na maioria das situaes, j a
opo de Propagar excluso dos registros relacionados deve ser estudada caso a caso.
NORMALIZAO DE TABELAS
O objetivo da normalizao evitar os problemas provocados por falhas no projeto do Banco de
Dados, bem como eliminar a mistura de assuntos e as correspondentes redundncias de dados.
Uma Regra de Ouro que devemos observar quando do projeto de Banco de Dados a de no
misturar assuntos em uma mesma Tabela.
Por exemplo, na tabela Clientes devemos colocar somente campos relacionados com o assunto Clientes.
No devemos misturar campos relacionados com outros assuntos, tais como Pedidos, Produtos, etc.
Essa mistura de assuntos em uma mesma tabela acaba por gerar repetio desnecessria dos dados
bem como inconsistncia dos mesmos.
O processo de Normalizao aplica uma srie de regras sobre as entidades de um Banco de Dados, para
verificar se as mesmas esto corretamente projetadas. Embora existam cinco Formas Normais (ou regras
de Normalizao), na prtica usamos um conjunto de trs Formas Normais.
Freqentemente, aps a aplicao das regras de Normalizao, algumas tabelas acabam sendo divididas
em duas ou mais, o que no final gera um nmero maior de tabelas do que o originalmente existente.
Este processo causa a simplificao dos atributos de uma tabela, colaborando significativamente para
a estabilidade do modelo, reduzindo-se as necessidades de manuteno.
Vamos estudar e entender o processo de Normalizao na prtica, atravs de exemplos.
PRIMEIRA FORMA NORMAL
Regra: Uma tabela est na Primeira Forma Normal quando seus atributos no contm Grupos de Repetio.
Por isso dissemos que uma Tabela que possui Grupos de Repetio no est na Primeira Forma Normal.
Considere a Figura 1.7.
Figura 1.7 Uma tabela que no est na Primeira Forma Normal.
Podemos notar que uma tabela com esta estrutura apresenta diversos problemas. Por exemplo, se um
casal tiver mais do que um filho, teramos que digitar o Nome do Pai e da Me diversas vezes, tantas
quantos forem os filhos. Isso forma um Grupo de Repetio. Pode ser que, por erro de digitao, o
nome dos pais no aparea exatamente igual todas as vezes, o que pode acarretar problemas na hora de
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
15 CURSO COMPLETO00
fazer pesquisas ou emitir relatrios. Este problema ocorre porque misturamos assuntos em uma mesma
tabela. Colocamos as informaes dos Pais e dos Filhos em uma mesma tabela.
A soluo para este problema simples: criamos uma tabela separada para a Informao dos Pais e
relacionamos a tabela Pais com a tabela Filhos atravs de um relacionamento do tipo Um para Vrios,
ou seja, Um casal pode ter Vrios filhos. Esta soluo indicada na Figura 1.8.
Figura 1.8 As tabelas Pais e Filhos esto na Primeira Forma Normal.
As duas tabelas resultantes da aplicao da Primeira Forma Normal, Pais e Filhos, esto na Primeira
Forma Normal; a tabela original, a qual misturava informaes de Pais e Filhos, no estava.
SEGUNDA FORMA NORMAL
Podemos aplicar a Segunda Forma Normal quando tivermos uma Chave Primria Composta. Neste
caso, devemos observar se todos os campos que no fazem parte da Chave dependem de todos os
campos que compem a Chave Primria. Se algum campo depender somente de parte da Chave
Composta, ento este campo deve pertencer a outra tabela.
Observe o exemplo indicado na Figura 1.9.
Figura 1.9 Uma tabela que no est na Segunda Forma Normal.
A Chave Primria Composta formada pela combinao dos campos NmeroDaMatrcula e CdigoDoCurso.
O campo Avaliao depende tanto do CdigoDoCurso quanto do NmeroDaMatrcula, porm o campo
DescrioDoCurso, depende apenas do CdigoDoCurso. Com isso, temos um campo que no faz parte da
Chave Primria e depende apenas de um dos campos que compem a Chave Primria. Assim, dizemos que
esta tabela no est na Segunda Forma Normal.
A resoluo para este problema tambm simples: dividimos a tabela, que no est na Segunda Forma
Normal, em duas outras tabelas, conforme indicado pela Figura 1.10, sendo que as duas tabelas
resultantes estaro na Segunda Forma Normal.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
16 00CURSO COMPLETO
Figura 1.10 Duas tabelas que esto na Segunda Forma Normal.
A distino entre a Segunda e a Terceira Forma Normal, que veremos no prximo item, muitas vezes confusa. A Segunda Forma
Normal est ligada ocorrncia de Chaves Primrias Compostas.
TERCEIRA FORMA NORMAL
Na definio dos campos de uma entidade podem ocorrer casos em que um campo no seja dependente
diretamente da Chave Primria, ou de parte dela, mas sim dependente de um outro atributo constante
na tabela, atributo este que no seja a Chave Primria.
Quando isto ocorre, dizemos que a tabela no est na Terceira Forma Normal, conforme indicado pela
Figura 1.11.
Figura 1.11 Uma tabela que no est na Terceira Forma Normal.
Observe que o campo DescrioDoCurso depende apenas do campo CdigoDoCurso, o qual no faz
parte da Chave Primria. Por isso dizemos que esta tabela no est na Terceira Forma Normal.
A soluo para este caso tambm simples. Novamente basta dividir a tabela em duas outras, conforme
indicado pela Figura 1.12. As duas tabelas resultantes esto na Terceira Forma Normal.
Figura 1.12 Duas tabelas que esto na Terceira Forma Normal.
Com isso podemos concluir que, como resultado do processo de Normalizao, iremos obter um nmero maior de tabelas, porm sem
problemas de redundncia e inconsistncia dos dados, ou com estes problemas minimizados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
17 CURSO COMPLETO00
PASSOS PARA PROJETAR UM BANCO DE DADOS
Neste item iremos apresentar os passos bsicos para projetar um Banco de Dados. Aplicaremos os
conhecimentos sobre Entidades, Atributos, Relacionamentos, Chave Primria e Normalizao.
Um Banco de Dados bem projetado fornece um acesso conveniente s informaes desejadas. Com
uma boa estrutura, gasta-se menos tempo em sua construo e, ao mesmo tempo, assegura-se resultados
mais rpidos e precisos.
Neste item estamos falando do projeto fsico do Banco de Dados, isto , a definio de quais tabelas e do relacionamento entre as
mesmas. O resultado final desta fase ser o que chamamos de Diagrama Entidade x Relacionamentos. O projeto completo de uma
aplicao de n camadas que ir rodar na rede de uma empresa, envolve vrias outras etapas. A descrio completa de todas as etapas
foge ao escopo deste livro, sendo disciplina de Anlise de Sistemas. Um bom livro sobre o assunto o seguinte: Analyzing Requirementes
and Defining Solution Architectures MCSD Training Kit, Microsoft Press, ISBN: 0735608547.
Etapas na estruturao de um Banco de Dados:
Determinar qual o objetivo do Banco de Dados. Isto ajuda na determinao de quais os dados
devem ser armazenados.
Determinar as tabelas necessrias. Aps definirmos o objetivo do Banco de Dados, as informaes
devem ser definidas e separadas em assuntos diferentes, tais como Clientes, Empregados, Pedidos,
pois cada um ir compor uma tabela no Banco de Dados.
Determinar os campos necessrios em cada tabela. Definir quais informaes devem ser mantidas
em cada tabela. Por exemplo, a tabela Clientes poderia ter um campo para o Cdigo do Cliente,
outro para o Nome do Cliente e assim por diante.
Determinar quais campos sero as Chaves Primrias. Determinar, em cada tabela, qual ou
quais campos sero utilizados como Chave Primria. Esta uma etapa importante para a
definio dos relacionamentos que vem a seguir.
Determinar os relacionamentos. Decidir como os dados de uma tabela se relacionam com os
dados de outras tabelas. Por exemplo, Clientes podem fazer vrios Pedidos. Fornecedores podem
fornecer vrios Produtos, etc.
Refinar a estrutura do Banco de Dados. Antes de inserir muitos dados, ou at mesmo antes de
inserir qualquer dado, verificar se a estrutura contm erros, isto , verificar se os resultados obtidos
so os desejados. Isto, normalmente, pode ser obtido atravs do processo de Normalizao.
Com uma boa estrutura, gasta-se menos tempo na construo e manuteno do Banco de Dados e, ao
mesmo tempo, assegura-se resultados mais rpidos e precisos.
Dicas para determinao dos campos em uma tabela:
Relacionar diretamente cada campo ao assunto da tabela. Se um campo descreve o assunto de
uma tabela diferente, este campo deve pertencer a outra tabela. O mesmo acontece quando
uma informao se repete em diversas tabelas. Este um indcio de que existem campos
desnecessrios em algumas tabelas.
No incluir dados derivados ou calculados. No recomendado armazenar o resultado de
clculos nas tabelas. O correto que o clculo seja executado quando necessitarmos do resultado.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
18 00CURSO COMPLETO
Incluir todas as informaes necessrias. Como fcil esquecer informaes importantes, deve-
se ter em mente todas as informaes coletadas desde o incio do processo e perguntar se com
elas possvel obter todas os resultados esperados.
Armazenar todas as informaes separadamente. Existe uma tendncia em armazenar
informaes em um nico campo. Por exemplo, o nome do curso e o tempo de durao em
uma mesmo campo. Como as duas informaes foram combinadas em um nico campo, ficar
difcil conseguir um relatrio classificado pelo tempo de durao dos cursos, por exemplo.
Como escolher o campo que ser a Chave Primria?
Um bom Sistema Gerenciador de Banco de Dados Relacionais (SGBDR) aquele que encontra e nos fornece,
rapidamente, todas as informaes necessrias que nele estejam armazenadas, mesmo em diferentes tabelas.
Para que isto seja possvel necessrio incluir um campo ou conjunto de campos que identifiquem de um
modo nico cada registro de uma tabela. Esta informao chamada Chave Primria, conforme descrito
anteriormente. Deve-se ter certeza que este campo (ou conjunto de campos) seja sempre diferente para
cada registro, por no ser permitido valores duplicados em um campo de Chave Primria.
Ao escolher campos de Chave Primria, considere os seguintes detalhes:
No permitido duplicidade de valores ou nulos (informaes desconhecidas).
Caso no exista um identificador nico para uma determinada tabela, pode-se usar um campo
que numere os registros seqencialmente.
Pode-se utilizar o valor deste campo para encontrar registros.
O tamanho da Chave Primria afeta a velocidade das operaes, portanto, para um melhor
desempenho, devemos utilizar o menor tamanho que acomode os valores necessrios para
armazenar no campo.
Na Figura 1.13, temos um exemplo de um diagrama Entidade X Relacionamentos. Este diagrama mostra
a estrutura do Banco de Dados Nwind.mdb, o qual fornecido juntamente com o Microsoft Access e
tambm como exemplo na instalao do Microsoft SQL Server, conforme veremos mais adiante. Os
campos que so Chave Primria esto indicados em negrito.
Figura 1.13 Um diagrama Entidade X Relacionamentos.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
19 CURSO COMPLETO00
FUNDAMENTOS EM: NOES BSICAS DA LINGUAGEM
SQL STRUCTURED QUERY LANGUAGE
PR-REQUISITOS
Noes sobre os elementos bsicos do modelo relacional.
METODOLOGIA
Apresentao dos principais comandos e clusulas da linguagem SQL.
TCNICA
Utilizao de exemplos prticos.
Como o prprio nome sugere, a linguagem utilizada pelo Microsoft SQL Server 2000 o SQL Struc-
tured Query Language. O SQL utilizado para uma srie de operaes, como por exemplo:
Selecionar um conjunto de registros com base em um ou mais critrios de pesquisa.
Alterar informaes no Banco de Dados.
Inserir informaes no Banco de Dados.
Criar novas tabelas.
Excluir registros, etc.
Embora a maioria destas operaes possa ser feita atravs da interface grfica do Microsoft SQL Server
2000, existem situaes em que precisamos conhecer e utilizar a linguagem SQL. Para a criao de
Store Procedures, Triggers e outros recursos avanados, estaremos utilizando a linguagem SQL.
Neste item teremos uma noo bsica da linguagem SQL. Aprenderemos os comandos para manipulao
de dados consultar, inserir, alterar e excluir. Em todos os demais captulos deste livro, estaremos
utilizando outros comandos da linguagem SQL, os quais sero explicados nos momentos devidos. Um
resumo dos principais comandos pode ser encontrado no Anexo.
INTRODUO
O SQL foi desenvolvido para ser uma linguagem padro para operaes em Banco de Dados. A linguagem
SQL foi elaborada para ser independente de hardware ou software. Ao usar SQL, voc no precisa saber
a respeito do software de Banco de Dados ou do hardware envolvido em uma operao. Tudo o que
voc precisa conhecer o mtodo (instruo) SQL padro para solicitar informaes, que
obrigatoriamente o mesmo em todos os sistemas que utilizam o SQL.
Existem pequenas diferenas nas implementaes do SQL de diferentes fabricantes. Desta forma, algumas rotinas escritas utilizando o
SQL Plus do Oracle podem no rodar, sem alteraes no Microsoft SQL e vice-versa.
Na listagem a seguir temos um exemplo de uma instruo SQL. Embora a mesma possa parecer complexa,
neste primeiro momento, veremos que a linguagem SQL bastante simples e de fcil aprendizado.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
20 00CURSO COMPLETO
Exemplo de um comando SQL:
SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry, Orders.ShipCity
FROM Orders
WHERE Orders.ShipCountry Like [A-M]%
AND
Orders.OrderDate > 01/01/1997
ORDER BY Orders.OrderDate
Uma instruo SQL descreve o conjunto de dados que voc deseja recuperar (quais campos, de quais
tabelas, critrios de filtragem, classificao, expresses calculadas, etc.).
Todas as instrues SQL so conduzidas com um nico comando que contm uma descrio completa
da informao exigida. Ao escrever uma instruo SQL, voc no deve se preocupar em como os dados
so recuperados, mas somente com o contedo do conjunto de dados. Esse o principal benefcio do
mtodo SQL.
Lembre-se que o SQL um padro genrico para expresses de consulta em Banco de Dados. Embora
a maior parte das verses do SQL compartilhe elementos bsicos, elas no so idnticas. O Access SQL
usa algumas palavras-chave que voc no encontra em outras verses do SQL. Tambm existem pequenas
diferenas entre o Microsoft Access e o Microsoft SQL Server.
Veremos, atravs de exemplos, a utilizao das principais palavras-chave do SQL para a construo de
expresses SQL para pesquisa em Banco de Dados.
A INSTRUO SELECT
Esta com certeza a instruo SQL mais importante, no existe pesquisa que no utilize esta instruo.
Vamos conhec-la em detalhes.
A instruo Select utilizada para especificar quais os campos de quais tabelas faro parte da consulta,
quais os critrios de pesquisa que sero utilizados, qual a ordem de classificao, etc.
A sintaxe simplificada da instruo conforme indicado abaixo:
SELECT
campo1, campo2, campo3
FROM nome_da_tabela
[WHERE condio ]
[GROUP BY nome_do_campo ]
[HAVING ... ]
[ORDER BY... ]
Na Tabela 1.2 temos uma descrio destes elementos.
Tabela 1.2 Os principais elementos da instruo Select.
Elemento Descrio
campo1, campo2... campon Nome dos campos a serem retornados a partir de uma ou mais tabelas.
nome_da_tabela Nome da tabela a partir da qual os dados devem ser recuperados.
WHERE Permite que sejam especificados critrios de pesquisa.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
21 CURSO COMPLETO00
Vamos analisar alguns exemplos prticos de utilizao da Linguagem SQL.
Exemplo 1: Criar uma instruo SQL que retorne os campos NmeroDoPedido, DataDoPedido, Frete e
PasDeDestino da tabela Pedidos.
SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PasDeDestino, Pedidos.Frete FROM
Pedidos
Observe que os nomes dos campos esto separados por vrgula, alm disso estamos utilizando o nome
completo, isto : Nome_da_tabela.Nome_do_campo. Tambm poderamos utilizar o comando, sem o
nome da tabela antes do nome do campo, conforme indicado no seguinte comando:
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
Somente obrigatria a utilizao do nome da tabela antes do nome do campo quando o mesmo campo existir em duas ou mais tabelas
que fazem parte da instruo Select.
Por exemplo, imagine que estejamos escrevendo uma instruo SQL para criar uma listagem com o
Cdigo e o Nome do Cliente, bem como todos os pedidos efetuados pelo Cliente. Acontece que o Cdigo
do Cliente, no nosso exemplo, existe nas duas tabelas: Clientes e Pedidos. Neste caso devemos especificar
o nome da tabela, antes do nome do campo.
Exemplo 2: Alterar a instruo SQL anterior para que os registros sejam classificados em ordem crescente
pelo valor do Frete.
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
ORDER BY Frete
Observe a utilizao da clusula ORDER BY Frete para classificar os registros em ordem crescente. A
classificao em ordem crescente a padro. Quando formos classificar em ordem decrescente,
precisamos especificar a palavra DESC, conforme indicado no seguinte comando:
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
ORDER BY Frete DESC
Exemplo 3: Agora vamos comear a inserir condies. Muitas vezes as condies so chamadas de
filtro, uma vez estabelecida uma condio, somente os registros que atendem a condio especificada
Elemento Descrio
GROUP BY Podemos agrupar os resultados em torno de um ou mais campos de dados. Por
exemplo, em um relatrio de vendas anuais, posso ter os resultados agrupados
por ms, com a soma das vendas do ms logo aps a listagem das vendas.
HAVING Especifica critrios para serem utilizados juntamente com Group By.
ORDER BY Podemos ordenar os resultados obtidos com base em um ou mais campos de
dados. Por exemplo, podemos ordenar uma listagem de vendas em ordem
alfabtica do nome do cliente ou do nome do vendedor.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
22 00CURSO COMPLETO
sero retornados. Desta forma a condio atua como se fosse um filtro. Neste exemplo, vamos alterar
a instruo SQL anterior para que sejam exibidos somente os pedidos cujo PasDeDestino seja Brasil.
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
WHERE PasDeDestino=Brasil
ORDER BY Frete
Observe a utilizao da clusula WHERE para filtrar somente os pedidos cujo PasDeDestino seja Brasil.
Como o campo PasDeDestino um campo do tipo texto, o valor do critrio (Brasil) tem que vir entre
apstrofes. Vamos trabalhar um pouco mais com a clusula WHERE.
Exemplo 4: Altere a instruo SQL anterior para que sejam exibidos somente os pedidos para o Brasil
ou Alemanha como PasDeDestino.
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
WHERE Pedidos.PasDeDestino=Brasil OR Pedidos.PasDeDestino=Alemanha
ORDER BY Frete
Observe a utilizao da clusula OR ligando os dois Critrios. Lembre que a clusula OR retorna um
registro se o PasDeDestino atender um dos dois critrios. Assim, se for Brasil ou se for Alemanha , o
registro ser selecionado, que exatamente o que desejamos, ou seja, todos os pedidos para o Brasil ou
para a Alemanha.
Exemplo 5: Altere a instruo SQL anterior, retirando o critrio para PasDeDestino. Adicione um
critrio para NmeroDoPedido maior do que 10500, retire a classificao do campo Frete e classifique
pelo campo NmeroDoPedido.
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
WHERE NmeroDoPedido>10500
ORDER BY NmeroDoPedido
Observe a clusula WHERE utilizando o operador de comparao maior do que ( > ) e a classificao
atravs da clusula ORDER BY no campo NmeroDoPedido.
Podemos ver, atravs dos exemplos, que a linguagem SQL no to difcil como pode parecer primeira
vista. Observe que a sintaxe da linguagem bastante intuitiva e orientada a extrao de dados atravs
das consultas.
Vamos continuar analisando alguns exemplos de aplicao da linguagem SQL com a utilizao de
recursos mais avanados.
Exemplo 6: Alterar a instruo SQL anterior, e adicionar um critrio de tal maneira que somente sejam
exibidos os pedidos para o ano de 1995. Tirar o critrio do campo NmeroDoPedido.
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
WHERE Year(DataDoPedido)=1995
ORDER BY NmeroDoPedido
Observe a utilizao da funo YEAR para extrairmos apenas o ano do campo DataDoPedido a fim de
especificarmos como critrio o Ano=1995. Tambm a clusula ORDER BY foi mantida, classificando a
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
23 CURSO COMPLETO00
listagem em ordem crescente pelo nmero do pedido. A utilizao de funes junto com os comando
SQL nos fornece inmeras possibilidades de refinamento em nossas consultas.
Exemplo 7: Alterar a instruo SQL anterior, para que sejam exibidos somente os pedidos no Perodo de
01/01/1995 at 31/08/1995 e que tenham como PasDeDestino Brasil, Argentina, Alemanha ou Canad.
SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos
WHERE DataDoPedido Between 1/1/95 And 8/31/95
AND
PasDeDestino In (Brasil,Argentina,Alemanha,Canad)
ORDER BY NmeroDoPedido
Observe a utilizao de vrios critrios em diferentes campos. Colocamos critrios nos campos
DataDoPedido e PasDeDestino. Os critrios de dois ou mais campos so ligados atravs do operador
AND, indicando que um registro deve atender ambos os critrios para ser selecionado. Tambm temos a
utilizao dos operadores BETWEEN (Entre) para selecionar as datas dentre de um determinado intervalo
e do operador IN (Em) para selecionar o campo PasDeDestino que seja igual a um dos valores apresentados
na lista. Observe tambm, que os valores de data vem delimitados por apstrofes ().
Exemplo 8: Criar uma instruo SQL que retorne os campos NmeroDoPedido, DataDoPedido,
DataDeEntrega, Frete e PasDeDestino da tabela Pedidos. Criar uma coluna adicional que calcula o
nmero de dias entre a DataDeEntrega e a DataDoPedido. Chamar esta coluna de Dias_Ped_Entr.
SELECT NmeroDoPedido, DataDoPedido, DataDeEntrega, PasDeDestino, Frete, DataDeEntrega-
DataDoPedido AS Dias_Ped_Entr FROM Pedidos
WHERE (DataDoPedido Between 1/1/95 And 8/31/95)
AND
(PasDeDestino In (Brasil,Argentina,Alemanha,Canad))
ORDER BY Pedidos.NmeroDoPedido
Veja que a coluna calculada DataDeEntrega-DataDoPedido est junto com a listagem dos campos no
incio da instruo Select. Alm disso, foi utilizada a palavra AS para atribuir um nome (apelido) para
esta coluna calculada. Este nome o que ser utilizado para fazer referncia coluna, em uma pgina
ASP ou um programa desenvolvido em Visual Basic, por exemplo.
Voc tambm pode classificar a listagem em ordem crescente ou decrescente de um campo calculado.
Por exemplo, se voc quisesse classificar a listagem do item anterior, em ordem crescente, do nmero
de dias entre a DataDeEntrega e a DataDoPedido, bastaria utilizar a seguinte instruo SQL:
SELECT NmeroDoPedido, DataDoPedido, DataDeEntrega, PasDeDestino, Frete, DataDeEntrega-
DataDoPedido AS Dias_Ped_Entr
FROM Pedidos
WHERE (DataDoPedido Between 1/1/95 And 8/31/95)
AND
(PasDeDestino In (Brasil,Argentina,Alemanha,Canad))
ORDER BY DataDeEntrega-DataDoPedido
Exemplo 9: Alterar a instruo SQL anterior, eliminando os critrios para a DataDoPedido e para o
PasDeDestino. Colocar um novo critrio para PasDeDestino, onde sejam exibidos apenas os pedidos
cujo PasDeDestino tem a primeira letra na faixa de A at M. Utilize o operador LIKE.
SELECT NmeroDoPedido, DataDoPedido, DataDeEntrega, PasDeDestino, Frete, DataDeEntrega-
DataDoPedido AS Dias_Ped_Entr
FROM Pedidos
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
24 00CURSO COMPLETO
WHERE PasDeDestino Like [A-M]%
ORDER BY PasDeDestino
Observe a utilizao do operador Like no critrio de pesquisa para esta consulta. Nunca demais
salientar que a utilizao das instrues SQL juntamente com as funes e operadores, como o LIKE,
nos fornece um amplo conjunto de possibilidades. O caracter % utilizado como um caracter curinga.
Por exemplo, se especificarmos o seguinte critrio:
WHERE NomeDoCLiente Like Joo%
sero retornados todos os registros para Clientes cujo nome inicia com Joo. O caracter curinga %
significa, em termos simples: qualquer coisa, ou seja, o critrio especifica que o nome inicie com
Joo, no importando (qualquer coisa) o que vier depois.
Aqui cabe um aviso importante para os usurios do Microsoft Access. Naquele aplicativo, o caracter curinga o *, j no Microsoft SQL
Server 2000, utilizamos como caracter curinga o %, o qual tambm utilizado na construo de pginas ASP. Para maiores informaes
sobre a tecnologia ASP Active Server Pages, consulte o livro Criando Sites Dinmicos com ASP 3.0, 730 pginas, de minha autoria.
O livro foi publicado pela editora Axcel Books do Rio de Janeiro www.axcel.com.br.
At agora estivemos trabalhando com Instrues que selecionam registros de uma nica tabela. Porm
bastante comum criarmos instrues SQL baseadas em duas ou mais tabelas. Quando criamos instrues SQL
que buscam dados em duas ou mais tabelas, dizemos que est sendo feito um Join entre as duas tabelas.
Normalmente este Join (ou ligao) feito atravs de um campo comum s duas tabelas. Por exemplo,
NmeroDoPedido na tabela Pedidos e NmeroDoPedido na tabela Detalhes do Pedido. Outro exemplo,
CdigoDoCliente na tabela Pedidos e CdigoDoCliente na tabela Clientes. Pode acontecer de termos
consultas que trabalham com trs ou mais tabelas, neste caso teremos diversos Joins. O nmero de
Joins sempre igual ao nmero de tabelas menos um. Por exemplo, se a nossa consulta acessar dados
de quatro tabelas, teremos trs joins.
Agora passaremos e explorar na prtica, atravs de exemplos, a construo de instrues SQL que
trabalhem com duas ou mais tabelas.
Exemplo 10: Criar uma instruo SQL que selecione os seguintes campos:
NmeroDoPedido da tabela Pedidos
DataDoPedido da tabela Pedidos
PasDeDestino da tabela Pedidos
Frete da tabela Pedidos
CdigoDoProduto da tabela DetalhesdoPedido
PreoUnitrio da tabela DetalhesdoPedido
Quantidade da tabela DetalhesdoPedido.
Alm disso, as tabelas Pedidos e DetalhesdoPedido esto relacionadas pelo campo NmeroDoPedido,
atravs de um relacionamento do tipo Um para Vrios.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
25 CURSO COMPLETO00
Classificar a listagem em ordem crescente do Nmero do Pedido. Para resolver este exemplo podemos
utilizar a seguinte instruo SQL:
SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PasDeDestino, Pedidos.Frete,
DetalhesdoPedido.CdigoDoProduto, DetalhesdoPedido.PreoUnitrio, DetalhesdoPedido.Quantidade
FROM Pedidos
INNER JOIN
DetalhesdoPedido
ON Pedidos.NmeroDoPedido = DetalhesdoPedido.NmeroDoPedido
ORDER BY Pedidos.NmeroDoPedido
Primeiro devemos observar que, pelo fato de estarmos tratando com dados de duas tabelas, estamos
utilizando a nomenclatura completa, isto , Nome_da_tabela.Nome_do_campo.
Observe a utilizao da clusula INNER JOIN, ligando as tabelas Pedidos e DetalhesdoPedido, atravs
do campo NmeroDoPedido, conforme especificado na clusula ON, onde temos o seguinte:
ON Pedidos.NmeroDoPedido = DetalhesdoPedido.NmeroDoPedido
Observe que esta listagem ir trazer vrios registros para cada pedido, tantos quantos forem os itens de
cada pedido.
Mas, se ao invs do CdigoDoProduto, ns quisssemos que fosse exibida a descrio do produto?
Em primeiro lugar esta informao encontra-se na tabela Produtos, logo teremos que adicionar a Tabela
Produtos nossa consulta, a qual ir se ligar tabela DetalhesdoPedido atravs do campo CdigoDoProduto,
logo teremos mais um Join. Para trs tabelas teremos dois Joins.
Aps adicionar a tabela Produtos e substituir o campo CdigoDoProduto pelo campo NomeDoProduto,
a nossa instruo SQL deve ficar conforme indicado no seguinte comando:
SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PasDeDestino, Pedidos.Frete,
Produtos.NomeDoProduto, DetalhesdoPedido.PreoUnitrio, DetalhesdoPedido.Quantidade
FROM Produtos
INNER JOIN (Pedidos INNER JOIN DetalhesdoPedido
ON Pedidos.NmeroDoPedido=DetalhesdoPedido.NmeroDoPedido)
ON
Produtos.CdigoDoProduto=DetalhesdoPedido.CdigoDoProduto
ORDER BY Pedidos.NmeroDoPedido
Observe que neste caso temos um INNER JOIN dentro do outro. Dentro do parnteses feita a ligao
entre as tabelas Pedidos e DetalhesdoPedido, atravs do campo NmeroDoPedido, e externamente
feita a ligao entre as tabelas Produtos e DetalhesdoPedido, atravs do campo NmeroDoPedido.
Podemos utilizar diversos nveis de INNER JOIN, embora esta no seja uma prtica recomendada, pois
se aumentarmos muito os nveis de INNER JOIN, posso ter como resultado pesquisas mais lentas em
conseqncia do aumento da complexidade das mesmas. At trs ou quatro nveis considerado
normal, acima disso repense a maneira de construir a consulta.
Exemplo 11: Alterar a instruo SQL do item anterior para que somente sejam exibidos os pedidos para
os produtos cujo NomeDoProduto inicie com uma letra na faixa de A at J. Tirar a classificao do
campo NmeroDoPedido e classificar em ordem crescente do campo NomeDoProduto.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
26 00CURSO COMPLETO
SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PasDeDestino, Pedidos.Frete,
Produtos.NomeDoProduto, DetalhesdoPedido.PreoUnitrio, DetalhesdoPedido.Quantidade
FROM Pedidos
INNER JOIN (Produtos INNER JOIN DetalhesdoPedido
ON
Produtos.CdigoDoProduto=DetalhesdoPedido.CdigoDoProduto)
ON
Pedidos.NmeroDoPedido = DetalhesdoPedido.NmeroDoPedido
WHERE (Produtos.NomeDoProduto Like [A-J]%)
ORDER BY Produtos.NomeDoProduto
Observe, alm dos dois INNER JOIN, a utilizao da clusula WHERE em conjunto com operador LIKE
para especificar o critrio desejado.
At este momento estivemos construindo instrues SQL que executam consultas em Banco de Dados.
Especificamos quais campos sero exibidos, critrios de filtragem para estes campos e uma ordem de
classificao. A partir de agora aprenderemos a utilizar instrues SQL para a construo de outros
tipos de instrues SQL, as quais realizam alteraes e incluses em tabelas de Banco de Dados.
A INSTRUO UPDATE
A instruo UPDATE utilizada para alterar informaes em um Banco de Dados. Poderamos, por
exemplo, criar um formulrio onde o usurio pode alterar os seus dados cadastrais. Primeiro os dados
so recuperados a partir do Banco de Dados, em seguida as alteraes so enviadas de volta para o
Banco de Dados, atravs de uma instruo UPDATE. Vamos estudar esta instruo atravs de exemplos,
assim como fizemos com a instruo SELECT.
Exemplo 1: Criar uma instruo SQL que aumenta o PreoUnitrio em 20% na tabela DetalhesdoPedido,
devido a um ajuste na moeda e uma desvalorizao em relao ao Dlar.
UPDATE DetalhesdoPedido
SET PreoUnitrio = PreoUnitrio*1.2
Observe a simplicidade da instruo SQL. Utilizamos uma instruo UPTADE, seguida do nome da
tabela onde ser feita a atualizao. Em seguida uma instruo SET com a expresso de atualizao para
aumentar em 20% o PreoUnitrio em todos os registros da tabela DetalhesdoPedido.
Vamos alterar a instruo anterior, para incluir um critrio na consulta de atualizao.
Exemplo 2: Alterar a instruo SQL do item anterior para que somente sejam aumentados em 20%, o
campo PreoUnitrio dos registros cujo PreoUnitrio for maior ou igual a R$ 20,00.
UPDATE DetalhesdoPedido
SET PreoUnitrio = PreoUnitrio*1.2
WHERE PreoUnitrio>=20
Adicionamos uma clusula WHERE, para atualizar apenas os registros cujo PreoUnitrio seja maior
ou igual a R$ 20,00.
Exemplo 3: Alterar a instruo SQL do exemplo anterior para que somente sejam aumentados os registros
cujo PreoUnitrio for maior ou igual a R$ 20,00 E cujo NmeroDoPedido seja menor do que 10500.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
27 CURSO COMPLETO00
UPDATE DetalhesdoPedido
SET PreoUnitrio = PreoUnitrio*1.2
WHERE (PreoUnitrio>=20)
AND
(NmeroDoPedido<10500)
Observe que utilizamos critrios em dois campos (PreoUnitrio e NmeroDoPedido) e que estes critrios
esto ligados por um operador AND, o que significa que um registro, somente ser atualizado se ele
atender aos dois critrios ao mesmo tempo (PreoUnitrio maior ou igual a 20 e NmeroDoPedido
menor do que 10500). Se o registro atender apenas uma das condies, o mesmo no ter o seu
PreoUnitrio atualizado.
Vamos refinar um pouco mais a nossa consulta de atualizao. Vamos fazer com que somente sejam
atualizados os Pedidos para o ano da DataDoPedido igual a 1995, e ainda iremos manter os critrios
adicionados at agora.
Exemplo 4: Alterar a instruo SQL do exemplo anterior para incluir um critrio para que o Ano da
DataDoPedido seja 1995. Voc ter que incluir a tabela Pedidos, uma vez que o campo DataDoPedido,
encontra-se nesta tabela.
UPDATE Pedidos INNER JOIN DetalhesdoPedido
ON Pedidos.NmeroDoPedido = DetalhesdoPedido.NmeroDoPedido
SET DetalhesdoPedido.PreoUnitrio = PreoUnitrio*1.2
WHERE (DetalhesdoPedido.PreoUnitrio>=20)
AND
(DetalhesdoPedido.NmeroDoPedido<10500)
AND
Year(DataDoPedido)=1995)
Temos diversos detalhes interessantes a observar nesta instruo SQL.
Primeiro um INNER JOIN relacionando as tabelas Pedidos e DetalhesdoPedido, atravs do campo
NmeroDoPedido. Isso mostra que perfeitamente possvel, utilizar um INNER JOIN dentro de uma
consulta de atualizao. Segundo, temos a utilizao da funo YEAR para extrair apenas o ano do
campo DataDoPedido e compar-lo com o critrio 1995.
Novamente a utilizao de operadores e funes, nos fornece uma grande flexibilidade em termos de
construo de nossas consultas.
A INSTRUO INSERT
A instruo INSERT utilizada para adicionar registros em uma tabela de um Banco de Dados. Por
exemplo, quando o usurio preenche os dados de um formulrio de cadastro e envia estes dados para
o Banco de Dados, podemos utilizar a instruo INSERT para inserir estes dados em uma tabela do
Banco de Dados.
Vamos analisar alguns exemplos.
Exemplo 1: Este exemplo cria um novo registro na tabela Funcionrios:
INSERT INTO Funcionrios (Nome, Sobrenome, Cargo)
VALUES (Paulo, Braga, Estagirio)
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
28 00CURSO COMPLETO
Esta instruo insere um registro na tabela Funcionrios com os seguintes dados:
Nome: Paulo
Sobrenome: Braga
Cargo: Estagirio
Exemplo 2: Este exemplo seleciona todos os estagirios de uma tabela Estagirios que tenham sido
contratados h mais de 30 dias e adiciona os registros selecionados tabela Funcionrios.
INSERT INTO Funcionrios
SELECT Estagirios.* FROM Estagirios
WHERE DataDaContratao < Date() - 30
Observe que utilizamos a funo DATE( ) para capturar a data do Sistema e subtramos 30, para obter
apenas os funcionrios contratados a mais do que 30 dias.
A INSTRUO DELETE
A instruo DELETE utilizada para excluir registros de um Banco de Dados. Vamos supor que voc
tenha desenvolvido uma aplicao Web para agenda eletrnica, onde o usurio pode cadastrar contatos,
endereos, telefones e compromissos. Podemos criar uma pgina ASP que permite ao usurio eliminar
dados que no sejam mais necessrios na agenda. Neste caso podemos fazer uso da instruo DELETE.
Vamos a um exemplo prtico.
Exemplo 1: Criar uma instruo SQL que elimine todos os pedidos da tabela Pedidos cujo PasDeDestino
seja a Alemanha
DELETE Pedidos.PasDeDestino
FROM Pedidos
WHERE Pedidos.PasDeDestino=Alemanha
A instruo to simples, que praticamente dispensa comentrios. A nica recomendao importante
que no devemos utilizar uma instruo DELETE, sem a utilizao de uma clusula WHERE. Utilizar
um DELETE sem uma clusula WHERE significa que estaremos eliminando todos os registros da tabela.
Neste item apresentamos uma breve introduo a linguagem SQL, que no Microsoft SQL Server
chamada de Transact-SQL. De maneira alguma vimos todas as instrues e comandos disponveis. Ao
longo deste livro, em diversos momentos, estaremos utilizando comandos da linguagem Transact-
SQL. Assim, aprenderemos detalhes e utilizaes mais avanadas desta linguagem.
CONCLUSO
Este captulo, perfeitamente, poderia ser o captulo inicial de um livro de Oracle, Sybase, DB2 ou outro
SGBDR qualquer. Os conceitos tericos apresentados neste captulo so necessrios ao entendimento e
utilizao de qualquer Sistema Gerenciador de Banco de Dados Relacional.
Para que possamos utilizar o Microsoft SQL Server, precisamos dominar os conceitos apresentados,
tais como:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
29 CURSO COMPLETO00
Modelo Relacional.
Tabelas (Entidades).
Campos (Atributos).
Chave Primria.
Relacionamentos: Um para Um, Um para Vrios e Vrios para Vrios.
Integridade Referencial: Atualizar em cascata e Excluir em cascata.
Regras de Normalizao: Primeira, Segunda e Terceira Forma Normal.
A importncia do projeto fsico do Banco de Dados.
Na seqncia deste captulo, apresentamos uma noo bsica da linguagem SQL (Transact-SQL no
caso do Microsoft SQL Server 2000).
Aprendemos a utilizar diversos elementos da linguagem, como por exemplo:
A instruo SELECT e as suas diversas clusulas
A instruo UPDATE
A instruo INSERT INTO
A instruo DELETE
O operador LIKE
As clusulas WHERE e ORDER BY
O operador IN
Os operadores AND e OR.
Agora que vimos a parte terica, estamos prontos para comear a trabalhar com o Microsoft SQL
Server 2000. Mas isso j assunto para o Captulo 2.
No siga para os prximos captulos sem ter entendido, completamente, os conceitos tericos apresentados neste captulo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
31 CURSO COMPLETO00
Captulo 2
FUNDAMENTOS DO MICROSOFT
SQL SERVER 2000
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
32 00CURSO COMPLETO
INTRODUO
Neste captulo aprenderemos sobre os seguintes tpicos:
Aplicaes do tipo Cliente/Servidor de duas camadas.
A evoluo para as aplicaes de trs ou mais camadas.
Qual o papel do SQL Server 2000 no desenvolvimento de aplicaes de duas ou mais camadas.
O que h de novo no SQL Server 2000.
As diferenas entre as verses do SQL Server para diferentes sistemas operacionais: Windows
9.x, Windows NT, Windows CE e Windows 2000.
Como instalar o SQL Server 2000.
O conceito de instncia e como criar vrias instncias do SQL Server 2000, no mesmo servidor.
Aprenderemos a verificar se a instalao do SQL Server 2000 foi finalizada com sucesso e quais
os servios disponveis.
Com os conceitos apresentados neste captulo, voc ter uma noo clara sobre o que e em que
situaes pode utilizar o SQL Server 2000.
Tambm aprenderemos sobre as formas de licenciamento do SQL Server 2000. Conhecer as opes de
licenciamento importante para que voc possa escolher a mais adequada, em termos de economia.
Outra idia que vamos procurar esclarecer sobre qual o papel de um Banco de Dados como o SQL
Server 2000 nas aplicaes empresariais desenvolvidas atualmente. Muitas vezes, temos a noo que o
Banco de Dados simplesmente cumpre funes tais como:
Armazenar os dados.
Fornecer mecanismos para garantir a integridade dos dados.
Fornecer mecanismos para a recuperao dos dados atravs de consultas.
Mecanismos de segurana para que no sejam feitos acessos no-autorizados aos dados.
Fornecer mecanismos de recuperao dos dados em caso de imprevistos.
Conforme poderemos constatar, ao longo de todo este livro, os SGBDR atuais fornecem uma lista de
funcionalidades muito maior do que a apresentada. Estaremos aprendendo a utilizar estas
funcionalidades nos vrios captulos deste livro.
Ao finalizar este captulo, voc dever estar com duas instncias do SQL Server 2000 instaladas e
funcionando. Nos exemplos deste livro estarei utilizando um computador Pentium II 450, com 128
MB de RAM e com as seguintes configuraes:
Windows 2000 Server em portugus, com Service Pack 1 instalado.
O Windows 2000 est instalado como DC Domain Controler de um domnio chamado
groza.com.
O nmero IP utilizado : 10.204.123.1.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
33 CURSO COMPLETO00
A mscara de sub-rede : 255.255.255.0.
O nome do servidor : servidor, com o nome completo incluindo o domnio: servidor.groza.com.
Para maiores informaes sobre Controladores de Domnio DC, configuraes do TCP-IP e configurao de um servidor com o
Windows 2000 Server, consulte o livro: Srie Curso Bsico & Rpido Microsoft Windows 2000 Server, 432 pginas, de minha autoria,
publicado pela editora Axcel Books do RJ (www.axcel.com.br).
Caso voc esteja utilizando um computador com nome, domnio ou configuraes de rede diferentes,
utilize os parmetros da sua configurao nos exerccios que forem apresentados. Por exemplo, se o
nome do seu computador for testesql, substitua o nome servidor pelo nome que voc est utilizando,
sempre que necessrio.
FUNDAMENTOS EM: MODELO DE APLICAES
PARA A ERA DO COMRCIO ELETRNICO
PR-REQUISITOS
Noes bsicas de Internet e do modelo relacional.
METODOLOGIA
Apresentao dos elementos que compem as necessidades de aplicativos empresariais e habilitados para a Internet.
Que estamos no meio de uma revoluo, todos sabem, e que esta revoluo marcada pelo Comrcio
Eletrnico, ou o chamado e-business, tambm todos sabem. Todas as revistas especializadas e meios de
comunicao, apresentam matrias, diariamente, sobre Comrcio Eletrnico. As possibilidades so inmeras,
tanto para as empresas, para os usurios, quanto para os profissionais envolvidos. O Comrcio Eletrnico
deixou de ser apenas uma previso em livros e revistas, e passou a ser uma realidade, presente no dia-a-dia
de todos ns. Com isso, uma nova gerao de sites est sendo criada, muito mais complexa do que as
anteriores, necessitando de ferramentas de desenvolvimento e gerenciamento, cada vez mais sofisticadas.
Por outro lado, as aplicaes empresariais, que do suporte s operaes dirias da empresa tambm
esto crescendo em complexidade. Para piorar a situao, estas aplicaes precisam ser desenvolvidas
em um prazo cada vez menor e com maior qualidade.
Como desenvolver as aplicaes internas, manter o site da empresa sempre atrativo e dar suporte s
operaes de Comrcio Eletrnico? Este o grande desafio das equipes de desenvolvimento, quer
sejam estas internas ou terceirizadas.
Grande parte do oramento de informtica das empresas est direcionado para atividades ligadas ao
Comrcio Eletrnico. Novas tecnologias surgem todos os dias, prometendo facilitar a criao de sites
para Comrcio Eletrnico e outras atividades envolvidas.
Muitas empresas possuem duas faces bem distintas. Uma a face para o pblico externo, isto , para os
seus clientes. Para estes a empresa mostra uma fachada de modernidade, facilidades de atendimento e
suporte, atravs de um site cuidadosamente projetado e implementado. Porm, para o pblico interno,
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
34 00CURSO COMPLETO
isto , para os funcionrios, a empresa oferece sistemas obsoletos, que no atendem s necessidades e
no facilitam em nada a vida dos funcionrios. O pior que a equipe interna, utilizando sistemas
obsoletos, precisa ter um desempenho compatvel com as expectativas dos clientes, os quais esperam
o melhor atendimento possvel por parte da empresa.
De maneira alguma vou afirmar que a soluo mgica que ir solucionar todos os problemas de
desenvolvimento a utilizao do Microsoft SQL Server 2000. O que vou procurar mostrar que o
papel do Banco de Dados de fundamental importncia para que tenhamos sistemas modernos e
funcionais. Dentro deste contexto, acredito que o Microsoft SQL Server, devido as suas funcionalidades,
uma excelente opo, tanto para o desenvolvimento de aplicativos que daro suporte ao Comrcio
Eletrnico, como para o desenvolvimento dos aplicativos corporativos.
O Comrcio Eletrnico pode acontecer de duas maneiras distintas:
B2B Business to Business: Acontece quando so feitas transaes comerciais entre duas
empresas. Pode ser uma montadora de automveis comprando peas de um fornecedor, ou
uma livraria encomendando livros de uma editora. Em termos de volume financeiro, o B2B
responsvel por um grande percentual do que comercializado via Internet.
B2C Business to Consumer: um cliente como eu ou voc, comprando um livro ou um CD
atravs da Internet. o cliente comprando atravs de uma loja virtual na Internet. Hoje existem
sites de Comrcio Eletrnico que vendem uma srie de coisas: livros, revistas, cosmticos, CDs,
roupa e at remdios e carros.
medida que aumenta o nmero de sites de Comrcio Eletrnico, aumenta tambm a concorrncia. Com
isso conquistar e manter clientes tm sido o grande desafio. No basta colocar um catlogo de produtos,
garantir a segurana e entregar a mercadoria no local correto e no prazo estipulado. Embora estas sejam
questes fundamentais, no so mais suficientes para garantir a fidelidade do cliente, pois diferentemente
do comrcio tradicional, no Comrcio Eletrnico, o concorrente est a apenas um clique de mouse.
Hoje, um dos grandes desafios conhecer o Cliente, saber identificar os seus hbitos e armazenar o maior
nmero de informaes sobre o mesmo, tal como o histrico de compras e pesquisas realizadas no catlogo
de produtos. De posse destas informaes, o site deve ser capaz de fazer ofertas personalizadas para o cliente.
Posso citar o meu caso como exemplo. H tempos que compro livros importados em um determinado
site. Ao acessar o site, aps me identificar, aparece um link: Sugestes para o Jlio. Vejam que at o
link j vem personalizado, isso atrai o cliente. como entrar no mercadinho da esquina e o seu Manoel
ir dizendo: Ol, seu Jlio, aquele queijo colonial que o Sr. gosta, chegou.
Ao clicar no link de sugestes, recebo uma listagem de livros. O mais interessante que na listagem,
realmente, esto os livros nos quais estou interessado. Que milagre este? No milagre nenhum,
acontece que desde a primeira compra, o site vem armazenando informaes sobre as minhas compras,
bem como sobre as pesquisas que fao no catlogo de livros. Com isso, foi possvel identificar minhas
preferncias e elaborar uma lista de sugestes mais personalizada. Quanto maior a quantidade de
informaes, mais precisa esta lista.
No fica difcil adivinhar quem o responsvel pelo armazenamento e recuperao deste gigantesco
volume de informaes, com as preferncias e hbitos de compra dos clientes? Evidentemente que
um Banco de Dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
35 CURSO COMPLETO00
Vejam que os sites de Comrcio Eletrnico esto tentando fazer o que o seu Manoel do mercadinho da
esquina faz h muitos anos. Esto tentando dar um tratamento personalizado para os seus clientes,
com o objetivo de mant-los satisfeitos. Clientes satisfeitos significam vendas e lucro para a empresa.
Conhecer as preferncias do cliente apenas um dos exemplos de aplicao a partir de dados obtidos
pelo site. Uma vez formada uma base de dados grande e confivel, muitas aplicaes podem ser construdas
sobre os dados obtidos. Por isso que, a maioria dos sites, mesmo os que fornecem servios gratuitos,
exigem que voc preencha um cadastro, antes de disponibilizar o acesso a servios e informaes. Com
os dados obtidos atravs do cadastro, a empresa est tentando montar a sua base de dados.
Vamos salientar um detalhe importante sobre o pargrafo anterior. Veja que o ponto-chave ter uma
base de dados grande e, principalmente, confivel. Mais uma vez o Banco de Dados desempenha um
papel central, garantindo a consistncia e segurana dos dados obtidos. Voc no gostaria que os dados
do seu cadastro no Banco, onde voc tem conta, fossem acessados por qualquer internauta, gostaria?
Vejam que os dados precisam ser obtidos e armazenados em um Banco de Dados. Depois a segurana
dos dados precisa ser garantida. J pensou se algum consegue invadir o site de uma empresa e obter
uma listagem de nmeros de cartes de crdito? Seria pssimo para a imagem e para as vendas desta
empresa. Alm da segurana, novas aplicaes esto sendo construdas para fazer uso destes dados,
com o objetivo no s de melhorar as vendas, mas tambm de melhorar as relaes com os clientes.
No basta que a empresa seja capaz de vender, para sobreviver, ela precisa continuar vendendo para
o cliente. Para continuar vendendo, isto , para fidelizar o cliente, a rea de atendimento ao cliente
de fundamental importncia. Se voc compra, por exemplo, um CD e o mesmo entregue fora do
prazo, voc reclama. Se a sua reclamao no for satisfatoriamente atendida, voc simplesmente deixa
de comprar desta empresa e procura outra empresa. Afinal, na Internet, o concorrente est a um clique
de mouse, conforme descrevemos antes.
Um dos assuntos, que mais discutido no momento, representado pela sigla CRM Customer Rela-
tionship Management. Traduzindo teramos: Gerenciamento das Relaes com o Cliente. CRM
representa um conjunto de solues de hardware e software, capazes de melhorar a relao das empresas
com os clientes, principalmente no atendimento a questes do cliente, quer seja suporte tcnico,
dvidas sobre novos produtos, etc.
Quem j no ligou para uma Central de Atendimento, e teve que contar a mesma histria uma dezena
de vezes. Voc liga, algum atende. Voc descreve o seu problema, a pessoa diz que no com ela e
passa para um outro setor. Um novo atendente e a mesma histria; voc passado para um outro setor.
Depois da dcima transferncia (contando que voc seja uma pessoa paciente, seno na terceira voc j
desliga o telefone), voc desliga irritado, sem ter solucionado o problema. Muito provavelmente, esta
empresa acaba de perder mais um cliente.
Melhorar o atendimento ao cliente ou, de uma maneira mais genrica, a relao dos clientes com a
empresa, o objetivo do CRM. Ao ligar para uma Central de Atendimento, o cliente identifica-se
atravs do seu Cdigo de Cliente, o sistema de CRM busca no Banco de Dados (olha o papel central do
Banco de Dados a de novo) todas as informaes sobre o cliente. Ele descreve o problema que
inserido no sistema. Caso o atendente no seja capaz de solucion-lo, a chamada transferida
diretamente para a pessoa capaz de solucionar o problema. Porm toda a descrio do problema,
tambm est acessvel para a pessoa que ir atender o Cliente (os dados foram passados pelo sistema de
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
36 00CURSO COMPLETO
CRM, quando da transferncia do chamado), com isso o Cliente no precisa repetir toda a histria.
atendido, soluciona o seu problema e fica satisfeito. Cliente satisfeito continua comprando.
A descrio do pargrafo anterior representa uma situao ideal. claro que os sistemas de CRM ainda
no so perfeitos. Porm novas tcnicas esto sendo introduzidas, com a possibilidade de atendimentos
atravs da Internet, acessando o site da empresa. Com a melhoria dos sistemas de telecomunicaes,
poderemos tornar realidade um atendimento de alta qualidade e conclusividade, atravs da Internet.
Por exemplo, o cliente est pesquisando o catlogo de produtos. Na pgina com os dados do produto,
existe um link Outras dvidas. Ao clicar neste link, o cliente entra numa seo de bate-papo com um
atendente da empresa. O cliente pode colocar as suas dvidas, as quais sero solucionadas em tempo
real. Assim, a probabilidade de que o pedido seja feito, bem maior. Alm disso as dvidas do cliente
podem ser armazenadas no Banco de Dados (novamente!) Quando uma dvida comear aparecer com
uma determinada freqncia, os dados que solucionam a dvida podem ser disponibilizados no catlogo.
Com isso, os prximos clientes que tiverem a mesma dvida, no precisaro do auxlio de um atendente.
Vejam que novamente estamos em um processo de aquisio de informaes, atravs do prprio site,
e utilizao destas informaes para melhorar a qualidade dos servios e produtos oferecidos. E me
permitam ser chato: onde armazenaremos estas informaes? Claro, no Banco de Dados.
No B2B tambm existem muitas questes a serem gerenciadas. Para entendermos a complexidade
destas situaes imagine o seguinte exemplo, ilustrado pela Figura 2.1:
Figura 2.1 A complexidade das questes envolvidas no B2B.
Temos uma rede de Concessionrias que presta servios de manuteno para uma determinada marca
de automveis. O objetivo ter um controle automatizado de estoque. Cada pea catalogada possui
um nvel mnimo de unidades em estoque. Quando este nvel mnimo atingido, automaticamente, o
Banco de Dados deve lanar um pedido para este item. O funcionamento do sistema o seguinte:
O Cliente vai na concessionria para comprar uma determinada pea. O atendente efetua a venda, e o
estoque atualizado. Se a pea atingir o nvel mnimo, previamente estabelecido, um pedido deve ser,
Internet
Servidor
Servidor
Servidor
Concessionrias
Servidor
Servidor
Servidor
Fornecedores
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
37 CURSO COMPLETO00
automaticamente gerado. Este pedido contm informaes sobre a concessionria, bem como sobre as
peas que esto sendo encomendadas.
As informaes sobre o pedido so criptografadas, para garantir a segurana, e o pedido enviado,
atravs da Internet, para o fornecedor da pea. Dentro de um prazo preestabelecido, a pea entregue,
evitando que a mesma falte no estoque.
Observe que, neste caso, existe uma troca de informaes entre as Concessionrias e os Fornecedores.
Para que possa haver esta troca de informaes, os sistemas das duas empresas devem ser capazes de
trocar dados em um formato comum. Com isso as empresas sero capazes de fazer negcios atravs da
Internet. No Captulo 12, falaremos um pouco sobre o XML eXtensible Markup Language, que pode
ser utilizada para a troca de informaes em um formato padro.
Poderamos introduzir mais algumas questes, que complicariam um pouco mais a infra-estrutura
necessria para a realizao do B2B. Por exemplo, ao invs de comprar uma determinada pea, sempre
do mesmo fornecedor, pode ser que o sistema seja capaz de enviar o pedido para vrios fornecedores,
e selecionar aquele que fizer a melhor oferta, tanto em termos de preo quanto de prazo de entrega.
Neste caso, a concessionria lana o pedido no seu site e aguarda as propostas dos fornecedores. Aps
recebidas as respostas, uma delas selecionada. Este parece ser um sistema de leilo ao contrrio, ou
seja, o comprador anuncia que est precisando de um determinado produto, e os fornecedores esforam-
se para fazer a melhor oferta. Esta forma de fazer compras conhecida como e-procurement. Em
determinados casos, a lista de propostas est disponvel para todos os fornecedores, isto , se um
fornecedor A fez uma proposta, depois ao consultar a lista, viu que um fornecedor B fez uma
proposta melhor do que a sua; o fornecedor A pode alterar a sua proposta, dentro de um perodo de
tempo estipulado pelo comprador, no nosso caso, a concessionria.
Vejam que mesmo no sistema de B2B, a lgica tem sido revertida em favor do Cliente, isto , os fornecedores
que disputam o cliente, atravs de boas ofertas, preos competitivos e prazos adequados de entrega.
Porm, a criao de sistemas deste tipo uma tarefa complexa. A todo o momento temos acesso a
informaes do Bancos de Dados, questes de segurana no acesso s informaes, alm de uma lgica
bastante complexa. Em muitos aspectos o Banco de Dados pode trazer facilidades para o processo de
desenvolvimento de aplicaes to complexas como as aqui descritas.
Mais uma vez reforo que o Microsoft SQL Server 2000 nos oferece uma srie de recursos interessantes
para a criao de aplicaes de alta complexidade.
Vamos introduzir mais alguns detalhes no nosso exemplo. Pode ser que, alm de fazer o pedido, a
concessionria, uma vez aprovada a compra, deva fazer o pagamento do mesmo, atravs de uma
transao on-line. O pagamento pode ser feito, por exemplo, atravs de uma transferncia da conta
corrente da concessionria para a conta corrente do fornecedor. Neste ponto, precisamos introduzir o
conceito de transao, o qual ser bastante detalhado em outros captulos deste livro.
Uma transao, de uma maneira bastante simples, um conjunto de operaes sobre os dados, que
deve acontecer com um todo, ou seja, todas as operaes contidas na transao devem ser finalizadas
com sucesso, ou nenhuma delas deve ser realizada. Caso uma das operaes, contida na transao,
falhe, as operaes ainda pendentes devem ser canceladas; e as operaes j realizadas devem ser
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
38 00CURSO COMPLETO
revertidas. Com isso garantimos que a transao acontea como um todo, ou que nenhuma das suas
operaes seja realizada.
Para entender, na prtica, o conceito de transaes, vamos voltar ao exemplo anterior. Ao efetuar um
pagamento, o sistema deve transferir valores da conta corrente da concessionria para a do fornecedor.
Estas duas aes devem acontecer no contexto de uma transao, conforme indicado abaixo:
Incio da Transao
Ao 1: Debita o valor da conta corrente da Concessionria.
Ao 2: Credita o valor na conta corrente do Fornecedor.
Final da Transao.
A primeira ao efetua o dbito na conta corrente da Concessionria. Vamos supor que a Ao 1 ocorra
com sucesso, porm na hora de fazer o crdito na conta corrente do Fornecedor, ocorra um problema,
o que devemos fazer? O valor deve ser estornado para a conta da Concessionria, ou seja, a Ao 1 deve
ser revertida, uma vez que nem todas as aes dentro da transao puderem ser concludas com xito.
Vejam a importncia do conceito de transao pois, neste caso, se no usssemos transao, o valor
seria debitado da conta corrente da Concessionria, sem ser creditado na conta corrente do fornecedor.
FUNDAMENTOS EM: ARQUITETURA DE APLICAES
PR-REQUISITOS
Conhecimento da complexidade no desenvolvimento e manuteno de aplicaes para a Internet.
METODOLOGIA
Apresentao dos modelos e comparao entre os mesmos.
Embora utilizamos o exemplo de Comrcio Eletrnico, CRM, e-procurement, etc., como situaes
onde o Banco de Dados desempenha um papel fundamental, hoje em dia, com o aumento da
complexidade das redes de computadores baseadas em PCs, existe uma tendncia bastante acentuada
em favor do desenvolvimento de aplicaes que seguem o modelo Web. So aplicaes que so acessadas
atravs de um browser. Neste tpico, iremos falar um pouco sobre aplicaes Cliente/Servidor tradicionais
e os problemas deste tipo de modelo. Falaremos sobre aplicaes de duas, trs ou n camadas, e as
vantagens destas ltimas em relao ao modelo Cliente/Servidor tradicional.
A COMPLEXIDADE DE GERENCIAMENTO DO MODELO
CLIENTE/SERVIDOR E APLICAES DE DUAS CAMADAS
O modelo Cliente/Servidor foi criado tendo como base a descentralizao dos dados e recursos de
processamento, em oposio ao modelo centralizado utilizado na poca em que o Mainframe dominava
absoluto. No modelo Cliente/Servidor, conforme indicado pela Figura 2.2, em uma rede de
computadores, existem uma ou mais mquinas que atuam como Servidores, disponibilizando recursos
para as demais mquinas, as quais atuam como Clientes.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
39 CURSO COMPLETO00
Figura 2.2 O Modelo Cliente/Servidor tradicional.
Conforme pode ser visto na Figura 2.2, temos Servidores para Arquivos, Banco de Dados e outras
funes, tais como: servidores de Impresso, servidores Web, etc. Estas redes, tipicamente, so formadas
por servidores, os quais so equipamentos com um maior poder de processamento e armazenamento
do que os clientes, os quais, na maioria dos casos, so microcomputadores PCs ligados em rede.
APLICAES EM DUAS CAMADAS
No incio da utilizao do modelo Cliente/Servidor, as aplicaes foram desenvolvidas utilizando-se
um modelo de desenvolvimento em duas camadas. Neste modelo, um programa, normalmente
desenvolvido em um ambiente de desenvolvimento, como o Visual Basic, Delphi ou Power Builder,
instalado em cada Cliente. Este programa acessa dados em um servidor de Banco de Dados, conforme
ilustrado na Figura 2.3:
Figura 2.3 O Modelo de desenvolvimento em duas camadas.
No modelo de duas camadas, temos um programa que instalado no Cliente, e que faz acesso ao
Banco de Dados residente no servidor de Banco de Dados. Na maioria dos casos, a mquina do cliente
um PC rodando Windows, e a aplicao Cliente desenvolvida utilizando-se um dos ambientes
Cliente Cliente Cliente Cliente Cliente
Servidor de Arquivos Banco de Dados
Outros Servidores
Cliente Cliente Cliente Cliente
Banco de Dados
Cliente
No modelo de duas camadas,
toda a Lgica do Negcio
fica no Cliente. Quando o
programa Cliente instalado,
so instaladas todas as regras
de acesso ao Banco de
Dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
40 00CURSO COMPLETO
conhecidos, conforme citado anteriormente. Sendo a aplicao Cliente um programa para Windows
(na grande maioria dos casos), a mesma deve ser instalada em cada um dos computadores da rede, que
faro uso da aplicao. o processo de instalao normal, para qualquer aplicao Windows. No
modelo de duas camadas, a aplicao Cliente responsvel pelas seguintes funes:
Apresentao: O cdigo que gera a interface visvel do programa faz parte da aplicao Cliente.
Todos os formulrios, menus e demais elementos visuais esto contidos no cdigo da aplicao
Cliente. Caso sejam necessrias alteraes na interface do programa, faz-se necessria a gerao
de uma nova verso do programa, e todos os computadores que possuem a verso anterior,
devem receber a nova verso, para que o usurio possa ter acesso s alteraes da interface.
Ento comeam a surgir os problemas no modelo de duas camadas: uma simples alterao de
interface suficiente para gerar a necessidade de atualizar a aplicao, em centenas ou milhares
de computadores. O gerenciamento desta tarefa algo extremamente complexo.
Lgica do Negcio: As regras, que definem a maneira como os dados sero acessados e processados,
so conhecidas como Lgica do Negcio. Fazem parte das Regras do Negcio, desde funes
simples de validao da entrada de dados, como o clculo do dgito verificador de um CPF, at
funes mais complexas, como descontos escalonados para os maiores clientes, de acordo com o
volume da compra. Questes relativas legislao fiscal e escrita contbil, tambm fazem parte
da Lgica do Negcio. Por exemplo, um programa para gerncia de Recursos Humanos,
desenvolvido para a legislao dos EUA, no pode ser utilizado, sem modificaes, por uma
empresa brasileira. Isso acontece porque a legislao dos EUA diferente da brasileira. Em sntese,
as regras para o sistema de Recursos Humanos so diferentes. Como alteraes nas Regras do
Negcio so bastante freqentes, ainda mais com as repetidas mudanas na legislao do nosso
pas, faz-se necessria a gerao de uma nova verso do programa, cada vez que uma determinada
regra muda, ou quando regras forem acrescentadas ou retiradas. Desta forma, todos os
computadores que possuem a verso anterior devem receber a nova verso, para que o usurio
possa ter acesso s alteraes. Agora temos mais problemas no modelo de duas camadas: qualquer
alterao nas Regras do Negcio suficiente para gerar a necessidade de atualizar a aplicao, em
centenas ou milhares de computadores. O que j era complicado, piorou um pouco mais.
Por isso, o modelo de duas camadas demonstrou-se de difcil manuteno e gerenciamento, alm de
apresentar um TCO Total Cost Ownership (Custo Total de Propriedade) elevado.
A outra camada, no modelo de duas camadas, vem a ser o Banco de Dados, que fica armazenado no
servidor de Banco de Dados. Uma aplicao desenvolvida em Visual Basic, a qual acessa um Banco de
Dados em um servidor Microsoft SQL Server 2000, um tpico exemplo de uma aplicao em duas camadas.
Em busca de solues para os problemas do modelo de duas camadas, que surgiu a proposta do
modelo de trs camadas, conforme analisaremos a seguir.
APLICAES EM TRS CAMADAS
Como uma evoluo do modelo de duas camadas, surge o de trs camadas. A idia bsica do modelo de
trs camadas retirar as Regras do Negcio do cliente e centraliz-las em um determinado ponto, o qual
chamado de servidor de Aplicaes. O acesso ao Banco de Dados feito atravs das regras contidas no
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
41 CURSO COMPLETO00
servidor de Aplicaes. Ao centralizar as Regras do Negcio em um nico ponto, fica muito mais fcil a
atualizao das mesmas. A Figura 2.4 nos d uma idia geral do modelo em trs camadas:
Figura 2.4 O modelo de desenvolvimento em trs camadas.
Todo o acesso do cliente ao Banco de Dados feito de acordo com as regras contidas no Servidor de
Aplicaes. O cliente no tem acesso ao Banco de Dados, sem antes passar pelo servidor de Aplicaes.
Com isso as trs camadas so as seguintes:
Apresentao: Continua no programa instalado no cliente. Alteraes na interface do programa
geram a necessidade de atualizar a aplicao em todos os computadores, onde a mesma est
sendo utilizada. Porm cabe ressaltar que alteraes na interface so menos freqentes do que
alteraes nas Regras do Negcio.
Lgica: So as Regras do Negcio, as quais determinam de que maneira os dados sero utilizados.
Esta camada foi deslocada para o servidor de Aplicaes. Desta maneira, quando uma Regra do
Negcio for alterada, basta atualiz-la no servidor de Aplicaes. Aps a atualizao, todos os
usurios passaro a ter acesso a nova verso, sem que seja necessrio reinstalar o programa em
cada um dos computadores da rede. Vejam que, ao centralizar as Regras do Negcio em um
servidor de Aplicaes, estamos facilitando a tarefa de manter a aplicao atualizada. As coisas
esto comeando a melhorar.
Dados: Nesta camada temos o servidor de Banco de Dados, no qual reside toda a informao
necessria para o funcionamento da aplicao. Cabe reforar, que os dados somente so acessados
atravs do servidor de Aplicao, e no diretamente pela aplicao Cliente.
Com a introduo da camada de Lgica, resolvemos o problema de termos que atualizar a aplicao,
em centenas ou milhares de computadores, cada vez que uma Regra do Negcio for alterada. Porm
continuamos com o problema de atualizao da interface da aplicao, cada vez que sejam necessrias
mudanas na interface. Por isso que surgiram os modelos de n-camadas.
No prximo tpico, iremos falar um pouco sobre o modelo de quatro camadas. Ao longo deste livro
falaremos um pouco mais sobre transaes e outros conceitos envolvidos com o desenvolvimento de
aplicaes de n-camadas.
Cliente Cliente Cliente Cliente
Servidor de Aplicaes
Cliente
No modelo em trs camadas,
toda a Lgica do Negcio
fica no servidor de
Aplicaes. Com isso, a
atualizao das Regras de
Negcio fica mais fcil.
Servidor de Banco
de Dados
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
42 00CURSO COMPLETO
APLICAES EM QUATRO CAMADAS
Como uma evoluo do modelo de trs camadas, surge o modelo de quatro camadas. A idia bsica do
modelo de quatro camadas retirar a apresentao do Cliente e centraliz-las em um determinado
ponto, o qual na maioria dos casos um servidor Web. Com isso, o prprio Cliente deixa de existir
como um programa que precisa ser instalado em cada computador da rede. O acesso aplicao feito
atravs de um navegador, como o Internet Explorer ou o Netscape Navigator. A Figura 2.5 nos d uma
idia geral do modelo em quatro camadas.
Figura 2.5 O modelo de desenvolvimento em quatro camadas.
Para acessar a aplicao, o cliente acessa o endereo da aplicao, utilizando o seu navegador. Por
exemplo http://www.empresa-xy.com/sistemas/rh.aspx. Todo o acesso do cliente ao Banco de Dados
feito de acordo com as regras contidas no servidor de Aplicaes. O cliente no tem acesso ao Banco de
Dados, sem antes passar pelo servidor de Aplicaes. Com isso as quatro camadas so as seguintes:
Cliente: Neste caso, o Cliente o Navegador utilizado pelo usurio, quer seja o Internet Ex-
plorer, Netscape Navigator, ou outro navegador qualquer.
Apresentao: Passa para o servidor Web. A interface pode ser composta de pginas HTML,
ASP, PHP ou qualquer outra tecnologia capaz de gerar contedo para o navegador. Com isso,
alteraes na interface da aplicao so feitas diretamente no servidor Web, sendo que estas
alteraes estaro, automaticamente, disponveis para todos os Clientes. Com este modelo
no existe a necessidade de reinstalar a aplicao em todos os computadores da rede. Fica
muito mais fcil garantir que todos esto tendo acesso verso mais atualizada da aplicao. A
nica coisa que o cliente precisa ter instalado na sua mquina o navegador.
Lgica: So as Regras do Negcio, as quais determinam de que maneira os dados sero utilizados.
Esta camada est no servidor de Aplicaes. Desta maneira, quando uma Regra do Negcio for
alterada, basta atualiz-la no servidor de Aplicaes. Aps a atualizao, todos os usurios
passaro a ter acesso nova verso, sem que seja necessrio reinstalar o programa em cada um
Cliente Cliente Cliente Cliente
Servidor de Aplicaes
Cliente
Servidor de Banco
de Dados
Servidor Web
O Cliente s precisa de um Navegador para ter acesso
aplicao.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
43 CURSO COMPLETO00
dos computadores da rede. Vejam que, ao centralizar as Regras do Negcio em um servidor de
Aplicaes, estamos facilitando a tarefa de manter a aplicao atualizada.
Dados: Nesta camada, temos o servidor de Banco de Dados, no qual reside toda a informao
necessria para o funcionamento da aplicao.
Com o deslocamento da camada de apresentao para um servidor Web, resolvemos o problema de
termos que atualizar a aplicao, em centenas ou milhares de computadores, cada vez que uma a
interface precisar de alteraes. Neste ponto, a atualizao das aplicaes uma tarefa mais gerencivel,
muito diferente do que acontecia no caso do modelo em duas camadas.
Os servidores de Aplicao, Web e Banco de Dados no precisam, necessariamente, ser servidores
separados, isto , uma mquina para fazer o papel de cada um dos servidores. O conceito de servidor de
Aplicao, servidor Web ou servidor de Banco de Dados um conceito relacionado com a funo que
o servidor desempenha. Podemos ter, em um mesmo equipamento, estes diferentes servidores. Claro
que questes de desempenho devem ser levadas em considerao.
Tambm podemos ter a funcionalidade do servidor de Aplicaes distribuda atravs de vrios servidores,
com cada servidor tendo alguns componentes que formam parte das funcionalidades da aplicao.
Este modelo onde temos componentes em diversos equipamentos, conhecido como Modelo de
Aplicaes Distribudas. Tambm podemos colocar os componentes em mais do que um servidor para
obtermos um melhor desempenho, ou redundncia, no caso de um servidor falhar.
QUESTES A CONSIDERARMOS NOS MODELOS DE TRS OU MAIS CAMADAS
Muitas so as vantagens dos modelos de trs ou mais camadas, em relao a facilidade de gerenciamento
e atualizao das aplicaes. Porm consideraes devem ser feitas em relao a desempenho e
dimensionamento dos equipamentos que atuaro como servidores.
A partir do momento que estamos deslocando funcionalidades (tipicamente lgica e apresentao) do
cliente para um ou mais servidores, tambm estamos deslocando capacidade de processamento em
termos de memria RAM e processador. Funes que antes eram executadas pelos clientes, utilizando
memria e processador da estao Cliente, agora foram deslocados para os servidores, consumindo
memria e processador do servidor. Desta forma, um dos fatores-chave o correto dimensionamento
dos equipamentos servidores.
Para fazer o dimensionamento dos servidores, precisamos conhecer o nmero de usurios que iro
acessar a aplicao simultaneamente, o nvel de exigncia de cada usurio, os recursos necessrios
pelos software do servidor, dentre outros. Para determinar o nvel de recursos necessrios em cada um
dos servidores, voc precisa fazer um estudo bem detalhado, de tal forma que o servidor no fique
subdimensionado. Quando o servidor no est corretamente dimensionado, a tendncia que o acesso
aplicao fique bastante lento, o que causa insatisfao entre os usurios.
Observe que, quer seja no modelo de duas camadas, quer seja em outros modelos, sempre temos a
presena de um Banco de Dados. Devido a importncia deste elemento chave, que precisamos da
figura do DBA Database Administrator. O DBA a pessoa responsvel por manter o Banco de Dados
em funcionamento e proceder as alteraes necessrias relativas segurana e manuteno do Banco.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
44 00CURSO COMPLETO
O contedo deste livro, at o Captulo 8 relacionado com atividades que devem ser desempenhadas
pelo DBA. A partir do Captulo 9, estaremos abordando tpicos mais relacionados com o
desenvolvimento de aplicaes com o Microsoft SQL Server 2000.
FUNDAMENTOS EM: AS PRINCIPAIS NOVIDADES E
MELHORAMENTOS DO MICROSOFT SQL SERVER 2000
PR-REQUISITOS
Conhecimentos do modelo relacional e de arquitetura de aplicaes.
METODOLOGIA
Apresentao das principais novidades do SQL Server 2000.
Neste item, veremos as melhorias introduzidas no SQL Server 2000, em relao s verses anteriores.
Voc pode utilizar esta seo como uma referncia para analisar se vale a pena migrar os seus sistemas
para a nova verso do Microsft SQL Server. Estaremos dividindo as novidades em categorias, para que
possamos analisar as novas funcionalidades de uma maneira mais estruturada.
NOVIDADES E MELHORIAS DO MODELO RELACIONAL
Suporte ao padro XML: A mquina de dados que d suporte ao modelo relacional, possui a
capacidade de retornar dados no formato de documentos XML eXtensible Markup Language.
Por exemplo, podemos utilizar uma instruo SELECT em conjunto com a clusula FOR XML,
para retornar o resultado de uma consulta, no formato de um documento XML. Tambm
podemos utilizar XML para inserir, atualizar ou excluir dados. A possibilidade de trabalhar
com os dados diretamente no formato XML facilita a integrao com outros sistemas que
tambm tenham esta capacidade. Conforme descrito anteriormente, o XML um padro que
vem tomando conta do mercado. A maioria dos Bancos de Dados vem lanando verses que
permitem trabalhar com este padro. No Captulo 12, teremos uma introduo utilizao do
XML com o Microsoft SQL Server 2000.
Federao de Servidores SQL Server: Podemos distribuir os dados de uma tabela entre diversos
servidores SQL. Este procedimento conhecido como particionamento horizontal. Por exemplo,
podemos ter uma tabela de vendas particionada entre os servidores de diversos escritrios, com
cada servidor contendo os registros de vendas da sua regio. Tambm podemos utilizar este
particionamento para fazer com que vrios servidores SQL Server trabalhem conjuntamente para
atender a demanda de sites Web com grande volume de acesso. Do ponto de vista do usurio, todo
o conjunto visto como sendo nico, ou seja, se o usurio fizer uma consulta que retorna dados
contidos em mais do que um servidor, os dados so fornecidos para o usurio como um conjunto
nico. O SQL Server o responsvel por localizar os dados, onde quer que os mesmos estejam.
Funes definidas pelo usurio: Agora existe a possibilidade do programador criar as suas prprias
funes, em adio s funes j fornecidas pela linguagem Transact-SQL (T-SQL). Estas funes
podem retornar um valor simples, ou at mesmo uma tabela.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
45 CURSO COMPLETO00
Criao de ndices em uma View: Uma View nada mais do que uma consulta. Agora podemos
fazer com que o resultado de uma View seja armazenado e indexado no Banco de Dados. Este
procedimento de grande utilidade para agilizar o processamento de consultas que so muito
utilizadas. Desta forma, os dados resultantes da consulta podem ser retornados de uma maneira
muito mais rpida.
Novos tipos de dados: Foram introduzidos trs novos tipos de dados, conforme descrito a seguir:
bigint: Pode conter dados inteiros de at 8 bytes.
sql_variant: Pode conter dados de diferentes tipos. semelhante ao tipo Variant do VBScript.
table: Este tipo permite que a aplicao armazene um conjunto de registros temporariamente,
para utilizao posterior. Este tipo pode ser utilizado por variveis e como um valor de re-
torno de uma funo definida pelo usurio, conforme descrito anteriormente.
Controle do comportamento da Integridade Referencial: Existem dois novos tipos de Constraints
(ON DELETE e ON UPDATE) que permitem que faamos o controle da Integridade Referencial.
Ao excluirmos um registro em uma tabela que o lado Um do relacionamento, podemos definir
se os registros correspondentes, do lado Vrios do relacionamento, devem ou no ser excludos.
Esta ao conhecida como Propagar Excluso em Cascata, conforme descrito no Captulo 1.
Ao alterarmos um registro em uma tabela, que o lado Um do relacionamento, podemos definir
se os registros correspondentes, do lado Vrios do relacionamento, devem ou no ser alterados.
Esta ao conhecida como Propagar Alteraes em Cascata, conforme descrito no Captulo 1.
Melhorias no processo conhecido por Collations: O Microsoft SQL Server, nas verses
anteriores, ao ser instalado precisava definir opes para Sort Order e Code Page. Estas
opes definem a maneira como os dados sero comparados em uma ordenao de resultados
e quais os caracteres vlidos. Por exemplo, se utilizarmos um valor de Code Page para os EUA
poderemos ter problemas com os caracteres acentuados, tpicos da nossa Lngua Portuguesa. O
inconveniente nas verses anteriores que estes valores eram definidos no servidor, isto ,
todos os Bancos de Dados de um determinado servidor SQL deveriam utilizar a mesma Sort
Order e a mesma Code Page. O SQL Server 2000 substitui estes dois parmetros com um
mecanismo conhecido por Collations. Alm disso, podemos ter diferentes Collations para
diferentes Bancos de Dados de um mesmo servidor, ou at mesmo para diferentes colunas
dentro de uma tabela. Podemos inclusive alterar a Collation de um Banco de Dados, tudo isso
sem ter que reinstalar o SQL Server, como acontecia em verses anteriores.
De uma maneira resumida, podemos dizer que uma Collation define a maneira como sero armazenados
os caracteres de texto no Banco de Dados e como os mesmos sero comparados para efeito de ordenaes.
No SQL Server 2000, temos diversas opes de Collation disponveis.
Mltiplas instncias do SQL Server: Quando desenvolvemos um aplicativo que acessa dados de
um servidor SQL, a aplicao precisa de informaes para poder acessar o servidor SQL Server.
Nas verses anteriores utilizvamos o nome do servidor. Por exemplo: SERVIDOR1, DBSP01,
WEBSERVER, etc. At a verso 7.0 do SQL Server, somente poderamos ter uma instncia do
Servidor SQL carregada na memria. Na prtica isto significa que qualquer Banco de Dados
que esteja no servidor, ser acessado atravs do nome do servidor. No SQL Server 2000, podemos
ter mltiplas instncias do Servidor SQL, carregadas na memria. Na prtica como se tivssemos
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
46 00CURSO COMPLETO
vrios servidores em um s. Para que as aplicaes possam acessar uma instncia especfica,
precisamos informar o nome do servidor SQL, seguido de uma barra invertida e o nome da
instncia onde est o Banco de Dados que queremos acessar. Vamos considerar um servidor
chamado DBSP01, onde temos duas instncias do Microsoft SQL Server instaladas, as quais so
chamadas de RECHUM e FINAN, respectivamente. Para acessar cada uma das instncias, a
aplicao deve utilizar a seguinte nomenclatura:
DBSP01\RECHUM
DBSP01\FINAN
Ainda neste captulo aprenderemos a criar mltiplas instncias do SQL Server no mesmo computador.
Melhorias na criao de ndices: A criao de ndices melhora o desempenho das consultas. No
SQL Server 2000 foram introduzidas diversas melhorias na criao e gerenciamento de ndices,
como por exemplo a possibilidade da criao de ndices em campos calculados.
Suporte para at 64 GB de memria RAM: Com a utilizao do Microsoft SQL Server 2000
Enterprise Edition em conjunto com o Microsoft Windows 2000 Advanced Windows Exten-
sion (AWE) API podemos ter suporte para at 64 GB memria (RAM) em um nico servidor.
Melhoria na execuo de consultas distribudas: Uma consulta distribuda pode acessar dados
de diversos servidores. O Microsoft SQL Server 2000 fornece recursos que facilitam a criao de
consultas distribudas e melhoram o desempenho das mesmas.
Suporte ao protocolo Kerberos, o qual tambm utilizado pelo Windows 2000 Server como
protocolo de autenticao.
Novas opes para Backup e Restore dos Bancos de Dados foram introduzidas: Agora podemos
restaurar um Banco de Dados a uma situao determinada no tempo, por exemplo tera-feira, s
11 h da manh, com base em indicaes gravadas nos arquivos de Log. Veremos mais detalhes
sobre arquivos de Log e restaurao de informaes nos demais captulos deste livro. O usurio
responsvel pelo Backup pode definir uma senha para uma determinada mdia ou para um
conjunto de vrios backups, para evitar o acesso de pessoas no autorizadas aos dados do Backup.
NOVIDADES E MELHORIAS NAS FERRAMENTAS GRFICAS DE ADMINISTRAO
Deslocamento ou aplicao dos Log de Transaes em outro servidor: O Log de Transaes possui
uma cpia de todas as operaes feitas no Banco de Dados. Podemos configurar o servidor SQL
Server 2000 para periodicamente aplicar o Log de transaes em um servidor de reserva. Ao
aplicarmos o Log de transaes no outro servidor, estamos mantendo os dois servidores como
uma cpia idntica dos dados. Caso o servidor original tenha problemas, podemos utilizar o
servidor de reserva. Aprenderemos maiores detalhes sobre o Log de Transaes, no Captulo 5.
Melhorias no SQL Profiler: O SQL Profiler pode ser utilizado para capturar toda a atividade que
est sendo executada em um servidor SQL. Podemos analisar os dados capturados para, dentre
outras coisas, verificar se o desempenho est satisfatrio, se no existem usurios tentando
fazer acessos no-autorizados, etc. Novas opes para auditoria de segurana foram introduzidas,
o que permite fazer uma anlise at o nvel de segurana conhecido como C2, o qual um
padro definido pelo governo americano e amplamente aceito pela indstria de informtica.
O Windows NT um Sistema Operacional que atende os padres do nvel C2 de segurana.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
47 CURSO COMPLETO00
Melhorias no SQL Query Analyzer: O SQL Query Analyzer uma ferramenta que permite que
comandos T-SQL sejam executados diretamente no Banco de Dados e os resultados sejam
exibidos no prprio Query Analyzer. Por exemplo, podemos executar uma instruo SELECT e
observar os registros retornados pela instruo, no prprio Query Analyzer. No SQL Server
2000, temos disposio um Visualizador de Objetos, o qual permite, de maneira grfica, que
verifiquemos quais as instncias do SQL disponveis em um servidor, quais os Bancos de Dados
disponveis em cada instncia, bem como quais as tabelas disponveis em cada Banco de Dados.
A utilizao deste visualizador facilita a criao dos comandos. O Visualizador de Objetos
tambm suporta a gerao automtica de Scripts. Outra melhoria a incluso de um Store
Procedure Debugguer, que facilita a localizao de erros em Store Procedures. Aprenderemos
a criar e a utilizar Store Procedures no Captulo 10.
Assistente para cpia de banco de dados Copy Database Wizard: Podemos utilizar este assistente
para copiar um Banco de Dados da verso 7.0 do SQL Server para o SQL Server 2000. Tambm
podemos utiliz-lo para copiar Bancos de Dados entre duas instncias do SQL Server 2000.
NOVIDADES E MELHORIAS NA REPLICAO DE DADOS
Diversas melhorias foram introduzidas no sistema de Replicao do SQL Server 2000. Teremos um
captulo inteiro para tratar de replicao Captulo 8.
NOVIDADES E MELHORIAS NO SERVIO DTS DATA TRANSFORMATION SERVICES
O Servio DTS possibilita, por exemplo, que seja desenvolvida uma aplicao que acesse dados de um
Mainframe e transforme estes dados utilizando um Script. A mesma aplicao pode utilizar dados de
uma planilha do Excel e combinar estes dados com os obtidos do Mainframe, para obter os resultados
desejados. Em resumo, com a utilizao do DTS, podemos efetuar operaes sobre dados de variadas
fontes, desde do Mainframe, passando por Bancos de Dados Relacionais e dados no formato XML, at
dados em arquivos de planilhas eletrnicas ou arquivos de texto com formatos definidos. Toda a
funcionalidade do DTS definida atravs da criao de pacotes. Falaremos mais sobre DTS nos demais
captulos deste livro.
No SQL Server 2000, temos as seguintes melhorias no DTS:
Novo conjunto de tarefas padronizadas: Com a utilizao destas tarefas podemos executar
pacotes de operaes de maneira assncrona, construir pacotes que enviam mensagens para
outros pacotes, construir pacotes que executam outros pacotes, colocar no contexto de uma
transao a execuo de vrios pacotes, importar dados para a Internet e para sites de FTP (File
Transfer Protocol).
Informaes sobre a execuo de cada pacote do DTS so salvas nos logs do SQL Server,
permitindo que seja mantido todo o histrico de execuo de cada pacote.
Podemos salvar um pacote do DTS como um arquivo do Microsoft Visual Basic. Desta maneira
podemos incorporar as funcionalidades de um pacote do DTS como parte de um programa
desenvolvido em Visual Basic.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
48 00CURSO COMPLETO
Utilizao de consultas parametrizadas como parte de uma tarefa de transformao de dados
de um pacote do DTS. Isso facilita a criao de pacotes mais flexveis que podem ter diferentes
comportamentos com base no valor dos parmetros passados para a consulta parametrizada.
Podemos utilizar variveis globais para passar informaes entre pacotes do DTS. Desta forma
os resultados obtidos por um pacote DTS podem ser passados, como parmetros de entrada,
para a execuo de outro pacote DTS.
NOVIDADES E MELHORIAS NA DOCUMENTAO DO SQL SERVER
A seguir listamos as vrias melhorias que foram introduzidas na documentao do SQL Server 2000. A
documentao conhecida por Books OnLine. Aps instalado o SQL Server 2000, a documentao pode
ser acessada atravs da seguinte opo: Iniciar -> Programas -> Microsoft SQL Server -> Books OnLine.
Na Figura 2.6, temos um exemplo da tela inicial da documentao do SQL Server 2000. Nos demais
captulos deste livro, estaremos utilizando a documentao do SQL Server 2000 em diversos momentos.
Figura 2.6 A documentao do SQL Server 2000 Books OnLine.
Principais melhoria na documentao:
Integrao da tecla F1 com a documentao. Por exemplo, se voc esta escrevendo um comando
T-SQL e est em dvida sobre uma instruo, basta colocar o cursor na instruo e pressionar
F1. Ser exibida a documentao relativa instruo selecionada.
O Books OnLine permite que voc defina subconjuntos da documentao. Por exemplo, se voc
for um DBA pode no estar interessado na documentao sobre desenvolvimento de aplicaes
com o SQL Server. Desta forma poder fazer com que somente seja exibida, no Books OnLine, a
documentao relativa a administrao do SQL Server 2000. Vamos a um exemplo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
49 CURSO COMPLETO00
Para definir que seja exibida somente a documentao de administrao, faa o seguinte:
1. Abra o Books OnLine: Iniciar -> Programas -> Microsoft SQL Server -> Books OnLine.
2. Selecione o menu Exibir -> Definir subconjunto. Surgir a janela Definir subconjunto.
3. Na coluna de Itens disponveis:, d um clique na opo Administering SQL Server, depois d um
clique no boto Adicionar. A documentao referente ao item Administering SQL Server ser
deslocada para a coluna Itens includos no subconjunto atual:. No campo Salvar o novo subconjunto
como:, digite: Documentao do Administrador, conforme indicado na Figura 2.7.
Figura 2.7 Incluindo apenas o item Administering SQL Server.
4. D um clique no boto Salvar, depois no boto Fechar. Voc estar de volta ao Books OnLine,
porm observe que o mesmo continua exibindo a documentao completa e no apenas o
subconjunto por voc definido.
Com isso voc criou um subconjunto, agora preciso ativ-lo, isto , fazer com que o Books OnLine
exiba apenas a documentao definida no subconjunto.
5. Para ativar o subconjunto Documentao do Administrador, basta selecionar esta opo na
lista Ativar subconjunto. O resultado obtido est indicado na Figura 2.8. Para voltar a exibir
toda a documentao, basta selecionar a opo (Coleo completa), na lista Ativar subconjunto.
Algumas figuras aparecem de forma reduzida, conhecida como thumbnail. A forma reduzida
um link para o diagrama em tamanho normal. Ao imprimir a documentao, a figura ser
impressa no seu tamanho normal.
Melhoria no sistema de tpicos relacionados, facilitando a localizao dos assuntos ligados a
um determinado tpico que est sendo exibido.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
50 00CURSO COMPLETO
Figura 2.8 Subconjunto Documentao do Administrador.
Com isso vimos as principais novidades do SQL Server 2000. Descries mais detalhados sobre as
novidades podem ser encontradas no item Whats New do Books OnLine.
Neste livro estarei me referindo a documentao do SQL Server 2000 como Books OnLine.
Agora j estamos aptos a tratar da instalao do Microsoft SQL Server 2000.
FUNDAMENTOS EM: INSTALAO DO MICROSOFT SQL SERVER 2000
PR-REQUISITOS
Conhecimentos bsicos de instalao de programas no ambiente Windows.
METODOLOGIA
Instalao passo a passo das diferentes verses do SQL Server 2000.
Neste item aprenderemos a instalar o Microsoft SQL Server em algumas verses do Windows. Tambm
veremos as principais diferenas entre as funcionalidades disponveis nas diferentes verses do SQL Server.
Vamos aprender a instalar o Microsoft SQL Server 2000 nas seguintes verses do Windows:
Windows 2000 Server
Windows 2000 Professional
Windows 98.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
51 CURSO COMPLETO00
AS DIFERENTES EDIES DO MICROSFT SQL SERVER 2000
O termo Edio identifica as diferentes funcionalidades e capacidades do SQL Server 2000, dependendo
da verso do Windows onde o mesmo instalado.
Temos as seguintes edies:
SQL Server 2000 Enterprise Edition: a edio do SQL Server com todas as funcionalidades do
produto disponveis. Pode ser utilizado como um Banco de Dados de suporte a sistemas empresarias
de n camadas, como suporte a Web sites de grande volume de acesso, bem como em ambientes
OLTP On Line Transaction Processing, em sistemas de Date Warehouse ou sistemas de tomada
de deciso OLAP On Line Analitycal Processing. Esta edio pode ser instalada em qualquer
verso do Windows 2000 Server ou do Windows NT Server 4.0. No est disponvel para o Win-
dows 2000 Professional, Windows NT Workstation 4.0 e para Windows 9.x e Windows CE.
SQL Server 2000 Standard Edition: Pode ser utilizado como um servidor de banco de dados para
pequenos grupos de trabalhos ou departamentos. Esta edio pode ser instalada em qualquer
verso do Windows 2000 Server ou do Windows NT Server 4.0. No est disponvel para o Win-
dows 2000 Professional, Windows NT Workstation 4.0 nem para Windows 9.x e Windows CE.
SQL Server 2000 Personal Edition: utilizado por usurios mveis, que trabalham com Note-
books, e passam parte do tempo desconectados da rede da empresa. Como estes usurios utilizam
aplicaes que necessitam das funcionalidades de um Banco de Dados, os mesmos podem
utilizar o SQL Server 2000 Personal Edition. Ao voltar a se conectar com a rede da empresa, os
recursos de Replicao podem ser utilizados para sincronizar os dados com o Banco de Dados
da empresa, o qual, provavelmente, utiliza o SQL Server 2000 Enterprise Edition. Esta edio
somente no suportada pelo Windows CE.
SQL Server 2000 Developer Edition: Utilizado por desenvolvedores de aplicaes, as quais
utilizam o SQL Server como Banco de Dados. Esta edio suporta todas as funcionalidades do
SQL Server 2000 Enterprise Edition, para que o programador possa utilizar todos os recursos do
SQL Server 2000 na aplicao que est sendo desenvolvida. Porm, esta verso licenciada
para ser utilizada apenas como um ambiente de teste e desenvolvimento e no como um
servidor de produo. No suportada pelo Windows 9.x nem pelo Windows CE.
SQL Server 2000 Windows CE Edition (SQL Server CE): Pode ser utilizado com qualquer
dispositivo manual que suporte o Windows CE. Esta edio permite a replicao de dados com
qualquer outra verso do SQL Server 2000. Um exemplo tpico de utilizao desta verso, o
caso dos vendedores que utilizam Handles com o Windows CE. O vendedor pode utilizar um
sistema de pedidos que armazena os dados no SQL Server CE. Ao voltar para a empresa, os
pedidos podem ser replicados para o servidor de produo, evitando erros de digitao. Em
situaes mais sofisticadas, o Handled do vendedor pode ser equipado com um dispositivo de
modem, sendo que atravs de uma linha telefnica os pedidos podem ser replicados antes
mesmo que o vendedor volte para a empresa. Neste caso, o vendedor nem mesmo precisaria
voltar para a empresa para apresentar os pedidos. Somente suportada pelo Windows CE.
SQL Server 2000 Enterprise Evaluation Edition: uma verso de avaliao, disponvel no site
do SQL Server (www.microsoft.com/sql) para download. uma verso de avaliao, a qual
deixa de funcionar aps transcorridos 120 dias da instalao. No suportada pelo Windows
9.x e pelo Windows CE.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
52 00CURSO COMPLETO
Tambm existe a possibilidade de fazermos o upgrade de uma determinada edio para outra. Os
caminhos possveis, de upgrade, so os seguintes:
Do SQL Server 2000 Personal Edition podemos fazer o upgrade para o SQL Server 2000 Enter-
prise Edition ou para o SQL Server 2000 Standard Edition.
Do SQL Server 2000 Standard Edition podemos fazer o upgrade para o SQL Server 2000 Enter-
prise Edition.
REQUISITOS DE HARDWARE E SOFTWARE PARA A INSTALAO DO SQL SERVER 2000
Antes de instalarmos o SQL Server 2000, existem algumas recomendaes que devemos observar,
segundo a documentao do Books OnLine, conforme descrito a seguir.
Antes de instalar o SQL Server 2000, verifique os seguintes fatores:
Certifique-se de que o computador onde ser instalado o SQL Server 2000, atenda aos requisitos
mnimos de hardware, que so:
1. Processador padro Intel, Pentium 166 MHz ou superior.
2. Memria RAM de, no mnimo, 64 MB.
3. 600 MB de espao livre em disco.
4. Monitor ou superior, com resoluo de 800x600 ou superior.
5. Microsoft mouse ou compatvel.
6. Drive de CD-ROM.
Evidentemente que estas so caractersticas mnimas de hardware, para que voc possa instalar o SQL Server 2000. Na prtica, o
hardware a ser utilizado depende da utilizao que o servidor SQL sofrer. Para isso devemos levar em considerao fatores como o
nmero de usurios simultneos, o volume de informaes sendo acessadas, etc.
Os requisitos mnimos de software dependem da verso do SQL Server 2000 que ser instalada.
No incio deste item, temos uma descrio completa das diferentes verses do SQL Server 2000
e das verses do Windows suportadas por cada edio do SQL Server 2000. Para instalar o SQL
Server 2000 tambm devemos ter instalado o Internet Explorer 5.0 ou superior.
Se voc estiver fazendo um upgrade de uma verso anterior do SQL Server, faa o Backup de
todos os Bancos de Dados, antes de iniciar o upgrade.
Faa um planejamento cuidadoso para definir fatores como as pastas de instalao do SQL
Server, as opes regionais relativas ao conjunto de caracteres e ordem de ordenao, o nmero
de instncias que voc ir instalar e as demais opes envolvidas durante o processo de instalao.
sempre recomendvel, fazermos a instalao em um ambiente de teste. Depois de estarmos
familiarizados com o processo de instalao, podemos partir para o servidor de produo.
Antes de iniciar a instalao do SQL Server, tome mais os seguintes cuidados:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
53 CURSO COMPLETO00
1. Crie uma ou mais contas com as quais iro rodar os servios do SQL Server. No nosso exemplo,
estarei utilizando a conta de Administrador. Em muitas situaes o ideal criar uma conta
especialmente para o SQL Server, ao invs de utilizar a conta de Administrador.
2. Parar qualquer servio que esteja utilizando ODBC, como por exemplo o IIS Internet Infor-
mation Services. Para parar o IIS utilize o seguinte comando em um Prompt de Comando:
net stop w3svc
para reiniciar o IIS utilize o seguinte comando:
net start w3svc
3. Quando for instalar o SQL Server 2000, faa o logon com uma conta que tenha permisses de
Administrador.
Se voc for utilizar outra conta de usurio, que no a conta de administrador, para estartar os servios do SQL Server 2000, pesquise o
item Setting up Windows Services Accounts, no Books OnLine, para saber quais os requisitos que uma conta de usurio precisa ter para
que a mesma possa ser utilizada para estartar os servios do SQL Server 2000.
Agora que j verificamos quais os preparativos para instalar o SQL Server 2000, vamos aprender a fazer
a instalao em diferentes verses do Windows.
INSTALANDO O SQL SERVER 2000 NO WINDOWS 2000 SERVER
Vamos aprender, passo a passo, a instalar o SQL Server 2000, no Windows 2000 Server. Iremos instalar
o SQL Server 2000 em um computador chamado SERVIDOR. A instncia que iremos criar ser chamada
de SRVINST01. Por isso para fazer referncia a esta instncia do SQL Server, utilizamos a nomenclatura
completa, conforme descrito anteriormente:
NomeDoServidor\NomeDaInstncia
No nosso exemplo, a nomenclatura para esta primeira instncia ser:
SERVIDOR\SRVINST01
Para Instalar o SQL Server 2000 faa o seguinte:
1. Faa o logon com uma conta com permisses de Administrador no servidor com o Windows
2000 Server instalado.
2. Coloque o CD-ROM do SQL Server 2000 no drive de CD. Deve surgir a tela indicada na Figura 2.9.
Nesta tela temos as seguintes opes:
SQL Server 2000 Components: Ao clicarmos nesta opo ser exibida uma tela com trs outras
opes, conforme indicado na Figura 2.10.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
54 00CURSO COMPLETO
Figura 2.9 Tela inicial da instalao do SQL Server 2000.
Figura 2.10 Subopes da opo SQL Server 2000 Components.
A subopo Install Database Server que nos leva a instalao do SQL Server 2000. A subopo Instal
Analysis Services permite a instalao do servio de anlise de dados, e a subopo Instal English
Query faz a instalao de um servio avanado para pesquisas no Banco de Dados.
Para voltar tela inicial do programa de instalao, basta clicar na opo Back, no canto inferior esquerdo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
55 CURSO COMPLETO00
SQL Server 2000 Prerequisites: Esta opo possibilita a instalao de componentes adicionais
que devem estar instalados, antes que a instalao do SQL Server 2000 seja feita. Por exemplo,
se voc no tiver o Internet Explorer 5.0 ou superior instalado, ao clicar nesta opo, surgir
um link para a instalao do Internet Explorer.
Browse Setup/Upgrade Help: Ao clicar nesta opo, ser exibida a documentao do Books OnLine,
no tpico referente a instalao do SQL Server 2000 ou upgrade a partir de verses anteriores.
Read the Release Notes: Esta opo abre o arquivo readme.txt, que est gravado no diretrio raiz
do CD. Este arquivo contm orientaes que foram elaboradas pela equipe do SQL Server 2000,
com dicas de ltima hora. sempre uma boa idia ler este arquivo antes de iniciar a instalao.
Visit Our Web Site: Esta opo um link para o site oficial do SQL Server, no seguinte endereo:
www.microsoft.com/sql.
3. Clique na opo SQL Server 2000 Components.
4. Na janela que surge, d um clique na opo Install Database Server. Surge a janela com a tela
inicial do assistente de instalao do SQL Server 2000. D um clique no boto Next. Surge a
tela indicada na Figura 2.11.
Figura 2.11 Definindo uma instalao local.
Nesta tela definimos se o SQL Server ser instalado no servidor local (onde voc est trabalhando), ou
em algum outro computador da rede. Observe que a opo Local j vem marcada por padro e o nome
do seu servidor j aparece no campo de texto desta tela. No nosso exemplo o nome SERVIDOR.
Vamos aceitar as configuraes-padro.
5. D um clique no boto Next para ir para a prxima etapa. Surge a tela indicada na Figura 2.12.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
56 00CURSO COMPLETO
Figura 2.12 A janela Installation Selection.
Nesta etapa temos trs opes:
Create a new instance of SQL Server, or install Client Tools: Esta opo permite que seja instalada
uma nova Instncia do SQL Server ou que sejam instaladas apenas as ferramentas de cliente,
para que a estao possa se comunicar com um Servidor SQL. Utilizaremos esta opo, pois
estamos instalando uma instncia chamada SRVINST01 no computador chamado SERVIDOR.
Upgrade, remove, or add components to an existen instance of SQL Server: Esta opo permite
que seja feito o upgrade de uma verso anterior ou que sejam adicionados componentes a uma
instalao do SQL Server. Como no temos nenhuma verso anterior instalada, nem uma
verso atual do SQL Server 2000 para modificar, observe que esta opo esta desabilitada.
Quanto ao upgrade de verses anteriores do SQL Server para o SQL Server 2000, ns temos os seguintes
caminhos possveis:
Do SQL Server 7.0 Desktop Edition podemos fazer o upgrade para o SQL Server 2000 Per-
sonal Edition ou para o SQL Server 2000 Standard Edition.
Do SQL Server 7.0 Standard Edition podemos fazer o upgrade para o SQL Server 2000
Standard Edition ou para o SQL Server 2000 Enterprise Edition.
Do SQL Server 7.0 Enterprise Edition podemos fazer o upgrade para o SQL Server 2000
Enterprise Edition.
Do SQL Server 2000 Developer Edition podemos fazer o upgrade para o SQL Server 2000
Enterprise Edition.
Do SQL Server 2000 Standard Edition podemos fazer o upgrade para o SQL Server 2000
Enterprise Edition.
Do SQL Server 2000 Personal Edition podemos fazer o upgrade para o SQL Server 2000
Standard Edition.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
57 CURSO COMPLETO00
Do SQL Server 6.5 podemos fazer o upgrade do servidor e dos dados para o SQL Server
2000, utilizando o SQL Server Upgrade Wizard. Aps o upgrade temos as duas verses
instaladas no mesmo servidor, o SQL Server 6.5 e o SQL Server 2000. Podemos manter as
duas verses por um perodo at termos certeza que est tudo OK com o SQL Server. Quando
for necessrio podemos desinstalar o SQL Server 6.5.
No existe caminho de upgrade direto do SQL Server 6.0 para o SQL Server 2000. Primeiro fazemos o
upgrade do SQL Server 6.0 para o SQL Server 6.5, depois seguimos o caminho descrito no pargrafo
anterior, para irmos do SQL Server 6.5 para o SQL Server 2000.
Advance Options: Nos fornece uma srie de opes avanadas como, por exemplo, opes que
permitem que seja criada uma instalao no assistida, isto , uma instalao onde o usurio no
precisa ficar respondendo a opes nas vrias etapas da instalao. As respostas para as vrias
etapas esto gravadas em um arquivo de respostas. Esta opo til quando devemos instalar o
SQL Server em um grande nmero de equipamentos, o que no uma situao muito comum.
6. Certifique-se que a opo Create a new instance of SQL Server, or install Client Tools est marcada
e d um clique no boto Next. Surge a tela para digitar informaes sobre o usurio e a empresa.
7. Nesta tela voc preenche informaes sobre o usurio e a empresa. Preencha os campos Name
com Jlio Battisti e o campo Company com ABC Corporation. D um clique no boto Next.
8. Surge a tela com o Contrato de Licena para o SQL Server 2000. Esta tela o contrato de licena
do SQL Server 2000. No meu caso, estou instalando uma verso de avaliao de 120 dias.
Clique no boto Yes para concordar com o contrato de licena para ir para a prxima etapa.
9. Surge a tela indicada na Figura 2.13.
Figura 2.13 A tela com os tipos de instalao.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
58 00CURSO COMPLETO
Nesta tela temos trs opes:
Client Tools Only: Instala apenas as ferramentas do cliente, para que o computador possa se
conectar a acessar dados em um servidor SQL Server. Com esta opo tambm sero instaladas
as ferramentas de administrao do servidor SQL Server, como por exemplo o SQL Server En-
terprise Manager e o Query Analyzer. Podemos utilizar esta opo para que o administrador do
servidor SQL possa administr-lo de uma estao de trabalho ligada na rede.
Server and Client Tools: Esta a opo padro. Esta opo instala alm das ferramentas do
cliente, todo o mecanismo do servidor de Banco de Dados. Ao selecionarmos esta opo, novas
telas sero apresentadas na seqncia da instalao do SQL Server 2000.
Connectivity Only: Esta opo instala apenas as bibliotecas para a conexo com um servidor
SQL Server.
Certifique-se que a opo Server and Client Tools est selecionada e d um clique no boto Next.
10. Surge a tela indicada na Figura 2.14. Para que possamos nomear a instncia do SQL Server que
est sendo instalada, devemos desmarcar a opo Default e digitar o nome da instncia no campo
Instance Name. Desmarque a opo Default e digite SRVINST01 no campo Instance Name.
Figura 2.14 Definindo o nome da instncia a ser instalada.
11. D um clique no boto Next. Surge a tela indicada na Figura 2.15.
Nesta tela definimos se queremos fazer uma instalao tpica (Typical), mnima (Minimum) ou
personalizada (Custom). A opo Typical a mais automatizada, sendo a que oferece o menor nmero
de escolhas para o usurio. A opo Minimum tambm oferece poucas opes durante o processo de
instalao e somente instala um nmero mnimo de componentes. A instalao Custom a que nos
oferece o maior nmero de opes, permitindo que sejam definidos quais os componentes do SQL
Server 2000 desejamos instalar.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
59 CURSO COMPLETO00
Figura 2.15 Mais configuraes de instalao.
Nesta tela tambm podemos definir em que pastas ser instalado o SQL Server. Precisamos definir duas pastas:
Program Files: a pasta onde sero instalados os arquivos do Servidor SQL Server. Por padro
selecionado o drive onde est instalado o Windows 2000, no seguinte caminho: Arquivos de
programas\Microsoft SQL Server\80. No meu caso o Windows 2000 est instalado no drive D e
a minha pasta Program Files ser a seguinte D:\ Arquivos de programas\Microsoft SQL Server\80.
Data Files: Este a pasta onde ser criado o Banco de Dados Master, e alguns outros Bancos de
Dados necessrios ao funcionamento do servidor SQL. No prximo captulo veremos quais
arquivos que fazem parte de um Banco de Dados do SQL Server, bem como a funo de cada
tipo de arquivo. Por padro selecionado o drive onde est instalado o Windows 2000, no
seguinte caminho: Arquivos de programas\Microsoft SQL Server\Data. No meu caso o Win-
dows 2000 est instalado no drive D, e a minha pasta Data Files ser a seguinte D:\ Arquivos de
programas\Microsoft SQL Server\Data.
12. Aceite os caminhos padres sugeridos e certifique-se de que a opo Custom esteja selecionada.
D um clique no boto Next. Surgir a tela indicada na Figura 2.16.
Nesta tela podemos definir quais componentes do SQL Server queremos instalar. Na coluna da esquerda
temos a lista dos componentes disponveis. Ao clicar em um componente na lista da esquerda, sero
exibidos os seus Subcomponentes na lista da direita. Os componentes e subcomponentes que estiverem
marcados sero instalados. Para no instalar um determinado subcomponente basta desmarc-lo.
13. Certifique-se de que todos os componentes e respectivos subcomponentes esto marcados e d
um clique no boto Next. Surgir a tela indicada na Figura 2.17.
Nesta tela vamos definir qual a conta que ser utilizada pelos servios do SQL Server. No caso do
servidor ser um Domain Controler, alm da conta e da senha, aparece o nome do domnio. Podemos
definir uma conta diferente para cada um dos servios ou a mesma conta para todos os servios. No
nosso exemplo usaremos a conta Administrador para todos os servios.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
60 00CURSO COMPLETO
Figura 2.17 Definindo a conta que ser utilizada para inicializar o SQL Server 2000.
Ao instalar o SQL Server 2000, diversos servios so instalados. De uma maneira simples, um servio um programa que fica residente
na memria do servidor, mesmo que no exista usurio logado na console do servidor. Quando o usurio faz o logoff, o servio continua
carregado na memria atendendo s requisies dos clientes. Todo servio no Windows NT ou no Windows 2000 precisa rodar no
contexto de uma conta. Por isso que precisamos informar uma conta para que os servios possam ser inicializados. No Windows 9.x no
existe o conceito de servio. No final do captulo veremos um pouco mais sobre os servios que so instalados com o SQL Server.
14. Digite o nome da conta a ser utilizada, a senha e o nome do domnio.
Estou utilizando a conta de Administrador do Windows 2000. Voc pode utilizar a conta de Administrador
ou outra conta criada para ser utilizada pelo SQL Server 2000. Voc tambm pode utilizar a conta local
System. Neste momento o programa de instalao ir verificar se a senha digitada est correta. Caso a
senha no esteja correta ser exibida uma mensagem de erro, conforme indicado na Figura 2.18.
Figura 2.16 Componentes do SQL Server.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
61 CURSO COMPLETO00
Figura 2.18 Mensagem de erro devido a senha incorreta.
15. D um clique no boto Next. Surge a janela indicada na Figura 2.19, onde voc pode definir o
tipo de segurana a ser utilizado com a instncia do SQL Server que est sendo instalada.
Figura 2.19 Definindo o tipo de segurana.
No Captulo 6 veremos em detalhes o modelo de segurana do SQL Server 2000.
16. No momento aceite a opo padro Windows Authentication Mode e d um clique no boto
Next. Surge a tela indicada na Figura 2.20.
Na tela da Figura 2.20 podemos definir importantes opes para o Banco de Dados como o tipo de
Collation, j comentado anteriormente. Tambm podemos definir algumas opes para Sort Order,
dentre as quais se destacam: Accent Sensitive e Case Sensitive. Estas duas opes definem se o SQL
Server far diferena entre palavras acentuadas e entre maisculas e minsculas quando da ordenao
de resultados. A definio destas opes dependem do projeto e do propsito do Banco de Dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
62 00CURSO COMPLETO
Figura 2.20 A tela Collation Settings.
17. Aceite as configuraes padro desta tela e d um clique no boto Next. Surge a tela Network
Libraries.
Nesta tela podemos configurar as opes de conectividade. O padro ser utilizado o mecanismo de
Named Pipes e TCP/IP Sockets. Vamos aceitar as configuraes-padro. Para maiores informaes sobre
as configuraes desta tela, consulte o item Network Libraries no Books Online.
18. Aceite as configuraes-padro desta tela e d um clique no boto Next. Surgir a tela indicada
na Figura 2.21.
Figura 2.21 Tela final do programa de instalao.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
63 CURSO COMPLETO00
Esta tela informa que todos os dados necessrios para a instalao j foram fornecidos e que o Setup est
pronto para iniciar a instalao do SQL Server 2000 no seu servidor. Esta etapa pode demorar um pouco.
19. D um clique no boto Next e saia para tomar um cafezinho. Na Figura 2.22 temos uma tela
que mostra o andamento da instalao do SQL Server 2000.
Figura 2.22 O andamento da instalao.
No final da instalao, aps todos os componentes terem sidos instalados e os respectivos servios
inicializados, surge a tela indicada na Figura 2.23, indicando que a instalao foi finalizada com sucesso.
Figura 2.23 Instalao finalizada com sucesso.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
64 00CURSO COMPLETO
20. D um clique no boto Finish e pronto! A instncia SRVINSTS01 do SQL Server 2000 est
instalada no seu computador.
No item final deste captulo, veremos os diversos servios que so instalados com o SQL Server, bem como as ferramentas administrativas
que so disponibilizadas com a instalao do mesmo.
Pronto, o SQL Server 2000 est instalado no seu Windows 2000 Server.
Agora veremos como instalar o SQL Server 2000 no Windows 2000 Professional.
INSTALANDO O SQL SERVER 2000 NO WINDOWS 2000 PROFESSIONAL
Vamos aprender, passo a passo, a instalar o SQL Server 2000, no Windows 2000 Professional. Iremos
instalar o SQL Server 2000 em um computador chamado SERVIDOR. A instncia que iremos criar ser
chamada de PROINST01. Por isso, para fazer referncia a esta instncia do SQL Server, utilizamos a
nomenclatura completa, conforme descrito anteriormente:
NomeDoServidor\NomeDaInstncia
No nosso exemplo, a nomenclatura para esta primeira instncia ser:
SERVIDOR\PROINST01
Como o processo de instalao no Windows 2000 Professional muito semelhante ao processo no Windows 2000 Server, no iremos
repetir as explicaes relativas s opes que j foram explicadas quando da instalao no Windows 2000 Server.
Para Instalar o SQL Server 2000 faa o seguinte:
1. Faa o logon com uma conta com permisses de Administrador no servidor com o Windows
2000 Professional instalado.
2. Coloque o CD-ROM do SQL Server 2000 no drive de CD. Deve surgir a tela inicial de instalao
do SQL Server 2000.
3. Clique na opo SQL Server 2000 Components.
4. Na janela que surge, d um clique na opo Install Database Server. Surge a tela inicial do assistente
de instalao do SQL Server 2000. D um clique no boto Next. Surge a tela Computer Name.
Nesta tela definimos se o SQL Server ser instalado no servidor local (onde voc est trabalhando), ou
em algum outro computador da rede. Observe que a opo Local j vem marcada por padro e o nome
do seu servidor j aparece no campo de texto desta tela. No nosso exemplo o nome SERVIDOR.
Vamos aceitar as configuraes-padro.
5. D um clique no boto Next para ir para a prxima etapa. Surge a tela Instalattion Selection.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
65 CURSO COMPLETO00
6. Certifique-se que a opo Create a new instance of SQL Server, or install Client Tools est
marcada e d um clique no boto Next. Surge a tela User Information.
7. Nesta tela voc pode preencher informaes sobre o usurio (digite Jlio Battisti) e a empresa
(digite ABC Corporation). Preencha conforme indicado e d um clique no boto Next.
8. Surge a tela indicando o Contrato de Licena do SQL Server 2000. Estou instalando uma verso
de avaliao de 120 dias. Clique no boto Yes para concordar com o contrato de licena e ir
para a prxima etapa.
9. Surge a tela Instalattion Definition. Certifique-se que a opo Server and Client Tools est
selecionada e d um clique no boto Next.
10. Surge a tela indicada na Figura 2.24. Para que possamos nomear a instncia do SQL Server que
est sendo instalada, devemos desmarcar a opo Default e digitar o nome da instncia no campo
Instance Name. Desmarque a opo Default e digite PROINST01 no campo Instance Name.
Figura 2.24 Definindo o nome da instncia a ser instalada.
11. D um clique no boto Next. Surge a tela indicada na Figura 2.25.
12. Aceite os caminhos-padro sugeridos e certifique-se de que a opo Custom esteja selecionada.
D um clique no boto Next. Surgir a tela indicada na Figura 2.26.
Nesta tela vamos definir qual a conta que ser utilizada pelos servios do SQL Server. No campo domnio
aparece o nome do computador onde est instalado o Windows 2000 Professional. Caso este computador
faa parte de um domnio do Windows 2000 Server, podemos especificar uma conta do domnio,
bastando para isso digitar o nome do domnio no campo Domain. Podemos definir uma conta diferente
para cada um dos servios ou a mesma conta para todos os servios. No nosso exemplo usaremos a
conta Administrador para todos os servios.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
66 00CURSO COMPLETO
Figura 2.26 Definindo a conta que ser utilizada.
Ao instalar o SQL Server 2000, diversos servios so instalados. De uma maneira simples, um servio um programa que fica residente
na memria do servidor, mesmo que no exista usurio logado na console do servidor. Quando o usurio faz o logoff, o servio continua
carregado na memria atendendo s requisies dos clientes. Todo servio no Windows NT ou no Windows 2000 precisa rodar no
contexto de uma conta. Por isso que precisamos informar uma conta para que os servios possam ser inicializados. No Windows 9.x no
existe o conceito de servio. No final do captulo veremos um pouco mais sobre os servios que so instalados com o SQL Server.
13. Digite o nome da conta a ser utilizada, a senha e o nome do domnio. Neste momento o
programa de instalao ir verificar se a senha digitada est correta. Caso no esteja, ser exibida
uma mensagem de erro.
Figura 2.25 Mais configuraes de instalao.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
67 CURSO COMPLETO00
14. D um clique no boto Next. Surge a janela indicada na Figura 2.27, onde voc pode definir o
tipo de segurana a ser utilizado com a instncia do SQL Server que est sendo instalada.
Figura 2.27 Definindo o tipo de segurana.
No Captulo 6 veremos em detalhes o modelo de segurana do SQL Server 2000.
15. Aceite a opo padro Windows Authentication Mode e d um clique no boto Next. Surge a
tela indicada na Figura 2.28.
Na tela da Figura 2.28 podemos definir importantes opes para o Banco de Dados como o tipo de
Collation, j comentado anteriormente. Tambm podemos definir algumas opes para Sort Order,
dentre as quais se destacam: Accent Sensitive e Case Sensitive. Estas duas opes definem se o SQL
Server far diferena entre palavras acentuadas e entre maisculas e minsculas quando da ordenao
de resultados. A definio destas opes dependem do projeto e do propsito do Banco de Dados.
16. Aceite as configuraes-padro desta tela e d um clique no boto Next. Surge a tela Network
Libraries.
Nesta tela podemos configurar as opes de conectividade. O padro ser utilizado o mecanismo de
Named Pipes e TCP/IP Sockets. Vamos aceitar as configuraes-padro. Para maiores informaes sobre
as configuraes desta tela, consulte o item Network Libraries no Books Online.
17. Aceite as configuraes-padro desta tela e d um clique no boto Next.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
68 00CURSO COMPLETO
Figura 2.28 A tela Collation Settings.
Esta tela indica que todas as informaes necessrias para a instalao j foram fornecidas e que o
Setup est pronto para iniciar a instalao do SQL Server 2000 no seu computador. Esta etapa pode
demorar um pouco.
18. D um clique no boto Next e saia para mais um cafezinho. No final da instalao, aps todos
os componentes terem sidos instalados e os respectivos servios inicializados, surge uma tela
indicando que a instalao foi finalizada com sucesso.
19. D um clique no boto Finish e pronto! A instncia PROINSTS01 do SQL Server 2000 est
instalada no seu computador.
Pronto, o SQL Server 2000 est instalado no seu Windows 2000 Professional.
No item final deste captulo, veremos os diversos servios que so instalados com o SQL Server, bem como as ferramentas administrativas
que so disponibilizadas com a instalao do mesmo.
INSTALANDO O SQL SERVER 2000 NO WINDOWS 98
Vamos aprender, passo a passo, a instalar o SQL Server 2000, no Windows 98. Iremos instalar o SQL
Server 2000 em um computador chamado SERVIDOR. A instncia que iremos criar ser chamada de
W98INST01. Por isso para fazer referncia a esta instncia do SQL Server, utilizamos a nomenclatura
completa, conforme descrito anteriormente:
NomeDoServidor\NomeDaInstncia
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
69 CURSO COMPLETO00
No nosso exemplo, a nomenclatura para esta primeira instncia ser:
SERVIDOR\W98INST01
Como o processo de instalao possui algumas semelhanas com as instalaes no Windows 2000 Server e no Windows 2000 Profes-
sional, no iremos repetir as explicaes relativas as opes que j foram explicadas quando das instalaes anteriores. Tambm no
iremos repetir as figuras relativas a telas iguais s que j foram apresentadas, ao invs disso faremos referncia a figura j apresentada.
Tambm gostaria de salientar que iremos instalar a SQL Server Personal Edition, uma vez que o SQL Server Enterprise Edition no
suportado pelo Windows 98, conforme j descrito anteriormente.
Para a instalao no Windows 98, estarei utilizando a verso Beta 2 do SQL Server Personal Edition. Podem existir pequenas diferenas
entre a verso Beta 2 e a verso definitiva. No restante do livro, quando estaremos trabalhando com a instalao feita no Windows
2000 Server, estaremos trabalhando com uma verso de avaliao de 120 dias, a qual exatamente igual a verso definitiva, apenas
com o detalhe da validade por um perodo determinado.
Para Instalar o SQL Server 2000 faa o seguinte:
1. Inicialize o computador com o Windows 98, onde ser instalado o SQL Server 2000.
2. Coloque o CD-ROM do SQL Server 2000 no drive de CD. Deve surgir a tela inicial de instalao
indicada na Figura 2.29.
Figura 2.29 Instalando o SQL Server Personal Edition.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
70 00CURSO COMPLETO
3. D um clique na opo Install SQL Server 2000 Prerequisites, para verificar se existe alguma
atualizao necessria, antes que voc instale o SQL Server 2000.
Na tela da Figura 2.30 podemos ver que as duas atualizaes disponveis somente so necessrias para o
Windows 95. D um clique no boto Back, no canto inferior esquerdo. Voc estar de volta tela inicial.
Figura 2.30 Atualizaes necessrias para o Windows 95.
4. D um clique na opo Install SQL Server 2000 Components.
5. Na janela que surge, d um clique na opo Personal Edition.
6. Na janela que surge, d um clique na opo Database Server Personal Editon.
7. Na tela inicial da instalao d um clique no boto Avanar. Surge a tela Computer Name.
Nesta tela definimos se o SQL Server ser instalado no servidor local (onde voc est trabalhando), ou
em algum outro computador da rede. Observe que a opo Local j vem marcada por padro e o nome
do seu servidor j aparece no campo de texto desta tela. No nosso exemplo o nome SERVIDOR.
Vamos aceitar as configuraes-padro.
8. D um clique no boto Avanar para ir para a prxima etapa. Surge a tela indicada na Figura 2.31.
9. Certifique-se que a opo Create a new instance of SQL Server est marcada e d um clique no
boto Avanar.
10. Surge uma tela para que voc digite o nome do usurio e da empresa. Preencha os campos
Name e Company.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
71 CURSO COMPLETO00
Figura 2.31 Criando uma nova instncia do SQL Server.
11. Surge a tela com o Contrato de Licena do SQL Server 2000 Personal Edition. Clique no boto
Yes para concordar com o contrato de licena e para ir para a prxima etapa.
12. Surge a tela Installation Definition. Certifique-se que a opo Server and Client Tools est
selecionada e d um clique no boto Avanar.
13. Surge a tela Instance Name. Para que possamos nomear a instncia do SQL Server que est
sendo instalada, devemos desmarcar a opo Default e digitar o nome da instncia no campo
Instance Name. Desmarque a opo Default e digite W98INST01 no campo Instance Name.
14. D um clique no boto Avanar. Surge a tela indicada na Figura 2.32.
Figura 2.32 Mais configuraes de instalao.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
72 00CURSO COMPLETO
15. Aceite os caminhos-padro sugeridos e d um clique na opo Custom para selecion-la. D
um clique no boto Avanar.
16. Surge uma tela onde voc pode definir quais os componentes que sero instalados. Vamos
aceitar as configuraes padro sem modific-las. D um clique no boto Avanar. Surgir a
janela indicada na Figura 2.33.
Figura 2.33 Definindo o tipo de segurana e a senha do usurio sa.
Nesta janela voc pode definir o tipo de segurana a ser utilizado com a instncia do SQL Server que
est sendo instalada. Conforme podemos observar, no Windows 98, somente est disponvel a opo
Mixed Mode. Tambm devemos definir uma senha para o usurio sa. Este usurio o que possui
maiores poderes no SQL Server, podendo efetuar qualquer operao. como se fosse o usurio
Administrador no caso do Windows NT e do Windows 2000.
No Captulo 6 veremos em detalhes o modelo de segurana do SQL Server 2000.
17. Aceite a opo padro Mixed Mode, digite uma senha para o usurio sa. Confirme a senha e d
um clique no boto Avanar. importante que voc lembre desta senha quando for usar o SQL
Server Personal Edition.
18. Surge a tela Collation Settings.
Nesta tela podemos definir importantes opes para o Banco de Dados como o tipo de Collation, j
comentado anteriormente. Tambm podemos definir algumas opes para Sort Order, dentre as quais
se destacam: Accent Sensitive e Case Sensitive. Estas duas opes definem se o SQL Server far diferena
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
73 CURSO COMPLETO00
entre palavras acentuadas e entre maisculas e minsculas quando da ordenao de resultados. A
definio destas opes depende do projeto e do propsito do Banco de Dados.
19. Aceite as configuraes-padro desta tela e d um clique no boto Avanar.
20. Na tela Network Libraries que surge, aceite as configuraes-padro e d um clique no boto Avanar.
Surge uma tela indicando que todas as informaes necessrias para a instalao j foram fornecidas e
que o Setup est pronto para iniciar a instalao do SQL Server 2000 no seu computador. Esta etapa
pode demorar um pouco.
21. D um clique no boto Avanar e saia para tomar um cafezinho. No final da instalao, aps
todos os componentes terem sidos instalados e os respectivos servios inicializados, surgir
uma tela indicando que a instalao foi finalizada com sucesso.
22. D um clique no boto Finalizar e pronto! A instncia W98INSTS01 do SQL Server 2000 est
instalada no seu computador.
Deste ponto em diante estaremos trabalhando com a instncia SRVINST01 do SQL Server 2000 Enterprise Edition instalada no Windows
2000 Server. Todos os exemplos e exerccios deste livro sero baseados nesta instncia. Na seqncia, a ttulo de exemplo, aprenderemos
a criar uma segunda instncia do SQL Server Enterprise Edition.
CRIANDO UMA SEGUNDA INSTNCIA DO SQL SERVER
ENTERPRISE EDITION NO WINDOWS 2000 SERVER
Anteriormente havamos instalado a instncia SRVINST01 no computador chamado SERVIDOR. Agora vamos
instalar uma segunda instncia chamada SRVINST02. Com isso, teremos as seguintes instncias disponveis:
SERVIDOR\SRVINST01
SERVIDOR\SRVINST02
Conforme descrito anteriormente, como se tivssemos dois servidores SQL Server completamente
separados. Ento mos obra.
Para criar uma segunda instncia do SQL Server 2000 Enterprise Edition:
1. Faa o logon com uma conta com permisses de Administrador.
2. Coloque o CD do SQL Server 2000 Enterprise Edition no drive de CD.
3. Na tela inicial da instalao, d um clique na opo SQL Server 2000 Components.
4. Na tela que surge d um clique na opo Install Database Server. O assistente para instalao
ser iniciado.
5. Na tela inicial, d um clique no boto Next. Ser exibida a janela Computer Name.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
74 00CURSO COMPLETO
6. Certifique-se de que a opo Local Computer esteja marcada e d um clique no boto Next.
7. Ser exibida a janela Installation Selection. Certifique-se de que a opo Create a new instance
of SQL Server, or install Client Tools esteja selecionada e d um clique no boto Next.
8. Ser exibida a janela User Information. Digite o nome do usurio e da empresa e d um clique
no boto Next.
9. Ao ser exibido o contrato de licena d um clique no boto Yes para concordar com o mesmo.
10. Surge a janela Installation Definition. Certifique-se de que a opo Server and Client Tools
esteja selecionada e d um clique no boto Next.
11. Surge a janela Instance Name. Observe que o quadro de opo Default j vem desmarcado e a
nica opo digitar o nome da nova instncia que est sendo criada. Isto acontece porque j
temos uma instncia instalada, portanto a nica opo instalar uma nova instncia. No
campo Instance Name, digite SRVINST02 e d um clique no boto Next.
Se voc, por engano, digitar o nome de uma instncia que j existe, ser exibida a mensagem de erro indicada na Figura 2.34.
Figura 2.34 Mensagem de erro.
12. Ser exibida a janela Setup Type. Aceite as opes-padro para as pastas do sistema e de dados
e d um clique na opo Custom para marc-la. D um clique no boto Next.
13. Surge a janela Select Componentes. D um clique no boto Next.
14. Ser exibida a janela Services Accounts. Digite o nome da conta a ser utilizada para inicializar
os servios do SQL Server, a senha e o nome do domnio. D um clique no boto Next.
15. Surge a janela Authentication Mode. Certifique-se de que a opo Windows Authentication
Mode esteja selecionada e d um clique no boto Next.
16. Surge a janela Collation Settings. D um clique no boto Next.
17. Ser exibida a janela Network Libraries. D um clique no boto Next.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
75 CURSO COMPLETO00
18. Uma janela exibida informando que todas as informaes necessrias j foram fornecidas. D
um clique no boto Next para que seja iniciada a instalao da segunda instncia do SQL Server.
Agora tempo para mais um cafezinho, pois esta etapa demora um pouco.
Se durante o processo de instalao, a outra instncia do SQL Server (instalada anteriormente) estiver
carregada na memria, ser exibida uma janela informando que os servios da mesma precisam ser parados
para que a instalao possa continuar, conforme indicado na Figura 2.35. Se surgir esta janela, d um clique
no boto Next, que os servios sero automaticamente parados e a instalao continuar normalmente.
Figura 2.35 Parando os servios que estavam carregados na memria.
19. Aps finalizada a instalao ser exibida a janela Setup Complete. D um clique no boto
Finish e pronto. Est instalada a instncia SERVIDOR\SRVINST02.
Conforme veremos neste e nos demais captulos, existem diversas ferramentas para administrar e
realizar as tarefas com o SQL Server 2000. Sempre que estivermos utilizando uma destas ferramentas,
teremos a opo de selecionar sobre qual das instncias do SQL Server instaladas, que queremos realizar
uma determinada operao.
Agora vamos aprender sobre os servios que so instalados com cada instncia do SQL Server e como
configur-los para que sejam carregados automaticamente quando o Windows 2000 Server for inicializado.
FUNDAMENTOS EM: SERVIOS DISPONVEIS COM O SQL SERVER 2000
PR-REQUISITOS
Ter instalado a instncia SERVIDOR\SRVINST01 no Windows 2000 Server.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
76 00CURSO COMPLETO
METODOLOGIA
Verificao dos servios instalados e inicializados.
TCNICA
Utilizar o Gerenciador de Tarefas do Windows 2000.
Conforme j foi descrito anteriormente, um servio um programa que fica residente na memria do
servidor. Um servio o responsvel por atender s requisies dos clientes quando estes se conectam
com o Banco de Dados. Por exemplo, quando um usurio de uma aplicao faz uma pesquisa, atravs
da rede, no servidor SQL Server, um servio que recebe a solicitao do cliente, obtm os dados
solicitados e retorna o resultado para o cliente.
Como o SQL Server 2000 oferece uma srie de funcionalidades, existem alguns servios que esto
disponveis com cada instncia instalada do SQL Server. A seguir vamos descrever estes servios.
O SERVIO SQL SERVER
Este o principal servio do SQL Server 2000. Ele responsvel pelas principais funes do Banco de
Dados. Se este servio, por algum motivo, no tiver sido inicializado, os clientes no sero capazes de
se conectar com o servidor SQL. como se no existisse o servidor SQL ou se o mesmo estivesse fora da
rede. Para o Sistema Operacional, este servio possui o nome MSSQL$NomeDaInstncia, onde
NomeDaInstncia o nome da instncia instalada. Caso tenhamos mais do que uma instncia instalada,
cada uma delas ter o seu prprio servio SQL Server. Observe que cada servio carregado na memria,
consome recursos do servidor, principalmente memria RAM.
No nosso exemplo, como temos duas instncias do SQL Server 2000 instaladas, teremos dois servios
SQL Server carregados na memria. Estes servios, para o Windows 2000, sero identificados pelos
seguintes nomes:
MSSQL$SRVINST01
MSSQL$SRVINST02
Ns podemos, facilmente, verificar se existem duas instncias deste servio carregadas na memria.
Para isso, faa o seguinte:
1. Pressione Ctrl+Alt+Del para abrir a janela Segurana no Windows.
2. D um clique no boto Gerenciador de Tarefas, para abrir o Gerenciador de Tarefas do Win-
dows 2000.
3. Na janela que surge, d um clique na guia Processos. Depois d um clique no boto com o
nome da coluna Nome da imagem, para classificar os processos carregados pelo nome.
4. V rolando com a barra de rolagem vertical, at encontrar um processo chamado sqlservr.exe,
conforme indicado na Figura 2.36.
Observe que temos dois processos sqlservr.exe carregados na memria. Cada um deles responsvel
pelo servio SQL Server de cada uma das respectivas instncias do SQL Server 2000 instaladas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
77 CURSO COMPLETO00
Figura 2.36 Processos para as instncias do SQL Server.
5. Feche o Gerenciador de Tarefas.
O SERVIO SQL SERVER AGENT
Este servio responsvel pelo agendamento de tarefas para execuo em perodos programados, emisso
de alertas com base em determinadas condies, notificaes e planos de manuteno de Banco de
Dados. Este servio dependente do servio SQL Server, ou seja, se o servio SQL Server no tiver sido
inicializado com sucesso, no ser possvel inicializar o servio SQL Server Agent.
A exemplo do servio SQL Server, existe uma instncia do SQL Server Agent para cada uma das respectivas
instncias do SQL Server 2000 instaladas. O nome do servio SQLAGENT$NomeDaInstncia. No
nosso exemplo, teramos as seguintes instncias do SQL Server Agent.
SQLAGENT$SRVINST01
SQLAGENT$SRVINST02
Na Figura 2.37, podemos ver, no Gerenciador de Tarefas, os dois processos responsveis por estas duas
instncias do servio SQL Server Agent.
Voltaremos a falar do servio SQL Server Agent quando falarmos do agendamento de tarefas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
78 00CURSO COMPLETO
Figura 2.37 Processos para as instncias do SQL Server Agent.
O SERVIO MICROSOFT DISTRIBUTED TRANSACTION CORDINATOR MSDTC
Este servio um coordenador de transaes, o qual permite que dados das mais diferentes fontes,
desde o Mainframe at uma planilha do Excel, sejam acessados em uma aplicao desenvolvida para o
SQL Server. Tais tipos de aplicaes podem ser desenvolvidas em diversas linguagens, como por exemplo
o Visual Basic, Delphi, Power Builder, C#, ASP.NET, etc. Este servio garante a consistncia em todas as
fontes de dados. Por exemplo, se voc est acessando dados do Mainframe e de um planilha Excel, est
fazendo clculos que alteram dados em ambas as fontes e salva os resultados em um Banco de Dados
Oracle, o servio MSDTC garante que todas as operaes ocorrero com sucesso, no contexto de uma
transao, ou que os dados sero retornados ao seu estado original antes do incio da transao.
Diferente dos servios SQL Server e SQL Server Agent, existe somente uma instncia do servio MSDTC,
independente de quantas instncias do SQL Server 2000 estejam instaladas no servidor. Isto faz sentido,
pois o papel do MSDTC justamente facilitar o acesso a vrias fontes de dados.
O SERVIO MICROSOFT SEARCH
Quando fazemos uma instalao personalizada (Custom), podemos optar por no instalar o servio
Microsoft Search. Este servio somente deve ser instalado se realmente for utilizado, pois caso contrrio
estar consumindo recursos no servidor. O servio Microsoft Search oferece a possibilidade de pesquisas
avanadas para o idioma Ingls.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
79 CURSO COMPLETO00
Diferente dos servios SQL Server e SQL Server Agent, existe somente uma instncia do servio Microsoft
Search, independente de quantas instncias do SQL Server 2000 estejam instaladas no servidor.
Agora que j conhecemos os servios disponveis, vamos aprender a gerenci-los, utilizando duas
ferramentas: o Service Manager e o Snap-in Services.
FUNDAMENTOS EM: GERENCIAMENTO
DOS SERVIOS DO SQL SERVER 2000
PR-REQUISITOS
Ter instalado as instncias SERVIDOR\SRVINST01 e SERVIDOR\SRVINST02 no Windows 2000 Server.
METODOLOGIA
Gerenciamento dos servios de cada instncia do SQL Server 2000.
TCNICA
Utilizar o Gerenciador de Tarefas do Windows 2000.
Ns podemos configurar um determinado servio para que o mesmo seja inicializado, automaticamente,
quando o Windows 2000 iniciado. Para servios fundamentais, como o servio SQL Server, que deve
estar sempre disponveis, a opo de inicializar automaticamente, a mais indicada. Porm para servios
que somente sero utilizados eventualmente, o ideal que o servio no seja inicializado
automaticamente, mas somente quando o mesmo for necessrio. Um servio que no inicializado
automaticamente, pode ser inicializado a qualquer momento, utilizando as ferramentas que
aprenderemos nesta seo.
Antes de continuarmos, vamos fazer um parnteses para falar de MMC Microsoft Management Con-
sole e Snap-ins (vamos optar por no traduzir, uma vez que o termo j consagrado), pois a principal
ferramenta de administrao do SQL Server 2000, o Enterprise Manager, uma ferramenta baseada
nos conceitos de MMC e Snap-ins.
UM PEQUENO PARNTESES PARA APRENDER SOBRE MMC E SNAP-INS
O MMC foi criado para servir como uma interface unificada para a administrao e gerenciamento dos
mais variados recursos do Windows 2000 Server e dos demais produtos da Microsoft, como o SQL
Server, SMS Server, Exchange, IIS, etc. Em verses anteriores dos produtos da Microsoft, cada tarefa
possua um aplicativo com uma interface diferente. Por exemplo, no Windows NT Server 4.0, a inter-
face do User Manager for Domains (o qual utilizado para criar contas e grupos) era completamente
diferente da interface de outras ferramentas administrativas, tais como o Disk Manager (utilizado para
gerenciar os discos rgidos e parties). Com isso o administrador precisava aprender a utilizar uma
srie de interfaces diferentes.
O MMC se prope a resolver esse problema, fornecendo uma interface muito semelhante para todas as
tarefas administrativas. O MMC vem sendo utilizado em programas como o Internet Information
Server 4.0 (Servidor Web da Microsoft), Proxy Server 2.0 (Firewall para proteo da rede interna),
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
80 00CURSO COMPLETO
Microsoft SQL Server desde a verso 7.0, dentre outros programas da Microsoft. Com o Windows 2000
Server distribuda a verso 1.2 do MMC.
Na verdade, o MMC sozinho no oferece nenhuma funcionalidade. O MMC fornece uma maneira
padronizada para a criao de ferramentas administrativas. Toda a funcionalidade do MMC fornecida
por aplicaes de gerenciamento e administrao chamadas Snap-ins. O MMC funciona simplesmente
como um hospedeiro para os diversos Snap-ins disponveis.
Voc pode utilizar o MMC para uma srie de atividades, tais como:
Realizar a maioria das tarefas administrativas do dia-a-dia.
Fazer o gerenciamento e a administrao de uma maneira centralizada.
Fazer administrao e gerenciamento remoto, desde que possua as devidas permisses para isso.
Quando abrimos a ferramenta para administrar contas de usurios e grupos do Windows 2000 Server,
por exemplo, na verdade estamos abrindo o MMC e carregando o Snap-in especialmente projetado para
realizar as tarefas administrativas relativas a usurios e grupos. Podemos ter um ou mais Snap-in carregado
no MMC, de tal forma que em uma mesma janela podemos realizar as mais variadas tarefas administrativas.
O melhor exemplo disso o Snap-in Gerenciamento do Computador (Iniciar -> Programas -> Ferramentas
administrativas -> Gerenciamento do computador). Utilizaremos este Snap-in mais adiante.
Vamos a um exemplo prtico.
Exemplo 1: Vamos abrir o MMC sem nenhum Snap-in carregado. Conforme este exerccio mostrar o
MMC em si no oferece funcionalidade nenhuma, a qual fornecida pelos Snap-ins carregados.
Para abrir o MMC sem nenhum Snap-in carregado:
1. D um clique no boto Iniciar.
2. Clique na opo Executar.
3. Na janela que surge, no campo Abrir, digite mmc e d um clique em OK.
4. Ser aberta uma janela conforme indicada na Figura 2.38. Esta janela mostra o MMC sem
nenhum Snap-in Carregado.
Agora vamos abrir o MMC com alguns Snap-ins j carregados. Vamos tambm dar uma analisada na
interface do mesmo.
Feche o MMC aberto anteriormente.
Para abrir o MMC para Gerenciamento do Computador:
1. D um clique no boto Iniciar, aponte para Programas e dentro de Programas para Ferramentas
administrativas.
2. No menu de Opes que surge d um clique em Gerenciamento do computador.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
81 CURSO COMPLETO00
Figura 2.38 MMC sem nenhum Snap-in carregado.
Caso no estejam aparecendo todas as opes, d um clique na opo que uma flechinha dupla para
baixo, com isso o Windows 2000 Server exibe todas as opes do menu, inclusive as menos utilizadas.
3. Ir surgir a janela indicada na Figura 2.39. Observe que temos diversos Snap-ins carregados.
Nesta janela voc pode administrar Armazenamento, Pastas Compartilhadas, Analisar os logs
do sistema, etc.
Figura 2.39 MMC com vrios Snap-ins carregados.
A maneira de utilizarmos um Snap-in e navegar pelas opes disponveis, exatamente igual utilizada
no Windows Explorer. Vamos navegando atravs do painel da esquerda e quando um elemento do
painel da esquerda selecionado, o seu contedo exibido no painel da direita.
Alm disso os menus e botes da barra de ferramentas vo se modificando, dependendo do elemento
selecionado. Isso porque as aes que podemos realizar, por exemplo, sobre um usurio, so diferentes
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
82 00CURSO COMPLETO
das aes que podemos realizar sobre um disco rgido. Essa mudana nos menus e na barra de ferramentas
serve para refletir quais as aes so possveis sobre o elemento selecionado.
4. Para abrir a pasta Grupos, d um clique no sinal de + ao lado da opo Usurios e grupos
locais. Esta opo se abre mostrando duas opes ligadas a ela: Usurios e Grupos. Se o seu
servidor for um Controlador de domnio, a opo Usurios e grupos locais estar desabilitada,
o que indicado por um x vermelho.
5. Para ver uma listagem dos Grupos em seu computador, d um clique em Grupos. No painel da
direita ser exibida uma listagem com os grupos disponveis.
Voc tambm pode utilizar o boto direito do mouse. Por exemplo, se voc clicar com o boto direito
sobre a opo Usurios, surge um menu cuja primeira opo Novo usurio. Esta opo pode ser
utilizada para cadastrar um novo usurio.
Dependendo do computador ser um Controlador de Domnio ou um Member Server, esta interface pode apresentar algumas diferenas.
6. Feche o MMC para Gerenciamento do Computador.
Um MMC com um ou mais Snap-ins carregados chamado de um Console MMC. Quando instalamos
o Windows 2000 Server, j so adicionados diversos Consoles MMC pr-configurados para que possamos
executar as tarefas administrativas mais comuns. Estes consoles podem ser acessados atravs do menu
Ferramentas administrativas. O SQL Server 2000 nos fornece o console Enterprise Manager, o qual
estaremos utilizando ao longo deste livro.
Tambm podemos criar nossos prprios consoles pr-configurados, os quais podem ser salvos em
arquivos com a extenso .MSC. Depois para abrirmos um console pr-configurado basta abrirmos o
arquivo com a extenso .MSC, utilizando para isso o MMC.
Vamos a mais um exemplo.
Suponhamos que voc queira um console somente para administrar contas de usurios e grupos, sem
todas as demais opes do console pr-configurado Gerenciamento do computador. Vamos abrir o
MMC sem nenhum Snap-in e carregar apenas o Snap-in para administrao de Contas de usurios e
grupos. Depois vamos salvar este console com o nome de administra_usuarios.msc. Por ltimo vamos
verificar que o Windows 2000 Server j cria um atalho automaticamente para o novo console criado,
no menu Ferramentas administrativas.
Para abrir o MMC sem nenhum Snap-in carregado:
1. D um clique no boto Iniciar.
2. Clique na opo Executar.
3. Na janela que surge, no campo Abrir digite mmc e d um clique em OK.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
83 CURSO COMPLETO00
4. Ser aberta uma janela sem nenhum Snap-in carregado.
Para carregar apenas o Snap-in para administrao de contas de usurios e grupos:
1. Com o MMC, aberto no exerccio anterior carregado, d um clique no menu Console e escolha
a opo Adicionar/remover snap-in. Ser exibida a janela indicada na Figura 2.40.
Figura 2.40 Clique no boto Adicionar para adicionar um snap-in.
2. D um clique no boto Adicionar.
3. Ser exibida a janela Adicionar snap-in autnomo, na qual exibida uma listagem com todos
os snap-ins disponveis. Localize na listagem o seguinte snap-in: Usurios e grupos locais. D
um clique sobre ele para selecion-lo e clique no boto Adicionar.
Caso voc esteja em um Controlador de Domnio, escolha o snap-in Usurios e computadores do Active Directory. Para maiores
informaes sobre contas de usurios e grupos e Active Directory, consulte o livro Microsoft Windows 2000 Server Curso Bsico &
Rpido, 432 pginas, de minha autoria, publicado pela editora Axcel Books (www.axcel.com.br).
4. Surge a janela Escolher mquina de destino. Essa janela permite que voc defina em qual computador
voc quer gerenciar as contas de usurios e grupos. Neste momento voc pode gerenciar usurios e
grupos de um computador remoto, desde que voc tenha permisso para isso. D um clique no
boto Concluir.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
84 00CURSO COMPLETO
5. Voc estar de volta a janela Adicionar snap-in autnomo. Como no queremos adicionar
mais nenhum snap-in, d um clique no boto Fechar.
6. Voc estar de volta janela Adicionar/remover snap-in. Observe que o snap-in Usurios e
grupos locais (local) j aparece na listagem, conforme indicado na Figura 2.41. D um clique
em OK para fechar a janela Adicionar/remover snap-in.
Figura 2.41 Snap-in Usurios e grupos locais j adicionado.
O local entre parnteses indica o computador local.
Voc estar de volta ao MMC, agora com o snap-in Usurios e grupos locais j carregado.
Para salvar o console com o nome de administra_usuarios.msc:
1. D um clique no menu Console e escolha a opo Salvar.
2. Na janela Salvar como, no campo Nome do arquivo, digite administra_usuarios.msc.
3. D um clique no boto Salvar.
4. Feche o MMC.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
85 CURSO COMPLETO00
Para verificar se o Windows 2000 Server criou um atalho para o novo console criado:
1. D um clique no boto Iniciar, aponte para Programas e dentro de Programas para Ferramentas
administrativas.
2. No menu de opes que surge verifique se foi adicionada uma opo chamada
administra_usuarios.msc.
3. Essa opo um atalho para o console recm-criado, o qual possui apenas o snap-in Usurios
e grupos locais, carregado.
4. Se voc clicar nesta opo, ser aberto o console anteriormente criado.
Existem muitas aplicaes prticas para a criao de consoles personalizados. Por exemplo, caso um
funcionrio seja responsvel apenas pelo gerenciamento de usurios e grupos, voc pode criar um
console personalizado somente com o snap-in necessrio. Isso facilita o trabalho, uma vez que a inter-
face fica mais simples e impede o acesso a operaes que no fazem parte das atribuies do funcionrio.
Agora vamos encerrar o nosso pequeno parnteses sobre MMC e Snap-in e voltar ao gerenciamento de
servios do SQL Server 2000. Vamos aprender a utilizar o Snap-in Servios e o aplicativo Service Manager.
UTILIZANDO O SNAP-IN SERVICE MANAGER O CONSOLE SERVIOS
Qualquer servio disponvel, e no somente os servios do SQL Server 2000, pode ser gerenciado pelo Snap-
in Service Manager. Atravs deste Snap-in podemos efetuar diversas configuraes, como por exemplo:
Configurar um servio para que o mesmo seja inicializado automaticamente.
Parar um servio.
Inicializar um servio.
Configurar qual a conta que ser utilizada para inicializar o servio.
Configurar o comportamento do servio em caso de falha. Por exemplo, podemos pedir para
que o servio seja reinicializado em caso de falha.
Vamos aprender a utilizar o Snap-in Servios atravs de um exemplo prtico. Vamos abri-lo e verificar
as opes de configurao disponveis para o servio MSSQL$SRVINST01, que conforme foi visto
anteriormente o servio SQL Server para a instncia SRVINST01. Lembre que esta foi a primeira
instncia que instalamos no nosso servidor.
Para verificar as opes de configurao do servio MSSQL$SRVINST01:
1. Abra o Snap-in Servios: Iniciar -> Programas -> Ferramentas administrativas -> Servios. Surge
a janela indicada na Figura 2.42.
2. Na listagem de servios, a qual por padro est ordenada ascendentemente pelo nome do
servio, localize o servio chamado MSSQL$SRVINST01.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
86 00CURSO COMPLETO
Figura 2.42 O console para gerenciamento de Servios.
Observe que ao lado do nome do servio, temos mais colunas de informao. Estas colunas informam
se o servio est carregado na memria (Iniciado); o Tipo de inicializao indica se o servio carregado
automaticamente ou no, quando o Windows 2000 inicializado e assim por diante.
3. D um clique com o boto direito do mouse sobre o nome do servio.
No menu que surge temos diversas opes, conforme descrito a seguir:
Iniciar: Esta opo carrega o servio na memria. Se o servio j estiver carregado, esta
opo estar desabilitada.
Parar: Esta opo para o servio, descarregando o mesmo da memria. Os usurios no
podero mais se conectar com o servidor SQL enquanto o servio no for reinicializado.
Os usurios que estiverem conectados sero desconectados.
Pausar: Esta opo faz com que o servidor SQL Server no aceite novas conexes, porm os
usurios que esto atualmente conectados, continuam podendo acessar os recursos do
servidor SQL Server.
Continuar: Faz com que o servidor SQL Server volte a aceitar novas conexes. Esta opo
est desabilitada se o servio no estiver em pausa.
Reiniciar: Descarrega o servio da memria e o carrega novamente. Esta opo pode ser
utilizada quando o servidor comear a apresentar algum comportamento estranho, sem
justificativa aparente. Nestas situaes, reinicializar o servidor pode ser a melhor opo.
4. D um clique duplo no nome do servio. Ser aberta a janela Propriedades MSSQL$SRVINST01,
a qual apresenta quatro guias de opes.
Na guia Geral, conforme indicado na Figura 2.43, exibido o nome do servio, e temos a opo de
inserir uma descrio para o mesmo. Na lista Tipo de inicializao, podemos escolher se o servio deve
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
87 CURSO COMPLETO00
ser inicializado automaticamente, manualmente ou deve ser desativado. H ainda botes para Iniciar,
Parar, Pausar e Continuar o servio. Tambm temos um campo para passar um parmetro de inicializao,
caso o servio em questo exija algum.
Figura 2.43 A guia Geral das propriedades do servio.
Na guia Logon, conforme indicado na Figura 2.44, podemos definir qual a conta que ser utilizada
para inicializar o servio. Caso tenhamos mais do que um perfil de hardware, podemos habilitar ou
desabilitar o servio, nos diferentes perfis existentes. Vamos supor que voc tenha criado um perfil de
hardware chamado manuteno. Quando voc inicializa o servidor e seleciona este perfil de hardware,
pode ser interessante que o mesmo tenha todos os servios no necessrios manuteno, desabilitados
para que sejam liberados recursos como memria e processador para as tarefas de manuteno.
Na guia Recuperao, conforme indicado na Figura 2.45, podemos definir qual deve ser o
comportamento do servio no caso de uma falha do mesmo. Estas opes so uma das novidades do
Windows 2000 em relao ao Windows NT Server 4.0. Podemos definir diferentes aes para a primeira
falha do servio, para a segunda falha do servio e para as falhas posteriores, dentro de um perodo de
tempo definido no campo Zerar a contagem de falhas aps x dias. As aes possveis so: No executar
nenhuma ao, Reiniciar o servio, Executar um arquivo ou Reiniciar o computador. Por exemplo,
podemos escolher Reiniciar o servio para a primeira falha; Executar um arquivo, para executar um
programa que avisa o Administrador via e-mail e reinicializa o servio para a segunda falha; e Reiniciar
o computador para uma falha posterior. As opes Executar arquivo e Parmetros de linha de
comando somente sero habilitadas quando escolhermos Executar um arquivo como ao para uma
das falhas primeira, segunda ou posterior.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
88 00CURSO COMPLETO
Figura 2.44 A guia Logon das propriedades do servio.
Figura 2.45 A guia Recuperao das propriedades do servio.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
89 CURSO COMPLETO00
Na guia Dependncias, conforme indicado na Figura 2.46, temos informaes de quais Servios o
servio em questo depende, e quais Servios dependem do servio em questo. Conforme a Figura
2.46, o servio SQL Server Agent depende do servio SQL Server. Isto significa que se o servio SQL
Server no estiver inicializado, o servio SQL Server Agent no poder ser inicializado. O Windows
2000 Server utiliza estas informaes para determinar a ordem correta de inicializao dos servios ao
inicializar o Sistema Operacional.
Figura 2.46 A guia Dependncias das propriedades do servio.
5. Clique em Cancelar para fechar a janela com as propriedades do servio MSSQL$SRVINST01.
6. Feche o console Servios.
Muitas vezes uma determinada funcionalidade do Windows ou do SQL Server no est funcionando corretamente. Um dos locais que
devemos verificar no console Servios, para nos certificar que todos os servios necessrios foram devidamente inicializados.
As opes vistas neste exemplo esto disponveis para todos os servios e no apenas para os servios do SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
90 00CURSO COMPLETO
UTILIZANDO O SERVICE MANAGER QUE VEM COM O SQL SERVER 2000
Ao instalarmos o SQL Server 2000 instalado um programa chamado Service Manager, o qual pode ser
acessado utilizando o seguinte comando: Iniciar -> Programas -> Microsoft SQL Server -> Service Manager.
Este programa um utilitrio que nos permite gerenciar os servios do SQL Server de uma maneira bastante
simples. O Service Manager tambm pode ser acessado atravs de um pequeno cone que fica disponvel na
Bandeja do Sistema (no canto inferior direito do vdeo), ao lado do relgio, conforme indicado pela Figura
2.47. Para iniciar o Service Manager basta dar um clique duplo neste cone.
Figura 2.47 O cone do Service Manager na bandeja do sistema.
Utilizando o Service Manager podemos realizar as seguintes aes com os servios do SQL Server 2000:
Inicializar (Start) um servio.
Continuar (Continue) o servio, caso ele tenha sido colocado em Pausa.
Colocar o servio em Pausa (Pause).
Configurar o servio para inicializar automaticamente quando o Sistema Operacional
inicializado.
Na Figura 2.48, vemos a tela para gerenciamento de servios do Service Manager.
Figura 2.48 Service Manager.
Na lista Server podemos selecionar qual a instncia do SQL Server cujos servios queremos gerenciar.
No nosso exemplo temos duas instncias instaladas, conforme pode ser visto na Figura 2.49.
Uma vez selecionada a instncia na lista Server, podemos selecionar o servio na lista Services.
importante lembrar que para os servios Distributed Transaction Cordinator e Microsoft Search existe,
sempre, uma nica instncia do servio carregada na memria, independente de quantas instncias
do SQL Server 2000 estejam instaladas no servidor.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
91 CURSO COMPLETO00
Figura 2.49 Duas instncias do SQL Server instaladas.
Na parte de baixo do Service Manager temos a barra de Status, onde existe a descrio do Status do
servio selecionado. Running indica que o servio est rodando. Pause significa que o servio est em
Pausa. Stopped indica que o servio foi parado. Para cada um destes estados, existe um cone diferente.
Uma flechina verde indica que o servio est rodando. Dois tracinhos verticais pretos indicam que o
servio est pausado. Um retngulo vermelho indica que o servio est parado.
Outro cuidado que devemos ter com a dependncia dos servios. Por exemplo, se pararmos o servio
SQL Server, tambm ser encerrado o servio SQL Server Agent, pois este ltimo depende do primeiro.
Ao reinicializarmos o servio SQL Server, o SQL Server Agent no ser automaticamente inicializado.
PARANDO E INICIALIZANDO SERVIOS COM O COMANDO NET
Tambm podemos parar e inicializar servios utilizando o comando net, em um Prompt de Comando
(Iniciar -> Programas -> Acessrios -> Prompt de comando).
A sintaxe do comando net para parar um servio a seguinte:
net stop NomeDoServio
Por exemplo, para parar o servio SQL Server da instncia SRVINST01, podemos utilizar o seguinte comando:
net stop MSSQL$SRVINST01
Caso haja algum servio dependente no nosso exemplo o SQL Server Agent dependente do SQL
Server, voc ser avisado que os servios dependentes tambm sero finalizados e ser solicitada)
confirmao para continuar com a operao, conforme indicado na Figura 2.50.
A sintaxe do comando net para inicializar um servio a seguinte:
net start NomeDoServio
Por exemplo, para inicializar o servio SQL Server da instncia SRVINST01, podemos utilizar o seguinte
comando:
net start MSSQL$SRVINST01
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
92 00CURSO COMPLETO
Figura 2.50 Confirmao do comando net stop.
CONCLUSO
Iniciamos o captulo com uma introduo a um srie de conceitos importantes como Comrcio Eletrnico,
CRM, transaes, etc. Na seqncia, aprendemos sobre arquitetura de aplicaes, desde a tradicional
arquitetura Cliente/Servidor com seus problemas, at modernas aplicaes de trs ou mais camadas.
Foram apresentados os principais problemas com a arquitetura de duas camadas, principalmente quanto
a dificuldade de manuteno e o elevado TCO deste modelo. Apresentamos as solues propostas
pelos modelos de trs ou mais camadas, sendo que as principais so as seguintes:
Facilidade de instalao e manuteno.
Facilidade na atualizao de verses.
Reduo do TCO.
Entender as vantagens e desvantagens de cada uma das arquiteturas muito importante para que
possamos desenvolver as solues mais adequadas a cada situao.
importante sempre lembrarmos o papel de um Banco de Dados como o SQL Server 2000 no
desenvolvimento de aplicaes. O SQL Server 2000 no a ferramenta que ser utilizada para o
desenvolvimento da aplicao como um todo. Para o desenvolvimento/codificao de uma aplicao
utilizamos ferramentas como o Visual Basic, Delphi, Visual C++, Visual Interdev, Borland C++, Power
Builder, etc. Alm das ferramentas de desenvolvimento, so utilizadas uma srie de outras ferramentas
que do apoio ao processo de desenvolvimento de aplicaes.
O SQL Server 2000 oferece vrias funcionalidades sempre ligadas ao Banco de Dados da aplicao,
como por exemplo:
Armazenamento das tabelas de dados.
Pesquisa nos dados com a utilizao da linguagem T-SQL.
Suporte a transaes.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2000
93 CURSO COMPLETO00
Nveis de segurana e auditoria no acesso aos dados.
Suporte a replicao de dados entre servidores.
Rotinas de Backup e Restore.
Uma vez que estamos utilizando diversas funcionalidades oferecidas pelo prprio Banco de Dados,
no precisamos codificar estas funcionalidades dentro da nossa aplicao. Isto facilita e simplifica o
processo de desenvolvimento.
Seguindo no captulo, aprendemos a fazer a instalao do SQL Server em diversas verses do Windows.
Tambm aprendemos a criar mltiplas instncias do SQL Server em um mesmo servidor. Fizemos,
passo a passo, as seguintes instalaes:
Instncia SRVINST01 no Windows 2000 Server.
Instncia PROINST01 no Windows 2000 Professional.
Instncia W98INST01 no Windows 98.
Instncia SRVINST02 no Windows 2000 Server.
Aps instalado o SQL Server, aprendemos a gerenciar os servios que compem o SQL Server e a
utilizar o console Servios e o Service Manager, que vem junto com o SQL Server 2000.
Tambm fizemos um pequeno parnteses para apresentar os conceitos de MMC e Snap-in. Apresentamos
alguns exemplos de utilizao do MMC, bem como da criao de Consoles personalizados.
SQL Server 2000 instalado e os respectivos servios corretamente inicializados, agora hora de
comearmos a utilizar o Banco de Dados. Mas isto assunto para o prximo captulo.
Por enquanto se voc quiser estudar um pouco mais sobre o SQL Server 2000, pode consultar um dos
seguintes endereos:
www.microsoft.com/sql
www.swyink.com
www.sqlmag.com
Este material no pode ser utilizado em treinamentos e em Sala de Aula
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
95 CURSO COMPLETO00
Captulo 3
TRABALHANDO COM BANCO DE DADOS
NO MICROSOFT SQL SERVER 2000
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
96 00CURSO COMPLETO
INTRODUO
J aprendemos os conceitos bsicos sobre Bancos de Dados Relacionais no Captulo 1. Tambm
aprendemos a instalar e gerenciar os servios do SQL Server 2000 no Captulo 2. Agora vamos comear
a trabalhar com o SQL Server 2000.
Neste captulo aprenderemos um pouco mais sobre as ferramentas de administrao que so
disponibilizadas com o SQL Server 2000. Estaremos trabalhando, basicamente, com:
Enterprise Manager
Query Analyzer
Tambm aprenderemos a configurar alguns parmetros importantes, os quais afetam cada instncia do
SQL Server separadamente. Por exemplo, podemos limitar a quantidade de memria RAM disponvel
para cada instncia ou podemos deixar que o prprio SQL Server gerencie a quantidade de memria a ser
utilizada. Tambm podemos definir, para o caso de servidores multiprocessados, se todos os processadores
podem ser utilizados ou se sero alocados processadores separados para cada instncia, etc.
Depois daremos uma passeada pelo Enterprise Manager, mostrando as principais opes de configurao
disponveis e quais as tarefas que podem ser realizadas. Conforme veremos, o Enterprise Manager nada
mais do que um Snap-in de administrao para o SQL Server 2000.
Ainda utilizando o Enterprise Manager veremos quais os Bancos de Dados que so criados,
automaticamente, quando da instalao do SQL Server 2000. Veremos qual a funo de cada um dos
Bancos de Dados criados na instalao.
Em seguida apresentaremos algumas sugestes para a otimizao dos Bancos de Dados em relao ao
armazenamento em disco. Veremos os conceitos de RAID-0, RAID-1 e RAID-5. A utilizao de arranjos do
tipo RAID fornece tolerncia a falhas e tambm maior desempenho do Banco de Dados. Veremos algumas
configuraes que podem nos ajudar a obter um melhor desempenho na utilizao dos discos.
Na seqncia veremos qual a estrutura de um Banco de Dados no SQL Server 2000. Veremos quais os
arquivos que so criados para um Banco de Dados, e aprenderemos a identificar cada tipo de arquivo
pela sua extenso.
Uma vez entendida a estrutura fsica do Banco de Dados, vamos partir para a criao de um exemplo.
Na verdade, criaremos dois bancos de dados de exemplo: um utilizando o Enterprise Manager e outro
utilizando o Query Analyzer. Aps criados os Bancos de Dados, vamos conferir se os arquivos dos
mesmos foram realmente criados.
Encerrado este captulo, o amigo leitor dever estar habilitado para as seguintes tarefas:
Acessar as diversas instncias do SQL Server, utilizando o Enterprise Manager e o Query Analyzer.
Configurar as principais opes para cada uma das instncias instaladas.
Entender a estrutura de armazenamento em disco de um Banco de Dados do SQL Server 2000.
Criar Bancos de Dados utilizando o Enterprise Manager e o Query Analyzer.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
97 CURSO COMPLETO00
Conhecer os arranjos de RAID-0, RAID-1 e RAID-5, sabendo qual oferece tolerncia a falhas e como
cada um se comporta em relao ao desempenho das operaes de leitura e escrita no arranjo.
FUNDAMENTOS EM: UTILIZAO DO ENTERPRISE MANAGER
PR-REQUISITOS
Noes bsicas do Windows e dos MMC Microsoft Management Console.
METODOLOGIA
Apresentao dos elementos principais do Enterprise Manager.
A principal ferramenta de administrao do SQL Server 2000 o console Enterprise Manager, o qual
pode ser acessado utilizando-se o seguinte caminho: Iniciar -> Programas -> Microsoft SQL Server ->
Enterprise Manager. Este console nos d acesso a maioria das tarefas necessrias a criao e manuteno
de um Banco de Dados no SQL Server 2000.
Vamos, atravs de exemplos, aprender a utilizar algumas das funcionalidades do Enterprise Manager. Ao
longo deste livro, estaremos voltando diversas vezes ao Enterprise Manager para executar as tarefas propostas.
Exemplo:
Abrindo e navegando pelas opes do Enterprise Manager:
1. Abra o Enterprise Manager: Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager.
Se for a primeira vez que voc estiver abrindo este console, deve aparecer a tela indicada na Figura 3.1.
Figura 3.1 A tela inicial do Enterprise Manager.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
98 00CURSO COMPLETO
O primeiro nvel desta console Microsoft SQL Servers. Abaixo deste nvel podem ser criados grupos
de servidores. Por padro criado somente o grupo SQL Server Group. A criao de grupos apenas
para simplificar os procedimentos administrativos. Por exemplo, poderamos criar um grupo chamado
Contabilidade, dentro do qual registraramos os servidores da seo de Contabilidade, desta forma
poderamos ter uma viso unificada de todos os servidores SQL Server do departamento. Tambm
poderamos criar grupos utilizando um critrio de localizao geogrfica dos servidores SQL Server.
Observe que no pargrafo anterior me referi a fazer o registro de um servidor. Fazer o registro
simplesmente adicionar um determinado servidor ao console do Enterprise Manager, desta maneira
poderemos administrar diversos servidores em um nico console. Este procedimento facilita a
administrao centralizada dos servidores SQL Server.
2. D um clique no sinal de mais ao lado do grupo SQL Server Group para exibir os servidores
registrados. Somente a primeira instncia instalada do SQL Server 2000 registrada no console
do Enterprise Manager. No nosso exemplo est registrada a instncia SERVIDOR\SRVINST01.
Observe que abaixo da instncia SRVINST01 aparecem os diversos elementos que compem um servidor
SQL Server 2000. O primeiro elemento Databases. Ao expandir esta opo, sero exibidos todos os
Bancos de Dados que esto disponveis nesta instncia do Servidor SQL Server, conforme podemos ver
na Figura 3.2.
Mantenha o Enterprise Manager aberto.
Figura 3.2 Bancos de Dados da instncia SERVIDOR\SRVINST01.
Veremos quais as funes destes Bancos de Dados, os quais so criados quando da instalao do SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
99 CURSO COMPLETO00
Porm, voc deve estar lembrado do Captulo 2, que ns temos duas instncias do SQL Server 2000
instaladas. Para poder administrar e ter acesso aos elementos da segunda instncia, preciso registr-
la no Enterprise Manager. Lembre que na prtica, as duas instncias do SQL Server se comportam
como se fossem dois servidores completamente independentes. Vamos aprender a registrar um servidor
SQL Server no Enterprise Manager.
Exemplo:
Para registrar a instncia SERVIDOR\SRVINST02 no Enterprise Manager:
1. O Enterprise Manager deve ter sido mantido aberto no exemplo anterior. Caso o mesmo tenha
sido fechado, abra-o novamente.
2. Clique com o boto direito do mouse no nome do grupo SQL Server Group.
3. No menu de opes que surge, d um clique na opo New SQL Server Registration.
4. Ser aberto o assistente Register SQL Server Wizard. A tela inicial do assistente apenas
informativa. D um clique no boto Avanar para ir para a prxima etapa.
5. Na segunda etapa do assistente, voc pode selecionar o servidor e a instncia a ser registrada.
As instncias do servidor local, ainda no registradas, so exibidas na listagem na parte esquerda
da tela. Caso voc queira registrar uma instncia que est em um outro servidor, basta digitar o
nome do servidor no campo Available servers. No nosso exemplo, vou selecionar a instncia
SERVIDOR\SRVINST02, conforme indicado na Figura 3.3.
Figura 3.3 Registrando mais uma instncia do SQL Server.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
100 00CURSO COMPLETO
6. Aps selecionar a instncia a ser registrada, d um clique no boto Add para traz-la para a listagem
da direita. Depois d um clique no boto Avanar para seguir para a prxima etapa do assistente.
7. Agora voc precisa definir o tipo de autenticao que ser utilizada para acessar este servidor atravs
do Enterprise Manager. A primeira opo define que seja utilizada a mesma conta que voc fez o
logon no Windows 2000. Este modo chamado de Windows Authentication. A segunda opo
(SQL Server Authentication) faz com que seja utilizada uma conta do prprio SQL Server. Certifique-
se de que a primeira opo (Windows Authentication) esteja selecionada e d um clique no
boto Avanar.
Nesta etapa devemos definir se o servidor\instncia que est sendo registrada, deve ser adicionado a
um grupo de servidores j existentes ou se devemos criar um novo grupo. No nosso exemplo, vamos
adicion-lo ao grupo SQL Server Group j existente. Esta a opo padro que j vem selecionada. Se
quissemos adicion-lo a um outro grupo j existente, bastaria selecionar o grupo na lista Group name.
Caso quissemos criar um novo grupo, deveriamos selecionar a segunda opo Create a new top-lever
SQL Server Group e digitar o nome do novo grupo a ser criado no campo Group name da parte
inferior da tela.
8. Vamos aceitar o padro selecionado. D um clique no boto Avanar para ir tela final do
assistente.
9. Na tela final exibido o nome do servidor\instncia que est sendo registrado. D um clique
no boto Concluir para concluir o registro.
10. Ser exibida uma tela indicando que a conexo est sendo feita, e no final a indicao que o
registro foi completado com sucesso, conforme indicado na Figura 3.4. Basta dar um clique no
boto Close e voc estar de volta ao Enterprise Manager, onde j teremos acesso instncia
SERVIDOR\SRVINST02 recm registrada, conforme indicado na Figura 3.5.
Figura 3.4 Tela indicando que o registro foi completado.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
101 CURSO COMPLETO00
Figura 3.5 A instncia SERVIDOR\SRVINST02 no Enterprise Manager.
11. Mantenha o Enterprise Manager aberto.
Agora vamos aprender a configurar algumas opes importantes de uma instncia do SQL Server 2000.
Estas opes so facilmente acessadas e configuradas com a utilizao do Enterprise Manager.
Exemplo:
Para configurar algumas opes da instncia SERVIDOR\SRVINST01:
1. As opes de configurao de uma instncia so acessadas atravs das propriedades da instncia.
Se o Enterprise Manager no estiver aberto, abra-o.
2. D um clique no sinal de mais ao lado do grupo SQL Server Group para abri-lo.
3. Para acessar as propriedades da instncia SERVIDOR\SRVINST01, d um clique com o boto
direito sobre a mesma. No menu de opes que surge d um clique em Propriedades. Ser
aberta a janela de propriedades da instncia, na qual temos nove guias. As principais opes
que podem ser configuradas em cada guia, sero descritas na seqncia.
Na guia General, conforme indicado na Figura 3.6, exibida uma srie de informaes sobre a instncia
SERVIDOR\SRVINST01. Observe que para o Sistema Operacional informada a verso NT 5.0
(2195), que nada mais do que o Windows 2000 Server verso final. Nesta guia tambm podemos
configurar se os servios do SQL Server devem ser inicializados automaticamente quando o Sistema
Operacional inicializado. Tambm podemos definir parmetros de inicializao para o SQL Server
(boto Startup Parameters), ou configurar as opes de rede (boto Network Configuration). O boto
Network Configuration lana o utilitrio SQL Server Network Utility, o qual tambm pode ser acessado
em Iniciar -> Programas -> Microsoft SQL Server -> Server Network Utility. Este utilitrio permite que
sejam definidos quais os protocolos de comunicao disponveis para o servidor SQL.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
102 00CURSO COMPLETO
Figura 3.6 A guia General.
Na guia Memory, conforme indicado na Figura 3.7, podemos definir qual a memria que estar
disponvel para o SQL Server. Existe a opo de configurarmos manualmente estes valores ou permitirmos
que o prprio SQL Server configure estes valores. Na maioria das situaes, pode ser mais indicada a
configurao automtica pelo SQL Server.
A seguir temos uma descrio das principais opes da guia Memory:
Dynamically configure SQL Server memory: Permite que o prprio SQL Server gerencie a
utilizao da memria.
Reserve physical memory for SQL Server: Esta opo permite que seja reservada uma parte da
memria fsica para o SQL Server. A parte reservada no ser descarregada para o arquivo de
troca (Swap) no disco, mesmo que a memria no esteja sendo utilizada por algum tempo.
Minimum query memory: Determina a quantidade mnima de memria que deve ser alocada
para a execuo de consultas dos usurios. O valor padro 1024 KB, ou seja, 1 MB.
Configured values: Esta opo exibe os valores atualmente em uso e permite que voc os altere.
Se voc alterar algum valor, clique na opo Running values para verificar se as alteraes j
tiveram efeito. Se as alteraes que voc fez ainda no tiverem sido implementadas, voc dever
parar e reinicializar o servio SQL Server para a instncia que est sendo configurada. No nosso
exemplo, deveramos parar e reinicializar o servio MSSQL$SRVINST01.
Running values: Exibe os valores atualmente em uso. Estes valores no podem ser alterados
enquanto a opo Running values estiver selecionada.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
103 CURSO COMPLETO00
Figura 3.7 A guia Memory.
Na guia Processor, conforme indicado na Figura 3.8, podemos configurar como o SQL Server utilizar
o(s) processador(es) instalado(s) no servidor. Caso tenhamos uma mquina com mltiplos processadores,
podemos definir qual o processador que deve ser utilizado pela instncia do SQL Server que est sendo
configurada.
A seguir temos uma descrio das principais opes da guia Processor:
Boost SQL Server priority on Windows: Podemos definir que a instncia do SQL Server que est
sendo configurada, rode em um nvel de prioridade mais elevado do que outros processos que
esto rodando no servidor. Quanto mais elevado o nvel de prioridade, maior o tempo que o
processador dedica para um determinado processo. O valor padro 0, o qual estabelece uma
prioridade 7, que a prioridade padro. Se definirmos um valor 1 para esta opo, estaremos
definindo uma prioridade 13, tanto no Windows NT 4.0 quanto no Windows 2000. Segundo o
Books OnLine, somente devemos alterar o valor padro elevando-o, em servidores que so
dedicados exclusivamente ao SQL Server. Em servidores que executam outras funes, como
um servidor Web com o IIS, se elevarmos a prioridade de execuo do SQL Server, estaremos
penalizando o desempenho dos demais processos em favor do SQL Server.
Use Windows NT fibers: Esta uma opo bastante tcnica, que altera a maneira como o
Windows 2000 executa os processos do SQL Server. Ao definirmos esta opo, estamos
solicitando que uma determinada instncia do SQL Server utilize fibers ao invs de threads.
Esta configurao define que seja alocada uma thread por CPU a um fiber para cada usurio
concorrente, at o valor definido no campo Maximum worker threads. Esta configurao
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
104 00CURSO COMPLETO
somente ter efeito aps a reinicializao do SQL Server. Para maiores informaes sobre threads,
fibers e processos, consulte o site msdn.microsoft.com.
Figura 3.8 A guia Processor.
Use all available processors: Esta opo define que devem ser utilizados todos os processadores
disponveis para a execuo paralela de consultas.
Use processors: Permite que seja definido um nmero fixo de processadores, os quais sero
utilizados para a execuo paralela de consultas. Os demais processadores estaro liberados
para executar outras tarefas.
Configured values: Esta opo exibe os valores atualmente em uso e permite que voc os altere.
Se voc alterar algum valor, clique na opo Running values para verificar se as alteraes j
tiveram efeito. Se as alteraes que voc fez ainda no tiverem sido implementadas, voc dever
parar e reinicializar o servio SQL Server para a instncia que est sendo configurada. No nosso
exemplo, deveramos parar e reinicializar o servio MSSQL$SRVINST01.
Running values: Exibe os valores atualmente em uso. Estes valores no podem ser alterados
enquanto a opo Running values estiver selecionada.
Na guia Security, conforme indicado na Figura 3.9, podemos configurar qual o tipo de segurana que
iremos utilizar SQL Server and Windows ou Windows only. Aprenderemos mais sobre segurana no
SQL Server, no Captulo 6. Tambm podemos definir os nveis de auditoria desejados. Outra opo,
que pode ser configurada nesta guia, a conta que ser utilizada para a inicializao do servio SQL
Server, no nosso exemplo seria o servio MSSQL$SRVINST01.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
105 CURSO COMPLETO00
Figura 3.9 A guia Security.
Na guia Connections, conforme indicado na Figura 3.10, podemos definir alguns parmetros
importantes, os quais definem a maneira como as conexes com o Servidor SQL sero tratadas. Por
exemplo, no campo Maximum concurrent user connections podemos definir o nmero mximo de
conexes de usurio suportadas por cada instncia do SQL Server. Um valor 0 significa um nmero
ilimitado de conexes. A opo Query time-out define o tempo mximo que uma consulta do usurio
pode ficar rodando. Limitar este valor importante, pois impede que consultas com problema fiquem
rodando indefinidamente e ocupando recursos do servidor, o que pode fazer com que o desempenho
do mesmo como um todo seja prejudicado. Este valor definido em segundos. Um valor 0 significa
tempo ilimitado, sendo que, conforme foi dito, esta no uma boa opo.
Na guia Server Settings, conforme indicado na Figura 3.11, podemos definir qual o idioma que ser
utilizado para as mensagens de erro enviadas pelo SQL Server. Tambm podemos definir algumas
configuraes mais avanadas como a utilizao de triggers aninhadas Allow triggers to be fired
which fire other triggers (nested triggers). Veremos mais sobre triggers no Captulo 10. Tambm podemos
definir como o SQL Server ir interpretar uma data que for digitada com apenas dois dgitos no ano
When a two-digit year is entered, interpret as a year between.
Na guia Database Settings, conforme indicado na Figura 3.12, podemos definir qual o fator de
preenchimento das pginas dos ndices. Conforme veremos no Captulo 4, o fator de preenchimento
de pginas de um ndice influencia no desempenho das consultas. Tambm podemos definir qual o
diretrio padro onde sero criados os arquivos de dados para novos Bancos de Dados Default data
directory e o diretrio padro para os arquivos de log de cada Banco de Dados Default log directory.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
106 00CURSO COMPLETO
Figura 3.10 A guia Connections.
Figura 3.11 A guia Server Settings.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
107 CURSO COMPLETO00
Figura 3.12 A guia Database Settings.
Na guia Replication, conforme indicado na Figura 3.13, podemos definir as opes de replicao para a
instncia do SQL Server que est sendo configurada. Veremos o processo de Replicao no Captulo 8.
Figura 3.13 A guia Replication.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
108 00CURSO COMPLETO
Na guia Active Directory, conforme indicado na Figura 3.14, podemos fazer com que informaes
sobre a instncia do SQL Server que est sendo configurada, sejam armazenadas no Active Directory. O
Active Directory uma base centralizada de informaes sobre todos os recursos disponveis em uma
rede Windows 2000.
Figura 3.14 A guia Active Directory.
4. Neste momento no iremos alterar nenhuma das configuraes padro. D um clique no boto
Cancelar para fechar a janela de propriedades da instncia SERVIDOR\SRVINST01.
Para completar a nossa introduo ao Enterprise Manager, iremos acessar a opo Databases da
instncia SERVIDOR\SRVINST01 e verificar quais Bancos de Dados so criados quando da instalao
de uma instncia do SQL Server. Veremos que existe um Banco de Dados que imprescindvel ao
funcionamento do SQL Server master e outros que so de exemplo. Alm dos que so criados
automaticamente, tambm poderemos criar os nossos prprios Bancos de Dados, conforme
aprenderemos ainda neste captulo. Depois iremos verificar quais os elementos que esto disponveis
dentro de um determinado Banco de Dados.
Ao encerrarmos este tpico, o amigo leitor dever ter uma viso geral do funcionamento e das
possibilidades oferecidas pelo Enterprise Manager. No restante deste livro, estaremos realizando uma
srie de tarefas, as quais so realizadas utilizando-se o Enterprise Manager.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
109 CURSO COMPLETO00
Exemplo:
Verificando os Bancos de Dados instalados por padro:
1. Se voc no estiver com o Enterprise Manager aberto, abra-o.
2. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
3. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para expandi-la. Abaixo de Databases exibida uma lista com os Bancos de Dados
disponveis na instncia SERVIDOR\SRVINST01, conforme pode ser visto na Figura 3.15.
Figura 3.15 Os Bancos de Dados criados durante a instalao.
4. D um clique na opo Databases. No painel da direita, sero exibido os Bancos de Dados
disponveis. Voc pode trocar a forma de exibio para listagem, cones pequenos, cones grandes
ou detalhe. Para isto basta clicar com o boto direito do mouse em qualquer espao em branco
no painel da direita. No menu de opes que surge, aponte para exibir. Surgir um novo menu
de opes, no qual voc pode selecionar a forma de exibio.
A seguir fazemos uma breve descrio de cada um destes Bancos de Dados:
master database: Este o principal Banco de Dados para qualquer instncia de qualquer
servidor SQL, onde so armazenadas informaes de vital importncia para o funcionamento
do SQL Server. Nas tabelas do Banco de Dados master, temos informaes sobre a inicializao
do SQL Server, sobre a existncia de outros Bancos de Dados, sobre as contas disponveis para
logon, sobre segurana, etc. Se, por algum motivo, o Banco de Dados master tiver sido
corrompido e no pudermos recuper-lo a partir de um backup recente, simplesmente no
poderemos mais utilizar o servidor SQL e nem ter acesso aos seus dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
110 00CURSO COMPLETO
model database: utilizado como um modelo para a criao de novos Bancos de Dados, isto ,
sempre que criarmos um novo Banco de Dados, o mesmo ter as definies padro iguais s do
Banco de Dados model. Este Banco de Dados no pode ser excludo. Se desejarmos que todo
novo Banco de Dados, ao ser criado, j possua alguma tabela ou alguma outra configurao,
basta adicionar estas caractersticas ao model. Ao criarmos um novo Banco de Dados, o mesmo
herdar todas as caractersticas do model.
tempdb database: Este Banco de Dados utilizado para operaes temporrias. Por exemplo, o
resultado parcial de uma consulta armazenado para ordenao. Somente depois de ordenado
que o resultado seria enviado de volta para o cliente que fez a solicitao. Este Banco de
Dados recriado, toda vez que o SQL Server inicializado. As operaes realizadas neste Banco
de Dados tambm so registradas no log de transaes, para que os dados das tabelas envolvidas
na operao, possam ser restaurados ao seu estado original, caso algum problema acontea
durante a operao. O tamanho do tempdb pode aumentar automaticamente, conforme a
necessidade. Este controle feito pelo prprio SQL Server.
database pubs: Este um Banco de Dados de exemplo, o qual disponibilizado com o SQL
Server. interessante o estudo dos exemplos apresentados neste Banco de Dados, pois muitos
aspectos interessantes do SQL Server 2000 podem ser estudados atravs dos exemplos presentes
no pubs. Neste livro estaremos utilizando este Banco de Dados para salientar alguns aspectos
de utilizao do SQL Server. Embora este banco de dados possa ser eliminado, sugiro que voc
o mantenha, pois alm de servir como um boa fonte de estudo, o mesmo ocupa apenas cerca
de 2 MB de espao em disco.
database Northwind: Este outro Banco de Dados de exemplo. Um exemplo praticamente
igual a este fornecido com o Microsoft Access desde as suas verses iniciais. Normalmente,
no Microsoft Access, este exemplo fornecido em um arquivo chamado Nwind.mdb. Ocupa
apenas 4 MB de armazenamento em disco e apresenta alguns aspectos mais avanados do que
os encontrados no Banco de Dados pubs. Embora possa ser excludo, tambm sugiro que voc
mantenha-o, pois estaremos utilizando-o ao longo deste livro.
database msdb: Este Banco de Dados necessrio ao funcionamento do servio de agendamento
de tarefas SQL Server Agent. Embora possamos acessar toda a informao contida nas tabelas
do Banco de Dados msdb, no aconselhvel modificar o seu contedo diretamente. Devemos
deixar toda e qualquer modificao para o servio SQL Server Agent.
5. Mantenha o Enterprise Manager aberto. No prximo exemplo iremos a um nvel adiante,
verificando quais os elementos podem existir em um Banco de Dados do SQL Server 2000.
Exemplo:
Para verificar quais os elementos que fazem parte de um Banco de Dados:
1. D um clique no sinal de mais ao lado do Banco de Dados Northwind para expandi-lo e depois
d um clique em Northwind para selecion-lo. Na Figura 3.16, podemos ver os vrios elementos
que fazem parte de um Banco de Dados. Ao longo deste livro, estaremos aprendendo a criar,
alterar e gerenciar estes elementos.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
111 CURSO COMPLETO00
Figura 3.16 Os elementos de um Banco de Dados.
A seguir, uma breve descrio de cada um destes elementos:
Diagrams: Utilizando esta opo temos acesso aos diagramas existentes e tambm podemos criar
novos diagramas. Um diagrama, normalmente um Entidades x Relacionamentos, mostra a
estrutura das diversas tabelas (entidades) e o relacionamento entre as mesmas. Na Figura 3.17,
temos um diagrama bastante simplificado onde temos a estrutura das tabelas Orders e Orders
Datails, bem como um relacionamento do tipo Um para Vrios entre as duas tabelas. Para mais
detalhes sobre o modelo relacional e relacionamento entre tabelas, consulte o Captulo 1.
Figura 3.17 Um exemplo de diagrama.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
112 00CURSO COMPLETO
Tables: Ao selecionarmos esta opo sero exibidas todas as tabelas do Banco de Dados. Tambm
podemos utilizar esta opo para criar uma nova tabela, para importar dados de uma outra fonte
para uma tabela do SQL Server ou exportar dados de uma ou mais tabelas do SQL Server para
outro formato de dados. Para acessar os dados de uma tabela basta clicar com o boto direito
sobre o nome da tabela. No menu de opes que surge aponte para Open Table -> Return all
rows. Na Figura 3.18, so exibidos os primeiros registros da tabela Customers. Embora possamos
acessar os dados de uma tabela atravs do Enterprise Manager, este no um procedimento
comum. Conforme descrito anteriormente, o SQL Server 2000 um servidor de Banco de Dados,
no qual ficam armazenadas as informaes, sendo que o mesmo oferece uma srie de
funcionalidades para gerenciar e manter em segurana estes dados. Porm para acessar ou alterar
os dados, normalmente utilizamos aplicaes Cliente, as quais podem ser desde um programa
desenvolvido em Visual Basic e utilizando a tradicional arquitetura Cliente/Servidor, at uma
moderna aplicao Web, desenvolvida em ASP.NET, utilizando uma arquitetura em n camadas.
Figura 3.18 A tabela Customers.
Views: Nesta opo so exibidas as consultas que foram salvas no Banco de Dados. Uma consulta
criada atravs da definio de uma instruo que utiliza a linguagem SQL que, no caso do
SQL Server 2000, chamada de T-SQL. Podemos ter acesso instruo que define uma View,
simplesmente clicando com o boto direito do mouse sobre a mesma e no menu que surge,
clicando em Propriedades. Na Figura 3.19 temos um exemplo de uma instruo SQL bastante
complexa. Mais adiante aprenderemos a criar nossas prprias Views.
Stored Procedures: Um Stored Procedure um grupo de comandos que foram gravados no
Banco de Dados. Um Stored Procedure pode ser chamado dentro de um programa do cliente.
Parmetros de entrada podem ser passados para um Stored Procedure, sendo que o mesmo
pode retornar os seus resultados utilizando parmetros de sada. Os comandos de um Stored
Procedure podem ser compilados e armazenados em memria pelo Servidor SQL. Podemos,
por exemplo, criar Stored Procedures que executam as consultas mais utilizadas; pelo fato dos
comandos serem compilados e armazenados em memria, isto acelera a execuo da consulta,
o que acaba gerando um desempenho melhor para a aplicao do cliente. Para ter acesso aos
comandos de um Stored Procedure basta clicar com o boto direito sobre o mesmo e selecionar
Propriedades no menu de opes que surge. Na Figura 3.20, temos o exemplo dos comandos
de um Stored Procedure. No Captulo 10 aprenderemos um pouco mais sobre a linguagem
para a criao de Stored Procedures e criaremos alguns exemplos.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
113 CURSO COMPLETO00
Figura 3.19 As Views disponveis no Banco Northwind.
As opes Users e Roles: Estas opes esto relacionadas com a segurana de acesso aos elementos
de um Banco de Dados. No Captulo 6 estaremos trabalhando com segurana no SQL Server 2000.
Rules: A criao de Rules foi mantida no SQL Server 2000 por questes de compatibilidade.
Com a utilizao de Rules, podemos definir regras para os valores que podem ser aceitos em
um determinado campo de uma tabela. Por exemplo, podemos definir que o campo
ValorDoFinanciamento da tabela emprstimos deve ter uma valor entre R$ 1.500,00 e R$
10.000,00. No SQL Server 2000 podemos utilizar o mecanismo de CHECK Constraints, o qual
mais eficiente do que a utilizao de Rules. No Captulo 10 aprenderemos o funcionamento
e tambm a criar CHECK Constraints.
Figura 3.20 Os comandos de um Stored Procedure.
Defaults: A criao de Defaults permite que seja definido um valor padro para um campo de
uma tabela, caso o mesmo no seja preenchido pelo usurio. No Captulo 10, aprenderemos
a criar Defaults.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
114 00CURSO COMPLETO
As opes User Defined Data Types e User Defined Functions: Estas opes permitem que o
usurio crie os seus prprios tipos de dados, derivados dos dados primitivos fornecidos pelo
SQL Server e tambm as suas prprias funes, respectivamente.
Full Text Catalogs: Esta opo permite que sejam configuradas as opes de indexao das
informaes de texto contidas no Banco de Dados. Estas informaes so utilizadas pelo servio
Microsoft Search para pesquisas avanadas com base em padres de texto.
2. Feche o Enterprise Manager.
Agora finalizamos o nosso passeio inicial pelo Enterprise Manager. J sabemos da existncia dos vrios
elementos que fazem parte de um servidor SQL Server, bem como os diversos elementos que compem
um Banco de Dados. Agora estamos aptos a comear a trabalhar com estes elementos. O primeiro
passo aprendermos sobre a criao de novos Bancos de Dados.
Antes de partirmos para a criao de banco de dados no SQL Server 2000, vamos revisar alguns conceitos
importantes sobre os tipos de volumes que podem ser criados no Windows 2000 Server. Aprenderemos
conceitos como RAID-0, RAID-1 e RAID-5, bem como a forma de implement-los no Windows 2000
Server. Mas este assunto para o prximo item.
FUNDAMENTOS EM: ARMAZENAMENTO
BSICO X ARMAZENAMENTO DINMICO
PR-REQUISITOS
Noes do sistema operacional Windows.
METODOLOGIA
Apresentao dos diferentes tipos de armazenamento no Windows 2000.
O Windows 2000 Server apresenta algumas melhorias no gerenciamento de discos, em relao s
verses anteriores. Um conceito importante que foi introduzido o conceito de armazenamento
dinmico. Em seguida veremos a diferena entre o armazenamento dinmico e o armazenamento
bsico, o qual o padro utilizado pelas verses anteriores do Windows.
Neste item estaremos tratando da criao de volumes redundantes atravs de software. Tambm existe a
possibilidade da criao de volumes redundantes atravs da utilizao das chamadas Placas de RAID, as
quais so projetadas especificamente para este fim. Com o Windows 2000 Server podemos implementar
RAID em software ou em hardware. Se voc estiver tendo problemas com o desempenho, a opo de
RAID por hardware pode ajudar, embora a implementao seja mais onerosa do que a por Software.
ARMAZENAMENTO BSICO E ARMAZENAMENTO DINMICO
Estarei utilizando a palavra disco como referncia a um disco rgido. Ento sempre que voc encontrar
uma referncia a disco, entenda como sendo um disco rgido e no um disquete ou outro tipo de mdia.
Antes que seja possvel utilizar um novo disco no Windows 2000 Server, temos que realizar algumas
operaes sobre o mesmo. Um dos aspectos que temos que definir o tipo de armazenamento que
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
115 CURSO COMPLETO00
iremos utilizar neste disco. No Windows 2000 Server podemos optar entre dois tipos de armazenamento:
bsico ou dinmico. Abaixo temos detalhes sobre cada um dos tipos de armazenamento.
Armazenamento bsico: o tipo de armazenamento que vem sendo utilizado desde a poca do
DOS. utilizado por sistemas como o Windows 95, Windows 98, Windows NT Server 4.0 e
Windows NT Workstation 4.0. o tipo padro no Windows 2000 Server, isto , todos os discos
so criados com armazenamento bsico. Caso seja necessrio, o administrador deve transform-
los para armazenamento dinmico sem perda de dados. Um disco com armazenamento bsico
chamado de Disco bsico.
importante salientar que um disco somente pode ser configurado para um tipo de
armazenamento. No podemos, por exemplo, ter uma porcentagem do disco com
armazenamento bsico e o restante com armazenamento dinmico.
No armazenamento bsico, o disco dividido em parties. Uma partio uma parte do disco
que se comporta como se fosse uma unidade de armazenamento separada. Por exemplo, em
um disco de 4 GB, posso criar duas parties de 2GB, que na prtica se comportam como se
fossem dois discos de 2 GB independentes. Em um disco com armazenamento bsico, podemos
ter Parties primrias, Parties estendidas e Drivers lgicos. Vamos ver detalhes sobre estes
elementos, bem como exemplos de utilizao dos mesmos.
Partio primria: O Windows 2000 Server pode utilizar uma partio primria para inicializar o
computador, sendo que somente parties primrias podem ser marcadas como ativas. Uma
partio ativa onde o computador procura pelos arquivos de inicializao para efetuar o processo
de boot. Um disco somente pode ter uma partio marcada como ativa. Um disco bsico pode
conter no mximo quatro parties primrias. Considere o exemplo da Figura 3.21, onde um
disco de 6 GB foi dividido em quatro parties primrias. Duas de 2 GB e duas de 1 GB. Observe
que, para cada partio primria atribuda uma letra de unidade C:, D: e assim por diante.
Figura 3.21 No mximo podemos ter quatro parties primrias.
C:
2 GB
D:
2 GB
E:
1 GB
F:
1 GB
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
116 00CURSO COMPLETO
Partio estendida: Podemos ter uma nica partio estendida em um disco bsico. Parties
estendidas so criadas a partir do espao livre em um determinado disco. Espao livre o
espao que no est sendo ocupado por nenhuma outra partio. Por isso aconselhvel,
quando da criao de uma partio estendida, que todo o espao livre seja ocupado. Ns
dividimos a partio estendida em segmentos, sendo que cada segmento representar um drive
lgico. Devemos atribuir uma letra para cada driver lgico e format-los com um sistema de
arquivos FAT, FAT32, NTFS ou NTFS 5. Com o uso de uma partio estendida e drivers lgicos,
podemos superar o limite de quatro unidades por disco, limite que imposto quando utilizamos
apenas parties primrias. Considere o exemplo da Figura 3.22, onde temos um disco com
trs parties primrias (C:, D: e E:), e um volume estendido, no qual foram criados dois drivers
lgicos (F: e G:).
Para o Windows 2000 Server existem duas parties que so muito importantes. A Partio do
Sistema System Partition a partio ativa que contm os arquivos necessrios para o
processo de boot do Windows 2000 Server. Normalmente a primeira partio ativa do primeiro
disco. A Partio de Boot Boot partition , uma partio primria, ou um driver lgico onde
os arquivos do Windows 2000 Server esto instalados, normalmente em um diretrio chamado
Winnt. Muitas vezes estes conceitos causam uma certa confuso, porque podemos dizer que a
Partio do Sistema contm os arquivos de boot e a Partio de Boot contm os arquivos do
Sistema Operacional. Normalmente, a Partio do Sistema e a Partio de Boot esto na mesma
partio, tipicamente no drive C:.
Figura 3.22 Utilizando parties estendidas.
Dependendo da maneira com que as parties so criadas ou combinadas, podemos ter diversos tipos
de parties, conforme indicado abaixo:
Partio do Sistema: Contm os arquivos necessrios para o boot do Windows 2000 Server.
Partio de Boot: Contm os arquivos do Windows 2000 Server, tipicamente em uma pasta Winnt.
C:
D:
E:
G:
F:
Parties
Primrias.
Parties estendidas
com drives lgicos.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
117 CURSO COMPLETO00
Volume set: Combinamos o espao de duas ou mais parties, no mesmo disco ou em discos
diferentes, de tal forma que aparecem para o Windows 2000 Server como uma nica unidade.
Por exemplo, posso combinar uma partio de 1 GB com outra de 4 GB, para formar uma
unidade de 5 GB. O Windows 2000 Server preenche todo o espao da primeira partio, depois
o da segunda e assim por diante. Se uma das parties apresentar problemas, todo o Volume
set ser perdido. Posso juntar parties de tamanhos diferentes. No pode conter a Partio do
Sistema, nem a Partio de Boot. No uma boa opo utilizarmos um Volume set para
armazenar os Bancos de Dados do SQL Server 2000. O Volume set no oferece melhorias no
desempenho nem tolerncia a falhas.
Stripe set: Combinamos espaos iguais de dois ou mais discos; no podendo utilizar duas
parties do mesmo disco. Podemos utilizar at 32 parties. Os dados so gravados em todas
as parties de uma maneira uniforme, isto , o espao de cada partio vai sendo preenchido
medida que os dados so gravados. No apresenta tolerncia a falhas, pois se uma das parties
apresentar problemas, todo o Stripe set ser perdido. A nica vantagem do Stripe set que o
desempenho melhora devido s gravaes simultneas em mais de um disco. No pode conter
a Partio do Sistema, nem a Partio de Boot.
Mirror set RAID 1: Permite a duplicao de qualquer partio. Com isso medida que os
dados vo sendo gravados, o Windows 2000 Server, automaticamente vai duplicando os mesmos
na partio espelhada. Pode conter a Partio do Sistema e tambm a Partio de Boot. O
maior inconveniente que existe um comprometimento de 50% do espao em disco. Por
exemplo, para fazer o espelhamento de uma partio de 2 GB, estaremos ocupando 4 GB em
disco. Apresenta tolerncia a falhas, pois se uma das parties espelhadas falhar, a outra con-
tinua funcionando. Podemos substituir o disco defeituoso e restabelecer o espelhamento.
Stripe set com paridade RAID 5: Um Stripe set com paridade um Stripe set com tolerncia a
falhas. Junto com os dados, o Windows 2000 Server grava informaes de paridade (obtidas a
partir de clculos matemticos) nos vrios discos que formam o Stripe set com paridade. Com
isso, no evento de falha de um dos discos, toda a informao do disco com problemas, pode ser
reconstituda a partir das informaes de paridade dos outros discos. O disco defeituoso pode
ser substitudo, e a informao nele contida recriada a partir da informao de paridade nos
demais discos do RAID-5. Para que possamos construir um volume deste tipo, um mnimo de
trs discos necessrio. Porm, se dois discos falharem ao mesmo tempo, no ser possvel
recuperar a informao. Tambm existem implementaes de RAID-5 em hardware, que so
mais rpidas, porm mais caras. Esta uma boa opo para armazenamento dos Bancos de
Dados do SQL Server 2000.
No posso criar nem modificar um Volume set, Stripe set, Stripe set com paridade ou Mirror set no Windows 2000 Server; os mesmos so
reconhecidos por questes de compatibilidade com o Windows NT Server 4.0. Se fizermos um upgrade em um servidor que est com o
Windows NT Server 4.0 para o Windows 2000 Server, os tipos de parties em discos de armazenamento bsico sero mantidas, porm
no poderemos criar novas parties, o que somente possvel em discos de armazenamento dinmico.
Armazenamento dinmico: No armazenamento dinmico, que somente suportado pelo Win-
dows 2000, criada uma nica partio com todo o espao do disco. Um disco configurado
com armazenamento dinmico chamado de Disco dinmico. Um disco dinmico pode ser
dividido em volumes. Um volume pode conter uma ou mais partes de um ou mais discos.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
118 00CURSO COMPLETO
Tambm possvel transformar um disco bsico em um disco dinmico, sem perda dos dados.
Podemos ter diferentes tipos de volumes. O tipo de volume a ser utilizado determinado por
fatores tais como espao disponvel, performance e tolerncia a falhas. A tolerncia a falhas,
diz respeito possibilidade do Windows 2000 Server manter as informaes, mesmo no evento
de comprometimento de um disco ou volume. Temos os seguintes tipos de volume:
Volume simples: formado por espao de um nico disco, e alm disso no fornece nenhum
mecanismo de tolerncia a falhas, isto , se houver algum problema com o disco onde est
o volume, toda a informao ser perdida.
Volume expandido: Pode incluir espao de at 32 diferentes discos. O Windows 2000 Server
comea a preencher o espao do primeiro disco, aps este estar esgotado, passa para o
espao disponvel no segundo disco e assim por diante. No fornece nenhum mecanismo
de tolerncia a falhas. Se um dos discos que formam o volume apresentar problemas, todo
o volume estar comprometido. Tambm no oferece melhoria no desempenho, uma vez
que a informao somente gravada ou lida em um disco ao mesmo tempo. No uma
boa opo para armazenamento dos Bancos de Dados do SQL Server 2000.
Volume espelhado (Mirrored volume) ou RAID-1: formado por duas cpias idnticas do
mesmo volume, sendo que as cpias so mantidas em discos separados. Volumes espelhados
oferecem proteo contra falha, uma vez que se um dos discos falhar, a informao do
outro disco pode ser utilizada. O espelhamento pode ser desfeito, o disco defeituoso
substitudo, e o espelhamento pode ser refeito. O nico inconveniente que, devido a
duplicidade das informaes, o espao de armazenamento necessrio exatamente o dobro.
Se a performance no for um fator determinante uma opo a ser analisada para o
armazenamento dos Bancos de Dados do SQL Server 2000.
Striped Volume ou RAID-0: Podem ser combinadas reas de espao livre de at 32 discos.
No apresenta nenhum mecanismo de tolerncia a falhas, pois se um dos discos do Striped
Volume falhar, toda a informao estar comprometida. Uma das vantagens que o
desempenho melhora, uma vez que as informaes so gravadas nos diversos discos ao
mesmo tempo.
Volume do tipo RAID-5: Um volume do tipo RAID-5 um Striped volume, porm com
tolerncia a falhas. Junto com os dados, o Windows 2000 Server grava informaes de
paridade (obtidas a partir de clculos matemticos) nos vrios discos que formam o RAID-
5. Com isso, no evento de falha de um dos discos, toda a informao do disco com problemas
pode ser reconstituda a partir das informaes de paridade dos outros discos. O disco
defeituoso pode ser substitudo e a informao nele contida recriada a partir da informao
de paridade nos demais discos do RAID-5. Para que possamos construir um RAID-5, um
mnimo de trs discos necessrio. Porm se dois discos falharem, ao mesmo tempo, no
ser possvel recuperar a informao.
Para informaes sobre como criar e gerenciar os diversos tipos de volumes apresentados neste item, consulte a Unidade VIII, do livro
Microsoft Windows 2000 Server Curso Bsico & Rpido, da editora Axcel Books, j citado anteriormente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
119 CURSO COMPLETO00
FUNDAMENTOS EM: A ESTRUTURA DE ARMAZENAMENTO
DOS BANCOS DE DADOS NO SQL SERVER 2000
PR-REQUISITOS
No h.
METODOLOGIA
Apresentao dos elementos que compem um Banco de Dados do SQL Server 2000.
Um Banco de Dados do SQL Server 2000 formado por um conjunto de arquivos. Cada Banco de Dados
contm dois tipos de arquivos: arquivos de dados e arquivos de log. Os arquivos de dados so utilizados
para armazenar os diversos elementos de um Banco de Dados, como Tabelas, Views, Diagramas, Stored
Procedures, etc. Os arquivos de log armazenam o chamado Log de transaes. O Log de transaes um
registro das operaes que so efetuadas nos dados do Banco de Dados. Veremos detalhes sobre o log
mais adiante. Os arquivos de dados podem ser de dois tipos: arquivos primrios e secundrios.
Todo Banco de Dados deve possuir pelo menos um arquivo primrio e um arquivo de log. De acordo
com a necessidade, podemos adicionar um ou mais arquivos secundrios de dados. Um arquivo, quer
seja de dados, quer seja de log, somente pode ser utilizado por um Banco de Dados, isto , no podemos
ter arquivos compartilhados por mais do que um Banco de Dados. Quando estamos falando de arquivos
de dados (primrios ou secundrios) e arquivos de log, estamos nos referindo a arquivos do Sistema
Operacional como por exemplo: C:\livrosql\contas\principal.mdf. Este seria um exemplo de um arquivo
de dados primrio, que conforme detalharemos logo em seguida, possui a extenso .mdf.
Por exemplo, o Banco de Dados master formado, por padro, por um arquivo primrio e um de log
com os seguintes nomes:
Arquivo de dados primrio -> master.mdf
Arquivo de log -> master.ldf
Vamos ver em detalhes os tipos de arquivos que fazem parte de um Banco de Dados:
Arquivo de dados primrio (Primary data file): Todo Banco de Dados deve conter um, e somente
um, arquivo de dados primrio. Este arquivo possui a extenso .mdf. Neste arquivo ficam
informaes necessrias inicializao do Banco de Dados, bem como informaes sobre a
localizao dos outros arquivos que fazem parte do Banco de Dados. Esta informao tambm
armazenada nas tabelas do master. Se, por algum motivo, o arquivo de dados primrio for
corrompido, e no puder ser restaurado, perderemos todo o banco de dados, mesmo que os
demais arquivos estejam intactos.
Arquivos de dados secundrio (Secondary data files): Em um Banco de Dados podemos ter um
ou mais arquivos de dados secundrio. No somos obrigados a criar arquivos de dados secundrio.
medida que o Banco de Dados vai crescendo podemos utilizar arquivos de dados secundrio
para gravar a informao em diferentes volumes. Esta tcnica pode ajudar no desempenho do
Banco de Dados como um todo. A extenso destes arquivos .ndf.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
120 00CURSO COMPLETO
Arquivos do log de transaes (Transaction log files): Nestes arquivos fica gravado todo o registro
das operaes realizadas no Banco de Dados, o qual deve ter pelo menos um arquivo de log.
Conforme a necessidade, arquivos de log, adicionais, podem ser criados. A extenso para os
arquivos de log .ldf.
O tamanho mximo para um arquivo de dados (quer seja primrio ou secundrio) 32 TB (Tera bytes). Para um arquivo de log, o
tamanho mximo 4 TB.
Com o SQL Server 2000 no obrigatria a utilizao das extenses .mdf, .ndf e .ldf para arquivos primrios, secundrios e de log,
respectivamente. Esta apenas uma recomendao para facilitar a identificao do tipo do arquivo.
Arquivos de dados e de log podem ser gravados tanto em parties formatadas com FAT como NTFS, porm a partio (no caso de NTFS)
no pode estar compactada.
ENTENDENDO O CONCEITO DE FILEGROUPS
No SQL Server 2000 (na verdade a partir do SQL Server 7.0), temos o conceito de Filegroup. Este
conceito muitas vezes no utilizado na prtica por falta de entendimento do que o mesmo significa.
A utilizao de um Filegroup permite que os arquivos de um Banco de Dados sejam agrupados para
facilitar o gerenciamento, bem como a distribuio ao longo de volumes redundantes e de melhor
desempenho (RAID-0, RAID-1, etc.). A utilizao de Filegroup pode ser um auxiliar valioso na melhoria
do desempenho de um Banco de Dados, ao permitir que o mesmo (atravs dos seus arquivos) seja
criado em mltiplos discos, mltiplas controladoras ou em sistemas do tipo RAID, quer seja RAID por
software ou por hardware, conforme descrito no item anterior. Tambm podemos fazer com que uma
tabela ou ndice seja criada em um disco especfico, simplesmente associando a tabela ou ndice com
um filegroup. Isto nos abre maiores possibilidades. Por exemplo, podemos deslocar uma tabela que
muito consultada para um sistema de discos de melhor desempenho. Um arquivo pode estar associado
com um nico filegroup.
Os arquivos de log no fazem parte de nenhum filegroup, sendo que os mesmos so gerenciados separadamente pelo Banco de Dados.
Podemos ter trs tipos de filegroups. A seguir descrevemos os trs tipos existentes:
Primary filegroup: o filegroup padro. Contm todos os arquivos de dados primrios (.mdf) e
qualquer arquivo que no tenha sido, explicitamente, atribudo a outro filegroup. Todo Banco de
Dados possui as chamadas tabelas de sistema, as quais possuem informaes sobre os usurios
autorizados a acessar os objetos do Banco de Dados e o nvel de permisso de acesso de cada um. As
tabelas de sistema so criadas automaticamente pelo SQL Server, quando criamos o banco de dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
121 CURSO COMPLETO00
User-defined filegroups: qualquer filegroup criado pelo usurio durante o processo de criao
ou alterao de uma tabela. Conforme descrito anteriormente, podemos criar tabelas ou ndices
associados com um filegroup criado pelo usurio.
Default filegroup: Toda tabela ou ndice ao ser criado ser associado com o filegroup padro, a
menos que seja explicitamente associado com um filegroup definido pelo usurio. O filegroup
padro, por definio, o Primary filegroup. Cada Banco de Dados possui o seu Default filegroup,
com o qual associado. Conforme veremos ainda neste captulo, existem comandos T-SQL que
permitem alterar o filegroup associado com um determinado Banco de Dados.
A criao de filegroups adicionais no obrigatria e, para muitas aplicaes, todos os dados
podem ser colocados no Primary filegroup. Porm em situaes mais complexas, a utilizao de
filegroups pode ser um auxiliar valioso para distribuir os dados entre diferentes discos, controladores
ou sistemas de RAID. Por exemplo, a colocao de uma tabela que est sendo intensamente acessada,
em um RAID de vrios discos, pode melhorar bastante o desempenho do sistema.
Todos ns sabemos que uma imagem vale por mil palavras. Ento vamos apresentar alguns exemplos
de utilizao de filegroups.
Considere o exemplo apresentado na Figura 3.23. Neste exemplo, temos apenas o filegroup padro
(Primary filegroup) e todos os arquivos do Banco de Dados em um nico disco. Esta situao apresenta
um desempenho bastante insatisfatrio. Um nico disco, uma nica controladora.
Figura 3.23 Uma situao com problemas no desempenho.
Agora vamos fazer algumas modificaes. Iremos adicionar mais trs discos. Vamos criar mais dois
filegroups, alm do Primary filegroup: Filegroup1 e Filegroup2. Vamos deslocar os arquivos secundrios
para estes filegroups em outros discos. Tambm iremos deslocar o arquivo de log para um quarto disco,
conforme indicado na Figura 3.24. Neste caso, estamos melhorando consideravelmente o desempenho
do nosso sistema.
Poderamos otimizar ainda o desempenho do nosso sistema de discos. Por exemplo, ao invs de termos
simplesmente Disco 2 e Disco 3, os mesmos poderiam ser sistemas de RAID-5 com controladoras
diferentes, o que otimizaria ainda mais o desempenho.
A seguir, enunciamos alguns fatos que voc no pode esquecer quando for definir a sua estratgia de filegroups:
Um arquivo somente pode fazer parte de um nico filegroup.
Informaes de dados e do log de transaes no podem fazer parte do mesmo arquivo. Por
isso, os arquivos de log sempre so gerenciados separadamente dos arquivos de dados.
Banco de
dados
Primary Filegroup
C:\livrosql\arq-primario.mdf
C:\livrosql\arq-secundario1.ndf
C:\livrosql\arq-secundario2.ndf
C:\livrosql\arq-log.ldf
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
122 00CURSO COMPLETO
Figura 3.24 Melhorando o desempenho do nosso Banco de Dados.
Os arquivos de log no podem fazer parte de um filegroup e so gerenciados separadamente.
Uma vez que um arquivo criado em um determinado filegroup, no pode ser movido
para outro. Caso precisemos mover um arquivo, devemos eliminar o arquivo e cri-lo em
outro filegroup.
At neste momento tratamos apenas da teoria sobre a estrutura de um Banco de Dados no SQL Server 2000 e de filegroups. Aprenderemos, na
seqncia, a criar Bancos de Dados, a criar arquivos secundrios (Secondary data files) e a criar filegroups. Conforme descrito anteriormente,
aprenderemos a realizar estas operaes utilizando o Enterprise Manager e tambm utilizando comandos T-SQL no Query Analyzer.
FUNDAMENTOS EM: CRIAR BANCOS DE DADOS NO
SQL SERVER 2000 COM O ENTERPRISE MANAGER
PR-REQUISITOS
Noes do SQL Server 2000.
Utilizao do MMC.
Conhecer os opes que fazem parte de uma instncia do SQL Server 2000.
METODOLOGIA
Apresentao dos comandos utilizados para a criao de Bancos de Dados.
TCNICA
Criao de Bancos de Dados com o Enterprise Manager.
Antes de criarmos um novo Banco de Dados quero fazer um pequeno parnteses sobre segurana. Voc
deve ter notado que sempre que abrimos o Enterprise Manager, tivemos acesso a todos os elementos
do SQL Server 2000. Nunca foi solicitado que digitssemos um nome de usurio e senha. Isto acontece
Disco
1:
Primary Filegroup
C:\livrosql\arq-primario.mdf
Disco
2:
Filegroup 1
C:\livrosql\arq-secundario1.mdf
Disco
3:
Filegroup2
C:\livrosql\arq-secundario2.mdf
Disco
4:
Arquivo de log
C:\livrosql\arq-log.ldf
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
123 CURSO COMPLETO00
porque ao instalarmos o SQL Server 2000 no Captulo 2, optamos pela segurana integrada com o
Windows. Como estou fazendo o logon com a senha Administrator, a mesma possui poderes totais
sobre todos os elementos do servidor SQL Server, quando estamos utilizando a segurana integrada
com o Windows. Falaremos detalhadamente sobre segurana no Captulo 6.
Agora chega de conversa e vamos criao de um Banco de Dados de exemplo.
A seguir, temos os detalhes sobre o Banco de Dados que iremos criar:
Nome no SQL Server: Exemplo-1
Arquivo primrio: C:\livrosql\exemplo1\exemplo1-prim.mdf
Arquivo secundrio: C:\livrosql\exemplo1\exemplo1-sec1.ndf
Arquivo de log: C:\livrosql\exemplo1\exemplo1-log.ldf
Exemplo:
Criando um novo Banco de Dados na instncia SERVIDOR\SRVINST01:
1. Abra o Enterprise Manager.
2. Abaixo de SQL Server Group, d um clique no sinal de mais ao lado da instncia
SERVIDOR\SRVINST01 para expandi-la.
3. Nas opes que surgem d um clique em Databases para selecion-la. No painel da direita sero
exibidos os Bancos de Dados j existentes.
4. Clique com o boto direito do mouse em Databases. No menu que surge d um clique na
opo New Database. Surge a tela Database Properties.
5. Na guia General, iremos definir o nome do Banco de Dados, no nosso exemplo digitaremos:
Exemplo 1. Nesta guia tambm podemos definir qual a Collation que ser definida para este
banco de dados. Podemos optar por utilizar a Collation definida para o servidor quando da
instalao do mesmo ou um outro tipo. Lembre-se que Collation define propriedades
importantes da maneira como os dados sero armazenados e recuperados. A possibilidade de
ter diferentes opes para cada Banco de Dados uma novidade do SQL Server 2000. Nesta
guia aceite a opo padro do servidor e digite Exemplo1 no campo Name.
6. D um clique na guia Data Files. Nesta guia, poderemos definir quais os arquivos de dados que
sero utilizados para o Banco de Dados Exemplo1. Lembre que neste caso teremos o arquivo
primrio C:\livrosql\exemplo1\exemplo1-prim.mdf e o secundrio C:\livrosql\exemplo1\
exemplo1-sec1.ndf. Poderemos criar estes dois arquivos na guia Data Files.
7. No campo File Name, digite o nome do arquivo primrio exemplo1-prim sem a extenso. D
um clique no boto com as reticncias (...) para selecionar a pasta onde o arquivo primrio
deve ser criado, conforme indicado na Figura 3.25.
Observe que no campo File Name da janela da Figura 3.25, o SQL Server 2000 adiciona _Data ao final
do nome do arquivo. No nosso exemplo vamos excluir o _DATA para ficarmos apenas com o nome
exemplo1-prim.mdf. Neste campo, mantenha a extenso, elimine apenas o sufixo _Data.
8. D um clique no boto OK para fechar esta janela.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
124 00CURSO COMPLETO
Ainda na guia Data Files, precisamos definir as caractersticas do arquivo primrio. No SQL Server 2000
um arquivo de dados (primrio ou secundrio), deve ter um tamanho inicial definido, o qual por
padro de 1 MB, conforme pode ser visto na coluna Initial size (MB). Tambm podemos configurar
um arquivo de dados para crescer automaticamente (Automatically grow file). O incremento no
crescimento automtico pode ser em MB ou em uma porcentagem do tamanho inicial. Tambm
podemos definir um tamanho mximo at o qual um determinado arquivo pode crescer. Iremos utilizar
as seguintes configuraes para o nosso arquivo primrio:
Figura 3.25 Definindo a pasta para a criao do arquivo primrio.
Tamanho inicial: 10 MB.
Crescimento automtico em incrementos de 1 MB.
Poder crescer at o mximo de 50 MB.
9. Para fazer as configuraes indicadas na lista anterior, defina as opes da guia Data Files
conforme indicado na Figura 3.26. importante salientar que nesta guia podemos configurar
as opes para diversos arquivos um primrio e vrios secundrios. Cada arquivo pode conter
tamanho inicial, incrementos e tamanho mximo diferentes. As opes sendo configuradas se
referem ao arquivo que est selecionado na parte de cima da janela. No nosso exemplo como
s temos um arquivo por enquanto, estaremos configurando as opes para este arquivo.
Quando voc tiver vrios arquivos, certifique-se de que o arquivo correto est selecionado,
seno corremos o risco de estar alterando as configuraes de outro arquivo que no o desejado.
10. Nesta mesma guia, seguindo as orientaes dos passos 6 ao 9 vamos criar o arquivo secundrio
C:\livrosql\exemplo1\exemplo1-sec1.ndf, com as seguintes caractersticas de crescimento automtico:
Tamanho inicial: 10 MB.
Crescimento automtico em incrementos de 2 MB.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
125 CURSO COMPLETO00
Poder crescer at o mximo de 100 MB.
Figura 3.26 Configuraes de crescimento automtico para o arquivo primrio.
11. Na tela da Figura 3.27, vemos as configuraes para o arquivo secundrio.
Figura 3.27 Configurao de crescimento automtico para o arquivo secundrio.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
126 00CURSO COMPLETO
O passo final a definio do arquivo de log C:\livrosql\exemplo1\exemplo1-log.ldf. D um clique
na guia Transaction Log para definir os parmetros do arquivo de log. As opes desta guia so
semelhantes a da guia Data Files.
12. Crie um arquivo de log com as seguintes caractersticas de crescimento automtico:
Tamanho inicial: 5 MB.
Crescimento automtico em incrementos de 10 %.
Poder crescer at o mximo de 40 MB.
Figura 3.28 Configuraes do arquivo de log.
Observe que para a criao do arquivo de log no temos a coluna Filegroup, como no caso da
criao dos arquivos de dados. Conforme descrito anteriormente, o arquivo de log gerenciado
separadamente dos arquivos de dados, no faz parte de nenhum Filegroup.
13. D um clique no boto OK, e aps alguns segundos o Banco de Dados Exemplo1 estar sendo
exibido no Enterprise Manager.
Caso o Banco de Dados Exemplo1 ainda no esteja aparecendo na listagem, clique com o boto direito do mouse na opo Databases
e no menu de opes que surge clique em Atualizar (Refresh).
O SQL Server 2000 adiciona _LOG ao final do nome do arquivo de log. Exclua esta adio do SQL Server 2000.
Na tela da Figura 3.28 vemos as configuraes para o arquivo de log.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
127 CURSO COMPLETO00
14. Aps termos criado um Banco de Dados, podemos, facilmente, adicionar novos arquivos de
dados ou de log. Para isso basta clicar com o boto direito do mouse no nome do Banco de
Dados e no menu que surge selecionar Propriedades. Ser exibida a janela de propriedades do
Banco de Dados, na qual temos as guias Data Files e Transaction Log.
Agora que j sabemos criar um Banco de Dados utilizando o Enterprise Manager, vamos propor um
pequeno exerccio para o amigo leitor fixar os conceitos apresentados.
Exerccio:
Acesse as propriedades do Banco de Dados Exemplo1 e crie mais um arquivo secundrio e um arquivo
de log, conforme definido a seguir:
Tabela 3.1 Criando arquivos adicionais.
No exemplo anterior criamos um novo Banco de Dados (Exemplo1), utilizando a opo New Data-
base. Outra opo que temos para criar um novo Banco de Dados no SQL Server 2000 utilizando um
assistente chamado: Create Database Wizard. Vamos criar o Banco de Dados indicado na Tabela 3.2,
utilizando este assistente. Ser chamado de Exemplo2 e ser criado na instncia SERVIDOR\SRVINST01.
Os arquivos do Banco de Dados Exemplo2 sero gravados na pasta: C:\livrosql\Exemplo2.
No prximo item veremos uma terceira opo para a criao de um novo Banco de Dados, que
atravs da utilizao de comandos T-SQL no Query Analyzer.
Podemos notar que todos os arquivos que formam este Banco de Dados, esto com as mesmas configuraes para tamanho automtico,
crescimento e tamanho mximo. Isto ocorre porque utilizando o Assistente para criao de Banco de Dados, no podemos definir
configuraes de crescimento automtico diferentes para cada arquivo. Ao invs disso, podemos definir as configuraes de crescimento
automtico uma nica vez e estas configuraes sero aplicadas a todos os arquivos. Podemos ter configuraes diferentes de crescimento
automtico para os arquivos de dados e os arquivos de log. Aps a criao do Banco de Dados, podemos alterar estas configuraes.
Para isso basta acessar s Propriedades do Banco de Dados e fazer as alteraes necessrias.
Arquivo Definies
Secundrio C:\livrosql\Exemplo1\exemplo1-sec2.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 5 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 20 MB.
Arquivo de log C:\livrosql\Exemplo1\exemplo1-log2.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 5 MB.
Crescimento em incrementos de 1 MB.
Tamanho mximo de 10 MB.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
128 00CURSO COMPLETO
Tabela 3.2 O banco de dados Exemplo2.
Ento mos obra.
Exemplo:
Criando o Banco de Dados Exemplo2 com o Assistente de Banco de Dados.
1. Abra o Enterprise Manager.
2. Clique no sinal de mais ao lado de SQL Server Group para abri-lo.
3. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
4. Clique na opo Databases para selecion-la.
5. D um clique no menu Tools, e nas opes que surgem d um clique em Wizards. Surge a
janela Select Wizard com as diversas categorias de assistentes disponveis.
Arquivo Definies
Primrio C:\livrosql\Exemplo2\exemplo2-prim.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 10 MB.
Secundrio C:\livrosql\Exemplo2\exemplo2-sec1.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 10 MB.
Secundrio C:\livrosql\Exemplo2\exemplo2-sec2.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 10 MB.
Arquivo de log C:\livrosql\Exemplo2\exemplo2-log1.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 10 MB.
Arquivo de log C:\livrosql\Exemplo2\exemplo2-log2.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 10 MB.
Arquivo de log C:\livrosql\Exemplo2\exemplo2-log3.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 10 MB.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
129 CURSO COMPLETO00
6. D um clique no sinal de mais ao lado da categoria Database para abri-la. Dentro da categoria
Database d um clique na opo Create Database Wizard para selecionar o assistente de criao
de Banco de Dados, conforme indicado na Figura 3.29.
Figura 3.29 O assistente para criao de Banco de Dados.
7. D um clique em OK para iniciar o assistente.
A tela inicial do assistente apenas informativa sobre os passos que podem ser completados com o
assistente, como por exemplo: criar um ou mais arquivos de dados, definir a poltica de crescimento
para os arquivos e criar um ou mais arquivos de log.
8. D um clique no boto Avanar (Next) para ir prxima etapa do assistente.
9. Nesta etapa devemos definir o nome do Banco de Dados e a localizao dos arquivos de
dados e de log para o mesmo. Vamos digitar o nome Exemplo2 no campo Database name e
definir C:\livrosql\exemplo2 como pasta para gravao dos arquivos do Banco de Dados,
conforme indicado na Figura 3.30. D um clique no boto Avanar (Next) para ir para a
prxima etapa do assistente.
Voc pode utilizar o boto com as reticncias (...) para navegar pelas pastas do servidor, ao invs de digitar o caminho C:\livrosql\exemplo2.
10. Nesta etapa podemos definir a criao dos arquivos de dados. O arquivo definido na primeira
linha ser o arquivo primrio e os demais sero os arquivos secundrios. Seguindo as orientaes
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
130 00CURSO COMPLETO
Figura 3.30 Segunda etapa do assistente.
Digite apenas o nome do arquivo. A extenso ser, automaticamente, inserida pelo SQL Server 2000.
da Tabela 3.2, nossa tela deve estar conforme indicado na Figura 3.31. D um clique no boto
Avanar (Next) para ir prxima etapa do assistente.
Agora precisamos definir a poltica de crescimento para os arquivos de dados. Seguindo as orientaes
da Tabela 3.2, nossa tela deve estar conforme indicado na Figura 3.32.
Figura 3.31 Definindo os arquivos de dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
131 CURSO COMPLETO00
Figura 3.32 Crescimento automtico para os arquivos de dados.
11. D um clique no boto Avanar (Next) para ir para a prxima etapa do assistente.
12. Nesta etapa podemos definir a criao dos arquivos de log. Seguindo as orientaes da Tabela
3.2, nossa tela deve estar conforme indicado na Figura 3.33. D um clique no boto Avanar
(Next) para ir prxima etapa do assistente.
Figura 3.33 Definindo os arquivos de log.
Digite apenas o nome do arquivo. A extenso ser, automaticamente, inserida pelo SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
132 00CURSO COMPLETO
Figura 3.34 Crescimento automtico para os arquivos de log.
Em poucos instantes surge uma tela indicando que o banco de dados foi criado com sucesso ser apresentada.
14. D um clique em OK para fechar esta mensagem.
Surge uma janela perguntando se voc deseja criar um plano de manuteno para o Banco de Dados
recm-criado.
15. D um clique em No. Aprenderemos a criar um plano de manuteno no Captulo 5.
O Banco de Dados Exemplo2 j deve estar aparecendo na opo Databases.
Caso o Banco de Dados Exemplo2 ainda no esteja aparecendo na listagem, clique com o boto direito do mouse na opo Databases
e no menu de opes que surge clique em Atualizar (Refresh).
Observao importante sobre o crescimento automtico de arquivos.
Vamos falar um pouco mais sobre o crescimento automtico dos arquivos primrio, secundrio(s) e
de log de um Banco de Dados. Por exemplo, vamos supor que estejamos criando um Banco de Dados
com um as caractersticas indicadas na Tabela 3.3.
13. Agora precisamos definir a poltica de crescimento para os arquivos de log. Seguindo as
orientaes da Tabela 3.2, nossa tela deve estar conforme indicado na Figura 3.34. Ser exibida
a tela final do assistente, onde temos um resumo das configuraes efetuadas nos passos anteriores.
Caso voc queira alterar alguma configurao, s utilizar o boto Voltar (Back). D um clique no
boto Concluir (Finish).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
133 CURSO COMPLETO00
Tabela 3.3 Algumas questes sobre espao em disco.
Vamos responder s seguintes questes:
1) Ao criarmos este Banco de Dados, quanto o mesmo estar, inicialmente, ocupando de espao em disco?
R: 19 MB. Este valor a soma dos tamanhos iniciais do arquivo primrio (5 MB), mais todos os arquivos
secundrios, que no caso temos apenas um (7 MB), mais todos os arquivos de log, que no nosso
exemplo temos apenas um (7 MB).
Com isso podemos concluir que um arquivo (primrio, secundrio ou de log) de um Banco de Dados
do SQL Server, criado com o seu tamanho inicial. O mesmo vai aumentando, conforme definido pelo
campo incremento, a medida que mais espao vai sendo necessrio no Banco de Dados.
2) Qual o tamanho mximo que pode atingir este Banco de Dados?
Esta parece e fcil. Basta somar os tamanhos mximos que cada arquivo pode atingir. No nosso
exemplo, teramos: 10+15+25 = 50 MB. Porm, se a pergunta fosse um pouco diferente, como: Qual o
tamanho mximo para dados deste Banco de Dados? Neste caso devemos desconsiderar os arquivos de
log, nos quais ficam registradas apenas as operaes realizadas sobre os dados.
A utilizao do crescimento automtico juntamente com a definio de tamanho mximo so
mecanismos importantes para o administrador do Banco de Dados. O crescimento automtico facilita
a vida do DBA Database Administrator, pois dispensa o mesmo de aumentar, manualmente, o tamanho
dos arquivos do Banco de Dados. A definio de um tamanho mximo tambm recomendada, pois
evita que devido a alguma operao com problemas, todo o espao do disco seja preenchido.
Arquivo Definies
Primrio C:\livrosql\qualeur\qualquer-prim.mdf.
Crescimento automtico habilitado.
Tamanho inicial: 5 MB.
Crescimento em incrementos de 1 MB.
Tamanho mximo de 10 MB.
Secundrio C:\livrosql\qualquer\qualquer-sec1.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 7 MB.
Crescimento em incrementos de 2 MB.
Tamanho mximo de 15 MB.
Arquivo de log C:\livrosql\qualquer\qualquer-log1.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 7 MB.
Crescimento em incrementos de 2 MB.
Tamanho mximo de 25 MB.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
134 00CURSO COMPLETO
VERIFICAO DOS ARQUIVOS CRIADOS PARA O EXEMPLO1 E PARA O EXEMPLO2
Vamos fazer uma pequena verificao, para conferir se os arquivos dos Bancos de Dados Exemplo1 e
Exemplo2 foram realmente criados.
1. Abra o Windows Explorer (Iniciar -> Programas -> Acessrios -> Windows Explorer).
2. Navegue at a pasta C:\livrosql.
Devem aparecer as pastas Exemplo1 e Exemplo2.
3. D um clique na pasta Exemplo1, no painel da direita devem estar sendo exibidos os arquivos
do Banco de Dados Exemplo1, conforme indicado na Figura 3.35.
Observe o tamanho dos arquivos, o qual exatamente o tamanho inicial quando da criao do Banco
de Dados Exemplo1: 10 MB para o arquivo primrio (.mdf), 10 MB para o arquivo secundrio (.ndf) e
5 MB para o arquivo de log (.log). Os arquivos continuam com o tamanho inicial pois nenhum dado
foi adicionado ao Banco de Dados Exemplo1. Nem mesmo tabelas foram criadas neste Banco de Dados
mas isto assunto para o prximo captulo.
4. Clique na pasta exemplo2 e observe os arquivos presentes bem como o tamanho dos mesmos.
5. Feche o Windows Explorer.
Figura 3.35 O Banco de Dados Exemplo1.
FUNDAMENTOS EM: ENTENDER E UTILIZAR O QUERY ANALYZER
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
135 CURSO COMPLETO00
METODOLOGIA
Apresentao dos principais elementos e funes do Query Analyzer.
TCNICA
Aprender atravs de exemplos prticos.
J falamos algumas vezes sobre a ferramenta Query Analyzer. Neste item, veremos como a mesma
funciona e aprenderemos o funcionamento bsico da sua interface.
Conforme j foi descrito anteriormente, o Query Analyzer uma interface que facilita a execuo de
comandos T-SQL diretamente no Banco de Dados do SQL Server. Por exemplo, podemos executar uma
instruo SELECT e observar o resultado da mesma, diretamente no Query Analyzer.
O Query Analyzer pode ser acessado no menu Microsoft SQL Server, atravs do seguinte caminho:
Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer
Ao abrirmos o Query Analyzer, surge uma tela na qual devemos informar o tipo de autenticao que
iremos utilizar e a qual SERVIDOR\INSTNCIA desejamos nos conectar. No caso da autenticao integrada
(Windows authentication) a nossa conta de usurio do Windows 2000 ser utilizada para acessar o SQL
Server. No caso da autenticao SQL Server authentication deveremos fornecer o nome de uma conta e
senha do SQL Server, normalmente a conta sa, que possui poderes absolutos no SQL Server.
Na tela da Figura 3.36, est sendo solicitado o tipo de autenticao e, no caso da autenticao SQL
Server authentication, o nome da conta e senha.
Figura 3.36 Informaes de autenticao para acesso ao servidor SQL.
Estas informaes so necessrias, pois no so todos os usurios que tm acesso ao servidor SQL. No
nosso caso, como estou logado com uma conta com permisses de administrador, vou selecionar
Windows authenticaton.
Agora preciso selecionar a qual instncia de qual servidor desejo me conectar. Posso digitar esta
informao diretamente no campo SQL Server, ou utilizar o boto com as reticncias (...). Ao clicar
neste boto exibida uma listagem das instncias disponveis no servidor local, onde selecionamos a
instncia SERVIDOR\SRVINST01, com a qual iremos nos conectar.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
136 00CURSO COMPLETO
Figura 3.37 A tela inicial do Query Analyzer.
No painel da esquerda Object Browser, temos uma listagem dos Bancos de Dados disponveis na
instncia SERVIDOR\SRVINST01. Observe que j aparecem os Bancos de Dados Exemplo1 e Exemplo2
criados anteriormente.
Sempre que executarmos um comando no Query Analyzer, o comando ser executado no Banco de
Dados atual. Por padro, ao abrirmos o Query Analyzer, o Banco de Dados padro o master. Podemos
alterar o Banco de Dados atual utilizando a listinha que aparece na barra de ferramentas, conforme
indicado na Figura 3.38.
Ao clicar em OK estaremos de volta janela da Figura 3.36. Agora s dar um clique em OK. Ser
aberto o Query Analzer conforme indicado na Figura 3.37.
Figura 3.38 Caixa de combinao para alterar o banco de dados atual.
Ao selecionar um Banco de Dados nesta lista estaremos tornando o mesmo o Banco de Dados atual.
Desta maneira, os comandos que forem executados atuaro sobre o banco de dados indicado na lista.
Estaremos utilizando a expresso comandos T-SQL neste livro. Lembrando que T-SQL significa Transaction SQL, que nada mais do
que a implementao da linguagem SQL que est disponvel com o SQL Server 2000. A Microsoft procurou manter o T-SQL o mais
prximo possvel do SQL padro, conhecido por ANSI-92. Mesmo assim existem alguns comandos que so exclusivos do T-SQL.
Os comandos T-SQL podem ser digitados diretamente no que eu chamo de rea de trabalho, que onde
est o cursor piscando. A melhor maneira de vermos o Query Analyzer em ao, atravs de um exemplo.
Vamos comear executando uma consulta simples, a qual retorna todos os registros da tabela Custom-
ers do Banco de Dados Northwind. Para isso precisamos fazer o seguinte:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
137 CURSO COMPLETO00
Tornar o Banco de Dados como atual, selecionando-o na lista correspondente.
Digitar o seguinte comando na rea de trabalho do Query Analyzer:
SELECT * FROM CUSTOMERS
Executar o comando. Temos trs maneiras de executar um comando no Query Analyzer. Primeiro
podamos dar um clique no boto Executar, na Barra de Ferramentas. o boto com um pequeno
tringulo verde. Tambm podemos utilizar a combinao de teclas Ctrl+E, esta alis a minha
maneira preferida. Tambm podemos clicar com o boto direito na rea de trabalho do Query
Analyzer no menu que surge selecionar a opo Execute. Ah, j ia me esquecendo, voc tambm
pode utilizar a tecla de funo F5.
Ento vamos, passo a passo, fazer o exemplo proposto.
Exemplo:
Executando uma consulta simples no Query Analyzer:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo.
3. Ser aberto o Query Analyzer com o Banco de Dados master como sendo o Banco de Dados atual.
4. Por enquanto vamos fechar o Object Browser para liberar mais espao na rea de trabalho do
Query Analyzer. Para fechar o Object Browser basta pressionar a tecla F8. Para exibi-lo novamente
s pressionar F8 novamente.
5. Na lista de Banco de Dados, na Barra de Ferramentas, selecione Northwind, para torn-lo o
Banco de Dados atual.
6. Digite o seguinte comando:
SELECT * FROM CUSTOMERS
Observe que medida que voc digita, o Query Analyzer vai colocando os comandos e nome de
tabelas em cores. Isto significa que o comando que voc est digitando est sendo entendido. Caso o
nome de um comando ou de uma tabela no fique colorido aps a digitao, significa que o Query
Analyzer no entendeu o comando. Provavelmente voc deve ter cometido um erro de digitao.
7. Aps ter digitado o comando, pressione F5 para execut-lo.
O resultado da execuo deste comando uma listagem com todos os registros da tabela Customers do
Banco de Dados Northwind.
Observe que, na parte de baixo da janela, temos duas guias: Grids, que onde so exibidos os resultados
de uma consulta; e Messages, que onde sero exibidas mensagens. No caso da consulta ter sido executada
com sucesso, a mensagem limita-se ao nmero de linhas que foram retornadas, como por exemplo:
(91 row(s) affected)
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
138 00CURSO COMPLETO
para o caso de termos digitado um comando com erros a mensagem descreve o tipo de erro, como por
exemplo o comando:
SELECT * FROM CUSTOMERSX
ir retornar a seguinte mensagem de erro:
Server: Msg 208, Level 16, State 1, Line 1
Invalid object name CUSTOMERSX.
Neste caso digitei o nome da tabela incorretamente, como no existe uma tabela chamada
CUSTOMERSX, no Banco de Dados Northwind, no foi possvel executar o comando.
Mas o Query Analyzer no se limita execuo de comandos SQL para consultas. Na verdade, a linguagem
T-SQL bastante poderosa. Podemos criar um Banco de Dados e todos os seus objetos, simplesmente
utilizando comandos T-SQL. No prximo item, veremos como criar um Banco de Dados e depois alter-
lo, utilizando comandos T-SQL.
Existe um comando que permite que seja alterado o Banco de Dados padro dentro da prpria seqncia
de comandos T-SQL. Por exemplo, vamos supor que o Banco de Dados atual seja o master e voc deseja
executar uma instruo SQL no banco Northwind. Poderamos utilizar a seguinte seqncia de comandos
para, primeiro, alternarmos para o Northwind e, depois, executar uma instruo SQL nele.
USE NORTHWIND
SELECT * FROM CUSTOMERS
Todos os comandos SQL que aprendemos no Captulo 1 podem ser executados no Query Analyzer. Por
exemplo, vamos executar uma consulta que retorna apenas os clientes (Customers) mexicanos, isto ,
em que o campo Country possui o valor Mexico. Para isso poderamos utilizar o seguinte comando:
USE NORTHWIND
SELECT * FROM CUSTOMERS WHERE COUNTRY=Mexico
Neste caso, sero retornados apenas cinco registros, isto , apenas os registros para os clientes mexicanos.
Existem muitas outras funcionalidades do Query Analyzer. Estaremos trabalhando com muitas delas
ao longo deste livro. O Query Analyzer de grande utilidade para que o DBA possa executar comandos
diretamente no Banco de Dados SQL Server. Conforme aprenderemos ao longo deste livro, existem
uma srie de comandos para manuteno e otimizao dos elementos de um Banco de Dados do SQL
Server; comandos estes que podem ser executados atravs do Query Analyzer.
Podemos inserir comentrios nos comandos T-SQL. Utilizar comentrios sempre uma boa prtica de programao. Um comando T-SQL
com muitas linhas pode ser gravado em um arquivo de texto e depois carregado no Query Analyzer para futuras execues. Desta
forma no precisamos digitar o comando cada vez que o mesmo precisa ser executado. Para inserir comentrios em um comando T-SQL,
basta iniciar a linha do comentrio com dois traos, como no exemplo a seguir:
Este comando retorna apenas os clientes do Mxico
USE NORTHWIND
SELECT * FROM CUSTOMERS WHERE COUNTRY=Mxico
Cada linha de comentrio deve iniciar com .
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
139 CURSO COMPLETO00
Caso voc queira inserir um comentrio com vrias linhas, sem precisar iniciar cada linha com ,
podemos utilizar os caracteres /* para iniciar o bloco de comentrios e */ para finalizar o bloco de
comentrios, conforme indicado no exemplo a seguir:
/*
Nesta rotina, iremos extrair dados de diversas tabelas
e consolid-los de acordo com o Cdigo do Produto,
Cdigo do Vendedor e Regio de Vendas.
No Final, os dados sero inseridos em uma tabela temporria
chamada temp_result, no Banco de Dados Consolidado
*/
USE ...
SELECT * ...
FUNDAMENTOS EM: CRIAO DE BANCOS
DE DADOS COM O QUERY ANALYZER
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados relacionais.
Saber utilizar o Query Analyzer para executar comandos.
Conhecer a estrutura de armazenamento de um Banco de Dados do SQL Server 2000.
METODOLOGIA
Apresentao dos comandos T-SQL para criao de Bancos de Dados.
TCNICA
Criao de Bancos de Dados utilizando os comandos apresentados.
Para criarmos um Banco de Dados, utilizamos o comando CREATE DATABASE. A seguir temos a sintaxe
para este comando, conforme descrito no Books Online:
CREATE DATABASE database_name
[ ON
[ < filespec > [ ,...n ] ]
[ , < filegroup > [ ,...n ] ]
]
[ LOG ON { < filespec > [ ,...n ] } ]
[ COLLATE collation_name ]
[ FOR LOAD | FOR ATTACH ]
< filespec > ::=
[ PRIMARY ]
( [ NAME = logical_file_name , ]
FILENAME = os_file_name
[ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ]
[ , FILEGROWTH = growth_increment ] ) [ ,...n ]
< filegroup > ::=
FILEGROUP filegroup_name < filespec > [ ,...n ]
Este formato genrico no muito intuitivo. Vamos simplificar um pouco. A seguir, apresento uma
sintaxe simplificada, somente com as opes necessrias para criar o Banco de Dados, com um arquivo
primrio, um arquivo secundrio e um arquivo de log:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
140 00CURSO COMPLETO
CREATE DATABASE NOME_DO_BANCO_DE_DADOS
ON
*************************
Definio do Arquivo Primrio
*************************
(NAME= Nome_Lgico_Arquivo_Primrio,
FILENAME = Caminho para gravar o arquivo, por ex. C:\livrosql\exemplo3\ex3-prim.mdf,
SIZE= Tamanho_Inicial,
MAXSIZE= Tamanho_Mximo_Admitido,
FILEGROWTH = Incremento),
***************************
Definio do Arquivo Secundrio
***************************
(NAME= Nome_Lgico_Arquivo_Secundrio,
FILENAME = Caminho para gravar o arquivo, por ex. C:\livrosql\exemplo3\ex3-sec.ndf,
SIZE= Tamanho_Inicial,
MAXSIZE= Tamanho_Mximo_Admitido,
FILEGROWTH = Incremento)
*************************
Definio do Arquivo de Log
*************************
LOG ON
(NAME= Nome_Lgico_Arquivo_Log,
FILENAME = Caminho para gravar o arquivo, por ex. C:\livrosql\exemplo3\ex3-log.ldf,
SIZE= Tamanho_Inicial,
MAXSIZE= Tamanho_Mximo_Admitido,
FILEGROWTH = Incremento)
***************************************
Final do comando de criao do Banco de Dados
***************************************
Lembrando que as linhas que iniciam com so linhas de comentrio, cujo objetivo tornar a leitura e interpretao do comando T-
SQL mais fcil.
Agora vamos utilizar um comando que cria um Banco de Dados chamado Exemplo3, com as
caractersticas definidas na Tabela 3.4. Os arquivos, primrio, secundrio e de log, devero ser salvos
em C:\livrosql\exemplo3.
Tabela 3.4 Banco de dados Exemplo3.
Arquivo Definies
Primrio C:\livrosql\exemplo3\exemplo3-prim.mdf.
Crescimento automtico habilitado.
Tamanho inicial: 7 MB.
Crescimento em incrementos de 1 MB.
Tamanho mximo de 25 MB.
Secundrio C:\livrosql\exemplo3\exemplo3-sec1.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Crescimento em incrementos de 10 %.
Tamanho mximo de 50 MB.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
141 CURSO COMPLETO00
Exemplo:
Criar o Banco de Dados definido pela Tabela 3.4.
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo.
3. Ser aberto o Query Analyzer com o Banco de Dados master como sendo o Banco de Dados atual.
Digite o seguinte comando:
CREATE DATABASE Exemplo3
ON
*************************
Definio do Arquivo Primrio
*************************
(NAME= exemplo3_prim,
FILENAME = C:\livrosql\exemplo3\exemplo3-prim.mdf ,
SIZE= 7MB,
MAXSIZE= 25MB,
FILEGROWTH = 1MB),
***************************
Definio do Arquivo Secundrio
***************************
(NAME= exemplo3_sec1,
FILENAME = C:\livrosql\exemplo3\exemplo3-sec1.ndf ,
SIZE= 10MB,
MAXSIZE= 50MB,
FILEGROWTH = 10%)
*************************
Definio do Arquivo de Log
*************************
LOG ON
(NAME= exemplo3_log1,
FILENAME = C:\livrosql\exemplo3\exemplo3-log1.ldf ,
SIZE= 7MB,
MAXSIZE= 25MB,
FILEGROWTH = 2MB)
***************************************
Final do comando de criao do banco de dados
***************************************
Arquivo Definies
Arquivo de log C:\livrosql\exemplo3\exemplo3-log1.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 7 MB.
Crescimento em incrementos de 2 MB.
Tamanho mximo de 25 MB.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
142 00CURSO COMPLETO
Veja que estamos utilizando o caracter de sublinhado _ para os nomes lgicos, pois no podemos utilizar o sinal -, o qual no um
caractere vlido para um nome lgico. Se utilizarmos o sinal - , ao executarmos o comando obteremos a seguinte mensagem de erro:
Server: Msg 170, Level 15, State 1, Line 14
Line 14: Incorrect syntax near -.
Importante: Antes de executar este comando, a pasta C:\livrosql\exemplo3 j deve ter sido criada, caso contrrio ser exibida a
seguinte mensagem de erro:
Server: Msg 5105, Level 16, State 2, Line 1
Device activation error. The physical file name C:\livrosql\exemplo3\exemplo3-
prim.mdf may be incorrect.
Server: Msg 1802, Level 16, State 1, Line 1
CREATE DATABASE failed. Some file names listed could not be created. Check previous
errors.
Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, o Banco de Dados
Exemplo3 ter sido criado e a seguinte mensagem ser exibida no painel inferior do Query Analyzer:
The CREATE DATABASE process is allocating 7.00 MB on disk exemplo3_prim.
The CREATE DATABASE process is allocating 10.00 MB on disk exemplo3_sec1.
The CREATE DATABASE process is allocating 7.00 MB on disk exemplo3_log1.
Com isso o nosso Banco de Dados foi criado.
4. Mantenha o Query Analyzer aberto, pois vamos utiliz-lo para mais alguns exemplos neste
captulo. Apenas minimize-o.
Agora vamos utilizar o Enterprise Manager para verificar se o Banco de Dados Exemplo3 foi realmente criado.
Exemplo:
Verificando se o Banco de Dados Exemplo3 foi realmente criado:
1. Abra o Enterprise Manager.
2. Clique no sinal de mais ao lado de SQL Server Group para abri-lo.
3. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
4. Clique no sinal de mais ao lado de Databases para expandi-la.
5. Observe que o Exemplo3 j deve aparecer na listagem de Banco de Dados.
Vamos fazer mais algumas observaes sobre o comando CREATE DATABASE.
Os tamanhos para os parmetros SIZE e MAXSIZE podem ser definidos em kilobyte (KB), mega-
byte (MB), gigabyte (GB) ou terabyte (TB). O padro MB, isto , se no for especificada a
unidade, o nmero considerado em MB.
O parmetro FILEGROWTH, o qual especifica o incremento para o crescimento automtico
pode ser definido em valores absolutos (KB, MB, GB ou TB) ou em valores percentuais, como
por exemplo: 10%, 15%, etc.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
143 CURSO COMPLETO00
O nmero mximo de Bancos de Dados que podemos ter em uma instncia do SQL Server 32.767.
No podemos especificar valores decimais para os parmetros SIZE, MAXSIZE e FILEGROWTH.
Por exemplo, no posso ter SIZE= 2,5 MB. Ao invs disso devo fazer uma pequena conta, por
exemplo: Cada MB possui 1024 KB, logo 2,5 MB = 2,5 x 1024 = 2560. Agora basta especificarmos
SIZE= 2560KB.
Agora vamos aprender a utilizar o comando CREATE DATABASE com a opo de colocar alguns arquivos
do Banco de Dados em outro Filegroup que no o Primrio. Nos exemplos anteriores, como no
especificamos em qual filegroup os arquivos (primrio, secundrio ou de log) deveriam ser criados, os
mesmos foram criados no filegroup padro que o Primary. Lembrando que filegroup simplesmente
um conceito que permite agruparmos, logicamente, um conjunto de arquivos e at mesmo tabelas e
ndices. Este agrupamento lgico pode ser utilizado para facilitar a distribuio dos arquivos ao longo
de vrios discos, facilitar as rotinas de backup, etc. Vamos aprender estas opes com o auxlio de um
exemplo um pouco mais complexo do que os anteriores.
Exemplo:
Utilizar o comando CREATE DATABASE para criar um Banco de Dados chamado Exemplo4, com as
caractersticas indicadas na Tabela 3.5.
Tabela 3.5 Banco de dados Exemplo4.
Arquivo Definies
Primrio C:\livrosql\exemplo4\exemplo4_prim.mdf.
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Tamanho mximo de 50 MB.
Crescimento em incrementos de 15%.
No filegroup Primary.
Secundrio C:\livrosql\exemplo4\exemplo4_sec1.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Tamanho mximo de 50 MB.
Crescimento em incrementos de 15 %.
No filegroup Primary.
Secundrio C:\livrosql\exemplo4\exemplo4_sec2.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Tamanho mximo de 50 MB.
Crescimento em incrementos de 5 MB.
No filegroup SalesGroup1.
Secundrio C:\livrosql\exemplo4\exemplo4_sec3.ndf.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
144 00CURSO COMPLETO
Observe que os arquivos sero salvos na pasta C:\livrosql\exemplo4. Criaremos o Banco de Dados
Exemplo4 na instncia SERVIDOR\SRVINST01.
Para criar o Banco de Dados Exemplo4 com o Query Analyzer faa o seguinte:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST01. Se voc j fez a conexo com a instncia SERVIDOR\SRVINST01
anteriormente, a mesma j aparece no campo SQL Server. Clique em OK para fazer a conexo.
3. Ser aberto o Query Analyzer com o Banco de Dados master como sendo o Banco de Dados atual.
Digite o seguinte comando:
CREATE DATABASE Exemplo4
Especifica o filegroup Primary
ON PRIMARY
( NAME = exemplo4_prim,
FILENAME = C:\livrosql\exemplo4\exemplo4_prim.mdf,
Arquivo Definies
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Tamanho mximo de 50 MB.
Crescimento em incrementos de 5 MB.
No filegroup SalesGroup1
Secundrio C:\livrosql\exemplo4\exemplo4_sec4.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Tamanho mximo de 50 MB.
Crescimento em incrementos de 5 MB.
No filegroup SalesGroup2.
Secundrio C:\livrosql\exemplo4\exemplo4_sec5.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Tamanho mximo de 50 MB.
Crescimento em incrementos de 5 MB.
No filegroup SalesGroup2.
Arquivo de log C:\livrosql\exemplo4\exemplo4_log.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 5 MB.
Tamanho mximo de 25 MB.
Crescimento em incrementos de 5 MB.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
145 CURSO COMPLETO00
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15% ),
( NAME = exemplo4_sec1,
FILENAME = C:\livrosql\exemplo4\exemplo4_sec1.ndf,
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15% ),
Os prximos arquivos sero associados com
Filegroup SalesGroup1
FILEGROUP SalesGroup1
( NAME = exemplo4_sec2,
FILENAME = C:\livrosql\exemplo4\exemplo4_sec2.ndf,
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
( NAME = exemplo4_sec3,
FILENAME = C:\livrosql\exemplo4\exemplo4_sec3.ndf,
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
Os prximos arquivos sero associados com
Filegroup SalesGroup2
FILEGROUP SalesGroup2
( NAME = exemplo4_sec4,
FILENAME = C:\livrosql\exemplo4\exemplo4_sec4.ndf,
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
( NAME = exemplo4_sec5,
FILENAME = C:\livrosql\exemplo4\exemplo4_sec5.ndf,
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = exemplo4_log,
FILENAME = C:\livrosql\exemplo4\exemplo4_log.ldf,
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
Vamos repetir esta observao porque ela importante. Veja que estamos utilizando o caracter de sublinhado _ para os nomes lgicos,
pois no podemos utilizar o sinal -, o qual no um caractere vlido para um nome lgico. Se utilizarmos o sinal - , ao executarmos o
comando obteremos a seguinte mensagem de erro:
Server: Msg 170, Level 15, State 1, Line 14
Line 14: Incorrect syntax near -.
Vamos repetir este aviso porque o mesmo importante: Antes de executar este comando, a pasta C:\livrosql\exemplo4 j deve ter sido
criada, caso contrrio ser exibida a seguinte mensagem de erro:
Server: Msg 5105, Level 16, State 2, Line 1
Device activation error. The physical file name C:\livrosql\exemplo4\exemplo4-
prim.mdf may be incorrect.
Server: Msg 1802, Level 16, State 1, Line 1
CREATE DATABASE failed. Some file names listed could not be created. Check previous
errors.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
146 00CURSO COMPLETO
Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, o Banco de Dados
Exemplo4 ter sido criado e a seguinte mensagem exibida no painel inferior do Query Analyzer:
The CREATE DATABASE process is allocating 10.00 MB on disk exemplo4_prim.
The CREATE DATABASE process is allocating 10.00 MB on disk exemplo4_sec1.
The CREATE DATABASE process is allocating 10.00 MB on disk exemplo4_sec2.
The CREATE DATABASE process is allocating 10.00 MB on disk exemplo4_sec3.
The CREATE DATABASE process is allocating 10.00 MB on disk exemplo4_sec4.
The CREATE DATABASE process is allocating 10.00 MB on disk exemplo4_sec5.
The CREATE DATABASE process is allocating 5.00 MB on disk exemplo4_log.
Esta mensagem a confirmao de que o Banco de Dados foi criado com sucesso.
Agora vamos utilizar o Enterprise Manager para verificar se o Banco de Dados Exemplo4 foi realmente criado.
Exemplo:
Verificando se o Banco de Dados Exemplo4 foi realmente criado:
1. Abra o Enterprise Manager.
2. Clique no sinal de mais ao lado de SQL Server Group para abri-lo.
3. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
4. Clique no sinal de mais ao lado de Databases para expandi-la.
5. Observe que Exemplo4 j deve aparecer na listagem de Banco de Dados.
Agora que aprendemos a utilizar o comando CREATE DATABASE, vamos aprender mais alguns comandos
T-SQL para o trabalho com Bancos de Dados.
FUNDAMENTOS EM: ALTERAO DE BANCOS
DE DADOS COM O QUERY ANALYZER
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Saber utilizar o Query Analyzer para executar comandos T-SQL.
Conhecer a estrutura de armazenamento de um Banco de Dados do SQL Server 2000.
METODOLOGIA
Apresentao dos comandos T-SQL para alterao de Bancos de Dados.
TCNICA
Alterao de Bancos de Dados utilizando os comandos apresentados.
Com o comando ALTER DATABASE podemos fazer uma srie de alteraes em um Banco de Dados,
como por exemplo adicionar arquivos secundrios e arquivos de log. A seguir, temos a sintaxe oficial,
segundo o Books OnLine, para o comando ALTER DATABASE:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
147 CURSO COMPLETO00
ALTER DATABASE database
{ ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ]
| ADD LOG FILE < filespec > [ ,...n ]
| REMOVE FILE logical_file_name
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILE < filespec >
| MODIFY NAME = new_dbname
| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }
| SET < optionspec > [ ,...n ] [ WITH < termination > ]
| COLLATE < collation_name >
}
Como a sintaxe descrita na documentao oficial no o que se possa chamar de muito amistosa,
vamos aprender a utilizar este comando atravs de exemplos.
Exemplo:
Alterar o Banco de Dados Exemplo3, adicionando um arquivo secundrio e um arquivo de log, conforme
orientaes da Tabela 3.6
Tabela 3.6 Alterando o Banco de Dados Exemplo3.
Para alterar o Banco de Dados Exemplo3 faa o seguinte:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST01. Se voc j fez a conexo com a instncia SERVIDOR\SRVINST01
anteriormente, a mesma j aparece no campo SQL Server. Clique em OK para fazer a conexo.
3. Ser aberto o Query Analyzer com o Banco de Dados master como sendo o Banco de Dados atual.
Digite o seguinte comando:
ALTER DATABASE Exemplo3
ADD FILE
(
Arquivo Definies
Adicionar C:\livrosql\exemplo3\exemplo3-sec1.ndf.
Secundrio Crescimento automtico habilitado.
Tamanho inicial: 12 MB.
Crescimento em incrementos de 20 %.
Tamanho mximo de 65 MB.
Adicionar C:\livrosql\exemplo3\exemplo3-log2.ldf.
Arquivo de log Crescimento automtico habilitado.
Tamanho inicial: 7 MB.
Crescimento em incrementos de 5%.
Tamanho mximo de 25 MB.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
148 00CURSO COMPLETO
NAME = exemplo3_sec2,
FILENAME = c:\livrosql\exemplo3\exemplo3_sec2.ndf,
SIZE = 12MB,
MAXSIZE = 65MB,
FILEGROWTH = 20%
)
GO
ALTER DATABASE Exemplo3
ADD LOG FILE
( NAME = exemplo3_log2,
FILENAME = c:\livrosql\exemplo3\exemplo3_log2.ldf,
SIZE = 7MB,
MAXSIZE = 25MB,
FILEGROWTH = 5%)
Observe que aps fecharmos o comando que adiciona um arquivo de dados ADD FILE, precisamos inserir um comando GO, para que
o primeiro arquivo ALTER DATABASE seja executado e o arquivo exemplo3_sec2.ndf seja adicionado. Aps o GO executado o segundo
comando ALTER DATABASE, agora para adicionar um arquivo de LOG. No posso utilizar no mesmo comando ALTER DATABASE as opes
ADD FILE e ADD LOG FILE. Por isso preciso de dois comandos ALTER DATABASE separados. A maneira de fazer com que mais do que um
comando seja executado de uma nica vez, inserindo o comando GO.
Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, o Exemplo3 ter
sido alterado e a seguinte mensagem exibida no painel inferior do Query Analyzer:
Extending database by 12.00 MB on disk exemplo3_sec2.
Extending database by 7.00 MB on disk exemplo3_log2.
Esta mensagem a confirmao de que o Banco de Dados Exemplo3 foi alterado com sucesso.
Exemplo:
Como remover um arquivo de um Banco de Dados.
No comando a seguir, estamos utilizando o comando ALTER DATABASE para remover o arquivo
exemplo3_log2 adicionado no exemplo anterior:
USE master
GO
ALTER DATABASE Exemplo3
REMOVE FILE exemplo3_log2
GO
Ao finalizar este comando exibida a seguinte mensagem:
The file exemplo3_log2 has been removed.
Observe que o nome utilizado o nome lgico e no o nome do arquivo e disco (C:\livrosql\exemplo3\
exemplo3_log2.ndf). Bem, j estava na hora de apresentarmos alguma utilidade para o nome lgico do
arquivo. A utilidade exatamente esta, podemos nos referir ao nome lgico do arquivo nos comandos
T-SQL, o que convenhamos, bem mais fcil do que nos referir ao nome do arquivo no disco.
Exemplo:
Como modificar um arquivo de um Banco de Dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
149 CURSO COMPLETO00
No comando a seguir, estamos utilizando o comando ALTER DATABASE para modificar o arquivo
exemplo3_sec2 adicionado no exemplo anterior:
USE master
GO
ALTER DATABASE Exemplo3
MODIFY FILE
(NAME = exemplo3_sec2,
SIZE = 25MB)
GO
Ao finalizar este comando, exibida a seguinte mensagem:
The command(s) completed successfully.
FUNDAMENTOS EM: EXCLUSO DE BANCOS DE DADOS
COM O QUERY ANALYZER E COM O ENTERPRISE MANAGER
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Conhecer e saber utilizar a interface do Enterprise Manager.
Saber utilizar o Query Analyzer para executar comandos.
Conhecer a estrutura de armazenamento de um Banco de Dados do SQL Server 2000.
METODOLOGIA
Apresentao dos comandos T-SQL para excluso de Bancos de Dados.
TCNICA
Excluso de Bancos de Dados utilizando os comandos apresentados.
Uma vez que um Banco de Dados no seja mais necessrio, podemos excluir o mesmo do servidor SQL
Server. A excluso pode ser feita utilizando-se o Enterprise Manager ou o comando DROP DATABASE.
Para excluir um Banco de Dados com o Enterprise Manager, basta localizar o banco de dados a ser
excludo, clicar com o boto direito do mouse sobre o mesmo, e no menu de opes que surge, clicar
na opo Excluir (Delete).
Surgir uma janela pedindo confirmao, conforme indicado na Figura 3.39.
Figura 3.39 Confirmando a excluso de um Banco de Dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
150 00CURSO COMPLETO
Para excluir um Banco de Dados com o Query Analyzer, utilizamos o comando DROP DATABASE,
conforme ilustrado nos exemplos a seguir.
Para excluir o Exemplo4 utilize o seguinte comando:
DROP DATABASE Exemplo4
Ao executar este comando, no Query Analyzer, ser exibida a seguinte mensagem:
Deleting database file C:\livrosql\exemplo4\exemplo4_sec5.ndf.
Deleting database file C:\livrosql\exemplo4\exemplo4_sec4.ndf.
Deleting database file C:\livrosql\exemplo4\exemplo4_sec3.ndf.
Deleting database file C:\livrosql\exemplo4\exemplo4_sec2.ndf.
Deleting database file C:\livrosql\exemplo4\exemplo4_sec1.ndf.
Deleting database file C:\livrosql\exemplo4\exemplo4_log.ldf.
Deleting database file C:\livrosql\exemplo4\exemplo4_prim.mdf.
Ao excluir um Banco de Dados utilizando o comando DROP DATABASE, no ser pedida confirmao.
Podemos excluir mais do que um Banco de Dados. Para isto basta separar o nome dos Bancos de Dados
a serem excludos com vrgula, conforme indicado no exemplo a seguir:
DROP DATABASE Exemplo4, Exemplo3
CONCLUSO
Neste captulo aprendemos uma srie de conceitos importantes e que sero utilizados no restante deste livro.
Aprendemos a utilizar as duas principais ferramentas de administrao do SQL Server 2000:
Enterprise Manager.
Query Analyzer.
Utilizamos o Enterprise Manager para navegar pelos principais componentes de um Banco de Dados.
Tambm aprendemos a configurar as diversas opes de uma instncia do SQL Server, como por exemplo
o gerenciamento de memria, gerenciamento dos processadores, segurana, etc.
Tambm vimos qual a estrutura de um Banco de Dados no SQL Server 2000, o qual formado por uma
srie da arquivos do Sistema Operacional, arquivos estes que podem ser de um dos seguintes tipos:
Arquivo de dados primrio (Primary File).
Arquivo de dados secundrio (Secondary File).
Arquivo de log (Log File).
Na seqncia, aprendemos sobre o sistema de armazenamento do Windows 2000, bem como sobre as
implementaes de RAID.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2000
151 CURSO COMPLETO00
Na parte final deste captulo tratamos da criao e alterao de Bancos de Dados utilizando a interface
grfica do Enterprise Manager e tambm comandos T-SQL executados no Query Analyzer.
Tambm aprendemos a alterar e excluir Bancos de Dados, utilizando o Enterprise Manager e o Query
Analyzer.
O prximo passo natural aprendermos a criar e gerenciar os diversos elementos que compem um
Banco de Dados. O primeiro elemento so as tabelas. Mas isso j assunto para o Captulo 4.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
153 CURSO COMPLETO00
Captulo 4
CRIANDO TABELAS, NDICES E
VIEWS COM O SQL SERVER 2000
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
154 00CURSO COMPLETO
INTRODUO
No Captulo 3, aprendemos a criar Bancos de Dados utilizando o Enterprise Manager e tambm o
Query Analyzer. Porm, um Banco de Dados em si no serve para nada. Precisamos criar os diversos
elementos que o compem. Neste captulo aprenderemos a criar os seguintes elementos:
Tipos de dados
Tabelas
ndices
Iniciaremos o captulo aprendendo sobre os tipos de dados predefinidos no SQL Server 2000. Conforme
explicaremos em detalhes, cada coluna deve conter dados de um determinado tipo, por exemplo:
Texto, Nmeros inteiros, Nmeros reais, Data e hora, etc.
Na seqncia aprenderemos a criar tabelas em um Banco de Dados do SQL Server 2000. Utilizaremos o
Enterprise Manager e tambm comandos T-SQL no Query Analyzer. Veremos diversos exemplos de
criao de tabelas e definio dos campos que fazem parte da tabela. Tambm aprenderemos a definir
as propriedades de cada campo.
Uma vez criada as tabelas, podemos aprender a definir ndices para as mesmas. Tambm aprenderemos
a definir um campo como sendo a Chave Primria da tabela. Conforme ser explicado os ndices
desempenham um importante papel no desempenho das consultas (Views). Uma correta definio
dos ndices pode ser um auxiliar valioso para obter um desempenho otimizado. Tambm aprenderemos
a utilizar um assistente chamado Create Index Wizard, o qual pode ser usado para criao de ndices.
Alm disso, aprenderemos a criar ndices utilizando o Enterprise Manager e o Query Analyzer.
Aps ter estudado este captulo, o amigo leitor dever estar habilitado para:
Criar tabelas em um Banco de Dados do SQL Server 2000.
Definir as caractersticas dos campos de uma tabela.
Entender a importncia da criao de ndices para o desempenho de consultas.
Saber criar ndices utilizando o Enterprise Manager, o Query Analyzer e o assistente Create
Index Wizard.
Veja que estaremos criando tabelas e ndices. No estaremos fazendo entrada de dados nas tabelas criadas. Conforme descrito anteriormente,
o SQL Server 2000 no um front-end para desenvolvimento de aplicaes. A entrada de dados em um Banco de Dados do SQL Server (ou
do ORACLE, DB2 da IBM, etc), normalmente, feita atravs de formulrios de uma aplicao desenvolvida em Visual Basic, Delphi, ASP ou
qualquer outra ferramenta de desenvolvimento capaz de se comunicar com um Banco de Dados do SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
155 CURSO COMPLETO00
FUNDAMENTOS EM: PROJETO DE BANCO DE DADOS
E TIPOS DE DADOS DO SQL SERVER 2000
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
METODOLOGIA
Apresentao dos tipos bsicos do SQL Server 2000.
Consideraes sobre o projeto de Bancos de Dados.
Conforme vimos no Captulo 1, antes de comearmos a criar um Banco de Dados, devemos fazer uma
anlise bastante criteriosa para determinar quais as tabelas que faro parte do mesmo; quais campos
faro parte de cada tabela; quais as propriedades de cada um dos campos; quais sero as Chaves Primrias
de cada tabela; quais os relacionamentos entre as tabelas e as definies de Integridade Referencial. O
passo final a aplicao das regras de Normalizao.
Uma vez definidos todos estes pontos, teremos o Diagrama Entidade x Relacionamentos o qual serve
como um mapa para a estrutura do Banco de Dados. Neste captulo iremos aprender a criar as tabelas
definidas no Diagrama Entidades x Relacionamentos.
Antes de criarmos as tabelas, vamos aprender sobre os tipos de dados disponibilizados pelo SQL Server
2000. O tipo do dado de um determinado campo define quais as informaes que podem ser
armazenadas no campo. Por exemplo, um campo que definido como Inteiro no poder conter
caracteres nem nmeros com decimais. J um campo do tipo Data no ir aceitar uma entrada como:
30/02/20001. J se ao invs de data o campo fosse do tipo Texto, a entrada 30/02/2001 seria aceita. No
projeto do Banco de Dados tambm definimos os tipos dos diversos campos de cada tabela.
Na Tabela 4.1 temos os principais tipos de dados disponveis no SQL Server 2000.
Tabela 4.1 Principais tipos de dados do SQL Server 2000.
Tipo Descrio Tamanho
bigint Um inteiro de 8 bytes. 8 bytes
binary(n) Um binrio de tamanho fixo (n bytes), onde o n+4 bytes
valor mximo de n 8000. Devemos utilizar este
tipo, quando os dados de uma coluna tero mais
ou menos o mesmo tamanho, como por exemplo
a foto de um funcionrio.
bit um inteiro que somente pode conter os valores 0, 1 Varivel. Depende do
ou NULL. Colunas com o tipo de dados bit no podem nmero de colunas.
ser indexadas.
char(n) Texto de tamanho fixo (n bytes), com caracteres no n bytes
Unicode. O valor mximo para n 8000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
156 00CURSO COMPLETO
Tipo Descrio Tamanho
cursor Contm uma referncia (ponteiro) para um cursor. No aplicvel.
Falaremos mais sobre cursores a partir do Captulo 9.
datetime Data e hora na perodo de 01/01/1753 31/12/9999. 8 bytes
float(n) Um nmero decimal que pode variar de -1.79E+308 at 4 a 8 bytes
+1.79E+308. O valor n indica o nmero de bits utilizado dependendo da
para armazenar a mantissa do nmero e varia de 1 a 53. preciso
image Utilizado para dados binrios de tamanho varivel e 16 bytes por pointer
maiores do que 8000 bytes. Tem um tamanho
mximo de (2^31) -1 byte (cerca de 2 GB). Uma
coluna deste tipo simplesmente um ponteiro para
a localizao da imagem. Os dados da imagem so
armazenados separadamente dos dados da tabela.
integer ou int Um inteiro variando de -(2^31) (-2.147.483.648) 4 bytes
at (2^31)-1 (+.147.483.647)
money Valores monetrios variando de -(2^63) 8 bytes
(-922.337.203.685.477,5808) at +(2^63)-1
(+922.337.203.685.477,5807).
nchar(n) Dados do tipo caracter, de tamanho fixo (n) com 2 x nmero de
caracteres Unicode. n pode variar de 1 at 4000. caracteres digitados
Caracteres Unicode utilizam 2 bytes por caracter, no campo.
mas em contrapartida suportam todos os caracteres
internacionais.
ntext Pode conter caracteres Unicode. um campo de 16 bytes por
tamanho varivel, podendo conter at (2^30) ponteiro, mais 2
caracteres (1.073.741.823 caracteres). A coluna bytes x nmero
do tipo ntext no contm os dados mas sim um caracteres digitados
ponteiro para o arquivo com os dados, os quais so para o campo.
armazenados separadamente dos dados da tabela.
nvarchar Pode conter caracteres Unicode. um campo de 2 bytes vezes o
tamanho varivel, com n variando de 1 at 4000. nmero de caracteres
digitados para o
campo.
real um nmero decimal variando de 3.40E + 38 bytes
at 3.40E + 38. o mesmo que float(24).
smalldatetime Pode conter valores de data e hora, no perodo de 4 bytes
01/01/1900 at 06/06/2079.
smallint Pode conter nmeros inteiros na faixa de -(2^15) 2 bytes
(-32.768) at (2^15)-1 (32.767).
smallmoney Pode conter valores monetrios na faixa 4 bytes
-214.748,3648 at 214.748,3647.
sql_variant Permite valores de diferentes tipos Varivel
-214.748,3648 at 214.748,3647.
table Pode ser utilizada para tabelas temporrias, para Varia com a definio
definir uma varivel local ou para retornar da tabela.
valores a partir de uma funo definida pelo usurio.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
157 CURSO COMPLETO00
Para detalhes sobre os tipos de dados disponveis no SQL Server 2000, voc pode consultar o tpico
Transact-SQL Reference, no Books OnLine.
ALGUMAS DICAS PARA DEFINIR OS TIPOS DE DADOS PARA CADA COLUNA
Vamos ver algumas consideraes que podem nos ajudar na escolha do tipo de dados mais adequado
para cada coluna.
O fator determinante na escolha do tipo de dados de uma coluna so os prprios dados a serem
armazenados na coluna. Por exemplo, se a coluna for armazenar a data de aniversrio do cliente, na
tabela Clientes obvio que o campo deve ser do tipo datetime, a menos que haja algum outro motivo.
Campos que iro conter valores devem ser do tipo respectivo, isto , se o campo ir conter somente
nmeros inteiros, podemos utilizar os tipos integer, smallint ou tinyint, dependendo da faixa de valores
esperados. J se o campo contiver valores com decimais devemos optar pelos tipos real, float ou money,
dependendo da faixa de valores.
Embora paream consideraes bvias, muitas vezes so esquecidas na hora de projetar um Banco de
Dados. Vamos considerar um campo que deva armazenar valores de CPF, tendo o seguinte formato:
111.111.111-11
Se quisermos armazenar no Banco de Dados os pontos e o trao, no poderemos definir o campo CPF
como sendo do tipo integer, ao invs disso devemos defini-lo como sendo do tipo texto. Porm se
quisermos armazenar apenas os nmeros podemos defini-lo como sendo do tipo integer. Outra questo
que surge se podemos armazenar, no nosso exemplo, o campo CPF como do tipo texto e mesmo
assim fazer clculos com este campo, como por exemplo, calcular o DV Dgito Verificador (dois
ltimos dgitos) do CPF. Tecnicamente isto possvel, pois podemos utilizar funes que retornam
cada um dos caracteres do CPF e depois convert-los para nmeros de tal forma que possamos fazer os
clculos necessrios. Porm este procedimento pode ocasionar processamento adicional o que prejudica
o desempenho das aplicaes que esto acessando o Banco de Dados.
Tipo Descrio Tamanho
text Utilizado para valores de texto com tamanho varivel 16 bytes por
e maiores do que 8000 caracteres. Utiliza caracteres ponteiro.
Unicode. Pode conter at (2^31)-1 caracter. um
ponteiro para a localizao dos dados.
timestamp Uma coluna do tipo timestamp atualizada, 8 bytes
automaticamente, toda vez que uma linha for
inserida ou alterada. Podemos ter somente uma
coluna do tipo timestamp por tabela.
tinyint Inteiro variando de 1 at 255. byte
unique-identifier Contm um binrio de 16 bytes, o qual um 1 byte 16 bytes
globally unique identifier (GUID).
varbinary Pode conter um valor binrio de tamanho Tamanho dos
varivel de 1 at 8000 bytes. dados + 4 bytes
varchar(n) Pode conter dados do tipo caracter, no Unicode, Tamanho dos
variando n de 1 at 8000 caracteres no mximo. dados digitados
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
158 00CURSO COMPLETO
Estas pequenas questes reforam a idia de que devemos fazer uma anlise criteriosa na fase de projeto
do Banco de Dados.
Outro fator que devemos levar em considerao se vamos utilizar campos de tamanho fixo ou cam-
pos de tamanho varivel.
De uma maneira geral devemos utilizar campos de tamanho fixo se os dados de uma coluna tiverem
um tamanho que no varia muito. Quando os dados de uma coluna sofrem grandes variaes de
tamanho, a utilizao de um tipo de dados de tamanho fixo pode causar um desperdcio de espao em
disco. Vamos considerar o seguinte exemplo:
Uma coluna do tipo texto.
Definida com um tamanho fixo de 250 caracteres.
A tabela possui 200.000 registros.
Em mdia 80% dos registros armazenam apenas 50 caracteres neste campo, o qual foi definido
como tamanho de 250 por causa de alguns poucos registros em que o campo atinge este
tamanho.
Vamos calcular o desperdcio:
80% de 200.000 registros = 160.000 registros
160.000 registros vezes um desperdcio de 200 bytes por registro
Desperdcio total = 30,5 MB
Mantidas as mesmas propores, se esta tabela tiver 1.000.000 de registros, teramos um desperdcio
de 152,5 MB.
Nestas situaes pode ser justificvel a utilizao, por exemplo, de um campo de texto de tamanho
varivel, com tamanho mximo definido em 250 char(250). Nesta situao o espao ocupado no
seria 250 bytes para todos os campos, mas somente o tamanho real dos dados digitados no campo,
conforme descrito na Tabela 4.1.
Mas, ento, por que no utilizamos sempre campos de tamanho varivel? A resposta simples: porque
campos de tamanho varivel acarretam processamento adicional para o Banco de Dados, sendo que os
mesmos somente devem ser utilizados em situaes que realmente sejam necessrios. Estas situaes
tipicamente ocorrem quando no sabemos com preciso a variao do tamanho dos dados em um
determinado campo, e a utilizao de um tamanho fixo acarretaria desperdcio de espao em disco.
Agora vamos aprender a criar tabelas no SQL Server 2000.
FUNDAMENTOS EM: CRIAO DE TABELAS COM O ENTERPRISE MANAGER
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
159 CURSO COMPLETO00
Conhecer os tipos bsicos de dados do SQL Server 2000.
Saber utilizar o Enterprise Manager.
METODOLOGIA
Utilizao do Enterprise Manager para a criao de tabelas.
TCNICA
Criao de tabelas nos Bancos de Dados criados no Captulo 3.
Agora vamos aprender a criar tabelas utilizando o Enterprise Manager. Mais uma vez a melhor maneira
de aprendermos atravs de um exemplo prtico. Vamos criar a tabela Clientes com os campos indicados
na Tabela 4.2.
Tabela 4.2 A tabela Clientes.
Vamos criar esta tabela no Banco de Dados Exemplo1. Lembrando que este banco de dados foi criado na
instncia SERVIDOR\SRVINST01. Iremos inicialmente criar a tabela Clientes definindo apenas caractersticas
bsicas: nome, tamanho mximo, tipo e se o campo pode conter valores nulos ou no. Na seqncia,
apresentaremos mais um exemplo, onde estaremos trabalhando com mais propriedades de cada campo.
Exemplo:
Criando a tabela Clientes com o Enterprise Manager.
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
2. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
3. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para expandi-la. Abaixo de Databases exibida uma lista com os bancos de dados
disponveis na instncia SERVIDOR\SRVINST01.
4. D um clique na opo Databases. No painel da direita, sero exibido os Bancos de Dados
disponveis. Localize o Banco de Dados Exemplo1, criado no captulo anterior.
Campo Tipo de dado
CdigoCliente Integer
NomeEmpresa Texto de, no mximo, 50 caracteres.
Rua Texto de, no mximo, 50 caracteres.
Bairro Texto de, no mximo, 20 caracteres.
Cidade Texto de, no mximo, 25 caracteres.
CEP Integer
DataCadastro datetime
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
160 00CURSO COMPLETO
5. D um clique com o boto direito do mouse no banco de dados Exemplo1. No menu de opes
que surge, d um clique na opo New Table. Surge a janela para a criao de uma nova tabela,
conforme indicado na Figura 4.1.
Figura 4.1 A janela para criao de uma nova tabela.
Abaixo da barra de botes, temos um espao para a criao dos campos. Cada campo criado em uma
nova linha. Neste espao temos quatro colunas, conforme descrito a seguir:
Column Name: Nesta coluna definimos o nome do campo.
Data Type: Aqui podemos definir o tipo de dados para o campo que est sendo criado. Podemos
selecionar em uma lista de tipos predefinidos. Caso o usurio tenha definido algum tipo
personalizado, o mesmo tambm ir aparecer nesta lista. Veremos como criar tipos
personalizados ainda neste captulo.
Length: Nesta coluna vamos especificar o tamanho mximo para o campo.
Allow Nulls: Serve para definir se o campo que est sendo criado ir ou no, aceitar valores
nulos. Valor Null diferente de valor em branco. Uma valor Null de tipo desconhecido e ao
ser utilizado em funes retorna um erro. J valores em branco no retornam erros ao serem
utilizados como parmetros de funo. Por exemplo, ao usurio entrar em um campo do tipo
texto e pressionar Enter, ele estar criando uma string de comprimento zero, a qual um valor
em branco, diferente de um valor Null.
Na parte de cima desta janela definimos os campos, um por linha. medida que estamos definindo
um determinado campo, podemos definir propriedades adicionais para o mesmo. Estas propriedades
aparecem na parte inferior da janela. O conjunto de propriedades diferente para diversos tipos de
campo, isto , as propriedades para um campo do tipo integer so diferentes das propriedades para um
campo do tipo datetime. Um detalhe importante a ser observado que as propriedades da parte de
baixo da janela so referentes ao campo da linha onde est o cursor, na parte de cima da janela.
importante estarmos cientes deste detalhe, para no alterarmos as propriedades de um campo quando
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
161 CURSO COMPLETO00
na verdade estamos querendo alterar as propriedades de um outro campo. No prximo exerccio
aprenderemos sobre estas diversas propriedades.
6. Vamos comear criando o campo CdigoCliente. Para isso preencha a primeira linha com as
seguintes informaes:
Column Name -> CdigoCliente
Data Type -> int
Size -> 4 (este preenchido automaticamente no caso de campos com tamanho j definidos,
como no caso de int, real, etc.)
Allow Null -> No (caixinha desmarcada).
Sua janela deve estar conforme indicado na Figura 4.2.
Figura 4.2 Definindo o campo CdigoCliente.
7. Defina os demais campos, conforme as seguintes orientaes:
Column Name -> NomeEmpresa
Data Type -> char
Size -> 50 (basta digitar o valor nesta coluna).
Allow Null -> No (caixinha desmarcada).
Column Name -> Rua
Data Type -> char
Size -> 50 (basta digitar o valor nesta coluna).
Allow Null -> No (caixinha desmarcada).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
162 00CURSO COMPLETO
Column Name -> Bairro
Data Type -> char
Size -> 20 (basta digitar o valor nesta coluna).
Allow Null -> No (caixinha desmarcada).
Column Name -> Cidade
Data Type -> char
Size -> 25 (basta digitar o valor nesta coluna).
Allow Null -> No (caixinha desmarcada).
Column Name -> CEP
Data Type -> int (vamos digitar o CEP sem o tracinho, por exemplo: 97070888).
Size -> 4 (predefinido).
Allow Null -> No (caixinha desmarcada).
Column Name -> DataCadastro
Data Type -> datetime
Size -> 8 (predefinido)
Allow Null -> No (caixinha desmarcada).
Sua janela deve estar conforme indicado na Figura 4.3.
Figura 4.3 Demais campos da tabela Clientes.
Agora hora de salvarmos a tabela no Banco de Dados Exemplo1.
8. D um clique no boto Save (primeiro boto da barra de ferramentas, com o desenho de um disquete).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
163 CURSO COMPLETO00
9. Surge uma janela pedindo o nome da tabela. Digite Clientes e d um clique no boto OK.
10. Voc estar de volta a janela para definio dos campos. Feche-a.
11. Voc estar de volta ao Enterprise Manager. D um clique no boto com o sinal de mais ao lado
do Banco de Dados Exemplo1 para expandi-lo.
12. D um clique na opo Tables. A tabela Clientes j deve estar aparecendo na listagem de tabelas
do Banco de Dados exemplo, conforme indicado na Figura 4.4.
Figura 4.4 A tabela Clientes recm criada.
Observe que aparecem uma srie de outras tabelas, a maioria com o nome iniciado por sys. Estas tabelas
so criadas pelo SQL Server 2000 quando criamos o Banco de Dados. Elas contm uma srie de informaes
sobre o prprio Banco de Dados. Vamos considerar, por exemplo, a tabela sysfiles. Esta tabela contm
informaes sobre os arquivos primrio, secundrio(s) e arquivo(s) de log que fazem parte do Banco
de Dados. Podemos facilmente conferir esta informao, simplesmente acessando os dados desta tabela.
Para isso faa o seguinte: Clique com o boto direito do mouse na tabela sysfiles, no menu que surge
aponte para a opo Open Table. No menu de opes que surge d um clique em Return all rows. Com
isso sero exibidos os dados desta tabela, que conforme podemos ver contm informaes sobre os
diversos arquivos que compem o Banco de Dados Exemplo1, conforme indicado na Figura 4.5.
Figura 4.5 Os dados da tabela sysfiles.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
164 00CURSO COMPLETO
13. Clique com o boto direito do mouse na tabela Clientes, aponte para Open Table e selecione a
opo Return all rows. Ir receber uma tabela sem nenhum registro. Isso acontece porque
acabamos de criar a estrutura da tabela e no existe nenhuma aplicao que utiliza a tabela
Clientes e que tenha inserido dados na mesma.
14. Feche o Enterprise Manager.
Conforme descrito no exemplo anterior, as tabelas criadas pelo prprio SQL Server 2000, iniciam com
sys. Esta uma conveno que facilita a identificao das tabelas com informaes sobre o prprio
Banco de Dados.
Quando criamos nossas tabelas tambm podemos utilizar uma conveno de nomes, o que pode vir a
facilitar a identificao e o desenvolvimento de aplicativos. Por exemplo, poderamos iniciar todas as
tabelas criadas pelo DBA por usr, como um prefixo que identifica as tabelas dos usurios.
Voc tambm pode, a qualquer momento, alterar a definio da estrutura de uma tabela. Por exemplo,
podemos inserir novos campos, renomear campos ou alterar as caractersticas de um ou mais campos.
Porm devemos ter muito cuidado com estes procedimentos. Se voc, por exemplo, renomear uma
tabela, todos os aplicativos que acessam dados desta tabela precisaro ser alterados e o nome da tabela
atualizado no cdigo destes aplicativos. Por isso que de grande importncia o cuidadoso planejamento
do Banco de Dados antes da sua implementao efetiva. Um bom planejamento minimiza ou at mesmo
elimina alteraes deste tipo, as quais iro impactar os aplicativos que acessam dados no Banco de Dados.
Para alterar as propriedades de uma tabela basta localiz-la no Enterprise Manager, clicar com o boto direito
do mouse na tabela e no menu de opes que surge, clicar na opo Design Table. Ser aberta a janela com a
definio de todos os campos, onde voc poder alterar os campos existentes ou adicionar novos campos.
Agora vamos a um exemplo mais detalhado. Vamos criar a tabela Funcionrios com os campos descritos
na Tabela 4.3. Alm disso vamos aprender sobre as diversas propriedades que cada campo pode apresentar.
Tabela 4.3 A tabela Funcionrios.
Campo Tipo de dado/Tamanho mximo
CdigoFuncionrio Integer
NomeCompleto Texto de, no mximo, 50 caracteres.
Cargo Texto de, no mximo, 30 caracteres.
DataNascimento datetime
DataContrato datetime
Rua Texto de, no mximo, 50 caracteres.
Bairro Texto de, no mximo, 20 caracteres.
Cidade Texto de, no mximo, 25 caracteres.
CEP Integer
FoneResidencial Texto de, no mximo, 25 caracteres.
Foto image
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
165 CURSO COMPLETO00
Vamos criar esta tabela no Banco de Dados Exemplo1, criado no captulo anterior, na instncia
SERVIDOR\SRVINST01. Neste exemplo alm das propriedades bsicas de cada campo, aprenderemos a
definir uma srie de outras propriedades.
Exemplo:
Criando a tabela Funcionrios com o Enterprise Manager.
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
3. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para expandi-la. Abaixo de Databases exibida uma lista com os Bancos de Dados
disponveis na instncia SERVIDOR\SRVINST01.
4. D um clique na opo Databases. No painel da direita, sero exibido os Bancos de Dados
disponveis. Localize Exemplo1.
5. D um clique com o boto direito do mouse em Exemplo1. No menu de opes que surge, d
um clique na opo New Table. Surge a janela para a criao de uma nova tabela, conforme
indicado na Figura 4.2.
6. Vamos comear criando o campo CdigoFuncionrio. Para isso preencha a primeira linha com
as seguintes informaes:
Column Name -> CdigoFuncionrio
Data Type -> int
Size -> 4 (este preenchido automaticamente no caso de campos com tamanho j definidos,
como no caso de int, real, etc.)
Allow Null -> No (caixinha desmarcada).
Na parte de baixo da janela temos as seguintes propriedades adicionais:
Description: Esta propriedade define o texto que ser exibido na coluna quando a tabela for
aberta com a opo Return all rows. Se esta propriedade no estiver definida, o texto a ser
exibido o prprio nome do campo. Para o campo CdigoFuncionrio digite Cdigo do
Funcionrio para esta propriedade.
Default Value: Nesta propriedade aparece uma lista com todas as global constraints j definidas
no Banco de Dados. O valor default um valor que ser atribudo ao campo caso o usurio no
insira nenhum valor neste campo. Por exemplo, vamos supor que 99% dos funcionrios sejam
da cidade de So Paulo. Podemos definir So Paulo como valor default para o campo Cidade.
Desta maneira sempre que uma aplicao for inserir dados na tabela Funcionrios, o campo
Cidade j aparece com o valor So Paulo preenchido. Caso o funcionrio que est sendo
cadastrado seja de uma outra cidade s colocar o cursor no campo Cidade e digitar o nome da
cidade. Com isso podemos ver que a definio de um valor padro no impede que valores
diferentes sejam digitados no campo. Para o campo CdigoFuncionrio no existe valor padro,
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
166 00CURSO COMPLETO
pois cada funcionrio possui um cdigo diferente. Neste caso deixe esta propriedade em branco.
Aprenderemos a criar Constraints na parte sobre desenvolvimento.
Precision: Determina o nmero de dgitos a ser considerados para valores no campo que est
sendo definido. No nosso exemplo como o campo CdigoFuncionrio do tipo int, esta
propriedade est desabilitada. No caso de campos do tipo float ou real, esta propriedade estaria
habilitada e poderamos alter-la.
Scale: Define o nmero mximo de dgitos aps a vrgula no caso de valores com decimais. No
nosso exemplo est desabilitada, pois o campo CdigoFuncionrio do tipo int.
Identity: Define se a coluna ser utilizada pelo SQL Server como uma coluna de identificao.
Veremos a funo deste tipo de coluna no captulo sobre Replicao. Os valores possveis so:
No, Yes e Yes (Not For Replication). No altere esta propriedade.
Identity Seed: Define o valor inicial para colunas do tipo Identity. Somente est habilitada
quando a propriedade Identity estiver definida em Yes ou Yes (Not For Replication). No altere
esta propriedade.
Identity Increment: Define o valor do incremento para colunas do tipo Identity. Somente est
habilitada quando a propriedade Identity estiver definida em Yes ou Yes (Not For Replication).
No altere esta propriedade.
Is RowGuid: Define se esta coluna ser utilizada pelo SQL Server como uma coluna do tipo
GUID. Somente pode ser definida em Yes para colunas em que Identity foi definida em Yes.
No altere esta propriedade.
Formula: Exibe a frmula para o caso de colunas calculadas. Lembrando do Captulo 1, sempre
que possvel devemos evitar a presena de colunas calculadas. No altere esta propriedade.
Collation: Exibe o valor de Collation definido para a coluna. Para maiores informaes sobre
Collation consulte os Captulos 2 e 3, bem como o Books OnLine. No altere esta propriedade.
Indexed: Esta propriedade somente aparece se houver um ndice definido para o campo. Como
estamos criando uma nova tabela, ainda no temos ndices definidos. Os valores possveis so:
No (No existe ndice para esta coluna); Yes (duplicates OK) existe ndice e o mesmo aceita
valores repetidos, e Yes (no duplicates) existe ndice e o mesmo no aceita valores duplicados,
o qual utilizado para campos do tipo Chave Primria. Para maiores informaes sobre cam-
pos que so Chave Primria, consulte o Captulo 1.
No nosso exemplo alteramos apenas a propriedade Description, conforme indicado na Figura 4.6.
7. Defina os demais campos da tabela Funcionrios, e suas propriedades, conforme as orientaes
a seguir:
Campo NomeCompleto
Column Name -> NomeCompleto
Data Type -> Char
Size -> 50
Allow Null -> No (caixinha desmarcada).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
167 CURSO COMPLETO00
Figura 4.6 Propriedades do campo CdigoFuncionrio.
Propriedades:
Description: Nome do Funcionrio.
Default Value: Em branco.
Precision: No altere.
Scale: No altere.
Identity: No altere.
Identity Seed: No altere.
Identity Increment: No altere.
Is RowGuid: No altere.
Formula: No altere.
Collation: No altere.
Campo Cargo
Column Name -> Cargo
Data Type -> Char
Size -> 30
Allow Null -> No (caixinha desmarcada).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
168 00CURSO COMPLETO
Propriedades:
Description: Cargo do Funcionrio.
Default Value: Em branco.
No altere as demais propriedades.
Campo DataNascimento
Column Name -> DataNascimento
Data Type -> datetime
Size -> 8 (definido pelo prprio SQL Server).
Allow Null -> No (caixinha desmarcada).
Propriedades:
Description: Data de Nascimento.
Default Value: Em branco.
No altere as demais propriedades.
Campo DataContrato
Column Name -> DataContrato
Data Type -> datetime
Size -> 8 (definido pelo prprio SQL Server).
Allow Null -> No (caixinha desmarcada).
Propriedades:
Description: Data de Contratao
Default Value: Em branco.
No altere as demais propriedades.
Campo Rua
Column Name -> Rua
Data Type -> char
Size -> 50
Allow Null -> No (caixinha desmarcada).
Propriedades:
Description: Rua do Funcionrio.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
169 CURSO COMPLETO00
Default Value: Em branco.
No altere as demais propriedades.
Campo Bairro
Column Name -> Bairro
Data Type -> char
Size -> 20
Allow Null -> No (caixinha desmarcada).
Propriedades:
Description: Bairro do Funcionrio.
Default Value: Em branco.
No altere as demais propriedades.
Campo Cidade
Column Name -> Cidade
Data Type -> char
Size -> 25
Allow Null -> No (caixinha desmarcada).
Propriedades:
Description: Cidade do Funcionrio.
Default Value: So Paulo (estamos definindo o valor padro como So Paulo, pois a maioria
dos funcionrios so da Cidade de So Paulo). Observe que aps definirmos o valor padro,
o SQL Server coloca o mesmo entre apstrofes: So Paulo.
No altere as demais propriedades.
Campo CEP
Column Name -> CEP
Data Type -> int
Size -> 4
Allow Null -> No (caixinha desmarcada).
Propriedades:
Description: CEP
Default Value: Em branco.
No altere as demais propriedades.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
170 00CURSO COMPLETO
Campo FoneResidencial
Column Name -> FoneResidencial
Data Type -> char
Size -> 25
Allow Null -> No (caixinha desmarcada).
Propriedades:
Description: Telefone Residencial.
Default Value: Em branco.
No altere as demais propriedades.
Campo Foto
Column Name -> Foto
Data Type -> image
Size -> 16 (definido automaticamente pelo SQL Server. Conforme descrito anteriormente
este tamanho de 16 bytes simplesmente um ponteiro que aponta para o arquivo com a
imagem. O arquivo com a imagem pode conter at cerca de 2 GB).
Allow Null -> No (caixinha desmarcada).
Propriedades:
Description: Foto do Funcionrio.
Default Value: Em branco.
No altere as demais propriedades.
Agora hora de salvarmos a tabela no Banco de Dados Exemplo1.
8. D um clique no boto Save. Surge uma janela pedindo o nome da tabela. Digite Funcionrios
e d um clique no boto OK.
9. Voc estar de volta a janela para definio dos campos. Feche-a.
10. Voc estar de volta ao Enterprise Manager. D um clique no boto com o sinal de mais ao lado
do Banco de Dados Exemplo1 para expandi-lo.
11. D um clique na opo Tables. A tabela Clientes j deve estar aparecendo na listagem de tabelas
do Banco de Dados Exemplo1, conforme indicado na Figura 4.7. Caso a tabela ainda no esteja
aparecendo pressione a tecla F5 (Refresh) para atualizar a viso Tables do Banco de Dados Exemplo1.
12. Com isso criamos a tabela Funcionrios no banco de dados Exemplo1. Se voc clicar com o
boto direito do mouse na tabela Funcionrios, apontar para Open Table e selecionar a opo
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
171 CURSO COMPLETO00
Return all rows, ir receber uma tabela sem nenhum registro. Isso acontece porque acabamos
de criar a estrutura da tabela e no existe nenhuma aplicao que utiliza a tabela Funcionrios
e que tenha inserido dados na mesma.
Figura 4.7 A tabela Funcionrios recm criada.
13. Feche o Enterprise Manager.
Olhe na Figura 4.7, na coluna Create Date, onde aparece o valor: 25/2/2001 20:50:19. isto mesmo meu amigo, domingo, 25 de
fevereiro, quase 11 horas da noite. Domingo de Carnaval e este amigo de vocs firme escrevendo mais um captulo deste livro. claro
que de vez em quando dou uma escapada para a frente da televiso. Este ano sem Carnaval, mas no ano que vem..., a no ano que
vem s Deus sabe. Carnaval ou um livro de Windows XP? Bem voltemos ao nosso SQL Server 2000.
Agora j estamos craques na criao de tabelas com o Enterprise Manager. O prximo passo ser
aprendermos a criar tabelas utilizando o comando CREATE TABLE no Query Analyzer.
Mas antes disso vamos a um exerccio para que o leitor possa fixar os conceitos apresentados.
Exerccio: Crie a tabela Fornecedores, utilizando o Enterprise Manager, com os campos indicados na
Tabela 4.4.
Tabela 4.4 A tabela Fornecedores.
Campo Tipo de dado/Tamanho mximo
CdigoFornecedor Integer
NomeEmpresa Texto de, no mximo, 50 caracteres.
NomeContato Texto de, no mximo, 30 caracteres.
CargoContato Texto de, no mximo, 20 caracteres.
Rua Texto de, no mximo, 50 caracteres.
Bairro Texto de, no mximo, 20 caracteres.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
172 00CURSO COMPLETO
Estamos criando um Banco de Dados com uma estrutura semelhante ao Northwind. Nos exerccios para criao de ndices e views
utilizaremos o Banco de Dados Northwind, pois este j possui diversos registros em suas tabelas, o que facilita a visualizao dos
resultados de nossos exerccios.
FUNDAMENTOS EM: CRIAO DE TABELAS COM O QUERY ANALYZER
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Saber utilizar o Query Analyzer para executar comandos.
Noes sobre os tipos bsicos de dados do SQL Server 2000.
METODOLOGIA
Apresentao dos comandos T-SQL para criao de tabelas.
TCNICA
Criao de tabelas utilizando os comandos apresentados.
Para criarmos uma tabela utilizamos o comando CREATE TABLE no Query Analyzer. A seguir temos a
sintaxe deste comando, conforme descrito no Books Online:
Sintaxe completa - Books OnLine - Transact SQL Reference:
CREATE TABLE
[ database_name.[ owner ] . | owner. ] table_name
( { < column_definition >
| column_name AS computed_column_expression
| < table_constraint > ::= [ CONSTRAINT constraint_name ] }
| [ { PRIMARY KEY | UNIQUE } [ ,...n ]
)
[ ON { filegroup | DEFAULT } ]
[ TEXTIMAGE_ON { filegroup | DEFAULT } ]
< column_definition > ::= { column_name data_type }
[ COLLATE < collation_name > ]
[ [ DEFAULT constant_expression ]
| [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]
]
[ ROWGUIDCOL]
[ < column_constraint > ] [ ...n ]
< column_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ NULL | NOT NULL ]
Campo Tipo de dado/Tamanho mximo
Cidade Texto de, no mximo, 25 caracteres.
CEP Integer
Fone Texto de, no mximo, 25 caracteres.
FAX Texto de, no mximo, 25 caracteres.
WebSite Texto de, no mximo, 100 caracteres.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
173 CURSO COMPLETO00
| [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = fillfactor ]
[ON {filegroup | DEFAULT} ] ]
]
| [ [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
]
| CHECK [ NOT FOR REPLICATION ]
( logical_expression )
}
< table_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
]
| FOREIGN KEY
[ ( column [ ,...n ] ) ]
REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
| CHECK [ NOT FOR REPLICATION ]
( search_conditions )
}
Este formato genrico no muito intuitivo, ou melhor, no nada intuitivo. Vamos simplificar um
pouco. A seguir apresento uma sintaxe simplificada, somente com as principais opes para criar uma
tabela com alguns campos.
CREATE TABLE Nome_da_tabela
Agora inicio a definio bsica dos campos da tabela
(
Campo1 tipo_do_Campo1 NULL ou NOT NULL
Campo2 tipo_do_Campo2 NULL ou NOT NULL
Campo3 tipo_do_Campo3 NULL ou NOT NULL
Campo4 tipo_do_Campo4 NULL ou NOT NULL
Campo5 tipo_do_Campo5 NULL ou NOT NULL
Campon tipo_do_Campon NULL ou NOT NULL
)
A ttulo de exemplo, vamos criar a tabela Produtos com os campos indicados na Tabela 4.5.
Tabela 4.5 A tabela Produtos.
Campo Tipo de dado/Tamanho mximo
CdigoProduto Integer
NomeProduto Texto de, no mximo, 50 caracteres.
CdigoFornecedor Integer
CdigoCategoria Integer
PreoUnitrio Money
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
174 00CURSO COMPLETO
Agora vamos criar esta tabela no Banco de Dados Exemplo1 da instncia SRVIDOR\SRVINST01. Vamos
utilizar, para isso, o comando CREATE TABLE, no Query Analyzer.
Exemplo:
Utilizando o Query Analyzer, criar a tabela Produtos, conforme descrito na Tabela 4.5.
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo. Ser aberto o Query Analyzer com
o Banco de Dados master como sendo o Banco de Dados atual.
3. Alterne para Exemplo1, utilizando a lista com os nomes dos Bancos de Dados, na Barra de
Ferramentas e digite o seguinte comando:
Definio do nome da tabela.
CREATE TABLE Produtos
Inicio a definio dos campos.
(
CdigoProduto int,
NomeProduto char(50),
CdigoFornecedor int,
CdigoCategoria int,
PreoUnitrio money,
UnidadesEstoque int,
EstoqueMnimo int,
Descontinuado bit
)
Certifique-se de ter alternado para o Banco de Dados Exemplo1, utilizando a lista com os nomes dos Bancos de dados na Barra de
Ferramentas ou o comando Use Exemplo1 no Query Analyzer.
Campo Tipo de dado/Tamanho mximo
UnidadesEstoque Integer
EstoqueMnimo Integer
Descontinuado bit (0=sim, 1=no)
Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, a tabela Produtos
ter sido criada no Banco de Dados Exemplo1 e a seguinte mensagem exibida no painel inferior do
Query Analyzer:
The command(s) completed successfully.
Com isso, vemos que a tabela Produtos foi criada.
4. Mantenha o Query Analyzer aberto, pois vamos utiliz-lo para mais alguns exemplos neste
captulo. Apenas minimize-o.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
175 CURSO COMPLETO00
Agora vamos utilizar o Enterprise Manager para verificar se a tabela Produtos foi realmente criada.
Exemplo:
Verificando se a tabela Produtos foi realmente criada:
1. Abra o Enterprise Manager.
2. Clique no sinal de mais ao lado de SQL Server Group para abri-lo.
3. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
4. Clique no sinal de mais ao lado de Databases para expandi-la.
5. Clique no sinal de mais ao lado do Banco de Dados Exemplo1 para exibir as suas opes.
6. Nas opes que surgem d um clique em Tables para exibir as tabelas do Banco de Dados
Exemplo1. Observe que a tabela Produtos j deve aparecer na listagem de tabelas.
7. Feche o Enterprise Manager.
Se a tabela Produtos ainda no aparecer na listagem de tabelas, clique na opo Tables do Banco de Dados Exemplo1 e pressione F5
para atualizar a listagem.
No exemplo anterior criamos uma tabela utilizando as opes bsicas do comando CREATE TABLE.
Vamos ver mais alguns exemplos deste comando, utilizando opes mais avanadas do CREATE TABLE.
Mas antes disso vamos ver alguns limites do SQL Server 2000.
Podemos ter at dois bilhes de tabelas por Banco de Dados.
O nmero mximo de colunas por tabela 1024.
Os nmeros mximos de linhas e do tamanho de uma tabela so limitados apenas pelo espao
disponvel em disco.
O nmero mximo de bytes por linha de 8060. Se criarmos tabelas com colunas do tipo
varchar, nvarchar ou varbinary, nas quais o total de bytes do registro excede 8060 bytes, a
tabela ser criada, porm uma mensagem de aviso ser emitida. Ao efetuarmos alguma operao
de alterao ou insero em que um determinado registro fique com mais do que 8600 bytes,
receberemos uma mensagem de erro e o comando no ser executado.
Um comando CREATE TABLE que inclui colunas do tipo sql_variant podero gerar o seguinte aviso:
The total row size (xx) for table yy exceeds the maximum number of bytes per row (8060).
Rows that exceed the maximum number of bytes will not be added.
Algumas das opes do comando CREATE TABLE somente sero utilizadas no Captulo 9, onde aprenderemos a criar Constraints, Defaults e Rules.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
176 00CURSO COMPLETO
Conforme visto na seo anterior, podemos definir uma srie de propriedades para cada campo de
uma tabela, utilizando o Enterprise Manager. A pergunta que fica : Tambm podemos definir estas
opes utilizando o comando CREATE TABLE? E a resposta sim.
Exemplo:
Como fao para definir que um campo no deve aceitar valores NULL?
Vamos alterar um pouco o comando do exemplo anterior, conforme indicado a seguir:
Definio do nome da tabela.
CREATE TABLE Produtos
Inicio a definio dos campos.
(
CdigoProduto int NOT NULL,
NomeProduto char(50) NOT NULL,
CdigoFornecedor int NOT NULL,
CdigoCategoria int NOT NULL,
PreoUnitrio money NOT NULL,
UnidadesEstoque int NOT NULL,
EstoqueMnimo int NOT NULL,
Descontinuado bit NOT NULL
)
Este comando criaria a mesma tabela Produtos do exemplo anterior, porm sem permitir valores nulos
em qualquer campo.
Para permitir NULL em algum campo, bastaria trocar NOT NULL por NULL.
Assim como devemos criar uma padronizao para o nome dos Bancos de Dados e tabelas, tambm
devemos ter um certo padro para a nomeao dos campos de uma tabela. Consulte a documentao
da sua empresa para saber se j existe um documento definindo o padro para a nomeao de Bancos
de Dados, tabelas e campos.
Nomes de colunas, tabelas, campos ou qualquer objeto no SQL Server 2000 podem ter um tamanho mximo de 128 caracteres.
Podemos incluir letras, dgitos e os smbolos: #, $, @ e _ nos nomes de objetos do SQL Server 2000.
Exerccio: Para fixar a sintaxe do comando CREATE TABLE, crie a tabela Produtos Especiais, com os
campos conforme descrito na Tabela 4.6.
Tabela 4.6 A tabela Produtos Especiais.
Campo Tipo de dado/Tamanho mximo NULL
CdigoProdutoEsp Integer No
NomeProdutoEsp Texto de, no mximo, 50 caracteres. No
CdigoFornecedor Integer No
CdigoCategoria Integer No
PreoUnitrio money No
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
177 CURSO COMPLETO00
FUNDAMENTOS EM: ALTERAR A ESTRUTURA DE
UMA TABELA COM O ENTERPRISE MANAGER
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Saber utilizar o Enterprise Manager.
METODOLOGIA
Utilizao do Enterprise Manager para alterar a estrutura de uma tabela.
Embora no seja recomendado, podemos alterar a estrutura de uma tabela. No uma prtica
recomendada, pois se o Banco de Dados for bem projetado (conforme venho insistindo e repetindo
diversas vezes), no haver necessidade de alteraes na estrutura das tabelas. Mas caso seja necessria
tal alterao, podemos proced-la utilizando o Enterprise Manager, conforme aprenderemos neste
item, ou comandos T-SQL, conforme aprenderemos em seguida.
Para alterar uma tabela, basta localiz-la no Enterprise Manager, clicar com o boto direito do mouse
no nome da tabela e no menu que surge, clicar na opo Design Table. Ser exibida a janela com a
estrutura da tabela. Nesta janela podemos fazer as seguintes alteraes, dentre outras:
Excluir um campo: Para isso basta selecionar a linha que define o campo e pressionar a tecla
Delete. Para selecionar uma linha, basta clicar no boto cinza, bem a esquerda da linha, conforme
indicado na Figura 4.8.
Alterar as propriedades de um campo, simplesmente editando as informaes para este campo.
Incluir novos campos.
Feitas as alteraes s clicar no boto Save, para salvar as alteraes efetuadas.
Muitas vezes, devido a prazos apertados, o cuidadoso projeto do Banco de Dados encarado como uma perda de tempo e deixado em
segundo plano. Isso acaba por trazer uma srie de problemas que poderiam ser evitados com um cuidadoso projeto do Banco de Dados.
Lembre que muito mais complicado remendar do que fazer bem feito da primeira vez.
Campo Tipo de dado/Tamanho mximo NULL
UnidadesEstoque Integer No
EstoqueMnimo Integer Sim
EstoqueMximo Integer Sim
Descontinuado bit (0=sim, 1=no) No
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
178 00CURSO COMPLETO
Figura 4.8 Selecionando o campo a ser excludo.
FUNDAMENTOS EM: ALTERAR A ESTRUTURA
DE UMA TABELA COM COMANDOS T-SQL
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Saber utilizar o Query Analyzer para executar comandos.
METODOLOGIA
Apresentao dos comandos T-SQL para alterao de tabelas.
TCNICA
Alterar tabelas, utilizando os comandos apresentados.
Existem alguns comandos T-SQL que permitem que sejam feitas alteraes em uma tabela. Vamos
aprender a utiliz-los.
Para adicionar uma coluna em uma tabela, utilizamos o seguinte comando:
ALTER TABLE nome_da_tabela
ADD nome_do_campo tipo_dado
Vamos tentar o seguinte exemplo:
ALTER TABLE CLIENTES
ADD Campo1 Char(25) Not Null
Este exemplo ir gerar a seguinte mensagem de erro:
Server: Msg 4901, Level 16, State 1, Line 1
ALTER TABLE only allows columns to be added that can contain nulls or have a DEFAULT
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
179 CURSO COMPLETO00
definition specified. Column Campo1 cannot be added to table CLIENTES because it does not
allow nulls and does not specify a DEFAULT definition.
Sem subestimar o conhecimento de Ingls do amigo leitor, esta mensagem est nos dizendo que o
comando ALTER TABLE somente permite que sejam adicionadas colunas que permitem valores Nulos
ou que possuem um valor padro definido para a coluna. Como no podemos brigar com o SQL
Server 2000, vamos alterar um pouco o comando para que a coluna Campo1 que est sendo adicionada
permita valores Nulos. Nosso comando fica assim:
ALTER TABLE CLIENTES
ADD Campo1 Char(25)
Agora nosso comando executa sem maiores problemas e recebemos a seguinte mensagem:
The command(s) completed successfully.
Exerccio: Utilize o Enterprise Manager e verifique se a coluna Campo1 realmente foi adicionada
tabela Clientes, conforme indicado na Figura 4.8.
Figura 4.8 A coluna Campo1 recm adicionada.
Observe que a coluna Campo1 admite valores Nulos.
Para excluir uma coluna em uma tabela, utilizamos o seguinte comando:
ALTER TABLE nome_da_tabela
DROP COLUMN nome_do_campo
Vamos excluir a coluna Campo1 adicionada no exemplo anterior.
ALTER TABLE Clientes
DROP COLUMN Campo1
Este comando executa com sucesso e retorna a mensagem:
The command(s) completed successfully.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
180 00CURSO COMPLETO
Exerccio: Utilize o Enterprise Manager e verifique se a coluna Campo1 realmente foi excluda da
tabela Clientes.
Tambm podemos fazer alteraes em uma coluna j existente, utilizando o comando ALTER COL-
UMN. No exemplo a seguir, vamos adicionar um campo chamado teste, o qual do tipo smallint.
Depois vamos alter-lo para o tipo int e finalmente vamos exclu-lo da tabela Clientes.
Adicionando o campo teste do tipo smallint
ALTER TABLE Clientes
ADD teste smallint
GO
Alterando o tipo do campo para int
ALTER TABLE Clientes
ALTER COLUMN teste int
GO
Excluindo o campo teste
ALTER TABLE Clientes
DROP COLUMN teste
Ao executarmos este comando recebemos a seguinte mensagem:
(0 row(s) affected)
FUNDAMENTOS EM: TIPOS DE DADOS DEFINIDOS PELO USURIO
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Saber Utilizar o Enterprise Manager e o Query Analyzer.
Conhecer os tipos bsicos de dados do SQL Server 2000.
METODOLOGIA
Utilizar o Enterprise Manager e o Query Analyzer para criar tipos de dados personalizados.
No incio do captulo vimos os diversos tipos de dados disponibilizados pelo SQL Server 2000. So os
chamados Tipos de dados do sistema (System data types). Com o SQL Server 2000, o usurio pode
criar seus prprios tipos de dados.
Por exemplo, vamos supor que o usurio queira padronizar que todos os campos com nomes prprios,
quer seja de funcionrios, clientes ou fornecedores, devam ser do tipo char com tamanho mximo de 50
caracteres. O usurio poderia criar um novo tipo chamado nome_prprio e definir este tipo como sendo
char(50). Desta maneira quando for criar as suas tabelas, o usurio pode definir os campos como sendo
do tipo nome_prprio, que automaticamente ser assumido char(50). Uma das vantagens evidentes a
facilidade de manuteno. Vamos supor que aps algum tempo de utilizao do Banco de Dados, chegou-
se a concluso que char(40) suficiente para os campos com nomes prprios. Para alterar a definio de
todos os campos, bastaria alterar o tipo nome_prprio definido pelo usurio. Se no estivssemos utilizando
um tipo definido pelo usurio, teramos que ir de tabela em tabela alterando char(50) para char(40).
Ao criar tipos definidos pelo usurio (User data types), devemos utilizar um padro de nomes consistente,
de tal forma que, seja um indicativo das caractersticas do mesmo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
181 CURSO COMPLETO00
Ao criarmos um tipo definido pelo usurio, o mesmo somente estar disponvel no Banco de Dados onde o tipo tiver sido criado. Se
criarmos um tipo definido pelo usurio no Banco de Dados Model, este tipo passar a fazer parte de todos os novos Bancos de Dados que
forem criados.
Agora vamos aprender a criar User data types. Inicialmente vamos cri-los utilizando o Enterprise
Manager e, na seqncia, o Query Analyzer.
CRIANDO UM TIPO DE DADOS DEFINIDO PELO USURIO COM O ENTERPRISE MANAGER
A ttulo de exemplo, vamos criar um tipo chamado nome_prprio no Banco de Dados Exemplo1, da
instncia SERVIDOR\SRVINST01. O tipo ter as seguintes caractersticas:
Nome do tipo: usr_nome_prprio
Tipo: char(50)
No aceita valores nulos.
Veja que para o nome do tipo utilizamos o prefixo usr. Esta uma conveno para indicar que o tipo de dados foi criado pelo usurio.
Exemplo:
Criando o tipo usr_nome_prprio com o Enterprise Manager.
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
3. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para expandi-la. Abaixo de Databases exibida uma lista com os Bancos de Dados
disponveis na instncia SERVIDOR\SRVINST01.
4. D um clique na opo Databases. No painel da direita, sero exibido os Bancos de Dados
disponveis. Localize Exemplo1, criado anteriormente.
5. D um clique no sinal de mais ao lado de Exemplo1 para exibir os objetos deste Banco de
Dados. Nos objetos de Exemplo1 observe que existe uma opo User Defined Data Types.
6. D um clique nesta opo para selecion-la. Observe que, por padro, no existe nenhum tipo
de dados definido pelo usurio, conforme indicado na Figura 4.9.
7. Clique com o boto direito do mouse na opo User Defined Data Types. No menu de opes
que surge d um clique em New User Defined Data Type.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
182 00CURSO COMPLETO
Figura 4.9 no existe ainda nenhum tipo definido pelo usurio.
8. Surge uma janela onde podemos definir as caractersticas do tipo que est sendo criado. Para o
nosso exemplo, defina as caractersticas do tipo usr_nome_prprio conforme indicado na Figura
4.10. D um clique em OK para criar este novo tipo.
Figura 4.10 Criando o tipo usr_nome_prprio.
As opes Rule e Default sero vistas no Captulo 9.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
183 CURSO COMPLETO00
9. Voc estar de volta ao Enterprise Manager e o tipo usr_nome_prprio j ter sido criado.
10. Vamos criar mais um tipo chamado usr_money_real, com as seguintes caractersticas:
Nome do tipo: usr_money_real
Tipo: money
Aceita valores nulos.
11. Clique com o boto direito do mouse na opo User Defined Data Types. No menu de opes
que surge d um clique em New User Defined Data Type.
12. Para criar o tipo usr_money_real, defina as caractersticas do tipo conforme indicado na Figura
4.11. D um clique em OK para criar este tipo.
Figura 4.11 Criando o tipo usr_money_real.
13. Voc estar de volta ao Enterprise Manager e o tipo usr_nome_prprio j ter sido criado.
Agora que criamos tipos definidos pelo usurio, podemos utiliz-los na definio de colunas em nossas
tabelas. Considere o exemplo a seguir, o qual cria no Banco de Dados Exemplo1, a tabela Produtos 2:
Definio do nome da tabela.
CREATE TABLE Produtos2
Inicio a definio dos campos.
(
CdigoProduto int,
NomeProduto usr_nome_prprio,
CdigoFornecedor int,
CdigoCategoria int,
PreoUnitrio usr_money_real,
UnidadesEstoque int,
EstoqueMnimo int,
Descontinuado bit
)
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
184 00CURSO COMPLETO
Execute este comando no Query Analyzer, estando conectado instncia SERVIDOR\SRVINST01 e
sendo Exemplo1, o Banco de Dados atual. Observe que estamos utilizando os tipos definidos pelo
usurio: usr_nome_prprio e usr_money_real.
Vamos criar mais uma tabela chamada Produtos3 onde utilizaremos apenas o tipo usr_nome_prprio,
conforme indicado no comando a seguir:
Definio do nome da tabela.
CREATE TABLE Produtos3
Inicio a definio dos campos.
(
CdigoProduto int,
NomeProduto usr_nome_prprio,
CdigoFornecedor int,
CdigoCategoria int,
PreoUnitrio money,
UnidadesEstoque int,
EstoqueMnimo int,
Descontinuado bit
)
Execute este comando no Query Analyzer, estando conectado instncia SERVIDOR\SRVINST01 e
sendo Exemplo1 o Banco de Dados atual.
Agora temos as tabelas Produtos2 e Produtos3. O tipo usr_nome_prprio foi utilizado nas duas tabelas
e o tipo usr_money_real somente foi utilizado na tabela Produtos2.
Podemos verificar em quais tabelas um determinado tipo definido pelo usurio est sendo utilizado.
No Enterprise Manager, clique com o boto direito do mouse no tipo usr_nome_prprio. No menu de
opes que surge d um clique em Propriedades. Na janela de Propriedades d um clique no boto
Where Used (onde utilizado). Ser exibida uma janela com a lista de tabelas onde o tipo
usr_nome_prprio utilizado, conforme indicado pela Figura 4.12.
Figura 4.12 Tabelas que utilizam o tipo usr_nome_prprio.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
185 CURSO COMPLETO00
D um clique em OK para fechar a janela da Figura 4.12. Voc estar de volta janela com as propriedades
do tipo usr_nome_prprio, d um clique no boto Cancelar para fech-la.
CRIANDO UM TIPO DE DADOS DEFINIDO PELO USURIO COM O QUERY ANALYZER
A ttulo de exemplo, vamos criar um tipo chamado usr_nome_rua, no Banco de Dados Exemplo1, da
instncia SERVIDOR\SRVINST01. O tipo ter as seguintes caractersticas:
Nome do tipo: usr_nome_rua
Tipo: char(25)
No aceita valores nulos.
Veja que para o nome do tipo utilizamos o prefixo usr. Esta uma conveno para indicar que o tipo de dados foi criado pelo usurio.
Exemplo:
Criando o tipo usr_nome_rua com o Query Analyzer:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo selecione Windows Authentication e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo. Ser aberto o Query Analyzer com
o Banco de Dados master como sendo o Banco de Dados atual.
3. Alterne para Exemplo1, utilizando a lista com os nomes dos Bancos de Dados, na Barra de
Ferramentas, ou o comando Use Exemplo1.
4. Digite o seguinte comando:
Use Exemplo1
exec sp_addtype usr_nome_rua, char(25),NOT NULL
Estamos utilizando um Stored Procedure que faz parte do SQL Server 2000: sp_addtype. Existe uma
infinidade de Stored Procedures que fazem parte do SQL Server 2000, os quais fazem parte do Banco de
Dados master, conforme indicado na Figura 4.13. Estes Stored Procedures iniciam com sp e executam
uma srie de funes. Estaremos utilizando vrios destes Stored Procedures nos exemplos deste livro.
A sintaxe simplificada para o stored procedure sp_addtype a seguinte:
exec sp_addtype nome_tipo, tipo_bsico, NULL ou NOT NULL
5. Aps executar o comando indicado no passo anterior, o tipo usr_nome_rua ter sido criado.
Podemos conferir se o mesmo foi realmente criado, utilizando o Enterprise Manager.
A seguir apresentamos algumas dicas a serem consideradas para a criao de tipos definidos pelo usurio
User Defined Data Types:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
186 00CURSO COMPLETO
Figura 4.13 Stored Procedures que fazem parte do SQL Server 2000.
Se uma determinada coluna apresenta variao no tamanho dos dados, pode ser mais vantajoso
utilizar um tipo varivel, como por exemplo varchar, ao invs de um tipo de tamanho fixo,
como por exemplo char(50). Conforme descrito no incio do captulo, tipos de tamanho varivel
como varchar podem propiciar economia de espao em disco.
Se os dados a serem armazenados so maiores do que 8000 bytes, utilize os tipos text ou image.
Para dados menores do que 8000 bytes utilize binary, char ou varchar. Sempre que possvel utilize
char ou varchar, pois os mesmos apresentam mais funcionalidades do que os demais tipos.
sempre importante ter uma idia dos valores que sero armazenados em uma coluna. Se voc
souber que os valores de uma determinada coluna variam de 1 a 200, por exemplo, mais
vantajoso utilizar um tipo tinyint que ocupa menos espao do que um tipo int.
EXCLUINDO TIPOS DEFINIDOS PELO USURIO
Podemos excluir os tipos definidos pelo usurio, desde que os mesmos no estejam sendo utilizados
em alguma tabela.
Vamos tentar excluir o tipo usr_nome_prprio, o qual est sendo utilizado pelas tabelas Produtos2 e
Produtos3. Tentaremos exclu-lo com o Enterprise Manager e com o Stored Procedure sp_droptype e
iremos observar as mensagens de erro que sero emitidas. Depois excluiremos o tipo usr_nome_rua
utilizando o Stored Procedure sp_droptype.
Para excluir um tipo definido pelo usurio com o Enterprise Manager, basta localizar o tipo a ser
excludo, clicar com o boto direito sobre o mesmo e no menu que surge clicar na opo Excluir. Surge
uma janela exibindo o tipo a ser excludo, conforme indicado na Figura 4.14.
Clique no objeto a ser excludo e depois no boto Drop All. No nosso exemplo surge a uma mensagem
de advertncia. Esta mensagem informa que o tipo usr_nome_prprio no pode ser excludo pois o
mesmo est sendo utilizado em uma ou mais tabelas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
187 CURSO COMPLETO00
Figura 4.14 Excluindo o tipo usr_nome_prprio.
Clique em OK e voc estar de volta ao Enterprise Manager. Feche-o.
Agora vamos excluir o tipo usr_nome_rua utilizando o stored procedure sp_droptype.
Exemplo:
Excluindo o tipo usr_nome_rua com o Query Analyzer:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo. Ser aberto o Query Analyzer com
o master como sendo o Banco de Dados atual.
3. Digite o seguinte comando:
Use Exemplo1
exec sp_droptype usr_nome_rua
A sintaxe simplificada para o Stored Procedure sp_droptype a seguinte:
exec sp_droptype nome_tipo
4. Aps executar o comando indicado no passo anterior, o tipo usr_nome_rua ter sido excludo
do banco de dados Exemplo1 e a seguinte mensagem ser exibida:
(0 row(s) affected)
Type has been dropped.
Podemos conferir se o mesmo foi realmente excludo, utilizando o Enterprise Manager.
Se voc tentar excluir um tipo que est sendo utilizado por alguma tabela, o Query Analyzer emite a seguinte mensagem de erro:
Server: Msg 15180, Level 16, State 1, Procedure sp_droptype, Line 32
Cannot drop. The data type is being used.
(2 row(s) affected)
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
188 00CURSO COMPLETO
5. Feche o Query Analyzer.
FUNDAMENTOS EM: EXCLUSO DE TABELAS
PR-REQUISITOS
Saber utilizar o Query Analyzer para executar comandos.
METODOLOGIA
Utilizao do Enterprise Manager e do Query Analyzer para excluir tabelas.
No uma situao comum, mas pode existir a necessidade de excluirmos uma tabela do Banco de
Dados. importante salientar que ao excluirmos uma tabela, todos os seus dados sero tambm excludos.
PARA EXCLUIR UMA TABELA COM O ENTERPRISE MANAGER
Abra o Enterprise Manager e navegue at a tabela a ser excluda. Clique com o boto direito do
mouse na tabela e no menu que surge selecione a opo Excluir. Surge a janela indicada na Figura 4.15.
Figura 4.15 Excluindo a tabela Produtos2.
D um clique no boto Drop All e pronto, a tabela foi excluda.
EXCLUINDO UMA TABELA COM O QUERY ANALYZER
Para excluir uma tabela podemos utilizar o seguinte comando:
DROP TABLE nome_da_tabela
Exemplo:
Para excluir a tabela Produtos3 do Banco de Dados Exemplo1, poderamos utilizar o seguinte comando:
Use Exemplo1
DROP TABLE Produtos3
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
189 CURSO COMPLETO00
Este comando retorna a seguinte mensagem:
The command(s) completed successfully.
FUNDAMENTOS EM: DEFINIO DA CHAVE PRIMRIA DE UMA TABELA
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Saber utilizar o Enterprise Manager e o Query Analyzer.
METODOLOGIA
Utilizar o Enterprise Manager e o Query Analyzer para definir um campo como Chave Primria.
Conforme vimos na teoria sobre o modelo relacional, no Captulo 1, temos os chamados campos que
so Chave Primria para uma determinada tabela. Um campo definido como Chave Primria deve ser
nico, isto , no podem existir dois registros com o mesmo valor para o campo Chave Primria e
geralmente so campos de cdigo, como por exemplo:
CdigoCliente na tabela Clientes.
CdigoFuncionrio na tabela Funcionrios.
CPF na tabela Contribuintes Pessoa Fsica.
CNPJ (antigo CGC) na tabela Contribuintes Pessoa Jurdica.
CdigoProduto na tabela Produtos.
Podemos definir um determinado campo como sendo Chave Primria, tanto no Enterprise Manager
quanto no Query Analyzer. Vamos mais uma vez, utilizar exemplos para aprender a definir um campo
como sendo Chave Primria.
DEFININDO UMA CHAVE PRIMRIA UTILIZANDO O ENTERPRISE MANAGER
Exemplo: Definir o campo CdigoFuncionrio da tabela Funcionrios como sendo uma Chave Primria.
Para isso faa o seguinte:
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. Clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
3. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
4. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para expandi-la. Abaixo de Databases exibida uma lista com os Bancos de Dados
disponveis na instncia SERVIDOR\SRVINST01.
5. D um clique no sinal de mais ao lado do Banco de Dados Exemplo1 para exibir seus objetos.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
190 00CURSO COMPLETO
6. D um clique na opo Tables. No painel da direita ser exibida uma listagem com as tabelas
do Banco de Dados Exemplo1.
7. D um clique com o boto direito do mouse na tabela Funcionrios. No menu que surge d um
clique na opo Design Table. Ser exibida uma janela com a estrutura da tabela Funcionrios.
8. O passo seguinte selecionar a linha correspondente ao campo que ser definido como Chave
Primria. Selecione a linha CdigoFuncionrio, conforme indicado na Figura 4.16.
Figura 4.16 Selecionando o campo CdigoFuncionrio.
9. Depois s dar um clique no boto Set primary key (boto com o desenho de uma pequena
chave amarela). Feito isso o campo CdigoFuncionrio definido como Chave Primria,
conforme indicado por uma pequena chave amarela ao lado do nome do campo.
10. Clique no boto Save para salvar as alteraes feitas na estrutura da tabela.
Caso voc esteja definindo um campo como Chave Primria, porm j existam registros na tabela e existam valores duplicados para o
campo que est sendo definido como Chave Primria, na hora de salvar as alteraes ser exibida a mensagem de erro indicada na
Figura 4.17.
A seguir temos o texto completo da mensagem de erro:
Funcionrios table
- Unable to create index PK_Funcionrios.
ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]CREATE UNIQUE INDEX terminated
because a duplicate key was found for index ID 1.
Most significant primary key is 1.
[Microsoft][ODBC SQL Server Driver][SQL Server]Could not create constraint.
See previous errors.
[Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
191 CURSO COMPLETO00
Figura 4.17 Valores duplicados no campo CdigoFuncionrio.
Observe que a parte mais significativa da mensagem a seguinte:
because a duplicate key was found for index ID 1
Esta parte est informando que foi encontrado um valor duplicado para o campo CdigoFuncionrio
e, portanto, o mesmo no pode ser definido como Chave Primria.
Conforme veremos na parte final deste captulo, ao criarmos uma Chave Primria, na verdade estamos definindo um ndice que no
permite duplicao de valores, para o campo que est sendo definido como Chave Primria.
11. Agora feche a janela com as propriedades da tabela Funcionrios.
12. Voc estar de volta ao Enterprise Manager. Feche-o.
Para fazer com que um campo no seja mais Chave Primria, basta repetir os passos do exemplo anterior, marcar o campo desejado e
clicar novamente no boto Set Primary Key. Este boto funciona como uma chave de liga e desliga. Se o campo selecionado j for
Chave Primria ao clicarmos no boto Set Primary Key, o mesmo deixa de ser. Caso o campo no seja uma Chave Primria, ao
clicarmos no boto Set Primary Key, o campo marcado como Chave Primria.
Conforme veremos a seguir, no posso fazer com que um campo deixe de ser Chave Primria se o mesmo fizer parte de algum relacionamento.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
192 00CURSO COMPLETO
DEFININDO UMA CHAVE PRIMRIA UTILIZANDO O QUERY ANALYZER
A definio de uma Chave Primria atravs de comandos utiliza o conceito de Constraint. Neste captulo
nos limitaremos ao comando que permite a criao de uma Chave Primria, sem detalharmos o conceito
de Constraints. No Captulo 9 falaremos em detalhes sobre Constraints.
Utilizamos o comando ALTER TABLE, com a seguinte sintaxe:
ALTER TABLE nome_da_tabela
ADD CONSTRAINT nome_da_chave_primria
PRIMARY KEY CLUSTERED (nome_do_campo_a_ser_definido_como_chave_primria)
Exemplo: Definir o campo CdigoProduto da tabela Produtos como sendo uma Chave Primria.
Para isso faa o seguinte:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo. Ser aberto o Query Analyzer com
o master como sendo o Banco de Dados atual.
3. Digite o seguinte comando:
ALTER TABLE Produtos
ADD CONSTRAINT chave_prim_produtos
PRIMARY KEY CLUSTERED (CdigoProduto)
Aps executar o comando indicado no passo anterior, o campo CdigoProduto da tabela Produtos ter
sido definido como Chave Primria e a seguinte mensagem ser exibida:
The command(s) completed successfully.
Podemos conferir se o mesmo foi realmente criado, utilizando o Enterprise Manager.
4. Feche o Query Analyzer.
Importante:
Se a coluna que estiver sendo definida como Chave Primria admitir valores nulos, o comando do
passo 3 resultar na seguinte mensagem de erro:
Server: Msg 8111, Level 16, State 1, Line 1
Cannot define PRIMARY KEY constraint on nullable column in table Produtos.
Server: Msg 1750, Level 16, State 1, Line 1
Could not create constraint. See previous errors.
Se a coluna que estiver sendo definida como Chave Primria contiver valores repetidos, o comando do
passo 3 resultar na seguinte mensagem de erro:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
193 CURSO COMPLETO00
Server: Msg 1505, Level 16, State 1, Line 1
CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 1.
Most significant primary key is 110.
Server: Msg 1750, Level 16, State 1, Line 1
Could not create constraint. See previous errors.
The statement has been terminated.
FUNDAMENTOS EM: CONCEITO E CRIAO DE NDICES
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Saber utilizar o Query Analyzer e o Enterprise Manager.
METODOLOGIA
Apresentao dos conceitos e dos comandos T-SQL para criao de ndices.
TCNICA
Criao de ndices utilizando os comandos apresentados.
UMA VISO GERAL DOS NDICES NO SQL SERVER 2000
A criao de ndices uma ferramenta poderosa para o projetista do Banco de Dados. Um ndice uma
estrutura auxiliar que melhora o desempenho das consultas. O papel principal do ndice reduzir o
nmero de operaes de I/O (leitura e escrita no disco) necessrias para localizar os dados solicitados
pela consulta. Ao utilizarmos ndices estamos ajudando o SQL Server 2000 a rapidamente localizar e
disponibilizar os dados necessrios, atravs de um nmero de operaes de I/O muito menor do que se
no tivssemos ndices no Banco de Dados. Uma analogia que aparece em diversos livros sobre Bancos
de Dados a comparao com o ndice de um livro. Voc procura o tpico desejado no ndice e abre o
livro diretamente na pgina relacionada, ao invs de folhar pgina por pgina, o que teria que ser feito
se no tivssemos o ndice.
Podemos criar ndices em qualquer coluna de uma tabela, inclusive em uma coluna com valores
calculados (esta uma das novidades do SQL Server 2000). Se no utilizarmos ndices, o SQL Server
precisa realizar uma operao conhecida como Table Scan, para localizar os dados solicitados por
uma consulta. Uma operao de Table Scan uma leitura seqencial de todos os registros da tabela, o
que implica em muito mais operaes de I/O de disco do que quando utilizamos ndices. Como operaes
de I/O de disco normalmente so bastante lentas quando comparadas com operaes de leitura ou
escrita em memria, a utilizao de ndices, ao reduzir o nmero de operaes de I/O de disco, melhora
significativamente o desempenho das consultas.
Se no definirmos nenhum ndice para uma tabela, os registros sero armazenados aleatoriamente,
sem nenhuma ordem especfica.
No SQL Server podemos ter dois tipos de ndices, conforme descrito a seguir.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
194 00CURSO COMPLETO
CLUSTERED INDEX
Um Clustered Index ordena os dados de acordo com os valores do campo onde o ndice foi definido.
Os dados so armazenados na prpria tabela. Neste caso, o ndice est alterando a ordem em que os
registros so armazenados na prpria tabela, ao invs de uma ordem aleatria (utilizado no caso de
no termos ndices), os registros so armazenados em uma ordem definida pelo ndice. Este tipo de
ndice bastante eficiente para agilizar operaes de localizao de registros. Somente podemos ter um
Clustered Index por tabela, pois s poderemos armazenar os dados em ordem de um determinado
critrio. Observe que embora o ndice melhore o desempenho das consultas, existe um pequeno over-
head para operaes de atualizao, insero e excluso de registros, pois estas operaes podem fazer
com que a ordem dos registros seja alterada, e que os mesmos tenham que ser reposicionados para
manter a ordem definida pelo ndice.
Os ndices no SQL Server 2000 so organizados em uma estrutura semelhante a uma rvore de cabea
para cima, as chamadas B-trees. Os dados so divididos em pginas (na verdade o SQL Server 2000
armazena os dados de uma tabela divididos em pginas de 8 KB). Cada pgina de um Clustered Index
possui um cabealho que identifica a pgina mais as linhas do ndice (Index Rows). Cada linha do ndice
contm um valor-chave e um ponteiro para outra pgina do ndice ou para um registro de dados. Cada
pgina do ndice chamada de n Index Node. O primeiro n da rvore chamado de n raiz Root
Node. O ltimo nvel ou camada de ns chamado de ns folhas Leaf Nodes. Entre o n raiz e o ltimo
nvel, podemos ter diversos nveis intermedirios. As pginas de cada nvel so ligadas em forma de uma
lista duplamente encadeada. As pginas com dados so as pginas ou ns folhas (Leaf Nodes).
Na Figura 4.18, retirada do Books OnLine, temos uma ilustrao da estrutura de um Clustered Index.
Os dados encontram-se nas chamadas Leaf Pages, as demais pginas do ndice (tambm conhecidas como
Non-Leaf Pages) contm informaes que facilitam a localizao dos dados contidos nas Leaf Pages.
Para entender o funcionamento de um Clustered Index, vamos observar como um determinado registro
localizado, utilizando a estrutura de um Clustered Index. Considere o exemplo da Figura 4.19.
Vamos supor que voc queira localizar o registro para o cliente Raul. O SQL Server 2000 far o seguinte:
Ao receber a pesquisa, o SQL Server detecta a existncia de um ndice na coluna nome e que a
utilizao deste ndice auxiliar no processo de pesquisa. Ento, utiliza um mecanismo interno
para preparar um Plano de Execuo para uma determinada consulta. Este plano procura
determinar qual a maneira mais rpida de executar a consulta. Neste caso, o SQL Server 2000
determina que a melhor maneira atravs da utilizao do ndice.
Nas pginas do ndice (Non-Leaf Pages), a pesquisa inicia na pgina root (125). O valor procurado
Raul vem depois do ltimo valor desta pgina, que Marcos. Com isso a pesquisa prossegue
para a pgina apontada pela pgina 125, que no caso a pgina 127.
A pesquisa continua na pgina de ndice 127. Nesta pgina, o valor Raul est na faixa entre
Marcos e Silvano. Agora a pesquisa deslocada para a pgina de dados em que o primeiro
registro comea com Marcos (pgina 60), conforme indicado pelas flechas da Figura 4.19.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
195 CURSO COMPLETO00
Figura 4.18 A estrutura em forma de B-tree de um Clustered Index.
Figura 4.19 Acessando dados com um Clustered Index.
Index
Pages
Non-leaf
Pages
Pgina 125 - root
Pgina 126 Pgina 127
Pginas de
dados
Leaf
Pages
Pgina 50 Pgina 55
Pgina 60
... ...
Pgina 65
Antnio
Gilberto
...
Marcos
Silvano
...
Antnio
...
Marcos
Antnio ...
Beto ...
Clvis ...
Fbio ...
Flvio ... 4075
... ...
Gilberto ...
Hlio ...
Joo ...
Joo ... 5788
Joo ... 6002
... ...
Marcos ...
Marcos ... 7206
Osvaldo ...
Pedro ...
Raul ...
... ...
Silvano ...
Silvano ... 8520
Silvano ... 8521
Valdir ...
Valdo ... 8900
... ...
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
196 00CURSO COMPLETO
Agora a pesquisa j alcanou o nvel dos dados (Leaf Pages) e est na pgina que contm o
registro procurado. A pgina 60 ser percorrida seqencialmente, at localizar o registro para o
usurio Raul. Observe que o nmero de operaes de leitura foi bastante reduzido com a
utilizao do ndice, em comparao situao em que tivssemos que fazer uma varredura de
todos os registros da tabela, at encontrar o registro procurado.
Este exemplo ilustra o quanto os ndices podem melhorar o desempenho das pesquisas. Como regra
geral devemos criar Clustered Indexes em colunas que so frequentemente utilizadas como critrio
para pesquisas. Por exemplo a coluna NomeCliente de uma tabela de Clientes.
Ao criarmos Clustered Indexes (aprenderemos a cri-los mais adiante neste captulo), devemos considerar
os seguintes fatos:
1. Conforme descrito anteriormente, cada tabela pode conter apenas um Clustered Index.
2. A ordem fsica das linhas da tabela (Leaf Nodes) e das linhas do ndice (Non-Leaf Nodes) a
mesma. Caso queiramos utilizar um Clustered Index e um Nonclustered Index na mesma
tabela, devemos criar o Clustered Index primeiro, uma vez que esta modifica a ordem dos
registros na tabela.
3. Os valores da chave em um Clustered Index devem ser nicos. Isto possvel com a utilizao da
palavra UNIQUE na criao do ndice, conforme veremos mais adiante. Se no utilizarmos a
palavra UNIQUE, o SQL Server adicionar um identificador interno o qual ser nico para cada
chave do ndice. Este identificador interno de 8 bytes e somente para uso do SQL Server, no
podendo seus valores serem acessados pelo usurio atravs de um comando SELECT, por exemplo.
4. De uma maneira geral, o espao em disco ocupado por um Clustered Index cerca de 5% do tamanho
da tabela. Este percentual varia, dependendo do tamanho da coluna que est sendo indexada.
5. Durante o processo de criao do ndice o SQL Server ocupa, temporariamente, espao em
disco. A criao de um Clustered Index requer cerca de 1,2 vezes o tamanho da tabela que est
sendo indexada. Este espao liberado aps a criao do ndice. Caso o seu Banco de Dados
no permita o crescimento automtico dos arquivos que o compem e no exista este espao
disponvel, o ndice no poder ser criado.
NONCLUSTERED INDEX
Este tipo de ndice cria uma estrutura separada das pginas da tabela. A ordem dos registros na tabela
no alterada com a criao de um Nonclustered Index. Com isso, os registros so armazenados em
uma ordem aleatria. Este tipo de ndice tambm apresenta uma estrutura do tipo B-tree com um n
root (Root Node) e Leaf Pages, as quais contm informaes do ndice e no os dados, os quais ficam
armazenados nas pginas de dados da prpria tabela. Pela descrio podemos confirmar que um
Nonclustered Index cria uma estrutura completamente separada da estrutura da tabela, sendo que as
informaes contidas no ndice so utilizadas para localizar rapidamente informaes nos registros da
tabela. Em uma linguagem mais tcnica dizemos que: Os nveis mais baixos de um Nonclustered
Index contm valores chaves, e cada um destes valores-chave aponta para uma linha de dado
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
197 CURSO COMPLETO00
correspondente chave. Por exemplo, a chave poderia ser o nmero de CPF do funcionrio. Este valor
armazenado no Nonclustered Index utilizado para, rapidamente, localizar o registro correspondente
na tabela de Funcionrios. Este ponteiro chamado de Localizador de registro Row Locator.
A estrutura do Row Locator depende de a tabela ter ou no um Clustered Index. Se a tabela j possui um
Clustered Index, a chave contida no Row Locator igual e aponta para a chave contida no Clustered
Index. Portanto, o Nonclustered Index est apontando para a chave correspondente no Clustered Index.
Se a tabela no contiver um Clustered Index (conhecida como Heap), a chave do Row Locator aponta
diretamente para o registro correspondente chave do Row Locator.
Na Figura 4.20, retirada do Books OnLine, temos uma ilustrao da estrutura de um Nonclustered Index.
Figura 4.20 A estrutura em forma de B-tree de um Nonclustered Index.
A utilizao de Nonclustered Indexes indicada quando o usurio precisa pesquisar os dados por
diversos critrios diferentes, uma vez que podemos criar mais do que um Nonclustered Index por
tabela. Por exemplo, se criamos um Clustered Index na coluna CdigoProduto, podemos criar um
Nonclustered Index na coluna NomeProduto, para agilizar a pesquisa tanto pelo Cdigo quanto pelo
Nome. importante salientar que mesmo sem o ndice possvel pesquisar por um ou mais campos de
qualquer tabela, porm a consulta ser mais demorada.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
198 00CURSO COMPLETO
Mais algumas observaes sobre Nonclustered Indexes:
1. Nonclustered Index o default para a criao de ndices no SQL Server 2000.
2. Podemos ter um mximo de 249 Nonclustered Indexes por tabela.
3. mais indicado a criao de Nonclustered Indexes em colunas que possuem dados que variam
de registro para registro, como por exemplo CdigoCliente ou NomeCliente. Em campos do
tipo Sim ou No, por exemplo, no aconselhvel a criao de Nonclustered Indexes.
MAIS ALGUMAS QUESTES TERICAS SOBRE NDICES
Vamos analisar os seguintes conceitos sobre ndices: Index Keys e Index Uniqueness.
Index Keys: Chamamos de Index Key chave do ndice a(s) coluna(s) utilizada(s) para definio
do ndice. A chave do ndice (Index Key) um valor que permite que o registro correspondente
seja rapidamente localizado. Por exemplo, se definirmos um ndice na coluna CdigoCliente,
o valor 2356 a chave para localizar o registro correspondente ao cliente cujo cdigo 2356.
Normalmente os valores Index Key so passados para uma consulta atravs da utilizao da
clusula WHERE. Para mais informaes sobre a clusula WHERE, consulte a introduo a
linguagem SQL no Captulo 1. Podemos ter Chaves de ndices simples ou compostas,
dependendo do tipo de ndice que foi definido.
Um ndice simples o que inclui apenas uma coluna de uma tabela. Esta coluna que deve ser utilizada
como parmetro para a clusula WHERE da consulta. Este tipo de ndice adequado para colunas que
apresentam diferentes valores para diferentes registros, como por exemplo: CdigoCliente,
CdigoFuncionrio, NomeCliente, NomeFuncionrio, no sendo indicado para colunas que apresentam
pequenas variaes nos seus valores. Por exemplo, suponhamos que voc tenha um cadastro de
1.000.000 de clientes, sendo que os mesmos pertencem somente a trs estados: SP, RJ ou MG. Criar um
ndice simples na coluna Estado no ser de grande valor como auxiliar no desempenho das consultas,
uma vez que o valor desta coluna somente varia entre os valores SP, RJ ou MG.
Um ndice composto formado por duas ou mais colunas de uma tabela. Um ndice composto pode
ser acessado utilizando-se uma ou mais chaves que fazem parte do ndice. No SQL Server 2000, um
ndice pode ser formado por, no mximo, 16 colunas, sendo que a soma dos tamanhos das colunas do
ndice no pode ultrapassar 900 bytes. Esta limitao tem a ver com a questo de desempenho, pois de
nada adiantaria criar ndices muito grandes, se os mesmos podem at tornar as consultas mais lentas,
ao invs de aceler-las.
Quando construmos as consultas, no precisamos incluir todos os campos que formam o ndice na
clusula WHERE da consulta. Porm no devemos esquecer que o ndice somente ser utilizado se a
clusula WHERE contiver pelo menos um dos campos que fazem parte do ndice. Se a clusula WHERE
no contiver nenhum campo do ndice, ser utilizado um Table Scan, pois o ndice em nada poder
ajudar a melhorar o desempenho da consulta, neste caso.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
199 CURSO COMPLETO00
Index Uniqueness: No SQL Server 2000 podemos ter ndices que so nicos ou no so. Em
ndices nicos no temos valores repetidos para a chave do ndice. Um ndice no-nico permite
valores repetidos para a chave, e ser tanto mais efetivo quanto mais diferentes forem os valores
que o formam.
Por exemplo, em uma tabela de cadastro de clientes, um ndice para o campo CdigoCliente ser
nico, j que no existem dois clientes com o mesmo cdigo. Veja que quando definimos um campo
como sendo uma Chave Primria, na verdade estamos criando um ndice nico para este campo,
conforme descrito anteriormente.
Em uma tabela de pedidos, teramos que criar um ndice no-nico no campo CdigoCliente. Uma vez
que um cliente pode fazer mais do que um pedido, o campo CdigoCliente apresentar valores repetidos,
isto , o cdigo de um determinado cliente ir se repetir tantos quantos forem os pedidos para este
cliente. Com isso, os valores de chave para o ndice no sero nicos e teremos um ndice no-nico.
Em termos de eficincia, um ndice nico melhor do que ndices no-nicos, uma vez que estes ltimos
exigem um nmero maior de operaes de I/O de disco para localizar os dados solicitados.
Podemos ter uma combinao de ndices quanto a serem simples ou compostos e a serem nicos ou
no-nicos. Desta forma poderemos ter os seguintes tipos de ndices:
ndice simples e nico.
ndice simples e no-nico.
ndice composto e simples.
ndice composto e no-nico.
Agora que vimos um pouco de teoria sobre os ndices, estamos preparados para aprender a criar ndices
no SQL Server 2000. Este o assunto do prximo item.
CRIANDO NDICES NO SQL SERVER 2000
Podemos criar ndices utilizando diferentes ferramentas, como por exemplo:
Enterprise Manager
Query Analyzer
Create Index Wizard
Iremos criar diferentes tipos de ndices utilizando estas ferramentas.
CRIANDO UM CLUSTERED INDEX SIMPLES COM O ENTERPRISE MANAGER
Neste exemplo, vamos criar um Clustered Index na coluna CdigoCliente da tabela Clientes do Banco
de Dados Exemplo1 criado anteriormente. Vamos fazer com que este ndice no admita valores
duplicados, desta maneira estaremos criando um ndice nico, ou seja, uma Chave Primria para a
tabela Clientes. Vamos chamar este ndice de CodCliIndex.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
200 00CURSO COMPLETO
Exemplo:
Para criar o ndice CodCliIndex:
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
3. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para expandi-la. Abaixo de Databases exibida uma lista com os Bancos de Dados
disponveis nesta instncia.
4. D um clique na opo Databases. No painel da direita, sero exibido os Bancos de Dados
disponveis. Localize Exemplo1, e d um clique no sinal de mais ao lado desta opo para
exibir os objetos do Banco de Dados.
5. D um clique na opo Tables. No painel da esquerda ser exibida uma lista com as tabelas do
Banco de Dados Exemplo1.
6. Clique com o boto direito do mouse na tabela Clientes, e no menu que surge aponte para a
opo All Tasks (Todas as Tarefas). Nas opes que surgem, d um clique em Manage Indexes.
Surge a janela indicada na Figura 4.21.
Figura 4.21 ndices da tabela Clientes.
Observe que a tabela Clientes ainda no possui nenhum ndice definido.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
201 CURSO COMPLETO00
Podemos notar, na Figura 4.21, que para o nome da tabela aparece dbo.Clientes. DBO um acrnimo para Database Owner (dono do
Banco de Dados) e indica o usurio que criou a tabela. Falaremos mais sobre o dono do Banco de Dados e de seus objetos no Captulo
6 quando trataremos sobre segurana em Bancos de Dados do SQL Server 2000.
Figura 4.22 Criando o ndice CodCliIndex.
Observe que na janela da Figura 4.22 temos a opo de definir em qual Filegroup o ndice ser colocado.
Por padro o ndice ser colocado no filegroup Primary, que o nico existente antes que outros
7. D um clique no boto New para criar um novo ndice.
8. Surge uma janela onde podemos definir as caractersticas do ndice como o nome, em qual ou
quais colunas o ndice ser criado e o tipo do ndice. Para o nosso exemplo vamos definir as
seguintes caractersticas:
Index Name: CodCliIndex.
Column: Selecione apenas CdigoCliente. Observe que na coluna Sort Order (DESC),
podemos fazer com que o ndice ordene os registros em ordem decrescente da chave do
ndice. O padro ordem crescente. Lembrando que a ordem dos registros alterada apenas
para o caso de Clustered Index.
Opo Clustered index: Marcada.
Opo Unique values: Marcada.
Sua janela deve estar conforme indicado na Figura 4.22.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
202 00CURSO COMPLETO
filegroups sejam criados. Para definir um filegroup diferente, basta marcar a opo File group e selecionar
um nome na lista ao lado.
A opo Do not recompute statistics (not recommended) determina se as informaes do ndice devem ser
atualizadas periodicamente. Por padro no devemos marcar esta opo, a no ser no caso de uma tabela
em que os dados praticamente no so alterados, no havendo nem insero nem deleo de registros.
9. D um clique no boto OK.
10. Voc estar de volta a janela da Figura 4.21. D um clique no boto Close para fechar esta janela.
11. Pronto. O ndice CodCliIndex foi criado.
CRIANDO UM NONCLUSTERED INDEX COMPOSTO COM O CREATE INDEX WIZARD
Agora vamos criar um Nonclustered Index. Alm disso nosso ndice vai permitir valores duplicados e
ser composto, isto , ser formado por mais de uma coluna. Ser chamado de CustEmplIndex. Este
ndice ser criado na tabela Orders do Banco de Dados Northwind e ter as seguintes caractersticas:
Nome: CustEmplIndex.
Colunas: CustomerID e EmployeeID da tabela Orders do Banco de Dados Northwind.
Tipo de ndice: Nonclustered.
Neste caso estaremos utilizando o Create Index Wizard.
Exemplo:
Para criar o ndice CustEmplIndex:
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
3. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para expandi-la. Abaixo de Databases exibida uma lista com os Bancos de Dados
disponveis na instncia SERVIDOR\SRVINST01.
4. D um clique na opo Databases. No painel da direita, sero exibido os Bancos de Dados
disponveis. Localize Northwind.
5. D um clique no sinal de mais ao lado de Northwind para exibir os objetos deste Banco de Dados.
6. D um clique na opo Tables. No painel da esquerda ser exibida uma lista com as tabelas do
Banco de Dados Northwind.
7. Clique na tabela Orders para selecion-la.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
203 CURSO COMPLETO00
8. Abra a janela com a lista de assistentes (Wizards). Para isso voc tem duas opes:
Selecione o menu Tools -> Wizards...
Na Barra de Ferramentas d um clique no boto Run a Wizard, o qual indicado na
Figura 4.23.
Figura 4.23 O boto Run a Wizard.
Ser exibida a janela Select Wizard.
9. D um clique no sinal de mais ao lado de Database para exibir os Wizards desta categoria.
10. Nas opes que surgem d um clique em Create Index Wizard, e depois em OK.
11. Surge a tela inicial do assistente para a criao do ndice. D um clique no boto Avanar
(Next), para ir para o prximo passo.
12. Na segunda tela do assistente precisamos escolher o nome do Banco de Dados e o nome da
tabela na qual ser criada o ndice. Selecione Northwind na lista Database name e Orders na
lista Object name.
13. D um clique no boto Avanar (Next), voc ir prxima etapa do assistente. Surge uma tela
com as informaes sobre os ndices j existentes na tabela Orders.
Existe apenas um Clustered Index e todos os demais so do tipo Nonclustered. Conforme havamos descrito anteriormente, somente
possvel termos um Clustered Index por tabela.
14. D um clique no boto Avanar (Next), e siga para a prxima etapa do assistente. Nesta etapa
voc dever definir quais colunas faro parte do ndice. Para o nosso exemplo, selecione as
colunas: CustomerID e EmployeeID, conforme indicado na Figura 4.24.
15. D um clique no boto Avanar (Next), e siga para a prxima etapa do assistente. Na tela que
surge observe que a opo Make this a clustered index est desabilitada e ao lado da opo
temos a mensagem (This object already has a clustered index). Nesta tela tambm temos a
opo de definir se o ndice ser ou no nico. No nosso caso no faremos o ndice nico. Uma
vez que no alteramos nenhuma opo, sua tela deve estar conforme indicado na Figura 4.25.
Falaremos sobre a opo Fill factor mais adiante.
16. D um clique no boto Avanar (Next), seguindo para a prxima etapa do assistente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
204 00CURSO COMPLETO
Figura 4.24 Criando um ndice composto.
Figura 4.25 Opo Clustered desabilitada.
17. Surge a tela final do assistente com um resumo das opes selecionadas para o ndice. Caso voc
precise alterar alguma opo basta utilizar o boto Voltar (Back) para fazer as alteraes necessrias.
18. D um clique no boto Concluir (Finish). O ndice criado e uma mensagem de sucesso emitida.
19. D um clique em OK para fechar esta mensagem e pronto, o ndice CustEmplIndex foi criado.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
205 CURSO COMPLETO00
20. Feche o Enterprise Manager.
Exerccio: Para fixar a criao de ndices com o Enterprise Manager e o Assistente para criao de
ndices (Create Index Wizard), criar dois ndices, no Banco de Dados Northwind.
1. Na tabela Products, com as seguintes caractersticas:
Nome: ProdSuplierIndex.
Colunas: ProductName e SuplierID.
Permitir valores duplicados.
2. Na tabela Employees, com as seguintes caractersticas:
Nome: NameTitleIndex.
Colunas: LastName, FirstName e Title.
No permitir valores duplicados.
Agora vamos aprender a criar ndices com comandos T-SQL e mais alguns detalhes sobre a criao e
manuteno de ndices.
CRIANDO NDICES COM O QUERY ANALYZER
Agora aprenderemos uma srie de comandos para trabalhar com ndices. Alm dos comandos para a
criao de ndices aprenderemos alguns Stored Procedures internos do SQL Server 2000 para a verificao
e manuteno de ndices.
Para criar ndices utilizamos o comando CREATE INDEX. A seguir temos a sintaxe para o comando
CREATE INDEX, conforme descrito no Books OnLine:
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )
[ WITH < index_option > [ ,...n] ]
[ ON filegroup ]
< index_option > :: =
{ PAD_INDEX |
FILLFACTOR = fillfactor |
IGNORE_DUP_KEY |
DROP_EXISTING |
STATISTICS_NORECOMPUTE |
SORT_IN_TEMPDB
}
Mais uma vez vamos simplificar a sintaxe para este comando. No formato simplificado teramos os seguinte:
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
ON { table | view }
( column [ ASC | DESC ] [ ,...n ] )
Vamos a um exemplo prtico. Para criar o seguinte ndice:
Tabela Customers do Banco de Dados Northwind
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
206 00CURSO COMPLETO
Nome: CityIndex
Colunas: City
Permitir valores duplicados.
utilizaramos o seguinte comando:
CREATE INDEX CityIndex ON Customers (City)
Vamos a um exemplo um pouco mais elaborado. Qual seria o comando para criar o seguinte ndice?
Tabela Customers do Banco de Dados Northwind
Nome: PK_Customers
Colunas: CustomerID
No permitir valores duplicados.
Neste caso, utilizaramos o seguinte comando:
CREATE UNIQUE CLUSTERED
INDEX PK_Customers ON Customers (CustomerID)
WITH DROP_EXISTING
Ao utilizarmos a opo WITH DROP_EXISTING estamos orientando o SQL Server a excluir o ndice
caso ele j exista, e a recri-lo novamente. Se no utilizarmos esta opo e o ndice j existir, ser
emitida a seguinte mensagem de erro:
Server: Msg 1913, Level 16, State 1, Line 1
There is already an index on table Customers named PK_Customers.
Vamos a mais um exemplo. Agora vamos criar um ndice composto com as seguintes caractersticas:
Tabela Customers do Banco de Dados Northwind
Nome: EnderecoIndex
Colunas: Address, City e Region
No permitir valores duplicados
Ignorar valores duplicados.
Neste caso utilizaramos o seguinte comando:
CREATE UNIQUE INDEX EnderecoIndex
ON Customers (Address, City, Region)
WITH IGNORE_DUP_KEY
Neste caso utilizamos a opo UNIQUE para criar um ndice nico e a opo WITH IGNORE_DUP_KEY
para ignorar valores duplicados j existentes.
Algumas consideraes para a criao de ndices compostos por mais do que um campo:
1. Podemos criar um ndice composto por, no mximo, 16 colunas. Alm disso a soma do tamanho
das 16 colunas no pode ultrapassar 900 bytes.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
207 CURSO COMPLETO00
2. Todas as colunas de um ndice composto devem pertencer a mesma tabela. Como no SQL
Server 2000 podemos criar ndices em Views (consultas) e uma View pode retornar dados de
vrias colunas, ao criarmos um ndice composto em uma View, as colunas que formam o
ndice composto devem pertencer a mesma tabela.
3. Em termos de desempenho, devemos definir a coluna que possui valores mais diferenciados
em primeiro lugar. Por exemplo, no ndice EnderecoIndex, do qual fazem parte as colunas:
Address, City e Region, a coluna que apresenta a maior variao, com certeza a coluna Ad-
dress (existem muitos endereos em uma cidade), depois a coluna City (existem muitas cidades
em uma regio) e por ltimo a coluna Region. Ao definirmos o ndice devemos passar as colunas
nesta mesma ordem, pois isso auxilia no desempenho da consulta.
4. Desta maneira podemos concluir que a ordem das colunas importa no desempenho, alm
disso os dois comandos a seguir, definem ndices diferentes. Observe que a nica diferena
entre os dois a ordem das colunas:
CREATE UNIQUE INDEX EnderecoIndex
ON Customers (Address, City, Region)
WITH IGNORE_DUP_KEY
e
CREATE UNIQUE INDEX EnderecoIndex
ON Customers (City, Address, Region)
WITH IGNORE_DUP_KEY
5. Ao construirmos uma consulta, a clusula WHERE deve fazer referncia a todas as colunas do
ndice composto, caso contrrio o ndice no ser utilizado.
Seguindo a nossa metodologia de utilizao de exemplos, vamos criar um ndice utilizando o Query
Analyzer. O ndice ter as seguintes caractersticas:
Tabela Customers do Banco de Dados Northwind
Nome: CountryIndex
Colunas: Country
Permitir valores duplicados.
Exemplo:
Criando o ndice CountryIndex com o Query Analyzer:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo. Ser aberto o Query Analyzer com
o master como sendo o Banco de Dados atual.
3. Alterne para Northwind, utilizando a lista com os nomes dos Bancos de Dados, na Barra de
Ferramentas ou executando o comando USE Northwind.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
208 00CURSO COMPLETO
4. Digite o seguinte comando:
CREATE INDEX
CountryIndex ON Customers (Country)
Dever ser exibida a seguinte mensagem:
The command(s) completed successfully.
Com isso nosso ndice foi criado.
5. Mantenha o Query Analyzer aberto.
UM FATOR IMPORTANTE: FILLFACTOR OPTION
Esta opo igualmente importante e pouco utilizada. Talvez seja pouco utilizada pelo no
conhecimento e aplicabilidade da mesma. Vamos explic-la de uma maneira simples.
Ao criarmos um Clustered Index, os dados da tabela so armazenados em pginas de dados de acordo
com a ordem dos valores da coluna indexada. Ao inserirmos novos registros na tabela, os mesmos
precisam ser inseridos na ordem definida pela coluna do ndice. Nestas situaes pode acontecer de
registros terem que ser deslocados para outras pginas para que o registro que est sendo inserido seja
colocado na ordem correta. Este procedimento tambm acontece quando utilizamos Nonclustered
Index, ao adicionarmos ou alterarmos os registros da tabela.
Ao criarmos um ndice podemos especificar um valor para a opo FILL FACTOR. Este valor define um
percentual a ser deixado em branco, sem registros gravados, em cada pgina de dados. O objetivo deste
espao em branco agilizar as operaes de insero, alterao e excluso de dados, evitando que
tenham que ser feitas movimentaes de registros entre pginas e, em casos mais extremos,
desdobramento de pginas. Com isso obtm-se um melhor desempenho nestas operaes.
Pode parecer um detalhe sem muita importncia, mas imagine, por exemplo, um sistema de reserva de
passagens areas de uma grande companhia. Milhares de terminais de atendimentos conectados ao
Banco de Dados, com operaes de insero, alterao e excluso sendo feitas a todo o instante. Nesta
situaes o ganho em performance considervel. Mas, como tudo na vida, temos que considerar o
outro lado da situao. Ao definirmos um FILL FACTOR elevado estaremos deixando um espao
disponvel em cada pgina. Para sistemas que fazem basicamente consulta, um FILL FACTOR elevado
ser prejudicial, pois a consulta ter que acessar um nmero maior de pginas de dados para reunir a
informao necessria. Maior nmero de pginas, mais operaes de I/O de disco = pior desempenho.
Ento em sistemas DSS (Decision Support Systems), onde no temos alteraes nem inseres de dados,
mas sim um grande volume do consultas aos dados, o ideal um FILL FACTOR de 100%, ou seja, sem
espao nas pginas de dados.
Falaremos um pouco mais sobre os diferentes ambientes de trabalho (DSS Decision Support System), OLTP e OLAP no Apndice A.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
209 CURSO COMPLETO00
O valor do parmetro FILL FACTOR um valor percentual, o qual varia de 0 a 100%. Um valor de
100% significa que as pginas de dados sero ocupadas completamente, o que implica em menor
espao para armazenamento e tambm menos operaes de I/O de disco para as consultas, conforme
descrito anteriormente.
Na maioria das situaes o valor padro definido pelo prprio SQL Server 2000 j satisfatrio, mesmo
para aplicaes que tenham muitas operaes de insero e atualizao.
O percentual de espao livre definido na criao do ndice. medida que novos registros vo sendo
inseridos ou alterados, as pginas de dados vo sendo preenchidas e o percentual de espao livre vai
diminuindo. Caso voc queira redefinir o percentual de espao livre, basta recriar o ndice com a
definio do FILL FACTOR para o percentual desejado.
O valor default para o FILL FACTOR 0%. Porm este valor no significa que as pginas de dados esto
zero por cento preenchidas. Na prtica este valor instrui o SQL Server a criar pginas de dados
praticamente preenchidas, deixando apenas um pouco de espao para otimizaes do ndice. Voc
pode alterar este valor padro acessando as propriedades da instncia do servidor SQL Server, atravs
da guia Database Settings, conforme indicado na Figura 4.26.
Para criar um ndice com a opo FILL FACTOR, basta utilizar WITH FILLFACTOR = x %, conforme
indicado no exemplo a seguir:
CREATE NONCLUSTERED INDEX NomeIndex
ON Autores (nome)
WITH FILLFACTOR = 65
Figura 4.26 Valor default para o FILL FACTOR.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
210 00CURSO COMPLETO
FUNDAMENTOS EM: COMANDOS ADICIONAIS PARA TRABALHAR COM NDICES
PR-REQUISITOS
Noes bsicas sobre o conceito de ndices.
Saber utilizar o Query Analyzer para executar comandos.
METODOLOGIA
Apresentao dos comandos T-SQL relacionados com ndices.
Neste item veremos alguns comandos teis para trabalhar com ndices.
O comando sp_helpindex: Este comando retorna uma srie de informaes sobre os ndices de
uma tabela ou View.
A sintaxe para este comando bastante simples.
exec sp_helpindex nome_da_tabela_ou_view
Por exemplo, o comando:
exec sp_helpindex Customers
retorna o resultado indicado na Figura 4.27.
Figura 4.27 Informaes retornadas por sp_helpindex.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
211 CURSO COMPLETO00
O comando sp_spaceused: Este comando retorna informaes sobre o espao ocupado por
uma tabela.
A sintaxe para este comando bastante simples.
exec sp_spaceused nome_da_tabela
Por exemplo, o comando:
exec sp_spaceused Customers
retorna o resultado indicado na Figura 4.28.
Observe que uma das informaes retornadas o tamanho do ndice.
O comando sp_help: Este comando retorna uma srie de informaes sobre uma determinada
tabela, inclusive informaes sobre os ndices.
A sintaxe para este comando bastante simples.
exec sp_help nome_da_tabela
Figura 4.28 Informaes retornadas por sp_spaceused.
Uma coluna indexada em ordem descendente ser listada com um sinal de menos aps o nome.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
212 00CURSO COMPLETO
Por exemplo, o comando:
exec sp_help Customers
retorna uma srie de informaes sobre a tabela Customers.
EXCLUINDO NDICES
Para excluir um ndice bastante simples. Podemos excluir um ndice com o Enterprise Manager ou
atravs de comandos no Query Analyzer.
EXCLUINDO UM NDICE COM O ENTERPRISE MANAGER
Exemplo:
Excluir o ndice CodCliIndex, criado anteriormente, utilizando o Enterprise Manager:
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
3. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para expandi-la. Abaixo de Databases exibida uma lista com os bancos de dados
disponveis na instncia SERVIDOR\SRVINST01.
4. D um clique na opo Databases. No painel da direita, sero exibido os Bancos de Dados
disponveis. Localize Exemplo1.
5. D um clique no sinal de mais ao lado de Exemplo1 para exibir os objetos deste Banco de Dados.
6. D um clique na opo Tables. No painel da esquerda ser exibida uma lista com as tabelas do
Banco de Dados Exemplo1.
7. Clique com o boto direito do mouse na tabela Clientes, no menu que surge aponte para a
opo All Tasks (Todas as Tarefas). Nas opes que surgem, d um clique em Manage Indexes,
surge a janela com a listagem dos ndices da tabela Clientes.
8. D um clique no ndice CodCliIndex para selecion-lo, depois d um clique no boto Delete.
Surge uma janela pedindo confirmao.
9. Clique em Sim e pronto; o ndice ter sido excludo.
10. Voc estar de volta a janela com a listagem dos ndices para a tabela Clientes. Observe que o ndice
CodCliIndex j no aparece mais na listagem. D um clique no boto Close para fechar esta janela.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2000
213 CURSO COMPLETO00
EXCLUINDO UM NDICE COM O QUERY ANALYZER
Para excluir um ndice utilizando o Query Analyzer, basta utilizar o comando DROP INDEX. A sintaxe
para este comando a seguinte:
DROP INDEX nome_da_tabela.nome_do_indice
Observe a nomenclatura, onde utilizamos o nome da tabela, um ponto (.) e o nome do ndice. Por
exemplo, para excluir o ndice CodCliIndex da tabela Clientes, do Banco de Dados Exemplo1, deveramos
utilizar o seguinte comando:
DROP INDEX Clientes.CodCliIndex
Antes de executarmos este comando devemos tornar Exemplo1, o Banco de Dados atual. Para isso selecionamos Exemplo1 na listagem
de Banco de Dados na Barra de Ferramentas do Query Analyzer ou executamos o comando USE Exemplo1.
CONCLUSO
Iniciamos o captulo com a apresentao dos tipos de dados existentes no SQL Server 2000. Depois
aprendemos a criar tipos de dados definidos pelo usurios.
Em seguida aprendemos a criar tabelas, tanto utilizando o Enterprise Manager quanto o Query Analyzer.
Finalmente fizemos um estudo detalhado sobre a aplicao e criao de ndices.
Para finalizar o captulo gostaria de colocar algumas recomendaes quanto a criao de ndices.
Use ndices nas seguintes situaes:
Para consultas com critrios baseados em uma faixa de valores e que retornam um pequeno
nmero de linhas.
Colunas que so utilizadas freqentemente em operaes de Join devem ser utilizadas para a
criao de ndices.
Consultas que retornam dados de uma forma ordenada. Neste caso basta criar um Clustered
Index para o campo e ordem desejada. Por exemplo, se voc tem uma consulta que deve listar
todos os pedidos por ordem do nmero do pedido, ao invs de ordenar a consulta utilizando a
clusula ORDER BY, crie um Clustered Index na coluna NmeroPedido, na ordem desejada
pela consulta (Ascendente ou Descendente).
Orientaes para a utilizao de ndices:
Utilize ndices com moderao. No saia simplesmente indexando todas as colunas de todas as
tabelas, que o efeito obtido pode ser uma reduo no desempenho das consultas ao invs de um
aumento de desempenho, devido a necessidade de manuteno dos ndices. Lembre que toda
vez que dados so inseridos, alterados ou excludos, os ndices precisam ser atualizados, o que
gasta recursos do servidor SQL Server, tanto em termos de memria quanto de processamento.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE I: FUNDAMENTOS
214 00CURSO COMPLETO
Para pequenas tabelas, isto , tabelas com poucos registros, no se justifica a criao de ndices. mais
onerosa a manuteno dos ndices do que a realizao de um table scan em uns poucos registros.
Sempre que possvel utilize as chamadas Covering querys, as quais so consultas em que
todas as colunas que fazem parte da consulta possuem ndices. Desta forma somente o ndice
acessado, sem a necessidade de pesquisar na consulta diretamente. Isto reduz drasticamente
as operaes de I/O de disco e aumenta muito o desempenho.
No prximo Captulo trataremos de Backup e de outras tarefas para manter o Banco de Dados em
plena forma e funcionamento.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
215 CURSO COMPLETO00
Parte 2
KNOW-HOW
Este material no pode ser utilizado em treinamentos e em Sala de Aula
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
217 CURSO COMPLETO00
Captulo 5
APRENDENDO SOBRE TRANSAES,
BACKUP E AGENDAMENTO DE TAREFAS
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
218 00CURSO COMPLETO
INTRODUO
Os dados armazenados no Banco de Dados da empresa so o seu maior patrimnio. Transformar estes
dados em informaes teis para o negcio da empresa o grande desafio da TI Tecnologia da
Informao. a j velha e conhecida, porm sempre atual mxima: A informao certa, para a pessoa
certa e no tempo certo.
Uma vez que estes dados so de vital importncia, obviamente que devemos possuir mecanismos de
proteo para os mesmos, a fim de evitar perdas, adulterao e acesso indevido aos dados. Evitar
adulterao e acesso indevido aos dados faz parte da segurana de acesso aos dados, quer da segurana
lgica quanto da segurana fsica do acesso a sala dos servidores. Porm segurana assunto para o
Captulo 6. Neste captulo vamos tratar das estratgias e mecanismos de implementao de rotinas de
Backup dos dados (cpias de segurana dos dados). O Backup certamente uma das tcnicas mais
antigas e mais eficientes para se proteger contra a perda de dados.
Iniciaremos o captulo falando sobre transaes e o Log de Transaes (Transaction Log) em Bancos de
Dados do SQL Server 2000. Precisamos entender o conceito de Log de Transaes, para que possamos
estudar as diversas estratgias de Backup e identificar qual a estratgia mais adequada para cada situao.
Entendido o conceito de Log de Transaes, podemos partir para o estudo das estratgias de Backup/
Restore. A operao de Restore a utilizao de uma cpia de Backup para Restaurar os dados de volta
para o Banco de Dados, em caso de perda dos originais. Por isso, no existe sentido falar somente em
Backup. Quando fazemos uma Cpia de segurana do Banco de Dados para outro dispositivo, normalmente
uma fita magntica, estamos fazendo um Backup (Cpia de segurana). Se acontecer algum problema
com os dados, precisamos Restaurar (Restore) os dados a partir do Backup, de volta para o Banco de
Dados. Existe at uma brincadeira bastante conhecida entre os DBAs: O Backup sempre funciona, o
problema o Restore. Nesta situao, o DBA (Database Administrator) est querendo dizer que a operao
de Backup, normalmente, no apresenta problemas. As maiores complicaes acontecem na hora de
restaurar os dados. Embora seja uma brincadeira, esta afirmativa representa uma realidade, muitas
vezes bastante cruel. Se no formos cuidadosos e planejarmos com preciso o nosso sistema de Backup,
poderemos ter problemas bastante desagradveis. J pensou a reao do chefe quando voc informa que
no poder restaurar os dados com as operaes financeiras da ltima semana porque na hora de fazer o
Backup foi tudo bem; porm na hora de restaurar os dados, nada funcionou?
Uma vez entendidas as diversas estratgias de Backup/Restore, iremos para a implementao prtica
das rotinas de Backup/Restore. Em um exerccio prtico, faremos o backup de um Banco de Dados,
depois iremos corromper os dados e a teremos que restaurar os dados a partir do backup feito
inicialmente. Seguindo o padro dos demais captulos, aprenderemos a fazer Backup/Restore utilizando
o Enterprise Manager e tambm comandos no Query Analyzer.
medida que o banco de dados vai crescendo, pode tornar-se praticamente impossvel fazer o backup
manualmente. E se o backup tiver que ser feito s 5h da manh? Iremos contratar um DBA especialmente
para esta tarefa? Conforme veremos, possvel Agendar Tarefas no SQL Server 2000. E um timo
exemplo de tarefa que se presta a ser agendada a execuo de Rotinas de Backup. Aprenderemos a
agendar tarefas e fazer com que aps a execuo da tarefa uma determinada mensagem seja enviada
para o DBA. Tambm veremos quais outros tipos de tarefas que podem ser agendados e os demais
recursos para agendamento de tarefas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
219 CURSO COMPLETO00
KNOW-HOW EM: CONCEITO DE LOG DE
TRANSAES NO SQL SERVER 2000
PR-REQUISITOS
Fundamentos apresentados na Parte I.
METODOLOGIA
Apresentao terica sobre o log de transaes.
No Captulo 2, em uma breve introduo a respeito de transaes, definimos uma transao da seguinte
maneira:
Uma transao, de uma maneira bastante simples, um conjunto de operaes sobre os dados, que
deve acontecer com um todo, ou seja, todas as operaes contidas na transao devem ser finalizadas
com sucesso, ou nenhuma delas deve ser realizada. Caso uma das operaes, contida na transao,
venha a falhar, as operaes ainda pendentes devem ser canceladas; e as operaes j realizadas devem
ser revertidas. Com isso garantimos que a transao acontece como um todo, ou que nenhuma de suas
operaes seja realizada.
No Captulo 3, onde aprendemos a criar Bancos de Dados no SQL Server 2000, ns vimos que todo
Banco de Dados deve ter, no mnimo, um arquivo de log, o qual tambm chamado de Transaction
Log do Banco de Dados. Em resumo, todo Banco de Dados deve possuir pelo menos um arquivo de log,
sendo que no possvel desativar o mecanismo de log no SQL Server 2000. De agora em diante
iremos utilizar o termo: o Log de Transaes do Banco de Dados.
No Captulo 3 escrevemos o seguinte:
Os arquivos de log armazenam o chamado Log de transaes. O Log de transaes um registro das
operaes que so efetuadas nos dados do Banco de Dados. Veremos mais detalhes sobre o log mais adiante.
No Log de Transaes do Banco de Dados so registradas as seguintes operaes efetuadas sobre os dados:
INSERT
UPDATE
DELETE
No Log de Transaes fica o registro da transao, caso a mesma tenha sido executada com sucesso,
ou o registro da reverso (Roll Back) da transao, caso alguma das operaes tenha falhado. Este
mecanismo fundamental para garantir a integridade dos dados, garantindo que os mesmos estejam
em um estado consistente.
Agora vamos detalhar um pouco mais estes conceitos.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
220 00CURSO COMPLETO
UM POUCO MAIS SOBRE O CONCEITO DE TRANSAO
Conforme descrevemos no Captulo 2, uma transao representa um conjunto de operaes, sendo
que todas as operaes devem ser executadas com sucesso. Caso uma nica operao venha a falhar, as
operaes restantes sero canceladas e as que j foram executadas sero revertidas.
Quando todas as operaes so executadas com sucesso dizemos que a transao sofreu um Commit.
Quando a transao falha (pelo fato de uma de suas operaes ter falhado), dizemos que a transao
sofreu um Roll Back. Quando a transao sofreu um roll back, os dados estaro no mesmo estado, isto
, com os mesmos valores, que estavam no incio da transao.
O exemplo mais tpico o que envolve a transferncia entre duas contas correntes em um banco. Para
ilustrar o conceito, vamos repetir o exemplo colocado no Captulo 2. Utilizando a terceira maior inveno
do milnio passado, que na minha opinio o Copiar e Colar (Ctrl+C, Ctrl+V), transcrevo abaixo o
exemplo de transao do Captulo 2:
O pagamento pode ser feito, por exemplo, atravs de uma transferncia da conta corrente da
concessionria, para a conta corrente do fornecedor. Neste ponto, precisamos introduzir o conceito de
transao, o qual ser bastante detalhado em outros captulos deste livro. (...)
Para entender, na prtica, o conceito de transaes, vamos voltar ao exemplo anterior. Ao efetuar um
pagamento, o sistema deve transferir valores da conta corrente da concessionria para a conta corrente do
fornecedor. Estas duas aes devem acontecer no contexto de uma transao, conforme indicado abaixo:
Incio da Transao
Ao 1: Debita o valor da conta corrente da Concessionria.
Ao 2: Credita o valor na conta corrente do Fornecedor.
Final da Transao.
A primeira ao efetua o dbito na conta corrente da Concessionria. Vamos supor que a Ao 1 ocorra
com sucesso, porm na hora de fazer o crdito na conta corrente do Fornecedor, ocorra um problema, o
que devemos fazer? O valor deve ser estornado para a conta da Concessionria, ou seja, a Ao 1 deve ser
revertida, uma vez que nem todas as aes dentro da transao puderam ser concludas com xito. Vejam
a importncia do conceito de transao, pois neste caso, se no usssemos transao, o valor seria debitado
da conta corrente da Concessionria, porm sem ter sido creditado na conta corrente do fornecedor.
Revisado o conceito de transao, vamos analisar as caractersticas que definem uma transao. Existem
quatro caractersticas que toda transao deve apresentar:
Atomicidade
Consistncia
Isolao
Durabilidade
Estas quatro caractersticas so resumidas pela sigla ACID. Vamos ver o que significa cada uma destas
caractersticas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
221 CURSO COMPLETO00
Atomicidade: A transao deve representar uma unidade de trabalho atmica, isto ,
indivisvel. Com isso ou todas as operaes de uma transao devem ser executadas com sucesso,
ou nenhuma delas deve ser executada. Esta caracterstica parece se confundir com o prprio
conceito de transao: ou tudo ou nada. O nada conforme descrito anteriormente, garantido
pelo mecanismo de roll back, isto , se uma das operaes que faz parte da transao falhar, as
operaes j executadas sero revertidas. No SQL Server 2000, o mecanismo de log apresenta
exatamente este comportamento.
Consistncia: Ao ser finalizada a transao, todos os dados devem estar em um estado
consistente. Estar em um estado consistente, em um Banco de Dados Relacional, significa que
todas as regras e a integridade referencial foram respeitadas. Por exemplo, uma transao no
deve ser capaz de cadastrar um pedido na tabela Pedidos, para um cliente que ainda no existe
na tabela Clientes. Se isto acontecer, os dados no estaro em um estado consistente. Ao final
de uma transao, estruturas auxiliares, como por exemplo os ndices, tambm devero ter
sido atualizadas. Com o SQL Server 2000, a consistncia dos dados garantida, quer a transao
tenha sido realizada com sucesso ou tenha sofrido um roll back.
Isolamento: Em um ambiente com muitos usurios, diversas transaes estaro sendo efetuadas
simultaneamente. O mecanismo de isolamento garante que uma determinada transao no
utilizar dados em um estado intermedirio. Vamos supor que uma transao que chamaremos
TR1 tenha iniciado. Antes que TR1 tenha terminado inicia-se uma segunda transao TR2.
Agora imagine que uma das operaes de TR2 precise acessar dados que estejam sendo
modificados por TR1. Pelo mecanismo do isolamento, TR2 ter acesso aos dados no estado em
que os mesmos encontravam-se antes do incio de TR1 caso TR1 ainda no tenha sido encerrada
ou no estado aps o encerramento de TR1 caso TR1 j tenha sido encerrada. Desta maneira
uma transao (no nosso exemplo TR2) no ser afetada por valores que tenham sido alterados
por outra transao (no nosso exemplo TR1), enquanto estas alteraes no tenham se tor-
nado definitivas, isto , a transao tenha sido completada com sucesso. Existem diferentes
nveis de isolamento, os quais sero estudados no Captulo 10: Read uncommitted, Read com-
mitted, Repeatable read e Serializable.
Durabilidade: Uma vez encerrada a transao, as alteraes por ela efetuadas sero definitivas. Mesmo
que ocorra alguma falha com o SQL Server, o Sistema Operacional ou o equipamento, quando o SQL
Server 2000 for reinicializado as transaes que esto no log e ainda no foram aplicadas ao Banco
de Dados sero aplicadas, fazendo com que as modificaes tornem-se permanentes.
Vamos analisar um pouco melhor o que significa aplicar uma transao ao Banco de Dados.
COMO FUNCIONA O LOG DE TRANSAES
Quando estamos desenvolvendo uma aplicao quer seja em Visual Basic, VB.NET, ASP, ASP.NET,
Microsoft Access, Delphi, etc. , que acessa dados em um servidor SQL Server 2000, devemos definir o
incio e o fim de uma transao no prprio aplicativo, desta maneira controlamos quais operaes
devem acontecer no contexto de uma transao. Por exemplo, podemos criar uma pgina ASP que
executa no contexto de uma transao, desta maneira todas as operaes realizadas pela pgina ASP,
em um Banco de Dados do SQL Server 2000, ocorrero no contexto de uma transao: ou todas so
executadas com sucesso (Commit) ou todas falham (Roll Back).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
222 00CURSO COMPLETO
Quando uma transao iniciada e as operaes individuais INSERT, DELETE ou UPDATE comeam
a ser enviadas para o Banco de Dados, os seguintes passos so executados no servidor SQL Server 2000:
1. As pginas que contm os dados que esto sendo afetados, (ou a pgina na qual os dados sero
inseridos) so localizadas no disco e carregadas na memria, a qual chamada de Cache de
dados. Antes de carregar uma pgina no Cache de dados, o SQL Server 2000 verifica se a pgina
j est no Cache de dados, se a mesma no estiver, ser localizada no disco e carregada na memria.
2. As alteraes/incluses/excluses nunca so feitas diretamente no disco, mas sim nas pginas
de dados carregadas na memria. As alteraes/incluses/excluses so ento registradas no
Arquivo de log. Neste momento as modificaes esto registradas apenas no log e no foram
ainda realizadas nos arquivos de dados.
3. Um processo chamado de Checkpoint responsvel por fazer com que as transaes que tenham
sido completadas com sucesso (Commit) sejam aplicadas ao Banco de Dados periodicamente,
fazendo com que as modificaes sejam definitivamente aplicadas ao Banco de Dados, isto ,
gravadas no disco. O processo de Checkpoint grava no Log de transaes informaes para saber
quais transaes j foram aplicadas ao Banco de Dados e quais ainda no foram. Transaes que
sofreram um roll back no sero aplicadas ao Banco de Dados. O processo de Checkpoint fica
periodicamente checando se existem transaes completadas com sucesso (Committed Transac-
tions) no log do Banco de Dados, as quais ainda no foram gravadas no arquivo de dados. Caso
acontea alguma falha que interrompa o servidor SQL Server 2000, um processo de recuperao
automtica disparado na prxima inicializao do servidor. Este processo de recuperao
automtica faz com que transaes que forem completadas e no aplicadas ao Banco de Dados
sejam aplicadas neste momento, garantindo com isto, a durabilidade da transao.
Agora que conhecemos o conceito de transao e o mecanismo do Log de transaes no SQL Server
2000, podemos estudar algumas estratgias de Backup que utilizam o log de transaes.
KNOW-HOW EM: TIPOS E ESTRATGIAS DE BACKUP
PR-REQUISITOS
Fundamentos apresentados na Parte I.
METODOLOGIA
Apresentao terica sobre tipos e estratgias de backup.
Antes de aprendermos a criar backups precisamos aprender sobre os tipos de backup disponveis e
sobre as estratgias de Backup/Restore mais comuns.
INTRODUO
Sendo as informaes o bem mais valioso da sua empresa e estando estas informaes armazenadas no
banco de dados, de fundamental importncia que tenhamos uma estratgia bem definida para a
proteo deste bem to valioso. Devemos nos preocupar no apenas com a perda dos dados, mas
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
223 CURSO COMPLETO00
tambm com acessos indevidos ou at mesmo com roubo de informaes. Se um concorrente conseguir
invadir a sua rede e copiar dados estratgicos voc estar com um grande problema.
Tambm pode haver perda de dados por erros humanos, como a utilizao de comandos do SQL. O caso
mais tpico a utilizao de um comando DELETE sem um clusula WHERE, como exemplificado a seguir:
DELETE * FROM Clientes
Este comando, aparentemente inocente, ir apagar todos os registros da tabela Clientes. E se voc no
tiver uma boa estratgia de Backup? Problemas vista.
Cada vez mais as empresas conectam suas redes locais Internet. Os benefcios so muitos, porm existem
tambm problemas. Ao conectar a rede da empresa com a Internet, devemos nos preocupar com diversos
fatores que podem causar danos s informaes armazenadas no Banco de Dados, como por exemplo:
Invases e ataques de hackers.
Perda de informaes devido a problemas com vrus.
Acesso indevido s informaes.
Como se tudo isso no bastasse tambm devemos nos preocupar com a segurana fsica, desastres
naturais e problemas com hardware.
De nada adianta voc configurar cuidadosamente a segurana de acesso ao dados do Servidor SQL
Server, ter uma boa estratgia de backup/restore se qualquer um puder entrar na sala onde esto as fitas
e levar a fita em baixo do brao, para ler os dados em outro lugar. Existe um caso bastante conhecido
em que um estranho ligou para a empresa e pediu para que o DBA deixasse a fita com o backup dos
dados na portaria. Sem maiores preocupaes a fita foi deixada com o porteiro que a entregou para a
pessoa que havia solicitado. Veja que situao cmica se no fosse to grave. Por isso a segurana fsica
deve fazer parte da Poltica de Segurana da empresa.
Desastres naturais no devem ser desconsiderados. Incndios, inundaes e outros acontecem e devem
ser levados em conta na hora de montarmos a Poltica de Segurana da empresa. Vamos supor que para
a empresa seja de fundamental importncia que seu site esteja disponvel 100% do tempo, mesmo em
caso de calamidades. Neste caso voc deve considerar a hiptese de ter os dados duplicados em duas
localidades fsicas diferentes, como por exemplo: Rio de Janeiro e So Paulo. Desta forma, se o escritrio
do Rio de Janeiro pegar fogo, as operaes podem ser deslocadas para o site de So Paulo, o qual deve
ser uma cpia fiel do site do Rio de Janeiro. No Captulo 8, estaremos falando sobre a replicao de
dados, o que nos permite manter cpias idnticas dos dados em diversos servidores.
Outra situao que devemos considerar o local de armazenamento das fitas de backup. comum vermos
empresas que armazenam as fitas de backup na prpria sala dos servidores de Banco de Dados, desta
maneira se a sala pegar fogo, j queima os servidores e tambm as fitas, e a empresa perde todas as cpias
dos dados. J deu para perceber que esta uma pssima estratgia. O ideal termos uma sala separada para
o armazenamento das fitas de backup, de preferncia uma sala-cofre prova de fogo e inundaes.
Falhas de hardware acontecem e devemos estar preparados para as mesmas. Aquele disco de 30 GB com os
arquivos do Banco de Dados de vendas pifou? E agora? Se a nossa estratgia de backup foi eficiente, s
substituir o disco e restaurar os dados a partir do backup. Podem existir situaes em que o tempo necessrio
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
224 00CURSO COMPLETO
para restaurar os dados a partir do backup inaceitvel. Por exemplo, o site da empresa no pode esperar,
digamos, 6 horas para que os dados sejam restaurados. Nesta situao podemos considerar a hiptese de
manter cpias idnticas dos dados em dois ou mais servidores. Conforme descrito anteriormente, podemos
fazer esta duplicao dos dados utilizando Replicao. Desta maneira se houver uma falha de hardware em
um dos servidores, outro servidor pode assumir o trabalho do servidor que falhou.
Um fator que devemos levar em considerao, na hora de montarmos a nossa estratgia de backup e
proteo dos dados, o valor da informao que est sendo protegida. Se a informao a ser protegida
de valor estratgico para a empresa, e os dados precisam estar sempre disponveis e nem se imagina
a hiptese de perd-los; evidente que os gastos para proteger esta informao sero elevados, porm
mais facilmente justificveis. Em resumo, o nvel de investimento em segurana e backup proporcional
importncia dos dados para a empresa.
Devemos identificar os requisitos de disponibilidade dos dados quando formos escolher a nossa estratgia
de backup. Vamos supor que o requisito seja: os dados devem estar disponveis 100% do tempo. Neste
caso plenamente justificvel a utilizao de dois ou mais servidores SQL Server 2000 com cpias
idnticas dos dados, de tal maneira que se um deles apresentar problemas, um dos outros pode assumir
no seu lugar. Nesta situao, a simples utilizao de backup em fita no atenderia o requisito de
disponibilidade, uma vez que os dados estariam indisponveis durante o tempo de restaurao da fita
para o Banco de Dados.
A seguir coloco mais algumas questes que devemos levar em considerao ao montarmos a nossa
estratgia de backup/restore:
Quais os requisitos de disponibilidade? O Banco de Dados deve estar on-line as 24 horas do
dia, sete dias por semana ou pode ser colocado off-line em determinados horrios?
Qual o custo de parar as operaes da empresa devido a indisponibilidade dos dados? Qual o
custo financeiro e para a imagem da empresa quando o site da empresa fica indisponvel,
devido a problemas com o Banco de Dados?
Em caso de uma falha de hardware qual o tempo aceitvel at a restaurao da normalidade?
A sua empresa possui um DBA dedicado ou o servio terceirizado? Quem o responsvel
pelas rotinas de backup? Quem o responsvel por verificar se os procedimentos de backup/
restore esto sendo realizados em conformidade com a estratgia proposta?
Outras questes podem ser relevantes para a sua empresa. O importante fazer um planejamento
bastante cuidadoso.
Em uma estratgia de backup definimos o tipo de backup a ser utilizado (conforme veremos a seguir),
bem como a freqncia do backup.
Pela importncia do procedimento vou repetir a seguinte recomendao: No basta fazer o backup,
precisamos de uma estratgia de testes e simulao de restaurao dos dados, pois muitas vezes o backup
completado sem problemas, mas na hora de restaurar os dados que acontecem os problemas. Por isso
uma rotina de testes de restaurao a partir dos backups, deve fazer parte da nossa estratgia de backup.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
225 CURSO COMPLETO00
MTODOS DE BACKUP QUANTO AO CONTEDO DO BACKUP
Quanto ao contedo do backup, temos duas abordagens para o backup de um Banco de Dados:
Fazer o backup somente do Banco de Dados: Com esta abordagem o backup do Banco de Dados
feito periodicamente. Caso acontea algum problema com o Banco de Dados, as alteraes que
tenham sido feitas desde o ltimo backup sero perdidas. Considere o exemplo da Figura 5.1.
Figura 5.1 Backup somente do Banco de Dados.
Fazer o backup apenas do Banco de Dados apresenta como principal vantagem a simplicidade, e como
principal desvantagem a perda das alteraes entre o ltimo backup e o momento em que o problema
ocorre no Banco de Dados. Com esta abordagem, a restaurao tambm bastante simples, conforme
veremos mais adiante. Utilizamos este tipo de abordagem para pequenos Bancos de Dados devido a
sua simplicidade. Para Bancos de Dados maiores, mais complexos devemos fazer o backup tambm do
Log de transaes, conforme descrito a seguir.
Backup do Banco de Dados e do Log de transaes: Com esta abordagem fazemos o backup de
todo o Banco de Dados menos freqentemente do que no caso anterior, em contrapartida
feito o backup do Log de transaes entre os backups do Banco de Dados. Poderamos ter a
seguinte estratgia de backup:
1. Backup do Banco de Dados no domingo s 20h.
2. Backup do Log de transaes na segunda-feira s 9:00, 15:00, 18:00 e 21:00 h
3. Backup do log de transaes na tera-feira s 9h, 15h, 18h e 21h.
4. Backup do Log de transaes na quarta-feira s 9h, 15h, 18h e 21h.
5. Backup do Log de transaes na quinta-feira s 9h, 15h, 18h e 21h.
6. Backup do Log de transaes na sexta-feira s 9h, 15h, 18h e 21h.
Servidor
Clientes
Backup somente do Banco de Dados Clientes
Backup dirio s 12h (meio-dia)
Backup de domingo - OK
Backup de segunda-feira - OK
Backup de tera-feira - OK
Backup de quarta-feira - OK
Quinta-feira, s 11h, o Banco de Dados Clientes foi corrompido
por uma falha de operao do DBA.
A que situao podemos restaurar os dados do Banco de Dados
Clientes?
R: Poderemos restaurar o Banco de Dados Clientes ao estado em
que o mesmo encontrava-se na Quarta-feira ao meio-dia.
Todas as alteraes efetuadas entre quarta-feira, aps o meio-dia,
e quinta-feira s 11h, sero perdidas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
226 00CURSO COMPLETO
7. Backup do Log de transaes no sbado s 9h, 15h, 18h e 21h.
8. Backup do Banco de Dados no domingo s 2h.
Agora vamos imaginar que o Banco de Dados seja corrompido na sexta-feira, s 20h. A que situao
podemos restaur-lo?
Poderemos restaur-lo situao do ltimo backup do Log de transaes, que no caso foi feito na
sexta-feira s 18h. Na verdade, conforme veremos mais adiante, possvel, dependendo das condies,
restaurar o Banco de Dados at prximo do horrio em que o mesmo foi corrompido, digamos um
minuto antes do mesmo ter sido corrompido. Neste caso apenas as alteraes feitas por transaes que
ainda no tenham sido completadas (Committed Transactions) sero perdidas.
No prximo item veremos as estratgias para a restaurao do Banco de Dados quando utilizamos backups do Banco de Dados e do Log
de transaes.
Este tipo de abordagem mais complexa do que a anterior, sendo indicada para Bancos de Dados
maiores e que no podem, em hiptese alguma, perder alteraes que tenham sido feitas. A complexidade
aumenta, principalmente, na hora de restaurar os dados. Utilizando o exemplo anterior, em que o
banco de dados corrompeu na sexta-feira, s 20h, teramos que restaurar o backup do Banco de Dados
feito no domingo e todos os Logs de transao feitos neste intervalo. Alm disso, ao restaurarmos os
Logs de transao, os mesmos devem ser restaurados na ordem cronolgica em que foram feitos.
como se estivssemos aplicando novamente todas os comandos que foram executados no Banco de
Dados, uma vez que o Log de transaes um registros dos comandos executados no Banco de Dados,
principalmente comandos que inserem, alteram ou excluem dados.
TIPOS DE BACKUP
Com o SQL Server 2000 podemos ter os seguintes tipos de backup:
Backup completo full backup.
Backup diferencial.
Backup do Log de transaes.
Backup de filegroups.
Backup de arquivos de dados.
Dependendo do tipo de backup a ser utilizado, teremos diferentes estratgias, conforme veremos mais
adiante. Vamos estudar em detalhes cada um destes tipos.
Backup completo full backup: Este tipo faz o backup de todo o Banco de Dados, incluindo
todos os filegroups e arquivos de dados que fazem parte do Banco de Dados. Caso tenhamos
mais de um Banco de Dados, devemos fazer o backup de todos eles. Neste tipo de backup feita
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
227 CURSO COMPLETO00
a cpia de todo o Banco de Dados, independente das alteraes que tenham sido feitas. Para
grandes Bancos de Dados pode no ser vivel a utilizao de backup completo, devido ao
tempo que o mesmo pode demorar, pois a cada backup todo o Banco de Dados copiado para
a mdia de backup (fita, CD, disco rgido, etc.). Este tipo de backup somente aconselhvel
para pequenos Bancos de Dados devido a sua simplicidade.
Backup diferencial: Quando utilizamos o backup diferencial, apenas as informaes que foram
alteradas desde o ltimo backup completo que sero copiadas. O backup diferencial mais
rpido do que o backup completo, pois um nmero menor de informaes (somente as que
foram alteradas) so copiadas. Copiando menos informaes, o backup finalizada mais
rapidamente. Para grandes Bancos de Dados o tempo de backup, chamado de janela de backup,
um fator crtico. Vamos supor que o Banco de Dados somente possa ser retirado do ar para
backup entre 1h e 5h da manh. Neste caso somente teremos 4 horas como janela de backup.
Para restaurar o Banco de Dados, em caso de falha, devemos restaurar o ltimo backup completo,
mais o ltimo backup diferencial e mais os backups do Log de transaes na seqncia correta.
Conforme pode ser visto, o processo de restaurao tambm a torna mais complexo com a
utilizao do backup diferencial. Pode parecer que o backup diferencial somente introduz
complicaes desnecessrias mas, na prtica, em muitas situaes o backup completo
simplesmente no uma opo vivel devido ao tempo disponvel para backup.
Backup do Log de transaes: Este tipo de backup permite que faamos o backup do Log de
transaes do Banco de Dados. Conforme veremos no prximo item, com a utilizao de backup
do log de transaes podemos reduzir a probabilidade de perda de dados.
Backup de filegroups: Com este tipo de backup podemos fazer o backup de todos os arquivos de
dados associados com um filegroup. Apenas para recordar, os arquivos de log so armazenados
separadamente, sendo que os mesmos no fazem parte de nenhum filegroup. Todos os arquivos de
dados so copiados para o backup, independente de terem havido alteraes ou no nos dados.
Backup de arquivos de dados: Com este tipo de backup, podemos copiar apenas um arquivo
especfico, quer seja um arquivo primrio (.mdf) ou arquivo secundrio (.ndf). Uma vez que
podemos fazer o backup de um nico arquivo de dados, evidentemente que tambm possvel
restaurar um nico arquivo de dados.
O backup de filegroup e o backup de arquivo de dados podem ser uma soluo para Bancos de Dados muito grandes, em que at
mesmo um backup diferencial no caberia na janela de tempo do backup.
ALGUNS EXEMPLOS DE ESTRATGIAS DE BACKUP/RESTORE
Vamos ver alguns exemplos tericos de estratgias de backup/restore, onde consideramos os diferentes
tipos de backup: completo, diferencial e do Log de transaes.
1. O backup completo dirio do Banco de Dados: Nesta estratgia fazemos um backup completo do
Banco de Dados diariamente. Vamos considerar a programao de backup descrita na Tabela 5.1.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
228 00CURSO COMPLETO
Tabela 5.1 Backup completo do Banco de Dados.
Hiptese: Na quinta-feira, s 9 horas da manh o Banco de Dados corrompido.
Recuperao do Banco de Dados: Nesta situao somente poderemos restaurar os dados situao em
que os mesmos estavam na quarta-feira, s 23 horas, que foi o horrio do ltimo backup completo.
Todas as alteraes realizadas, entre s 23 horas de quarta-feira e o momento em que o Banco de Dados
foi corrompido, sero perdidas.
Procedimento de restore: Restaurar o ltimo backup completo disponvel, que neste caso o backup
da quarta-feira s 23h.
2. O backup completo combinado com o backup do Log de transaes: Nesta estratgia fazemos
um backup completo do Banco de Dados em perodos mais espaados, digamos uma ou duas
vezes por semana. Entre um backup completo e outro, so feitos backups do Log de transaes.
Vamos considerar a programao de backup descrita na Tabela 5.2.
Tabela 5.2 Backup completo do Banco de Dados mais backup do Log de transaes.
Dia Backup/horrio(s)
Segunda-feira Completo s 23h
Tera-feira Completo s 23h
Quarta-feira Completo s 23h
Quinta-feira Completo s 23h
Sexta-feira Completo s 23h
Sbado Completo s 23h
Domingo Completo s 23h
Hiptese: Na quinta-feira, s 9h30 o Banco de Dados corrompido.
Recuperao do Banco de Dados: Neste situao poderemos restaurar os dados situao em que os
mesmos estavam na quinta-feira, s 9h, que foi o horrio do ltimo backup do Log de transaes.
Dia Backup/horrio(s)
Sbado Completo s 23h
Domingo Backup do log s 9h, 12h, 15h e 18h
Segunda-feira Backup do log s 9h, 12h, 15h e 18h
Tera-feira Backup do log s 9h, 12h, 15h e 18h
Quarta-feira Backup do log s 9h, 12h, 15h e 18h
Quinta-feira Backup do log s 9h, 12h, 15h e 18h
Sexta-feira Backup do log s 9h, 12h, 15h e 18h
Sbado Completo s 23h
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
229 CURSO COMPLETO00
Todas as alteraes realizadas entre s 9h e 9h30 da quinta-feira, e o momento em que o Banco de
Dados foi corrompido, sero perdidas. Na verdade existem algumas tcnicas avanadas que permitem
recuperar os dados at prximo da hora em que o banco foi corrompido. Aprenderemos estas tcnicas
mais adiante, neste captulo.
Procedimento de restore: Restaurar o backup completo do sbado s 23h e todos os backups do Log de
transaes, na seqncia correta, at o backup do Log de transaes da quinta-feira s 9h.
Observe que nesta situao teramos que restaurar 18 backups:
um completo do sbado +
quatro backups do Log do domingo (9h, 12h, 15h e 18h) +
quatro backups do Log da segunda-feira (9h, 12h, 15h e 18h) +
quatro backups do Log da tera-feira (9h, 12h, 15h e 18h) +
quatro backups do Log da quarta-feira (9h, 12h, 15h e 18h) +
um backup do Log da segunda-feira (9h)
Total = 18 backups a serem restaurados.
Conforme podemos conferir pelo exemplo, esta estratgia mais complexa na hora de restaurar o
Banco de Dados, porm temos uma probabilidade menor de perda das alteraes. Em caso de perdas,
as mesmas so em menor nmero do que no caso do backup somente do Banco de Dados.
3. O backup completo combinado com o backup diferencial e com o backup do Log de transaes:
Nesta estratgia fazemos um backup completo do Banco de Dados em perodos mais espaados,
uma ou duas vezes por semana. Entre um backup completo e outro so feitos backups do Log
de transaes e tambm um backup diferencial na quarta-feira. Vamos considerar a programao
de backup descrita na Tabela 5.3.
Tabela 5.3 Utilizando backups completos, diferenciais e do log de transaes.
Dia Backup/horrio(s)
Sbado Completo s 23h
Domingo Backup do log s 9h, 12h, 15h e 18h
Segunda-feira Backup do log s 9h, 12h, 15h e 18h
Tera-feira Backup do log s 9h, 12h, 15h e 18h
Quarta-feira Backup do log s 9h, 12h, 15h e 18h
Backup diferencial s 23h
Quinta-feira Backup do log s 9h, 12h, 15h e 18hh
Sexta-feira Backup do log s 9h, 12h, 15h e 18h
Sbado Diferencial s 23h
Domingo Backup do log s 9h, 12h, 15h e 18h
Segunda-feira Backup do log s 9h, 12h, 15h e 18h
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
230 00CURSO COMPLETO
Observe que somente fizemos um backup completo no incio do ciclo, depois vamos fazendo nas quartas
e sbados backups diferenciais, e entre os backups diferenciais, quatro backups dirios do log de transaes.
Hiptese: Na quinta-feira, s 9h30 o Banco de Dados corrompido.
Recuperao do Banco de Dados: Nesta situao poderemos restaurar os dados situao em que os
mesmos estavam na quinta-feira, s 9h, que foi o horrio do ltimo backup do Log de transaes.
Todas as alteraes realizadas entre as 9h e 9h30 da quinta-feira, e o momento em que o Banco de
Dados foi corrompido, sero perdidas. Na verdade existem algumas tcnicas avanadas que permitem
recuperar os dados at prximo da hora em que o banco foi corrompido. Aprenderemos estas tcnicas
mais adiante, neste captulo.
Procedimento de restore: Restaurar o backup completo do sbado s 23h, depois restaurar o backup
diferencial da quarta feira s 23h e o backup do Log de transaes da quinta-feira s 9h.
Observe que nesta situao teramos que restaurar trs backups:
um completo do sbado +
um diferencial na quarta-feira (23h) +
um backup do Log da quinta-feira (9h)
Total = 3 backups a serem restaurados.
Fica bastante claro que a utilizao do backup diferencial facilita muito o processo de restaurao do Banco
de Dados, que conforme salientado pelo exemplo, diminui o nmero de backups que devam ser restaurados.
Com o SQL Server 2000 podemos efetuar o backup com o Banco de Dados on-line, isto , sendo
utilizado por uma ou mais aplicaes. Porm no poderemos criar ou excluir arquivos de dados
primrios (.mdf) ou secundrios (.ndf) enquanto o backup estiver sendo realizado.
Agora que conhecemos a parte terica a respeito do Log de transaes e dos tipos de backup possveis
no SQL Server 2000, podemos aprender a fazer o backup dos dados e a restaurar os mesmos quando
necessrio. Mas antes, um pouco sobre backup devices.
Estou utilizando um computador que no possui drive de fita instalado, por isso, nos exemplos deste captulo, estarei fazendo o backup
para o disco rgido. Na prtica um servidor com o SQL Server 2000 certamente ter um drive de fita para efetuar o backup, sendo esta
a estratgia recomendada. No recomendado a realizao de backups no disco rgido, pois se o disco rgido for danificado o backup
ser perdido. Fazer o backup no disco rgido anlogo a situao em que as fitas de backup so guardadas na mesma sala do servidor.
Dia Backup/horrio(s)
Tera-feira Backup do log s 9h, 12h, 15h e 18h
Quarta-feira Backup do log s 9h, 12h, 15h e 18h
Backup diferencial s 23h
Quinta-feira Backup do log s 9h, 12h, 15h e 18h
Sexta-feira Backup do log s 9h, 12h, 15h e 18h
Sbado Diferencial s 23h
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
231 CURSO COMPLETO00
O princpio bsico que devemos deixar, fisicamente separados, os dados e as mdias de backup. Se possvel em prdios separados com
as fitas de backup em uma sala-cofre prova de fogo.
KNOW-HOW EM: O CONCEITO BACKUP
DEVICES E CRIAO DE BACKUP DEVICES
PR-REQUISITOS
Noes sobre o Log de transaes.
Noes sobre estratgias de backup.
Fundamentos apresentados na Parte I.
Saber utilizar o Enterprise Manager e o Query Analyzer.
METODOLOGIA
Apresentao terica sobre Backup Devices.
TCNICA
Utilizar o Enterprise Manager e o Query Analyzer para a criao de Backup Devices.
Ao efetuarmos um backup devemos especificar um backup device, onde o backup ser efetuado.
Conforme veremos a seguir, um backup device um conceito que associa um dispositivo fsico de
backup, como um drive de fita ou um volume em um disco rgido, com um backup device. Falando de
uma maneira bastante simples, o backup device um nome que associamos com um dispositivo
fsico de backup, como por exemplo um drive de fita. Depois na hora de fazer o backup, utilizamos o
nome (backup device) ao invs de utilizar o caminho fsico para o dispositivo.
Vamos aprender um pouco mais sobre backup devices.
O QUE SO BACKUP DEVICES?
Com o SQL Server 2000 podemos fazer o backup do Banco de Dados, do Log de transaes ou dos
arquivos de dados para fita ou disco rgido. Para que possamos fazer um backup, devemos criar um
backup device associado ao dispositivo onde ser realizado o backup. Com isso teremos backup de-
vices de disco e backup devices de fita.
Backup devices de disco: Este tipo de device associado com um arquivo no disco rgido. O
arquivo associado com o backup device um arquivo como outro qualquer. Podemos associar
um backup device de disco com um arquivo localizado no disco rgido local ou em um
compartilhamento da rede. O tamanho mximo para este tipo de backup device limitado
apenas pelo espao disponvel em disco.
Ao efetuarmos um backup em uma pasta compartilhada, podemos utilizar a conveno de nomes UNC Universal Naming Convention.
O formato \\nome_do_servidor\nome_do_compartilhamento. A conta com a qual est rodando o servidor SQL deve ter permisso
de escrita (Write) na pasta compartilhada, para que o backup possa ser efetuado com sucesso. Ao efetuarmos um backup atravs da
rede sempre devemos levar em considerao o trfego de rede gerado pelo backup.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
232 00CURSO COMPLETO
Backup devices de fita: So backup devices associados com um drive de fita. O drive de fita deve
estar instalado no servidor SQL Server 2000, onde o backup ser efetuado, isto , no posso
acessar um drive de fita que est em outro servidor. Caso o backup no caiba em uma fita, o SQL
Server 2000 solicita que uma nova fita seja inserida e continua o backup nesta nova fita.
No poderemos efetuar backup para fita se estivermos utilizando o SQL Server 2000 no Windows 98.
DEVICES LGICOS E DEVICES FSICOS
Podemos fazer referncia a um backup device tanto utilizando o seu nome lgico quando o nome
fsico. O nome fsico do backup device o nome utilizado pelo Windows para identificar o backup
device, como por exemplo: C:\sqlbackup\clientes\backup_clientes.bak.
Conforme descrito anteriormente um backup device lgico um nome (apelido do ingls alias)
utilizado para identificar, fazer referncia ao device fsico. A associao entre o device lgico e o device
fsico armazenada na tabela sysdevices do Banco de Dados master, conforme indicado na Figura 5.2.
Figura 5.2 A tabela sysdevices do Banco de Dados master.
Um device criado no servidor\instncia e pode ser utilizado para fazer o backup de qualquer Banco
de Dados do servidor\instncia.
A principal vantagem da utilizao de device backup lgicos a simplicidade; por exemplo, muito
mais fcil fazer referncia a backup_clientes do que a C:\sqlbackup\clientes\backup_clientes.bak.
Ao efetuarmos o backup de um Banco de Dados podemos utilizar tanto o backup device fsico quanto
o backup device lgico. Conforme descrito no pargrafo anterior o backup device lgico facilita e
simplifica a referncia ao dispositivo de backup.
CRIANDO UM BACKUP DEVICE LGICO COM O ENTERPRISE MANAGER
Agora vamos aprender a criar um backup device lgico, com as seguintes caractersticas:
Nome: backup_clientes
Localizao fsica: D:\backups\backup_clientes.bak.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
233 CURSO COMPLETO00
Embora estejamos criando um device chamado backup_clientes, no significa que somente poderemos
fazer o backup do Banco de Dados Clientes, neste device. Conforme descrito anteriormente, um backup
device criado em nvel de servidor\instncia e posso fazer o backup de qualquer Banco de Dados para
o backup device.
Crie a pasta D:\backups ou outra pasta que voc for utilizar para acompanhar este exemplo, antes de criar o device backup. Caso a
pasta ainda no exista ser emitido um aviso na hora da criao do backup device.
Exemplo:
Para criar o backup device backup_clientes, faa o seguinte:
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Man-
agement para expandi-la. Abaixo de Management existe uma opo Backup, a qual utilizaremos
para criar o backup device backup_clientes.
6. D um clique com o boto direito do mouse na opo Backup. No menu de opes que surge,
d um clique na opo New Backup Device. Surge a janela para a criao de um novo backup
device, conforme indicado na Figura 5.3.
Figura 5.3 Criando um novo bakcup device.
7. No campo Name digite: backup_clientes.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
234 00CURSO COMPLETO
8. No campo File Name digite: D:\backups\backup_devices.BAK. Ao invs de digitar o caminho
completo, voc pode utilizar o boto com as reticncias (...) para navegar at a pasta onde deve
ser criado o backup device.
Observe que a opo Tape drive name est desabilitada, pois no servidor que estou utilizando no
existe um drive de fita instalado, conforme descrito anteriormente.
Sua janela deve estar conforme indica a Figura 5.4.
Figura 5.4 Criando o backup device backup_clientes.
9. D um clique no boto OK e pronto; o backup device backup_clientes foi criado e est associado
com D:\backups\backup_clientes.bak.
Para conferir se o device foi criado com sucesso voc pode navegar at a tabela sysdevices do Banco de
Dados master, clicar com o boto direito do mouse na tabela, apontar para Open Table -> Return all
rows... Na Figura 5.5 podemos ver que o dispositivo backup_clientes foi criado com sucesso.
Figura 5.5 Backup device backup_clientes criado com sucesso.
Exerccio 1: Utilizando o Enterprise Manager, crie os seguintes backup devices:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
235 CURSO COMPLETO00
1. Device 1:
Nome: backup_produtos
Localizao fsica: D:\backups\backup_produtos.bak
2. Device 2:
Nome: backup_pedidos
Localizao fsica: C:\backups\backup_pedidos.bak.
Crie a pasta C:\backups ou outra pasta que voc for utilizar para acompanhar este exemplo, antes de criar o device backup. Caso a pasta
ainda no exista ser emitido um aviso na hora da criao do backup device.
Exerccio 2: Aps a criao dos backup devices do Exerccio 1, abra a tabela sysdevices do Banco de
Dados master para conferir se os backup devices foram realmente criados.
Estaremos utilizando estes backup devices mais adiante neste captulo, quando aprendermos a fazer o backup do Banco de Dados e do
Log de transaes.
CRIANDO UM BACKUP DEVICE LGICO COM O QUERY ANALYZER
Para criarmos um backup device utilizamos o comando sp_addumpdevice no Query Analyzer. Na
verdade, este um Stored Procedure que faz parte do Banco de Dados master. Conforme descrevemos
anteriormente, existe uma srie de Stored Procedures no banco master, as quais so utilizadas para
vrias tarefas administrativas no SQL Server 2000, como por exemplo, criar um backup device. A
seguir, temos a sintaxe deste comando, conforme descrito no Books Online:
Sintaxe completa Books OnLine Transact SQL Reference:
exec sp_addumpdevice [ @devtype = ] device_type ,
[ @logicalname = ] logical_name ,
[ @physicalname = ] physical_name
[ , { [ @cntrltype = ] controller_type
| [ @devstatus = ] device_status
}
]
Este formato genrico no muito intuitivo, ou melhor, no nada intuitivo. A seguir apresento uma
sintaxe simplificada, somente com as principais opes para criar uma tabela com alguns campos.
Sintaxe simplificada:
exec sp_addumpdevice tipo: disk ou tape, nome_lgico, caminho fsico
Um exemplo simples que cria um backup device no disco:
USE master
exec sp_addumpdevice disk, backup_geral, C:\backups\geral.bak
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
236 00CURSO COMPLETO
Observe que antes de utilizarmos o comando sp_addumpdevice tornamos o Banco de Dados master o banco atual. Isto necessrio
porque as informaes sobre os backups device so armazenadas na tabela sysdevices do Banco de Dados master.
Agora um exemplo que cria um device associado ao compartilhamento backups no servidor server05:
USE master
exec sp_addumpdevice disk, backup_rede, \\server05\backups\rede.bak
Mais um exemplo simples que cria um backup device associado ao drive de fita:
USE master
exec sp_addumpdevice tape, fita_srv01, \\.\tape0
\\.\tape0 uma referncia ao drive de fita.
Agora vamos utilizar o Query Analyzer para criar um backup device lgico, com as seguintes
caractersticas:
Nome: backup_Exemplo1
Localizao fsica: D:\backups\backup_exemplo1.bak.
Este dispositivo ser utilizado, mais adiante, para fazer um backup do Banco de Dados Exemplo 1 que criamos no Captulo 3.
Exemplo:
Para criar o backup device backup_exemplo1, faa o seguinte:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo selecione Windows Authentication e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo.
3. Ser aberto o Query Analyzer com o Banco de Dados master como sendo o Banco de Dados atual.
4. Para criar o backup device backup_exemplo1, digite o seguinte comando:
exec sp_addumpdevice disk, backup_exemplo1, D:\backups\exemplo1.bak
5. Pressione Ctrl+E para executar o comando.
O comando executado com sucesso e a seguinte mensagem exibida:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
237 CURSO COMPLETO00
(1 row(s) affected)
Disk device added.
Caso voc especifique o nome de um backup device que j existe, voc receber a seguinte mensagem
de erro:
Server: Msg 15061, Level 16, State 1, Procedure sp_addumpdevice, Line 69
Add device request denied. A physical device named D:\backupss\exemplo1.bak already exists.
7. Mantenha o Query Analyzer aberto.
O comando sp_addumpdevice no pode ser executado no contexto de uma transao.
Falaremos sobre segurana no Captulo 6, mas cabe ressaltar que somente usurios que forem membros
das roles sysadmin e diskadmin tero permisses para executar o comando sp_addumpdevice. No Captulo
6 veremos que roles so semelhantes a grupos de usurios no Windows NT e no Windows 2000.
EXCLUINDO BACKUP DEVICES
Quando no for mais necessrio, um backup device pode ser excludo. Podemos excluir um backup
device com o Enterprise Manager ou com o comando sp_dropdevice.
Para excluir um backup device utilizando o Enterprise Manager faa o seguinte:
1. Abra o Enterprise Manager.
2. Navegue ate a opo Management, d um clique no sinal de mais ao lado de Management para
expandir esta opo.
3. Clique na opo Backup que est abaixo de Management.
4. No painel da direita clique com o boto direito do mouse no backup device a ser excludo.
5. No menu que surge d um clique em excluir. Surge uma janela pedindo confirmao.
6. D um clique em Sim e o backup device ser excludo.
Para excluir um backup device no Query Analyzer, utilizamos o comando sp_dropdevice. O exemplo a
seguir exclui o backup device chamado teste:
exec sp_dropdevice teste, DELFILE
Por padro, o arquivo fsico associado ao device no excludo ao utilizarmos o comando sp_dropdevice. Para excluir inclusive o
arquivo fsico devemos utilizar o parmetro DELFILE como segundo parmetro para o comando sp_dropdevice.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
238 00CURSO COMPLETO
Exerccio 3: Utilizando o comando sp_addumpdevice, crie os seguintes backup devices:
1. Device 1:
Tipo: Disk
Nome: backup_northwind
Localizao fsica: D:\backups\backup_northwind.bak.
2. Device 2:
Tipo: Disk
Nome: backup_master
Localizao fsica: D:\backups\master.bak.
3. Device 3:
Tipo: Disk
Nome: master_diferencial
Localizao fsica: D:\backups\master_diferencial.bak.
importante que voc complete este exerccio pois estaremos utilizando estes backup devices no prximo item.
Como estamos criando diversos backup devices, pode ficar a impresso que para cada backup devemos ter um diferente backup device
associado. Porm na prtica podemos efetuar diversos backups no mesmo backup device. Poderamos ter um nico backup device
associado com um drive de fita e efetuarmos o backup de todos os Bancos de Dados neste device. Conforme veremos no prximo item,
na hora de fazer o backup podemos definir se o backup que est sendo feito deve ser anexado aos backups j existentes no device
backup ou se os backups j existentes devem ser excludos.
KNOW-HOW EM: FAZER O BACKUP DAS INFORMAES
PR-REQUISITOS
Noes sobre estratgias de backup.
Fundamentos apresentados na Parte I.
Saber utilizar o Enterprise Manager e o Query Analyzer.
METODOLOGIA
Exerccios: Fazer o backup de Bancos de Dados.
TCNICA
Apresentao dos procedimentos necessrios para a realizao do backup com o Enterprise Manager e com o Query Analyzer.
Podemos fazer o backup utilizando qualquer uma das seguintes ferramentas:
Enterprise Manager
Create Database Backup Wizard
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
239 CURSO COMPLETO00
Query Analyzer
FAZENDO O BACKUP COM O ENTERPRISE MANAGER
Para aprender a fazer o backup com o Enterprise Manager vamos comear fazendo um backup completo
do Banco de Dados Northwind. Faremos o backup no backup device backup_northwind que voc
criou no Exerccio 3.
Exemplo:
Para criar um backup completo do Banco de Dados Northwind faa o seguinte:
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para expandi-la. Abaixo de Databases surge uma lista com os bancos de dados da instncia
SERVIDOR\SRVINST01.
6. D um clique com o boto direito do mouse no Banco de Dados Northwind, e no menu de
opes que surge selecione Todas as tarefas -> Backup Database...
Surge a janela para a definio do backup a ser criado, conforme indicado na Figura 5.6.
Observe que as opes de backup Transaction Log e File and filegroup esto desabilitadas. Isto acontece porque o Banco de Dados
Northwind tem a opo Truncate Log On checkpoint ativada. Quando esta opo est ativada no possvel fazer o backup do Log de
transaes e backup de File ou filegroup. Para definir as opes de um Banco de Dados podemos utilizar j clusula SET do comando
ALTER DATABASE ou o stored procedure sp_dboption, conforme veremos mais adiante.
Na guia Geral podemos definir as seguintes opes:
Database: Nesta lista selecionamos o nome do Banco de Dados para o qual ser feito o backup.
No nosso exemplo certifique-se de que Northwind est selecionado nesta lista.
Name: Um nome resumido para o backup.
Description: Uma descrio mais detalhada sobre o backup que est sendo criado.
Database complete: Define que ser feito um backup completo do Banco de Dados.
Database diferencial: Define que ser feito um backup diferencial do Banco de Dados.
Transaction log: Faz um backup do Log de transaes.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
240 00CURSO COMPLETO
Figura 5.6 Janela para definio do backup.
Somente um dos quatro tipos de backup pode ser selecionado. Se quisermos fazer um backup completo e um backup do Log de
transaes, teremos que executar o backup duas vezes.
File and filegroup: Faz o backup de um arquivo ou filegroup especfico.
Destination -> Backup to: Nesta opo devemos selecionar um ou mais backup devices os
quais utilizaremos para o backup.
7. Para selecionar um novo device clique no boto Add, que ir surgir a janela indicada na Figura 5.7.
Figura 5.7 Selecionando backup devices.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
241 CURSO COMPLETO00
Observe que nesta janela podemos selecionar um backup device fsico (File name), isto , diretamente
o nome do arquivo em disco ou um backup device lgico (Backup device), quando selecionamos um
backup device previamente criado.
8. D um clique na opo Backup device, e na lista de backup devices previamente criados, selecione
backup_northwind.
Caso voc tenha recm criado os backup devices do item anterior, pode ser que nem todos apaream na listagem de backup devices
disponveis. Se este for o seu caso, fecho o Enterprise Manager e abra-o novamente, com isso a listagem ser atualizada.
9. Basta dar um clique em OK e pronto; voc estar de volta janela de backup com o backup
device backup_northwind adicionado, conforme indicado na Figura 5.8.
Figura 5.8 O backup device backup_northwind j adicionado.
De volta guia Geral, ainda temos:
Append to media: Esta opo define que o backup que est sendo criado deve ser anexado a
quaisquer outros backups que j existam no backup device selecionado. Certifique-se de que
esta opo est selecionada.
Overwrite existing media: Esta opo elimina quaisquer backups que j tenham sido criados
no backup device selecionado.
Schedule: Est opo permite que seja feito um agendamento para o backup.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
242 00CURSO COMPLETO
As principais opes da guia Options so as seguintes:
Verify backup upon completion: Define que a integridade da mdia de backup deve ser verificada
aps o trmino do backup.
Eject tape after backup: Aps o trmino do backup a fita ser ejetada, para o caso de backup em
fita. No nosso exemplo esta opo est desabilitada pois no temos um drive de fita instalado
no servidor.
Remove inactive entries from transaction log: Aps o trmino do backup todas as transaes
completas (Committed Transactions) sero excludas do log. No nosso exemplo esta opo
est desabilitada pois no estamos fazendo um backup do Log de transaes.
Check media set name and backup set expiration: Esta opo evita que um backup que ainda
no expirou seja sobrescrito pelo backup que est sendo realizado.
Backup set will expire: Podemos definir que o conjunto de backup expira em tantos dias ou em
uma data definida. Uma vez expirado um conjunto de backup, o mesmo pode ser sobrescrito.
10. No altere as opes da guia Options. D um clique em OK e o backup ser inicializado e
surge uma janela indicando o progresso do backup.
Aps finalizar o backup, o SQL Server 2000 emite uma mensagem avisando que o backup foi finalizado
com sucesso
11. Voc estar de volta ao Enterprise Manager.
Podemos conferir que o backup realmente foi feito, acessando a pasta D:\backups. Nesta pasta podemos
verificar que o arquivo backup_northwind.bak possui o tamanho de cerca de 3,2 MB, conforme indicado
na Figura 5.9.
Figura 5.9 Arquivo backup_northwind.bak com cerca de 3,2 MB.
FAZENDO O BACKUP COM O ASSISTENTE DE BACKUP
Agora vamos fazer algumas alteraes no Banco de Dados Northwind. Aps as alteraes faremos um
backup diferencial do Banco de Dados. Este backup diferencial ir conter apenas as alteraes que
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
243 CURSO COMPLETO00
foram feitas desde o ltimo backup completo. Vamos fazer o backup diferencial tambm no device
backup_northwind, apenas com o cuidado de selecionarmos a opo Append to media para que o
backup completo feito anteriormente no seja eliminado.
Exemplo:
Neste exemplo vamos fazer algumas alteraes no Banco de Dados Northwind. Faremos as alteraes
utilizando comandos T-SQL. Iremos aumentar em 20% o valor do campo UnitPrice (preo unitrio)
das tabelas Order Details e Products. Em seguida faremos um backup diferencial do Banco de Dados
Northwind. Faremos o backup diferencial utilizando o Assistente de backup.
Procedimento 1 -> Para fazer alteraes no Banco de Dados Northwind:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo. Ser aberto o Query Analyzer com
o master como sendo o Banco de Dados atual.
3. Para fazer as alteraes propostas na tabela Order Details digite o seguinte comando:
use Northwind
UPDATE [Order Details]
SET UnitPrice = UnitPrice*1.2
4. Pressione Ctrl+E para executar o comando. O comando executado com sucesso e a seguinte
mensagem exibida:
(2155 row(s) affected)
Esta mensagem indica que os 2.155 registros da tabela Order Details foram atualizados.
5. Para fazer as alteraes propostas na tabela Products, digite o seguinte comando:
use Northwind
UPDATE Products
SET UnitPrice = UnitPrice*1.2
6. Pressione Ctrl+E para executar o comando. O comando executado com sucesso e a seguinte
mensagem exibida:
(77 row(s) affected)
Esta mensagem indica que os 77 registros da tabela Products foram atualizados.
Procedimento 2 -> Para fazer o backup diferencial do Banco de Dados Northwind, utilizando o Assistente
de backup:
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
244 00CURSO COMPLETO
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para expandi-la. Abaixo de Databases surge uma lista com os Bancos de Dados da instncia
SERVIDOR\SRVINST01.
6. D um clique com o boto esquerdo do mouse no Banco de Dados Northwind para selecion-lo.
7. Selecione o comando Tools - > Wizards.
8. Na janela Select Wizard que surge, d um clique no sinal de mais ao lado de Management.
9. Nas opes que so exibidas, d um clique na opo Backup Wizard, para selecion-la.
10. D um clique no boto OK.
11. Ser apresentada a tela inicial do assistente de backup. D um clique no boto Avanar (Next),
seguindo para a prxima etapa do assistente.
12. Na segunda etapa devemos selecionar o Banco de Dados. Certifique-se de que Northwind est
selecionado, conforme indicado na Figura 5.10.
Figura 5.10 Selecionando o Banco de Dados.
13. D um clique no boto Avanar (Next), para ir para a etapa seguinte do assistente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
245 CURSO COMPLETO00
14. Na terceira etapa devemos digitar o nome e a descrio do backup. Digite as informaes
indicadas na Figura 5.11 e d um clique no boto Avanar (Next), seguindo para a prxima
etapa do assistente.
Figura 5.11 Nome e descrio do backup.
15. Na quarta etapa do assistente podemos escolher o tipo de backup que ser feito. No nosso
exemplo selecione Diferencial e d um clique no boto Avanar (Next).
16. Na tela seguinte devemos definir o backup device que ser utilizado e se devemos anexar ao
device existente ou excluir os backups existentes. No nosso caso vamos selecionar
backup_northwind na lista Backup device e vamos manter selecionada a opo Append to the
backup media, conforme indicado na Figura 5.12. D um clique no boto Avanar (Next), indo
para a sexta etapa do assistente.
17. Nesta etapa do assistente poderemos definir, dentre outras opes, um agendamento para o
backup. No vamos alterar as opes desta etapa. Clique no boto Avanar (Next).
18. Ser exibida a tela final do assistente, onde apresentado um resumo das opes selecionadas.
Caso voc queira alterar alguma opo s utilizar o boto Voltar (Back).
19. D um clique em Concluir e pronto. Uma janela com a progresso do backup exibida e, no
final, uma menagem avisando que o backup foi completado com sucesso. D um clique no
boto OK para fechar esta mensagem.
20. E pronto, o backup diferencial do Banco de Dados Northwind foi realizado com sucesso.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
246 00CURSO COMPLETO
Figura 5.12 Selecionando o backup device.
Podemos conferir se o backup realmente foi feito, acessando a pasta D:\backups. Nesta pasta podemos
verificar que o arquivo backup_northwind.bak possui o tamanho de cerca de 3,8 MB, conforme indicado
na Figura 5.13.
Figura 5.13 Arquivo backup_northwind.bak com cerca de 3,8 MB.
Observe que a diferena entre o tamanho atual (3,8 MB) e o tamanho anterior (3,2 MB) quando tnhamos
somente o backup completo de cerca de 600 KB. Esta diferena devido ao backup diferencial e
comprova que somente os dados alterados foram copiados para o backup, pois caso contrrio, se todos
os dados tivessem sido copiados, o tamanho teria dobrado, ou seja, teria passado de 3,2 MB para 6,4
MB. Isto comprova que o backup diferencial faz a cpia apenas dos dados que sofreram alteraes
desde o ltimo backup completo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
247 CURSO COMPLETO00
FAZENDO O BACKUP DO LOG DE TRANSAES E CRIANDO UM AGENDAMENTO PARA O BACKUP
Agora vamos aprender a criar um backup do Log de transaes e agendar o backup para que seja feito
trs vezes ao dia, em horrios determinados. No nosso exemplo vamos fazer o backup do Banco de
Dados Exemplo1. O backup ser feito no backup device backup_exemplo1 criado anteriormente. Para
criar o backup e o agendamento utilizaremos o Enterprise Manager.
Exemplo:
Fazer o backup do Log de transaes do Banco de Dados Exemplo1. Agendar este backup para que o
mesmo seja realizado todos os dias, s 9h, 12h, 15h e 18h.
Para criar o backup e o agendamento do exemplo, faa o seguinte:
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem, abaixo desta instncia, clique no sinal de mais ao lado da opo
Databases para expandi-la. Abaixo de Databases surge uma lista com os Bancos de Dados da
instncia SERVIDOR\SRVINST01.
6. D um clique com o boto direito do mouse no Banco de Dados Exemplo1. No menu de
opes que surge, selecione o comando Todas as tarefas -> Backup Database. Na lista Database
certifique-se de que Exemplo1 est selecionada.
7. Para o campo Name digite LogExemplo1, e para o campo Description, digite Backup do Log de
transaes.
8. Para tipo de backup clique em Transaction log.
Agora vamos selecionar o device backup_exemplo1, no qual faremos o backup do Log de transaes.
9. D um clique no boto Add.
10. Na janela Select Backup Destination, clique na opo Backup device e na lista de backup de-
vices selecione backup_exemplo1.
11. D um clique no boto OK para fechar a janela Select Backup Destination.
12. Voc estar de volta janela para definio do backup. Certifique-se de que a opo Append to
media esteja selecionada. Sua janela deve estar conforme indicado na Figura 5.14.
Agora vamos definir o agendamento do backup.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
248 00CURSO COMPLETO
Figura 5.15 A janela para definio do agendamento (Schedule).
Figura 5.14 Definies do backup do Log de transaes.
13. Clique na opo Schedule. Observe que o boto com as reticncias (...) foi habilitado. D um
clique neste boto para configurar o agendamento.
14. Surge a janela Edit Schedule, conforme indicado na Figura 5.15.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
249 CURSO COMPLETO00
Nesta janela podemos definir os seguintes tipos de agendamento:
Start automatically when SQL Server Agent starts: Esta opo agenda o backup para ser feito
toda vez que o servio SQL Server Agent for inicializado.
Start whenever the CPU(s) become idle: Esta opo agenda o backup para ser executado toda
vez que a(s) CPU(s) do servidor estiverem ociosas. O tempo de inatividade para definir se a
CPU est ociosa definido na guia Advanced das propriedades do SQL Server Agent, conforme
indicado na Figura 5.16.
Figura 5.16 Configuraes de inatividade da CPU.
One Time: Executa o backup uma nica vez em uma data e horrio especificados.
Recurring: Agenda o backup para ser executado periodicamente. o nosso caso, onde
queremos que o backup seja executado diariamente, s 9h, 12h, 15h e 18h.
15. Selecione a opo Recurring e d um clique no boto Change para definir o agendamento do backup.
Surge a janela Edit Recurring Job Schedule, na qual podemos definir o agendamento desejado.
16. Defina as opes conforme indicado na Figura 5.17.
17. Observe que selecionamos a opo Daily (dirio), ocorrendo a cada 3 horas com incio s 9h e
trmino s 18h. Isto faz com que o backup seja executado exatamente quatro vezes, s 9:00,
12h, 15h e 18h, que exatamente a programao desejada para o nosso exemplo.
18. D um clique no boto OK. Voc estar de volta a janela Edit Schedule. Digite o nome
AgendLogExemplo1 no campo Name, e clique em OK para criar o agendamento.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
250 00CURSO COMPLETO
Figura 5.17 Agendamento do backup.
19. Voc estar de volta janela para definio do backup. D um clique na guia Options. Certifique-
se de que a opo Remove inactive entries from transaction log, esteja selecionada. Esta
opo faz com que as transaes que foram completadas com sucesso, sejam excludas do Log
de transaes aps o backup ter sido efetuado. Esta opo evita que o Log de transaes cresa
indefinidamente.
Com isso o agendamento para o backup do log de transaes ter sido criado.
O agendamento de uma tarefa de backup como se fosse o agendamento de qualquer outra tarefa do
SQL Server 2000. Quando criamos uma tarefa agendada, na linguagem do SQL Server 2000, estamos
criando um Job. No nosso exemplo, demos o nome de LogExemplo1 para a tarefa, ou melhor, para o
Job que executa o backup do Log de transaes. Podemos conferir se este Job foi realmente criado,
expandindo a opo Management, abaixo de Management expanda a opo SQL Server Agent. Abaixo
de SQL Server Agent, d um clique em Jobs. No painel da direita deve ser exibido o Job LogExemplo1,
conforme indicado na Figura 5.18.
Figura 5.18 O Job LogExemplo1.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
251 CURSO COMPLETO00
Podemos fazer com que um Job seja executado a qualquer momento. Para isso basta clicar com o boto
direito no Job a ser executado, e no menu que surge clicar em Start Job. Se fizermos isso com o Job LogExemplo1,
o mesmo ser executado e o backup do Log de transaes do Banco de Dados Exemplo1, ser feito.
Veremos mais sobre o agendamento de tarefas, ou melhor, a criao de jobs, na parte final deste captulo.
20. Agora o nosso backup est agendado e ir rodar diariamente, nos horrios por ns definidos.
21. Feche o Enterprise Manager.
Agora vamos aprender a fazer backup utilizando comandos T-SQL no Query Analyzer.
FAZENDO O BACKUP COM O QUERY ANALYZER
Utilizando comandos T-SQL podemos fazer o backup completo, backup diferencial, backup de um
arquivo ou filegroup e o backup do Log de transaes. Atravs de comandos podemos, inclusive, criar
o agendamento de um backup.
Fazendo o backup do Banco de Dados:
Para fazer o backup de um Banco de Dados utilizamos o comando BACKUP DATABASE. A seguir a
sintaxe completa deste comando, conforme apresentada no Books OnLine.
Sintaxe do comando BACKUP DATABASE:
BACKUP DATABASE { database_name | @database_name_var }
TO < backup_device > [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { text | @text_variable } ]
[ [ , ] DIFFERENTIAL ]
[ [ , ] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { text | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
Conforme j descrevemos anteriormente, a sintaxe completa no muito intuitiva. Vamos aprender a
utilizar o comando BACKUP DATABASE atravs de exemplos.
Exemplo1: Criar um backup device chamado bknw, o qual associado com o arquivo D:\backups\bknw.
Depois fazer o backup completo do Banco de Dados Northwind para o backup device bknw. Para fazer
o backup proposto utilizamos os seguinte comando:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
252 00CURSO COMPLETO
Primeiro criamos o backup device bknw
Lembre-se de tornar o Banco de Dados master o Banco de Dados atual
pois os backup devices so criados sendo o banco master o Banco de Dados atual.
USE master
EXEC sp_addumpdevice disk, bknw, D:\backups\bknw.bak
BACKUP DATABASE northwind TO bknw
Ao executar estes comandos, com sucesso, no Query Analyzer ser emitida a seguinte mensagem:
(1 row(s) affected)
Disk device added.
Processed 392 pages for database northwind, file Northwind on file 1.
Processed 1 pages for database northwind, file Northwind_log on file 1.
BACKUP DATABASE successfully processed 393 pages in 3.141 seconds (1.022 MB/sec).
Observe que, conforme descrito anteriormente, o backup completo de um Banco de Dados, faz o
backup dos arquivos de dados e tambm dos arquivos de log.
Uma sintaxe mais simplificada para o comando BACKUP DATABASE:
BACKUP DATABASE nome_banco_dados
TO nome_backup_device1, nome_backup_device2,..., nome_backup_devicen
[WITH OPTIONS]
Observe que podemos fazer o backup de um Banco de Dados para mais do que um backup device ao
mesmo tempo. Este procedimento pode ser utilizado para agilizar o backup. Para fazermos o backup
para mltiplos volumes devemos criar uma Media Set, ou seja, um conjunto de mdias. O caso mais
tpico quando temos duas ou mais unidades de fita ligadas a um servidor. Neste caso podemos criar
uma Media Set com as unidades disponveis e fazer o backup, simultaneamente, para todas as unidades.
Desta maneira, o tempo de backup (janela de backup) pode ser reduzido. Para maiores informaes
sobre a utilizao de mltiplos devices, consulte Using Media Sets and Families no Books OnLine.
Agora vamos descrever as principais opes que podem ser utilizadas com o comando BACKUP DATA-
BASE. Estas opes so especificadas no final do comando, com a clusula WITH. Caso mais do que
uma opo esteja sendo utilizada, devemos separ-las por vrgulas.
As opes INIT e NOINIT: Ao fazermos um backup temos a opo de excluir os backups j
existentes no backup device, ou manter os backups existentes e apenas anexar o que est
sendo feito.
A opo NOINIT a opo padro e faz com que o backup seja anexado ao backup device, mantendo
os backups feitos anteriormente. Se selecionarmos a opo INIT, o SQL Server 2000 ir gravar o backup
que est sendo feito na parte inicial do backup device, eliminando os backups anteriores. Se existirem
backups no backup device que foram feitos com a opo EXPIREDATE, e estes backups ainda no
tiverem expirado, a utilizao da opo INIT ir causar um erro. Utilizamos a opo EXPIREDATE para
garantir que um determinado backup seja mantido por um perodo mnimo. A seguir um exemplo de
utilizao destas opes.
Vamos fazer um backup do Banco de Dados Northwind para um device chamado device_exemplo. Vamos
fazer o backup utilizando a opo EXPIREDATE. Depois vamos fazer um novo backup, para o device
device_exemplo tentando utilizar a opo INIT e vamos observar a mensagem de erro que exibida.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
253 CURSO COMPLETO00
Abra o Query Analyzer e execute os seguintes comandos:
Tornar o Banco de Dados master o banco atual
USE master
Criar o backup device device_exemplo
EXEC sp_addumpdevice disk, device_exemplo, D:\backups\device_exemplo.bak
Fazer o backup do banco de dados Northwind
com a opo EXPIREDATE
BACKUP DATABASE northwind TO device_exemplo
WITH EXPIREDATE = 20010315
Fazer um backup com a opo INIT, sendo que o backup anterior
Somente expira em 15 de maro de 2001, conforme definido anteriormente
pela opo WITH EXPIREDATE = 20010315
BACKUP DATABASE northwind TO device_exemplo
WITH INIT
Ser emitida a seguinte mensagem de erro:
Server: Msg 4030, Level 16, State 1, Line 1
The medium on device device_exemplo expires on Mar 15 2001 12:00:00:000AM
and cannot be overwritten.
Server: Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.
Observe que a mensagem informa que o backup somente ir expirar em 15 de maro e no poder ser
sobrescrito: The medium on device device_exemplo expires on Mar 15 2001 12:00:00:000AM and
cannot be overwritten.
A opo RESTART: Utilizamos esta opo para que o SQL Server 2000 reinicialize um backup
que tenha sido interrompido, exatamente do ponto onde o mesmo parou. Esta opo poupa
tempo, uma vez que o backup no precisa ser reinicializado desde o incio. Para reinicializar
um backup, basta repetir o comando que foi utilizado para fazer o backup, e acrescentar WITH
RESTART no final do comando.
A opo DIFFERENTIAL: Esta opo define que seja feito um backup diferencial. O comando, a
seguir, faz um backup diferencial do Banco de Dados Northwind para o backup device
device_exemplo, criado no exemplo anterior:
BACKUP DATABASE northwind TO device_exemplo
WITH DIFFERENTIAL
A opo PASSWORD: Esta opo permite que seja definida uma senha para o backup. Ao fazermos
um restore deste backup teremos que fornecer a senha, caso contrrio a operao de restore
ser cancelada. O exemplo a seguir, faz o backup do Banco de Dados pubs para o backup device
device_exemplo e especifica uma senha.
BACKUP DATABASE pubs TO device_exemplo
WITH PASSWORD = senha123
A Opo NAME: Esta opo permite que seja definido um nome para o backup. Se o nome no
for especificado, o mesmo ser assumido como uma String em branco.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
254 00CURSO COMPLETO
Estas so as principais opes disponveis para o comando BACKUP DATABASE. Para uma descrio completa
de todas as opes disponveis, consulte BACKUP no tpico Transact-SQL Reference no Books OnLine.
Fazendo o backup do Log de transaes:
Para fazer o backup do Log de transaes, utilizamos o comando BACKUP LOG. A seguir, a sintaxe
completa deste comando, conforme apresentada no Books OnLine.
Sintaxe do comando BACKUP LOG:
BACKUP LOG { database_name | @database_name_var }
{
TO < backup_device > [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { text | @text_variable } ]
[ [ ,] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { text | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] NO_TRUNCATE ]
[ [ , ] { NORECOVERY | STANDBY = undo_file_name } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
}
Conforme j descrevemos anteriormente, a sintaxe completa no muito intuitiva. Vamos aprender a
utilizar o comando BACKUP LOG atravs de exemplos.
Exemplo1: Criar um backup device chamado bklog, o qual associado com o arquivo D:\backups\bklog.
Depois, fazer o backup do Log de transaes do Banco de Dados Exemplo1 para o backup device bklog.
Para fazer o backup proposto utilizamos os seguinte comando:
Primeiro criamos o backup device bklog
Lembre-se de tornar o Banco de Dados master o Banco de Dados atual
pois os backup devices so criados sendo o master o Banco de Dados atual.
USE master
EXEC sp_addumpdevice disk, bklog, D:\backups\bklog.bak
BACKUP LOG Exemplo1 TO bklog
Uma sintaxe mais simplificada para o comando BACKUP DATABASE:
BACKUP LOG nome_banco_dados
TO nome_backup_device1, nome_backup_device2,..., nome_backup_devicen
[WITH OPTIONS]
As principais opes para o comando BACKUP LOG so praticamente as mesmas opes que para o
comando BACKUP DATABASE. Temos duas opes que so especficas para o backup do Log de transaes:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
255 CURSO COMPLETO00
A opo NO_LOG ou TRUNCATE_ONLY: Estas duas opes so sinnimos. Ao utilizarmos esta
opo no ser feito o backup do log, e o log ser truncado, isto , todas as transaes que
sofreram Commit sero excludas do log. Como no feito o backup do log, no precisamos
especificar o backup device a ser utilizado.
A opo NO_TRUNCATE: utilizada para fazer o backup do log sem que as transaes completas
sejam excludas do log aps o backup. Esta opo utilizada para situaes em que o Banco de
Dados foi danificado e queremos restaur-lo a uma situao imediatamente anterior ao momento
em que o banco foi corrompido. Utilizaremos esta opo no prximo item, quando
aprenderemos a fazer o restore do Banco de Dados.
UM EXEMPLO MAIS COMPLETO
Vamos fazer um exemplo completo em que utilizaremos diversas opes apresentadas anteriormente.
Exemplo: Criar uma seqncia de comandos T-SQL que faa o seguinte:
1. Crie um device chamado device_real.
2. Faa o backup completo do Banco de Dados Exemplo1, com data de expirao definida para 31
de Dezembro de 2001, o qual ir anexar o backup aos j existentes no device device_real.
3. Fazer o backup do Log de transaes do Banco de Dados Exemplo1.
O nosso comando deve ficar da seguinte maneira:
********************************************
********** Script T-SQL de exemplo ****
********** Autor: Jlio Battisti ****
********** e-mail: juliobattisti@hotmail.com ****
********************************************
Tornar o Banco de Dados master o Banco de Dados atual
USE master
Criar o device device_real
EXEC sp_addumpdevice disk, device_real, D:\backups\device_real.bak
Backup completo do Banco de Dados pubs com data
de expirao para 31 de dezembro de 2001.
BACKUP DATABASE Exemplo1 TO device_real
WITH EXPIREDATE = 20011231, NOINIT
Agora fao o backup do log do Banco de Dados pubs.
BACKUP LOG Exemplo1 TO device_real
********************************************
********************************************
Ao executarmos este comando, com sucesso, ser emitida a seguinte mensagem:
(1 row(s) affected)
Disk device added.
Processed 112 pages for database Exemplo1, file exemplo1-prim on file 1.
Processed 16 pages for database Exemplo1, file exemplo1-sec1 on file 1.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
256 00CURSO COMPLETO
Processed 1 pages for database Exemplo1, file exemplo1-log on file 1.
BACKUP DATABASE successfully processed 129 pages in 1.304 seconds (0.806 MB/sec).
Processed 1 pages for database Exemplo1, file exemplo1-log on file 2.
BACKUP LOG successfully processed 1 pages in 0.508 seconds (0.011 MB/sec).
KNOW-HOW EM: FAZER O RESTORE DAS INFORMAES
PR-REQUISITOS
Noes sobre estratgias de backup.
Fundamentos apresentados na Parte I.
Saber utilizar o Enterprise Manager e o Query Analyzer.
METODOLOGIA
Exerccios: Fazer o restore de Bancos de Dados e do log de transaes.
TCNICA
Apresentao dos procedimentos necessrios para a realizao do restore, com o Enterprise Manager e com o Query Analyzer.
Ao fazermos o backup estamos copiando os dados do Banco de Dados para um dispositivo de backup
(backup device), que na maioria dos casos um drive de fita. Mas o nico objetivo para fazermos o
backup para que possamos restaurar os dados quando algum problema acontecer. Restaurar os dados
(fazer o restore) a operao de copiar os dados do backup de volta para o Banco de Dados. A maneira
de restaurar o Banco de Dados ao seu estado normal, depende da nossa estratgia de backup. As estratgias
de restore so diferentes, dependendo de estarmos fazendo backups completos, diferenciais ou
combinando estes backups com backups do Log de transaes.
No item Estratgias de backup, falamos sobre as diversas estratgias de backup/restore, dependendo do tipo de backup que estamos
utilizando. Foram analisados diversos exemplos. No item anterior aprendemos a fazer os diversos tipos de backup disponveis no SQL
Server 2000. Agora aprenderemos a fazer o restore.
Nesta seo aprenderemos a fazer o restore utilizando as seguintes ferramentas:
Enterprise Manager
Query Analyzer
Dependendo do tipo de backup teremos diferentes estratgias de restore. Vamos considerar as seguintes situaes:
Restore a partir de um backup completo: Para esta situao basta restaurar o ltimo backup
completo disponvel. Todas as alteraes entre o ltimo backup completo e o momento do
restore sero perdidas.
Restore a partir de um backup completo e backups diferenciais: Neste caso restauramos o ltimo
backup completo e em seguida o ltimo backup diferencial. Todas as alteraes entre o ltimo
backup diferencial e o momento do restore sero perdidas.
Restore a partir de um backup completo e backups do Log de transaes: Quando temos backups
do log de transaes, devemos restaurar o ltimo backup completo e depois todos os backups do
log de transaes. de fundamental importncia que os backups do Log de transaes sejam
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
257 CURSO COMPLETO00
restaurados na ordem correta, do mais antigo at o mais recente. As alteraes entre o ltimo
backup do Log de transaes e o momento do restore sero perdidas. Esta estratgia torna o
restore mais demorado, pois precisamos restaurar uma srie de backups do Log de transaes.
Restore a partir de um backup completo, backups diferenciais e backups do Log de transaes:
Neste caso devemos restaurar o backup completo, depois o ltimo backup diferencial e depois
todos os backups do Log de transaes. de fundamental importncia que os backups do Log
de transaes sejam restaurados na ordem correta, do mais antigo at o mais recente. As alteraes
entre o ltimo backup do Log de transaes e o momento do restore sero perdidas. Esta
estratgia torna o restore menos demorado, pois precisamos apenas restaurar os backups do
Log de transaes entre o ltimo backup diferencial e o momento em que houve o problema.
FAZENDO O RESTORE COM O ENTERPRISE MANAGER
Podemos fazer o restore utilizando o Enterprise Manager, quer seja o restore de um backup completo,
de um backup diferencial ou de um backup do Log de transaes. Lembrando que cada situao pode
exigir uma seqncia de restore especfica.
Exemplo:
Fazer o restore de um backup completo do Banco de Dados Northwind. Ao fazermos este restore, o Banco
de Dados estar de volta situao que estava no momento em que o backup completo foi realizado.
Para fazer o restore de um backup completo do Banco de Dados Northwind faa o seguinte:
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para expandi-la. Abaixo de Databases surge uma lista com os Bancos de Dados da instncia
SERVIDOR\SRVINST01.
6. D um clique com o boto direito do mouse no Banco de Dados Northwind, e no menu de
opes que surge selecione Todas as tarefas -> Restore Database. Surge a janela Restore Database,
onde podemos selecionar os backups a serem restaurados, conforme indicado na Figura 5.19.
Na guia General temos as seguintes opes:
Restore as database: Nesta lista podemos selecionar para qual Banco de Dados o backup ser
restaurado.
Database: Esta opo selecionada por padro. Permite que selecionemos um Banco de Dados
a ser restaurado.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
258 00CURSO COMPLETO
Figura 5.19 A janela Restore database.
Filegroups or files: Esta opo permite a restaurao de um filegroup ou arquivo especfico. Ao
selecionar esta opo surge uma listagem com os filegroups ou arquivos que podem ser
restaurados a partir dos backups disponveis, conforme indicado na Figura 5.20.
Figura 5.20 Restaurando um filegroup ou arquivo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
259 CURSO COMPLETO00
From device: Este opo permite que seja selecionado um device a partir do qual queremos
fazer o restore, conforme indicado na Figura 5.21.
Figura 5.21 Restaurando a partir de um backup device.
Estando a opo Database selecionada, ainda podemos selecionar as seguintes opes:
Show backups of database: Permite que selecionemos um Banco de Dados. Na parte de baixo
sero exibidos os backups para o Banco de Dados selecionado nesta lista.
First backup to restore: Nesta listagem selecionamos o backup a ser restaurado. No nosso exemplo
selecionaremos o backup completo mais recente, conforme indicado na Figura 5.22.
Ao selecionarmos este backup, na listagem da parte de baixo da janela, surgem os backups disponveis. No
nosso caso temos um backup completo e um diferencial. Vamos selecionar os dois para que sejam restaurados.
Point in time restore: Esta opo somente est disponvel quando selecionamos a opo Data-
base. Podemos utilizar esta opo para restaurar o Banco de Dados situao em que estava em
um determinado horrio. Por exemplo, vamos supor que seja feito um backup completo no
domingo, backups do Log de transaes dirios s 9h, 12h e 17h. Na quarta-feira tambm
feito um backup diferencial s 23h, alm dos backups do Log de transaes. Vamos supor que
o Banco de Dados foi corrompido, na quinta feira, devido a um comando errado executado s
15h05. A estratgia de restore mais adequada seria:
a. Fazer um backup do Log de transaes, utilizando a opo WITH NO_TRUNCATE. Esta opo
somente possvel se o Log de transao e o arquivo de dados primrio no esto fisicamente
corrompidos no disco.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
260 00CURSO COMPLETO
Figura 5.22 Selecionando o backup mais recente.
b. Primeiro restaurar o backup completo do domingo.
c. Depois restaurar o backup diferencial da quarta-feira, que o ltimo backup diferencial disponvel.
d. Restaurar o backup do Log de transaes feito s 9h da quinta-feira.
e. Restaurar o backup do Log de transaes feito s 12h da quinta-feira.
f. Restaurar o backup do Log de transaes feito no item a, utilizando a opo Point in time
restore, para restaurar este log at s 15. Observe que restauramos o Log somente at s 15h,
para evitar que o comando incorreto, que foi executado em torno de 15h05 seja executado
novamente e venha a corromper o Banco de Dados. Nesta situao perderemos somente as
alteraes feitas entre 15h e 15h05.
7. Certifique-se de que o(s) backup(s) a ser(em) restaurados esteja(m) selecionado(s). D um clique
na guia Options. As principais opes desta guia so as seguintes:
Leave database operational. No additional transaction logs can be restored: Se esta opo
estiver marcada o Banco de Dados estar disponvel para ser usado ao final do Restore.
Utilizamos esta opo quando no temos mais nenhum Log de transaes para restaurar.
Leave database non operational but able to restore additional transaction logs: Se esta
opo estiver marcada, o Banco de Dados no poder ser acessado pelos aplicativos. Quando
estamos restaurando diversos backups do Log de transaes, temos que utilizar esta opo
para que os diversos backups possam ser restaurados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
261 CURSO COMPLETO00
Leave database read-only and able to restore additional transaction logs: Ao selecionarmos
esta opo, os aplicativos podem acessar o Banco de Dados apenas para leitura dos dados.
Alteraes, inseres e excluses no sero permitidas. Em contrapartida, poderemos
continuar restaurando backups do Log de transao.
8. Certifique-se de que a opo Leave database operational. No additional transaction logs can
be restored esteja selecionada. D um clique no boto OK para restaurar o backup do Banco
de Dados Northwind. Ser exibida uma janela com o progresso do processo de restore, para
cada backup que estiver sendo restaurado. Quando todos os backups selecionados tiverem sido
restaurados, ser exibida uma mensagem de confirmao.
9. Clique no boto OK para fechar esta mensagem.
10. Voc estar de volta ao Enterprise Manager. Feche-o.
FAZENDO O RESTORE COM O QUERY ANALYZER
Para fazer o restore de um Banco de Dados utilizamos o comando RESTORE DATABASE. Para fazer o
restore do Log de transaes utilizamos o comando RESTORE LOG. A seguir, a sintaxe completa destes
comandos, conforme apresentada no Books OnLine.
Sintaxe do comando RESTORE DATABASE:
RESTORE DATABASE { database_name | @database_name_var }
[ FROM < backup_device > [ ,...n ] ]
[ WITH
[ RESTRICTED_USER ]
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] MOVE logical_file_name TO operating_system_file_name ]
[ ,...n ]
[ [ , ] KEEP_REPLICATION ]
[ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] REPLACE ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
Sintaxe do comando RESTORE LOG:
RESTORE LOG { database_name | @database_name_var }
[ FROM < backup_device > [ ,...n ] ]
[ WITH
[ RESTRICTED_USER ]
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] MOVE logical_file_name TO operating_system_file_name ]
[ ,...n ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] KEEP_REPLICATION ]
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
262 00CURSO COMPLETO
[ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [= percentage ] ]
[ [ , ] STOPAT = { date_time | @date_time_var }
| [ , ] STOPATMARK = mark_name [ AFTER datetime ]
| [ , ] STOPBEFOREMARK = mark_name [ AFTER datetime ]
]
]
Mais uma vez vamos procurar simplificar um pouco, atravs de exemplos, esta sintaxe. Vamos iniciar
pelo comando RESTORE DATABASE.
Para restaurar um backup completo de um Banco de Dados podemos utilizar o seguinte comando:
RESTORE DATABASE nome_banco_dados FROM nome_device
Por exemplo, para restaurarmos um backup completo do Banco de Dados Exemplo1, a partir do device
device_real, podemos utilizar o seguinte comando:
RESTORE DATABASE Exemplo1 FROM device_real
Este comando executado com sucesso e a seguinte mensagem exibida:
Processed 112 pages for database Exemplo1, file exemplo1-prim on file 1.
Processed 16 pages for database Exemplo1, file exemplo1-sec1 on file 1.
Processed 1 pages for database Exemplo1, file exemplo1-log on file 1.
RESTORE DATABASE successfully processed 129 pages in 3.004 seconds (0.350 MB/sec).
Uma sintaxe mais simplificada para o comando RESTORE DATABASE a seguinte:
RESTORE DATABASE nome_banco_dados
FROM nome_device
[WITH OPTIONS]
As principais opes para este comando so as seguintes:
PASSWORD: Esta opo permite que especifiquemos uma senha, caso o backup tenha sido
efetuado com uma senha anteriormente.
NORECOVERY: Esta opo deve ser especificada quando iremos restaurar mais backups do Log
de transaes ou restaurar um backup diferencial. sinnimo de STANDBY. semelhante a
selecionar a opo Leave database nonoperational but able to restore additional transaction
logs, no Enterprise Manager.
RECOVERY: Esta a opo padro. utilizada quando no temos mais nenhum backup do Log
de transaes ou backup diferencial para restaurar. Qualquer transao que esteja em um estado
uncommitted, sofrer um roll back. Esta a opo padro, isto , se no especificarmos nada,
ser assumida a opo RECOVERY.
RESTART: Utilizamos esta opo para reinicializar uma operao de restore que foi interrompida.
STATS = percentage: Faz com que seja emitida uma mensagem depois que o percentual
especificado, da operao de restore, tenha sido alcanado. Podemos utilizar esta opo para
acompanhamento de operaes de restore de grandes Bancos de Dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
263 CURSO COMPLETO00
MOVE nome_lgico TO nome_fsico_arquivo: Esta opo pode ser utilizada para restaurar o
backup para um lugar alternativo. Considere o seguinte exemplo do Books OnLine:
RESTORE DATABASE MyNwind FROM MyNwind_1
WITH NORECOVERY,
MOVE MyNwind TO
c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.mdf,
MOVE MyNwindLog1
TO c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.ldf
Agora vamos aprender um pouco mais sobre o comando RESTORE LOG. Considere o exemplo a seguir:
RESTORE LOG Exemplo1
FROM backup_log_exemplo1
WITH NORECOVERY
STATS = 5
Este comando restaura o Log do Banco de Dados Exemplo1, a partir do backup device
backup_log_exemplo1 e no coloca o Banco de Dados on-line (NORECOVERY). Desta maneira mais
backups do Log ou backups diferenciais podero ser restaurados. A cada 5% da operao de restore
emitida uma mensagem para acompanhamento.
Simplificando a sintaxe do comando RESTORE LOG, teramos:
RESTORE LOG nome_banco_dados
FROM nome_device
[WITH opes]
A maioria das opes do comando RESTORE LOG so as mesmas do comando RESTORE DATABASE.
Uma opo que exclusiva do comando RESTORE LOG a seguinte:
STOP AT = data e hora: Esta opo pode ser utilizada para restaurar o backup do Log de transaes
at uma hora e data especificadas. Considere o exemplo a seguir conforme consta no Books OnLine:
RESTORE DATABASE MyNwind
FROM MyNwind_1, MyNwind_2
WITH NORECOVERY
RESTORE LOG MyNwind
FROM MyNwindLog1
WITH NORECOVERY
RESTORE LOG MyNwind
FROM MyNwindLog2
WITH RECOVERY, STOPAT = Apr 15, 1998 12:00 AM
Para fixar melhor estes comandos vamos fazer um exerccio completo.
Exerccio: Neste exerccio iremos fazer o seguinte:
Criar um backup device chamado exercicio_capitulo5.
Fazer um backup completo do Banco de Dados Northwind.
Por padro, o Banco de Dados Northwind possui a opo trunc. log on chkpt setada em
TRUE. Quando esta opo verdadeira, no possvel fazer o backup do Log de transaes. Por
isso precisaremos desabilitar esta opo. importante desabilitarmos esta opo antes de
fazermos as alteraes, pois caso contrrio as alteraes efetuadas sero descartadas do Log de
transaes e no poderemos restaurar o log conforme proposto mais adiante.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
264 00CURSO COMPLETO
Em seguida faremos algumas alteraes em intervalos de cinco minutos na tabela Customers
do Banco de Dados Northwind.
Em seguida faremos um backup do log de transaes.
Na seqncia, iremos restaurar o backup completo.
Depois restauraremos o backup do Log de transaes utilizando a opo STOPAT.
Faremos um restore do backup completo para restaurar o Banco de Dados Northwind condio
inicial.
Estaremos executando as diversas etapas deste exerccio utilizando comandos T-SQL no Query Analyzer. Estaremos fazendo os backups
em um device chamado exercicio_capitulo5, o qual est associado ao arquivo D:\backups\exercicio_capitulo5.bak.
Vamos abrir o Query Analyzer e criar o device exercicio_capitulo5.
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo. Ser aberto o Query Analyzer com
master como sendo o Banco de Dados atual.
3. Para criar o device exercicio_capitulo5 execute o seguinte comando:
USE master
exec sp_addumpdevice disk, exercicio_capitulo5, D:\backups\exercicio_capitulo5.bak
Com isso temos o nosso backup device exercicio_capitulo5 criado. Mantenha o Query Ana-
lyzer aberto para executar os demais comandos.
Fazer um backup completo do Banco de Dados Northwind.
4. Para fazer o backup solicitado, digite o seguinte comando:
BACKUP DATABASE Northwind to exercicio_capitulo5
Por padro o banco de dados Northwind possui a opo trunc. log on chkpt setada em TRUE. Quando
esta opo verdadeira, no possvel fazer o backup do log de transaes. Por isso precisaremos
desabilitar esta opo.
5. Para desabilitar a opo trunc. log on chkpt, no Banco de Dados Northwind, execute o
seguinte comando:
use master
exec sp_dboption northwind, trunc. log on chkpt, FALSE
Faremos algumas alteraes em intervalos de cinco minutos, na tabela Customers do Banco de Dados
Northwind. No nosso exemplo estarei alterando a tabela Customers s 21h30. Nesta alterao farei
com que o campo Country de todos os registros seja alterado para Brasil. s 21h35 h irei alterar o
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
265 CURSO COMPLETO00
campo Country para EUA, e s 21h40 alterarei o campo Country de todos os registros da tabela Cus-
tomers para Alemanha.
6. Para alterar o campo Country de todos os registros da tabela Customers para Brasil, execute o
seguinte comando:
Use Northwind
UPDATE Customers
SET Country = Brasil
Este comando foi executado s 21h30.
Na Figura 5.23 podemos ver o resultado deste comando. Para ver os dados de uma tabela no SQL Server
2000, basta abrir o Enterprise Manager, navegar at a tabela desejada, clicar com o boto direito na
tabela e no menu que surge selecionar o comando Open Table -> Return all rows...
Figura 5.23 Country = Brasil para todos os registros da tabela Customers.
7. Para alterar o campo Country de todos os registros da tabela Customers para EUA, execute o
seguinte comando:
Use Northwind
UPDATE Customers
SET Country = EUA
Este comando foi executado s 21h35.
Na Figura 5.24 podemos ver o resultado deste comando.
8. Para alterar o campo Country de todos os registros da tabela Customers para Alemanha, exe-
cute o seguinte comando:
Use Northwind
UPDATE Customers
SET Country = Alemanha
Este comando foi executado as 21h40.
Na Figura 5.25 podemos ver o resultado deste comando.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
266 00CURSO COMPLETO
Figura 5.25 Country = Alemanha para todos os registros da tabela Customers.
9. Faremos agora um backup do Log de transaes do Banco de Dados Northwind. Para isso,
execute o seguinte comando:
BACKUP LOG Northwind to exercicio_capitulo5
10. Restaure o backup completo para que o Banco de Dados Northwind volte situao original,
executando o seguinte comando:
RESTORE DATABASE Northwind FROM exercicio_capitulo5
WITH NORECOVERY
Devemos utilizar a opo WITH NORECOVERY pois queremos restaurar o Log de transaes na seqncia. Para isso precisamos deixar o
Banco de Dados no-operacional. Isto feito com a opo NORECOVERY.
Figura 5.24 Country = EUA para todos os registros da tabela Customers.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
267 CURSO COMPLETO00
Agora restauraremos o backup do Log de transaes utilizando a opo STOPAT.
11. Para restaurar o Log de transaes at s 21h35, execute o seguinte comando:
RESTORE LOG Northwind
FROM exercicio_capitulo5
WITH RECOVERY, STOPAT = 20010308 21:35
Neste caso deveremos estar de volta situao de 21h35.
Faremos, ento, um restore do backup completo para restaurar o Banco de Dados Northwind a sua
condio inicial.
12. Para restaurar o Banco de Dados Northwind a sua condio inicial, execute o seguinte comando:
RESTORE DATABASE Northwind FROM exercicio_capitulo5
Na Figura 5.26 podemos conferir que os dados originais foram restaurados.
Figura 5.26 Dados originais restaurados.
13. Feche o Query Analyzer.
Com isso encerramos o nosso item sobre restore.
Voc pode encontrar mais informaes sobre Backup/Restore, no Books OnLine.
KNOW-HOW EM: AGENDAMENTO DE TAREFAS NO SQL SERVER 2000
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
268 00CURSO COMPLETO
Saber utilizar o Enterprise Manager e o Query Analyzer.
METODOLOGIA
Definir agendamentos no SQL Server 2000.
TCNICA
Apresentao dos procedimentos necessrios para o agendamento de tarefas no SQL Server 2000.
Podemos automatizar uma srie de tarefas administrativas no SQL Server 2000 atravs da criao de
Jobs. Um Job uma tarefa administrativa, composta de um ou mais passos, a qual agendada para
executar automaticamente, em perodos determinados. Por exemplo, poderamos criar um Job que
executa um backup completo do Banco de Dados Northwind aos domingos noite e um backup
diferencial ao final de cada dia, de segunda sexta-feira. Tambm poderamos criar Jobs mais sofisticados,
que fazem pesquisas em um Banco de Dados e enviam os resultados por e-mail para um gerente.
Podemos agendar tarefas que executam manuteno nos ndices de tabelas para executarem
periodicamente, e assim por diante. As possibidades so muitas.
Um Job tambm pode ser criado e no agendado para executar periodicamente, sendo que o DBA pode
execut-lo manualmente, quando for necessrio.
Normalmente agendamos, para execuo automtica, aquelas tarefas rotineiras que o DBA deve executar,
como backups, manuteno de ndices e qualquer outra tarefa que tenha que ser executada
periodicamente. Com isso estamos liberando o DBA de uma srie de tarefas administrativas repetitivas.
Para que a execuo de tarefas funcione corretamente, o servio SQL Server Agent deve estar rodando.
O ideal que o mesmo seja configurado para inicializar automaticamente. Podemos fazer esta
configurao utilizando o Service Manager, conforme descrito no Captulo 2. A Figura 5.27 mostra o
SQL Server Agent configurado para iniciar automaticamente.
Figura 5.27 O Servio SQL Server Agent.
Cabe ainda lembrar que cada instncia do SQL Server 2000 instalada no servidor, possui o seu prprio
servio SQL Server Agent associado, isto , se tivermos duas ou mais instncias do SQL Server instaladas,
poderemos ter o SQL Server Agent rodando em uma das instncias e no carregada na outra instncia.
Alm do servio SQL Server Agent, precisamos do Banco de Dados msdb. neste Banco de Dados que
ficam armazenadas as informaes e os agendamentos dos Jobs. Observe a Figura 5.28, onde temos
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
269 CURSO COMPLETO00
uma viso do contedo da tabela sysjobs, onde temos informaes sobre diversos Jobs. Os Jobs que
aparecem nesta tabela foram criados quando criamos agendamento para os backups do Log de transaes,
no item anterior. Lembre que foi dito que a maneira de criar um agendamento para o backup era
atravs da criao de um Job.
Figura 5.28 A tabela sysjobs, do Banco de Dados msdb.
Neste item aprenderemos a criar e a gerenciar Jobs.
CRIANDO UM JOB COM O ENTERPRISE MANAGER
A ttulo de exemplo, vamos criar um Job que faz o backup completo dos Bancos de Dados Northwind e
pubs, para o backup device exercicio_capitulo5. Vamos agendar este Job para executar diariamente s 23h.
O backup device exercicio_capitulo5 j deve ter sido criado, caso contrrio o Job ir falhar na execuo.
Exemplo:
Para criar um Job que faz o backup completo dos Bancos de Dados Northwind e pubs, para o backup
device exercicio_capitulo5, faa o seguinte:
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
270 00CURSO COMPLETO
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Man-
agement para expandi-la. Observe que surge a opo SQL Server Agent.
6. Clique no sinal de mais ao lado da opo SQL Server Agent para expandi-la.
7. Nas opes que surgem abaixo desta instncia, clique na opo Jobs. No painel da direita sero
exibidos os Jobs existentes.
8. Para criar um novo Job, clique com o boto direito do mouse na opo Jobs e no menu de
opes que surge, d um clique em New Job. Surge a janela New Job Properties, para a criao
de um novo Job, conforme indicado na Figura 5.29.
Figura 5.29 Criao de um novo Job.
9. Para o nome do job digite BackupNorthwindPubs, no campo Name.
10. Na lista Category, selecione Databasa Maintenance. Este campo apenas atribui uma determinada
categoria ao Job, o que ajuda na identificao das funes do mesmo.
11. No campo Owner, podemos selecionar o dono do Job. Conforme veremos no prximo
captulo, todo objeto no SQL Server possui um dono. O dono de um objeto o usurio que
estava logado e que criou o objeto. No nosso exemplo, como estou utilizando a segurana
integrada, na qual o SQL Server utiliza as contas de usurio do Windows 2000, o dono
GROZA\Administrador, isto , o usurio Administrador do domnio GROZA. No prximo
captulo estudaremos a segurana no SQL Server 2000 em detalhes.
12. No campo Description, digite o seguinte:
Faz o backup de Northwind e pubs, diariamente, s 23:00 h.
Sua janela deve estar conforme indicado na Figura 5.30.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
271 CURSO COMPLETO00
Figura 5.30 A guia General da janela de criao do Job.
13. D um clique na guia Steps. Nesta guia poderemos definir os passos que o Job executar. No
nosso exemplo, haver dois passos. Um que faz o backup do Banco de Dados Northwind e
outro que faz o backup do Banco de Dados pubs.
14. Para criar um novo passo, d um clique no boto New. Surge a janela indicada na Figura 5.31.
Figura 5.31 Criando um novo passo para o Job.
15. Preencha os campos da seguinte maneira:
Step Name: BackupNorthwind.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
272 00CURSO COMPLETO
Type: Certifique-se de que esteja selecionado Transact-SQL Script (T-SQL). Isto indica que o
passo que est sendo criado executar um comando T-SQL. medida que voc for ficando
mais familiarizado com a linguagem T-SQL ver que possvel automatizar a maioria das
tarefas de administrao do SQL Server 2000.
Database: Selecione Northwind.
Command: Digite o seguinte comando.
BACKUP DATABASE Northwind to exercicio_capitulo5
16. Para verificar se o comando digitado est correto clique no boto Parse. Se o comando est
correto, surge uma janela com a mensagem Parsed Succeded. D um clique em OK e pronto, o
primeiro passo ter sido criado.
17. Para criar o segundo passo, d um clique no boto New.
18. Preencha os campos da seguinte maneira:
Step Name: Backuppubs.
Type: Certifique-se de que esteja selecionado Transact-SQL Script (T-SQL). Isto indica que o
passo que est sendo criado executar um comando T-SQL.
Database: Selecione pubs.
Command: Digite o seguinte comando:
BACKUP DATABASE pubs to exercicio_capitulo5
19. D um clique em OK e pronto, o segundo passo do Job ter sido criado, conforme indicado na
Figura 5.32.
Figura 5.32 Dois passos j adicionados ao Job.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
273 CURSO COMPLETO00
Os passos so executados na ordem em que foram criados. Voc pode alterar a ordem dos passos,
clicando no passo e depois clicando nos botes com seta para cima e seta para baixo.
O passo final configurar o agendamento para o Job que est sendo criado. Conforme descrito no
incio deste exemplo, vamos agendar o Job para executar diariamente, s 23h.
20. D um clique na guia Schedules.
21. Para criar um novo agendamento, d um clique no boto New Schedules. Surge a janela indicada
na Figura 5.33.
Figura 5.33 Criando um novo agendamento.
22. Para o nome do agendamento digite DiarioAs23horas.
As opes para agendamento foram descritas no item sobre o backup do log de transaes, neste captulo.
23. Certifique-se de que a opo Recurring esteja marcada e d um clique no boto Change, para
configurar o horrio de execuo do Job.
24. Na janela que surge, configure as opes conforme indicado na Figura 5.34.
25. D um clique no boto OK para fechar a janela da Figura 5.34.
26. Voc estar de volta a janela da Figura 5.33. D um clique no boto OK para fech-la. Voc
estar de volta guia Schedules. Observe que o novo agendamento j foi adicionado.
Podemos configurar mais do que um agendamento para um Job. Por exemplo, se quisssemos que o Job fosse executado diariamente
s 23h e s segundas, quartas e sextas iniciando s 8h, at s 20h, executando de duas em duas horas, teramos que criar dois
agendamentos distintos.
Agora j temos todas as definies necessrias para a criao do job proposto.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
274 00CURSO COMPLETO
Figura 5.34 Definindo o agendamento do Job.
27. D um clique no boto OK e o Job BackupNorthwindPubs ser criado. O mesmo ser executado
diariamente s 23h.
No precisamos esperar at s 23 para ver se o Job vai executar com sucesso. Podemos executar o job
manualmente, a qualquer momento. Para isso basta clicar com o boto direito do mouse no job e no
menu que surge, clicar em Start Job. Quando um Job possui mais do que um passo, surge uma janela
com a lista dos passos e perguntando qual deve ser o primeiro passo a ser executado, conforme indicado
na Figura 5.35. Para iniciar a execuo do Job, basta clicar no boto Start.
Figura 5.35 Lista de passos do Job.
Voc pode impedir que um job seja executado desabilitando o Job. Para desabilit-lo, clique com o boto
direito do mouse sobre o Job e no menu de opes que surge, d um clique na opo Disable Job.
Enquanto o Job estiver desabilitado, o mesmo no ser executado. Para habilit-lo novamente, clique
com o boto direito do mouse no Job, e no menu de opes que surge, d um clique na opo Enable Job.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
275 CURSO COMPLETO00
Para verificar se um Job est executando corretamente voc pode consultar o histrico de execuo do
Job. Para consultar este histrico, clique com o boto direito do mouse no Job, e no menu de opes
que surge, d um clique na opo View Job History...
Surge a janela Job History, com todas as execues do Job, onde so indicadas as seguintes informaes
sobre cada execuo, conforme indicado na Figura 5.36:
Figura 5.36 O histrico de execuo do Job.
Data.
Resultado da execuo: Successful indica que o Job executou com sucesso.
Notificaes: Podemos fazer com que o Job notifique o administrador em caso de sucesso ou
falha na execuo.
Durao da execuo do Job.
Se voc clicar na opo Show step details, ser exibido o histrico de execuo de cada passo do Job,
em cada uma das execues do mesmo, conforme indicado na Figura 5.37.
medida que voc dominar a linguagem T-SQL, a utilizao de Jobs passa a ser uma ferramenta de
grande valor para automatizar uma srie de tarefas repetitivas e rotineiras.
Na maioria das vezes quando um Job no funciona corretamente, pode ser um dos seguintes problemas:
1. O servio SQL Server Agent no est rodando.
2. O comando T-SQL est incorreto.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
276 00CURSO COMPLETO
Figura 5.37 O histrico detalhado de cada passo.
CONCLUSO
Neste captulo aprendemos conceitos fundamentais para a manuteno de um Banco de Dados no
SQL Server 2000.
Iniciamos o captulo aprendendo sobre transaes e o Log de transaes no SQL Server 2000. Conforme
vimos, o Log de transaes tem um papel fundamental na recuperao de um Banco de Dados em
caso de falhas.
Ainda na parte terica, aprendemos sobre os tipos de backup disponveis no SQL Server 2000, quais as
estratgias de recuperao para os diferentes tipos de backup e alguns exemplos prticos de utilizao
das estratgias apresentadas.
Na seqncia, aprendemos o conceito de backup device. Tambm aprendemos a criar backup devices
com o SQL Server e o Query Analyzer. Em seguida, aprendemos a criar e a restaurar backups, utilizando
o Enterprise Manager e o Query Analyzer.
Fechamos o captulo aprendendo a criar e agendar Jobs, para automatizar a execuo de tarefas
administrativas.
Saber utilizar as ferramentas administrativas para executar backups e restore quando necessrio
importante, porm de fundamental importncia o planejamento das rotinas de backup/restore a
serem utilizadas. Conforme visto neste captulo, diversos fatores devem ser levados em conta na hora
de montar a nossa estratgia de backup/restore, como por exemplo:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
277 CURSO COMPLETO00
Tempo mximo de parada para backup.
Backup completo, diferencial ou de Log.
Qual o tempo de downtime aceitvel, isto , em caso de falha no Banco de Dados, qual o
tempo aceitvel para que o mesmo seja colocado de volta on-line.
Qual o custo da perda dos dados?
admissvel perda dos dados? Qual o nvel de perdas aceitvel? Um dia? Uma hora? Um minuto?
Agora hora de aprendermos sobre segurana no SQL Server 2000. Mas isso assunto para o prximo
captulo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
279 CURSO COMPLETO00
Captulo 6
SEGURANA NO SQL SERVER 2000
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
280 00CURSO COMPLETO
INTRODUO
O SQL Server 2000 pode ser utilizado como Banco de Dados em uma srie de situaes, como por exemplo:
Para sites de Comrcio Eletrnico.
Para o site de um banco.
Para as diversas aplicaes que rodam na empresa, como por exemplo aplicaes financeiras,
contbeis, etc.
Para cadastro de alunos, disciplinas, turmas, matrculas e notas em uma universidade ou
grande escola.
Enfim, onde um Banco de Dados for necessrio.
O que podem apresentar em comum ambientes to diversos?
Muito simples: a necessidade de segurana no acesso s informaes. Falando de uma maneira simples, a
segurana no acesso s informaes significa que o usurio deve ser capaz de acessar os dados necessrios
com nvel de acesso suficiente para que o mesmo realize o seu trabalho. Se um usurio trabalha no
atendimento ao pblico, fornecendo informaes, bvio que ele no deve ter permisso para alterar,
excluir ou inserir dados, mas somente permisso para leitura dos dados. Ao configurarmos corretamente os
mecanismos de segurana do SQL Server 2000, estamos garantindo que somente podem acessar o Banco de
Dados, os usurios autorizados e com o nvel de acesso necessrio para que executem o seu trabalho.
Atravs dos mecanismos de segurana tambm evitamos que pessoas no-autorizadas tenham acesso
aos dados. Claro que no existe Sistema Operacional ou Sistema de Banco de Dados 100% seguro.
Diariamente temos notcias de sistemas que foram invadidos, principalmente atravs da Internet.
Mas, com certeza, se configurarmos corretamente a segurana do Windows 2000 e do SQL Server 2000,
estaremos dificultando, enormemente, a vida de quem quer invadir nossos sistemas. Muitas das invases
conhecidas, acontecem por m configurao dos mecanismos de segurana disponveis.
Por que essa conversa toda sobre segurana?
Porque este justamente o assunto deste captulo. Veremos quais os mecanismos de segurana
disponveis no SQL Server 2000, para garantir a segurana no acesso s informaes contidas nos
Bancos de Dados. Aprenderemos a configurar e administrar estes mecanismos. Tambm falaremos,
brevemente, sobre os mecanismos bsicos de segurana do Windows 2000.
Neste captulo apresentaremos:
Uma viso geral da segurana no SQL Server 2000.
Tipos de segurana disponveis no SQL Server 2000.
O papel, criao e administrao de User Logins contas de usurios para logon no servidor
SQL Server 2000.
Como atribuir permisses aos objetos de um Banco de Dados.
O que so Roles, como cri-las e administr-las.
O planejamento e o gerenciamento da segurana.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
281 CURSO COMPLETO00
Estaremos utilizando a mesma metodologia dos captulos anteriores. Sempre que for cabvel,
aprenderemos a executar as operaes propostas utilizando tanto o Enterprise Manager, quanto
comandos T-SQL no Query Analyzer.
KNOW-HOW EM: SEGURANA NO SQL SERVER 2000
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Saber utilizar o Enterprise Manager e o Query Analyzer.
METODOLOGIA
Apresentao terica sobre o modelo de segurana do SQL Server 2000.
A segurana no SQL Server 2000 baseada nos seguintes conceitos:
Logins
User Accounts
Roles
Permissions
PRIMEIRO PRECISAMOS CONECTAR COM O SERVIDOR SQL SERVER 2000
O primeiro passo para que o usurio possa acessar o servidor SQL Server estabelecer uma conexo
com o servidor. Ao estabelecer uma conexo, o usurio deve fornecer o seu nome (login) e senha. O
SQL Server verifica se o login e senha fornecidos tm permisso de acesso. Em caso afirmativo, a
conexo com o servidor SQL Server 2000 estabelecida. A Figura 6.1 ilustra este conceito.
Figura 6.1 Usurio conectando com o servidor SQL Server 2000.
login: jsilva
senha: abc123
login: maria
senha: xyzkp2
SQL Server 2000
SERVIDOR\SRVINST01
Login e senha cadastrados:
-> jsilva
-> abc123
-> pedro
-> 234uyt
-> ...
x
x

Este material no pode ser utilizado em treinamentos e em Sala de Aula


SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
282 00CURSO COMPLETO
Nesta situao, o usurio jsilva conseguir estabelecer a conexo, que tecnicamente chamamos de sesso,
com a instncia SRVINST01 do servidor SQL Server SERVIDOR -> SERVIDOR\SRVINST01. Ao tentar
efetuar a conexo, as informaes de login e senha so passadas para o servidor SQL e comparadas com
a lista de usurios autorizados a acessar o servidor. Caso o usurio esteja na lista de usurios autorizados
e a senha esteja correta, a conexo ser estabelecida. No nosso exemplo, o usurio cadastrado como
maria no conseguir a conexo, pois no existe login maria, cadastrado no servidor SQL Server.
Agora vamos analisar uma situao um pouco diferente, conforme indicado na Figura 6.2.
Figura 6.2 Acesso negado devido a senha incorreta.
Nesta segunda situao, o usurio com login maria continua no tendo acesso ao servidor SQL. Porm
agora o problema que a senha foi informada incorretamente. Normalmente o usurio est utilizando
uma aplicao que acessa um Banco de Dados no servidor SQL Server 2000. Dentro da prpria aplicao, o
usurio deve digitar o seu login e senha de acesso. Pode ser que a aplicao seja uma pgina ASP. Da mesma
maneira poderamos construir um formulrio com campos para que o usurio informe o seu login e senha.
Porm pode ser, no mnimo, incmodo, fazer com que o usurio fornea informaes de login e
senha. Vamos supor que o usurio tenha feito o logon em um domnio do Windows NT Server 4.0 ou
do Windows 2000 Server. No poderamos utilizar as informaes de logon do usurio no domnio NT
Server 4.0 ou Windows 2000 Server, como credenciais para acessar o servidor SQL Server? Em outras
palavras, no poderamos autorizar o acesso ao servidor SQL Server diretamente para usurios do domnio
do Windows NT Server 4.0 ou do Windows 2000 Server?
A resposta a ambas as perguntas sim. Essa possibilidade que caracteriza os dois modos de segurana
que podemos utilizar no SQL Server 2000. Os modos de segurana possveis so os seguintes:
SQL Server e Windows.
Windows only.
No modo SQL Server e Windows podemos dar autorizao de acesso para as contas do domnio do Win-
dows 2000 (ou NT se for o caso). Desta maneira no necessria a criao logins no prprio SQL Server
login: jsilva
senha: abc123
login: maria
senha: xyzkp2
SQL Server 2000
SERVIDOR\SRVINST01
Login e senha cadastrados:
-> jsilva
-> abc123
-> maria
-> yyy123cd
-> ...
x
x
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
283 CURSO COMPLETO00
2000. O usurio utiliza uma aplicao para acessar o Banco de Dados e a aplicao j passa as informaes
do logon que o usurio fez no domnio diretamente para o SQL Server 2000, evitando que o usurio tenha
que digitar novamente informaes de login e senha. Porm este modo tambm permite que sejam criadas
contas de login no prprio SQL Server 2000. As contas criadas no SQL Server 2000 ficam armazenadas no
Banco de Dados master. Esta prtica no recomendada, uma vez que teremos vrias listas de usurios e
senhas para administrar: a lista do domnio e uma lista em cada servidor SQL Server. Ao invs de criar
contas no SQL Server 2000, podemos dar permisso de acesso para as contas do domnio. Por padro, a
conta Administrador recebe permisses completas de acessso ao SQL Server e a todos os seus objetos. A
conta Administrador adicionada lista de contas com permisso de acesso quando da instalao do SQL
Server 2000. Esta conta possui as mesmas permisses que a conta sa. A conta sa uma conta do prprio SQL
Server, a qual criada quando da instalao do SQL Server. Esta conta tambm possui poderes totais sobre
o Banco de Dados. Na Figura 6.3, podemos observar que a conta Administrador do domnio GROZA, j foi
includa na lista de contas com permisso de acesso ao servidor. Observe na coluna Type para a conta
GROZA\Administrador. O tipo informado Windows User, o que indica que esta uma conta do domnio
do Windows e no uma conta criada no prprio SQL Server. J na conta sa, a coluna Type indica Stan-
dard, o que significa que uma conta do SQL Server 2000.
Figura 6.3 Conta GROZA\Administrador com permisso de acesso.
Mais adiante aprenderemos a acessar a opo Logins, indicada na figura 6.3. Estaremos utilizando os termos login e conta com o mesmo
significado. Para maiores informaes sobre Domnios do Windows 2000 e Active Directory consulte o livro Microsoft Windows 2000
Server Curso Bsico & Rpido, de minha autoria e publicado pela Editora Axcel Books (www.axcel.com.br).
No modo de segurana Windows only, somente sero aceitas contas do domnio do Windows. Ou seja,
para que o usurio tenha acesso ao SQL Server, o mesmo deve ter uma conta cadastrada no domnio
Windows NT Server 4.0 ou Windows 2000 Server e a sua conta deve ter recebido permisso de acesso
ao servidor SQL. Neste modo no poderemos criar contas no prprio SQL Server.
Podemos alterar entre os modos Windows only e SQL Server e Windows facilmente, utilizando o
Enterprise Manager.
Para alterar o modo de segurana do SQL Server 2000, faa o seguinte:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
284 00CURSO COMPLETO
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
Surgem as instncias instaladas no servidor SQL Server.
3. Clique com o boto direito do mouse na instncia SERVIDOR\SRVINST01 e no menu que
surge d um clique em Propriedades.
4. Na janela que surge d um clique na guia Security. Surge a janela indicada na Figura 6.4.
Figura 6.4 Alterando o modo de segurana do SQL Server 2000.
5. Se voc alterar o modo e clicar em OK, o SQL Server 2000 emite uma mensagem dizendo que
as alteraes somente tero efeito depois que o servio SQL Server for parado e reinicializado.
6. Se voc clicar em Sim, surge outra mensagem avisando que o servio SQL Server Agent tambm
ser parado e reinicializado.
7. Clicando em Sim novamente, os respectivos servios sero parados e reinicializados. O servidor
SQL Server 2000 j estar trabalhando no novo modo de segurana.
8. A janela de propriedades ser automaticamente fechada e voc estar de volta ao Enterprise
Manager. Feche-o.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
285 CURSO COMPLETO00
O modo de segurana configurado de maneira independente para as diversas instncias do servidor SQL Server 2000 instaladas em
uma mesma mquina. Por exemplo, se tivermos duas instncias instaladas, uma pode estar no modo Windows only e a outra estar no
modo SQL Server e Windows.
Uma vez conectado ao servidor SQL Server, preciso permisses de acesso a um ou mais Bancos de Dados.
Conforme vimos no Captulo 2, em um nico servidor SQL Server, podemos ter uma ou mais instncias do
SQL Server instaladas. Cada instncia como se fosse um servidor completamente separado. Em cada
instncia podemos ter vrios Bancos de Dados, os quais podem ter os seguintes objetos:
Tables
Views
Stored Procedures
Extended Stored Procedures
Users
Roles
Rules
Defaults
User Defined Data Types
User Defined Functions
Full-Text Catalogs.
No item anterior vimos que o usurio precisa de um login para conectar-se com o servidor SQL. A
conexo sempre feita com uma instncia do servidor SQL Server. Ao fazer a conexo, o usurio
automaticamente associado a um dos Bancos de Dados da instncia a qual se conectou. Conforme
veremos na parte prtica, possvel definir com qual Banco de Dados o usurio ser automaticamente
associado. Mas isso no significa que o usurio somente poder acessar dados do Banco de Dados com
o qual ele automaticamente associado na conexo. A que entra o segundo estgio de segurana pelo
qual o usurio ter que passar. Alm de fazer a conexo, o usurio precisa estar autorizado para acessar
o(s) Banco(s) de Dado(s) a partir do qual o mesmo precise acessar dados. Ento, o prximo passo
autorizar o usurio a acessar um ou mais Bancos de Dados.
Podemos dar permisso para o usurio ou para uma Role ao qual ele pertence. O conceito de Role, no
SQL Server 2000, exatamente igual ao conceito de Grupos de Usurios no Windows 2000. Uma Role
pode conter um ou mais usurios. Se dermos uma permisso para uma Role, todos os usurios que
pertencem Role iro herdar as permisses atribudas Role. ou no a mesma coisa que grupos de
usurios no Windows, no UNIX, etc., Mas, enfim, quem sou eu para criticar a criatividade do pessoal
que inventa os nomes para os objetos do SQL Server 2000.
J aprendemos a criar alguns destes elementos e iremos aprender a criar outros no decorrer deste livro.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
286 00CURSO COMPLETO
Vejam que o usurio j precisa passar por dois nveis de segurana:
Permisso para fazer a conexo com o SERVIDOR\INSTNCIA.
Permisso para acessar um ou mais Bancos de Dados.
Observe o exemplo da Figura 6.5.
Figura 6.5 Usurio com permisso de conexo, porm sem permisso no Banco de Dados.
Nesta situao, o usurio jsilva tem permisso para fazer a conexo com o SQL Server, porm no tem
permisso para acessar o Banco de Dados Clientes, que est no servidor SQL. Neste caso se jsilva tentar
acessar algun objeto do Banco de Dados Clientes, o acesso ser negado, pois jsilva no tem permisso
de acesso a este Banco de Dados.
Para que jsilva possa ter acesso ao Banco de Dados Clientes temos que adicion-lo lista de usurios
autorizados a acessar o Banco de Dados Clientes e dar as permisses para que ele possa realizar as
tarefas necessrias. Exemplos de permisses para Banco de Dados so as seguintes:
Criar tabelas
Excluir tabelas
Alterar tabelas
Criar Roles
Criar Views
login: jsilva
senha: abc123
SQL Server 2000
SERVIDOR\SRVINST01

Login e senha cadastrados:


-> jsilva
-> abc123
-> pedro
-> 234uyt
-> ...
x
Clientes
Usurios com
permisso:
-> pauloc
-> sa
-> abc\Administrador
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
287 CURSO COMPLETO00
Conectei com o servidor SQL, tenho permisso de acesso ao Banco de Dados e ainda no consigo
executar uma consulta. O que est acontecendo?
Alm das permisses para acessar o Banco de Dados, podemos e devemos, definir permisses de acesso
para cada objeto do mesmo. Por exemplo pode ser que alguns usurios devam ter permisso de leitura
na tabela Cadastro do Banco de Dados Clientes, porm somente os gerentes devem ter permisso de
leitura na tabela Pagamentos do Banco de Dados Clientes. Podemos definir o acesso, individualmente,
para cada tabela, view, etc. Portanto, podemos definir permisses de acesso para cada objeto que faz
parte de um Banco de Dados.
O fato de podemos definir permisses para cada objeto, nos d uma grande flexibilidade. A partir desta
flexibilidade que podemos definir diferentes nveis de acesso para diferentes usurios, o que bastante
comum nas aplicaes atuais. Alguns usurios devem ter permisso de leitura aos dados; outros de
leitura e alterao; outros leitura, alterao e excluso e assim por diante.
Observe o exemplo da Figura 6.6.
Figura 6.6 Usurio com permisso de conexo, permisso no Banco de Dados, porm sem permisso na tabela Pagamentos.
Neste exemplo, temos os seguintes passos:
1. O usurio jsilva consegue fazer a conexo com os servidor SQL Server.
2. O usurio jsilva est autorizado a acessar o Banco de Dados Clientes.
3. O usurio jsilva NO EST AUTORIZADO a acessar os dados da tabela Pagamentos.
Veja que temos trs barreiras de segurana a serem vencidas, antes que o usurio possa acessar os dados
de uma tabela.
2
3
1
login: jsilva
senha: abc123
SQL Server 2000
SERVIDOR\SRVINST01

Login e senha cadastrados:


-> jsilva
-> abc123
-> pedro
-> 234uyt
-> ...
x Clientes
Usurios com permisso:
-> paulo
-> sa
-> abc\Administrador
Tabela
Pagamentos
Usurios com permisso:
-> jsilva
-> sa
-> abc\Administrador
x
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
288 00CURSO COMPLETO
UM RESUMO DA TEORIA SOBRE SEGURANA NO SQL SERVER 2000
Conforme descrevemos neste item, existem dois modos de segurana no SQL Server 2000. O modo
Windows only, onde somente so aceitos login de usurios do domnio, quer seja de um domnio
Windows NT 4.0 ou Windows 2000. O modo SQL Server e Windows admite as contas do domnio e
tambm contas criadas no prprio SQL Server 2000.
Para conectar com o servidor, o usurio precisa de um login, quer seja do domnio ou do prprio SQL
Server. Depois o usurio precisa estar na lista de usurios autorizados a acessar os Bancos de Dados
necessrios. Dentro de cada Banco de Dados, podem ser definidas as permisses aos objetos. Por exemplo,
um usurio pode receber permisso para consultar os dados de uma tabela e para consultar e alterar os
dados de outra tabela.
Pode parecer parania todas estas medidas de segurana, mas conforme descrevemos anteriormente a
informao o bem mais valioso de que as empresas dispem. Proteger este bem de fundamental
importncia. Qual o preo da perda total de um Banco de Dados para os negcios da empresa? Com
certeza bem menor do que treinar o DBA para que o mesmo possa entender e configurar corretamente
as opes de segurana do Banco de Dados.
O que vimos at aqui a teoria sobre segurana no SQL Server 2000. Nos prximos itens estaremos
implementando a segurana na prtica. Aprenderemos a criar Login Accounts, a autorizar usurios a
acessar Bancos de Dados e seus objetos.
Mas antes de aprendermos a parte prtica, vamos fazer uma pequena parada para falar de alguns
conceitos bsicos de segurana do Windows 2000 Server, como por exemplo os conceitos de Domnio
e Workgroup, contas de usurios e grupos de usurios.
Importante: At o Captulo 5, sempre que fazamos uma conexo com o servidor SQL, estvamos nos
conectando com a conta do usurio Administrador. Por isso que tivemos permisso para executar
todas as tarefas, como por exemplo criar Bancos de Dados, backup devices, etc.
KNOW-HOW EM: SEGURANA NO WINDOWS 2000 SERVER
PR-REQUISITOS
Noes bsicas do Windows 2000 ou Windows NT Server 4.0.
METODOLOGIA
Apresentao terica sobre o modelo de segurana do Windows 2000 Server.
Vimos que, no modelo de segurana do SQL Server 2000, podemos dar autorizao para usurios e
grupos de usurios de um domnio do Windows 2000 (ou Windows NT), para conexo com o servidor
SQL Server. Neste item vamos fazer um pequeno parnteses para falar sobre alguns conceitos de segurana
do Windows 2000. Estes conceitos ajudaro o amigo leitor a entender melhor o modelo de segurana
do SQL Server 2000.
Neste item estaremos tratando dos seguintes tpicos:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
289 CURSO COMPLETO00
Workgroup x Domnios.
Active Directory.
Contas de usurios em um domnio.
Grupos de usurios em um domnio.
DOMNIOS, WORKGROUPS E ACTIVE DIRECTORY
Vamos aprender as diferenas entre um Domnio e um Workgroup e como o Active Directory do
Windows 2000 encaixa-se neste conceito.
DOMNIOS E GRUPOS DE TRABALHO (WORKGROUPS)
Um rede com Windows 2000 Server pode ser criada utilizando-se dois conceitos diferentes, dependendo
da maneira como os servidores Windows 2000 Server so configurados. Os servidores podem ser
configurados para fazerem parte de um Domnio ou de um Grupo de Trabalho, mais comumente
chamado de Workgroup, termo que utilizaremos de agora em diante.
Um Domnio simplesmente um agrupamento lgico de usurios (contas de usurios) e recursos, os
quais compartilham polticas de segurana. Em um domnio podemos ter dois tipos de servidores Win-
dows 2000 Server: Controladores de Domnio (DC Domain Controlers) e Servidores Membro (Member
Servers). Veremos um pouco mais sobre Controladores de Domnio e Servidores Membro mais adiante.
A criao de contas de usurios e alteraes nas Polticas de Segurana podem ser feitas em qualquer
um dos Controladores de Domnio, que as alteraes sero automaticamente repassadas (o termo
utilizado replicadas) para os demais Controladores de Domnio. Por isso se voc cria uma conta
para o usurio jsilva e cadastra uma senha para o mesmo, essa conta passa a ser vlida em todo o
domnio, sendo que o usurio jsilva pode receber permisses para acessar recursos e servios em qualquer
servidor do Domnio, seja em um Controlador de Domnio ou em um Servidor Membro.
Por isso que o Domnio nos transmite a idia de um agrupamento lgico de Contas de Usurios e
Grupos, bem como de Polticas de Segurana, uma vez que todo o Domnio compartilha a mesma lista
de Usurios, Grupos e polticas de segurana. A criao de domnios facilita enormemente a
administrao de uma rede Windows 2000 Server, sendo altamente recomendada para qualquer rede
maior do que uma meia dzia de mquinas.
Nos Servidores Membros podem ser criadas contas de Usurios e Grupos, as quais somente sero vlidas
no Servidor Membro onde forem criadas. Embora isso seja possvel, essa prtica no recomendada,
uma vez que isso dificulta enormemente a administrao de um Domnio. Voc pode atribuir permisses,
para os recursos (pastas compartilhadas, impressoras compartilhadas, aplicativos, etc.) de um Servidor
Membro, contas de Usurios e Grupos do Domnio, sem a necessidade de criar esses usurios ou
grupos localmente. Com isso, podemos concluir que um Servidor Membro um servidor que, embora
no mantenha uma cpia da lista de usurios e grupos, possui acesso a essa lista, sendo que podem ser
atribudas permisses aos recursos do Servidor Membro para as Contas e Grupos do Domnio.
Em um Domnio, todos os Controladores de Domnio compartilham uma lista de usurios, grupos e
Polticas de Segurana, alm de algumas outras caractersticas que veremos no tpico sobre o Active
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
290 00CURSO COMPLETO
Directory. Alm disso, alteraes feitas em um dos Controladores de Domnio so automaticamente
replicadas para os demais. Essa replicao, por padro, ocorre de 5 em 5 minutos dentro da mesma
rede local e de 3 em 3 horas atravs de links de WAN, mais lentos.
Como os Servidores Membro no possuem uma cpia da lista de usurios e grupos, os mesmos no
efetuam a autenticao dos clientes e tambm no armazenam informaes sobre as Polticas de
Segurana para o Domnio, as quais tambm so conhecidas por Polices.
Quando os servidores Windows 2000 Server so configurados para trabalhar com um Workgroup, no
existe o conceito de Domnio e nem de Controlador de Domnio. Cada servidor mantm uma lista
separada para contas de Usurios, Grupos e Polticas de Segurana. Com isso, se um usurio precisa
acessar recursos em trs servidores, por exemplo, ser necessrio criar uma conta para esse usurio nos
trs servidores diferentes. Um Workgroup somente recomendado para redes extremamente pequenas,
normalmente com um nico servidor Windows 2000 Server e no mais do que dez estaes clientes.
ACTIVE DIRECTORY
O Active Directory , talvez, a mudana mais significativa includa com o Windows 2000 Server.
tambm a novidade mais divulgada e comentada do Windows 2000 Server.
Mas de uma maneira simples, o que o Active Directory?
O Active Directory o servio de diretrios do Windows 2000 Server. Um Servio de Diretrios um
servio de rede, no qual esto armazenadas informaes sobre todos os objetos e servios disponveis
na rede. Com o Active Directory podemos pesquisar todos os recursos disponveis em uma rede, e
acessar estes recursos de acordo com as definies de segurana implementadas, ou seja, o usurio
somente tem acesso aos recursos para os quais tem permisso de acesso.
Pela descrio formal acima, podemos ver que o Active Directory um servio de rede, no qual ficam
armazenadas informaes sobre dados dos usurios, impressoras, servidores, grupos de usurios,
computadores e Polticas de Segurana. Cada um desses elementos so conhecidos como objetos.
Os recursos disponveis atravs do Active Directory so organizados de maneira hierrquica, atravs do
uso de Domnios. Uma rede, na qual o Active Directory est instalado, pode ser formada por um ou
mais Domnios. Com a utilizao do Active Directory um usurio somente precisa ser cadastrado em
um dos Domnios, sendo que pode receber permisses para recursos em qualquer um dos Domnios.
A utilizao do Active Directory simplifica em muito a administrao, pois fornece um local centralizado,
atravs do qual todos os recursos da rede podem ser administrados. Todos os Controladores de Domnio,
possuem o Active Directory instalado. A maneira de criar um Domnio instalar o Active Directory em
um Member Server e informar que este o primeiro Controlador de Domnio.
O Active Directory utiliza o DNS Domain Name Systems como o seu servio de nomeao de
servidores e recursos. Por isso, um dos pr-requisitos para que o Active Directory possa ser instalado e
funcione perfeitamente que o DNS esteja instalado e corretamente configurado.
Com o agrupamento de objetos em um ou mais Domnios permito que a rede de computadores reflita a
organizao da sua empresa. Para que um usurio cadastrado em um Domnio, possa receber permisses para
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
291 CURSO COMPLETO00
acessar recursos em outros domnios, o Windows 2000 Server cria e mantm relaes de confiana entre os
diversos domnios. As relaes de confiana so bidirecionais e transitivas. Isso significa se o Domnio A
confia no Domnio B, o qual por sua vez confia em um Domnio C, ento o Domnio A tambm confia no
Domnio C. Isso bastante diferente do que acontecia em verses anteriores do Windows, uma vez que as
relaes de confiana tinham que ser criadas e mantidas pelos administradores dos domnios.
Todo Domnio possui as seguintes caractersticas:
Todos os objetos de uma rede (contas de usurios, grupos, impressoras, Polticas de
Segurana, etc.) existem em um Domnio. Cada Domnio somente armazena informaes
sobre os objetos prprios.
Cada Domnio possui suas prprias Polticas de Segurana.
Quando temos diversos domnios se relacionando atravs de relaes de confiana, criadas e mantidas
automaticamente pelo Active Directory, dizemos que temos uma rvore. Uma rvore nada mais do
que um agrupamento ou arranjo hierrquico de um ou mais Domnios do Windows 2000 Server, os
quais compartilham um espao de nome.
Vamos entender um pouco mais o que significa a expresso compartilham um espao de nome.
Primeiramente observe a Figura 6.7.
Figura 6.7 Todos os domnios de uma rvore compartilham um espao de nomes em comum.
Observe que, no diagrama anterior, temos uma rvore com sete Domnios. Mas o que significa mesmo
compartilhar um espao de nome?
Observe que o domnio inicial microsoft.com. Os Domnios seguintes so: vendas.microsoft.com e
suporte.microsoft.com. Quando formamos uma hierarquia de Domnios, compartilhar um espao de
nomes significa que o nome do objeto filho contm o nome do objeto pai. Por exemplo,
vendas.microsoft.com contm microsoft.com. Descendo mais ainda na hierarquia, vemos que isso
continua verdadeiro. Por exemplo, o objeto filho, sistemas.vendas.microsoft.com, contm o nome do
objeto pai, vendas.microsoft.com.
Com isso dizemos que uma rvore de diretrios deste tipo forma um espao de nomes contnuo, onde
o nome do objeto filho sempre contm o nome do objeto pai.
microsoft.com
vendas.microsoft.com
suporte.microsoft.com
sistemas.vendas.microsoft.com office.vendas.microsoft.com
windows.suporte.microsoft.com windows.suporte.microsoft.com
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
292 00CURSO COMPLETO
Voc pode ainda dividir um Domnio em Unidades Organizacionais. Uma Unidade Organizacional
um Container, o qual podemos utilizar para organizar os objetos de um determinado domnio em
um agrupamento lgico para efeitos de administrao. Isso resolve uma srie de problemas de verses
anteriores do Windows. No Windows NT Server 4.0, se um usurio fosse adicionado ao grupo
Administradores (grupo com poderes totais sobre qualquer recurso do domnio), ele poderia tomar
qualquer ao em qualquer servidor do domnio. Com a utilizao de Unidades Organizacionais,
podemos atribuir poderes administrativos apenas na Unidade Organizacional, sem que com isso o
usurio tenha poderes sobre todo o Domnio.
Cada Domnio pode implementar a sua hierarquia de Unidades Organizacionais, independentemente
dos demais domnios, isto , os diversos domnios que formam uma determinada rvore de domnios,
no precisam ter a mesma estrutura hierrquica de unidades organizacionais.
No exemplo da Figura 6.8, o domnio vendas.microsoft.com poderia ter uma estrutura hierrquica de
Unidades Organizacionais, projetada para atender as necessidades do Domnio vendas. Essa estrutura
poderia ser completamente diferente da estrutura do Domnio suporte.microsoft.com, a qual ser
projetada para atender as necessidades do Domnio suporte. Com isso ficamos com uma flexibilidade
bastante grande, de tal forma que a nossa rvore de Domnios e a organizao dos Domnios em uma
hierarquia de Unidades Organizacionais, possa atender perfeitamente s necessidades da empresa. A
utilizao de Unidades Organizacionais no obrigatria.
Utilize Unidades Organizacionais quando:
Voc quiser representar a estrutura e organizao da sua companhia em um Domnio. Sem a
utilizao de Unidades Organizacionais, todas as contas de usurios so mantidas e exibidas
em uma nica lista, independente da localizao, departamento ou funo do usurio.
For necessrio delegar tarefas administrativas sem que para isso tenhamos que dar poderes
sobre todo o Domnio. Com o uso de Unidades Organizacionais, voc pode dar permisses
para um usurio somente na Unidade Organizacional.
Facilitar e melhor acomodar alteraes na estrutura da sua companhia. Por exemplo, muito
mais fcil mover contas de usurios entre Unidades Organizacionais do que entre Domnios.
Os conceitos de Domnio e Controladores de Domnio, bem como do Active Directory so muito
importantes para o Windows 2000 Server.
CONTAS DE USURIOS
Quando trabalhamos com uma rede de computadores, segurana um dos itens de maior importncia.
O Administrador da rede, deve ser capaz de permitir que cada usurio somente tenha acesso aos recursos
sejam eles arquivos, impressoras ou servios os quais sejam necessrios para a realizao do seu
trabalho. Por exemplo, um usurio que trabalha no departamento de bagagem no deve ser capaz de
acessar informaes sobre salrios contidas nos arquivos de um servidor SQL Server 2000, do
departamento de Recursos Humanos.
No Windows 2000 Server, podemos limitar os recursos aos quais cada usurio tem acesso, atravs do
uso de permisses. As permisses de acesso podem ser atribudas para um usurio individualmente, ou
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
293 CURSO COMPLETO00
para um Grupo de Usurios. Para que possamos atribuir permisses, cada usurio deve ser cadastrado
no sistema. Cadastrar o usurio significa criar uma Conta de Usurio para o mesmo. Com uma
conta, o usurio pode efetuar o logon e receber permisses para acessar os mais variados recursos
disponibilizados pelo Windows 2000 Server.
Uma conta pode ser criada em um Controlador de Domnio situao em que a conta vlida e
reconhecida em todo o domnio; ou a conta pode ser criada em um Servidor Membro situao em
que a conta somente vlida e reconhecida no Servidor Membro onde ela foi criada.
Contas criadas em um Controlador de Domnio so chamadas de Domain User Accounts (Contas de
Usurios do Domnio). Essas contas permitem que o usurio faa o logon em qualquer computador do
Domnio e receba permisses para acessar recursos em qualquer computador do Domnio. No decorrer
desta lio, estaremos trabalhando e criando contas em um Domnio chamado GROZA, com um domnio
DNS chamado groza.com. Para criar contas em Servidores Membro, o procedimento bastante
semelhante, apenas a quantidade de campos de informao de cada conta um pouco menor.
Contas criadas em um Servidor Membro so chamadas de Local User Accounts (Contas de Usurios
Locais). Essas contas somente permitem que o usurio faa o logon e receba permisses para acessar
recursos do computador onde a conta foi criada. Sempre que possvel evite criar Contas Locais em
servidores que fazem parte de um domnio. Utilizar as contas do Domnio, as quais ficam armazenadas
no Active Directory, torna a administrao bem mais fcil.
Outro detalhe que voc deve observar, a utilizao de um padro para o nome das contas de usurios.
Isto vlido para contas do Domnio como tambm para contas do SQL Server 2000, caso voc esteja
utilizando o modo de segurana SQL Server e Windows.
Voc deve estabelecer um padro para a criao de nomes, pois no podemos ter dois usurios com o
mesmo nome de logon dentro da mesma Unidade Organizacional. Por exemplo se tivermos na mesma
Unidade Organizacional, dois Jos da Silva e os dois resolverem utilizar como logon jsilva, no ser
possvel. Para isso importante que seja definido um padro e no caso de nomes iguais deve ser
definido uma maneira de diferenci-los. Por exemplo, poderamos usar como padro a primeira letra
do nome e o ltimo sobrenome. No caso de nomes iguais, acrescenta-se nmeros. No nosso exemplo
o primeiro Jos da Silva cadastrado ficaria como jsilva, j o segundo a ser cadastrado ficaria como
jsilva1. Caso no futuro tivssemos mais um Jos da Silva dentro da mesma Unidade Organizacional,
este seria o jsilva2 e assim por diante.
Quando formos criar nomes de logon para os usurios, devemos levar em considerao os seguintes fatos:
Nomes de Usurios do Domnio devem ser nicos dentro da Unidade Organizacional onde o
usurio for cadastrado.
Podem ter no mximo 20 caracteres.
Os seguintes caracteres no podem ser utilizados: / \: ; [ ] | = , + * ? < >
Sempre que voc for cadastrar um usurio tambm deve ser cadastrada uma senha para o mesmo. O
nmero mximo de caracteres da senha 128.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
294 00CURSO COMPLETO
Para as senhas, o Windows 2000 Server distingue letras maisculas de minsculas. Por exemplo a senha Abc123 diferente da senha abc123.
Vamos praticar um pouco. Vamos criar algumas contas de usurios. Estaremos utilizando estas contas
para atribuir permisses de acesso no SQL Server 2000, mais adiante, neste captulo.
Exemplo:
Criar as seguintes contas de usurios com as respectivas senhas:
Tabela 6.1 Contas de Usurios do Domnio GROZA.
Para criar a Conta para o usurio user1, faa o seguinte:
1. Efetue o logon como Administrador no Windows 2000.
2. Abra o console Usurios e Computadores do Active Directory (Iniciar -> Programas ->
Ferramentas administrativas -> Usurios e Computadores do Active Directory). Ser inicializado
o console para Gerenciamento do Diretrio.
3. D um clique no sinal de mais ao lado de groza.com (provavelmente o nome do seu domnio
seja diferente, d um clique no sinal de mais ao lado do nome do seu Domnio). Abaixo de
groza.com surgem diversas opes.
4. D um clique na opo Users (ou Usurios se o Snap-in j estiver traduzido para o Portugus).
No painel da direita exibida uma listagem com o nome de todos os usurios, conforme
indicado na Figura 6.8.
5. D um clique com o boto direito do mouse, na opo Users.
6. No menu que surge, aponte para a opo Novo -> Usurio.
7. Surge um assistente para ajud-lo a criar um novo usurio. Digite as informaes para criar o
usurio user1, conforme indicado na Figura 6.9.
Nome da conta Senha Nome completo
user1 senha123 Usurio1 da Silva
user2 senha123 Usurio2 da Silva
user3 senha123 Usurio3 da Silva
user4 senha123 Usurio4 da Silva
user5 senha123 Usurio5 da Silva
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
295 CURSO COMPLETO00
Figura 6.8 Listagem com todos os usurios j cadastrados.
Figura 6.9 Criando o usurio user1.
Nome de logon do usurio o nome que o usurio utiliza para efetuar o logon em computadores com o Windows 2000 Server. J
Nome de logon do usurio (anterior ao Windows 2000) o nome que o usurio utiliza para efetuar o logon em computadores com
verses mais antigas do Windows NT, tais como o Windows NT Server 4.0. Por simplicidade estes dois nomes devem ser iguais, observe
que medida que voc digitar o primeiro, o segundo ser automaticamente preenchido.
medida que voc for digitando o Nome, Iniciais e Sobrenome, o Windows 2000 Server vai preenchendo o campo Nome completo. Caso
voc queira possvel alterar o Nome completo, sem que isso provoque mudana nos demais campos.
8. D um clique no boto Avanar, seguindo para a prxima etapa.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
296 00CURSO COMPLETO
9. Na prxima tela voc deve digitar a senha do usurio duas vezes, para confirmao. Digite senha123
nos campos Senha e Confirmar senha. Observe que a medida que voc digita a senha, o Win-
dows 2000 Server exibe apenas asteriscos (*) nos campos Senha e Confirmar senha.
Outras opes que podem ser configuradas nesta tela:
O usurio deve alterar a senha no prximo logon: Se esta opo estiver marcada, na primeira
vez que o usurio fizer o logon ser solicitado que o mesmo altere a sua senha. Esta opo
utilizada para que o usurio possa colocar uma senha que somente ele conhece, pois quando o
usurio cadastrado, a senha digitada pelo Administrador, o qual fica sabendo a senha do
usurio. No prximo logon o usurio altera a senha de tal maneira que somente ele saiba qual
a senha para a sua conta.
O usurio no pode alterar a senha: A senha somente pode ser alterada pelo Administrador.
Normalmente utilizada para empregados temporrios e para estagirios.
A senha nunca espira: Independente das Polticas de Segurana do Domnio, se esta opo estiver
marcada, o usurio nunca precisa trocar a sua senha. Caso contrrio de tempos em tempos
(conforme configurado nas Polticas de Segurana do Domnio), o usurio deve troc-la.
A conta est desativada: O Administrador marca esta opo para bloquear a conta de um usurio.
Usurios com a conta bloqueada no podem mais efetuar logon e, consequentemente, no
podem mais acessar nenhum recurso. Esta opo normalmente utilizada para desativar,
temporariamente, a conta de empregados que esto em frias. Quando o empregado retorna
ao servio, o Administrador libera a sua conta, simplesmente desmarcando esta opo.
10. Certifique-se de que as quatro opes acima descritas esto desmarcadas e d um clique no boto
Avanar.
Surge uma tela informando que um novo objeto ser criado. Lembre-se que todos os elementos do
Active Directory so chamados de objetos, conforme descrito anteriormente.
11. D um clique no boto Concluir. Aps isso, o usurio Usurio1 da Silva j aparece na listagem
de usurios.
12. Repita os passos anteriores para criar as contas dos demais usurios indicados na Tabela 6.1.
13. Feche o console Usurios e Computadores do Active Directory.
Para testar se as contas foram criadas com sucesso, voc pode fazer o logoff e fazer o logon utilizando uma das contas recm criadas.
Por padro para fazer o logon diretamente no servidor, a conta do usurio deve possuir o seguinte direito Log on locally. Se voc no
tiver conseguindo fazer o logon com as contas recm criadas, entre em contato com o Administrador da rede para que ele d este direito
s contas recm criadas. Se voc mesmo for o Administrador da rede, melhor ainda.
GRUPOS DE USURIOS E TIPOS DE GRUPOS EXISTENTES NO WINDOWS 2000 SERVER
Agora vamos falar um pouco de teoria sobre grupos de usurios. Em seguida vamos praticar, criando
alguns grupos e adicionando alguns membros aos grupos criados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
297 CURSO COMPLETO00
Um grupo de usurios uma coleo de contas de usurios. Por exemplo, podemos criar um grupo
chamado Contabilidade, do qual faro parte todos os usurios do departamento de Contabilidade.
A principal funo dos grupos de usurios facilitar a administrao e a atribuio de permisses para
acesso a recursos, tais como: pastas compartilhadas, impressoras remotas, servios diversos, etc. Ao
invs de darmos permisses individualmente, para cada um dos usurios que necessitam acessar um
determinado recurso, podemos criar um grupo e atribuir permisses para o grupo. Para que um usurio
tenha permisso ao recurso, basta inclui-lo no grupo que tem permisso de acesso, pois todos os usurios
de um determinado grupo herdam as permisses dos grupos aos quais pertence.
Quando um usurio troca de seo, por exemplo, basta trocar o usurio de grupo. Vamos supor que o
usurio jsilva trabalha na seo de Contabilidade e pertence ao grupo Contabilidade. Ao ser transferido
para a seo de Marketing, basta movermos o usurio do grupo Contabilidade para o grupo Marketing.
Com isso, ele deixa de ter as permisses atribudas ao grupo Contabilidade e passa a ter as mesmas
permisses que tm o grupo Marketing. Veja o quanto a utilizao de grupos pode facilitar a atribuio
de permisses.
Podemos inclusive ter situaes mais especficas. Vamos supor que exista um sistema chamado SEAT,
para o qual somente um nmero restrito de usurios deve ter acesso, sendo que so usurios de diferentes
sees. A maneira mais simples de solucionar esta questo criar um grupo chamado SEAT e dar permisses
para esse grupo. Assim cada usurio que precisar acessar o sistema SEAT, deve ser includo no grupo SEAT.
Quando o usurio no deva mais ter acesso ao sistema SEAT, basta remov-lo do grupo SEAT.
Na Figura 6.10 vemos uma ilustrao para o conceito de Grupo de usurios. O Grupo Contabilidade
possui direito para um recurso compartilhado, o qual pode ser acessado atravs da rede. Todos os
usurios que pertencem ao grupo contabilidade, tambm possuem permisso para o recurso
compartilhado, uma vez que os usurios de um grupo herdam as permisses do grupo.
Figura 6.10 O usurio herda as permisses do grupo.
Quando estiver trabalhando com grupos de usurios, considere o seguinte:
Grupo de usurios uma coleo de contas de usurios.
Os membros de um grupo herdam as permisses atribudas ao grupo.
Os usurios podem ser membros de vrios grupos.
Grupos podem ser membros de outros grupos.
Grupo Contabilidade
Recurso Compartilhado
para o qual o grupo
Contabilidade possui
permisso de Acesso.
Grupo Contabilidade com permisses de
acesso ao recurso.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
298 00CURSO COMPLETO
Agora vamos dar uma olhada nos tipos de grupos existentes no Windows 2000 Server.
Podemos ter dois tipos de grupos no Windows 2000 Server: Grupos de segurana (Security groups) e
Grupos de distribuio (Distribution groups).
Grupos de segurana: Utilizados para atribuir permisses de acesso a recursos da rede. Um
Grupo de segurana tambm pode ser utilizado como um Grupo de distribuio, embora essa
no seja uma situao muito comum. Esses grupos, assim como as contas de usurios so
armazenados no Banco de Dados do diretrio.
Grupos de distribuio: So utilizados para funes no relacionadas com segurana. Uma das
utilizaes tpicas para um Grupo de distribuio o envio de mensagens de e-mail para um
grupo de usurios de uma s vez. Somente aplicativos que foram programados para trabalhar
com o Active Directory, podero utilizar Grupos de distribuio. Provavelmente, as novas verses
dos principais sistemas de Correio Eletrnico estaro habilitadas para trabalhar com o Active
Directory. No podemos utilizar grupos de distribuio para funes relacionadas com segurana.
Escopo de grupos de usurios:
Quando criamos um grupo de usurios, devemos selecionar um tipo e um escopo. O Escopo permite
que o grupo seja utilizado em diferentes locais, para a atribuio de permisses. O Escopo de um grupo
determina em que partes da rede poderemos usar o grupo para atribuir permisses para o mesmo.
Existem trs escopos para grupos de usurios, conforme descrito a seguir:
Grupos globais (Global group):
Somente pode conter membros do Domnio no qual o grupo criado.
Pode receber permisses para recursos localizados em qualquer Domnio.
Grupos locais do domnio (Domain local group):
Pode conter membros de qualquer Domnio.
Somente pode receber permisses para o Domnio no qual o grupo criado.
Grupos universais (Universal group):
Pode conter membros de qualquer Domnio.
Pode receber permisses para recursos localizados em qualquer Domnio.
O Escopo de um grupo, tambm determina quem pode ser membro do grupo. Tanto usurios como
outros grupos podem ser membros de um determinado grupo. Considere as regras a seguir:
Grupo global:
Pode conter: Contas de usurios e grupos globais do mesmo Domnio.
Pode ser membro de: Grupos universais e Grupos locais do Domnio em qualquer Domnio
ou Grupos globais no mesmo Domnio.
Grupo local do domnio:
Pode conter: Contas de usurios, Grupos universais e grupos globais de qualquer Domnio
ou Grupos locais do domnio do mesmo Domnio.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
299 CURSO COMPLETO00
Pode ser membro de: Grupos locais no domnio do mesmo Domnio.
Grupo universal:
Pode conter: Contas de usurios, Grupos universais, e Grupos globais de qualquer Domnio.
Pode ser membro de: Grupos locais do domnio ou Grupos universais de qualquer Domnio.
Vamos aprender a criar grupos. Vamos criar os grupos indicados na tabela 6.2.
Tabela 6.2 Grupos de Usurios do Domnio GROZA.
Exemplo:
Para criar os grupos Grupo1 e Grupo2, indicados na Tabela 6.2, faa o seguinte:
1. Efetue o logon como Administrador no Windows 2000.
2. Abra o console Usurios e Computadores do Active Directory (Iniciar -> Programas ->
Ferramentas administrativas -> Usurios e Computadores do Active Directory). Ser inicializado
o console para Usurios e Computadores do Active Directory.
3. D um clique no sinal de mais ao lado de groza.com (provavelmente o nome do seu domnio
seja diferente, d um clique no sinal de mais ao lado do nome do seu Domnio). Abaixo de
groza.com surgem diversas opes.
4. D um clique na opo Users (ou Usurios se o Snap-in j estiver traduzido para o Portugus).
No painel da direita exibida uma listagem com o nome de todos os usurios e grupos do
Domnio groza.com.
Nome da conta Membros do grupo
Grupo1 user1, user2 e user3
Grupo2 user3, user4 e user5
Na prtica, a opo Users nada mais do que uma Unidade Organizacional, a qual pode conter contas de usurios e de grupos de usurios.
5. D um clique com o boto direito do mouse, na opo Users.
6. No menu que surge, aponte para a opo Novo -> Grupo.
7. Surge um assistente para ajud-lo a criar um novo Grupo. Digite as informaes para criar o
grupo Grupo1, conforme indicado na Figura 6.11.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
300 00CURSO COMPLETO
Figura 6.11 Criando o grupo Grupo1.
8. D um clique no boto OK para criar o grupo. Voc estar de volta ao console Usurios e
Computadores do Active Directory.
Observe no painel da esquerda que j aparece o grupo chamado Grupo1. Neste momento o grupo est
criado, porm no temos nenhum usurio pertencente ao grupo. No prximo exemplo, aprenderemos
a adicionar usurios ao grupo.
9. Repita os passos de 5 8 para criar o grupo Grupo2.
10. Mantenha o console Usurios e Computadores do Active Directory aberto.
Agora temos que adicionar os usurios user1, user2 e user3 ao grupo Grupo1 e os usurios user3, user4
e user5 ao grupo Grupo2. Observe que o usurio user3 pertence aos dois grupos.
Exemplo:
Para adicionar os usurios aos respectivos grupos, conforme indicado na Tabela 6.2, faa o seguinte:
1. Voc deve estar com o console Usurios e Computadores do Active Directory aberto. Se no
estiver, abra-o e navegue at a opo Users.
2. No painel da direita, localize Grupo1 e d um clique duplo para abrir as propriedades do mesmo.
Surge a janela indicada na Figura 6.12, onde a guia Geral vem selecionada por padro. Preencha
os campos Descrio e Comentrios, conforme indicado na figura.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
301 CURSO COMPLETO00
Figura 6.12 Alterando as propriedades do Grupo1.
3. D um clique na guia Membros. Vamos utilizar esta guia para adicionar os usurios user1,
user2 e user3 como membros de Grupo1. Observe que a guia Membros ainda no possui nenhum
usurio adicionado.
4. Para adicionar usurios ao grupo, d um clique no boto Adicionar. Surge a janela Selecione
Usurios, Contatos ou Computadores, conforme indicado na Figura 6.13. Nesta janela exibida
uma listagem com todos os usurios cadastrados no domnio groza.com.
5. Para adicionar o usurio user1 (Usurio1 da Silva) localize-o na listagem, d um clique sobre
ele para marc-lo e depois d um clique no boto Adicionar. Voc tambm pode dar um clique
duplo sobre o nome do usurio, que o mesmo ser adicionado diretamente.
6. Repita a operao do passo anterior, para os usurios user2 (Usurio2 da Silva) e user3 (Usurio3
da Silva).
7. D um clique no boto OK para fechar essa janela e voltar guia Membros.
8. Sua janela deve estar conforme indicado na Figura 6.14, a qual indica que os usurios Usurio1
da Silva (user1), Usurio2 da Silva (user2) e Usurio3 da Silva (user3) foram adicionados como
membros do grupo Grupo1.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
302 00CURSO COMPLETO
Figura 6.13 Lista de Usurios, Contatos e Computadores do Domnio groza.com.
Figura 6.14 Trs usurios adicionados como membros do grupo Grupo1.
9. D um clique em OK para fechar a janela de propriedades do grupo Grupo1.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
303 CURSO COMPLETO00
10. Repita as operaes anteriores para adicionar os usurios user3, user4 e user5 ao grupo Grupo2.
11. Feche o console Usurios e Computadores do Active Directory.
A partir deste momento, qualquer permisso que for atribuda ao grupo Grupo1 ser herdada por
todos os seus membros deste grupo, no nosso exemplo, pelos usurios user1, user2 e user3.
Existem algumas contas de usurio que so criadas no momento em que o Windows 2000 Server instalado. Essas contas so conhecidas
como Built-in Accounts. A mais importante delas a conta Administrador. Essa conta tem poderes totais sobre o Domnio, mas no tem
nenhuma restrio de segurana. Muito cuidado com quem vai usar essa conta em um ambiente de produo. Precisa ser uma pessoa
qualificada e que sabe o que est fazendo. A conta Administrador pode ser renomeada, porm no pode ser excluda nem bloqueada.
Outra conta que criada quando da instalao do Windows 2000 Server a conta de usurio
Convidado (Guest). Esta conta, normalmente, utilizada para acesso de usurios que no possuem
uma conta cadastrada no domnio. Por padro esta conta est desabilitada. O Administrador pode
habilitar a conta Convidado. Porm isso deve ser feito com cuidado. Sempre que um usurio precise
acessar algum recurso, o ideal cadastrar o usurio e incluir o mesmo no grupo (ou grupos), que tem
permisso para acessar o recurso desejado.
Existem tambm alguns grupos criados durante a instalao do Windows 2000 Server, so os chamados
Built-in Groups. O mais importante de todos o grupo Administradores. Todo membro deste grupo tem
plenos poderes no Domnio. No console Usurios e Computadores do Active Directory (Iniciar > Programas
> Ferramentas administrativas > Usurios e Computadores do Active Directory), existe uma opo chamada
Built-in. Ao clicar nessa opo ser exibida uma listagem com diversos grupos criados durante a instalao
do Windows 2000 Server. Observe na coluna tipo, que o tipo destes grupos Grupo de segurana local
interno e na coluna descrio podemos ver um resumo das permisses de cada um dos grupos.
Exerccio:
Com os conhecimentos apresentados neste item, crie os usurios e grupos indicados na Tabelas 6.3 e
6.4, respectivamente. Estaremos utilizando estes usurios e grupos nos demais itens deste captulo.
Tabela 6.3 Criando mais contas de usurios no Domnio groza.com.
Nome da conta Senha Nome completo
user6 senha123 User6 da Silva
user7 senha123 User7 da Silva
user8 senha123 User8 da Silva
jose senha123 Jos da Silva
maria senha123 Maria da Silva
pedro senha123 Pedro da Silva
paulo senha123 Paulo da Silva
jovina senha123 Jovina da Silva
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
304 00CURSO COMPLETO
Tabela 6.4 Criando mais grupos de usurios no Domnio groza.com.
Com isso tivemos uma noo geral sobre usurios e grupos no Windows 2000. Agora podemos fechar
o nosso parnteses sobre segurana no Windows 2000 e voltar a segurana no SQL Server 2000.
KNOW-HOW EM: CRIAO E GERENCIAMENTO
DE LOGIN E ROLES NO SQL SERVER 2000
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Noes bsicas sobre o modelo de segurana do SQL Server 2000.
Noes bsicas sobre o modelo de segurana do Windows 2000 Server.
Saber utilizar o Enterprise Manager e o Query Analyzer.
METODOLOGIA
Apresentao dos comandos necessrios para a criao e gerenciamento de logins e roles.
TCNICA
Criao de logins e roles nos Bancos de Dados criados nos captulos anteriores, utilizando o Query Analyzer e o Enterprise Manager.
A partir de agora aprenderemos a adicionar logins e roles em instncias do SQL Server 2000.
Vamos fazer uma rpida recapitulao da configurao que estou utilizando neste livro. Estou
trabalhando em um servidor com o Windows 2000 Server instalado. Este servidor um Controlador
de domnio do Domnio GROZA, sendo que o nome DNS do Domnio groza.com. O nome deste
servidor SERVIDOR. Nele temos duas instncias do SQL Server 2000 instaladas, que so as seguintes:
SERVIDOR\SRVINST01
SERVIDOR\SRVINST02
Utilizando as instrues do incio do captulo, certifique-se de que as instncias esto utilizando os
modos de segurana indicados na Tabela 6.5.
Nome da conta Membros do grupo
Consulta user3, user6, jose, maria
Alterao user3, user7, pedro e paulo
Dbas paulo, user8 e jovina
Excluso user3, jose
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
305 CURSO COMPLETO00
Tabela 6.5 Cada instncia em um modo de segurana diferente.
Na instncia SERVIDOR\SRVINST01 somente poderemos adicionar logins do Windows 2000, pois a
mesma est no modo de segurana Windows Only. J na instncia SERVIDOR\SRVINST02, poderemos
adicionar logins do Windows 2000 e do SQL Server 2000, pois estamos no modo de segurana SQL
Server and Winodws.
Estaremos utilizando os termos logins e users com significados diferentes. Adicionar um login significa dar permisso a um usurio para
que o mesmo faa a conexo com o Servidor SQL Server 2000. Adicionar um user significa pegar um dos usurios com permisso de
conexo, isto , um dos logins, ao Servidor SQL Server e dar permisso de acesso a um Banco de Dados. Ento resumidamente: um login
d permisso de conexo com o servidor SQL Server 2000, e user d permisso de acesso a um ou mais Bancos de Dados. Na prtica
estes so os termos utilizados pelo SQL Server 2000. No Enterprise Manager, nas opes do servidor, temos uma opo Security. Dentro
da opo Security temos uma opo Logins, que onde iremos adicionar os usurios com permisso de login. J dentro de um Banco de
Dados temos uma opo users, que onde adicionaremos os usurios com permisso de acesso ao Banco de Dados. Na Figura 6.15
podemos ver estas duas opes.
Instncia Modo de segurana
SERVIDOR\SRVINST01 Windows only
SERVIDOR\SRVINST02 SQL Server and Windows
Figura 6.15 Logins para o servidor, users para o Banco de Dados.
Seguindo a nossa metodologia, vamos aprender a adicionar usurios utilizando o Enterprise Manager,
o Create Login Wizard e comandos T-SQL.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
306 00CURSO COMPLETO
Parece um trabalho enorme, mas veremos que extremamente simples. Juro que este exemplo d mais
trabalho para elaborar do que para executar.
CRIANDO LOGINS COM O ENTERPRISE MANAGER
Vamos aprender a criar logins utilizando o Enterprise Manager.
Utilizaremos o Enterprise Manager para adicionar os logins da Tabela 6.6. Adicionaremos estes logins
instncia SERVIDOR\SRVINST01, a qual est no modo Windows only.
Tabela 6.6 Logins a serem adicionados SERVIDOR\SRVINST01.
Exemplo:
Para adicionar os logins da Tabela 6.6, faa o seguinte:
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Secu-
rity para expandi-la.
Abaixo de Security existe uma opo Logins, a qual utilizaremos para adicionar logins ao servidor SQL
Server. Neste caso, como a instncia SERVIDOR\SRVINST01 est no modo de segurana Windows
only, somente poderemos adicionar como logins desta instncia, contas de usurios ou grupos do
Windows 2000 Server. Adicionaremos as contas indicadas na Tabela 6.6.
6. D um clique com o boto direito do mouse na opo Logins. No menu de opes que surge,
d um clique na opo New Login. Surge a janela para adio de um novo login.
Nome da conta Tipo J existe? ?
user1 Windows Sim Usurio
user2 Windows Sim Usurio
user3 Windows Sim Usurio
user4 Windows Sim Usurio
user5 Windows Sim Usurio
grupo1 Windows Sim grupo
grupo2 Windows Sim grupo
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
307 CURSO COMPLETO00
7. No campo nome, podemos digitar o nome do login. Quando estamos adicionando usurios de
um Domnio do Windows 2000, devemos utilizar a nomenclatura DOMINIO\nome_usurio.
8. Para adicionar o usurio user1 do domnio GROZA, digite GROZA\user1. Voc tambm pode
utilizar o boto com as reticncias (...) para obter uma lista de usurios do Domnio, conforme
indicado na Figura 6.16.
Figura 6.16 Lista de usurios do domnio GROZA.
9. Na listagem do domnio GROZA, localize o usurio user1 (Usurio1 da Silva), d um clique no
mesmo para marc-lo e depois d um clique no boto Adicionar. O campo Adicionar o nome
automaticamente preenchido com GROZA\user1. D um clique no boto OK e voc estar
de volta janela SQL Server Login Properties, com o campo Name preenchido com
GROZA\user1, conforme indicado na Figura 6.17.
Uma limitao que somente podemos adicionar um login por vez. No podemos selecionar diversos usurios ou grupos do domnio e
adicionar todos de uma s vez.
10. Na lista Domain podemos selecionar um outro domnio, a partir do qual adicionaramos um usurio.
11. Observe que podemos permitir o acesso ao servidor (Grant access) ou negar o acesso para o
usurio que est sendo adicionado (Deny access). Certifique-se de que a opo Grant access
esteja selecionada.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
308 00CURSO COMPLETO
Figura 6.17 Adicionando o usurio GROZA\user1.
Na lista Database podemos selecionar qual o Banco de Dados ser, por padro, associado ao usurio
GROZA\user1, quando o mesmo conectar-se com a instncia SERVIDOR\SRVINST01. O Banco de
Dados padro aquele em que os comandos do usurio tero efeito, a menos que seja utilizado um
comando USE outro_banco_dados, para acessar outro Banco de Dados. A simples associao com um
Banco de Dados padro no garante o direito de acesso aos objetos do mesmo, para isso o login que
est sendo adicionado ter que ser inserido a lista de usurios autorizados do Banco de Dados.
Aprenderemos a fazer isso mais adiante.
12. No nosso exemplo, vamos associar todos os usurios com o Banco de Dados pubs. Na lista
Database, selecione pubs.
Na guia Server Roles, podemos fazer com que o login que est sendo adicionado, pertena a uma ou
mais Roles pr-definidas no servidor SQL Server 2000. Uma Role tem funo semelhante a funo de
um grupo de usurios do Windows 2000, e no SQL Server 2000, pode conter um ou mais logins. As
roles pr-definidas possuem uma srie de permisses associadas a cada uma delas. Se adicionarmos um
login a uma role, o login herdar as permisses e direitos da role. Por exemplo, se adicionarmos um
login a role System Administrators, estaremos dando poderes totais sobre todos os objetos de todos os
Bancos de Dados a este login. Isto porque a role System Administrators tem poderes totais e, ao ser
adicionado a role, o login herda estes poderes. Na Tabela 6.7, descrevo as permisses associadas com as
principais roles pr-definidas no SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
309 CURSO COMPLETO00
Tabela 6.7 Permisses associadas com as principais roles pr-definidas.
13. Como nosso usurio no precisa de permisses to avanadas, no iremos adicion-lo a
nenhuma role pr-definida.
14. Na guia Database Access, poderamos habilitar o acesso do login que est sendo adicionado, a
um ou mais Bancos de Dados. No faremos isso agora.
15. D um clique no boto OK e pronto, o login GROZA\user1 ser adicionado instncia
SERVIDOR\SRVINST01.
16. Repita os passos que voc aprendeu neste exemplo, para adicionar os demais logins indicados
na Tabela 6.6. Ao final, a sua janela dever estar conforme indicado na Figura 6.18.
Nome da role Permisses
System Administrators Poderes totais sobre todos os objetos do servidor.
Security Administrators Pode gerenciar logins do servidor.
Server Administrators Pode configurar a maioria das opes do servidor.
Disk Administrators Gerenciar os arquivos de um Banco de Dados.
Database Creators Criar e alterar Bancos de Dados.
Figura 6.18 Diversos logins j adicionados.
Observe a coluna Type. Podemos ter os seguintes tipos:
Standard: um login do SQL Server 2000. Neste caso somente existe o login sa que
automaticamente criado com a instalao do SQL Server 2000.
Windows User: Indica um usurio do Domnio do Windows 2000 ou Windows NT 4.0 se for o caso.
Windows Group: Indica um grupo de usurios do Domnio do Windows 2000 ou Windows NT
4.0 se for o caso.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
310 00CURSO COMPLETO
Na coluna Server Access, podemos ter os valores Permit (acesso permitido) ou Deny (acesso negado).
Conforme podemos constatar, adicionar logins a uma instncia do SQL Server 2000 uma tarefa
bastante simples.
CRIANDO LOGINS COM COMANDOS T-SQL
Vamos aprender a criar logins utilizando comandos T-SQL no Query Analyzer.
Utilizaremos comandos T-SQL para adicionar os logins da Tabela 6.8. Adicionaremos estes logins
instncia SERVIDOR\SRVINST02, a qual est no modo SQL Server and Windows. Para senha dos usurios
do prprio SQL Server, isto , usurios que no so do Domnio do Windows, utilizaremos a senha
senha123 e como Banco de Dados padro o Banco de Dados pubs.
Tabela 6.8 Logins a serem adicionados instncia SERVIDOR\SRVINST02.
Ao adicionarmos logins, temos que considerar os dois modos de segurana: Windows only e SQL
Server and Windows. No caso de estarmos adicionando permisso de login a um usurio ou grupo do
Domnio do Windows, utilizamos o comando sp_grantlogin. Estamos apenas garantindo a um usurio
ou grupo j existente, o direito de login no servidor SQL Server 2000. Para o modo SQL Server and
Windows, em que podemos criar novos logins no prprio SQL Server, utilizamos o comando sp_addlogin.
Na tabela 6.9 temos um resumo destes comandos.
Tabela 6.9 Comandos para adicionar logins.
Nome da conta Tipo J existe? ?
jose Windows Sim Usurio
maria Windows Sim Usurio
pedro Windows Sim Usurio
paulo Windows Sim Usurio
jovina Windows Sim Usurio
grupo1 Windows Sim grupo
grupo2 Windows Sim grupo
sqluser1 SQL Server No Usurio
sqluser2 SQL Server No Usurio
Sintaxe para o comando sp_grantlogin:
exec sp_grantlogin DOMNIO\nome
Comando Utilizado
sp_grantlogin Para adicionar logins do domnio do Windows 2000. Podemos adicionar usurios ou
grupos. Utilizamos o formato DOMNIO\nome.
sp_addlogin Para adicionar novos logins do SQL Server 2000, para o caso de estarmos utilizando o
modo de segurana SQL Server and Windows.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
311 CURSO COMPLETO00
ou
exec sp_grantlogin [DOMNIO\nome]
Por exemplo, para adicionarmos o usurio chico, do Domnio GROZA, utilizamos o seguinte comando:
exec sp_grantlogin GROZA\chico
ou
exec sp_grantlogin [GROZA\chico]
Algumas observaes sobre o comando sp_grantlogin:
sp_grantlogin no pode ser executado como parte de uma transao definida pelo usurio ou
por um aplicativo que o usurio est utilizando.
Somente membros das roles System Administrators (sysadmin) e Security Administrators
(securityadmin) tm permisso, por padro, para utilizar o comando sp_grantlogin.
Para o nosso exemplo, descrito na Tabela 6.8, estaremos utilizando sp_grantlogin para adicionar os
usurios: jose, maria, pedro, paulo, jovina, grupo1 e grupo2.
Podemos remover a permisso de login para um usurio ou grupo do Domnio do Windows, utilizando
o comando sp_revokelogin.
Sintaxe para o comando sp_revokelogin:
exec sp_revokelogin DOMNIO\nome
ou
exec sp_revokelogin [DOMNIO\nome]
Por exemplo, para removermos a permisso de login do usurio chico, do Domnio GROZA, adicionado
anteriormente, utilizamos o seguinte comando:
exec sp_revokelogin GROZA\chico
ou
exec sp_revokelogin [GROZA\chico]
Algumas observaes sobre o comando sp_revokelogin:
Ao removermos a permisso de login, o usurio no poder mais conectar-se com o servidor
SQL, a menos que um dos grupos aos quais o usurio pertena, tenha permisso de login.
Lembre que o usurio sempre herda as permisses do grupo. Se o usurio pertencer a vrios
grupos que possuem permisso de login e a um nico grupo que tem o login explicitamente
negado, o usurio no poder conectar-se com o servidor SQL. Lembre que negar (deny) tem
precedncia sobre permitir.
Somente membros das roles System Administrators (sysadmin) e Security Administrators
(securityadmin) tm permisso, por padro, para utilizar o comando sp_revokelogin.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
312 00CURSO COMPLETO
Podemos negar, explicitamente, a permisso de login para um usurio ou grupo do Domnio do Win-
dows, utilizando o comando sp_denylogin. Neste caso, a conta do usurio ou grupo continua na lista
de logins, porm com o direito de conexo com o servidor SQL, explicitamente negado.
Sintaxe para o comando sp_denylogin:
exec sp_denylogin DOMNIO\nome
ou
exec sp_denylogin [DOMNIO\nome]
Por exemplo, para negarmos, explicitamente, a permisso de login do usurio carlos, do Domnio
GROZA, utilizamos o seguinte comando:
exec sp_denylogin GROZA\chico
ou
exec sp_denylogin [GROZA\chico]
Algumas observaes sobre o comando sp_denylogin:
sp_denylogin no pode ser executado como parte de uma transao definida pelo usurio ou
por um aplicativo que o usurio est utilizando.
Somente membros das roles System Administrators (sysadmin) e Security Administrators
(securityadmin) tm permisso, por padro, para utilizar o comando sp_denylogin.
Para permitir que o usurio volte a se conectar, removendo o efeito de sp_denylogin, podemos
utilizar sp_grantlogin.
Agora vamos tratar dos comandos para a adicionar e remover logins do prprio SQL Server, para o caso
de estarmos trabalhando no modo de segurana SQL Server and Windows.
Para adicionar um login do SQL Server 2000, podemos utilizar o comando sp_addlogin.
Sintaxe para o comando sp_addlogin, conforme descrito no Books OnLine:
sp_addlogin [ @loginame = ] login
[ , [ @passwd = ] password ]
[ , [ @defdb = ] database ]
[ , [ @deflanguage = ] language ]
[ , [ @sid = ] sid ]
[ , [ @encryptopt = ] encryption_option ]
Observe que podemos definir uma srie de opes, tais como a senha (passwd), o Banco de Dados
associado com o login (defdb), a linguagem associada com o login (deflanguage), um identificador de
segurana nico (sid) e a definio se a senha deve ou no ser criptografada ao ser armazenada no
servidor SQL Server (encryptopt). Normalmente no especificamos o parmetro sid, com isso o
identificador nico de segurana ser gerado pelo prprio SQL Server 2000, no momento da criao do
login. O sid um nmero do tipo varbinary(16). Os valores possveis para o parmetro encryptopt
esto descritos na Tabela 6.10.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
313 CURSO COMPLETO00
Tabela 6.10 Valores do parmetro encryptopt.
Por exemplo, para adicionarmos o usurio flavio1, com senha em branco e associado ao Banco de
Dados master, que o Banco de Dados padro, quando nenhum outro for definido, utilizamos o
seguinte comando:
exec sp_addlogin flavio1
Agora vamos adicionar um usurio chamado luciano, com uma senha nene e associado ao Banco de
Dados Clientes:
exec sp_addlogin luciano, nene, Clientes
Algumas observaes sobre o comando sp_addlogin:
sp_addlogin no pode ser executado como parte de uma transao definida pelo usurio ou
por um aplicativo que o usurio est utilizando.
Somente membros das roles System Administrators (sysadmin) e Security Administrators
(securityadmin) tm permisso, por padro, para utilizar o comando sp_addlogin.
Para o nosso exemplo, descrito na Tabela 6.8, estaremos utilizando sp_addlogin, para adicionar os
usurios: sqluser1 e sqluser2.
Para excluirmos um login do SQL Server, podemos utilizar o comando sp_droplogin.
Sintaxe para o comando sp_droplogin.:
exec sp_droplogin. nome
Por exemplo, para excluirmos o usurio luciano, anteriormente adicionado, podemos utilizar o
seguinte comando:
exec sp_droplogin. luciano
Algumas observaes sobre o comando sp_droplogin.:
Somente membros das roles System Administrators (sysadmin) e Security Administrators
(securityadmin) tm permisso, por padro, para utilizar o comando sp_droplogin.
Caso o login que est sendo excludo esteja adicionado como usurio de algum Banco de
Dados, o mesmo no poder ser excludo. Primeiro precisamos remover o login da lista de
usurios, utilizando o comando sp_drpouser, o qual aprenderemos a utilizar mais adiante.
Valor Descrio
NULL A senha ser criptografada. Este o valor padro.
skip_encryption A senha j est criptografada. O valor ser gravado sem a necessidade de
criptograf-lo novamente.
skip_encryption_old A senha deve ser criptografada de acordo com verses anteriores do SQL Server.
O valor ser gravado sem criptograf-lo novamente. Esta opo normalmente
utilizada durante a fase de migrao de verses anteriores.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
314 00CURSO COMPLETO
Os seguintes logins no podero ser excludos:
1. O login de administrao sa.
2. Um login que seja dono de um ou mais Bancos de Dados. O dono de qualquer objeto
no SQL Server o login que criou o objeto.
3. Um login que seja dono de um Job no Banco de Dados msdb.
4. Um login que esteja atualmente conectado com o servidor SQL Server.
O comando sp_droplogin dever checar todos os Bancos de Dados para verificar se o login que
est sendo excludo, no est adicionado lista de usurios com permisso de acesso ao Banco
de Dados. Por isso, para que este comando possa ser executado com sucesso, as seguintes
condies devem ser atendidas:
1. O usurio logado, que est executando sp_droplogin, deve ter permisso de acesso aos
Bancos de Dados ou;
2. A conta guest deve estar habilitada a acessar o Banco de Dados.
Ao criarmos novos logins no SQL Server, devemos levar os seguintes fatos em considerao:
1. Um login no pode conter o caracter barra invertida. No confundir com a barra invertida
utilizada para separar o nome do domnio do nome do usurio.
2. Logins e senhas podem conter at 128 caracteres, incluindo letras, smbolos e dgitos.
3. No podemos adicionar um login com o mesmo nome de um login reservado, como por exemplo
sa ou public.
4. O nome de login no pode conter o valor NULL ou ser uma string vazia .
Agora que j aprendemos os diversos comandos envolvidos com logins, podemos criar os logins
indicados na Tabela 6.8. Lembrando que estes logins sero criados na instncia SERVIDOR\SRVINST02.
Exemplo:
Para criar os logins indicados na Tabela 6.8, faa o seguinte:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST02. Clique em OK para fazer a conexo.
ou
2. Na janela conexo selecione SQL Server authentication, para Login name digite sa e no campo
Password digite a senha do usurio sa. Clique em OK para fazer a conexo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
315 CURSO COMPLETO00
Ser aberto o Query Analyzer com o Banco de Dados master como sendo o Banco de Dados atual.
3. Para criar os logins indicados na Tabela 6.8, digite os seguintes comandos:
Utilizo sp_grantlogin para adicionar
usurio do domnio do Windows 2000
exec sp_grantlogin GROZA\jose
exec sp_grantlogin GROZA\maria
exec sp_grantlogin GROZA\pedro
exec sp_grantlogin GROZA\paulo
exec sp_grantlogin GROZA\jovina
exec sp_grantlogin GROZA\grupo1
exec sp_grantlogin GROZA\grupo2
Agora utilizo sp_addlogin para adicionar
logins do SQL Server 2000
exec sp_addlogin sqluser1, senha123, pubs
exec sp_addlogin sqluser2, senha123, pubs
4. Pressione Ctrl+E para executar o comando.
5. O comando executado com sucesso e a seguinte mensagem exibida:
Granted login access to GROZA\jose.
Granted login access to GROZA\maria.
Granted login access to GROZA\pedro.
Granted login access to GROZA\paulo.
Granted login access to GROZA\jovina.
Granted login access to GROZA\grupo1.
Granted login access to GROZA\grupo2.
New login created.
New login created.
Disk device added.
6. Agora vamos alterar o Banco de Dados padro para os usurios do Domnio GROZA. Para alter-lo,
utilizamos o comando sp_defautldb, com a seguinte sintaxe:
exec sp_defaultdb usurio, Banco de Dados
7. Para alterar o Banco de Dados padro para os usurios do Domnio GROZA, digite os seguintes
comandos:
exec sp_defaultdb GROZA\jose, pubs
exec sp_defaultdb GROZA\maria, pubs
exec sp_defaultdb GROZA\pedro, pubs
exec sp_defaultdb GROZA\paulo, pubs
exec sp_defaultdb GROZA\jovina, pubs
8. Pressione Ctrl+E para executar o comando.
9. O comando executado com sucesso e a seguinte mensagem exibida:
Default database changed.
Default database changed.
Default database changed.
Default database changed.
Default database changed.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
316 00CURSO COMPLETO
10. Pronto, os logins da Tabela 6.8 foram adicionados e o Banco de Dados padro alterado para pubs.
11. Feche o Query Analyzer. Surge uma mensagem perguntando se voc deseja salvar os comandos
digitados, d um clique em No.
CRIANDO LOGINS COM O ASSISTENTE CREATE LOGIN WIZARD
Vamos aprender a criar logins utilizando o assistente Create Login Wizard.
Utilizaremos o assistente Create Login Wizard para adicionar os logins da Tabela 6.11. Adicionaremos
estes logins instncia SERVIDOR\SRVINST02, a qual est no modo SQL Server and Windows.
Tabela 6.11 Logins a serem adicionados SERVIDOR\SRVINST02.
Exemplo:
Para criar os logins indicados na Tabela 6.11, faa o seguinte:
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique na instncia SERVIDOR\SRVINST02 para selecion-la.
5. Selecione o comando Tools - > Wizards...
6. Na janela Select Wizard que surge, d um clique no sinal de mais ao lado de Database.
7. Nas opes que so exibidas, d um clique em Create Login Wizard, para selecion-la. Clique
no boto OK.
8. Ser apresentada a tela inicial do assistente de criao de login. D um clique no boto Avanar
(Next), seguindo para a prxima etapa do assistente.
Nome da conta Tipo J existe? ?
user6 Windows Sim Usurio
user7 Windows Sim Usurio
user8 Windows Sim Usurio
sqluser3 SQL Server No Usurio
sqluser4 SQL Server No Usurio
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
317 CURSO COMPLETO00
Na segunda etapa do assistente podemos definir se iremos adicionar um login do domnio do Win-
dows ou um login do prprio SQL Server. O padro uma conta do domnio do Windows, conforme
indicado na Figura 6.19.
Figura 6.19 Adicionando uma conta do domnio do Windows.
9. D um clique no boto Avanar, para ir para a etapa seguinte do assistente.
10. No campo Windows account digite: GROZA\user6, para adicionar o usurio user6 do Domnio
groza. Nesta etapa tambm podemos definir se estamos permitindo (Grant access to the server)
ou negando (Deny access to the server).
11. Certifique-se de que as configuraes esto conforme indicado na Figura 6.20 e d um clique
no boto Avanar , seguindo para a prxima tela do assistente.
Nesta tela podemos adicionar o login GROZA\user6 a uma ou mais roles pr-definidas. Lembre que ao
adicionar o login a uma role, o mesmo herdar todas as permisses da role.
12. No iremos adicionar o usurio GROZA\user6 a nenhuma role pr-definida, conforme indicado
na Figura 6.21.
13. D um clique no boto Avanar, para ir prxima etapa do assistente.
Nesta etapa podemos permitir o acesso do login a um ou mais Bancos de Dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
318 00CURSO COMPLETO
Figura 6.20 Adicionando uma conta do domnio do Windows.
Figura 6.21 Roles pr-definidas.
14. Vamos permitir o acesso ao Banco de Dados pubs, conforme indicado na Figura 6.22. Ao
darmos permisso de acesso ao Banco de Dados pubs, estamos adicionando o login
GROZA\user6 a lista Users deste Banco de Dados. D um clique no boto Avanar. Ser
exibida a tela final do assistente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
319 CURSO COMPLETO00
Figura 6.22 Dando permisso de acesso ao Banco de Dados pubs.
15. D um clique em Concluir, para adicionar o login GROZA\user6. Se voc precisar fazer alguma
alterao, antes de concluir, pode utilizar o boto Voltar (Back).
16. Ser exibida uma mensagem dizendo que o login foi adicionado com sucesso. D um clique
em OK para fechar esta mensagem.
17. Abra novamente o assistente e repita os passos de 8 15, para adicionar os logins GROZA\user7
e GROZA\user8.
Agora vamos utilizar o assistente para adicionar os logins do SQL Server: sqluser3 e sqluser4.
1. Abra novamente o assistente de login.
2. Clique em Avanar, seguindo para a segunda etapa.
3. Na segunda etapa do assistente, selecione SQL Server login information...
4. D um clique no boto Avanar, para ir prxima etapa do assistente.
5. Nesta tela devemos digitar o nome de login e a senha. A senha deve ser digitada duas vezes
para confirmao. No campo Login ID digite sqluser3. No campo Password digite senha123,
confirme a senha no campo Confirm password.
6. D um clique no boto Avanar, seguindo para a prxima etapa do assistente.
Nesta tela podemos adicionar o login sqluser3 a uma ou mais roles pr-definidas. Lembre que ao
adicionar o login a uma role, o mesmo herdar todas as permisses da role.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
320 00CURSO COMPLETO
No iremos adicionar o usurio sqluser3 a nenhuma role pr-definida.
7. D um clique no boto Avanar, para ir para a prxima etapa.
Nesta tela podemos permitir o acesso do login a um ou mais Bancos de Dados.
8. Vamos permitir o acesso ao Banco de Dados pubs. Para isso selecione pubs, na lista de Bancos
de Dados. Ao darmos permisso de acesso a este Banco de Dados, estamos adicionando o login
sqluser3 lista Users do Banco de Dados pubs. D um clique no boto Avanar.
9. Ser exibida a tela final do assistente. D um clique em Concluir, para adicionar o login sqluser3. Se
voc precisar fazer alguma alterao, antes de concluir, voc pode utilizar o boto Voltar (Back).
10. Ser exibida uma mensagem dizendo que o login foi adicionado com sucesso. D um clique
em OK para fechar esta mensagem.
11. Abra novamente o assistente de login e repita os passos 2 10, para adicionar o login sqluser4.
12. Feche o Enterprise Manager.
CRIANDO ROLES NO SQL SERVER 2000
Conforme j descrevemos, podemos utilizar roles para simplificar a atribuio de permisses de acesso
aos objetos do SQL Server 2000. Tambm nunca demais salientar que role semelhante, para no
dizer idntico, ao conceito de grupo do Windows. 2000.
Por exemplo, podemos criar uma role chamada FinanasConsulta e outra chamada FinanasAlterao.
No Banco de Dados Finanas damos permisso somente de leitura para a role FinanasConsulta e de
leitura, escrita, alterao e excluso para a role FinanasAlterao. Depois inclumos os usurios que
precisam de acesso somente de leitura na role FinanasConsulta, e os que precisam de acesso de leitura
e alterao, inclumos na role FinanasAlterao. Se um usurio no deve mais ter acesso de alterao,
s retir-lo da role FinanasAlterao. Com isso a administrao da segurana no SQL Server 2000
fica bastante simplificada.
Existem algumas roles que j so criadas no momento de instalao do SQL Server 2000. Temos as
chamadas Fixed Server Roles e as Fixed Databases Roles. A seguir, temos as permisses associadas com
cada uma destas roles.
As Fixed Server Roles tm permisso para realizar as tarefas administrativas mais comuns. Por exemplo,
se um usurio responsvel por adicionar ou remover logins, voc pode coloc-lo como membro da
role Securityadmin, que o mesmo ter as permisses necessrias. Isto evita que voc tenha que adicion-
lo a role Sysadmin, dando-lhe mais permisses do que realmente necessita para realizar o seu trabalho.
Na Tabela 6.12, temos a descrio destas roles.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
321 CURSO COMPLETO00
Tabela 6.12 Permisses associadas com as principais Fixed Server Roles.
No possvel criar novas roles a nvel de servidor.
Nome da role Permisses para os membros desta role
Sysadmin Poderes totais sobre todos os objetos do servidor.
Securityadmin Pode gerenciar logins do servidor.
Serveradmin Pode configurar a maioria das opes do servidor.
Diskadmin Gerenciar os arquivos de um Banco de Dados.
Dbcreator Criar e alterar Bancos de Dados.
Processadmin Gerenciar processos rodando no SQL Server.
Setupadmin Pode gerenciar e configurar a replicao entre servidores SQL Server e
extendet store procedures.
A informao sobre Fixed Database Roles armazenada na tabela sysusers do Banco de Dados, conforme indicado na Figura 6.23.
Tambm temos algumas roles pr-definidas para cada Banco de Dados. Na Tabela 6.13, temos a descrio
destas roles.
Tabela 6.13 Permisses associadas com as principais Fixed Database Roles.
Nome da role Permisses para os membros desta role.
db_owner Tem poderes totais sobre o Banco de Dados. O login que cria o Banco de Dados ,
automaticamente, adicionado a esta role.
db_accessadmin Pode adicionar e remover usurios ao Banco de Dados.
db_datareader Pode ler dados em todas as tabelas de usurio do Banco de Dados.
db_datawriter Pode adicionar, alterar ou excluir dados em todas as tabelas de usurio do banco
de dados.
db_ddladmin Pode adicionar, modificar ou excluir objetos no Banco de Dados.
db_securityadmin Pode gerenciar roles e adicionar ou excluir usurios s roles do Banco de Dados.
Pode gerenciar as permisses para objetos do Banco de Dados.
db_backupoperator Pode fazer o backup do Banco de Dados.
db_denydatareader No pode consultar dados em nenhuma das tabelas do Banco de Dados, mas
pode efetuar alteraes na estrutura do Banco de Dados e de seus objetos.
db_denydatawriter No pode alterar dados no Banco de Dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
322 00CURSO COMPLETO
Figura 6.23 A tabela sysusers.
Existe ainda uma role chamada public. Todo usurio adicionado a um Banco de Dados, automaticamente,
pertence a esta role. No podemos adicionar novos usurios a esta role, pois qualquer usurio ou role
que adicionado ao Banco de Dados far parte desta role. A role public no pode ser excluda. Devemos
ter cuidado com as permisses atribudas a esta role, uma vez que todos os usurios e roles do Banco de
Dados fazem parte dela. Porm a mesma pode simplificar a administrao, em determinadas situaes.
Por exemplo, se todos os usurios de um Banco de Dados devam ter acesso de leitura, basta dar a
permisso de leitura para a role public.
Agora precisamos aprender a criar roles no SQL Server 2000 e a adicionar usurios a roles. Vamos seguir
a nossa metodologia. Aprenderemos a criar roles utilizando o Enterprise Manager e tambm comandos
T-SQL no Query Analyzer. Lembrando que somente possvel criar novas roles em nvel de Banco de
Dados, isto , no poderemos adicionar novas roles a nvel de servidor.
PARA CRIAR NOVAS ROLES COM O ENTERPRISE MANAGER
Exemplo:
Utilizando o Enterprise Manager, crie as roles indicadas na Tabela 6.14.
Tabela 6.14 Roles a serem criadas com o Enterprise Manager.
Nome da role Banco de Dados Instncia
consulta Exemplo1 SERVIDOR\SRVINST01
gerentes Exemplo1 SERVIDOR\SRVINST01
fazbackup Exemplo1 SERVIDOR\SRVINST01
consulta pubs SERVIDOR\SRVINST02
gerentes pubs SERVIDOR\SRVINST02
fazbackup pubs SERVIDOR\SRVINST02
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
323 CURSO COMPLETO00
Para criar as roles da Tabela 6.14, faa o seguinte:
1. Abra o Enterprise Manager e navegue at o Banco de Dados Exemplo1 da instncia
SERVIDOR\SRVINST01.
2. D um clique no sinal de mais ao lado do Banco de Dados Exemplo1, para exibir as suas opes.
3. Nas opes que surgem, d um clique na opo Roles para selecion-la. Cuidado para no
confundir com a opo Rules, a qual veremos nos prximos captulos.
4. Clique com o boto direito do mouse na opo Roles. No menu que surge d um clique na
opo New Database Role. Surge a janela para a criao de uma nova role.
5. Digite consulta no campo Name e d um clique em OK para criar a role consulta.
A nova role consulta foi criada, conforme indicado na Figura 6.24.
Figura 6.24 Role consulta j criada no Banco de Dados Exemplo1.
6. Repita os passos 4 e 5 para criar as roles gerentes e fazbackup no Banco de Dados Exemplo1 da
instncia SERVIODR\SRVINST01.
7. Utilize as informaes do exemplo, para criar as roles consulta, gerentes e fazbackup no Banco
de Dados pubs da instncia SERVIDOR\SRVINST02.
PARA CRIAR NOVAS ROLES COM O QUERY ANALYZER
Para adicionar uma nova role a um Banco de Dados, utilizamos o comando sp_addrole.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
324 00CURSO COMPLETO
Sintaxe para o comando sp_addrole:
exec sp_addrole nome, dono da role
Por exemplo, para adicionar uma role chamada teste, cujo dono seja o usurio chico, utilize o seguinte
comando:
exec sp_addrole teste, chico
Algumas observaes sobre o comando sp_addrole:
O nome de uma role pode conter at 128 caracteres, porm no pode conter a barra invertida
e nem pode ser um valor nulo (NULL) ou uma string vazia .
Somente membros das roles sysadmin, db_securityadmin e db_owner tm permisso para utilizar
o comando sp_addrole.
No podemos criar novas roles a nvel de servidor, somente a nvel de Banco de Dados.
Para excluir uma role, podemos utilizar o comando sp_droprole.
Sintaxe para o comando sp_droprole:
exec sp_droprole nome
Por exemplo, para excluir a role chamada teste, criada anteriormente, utilize o seguinte comando:
exec sp_droprole teste
Se no for especificado o parmetro dono, o dono da role ser o usurio dbo database owner.
Algumas observaes sobre o comando sp_droprole:
Somente membros das roles sysadmin, db_securityadmin e db_owner tm permisso para utilizar
o comando sp_droprole.
No podemos excluir uma role que possui membros. Antes, temos que excluir todos os membros
da role, para depois poder exclu-la. Aprenderemos a adicionar e a excluir membros de uma
role, no prximo item.
O comando sp_droprole no pode ser executado no contexto de uma transao definida pelo usurio.
No podemos excluir roles pr-definidas Fixed Server Roles e Fixed Database Roles.
Se no for especificado o parmetro dono, o dono da role ser o usurio dbo database owner.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
325 CURSO COMPLETO00
Tambm podemos utilizar o comando sp_helprole para obter informaes sobre as diversas roles em
um Banco de Dados. Considere o exemplo a seguir:
use pubs
exec sp_helprole
Na Figura 6.25 temos o resultado parcial da execuo deste comando.
Figura 6.25 Resultado do comando sp_helprole.
Agora vamos a um exemplo prtico.
Exemplo:
Utilizando o Query Analyzer, crie as roles indicadas na Tabela 6.15.
Tabela 6.15 Roles a serem criadas com o Query Analyzer.
Para criar as roles da Tabela 6.15, faa o seguinte:
1. Abra o Query Analyzer e faa a conexo com a instncia SERVIDOR\SRVINST01.
2. Digite os seguintes comandos:
Nome da role Banco de Dados Instncia
role1 Exemplo1 SERVIDOR\SRVINST01
role2 Exemplo1 SERVIDOR\SRVINST01
role3 Exemplo1 SERVIDOR\SRVINST01
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
326 00CURSO COMPLETO
Alterna para o Banco de Dados Exemplo1
use exemplo1
Utilizo sp_addrole para criar as novas roles.
exec sp_addrole role1
exec sp_addrole role2
exec sp_addrole role3
3. Pressione Ctrl+E para executar estes comandos.
4. As roles role1, role2 e role3 so adicionadas ao Banco de Dados Exemplo1, da instncia
SERVIDOR\SRVINST01, e a seguinte mensagem exibida:
New role added.
New role added.
New role added.
5. Feche o Query Analyzer.
Muito bem, agora temos uma srie de logins e roles adicionados s duas instncias do servidor SQL
Server. O prximo passo aprendermos a dar permisses de acesso aos Bancos de Dados de cada
instncia e entendermos como se comporta a segurana quando um usurio pertence a um ou mais
grupos, e quando alm das permisses, temos permisses explicitamente negadas (deny). Tambm
aprenderemos a adicionar usurios s roles que criamos. Mas este o assunto do prximo item.
KNOW-HOW EM: CONFIGURAO DE ACESSO AOS
OBJETOS DE UM BANCO DE DADOS DO SQL SERVER 2000
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Noes bsicas sobre o modelo de segurana do SQL Server 2000.
Noes bsicas sobre o modelo de segurana do Windows 2000 Server.
Ter criados os logins de exemplo, do item anterior.
Saber utilizar o Enterprise Manager e o Query Analyzer.
METODOLOGIA
Apresentao dos comandos necessrios para a configurao das permisses de acesso aos objetos de um Banco de Dados.
TCNICA
Configurar o acesso aos objetos de um Banco de Dados do SQL Server 2000, utilizando os comandos apresentados.
Agora que j adicionamos vrios logins, precisamos dar autorizao para que estes logins possam
acessar os Bancos de Dados do servidor SQL Server. Em cada Banco de Dados, temos uma opo chamada
Users. Nesta opo, por padro, esto adicionados os logins dbo e guest. Para darmos permisso de
acesso, por exemplo ao usurio GROZA\user1, precisamos adicion-lo a esta lista de usurios. Na hora
que estamos adicionando um usurio, podemos j adicion-lo a uma ou mais roles do Banco de Dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
327 CURSO COMPLETO00
Aps ter adicionado o usurio, ainda ser possvel inclu-lo e exclu-lo de uma ou mais roles, conforme
as necessidades de acesso do mesmo.
Apenas para manter o foco, vamos recapitular os passos que fizemos at agora:
1. Adicionamos usurios do Domnio do Windows 2000 como logins no SQL Server.
2. Criamos novos logins no prprio SQL Server 2000, na instncia SERVIDOR\SRVINST02, a qual
est no modo de segurana SQL Server and Windows.
3. Criamos algumas roles em alguns Bancos de Dados.
O que faremos neste item:
1. Daremos permisso de acesso aos logins anteriormente adicionados, para alguns Bancos de Dados,
adicionando os respectivos logins como usurios (opo Users).
2. Adicionaremos os usurios a uma ou mais roles.
O passo final, que aprenderemos no prximo item, dar permisses sobre os objetos do Banco de
Dados para os usurios e roles que tm permisso de acesso ao Banco de Dados.
Para uma descrio detalhada do modelo de segurana no SQL Server 2000, consulte o item Uma viso geral da segurana no SQL
Server 2000, no incio do captulo.
DANDO PERMISSO DE ACESSO AO BANCO DE DADOS COM O ENTERPRISE MANAGER
Neste item aprenderemos a adicionar logins lista de usurios com permisso de acesso a um Banco
de Dados. Vamos dar permisso de acesso para os usurios nos respectivos Bancos de Dados indicados
na Tabela 6.16.
Tabela 6.16 Dando permisso de acesso ao Banco de Dados.
Exemplo:
Para adicionar as permisses de acesso para os logins/tabelas indicadas na Tabela 6.16, faa o seguinte:
1. Abra o Enterprise Manager.
Login Banco de Dados Instncia
user1 e user2 Exemplo1 SERVIDOR\SRVINST01
grupo1 e grupo2 Exemplo1 SERVIDOR\SRVINST01
user3, user4 e user5 pubs SERVIDOR\SRVINST01
grupo1 e grupo2 pubs SERVIDOR\SRVINST01
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
328 00CURSO COMPLETO
2. Navegue at a instncia SERVIDOR\SRVINST01 e d um clique no sinal de mais ao lado da
mesma, para expandi-la.
3. Nas opes que surgem, d um clique no sinal de mais ao lado de Databases para exibir os
Bancos de Dados disponveis.
4. D um clique no sinal de mais ao lado de Exemplo1 para exibir os objetos deste Banco de Dados.
5. Nas opes que surgem d um clique na opo Users.
Observe que, por padro, somente o usurio dbo (GROZA\Administrator) tem permisso de acesso a
este Banco de Dados, conforme indicado na Figura 6.26. O dono do Banco de Dados
GROZA\Administrator, porque quando foi criado o Banco de Dados Exemplo1, o usurio conectado
que o criou foi GROZA\Administrator. Observe que um usurio do domnio GROZA. Lembrando
que quando instalamos o SQL Server 2000, o usurio Administrator do domnio automaticamente
adicionado como login do SQL Server 2000 e com poderes de administrador, pois o mesmo includo
como membro da role sysadmin, que tem poderes totais sobre o servidor SQL Server 2000.
Figura 6.26 Usurio dbo.
6. D um clique com o boto direito do mouse na opo Users.
7. No menu de opes que surge, d um clique em New Database User. Surge a janela New User,
para adio de um novo usurio ao Banco de Dados.
8. Na lista Login name, selecione GROZA\user1.
9. Observe que o campo User name j preenchido com GROZA\user1. Podemos utilizar este
campo User name, para que o usurio tenha um nome diferente do seu nome de login. Esta
no uma prtica recomendada, por isso vamos manter o nome do usurio no Banco de
Dados igual ao seu nome de login no servidor SQL Server.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
329 CURSO COMPLETO00
Na parte debaixo da janela, voc poder incluir o usurio em uma ou mais roles do Banco de Dados.
Lembre-se que ao incluir o usurio em uma role, ele estar herdando todas as permisses da role.
Tambm lembre que todo usurio, automaticamente, pertence a role public e voc no pode retir-lo
desta role. Se voc tentar desmarcar a role public, ser emitida a mensagem de erro da Figura 6.27.
Figura 6.27 No possvel tirar o usurio da role public.
Vamos incluir o usurio na role consulta. Sua tela deve estar conforme indicado na Figura 6.28.
Figura 6.28 Usurio GROZA\user1.
10. D um clique no boto OK e pronto, o usurio GROZA\user1 adicionado lista de usurios
com permisso de acesso ao Banco de Dados Exemplo1.
11. Seguindo as orientaes deste exemplo, adicione a permisso de acesso para os usurios nas
respectivas tabelas, indicados na Tabela 6.16. Tambm faa todos os usurios que esto sendo
adicionados, membros da role consulta no Banco de Dados Exemplo1. No Banco de Dados
pubs, mantenha os usurios apenas como membros da role pub.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
330 00CURSO COMPLETO
Na Figura 6.29, temos a lista de usurios do Banco de Dados Exemplo1.
Figura 6.29 Usurios com permisso de acesso ao Banco de Dados Exemplo1.
12. Feche o Enterprise Manager.
Adicionamos usurios lista de usurios. No caso do Banco de Dados Exemplo1, tambm fizemos os usurios membros da role consulta.
Porm ainda no definimos as permisses destes usurios aos objetos do Banco de Dados. Por exemplo quem pode consultar quais
tabelas? Quem pode consultar e alterar quais tabelas? Quem pode criar novas tabelas e views? Veremos como definir estas permisses
mais adiante, neste captulo.
Para excluir usurios da lista de usurios com permisso de acesso bastante simples. Para isso basta
navegar at a opo Users, onde est o usurio a ser excludo, e clicar com o boto direito do mouse no
usurio. No menu que surge, d um clique na opo Excluir. Ao excluir um usurio da opo Users, o
mesmo deixa de ter permisso de acesso ao Banco de Dados, porm o seu login continua na lista de
logins do servidor SQL Server.
DANDO PERMISSO DE ACESSO AO BANCO DE DADOS COM O QUERY ANALYZER
Neste item aprenderemos a adicionar logins lista de usurios com permisso de acesso a um Banco de
Dados, utilizando comandos T-SQL no Query Analyzer.
Para adicionarmos um login lista de usurios autorizados a acessar um Banco de Dados, utilizamos o
comando sp_grantdbaccess.
Sintaxe para o comando sp_grantdbaccess:
user database
exec sp_grantdbaccess nome de login
Por exemplo, para adicionar o usurio user1, do Domnio GROZA ao Banco de Dados pubs, podemos
utilizar os seguintes comandos:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
331 CURSO COMPLETO00
use pubs
exec sp_grantdbaccess GROZA\user1
Algumas observaes sobre o comando sp_grantdbaccess:
Somente membros das roles sysadmin e das roles de Banco de Dados db_accessadmin e db_owner
que tm permisso para utilizar este comando.
Este comando no pode ser executado no contexto de uma transao iniciada pelo usurio.
Exemplo:
Vamos dar permisso de acesso para os usurios nos respectivos Bancos de Dados indicados na Tabela 6.17.
Tabela 6.17 Dando permisso de acesso ao Banco de Dados.
Para dar permisso de acesso, conforme indicado na Tabela 6.17, faa o seguinte:
1. Abra o Query Analyzer e faa a conexo com a instncia SERVIDOR\SRVINST02, utilizando
SQL Server authentication, como mtodo da autenticao. Como usurio, digite sa, e no campo
Password digite a senha para o usurio sa.
2. Digite os seguintes comandos:
Tornando o Banco de Dados pubs o banco atual
use pubs
Adiciono as permisses de acesso ao Banco de Dados pubs
para isso utilizo o comando sp_grantdbaccess
exec sp_grantdbaccess GROZA\jose
exec sp_grantdbaccess GROZA\paulo
exec sp_grantdbaccess GROZA\jovina
exec sp_grantdbaccess GROZA\maria
exec sp_grantdbaccess GROZA\pedro
Agora adiciono os logins do prprio SQL Server,
isto , logins que no so do domnio GROZA
exec sp_grantdbaccess sqluser1
exec sp_grantdbaccess sqluser2
e por ltimo os grupos do domnio GROZA
exec sp_grantdbaccess GROZA\grupo1
exec sp_grantdbaccess GROZA\grupo2
3. Pressione Ctrl+E para executar estes comandos. Os usurios da Tabela 6.17 sero adicionados
lista Users do Banco de Dados pubs da instncia SERVIDOR\SRVINST02.
Login Permisso no Banco de Dados Instncia
jose e paulo pubs SERVIDOR\SRVINST02
jovina e maria pubs SERVIDOR\SRVINST02
pedro, sqluser1 e sqluser2 pubs SERVIDOR\SRVINST02
grupo1 e grupo2 pubs SERVIDOR\SRVINST02
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
332 00CURSO COMPLETO
4. A seguinte mensagem ser emitida:
Granted database access to GROZA\jose.
Granted database access to GROZA\paulo.
Granted database access to GROZA\jovina.
Granted database access to GROZA\maria.
Granted database access to GROZA\pedro.
Granted database access to sqluser1.
Granted database access to sqluser2.
Granted database access to GROZA\grupo1.
Granted database access to GROZA\grupo2.
5. Feche o Query Analyzer.
Para retirar a permisso de acesso do usurio a um Banco de Dados, podemos utilizar o comando
sp_revokedbaccess.
Para compatibilidade com verses anteriores, tambm poderamos utilizar o comando sp_dropuser, mas recomendada a utilizao de
sp_revokedbaccess sempre que possvel.
Por exemplo, para remover o usurio GROZA\user1, do Banco de Dados pubs, poderamos utilizar os
seguintes comandos:
use pubs
exec sp_revokedbaccess GROZA\user1
Algumas observaes sobre o comando sp_revokedbaccess.:
Somente membros da server role sysadmin e das roles de Banco de Dados db_accessadmin e
db_owner que tm permisso para utilizar este comando.
Com o comando sp_revokedbaccess no possvel remover os seguintes usurios:
a. A role public ou o usurio dbo.
b As roles fixas do Banco de Dados, como db_owner, db_datareader, etc.
c. Os usurio guest, nos Bancos de Dados master e tempdb.
ADICIONANDO USURIOS COMO MEMBROS DE UMA OU MAIS ROLES
Agora vamos aprender a adicionar usurios como membros de uma ou mais roles. Apenas para
recapitular, devemos ter as roles criadas pelo usurio, indicadas na Tabela 6.18. Estas roles foram criadas
anteriormente, neste captulo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
333 CURSO COMPLETO00
Vamos utilizar o Enterprise Manager para adicionar alguns usurios a algumas das roles anteriormente
criadas, conforme indicado na Tabela 6.19.
Tabela 6.19 Adicionando usurios a roles.
Tabela 6.18 Roles criadas pelo usurio.
Nome da role Banco de Dados Instncia
leitores Exemplo1 SERVIDOR\SRVINST01
gerentes Exemplo1 SERVIDOR\SRVINST01
fazbackup Exemplo1 SERVIDOR\SRVINST01
leitores pubs SERVIDOR\SRVINST02
gerentes pubs SERVIDOR\SRVINST02
fazbackup pubs SERVIDOR\SRVINST02
role1 Exemplo1 SERVIDOR\SRVINST01
role2 Exemplo1 SERVIDOR\SRVINST01
role3 Exemplo1 SERVIDOR\SRVINST01
Exemplo:
Para adicionar os usurios indicados na Tabela 6.19, faa o seguinte:
1. Abra o Enterprise Manager.
2. Navegue at a instncia SERVIDOR\SRVINST01, e d um clique no sinal de mais ao lado da
mesma, para expandi-la.
3. Nas opes que surgem, d um clique no sinal de mais ao lado de Databases para exibir os
Bancos de Dados disponveis.
4. D um clique no sinal de mais ao lado de Exemplo1 para exibir os objetos deste Banco de Dados.
5. Nas opes que surgem, d um clique na opo Roles. Devem aparecer, na listagem de roles, as
roles role1 e role2 criadas anteriormente, conforme indicado na Figura 6.30.
Nome da role Usurios a serem adicionados
role1 user1 e user2
role2 grupo1 e grupo2
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
334 00CURSO COMPLETO
Figura 6.30 Roles criadas anteriormente.
6. D um clique duplo na role1 para abrir as suas propriedades. Surge a janela com as propriedades
da role.
7. Para adicionar usurios, d um clique no boto Add.
8. Ser exibida uma janela com a listagem dos usurios do Banco de Dados. Nesta listagem voc
pode selecionar um ou mais usurios. Para selecionar vrios usurios, intercaladamente, clique
no primeiro usurio, pressione e mantenha pressionada a tecla Ctrl e v clicando nos demais
usurios. Selecione os usurios user1 e user2, conforme indicado na Figura 6.31.
Figura 6.31 Adicionando usurios.
9. D um clique no boto OK.
Voc estar de volta a janela de propriedades da role1 e os usurios GROZA\user1 e GROZA\user2 j
estaro na lista de usurios da role.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
335 CURSO COMPLETO00
10. D um clique em OK e feito: os usurios tero sido adicionados a role. Voc estar de volta ao
Enterprise Manager com a listagem das roles do Banco de Dados Exemplo1.
11. D um clique duplo na role role2 para abrir a janela com as suas propriedades.
12. D um clique no boto Add, para adicionar usurios a esta role.
13. Na lista de usurios selecione GROZA\grupo1 e GROZA\grupo2.
14. D um clique no boto OK. Voc estar de volta janela de propriedades da role2 e os usurios
GROZA\grupo1 e GROZA\grupo2 j estaro na lista de usurios da role.
15. D um clique em OK e feito, os usurios tero sido adicionados role. Voc estar de volta ao
Enterprise Manager com a listagem das roles do Banco de Dados Exemplo1.
16. Feche o Enterprise Manager.
Para adicionar usurios a uma role do servidor (sysadmin, securityadmin, etc.):
1. Abra o Enterprise Manager, expanda a instncia do servidor onde voc ir trabalhar.
2. Nas opes que surgem, d um clique no sinal de mais ao lado da opo Security.
3. Nas opes que surgem, d um clique na opo Server Roles. No painel da direita exibida a
listagem com as roles do servidor.
4. D um clique duplo na role que voc deseja adicionar um ou mais usurios. Surge a janela com
as propriedades da role.
5. Para adicionar usurios d um clique no boto Add. Surge uma janela com a listagen dos logins
disponveis na instncia do SQL Server em que estamos trabalhando.
6. Selecione os usurios a serem adicionados e d um clique em OK. Voc estar de volta a janela
de propriedades da role, j com os usurios adicionados.
7. D um clique no boto OK e pronto, os usurios foram adicionados.
Para excluir um membro de uma role, basta abrir as propriedades da role, marcar o usurio a ser
excludo e dar um clique no boto Remove. Depois d um clique no boto OK.
Podemos adicionar logins a roles do servidor, adicionar usurios a roles de um Banco de Dados, excluir
logins de uma role do servidor e tambm excluir usurios de uma role de Banco de Dados, utilizando
comandos T-SQL.
Para adicionar um usurio a uma role de servidor, utilizamos o seguinte comando:
exec sp_addsrvrolemember login, role
Por exemplo, para adicionar os usurios GROZA\user1 e GROZA\user2 role sysadmin, podemos
utilizar os seguintes comandos:
exec sp_addsrvrolemember GROZA\user1, sysadmin
exec sp_addsrvrolemember GROZA\user2, sysadmin
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
336 00CURSO COMPLETO
Para excluir um usurio de uma role do servidor, utilizamos o seguinte comando:
exec sp_dropsrvrolemember login, role
Por exemplo, para excluir os usurios GROZA\user1 e GROZA\user2 da role sysadmin, podemos utilizar
os seguintes comandos:
exec sp_dropsrvrolemember GROZA\user1, sysadmin
exec sp_dropsrvrolemember GROZA\user2, sysadmin
Para adicionar um usurio a uma role de Banco de Dados, utilizamos o seguinte comando:
use database
exec sp_addrolemember role, usurio
Por exemplo, para adicionar os usurios GROZA\user1 e GROZA\user2, como membros da role consulta,
do Banco de Dados Exemplo1, utilizamos os seguintes comandos:
use exemplo1
exec sp_addrolemember consulta, GROZA\user1
exec sp_addrolemember consulta, GROZA\user2
Para excluir um usurio de uma role de Banco de Dados, utilizamos o seguinte comando:
use database
exec sp_droprolemember role, usurio
Por exemplo, para excluir os usurios GROZA\user1 e GROZA\user2, da role consulta, do Banco de
Dados Exemplo1, utilizamos os seguintes comandos:
use exemplo1
exec sp_droprolemember consulta, GROZA\user1
exec sp_droprolemember consulta, GROZA\user2
Observe que, no caso de roles do servidor, o primeiro parmetro o nome do login seguido do nome da role exec sp_addsrvrolemember
login, role ou exec sp_dropsrvrolemember login, role. J no caso de roles de Banco de Dados o contrrio, isto , o primeiro
parmetro o nome da role e o segundo o nome do usurio exec sp_addrolemember role, usurio ou exec sp_droprolemember
role, usurio. Explicao? No me atrevo a tanto.
KNOW-HOW EM: CONFIGURAO, PLANEJAMENTO E TESTE DE PERMISSES
DE ACESSO AOS OBJETOS DE UM BANCO DE DADOS DO SQL SERVER 2000
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Noes bsicas sobre o modelo de segurana do SQL Server 2000.
Noes bsicas sobre o modelo de segurana do Windows 2000 Server.
Saber utilizar o Enterprise Manager e o Query Analyzer.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
337 CURSO COMPLETO00
METODOLOGIA
Anlise de diversas situaes envolvendo permisses de acesso.
At agora j aprendemos a adicionar logins, criar roles, adicionar usurios ao Banco de Dados, adicionar
usurios roles do Banco de Dados e logins roles do servidor. O passo final das configuraes de
segurana configurar as permisses.
Por exemplo, criamos uma role consulta, no Banco de Dados Exemplo1. Como fazer com que os membros
desta role somente tenham permisso de leitura nos dados do Banco de Dados Exemplo1? Muito simples.
Temos que definir as permisses para a role consulta, dizendo que a mesma tem permisso somente de
leitura. E se tivermos dez usurios que pertencem a role consulta, mas por determinao do chefe, um
deles no deve ter acesso ao Banco de Dados Exemplo1? Como fazer? Muito simples. s negar o direito
de leitura para este usurio especificamente. Isto que chamamos de configurar permisses.
As permisses definem o que um login e as roles de servidor podem fazer no servidor, como por
exemplo, criar novos Bancos de Dados, excluir os existentes, etc; e o que os usurios e as roles de
Bancos de Dados podem fazer dentro do Banco de Dados, por exemplo, consultar, alterar, excluir,
inserir os dados, criar novas tabelas, excluir as existentes, criar novas consultas, criar novas trigers,
adicionar usurios e usurios, etc.
Vamos simplificar: Permisses definem quem pode fazer o que e onde.
Isto que aprenderemos neste item, ou seja, configurar permisses. Veremos os seguintes tpicos:
Dando permisses no banco de SERVIDOR\instncia.
Dando permisses dentro do Banco de Dados.
Dando permisses a objetos do Banco de Dados tabelas, views, etc.
DEFININDO PERMISSES EM NVEL DE SERVIDOR\ INSTNCIA
Permisses em nvel de SERVIDOR\instncia definem o que um determinado login pode fazer. Por
exemplo, logins que so membros do grupo sysadmin podem fazer qualquer coisa, tal como:
Criar novos Bancos de Dados.
Excluir Bancos de Dados.
Alterar Bancos de Dados.
Agendar tarefas.
A maneira de darmos permisses em um SERVIDOR\instncia para login adicionando-o a uma das
roles do servidor, de acordo com o nvel de permisso que o login necessita. Por exemplo, se precisamos
que um determinado login seja capaz de gerenciar logins, devemos adicion-lo a role securityadmin.
Para adicionar um login a uma role, temos duas opes. Abrir as propriedades da role, dando um
clique duplo sobre a mesma, clicar no boto Add... e adicionar um ou mais usurios. Este procedimento
foi descrito no item anterior.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
338 00CURSO COMPLETO
Outra maneira acessarmos as propriedades do login. Para isso abra o Enterprise Manager, clique no
sinal de mais ao lado da instncia que voc est trabalhando (por exemplo SERVIDOR\SRVINST01).
Nas opes que surgem, d um clique no sinal de mais ao lado da opo Security para expandi-la.
Abaixo de Security d um clique na opo Logins. No painel da direita ser exibida uma lista com
todos os logins da instncia em questo. Para acessar as propriedades de um determinado login, basta
dar um clique duplo sobre o mesmo. Na janela de propriedades, temos trs guias:
General: Nesta guia podemos definir se permitimos (Grant access) ou negamos (Deny access) o
acesso ao login em questo. Tambm podemos definir o Banco de Dados e a linguagem padro
para quando o login faz a conexo com o servidor SQL Server.
Server Roles: Nesta guia podemos adicionar o login a uma ou mais roles do servidor. Lembre
que ao adicionar um login a uma role, o mesmo estar herdando as permisses atribudas a
role. Quer ser demitido? Adicione todo mundo a role sysadmin. A menos que voc consiga
provar que no est em suas plenas capacidades mentais, demisso na certa. Tambm lembre
que no possvel adicionar novas roles de servidor, alm das roles criadas durante a instalao
do SQL Server 2000. Para adicionar o login a uma ou mais roles, basta marcar as roles desejadas,
conforme indicado na Figura 6.32
Figura 6.32 Adicionando o login a uma ou mais roles.
Database Access: Nesta guia podemos adicionar o login em questo, como usurio de um ou
mais Bancos de Dados. Ao selecionarmos um Banco de Dados nesta janela, na parte inferior da
mesma surge uma listagem com as roles do Banco de Dados. Neste momento, alm de adicionar
o login como usurio de um ou mais Banco de Dados, podemos inclu-lo em uma ou mais roles
do Banco de Dados, conforme as necessidades de acesso do mesmo. Na figura 6.33 o usurio
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
339 CURSO COMPLETO00
GROZA\user1 tem permisso de acesso ao Banco de Dados Exemplo1 e est sendo adicionado
s roles public, db_accessadmin e db_securityadmin.
Figura 6.33 Adicionando o login como usurio do Banco de Dados Exemplo1.
Depois de feitas as configuraes necessrias, s dar um clique no boto OK.
Para adicionar um login a uma role do servidor, tambm podemos utilizar o comando sp_addsrvrolemember, conforme descrito anteriormente.
DANDO PERMISSES PARA BANCO DE DADOS
Em nvel de Banco de Dados, podemos definir as seguintes permisses:
Create Table (Criar Tabela).
Create View (Criar Consulta).
Create SP (Criar Stored Procedure).
Create Default.
Create Rule.
Create Function.
Backup DB (Backup do Banco de Dados).
Backup Log (Backup do Log de transaes).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
340 00CURSO COMPLETO
Podemos atribuir estas permisses para usurios e roles do Banco de Dados. Devemos sempre ter em
mente, as seguintes regras:
Uma permisso pode ser atribuda ou negada.
Podemos atribuir ou negar permisses para usurios e roles.
O usurio herda todas as permisses das roles as quais ele pertence.
Negar tem precedncia sobre permitir. Por exemplo, se um usurio pertencer a trs roles
role1, role2 e role3. A role1 tem permisso para criar tabelas Create Table. A role2 tem permisso
para criar consultas Create View. Com isso o usurio herda as permisses para criar tabelas e
consultas. A role3 tm negadas as permisses para criar tabelas e consultas. Como negar tem
precedncia sobre permitir e, o usurio pertence s trs roles, o mesmo ter negadas as permisses
para criar tabela e consultas. A permisso efetiva deste usurio ser: Negada as permisses para
criar tabelas e consultas.
Procure agrupar os usurios que tem necessidades de acesso iguais em uma role. Atribua as
permisses para a role em vez de atribuir para os usurios individualmente. Este procedimento
ir facilitar bastante a administrao de segurana no SQL Server 2000.
Agora vamos aprender a atribuir permisses para usurios e roles. Depois vamos testar as permisses.
Exemplo:
Utilizando o Enterprise Manager, atribua as seguintes permisses para o Banco de Dados Exemplo1, da
instncia SERVIDOR\SRVINST01:
Usurio: GROZA\user1.
Permitir: Create Table, Create View.
Negar: Backup DB, Backup Log.
Role: GROZA\role1.
Permitir: Create View, Backup DB, Backup Log e Create Rules.
Lembre que o usurio GROZA\user1 membro da role role1.
Para configurar as permisses sugeridas, faa o seguinte:
1. Abra o Enterprise Manager.
2. Navegue at o Banco de Dados Exemplo1, da instncia SERVIDOR\SRVINST01.
3. D um clique com o boto direito no Banco de Dados Exemplo1, e no menu de opes que
surge, d um clique em Propriedades.
4. Na janela de propriedades do Banco de Dados Exemplo1, d um clique na opo Permissions.
Surge a janela indicada na Figura 6.34.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
341 CURSO COMPLETO00
Figura 6.34 Definindo permisses para o Banco de Dados Exemplo1.
Nesta janela podemos configurar as permisses para o Banco de Dados. Na primeira coluna temos uma
lista com todos os usurios do Banco de Dados. Nas demais colunas podemos configurar as diversas
permisses. Por padro a permisso vem desmarcada, o que significa que o usurio no tem esta
permisso. As caixas de seleo funcionam da seguinte maneira:
Por padro a caixa vem desmarcada.
Ao darmos um clique, a caixa fica marcada com um sinalzinho verde. Este sinal verde significa
dar a permisso.
Se dermos mais um clique o sinal troca de um sinalzinho verde para um x vermelho. O x
vermelho significa negar a permisso.
Se dermos mais um clique o sinal troca do x vermelho para desmarcado.
5. Defina as permisses conforme indicado na Figura 6.35.
6. D um clique em OK e pronto, as permisses tero sido definidas.
7. A pergunta : Qual a permisso efetiva para o usurio GROZA\user1.
Vamos analisar com calma.
Primeiro: O usurio GROZA\user1 pertence a role role1, portanto herdar as permisses desta role.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
342 00CURSO COMPLETO
Figura 6.35 Definindo as permisses do exemplo.
Segundo: Ao analisar as permisses efetivas, gosto de analisar para cada permisso,
separadamente. Ento vamos l:
Permisso Create Table: O usurio tem esta permisso, na role role1 no negada a
permisso. Portanto, o usurio ter esta permisso e poder criar novas tabelas no Banco
de Dados Exemplo1.
Permisso Create View: O usurio tem a permisso e tambm herda a mesma da role role1.
Portanto, o usurio poder criar novas views no Banco de Dados Exemplo1.
Permisso Create Rules: O usurio herda a mesma da role role1. Portanto o usurio poder
criar novas Rules no Banco de Dados Exemplo1.
Permisso Backup DB: Esta permisso negada ao usurio. No preciso nem continuar a
minha anlise, pois negar tem precedncia sobre qualquer outra atribuio, ou seja, mesmo
que o usurio herdasse de alguma outra role a permisso de fazer o backup do Banco de
Dados, o negar teria precedncia. Portanto o usurio no poder fazer o backup do Banco
de Dados. Se ele tentar fazer um backup, utilizando o comando BACKUP DATABASE, a
seguinte mensagem ser exibida:
Server: Msg 262, Level 14, State 1, Line 1
BACKUP DATABASE permission denied in database Exemplo1.
Server: Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.
Observe que a mensagem indica uma falta de permisses para efetuar a operao.
Permisso Backup Log: So vlidos os mesmos comentrios feitos para a permisso Backup DB.
Lembrar sempre que negar tem precedncia sobre permitir. Se o usurio tentar fazer um backup,
utilizando o comando BACKUP DATABASE, a seguinte mensagem ser exibida:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
343 CURSO COMPLETO00
Server: Msg 262, Level 14, State 1, Line 1
BACKUP LOG permission denied in database Exemplo1.
Server: Msg 3013, Level 16, State 1, Line 1
BACKUP LOG is terminating abnormally.
Usurio: GROZA\user1.
Permitir: Create Table, Create View.
Negar: Backup DB, Backup Log.
Role: GROZA\role1.
Permitir: Create View, Backup DB, Backup Log e Create Rules.
Tambm podemos definir as permisses de Banco de Dados, utilizando comandos T-SQL.
Para atribui-las utilize o comando GRANT.
Sintaxe para o comando GRANT:
GRANT { ALL | statement [ ,...n ] }
TO security_account [ ,...n ]
Vamos utilizar alguns exemplos para ilustrar a utilizao do comando GRANT.
Exemplo 1: Garantir para o login GROZA\user1 a permisso de criar novos Bancos de Dados:
GRANT CREATE DATABASE TO [GROZA\user1]
Quando o login for um usurio do Domnio do Windows, o nome deve vir entre colchetes, como no
exemplo: [GROZA\user1]
Podemos atribuir mais do que uma permisso ao mesmo tempo, para um ou mais logins ou usurios.
Exemplo2: Atribuir as permisses CREATE TABLE, CREATE RULE e CREATE VIEW, para o usurio
GROZA\user1 no Banco de Dados Exemplo1.
USE Exemplo1
GRANT CREATE TABLE, CREATE RULE, CREATE VIEW
TO [GROZA\user1]
Exemplo3: Atribuir as permisses CREATE TABLE, CREATE RULE e CREATE VIEW, para os usurios
GROZA\grupo1 e GROZA\grupo2, no Banco de Dados Exemplo1.
USE Exemplo1
GRANT CREATE TABLE, CREATE RULE, CREATE VIEW
TO [GROZA\grupo1], [GROZA\grupo2]
As principais permisses de Banco de Dados, possveis de serem atribudas com este comando, so
descritas nas Tabelas 6.20 e 6.21.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
344 00CURSO COMPLETO
Tabela 6.20 Principais permisses de Banco de Dados.
Tabela 6.21 Principais permisses de objetos do Banco de Dados.
As permisses SELECT, INSERT, DELETE, UPDATE e EXECUTE so definidas para objetos do Banco de Dados. Aprenderemos a utilizar o
comando GRANT para definir estas permisses logo em seguida.
Exemplo 4: Atribuir todas as permisses para o usurio GROZA\user2, no Banco de Dados Exemplo1.
USE Exemplo1
GRANT ALL
TO [GROZA\user2]
Observe que utilizamos a palavra ALL, para significar todas as permisses.
Permisso Se aplica :
CREATE DATABASE Banco de Dados master.
CREATE DEFAULT Todos os Bancos de Dados.
CREATE PROCEDURE Todos os Bancos de Dados.
CREATE RULE Todos os Bancos de Dados.
CREATE TABLE Todos os Bancos de Dados.
CREATE VIEW Todos os Bancos de Dados.
BACKUP DATABASE Todos os Bancos de Dados.
BACKUP LOG Todos os Bancos de Dados.
Permisso Se aplica :
SELECT Tabelas, views e colunas.
INSERT Tabelas e views.
DELETE Tabelas e views.
UPDATE Tabelas, views e colunas.
EXECUTE Stored Procedures.
Para uma descrio completa, de todas as opes do comando GRANT, consulte o tpico Transact SQL Reference, no Books OnLine.
Para retirar (revoke) as permisses de Banco de Dados, utilize o comando REVOKE.
Sintaxe para o comando REVOKE:
REVOKE { ALL | statement [ ,...n ] }
FROM security_account [ ,...n ]
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
345 CURSO COMPLETO00
Vamos a alguns exemplos para ilustrar a utilizao do comando REVOKE.
Exemplo 1: Retirar a permisso de criar novos Bancos de Dados, atribuda para o login GROZA\user1,
anteriormente.
USE MASTER
REVOKE CREATE DATABASE TO [GROZA\user1]
Podemos retirar mais do que uma permisso ao mesmo tempo, para um ou mais logins.
Exemplo 2: Retirar as permisses CREATE TABLE, CREATE RULE e CREATE VIEW, atribudas para o
usurio GROZA\user1 no Banco de Dados Exemplo1.
USE Exemplo1
REVOKE CREATE TABLE, CREATE RULE, CREATE VIEW
TO [GROZA\user1]
Exemplo3: Retirar as permisses CREATE TABLE, CREATE RULE e CREATE VIEW, atribudas para os
usurios GROZA\grupo1 e GROZA\grupo2, no Banco de Dados Exemplo1.
USE Exemplo1
REVOKE CREATE TABLE, CREATE RULE, CREATE VIEW
TO [GROZA\grupo1], [GROZA\grupo2]
Exemplo 4: Retirar todas as permisses atribudas ao usurio GROZA\user2, no Banco de Dados Exemplo1.
USE Exemplo1
REVOKE ALL
TO [GROZA\user2]
Observe que utilizamos a palavra ALL, para significar todas as permisses.
Agora vamos anlise de mais um estudo de caso e, na seqncia, fica um exerccio para o amigo
leitor, onde temos a combinao de permisses em diversas roles e uma combinao entre permitir
e negar permisses.
Estudo de Caso: Considere a situao descrita na Figura 6.36.
Figura 6.36 Permisses no Banco de Dados Exemplo1.
Banco de dados Exemplo 1 da Instncia SERVIDOR\SRVINST01
Usurios Roles Membros Permisses
. user1 . role1 . user1 . user1 CREATE TABLE
. user2 . user2 CREATE VIEW
. user3 . role3 . user2 . user2 CREATE TABLE
. user3 CREATE VIEW
. role1 CREATE RULE
CREATE PROCEDURE
. role2 NEGAR CREATE TABLE
NEGAR CREATE VIEW
Q1. Qual a permisso efetiva do usurio user1 ?
Q2. Qual a permisso efetiva do usurio user2 ?
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
346 00CURSO COMPLETO
Para definir a permisso efetiva de um usurio devemos lembrar que o usurio herda as permisses das
roles as quais ele pertence. Tambm devemos lembrar que estas permisses so cumulativas, isto , se
uma das roles as quais o usurio pertence tiver permisso CREATE TABLE e a outra role tiver permisso
CREATE VIEW, o usurio herdar as duas permisses.
No nosso exemplo, o user1 tem as permisses CREATE TABLE e CREATE VIEW. Alm disso como ele
pertence a role role1, ele herda as permisses da role role1. Com isso o usurio user1 est acumulando
as permisses CREATE TABLE, CREATE VIEW, CREATE RULE e CREATE PROCEDURE, sendo as duas
ltimas herdadas da role.
Qual a permisso efetiva do usurio user1?
CREATE TABLE.
CREATE VIEW.
CREATE RULE.
CREATE PROCEDURE.
Vamos analisar a situao para o usurio user2. Este usurio tem as permisses CREATE TABLE e CRE-
ATE VIEW. Como ele tambm pertence role role1, ele herda as permisses CREATE RULE e CREATE
PROCEDURE. Como o usurio tambm pertence role role2, ele herda as permisses da mesma, que
so negar CREATE TABLE e negar CREATE VIEW. Como negar tem precedncia sobre permitir, o
usurio user2 ter somente as permisses CREATE RULE e CREATE PROCEDURE.
Qual a permisso efetiva do usurio user2?
CREATE RULE.
CREATE PROCEDURE.
Exerccio: Considerando a situao descrita na Figura 6.37, determine as permisses efetivas para os
usurio user1, user2, user3, user4 e user5.
Observe que medida que novas permisses vo sendo atribudas pode ser difcil de terminar o real
nvel de acesso de cada usurio. Para que voc possa manter um controle sobre a atribuio de permisses,
fao as seguintes sugestes:
Mantenha uma documentao sobre as atribuies de permisso. chato? . Ningum gosta?
Ningum gosta. Porm a documentao de fundamental importncia, pois se no tivermos
um controle sobre as atribuies de permisso, podemos chegar a situaes onde usurios que
no devem ter acesso esto tendo e usurios que devem ter acesso no esto tendo, enfim, uma
grande baguna.
Procure sempre atribuir permisses roles e no aos usurios individualmente. Isto facilita
bastante a administrao das permisses.
Procure agrupar os usurios que tm necessidades de acesso iguais em uma role. Atribua as
permisses para a role em vez de atribuir para os usurios individualmente. Este procedimento
ir facilitar bastante a administrao de segurana no SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
347 CURSO COMPLETO00
Figura 6.37 Determine as permisses efetivas para cada usurio.
DANDO PERMISSES A OBJETOS DO BANCO DE DADOS
As permisses a objetos aplicam-se aos diversos elementos de um Banco de Dados. Por exemplo, em uma
tabela podemos ter permisso de leitura dos dados (SELECT), adio de novos registros (INSERT), excluso
de registros (DELETE) e assim por diante. As permisses objetos so as que mais diretamente se relacionam
com as atividades dirias dos usurios do Banco de Dados. Por exemplo, se um determinado usurio utiliza
uma aplicao que acessa o Banco de Dados no servidor SQL Server e este usurio deve ter permisso
somente de leitura para os dados de uma determinada tabela, o inclumos em uma role com permisso
SELECT na tabela e pronto, o usurio somente poder consultar os dados.
Na Tabela 6.22, temos a descrio das principais permisses a objetos.
Tabela 6.22 Principais permisses de objetos do Banco de Dados.
Permisso Se aplica :
SELECT Tabelas, views e colunas.
INSERT Tabelas e views.
DELETE Tabelas e views.
UPDATE Tabelas, views e colunas.
EXECUTE Stored Procedures.
REFERENCES (DRI) Tabelas e colunas.
Banco de dados Exemplo 1 da Instncia SERVIDOR\SRVINST01
Usurios Roles Membros Permisses
. user1 . role1 . user1 . role1 CREATE RULE
. user2 . user2 CREATE PROCEDURE
. user3 . user3 BACKUP DB
. user4 . role2 . user3 . role2 negar CREATE TABLE
. user5 . user4 negar CREATE VIEW
. user5 negar BACKUP DB
negar BACKUP LOG
. role3 . user1 . role3 BACKUP LOG
. user3 CREATE TABLE
. user5 CREATE VIEW
. role 4 . user2 . role4 BACKUP LOG
BACKUP DB
. role 5 . user3 . role5 CREATE RULE
CREATE PROCEDURE
Q1. Qual a permisso efetiva do usurio user1 ?
Q2. Qual a permisso efetiva do usurio user2 ?
Q3. Qual a permisso efetiva do usurio user3 ?
Q4. Qual a permisso efetiva do usurio user4 ?
Q5. Qual a permisso efetiva do usurio user5 ?
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
348 00CURSO COMPLETO
Podemos atribuir estas permisses para usurios e roles do Banco de Dados. As consideraes que
podemos fazer em relao a atribuio de permisses para objetos do Banco de Dados -so as mesmas
que fizemos para o caso de permisses para o Banco de Dados.
Agora vamos aprender a atribuir permisses nos objetos do Banco de Dados Exemplo1, para usurios e
roles. Depois vamos testar as permisses.
Exemplo:
Utilizando o Enterprise Manager, atribua as seguintes permisses indicada na Figura 6.38, para a tabela
Clientes, do Banco de Dados Exemplo1, da instncia SERVIDOR\SRVINST01:
Para configurar as permisses sugeridas, faa o seguinte:
1. Abra o Enterprise Manager, e navegue at o Banco de Dados Exemplo1, da instncia
SERVIDOR\SRVINST01.
2. D um clique no sinal de mais ao lado de Exemplo1, para exibir as classes de objetos deste
Banco de Dados.
3. D um clique na opo Tables, para exibir as tabelas do Banco de Dados.
4. D um clique como boto direito do mouse na tabela Clientes e, no menu que surge, d um
clique em Propriedades. Ser exibida a janela de propriedades da tabela Clientes.
5. Nesta janela d um clique no boto Permissions. Surge a janela para definio de permisses da
tabela Clientes.
Nesta janela podemos configurar as permisses para a tabela Clientes. Na primeira coluna temos uma
lista com todos os usurios e roles do Banco de Dados. Nas demais colunas podemos configurar as
diversas permisses. Por padro, a permisso vem desmarcada, o que significa que o usurio no a
possui. Caso j tenha sido atribuda ou negada alguma permisso, a respectiva caixa vir marcada. As
caixas de seleo funcionam da seguinte maneira:
Por padro, a caixa vem desmarcada, o que significa sem a permisso.
Ao darmos um clique, a caixa fica marcada com um sinalzinho verde. Este sinal verde
significa dar a permisso.
Se dermos mais um clique, o sinal troca de um sinalzinho verde para um x vermelho. O x
vermelho significa negar a permisso.
Se dermos mais um clique, o sinal troca do x vermelho para desmarcado novamente.
Nesta janela temos acesso ao boto Columns. Este boto permite que sejam definidas as permisses
SELECT e UPDATE, individualmente, para cada coluna da tabela Clientes, conforme indicado na Figura
6.38. Com isso, um mesmo usurio poder ter permisso SELECT em uma coluna e UPDATE em outra.
Por exemplo, a coluna salrio poder ter permisso SELECT para todo mundo e UPDATE apenas para o
gerente de Recursos Humanos.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
349 CURSO COMPLETO00
Figura 6.38 Permisses a nvel de colunas.
6. Defina as permisses conforme indicado na Figura 6.38. D um clique em OK e pronto, as
permisses tero sido definidas.
7. Voc estar de volta janela de propriedades da tabela Clientes. D um clique em OK para
fechar esta janela.
8. A pergunta : Qual a permisso efetiva para os usurios GROZA\user1 e GROZA\user2?
Vamos analisar com calma.
Primeiro: O usurio GROZA\user1 pertence a role role1, portanto o mesmo herdar as permisses
desta role. Portanto o usurio GROZA\user1 acumular as permisses explicitamente atribudas para
ele SELECT e INSERT e as herdadas da role role1 UPDATE e negar DELETE. Com isso a permisso
efetiva do usurio GROZA\user1 ser:
SELECT
INSERT
UPDATE
negar DELETE
ou seja, o usurio poder selecionar, inserir e alterar registros. Se o mesmo tentar excluir registros da
tabela Clientes, receber a seguinte mensagem de erro:
Server: Msg 229, Level 14, State 5, Line 1
DELETE permission denied on object Clientes, database Exemplo1, owner dbo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
350 00CURSO COMPLETO
Figura 6.39 Definindo as permisses do exemplo.
Exerccio: Determine as permisses efetivas do usurio GROZA\user2 na tabela Clientes.
Tambm podemos definir as permisses de Banco de Dados, utilizando comandos T-SQL.
Para atribuir permisses de objetos do Banco de Dados utilize o comando GRANT.
Sintaxe para o comando GRANT:
GRANT
{ ALL [ PRIVILEGES ] | permission [ ,...n ] }
{
[ ( column [ ,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
}
TO security_account [ ,...n ]
[ WITH GRANT OPTION ]
[ AS { group | role } ]
Como a sintaxe completa no muito amistosa, vamos utilizar alguns exemplos para ilustrar a utilizao
do comando GRANT.
Exemplo 1: Garantir para o usurio GROZA\user1, a permisso de selecionar novos registros e atualizar
os registros existentes, na tabela Clientes do Banco de Dados Exemplo1:
Use Exemplo1
GRANT SELECT, UPDATE ON Clientes
TO [GROZA\user1]
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
351 CURSO COMPLETO00
Quando o login for um usurio do Domnio do Windows, o nome deve vir entre colchetes, como no
exemplo: [GROZA\user1]
Podemos atribuir mais do que uma permisso ao mesmo tempo, para um ou mais logins ou usurios.
Exemplo 2: Garantir para os usurios GROZA\user1 e GROZA\user2, a permisso de selecionar novos
registros, atualiz-los e exclui-los, na tabela Clientes do Banco de Dados Exemplo1:
Use Exemplo1
GRANT SELECT, UPDATE, DELETE ON Clientes
TO [GROZA\user1], [GROZA\user2]
Exemplo 3: Atribuir todas as permisses para o usurio GROZA\user2, na tabela Clientes do Banco de
Dados Exemplo1.
USE Exemplo1
GRANT ALL ON Clientes
TO [GROZA\user2]
Observe que utilizamos a palavra ALL, para significar todas as permisses.
Para retirar (revoke) as permisses de objetos do Banco de Dados utilize o comando REVOKE.
Sintaxe para o comando REVOKE:
REVOKE [ GRANT OPTION FOR ]
{ ALL [ PRIVILEGES ] | permission [ ,...n ] }
{
[ ( column [ ,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
}
{ TO | FROM }
security_account [ ,...n ]
[ CASCADE ]
[ AS { group | role } ]
Como a sintaxe completa no muito amistosa, vamos utilizar alguns exemplos para ilustrar a utilizao
do comando REVOKE.
Exemplo 1: Retirar a permisso UPDATE, atribuda para o usurio GROZA\user1, anteriormente.
USE Exemplo1
REVOKE UPDATE ON Clientes
TO [GROZA\user1]
Podemos retirar mais do que uma permisso ao mesmo tempo, para um ou mais usurios.
Para uma descrio completa, de todas as opes do comando GRANT, consulte o tpico Transact SQL Reference, no Books OnLine.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
352 00CURSO COMPLETO
Exemplo 2: Retirar as permisses SELECT, UPDATE E DELETE, atribudas para o usurio GROZA\user1
na tabela Clientes do Banco de Dados Exemplo1.
USE Exemplo1
REVOKE SELECT, UPDATE, DELETE ON Clientes
TO [GROZA\user1]
Exemplo 3: Retirar todas as permisses atribudas ao usurio GROZA\user2, na tabela Clientes do
Banco de Dados Exemplo1.
USE Exemplo1
REVOKE ALL ON Clientes
TO [GROZA\user2]
Observe que utilizamos a palavra ALL, para significar todas as permisses.
Para negar (negar) as permisses de objetos do Banco de Dados utilize o comando DENY.
Sintaxe para o comando DENY:
DENY
{ ALL [ PRIVILEGES ] | permission [ ,...n ] }
{
[ ( column [ ,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
}
TO security_account [ ,...n ]
[ CASCADE ]
Como a sintaxe completa no muito amistosa, vamos utilizar alguns exemplos para ilustrar a utilizao
do comando DENY.
Exemplo 1: Negar permisso UPDATE, para o usurio GROZA\user1, na tabela Clientes, do Banco de
Dados Exemplo1.
USE Exemplo1
DENY UPDATE ON Clientes
TO [GROZA\user1]
Podemos negar mais do que uma permisso ao mesmo tempo, para um ou mais usurios.
Exemplo 2: Negar as permisses SELECT, UPDATE E DELETE, para o usurio GROZA\user1, na tabela
Clientes do Banco de Dados Exemplo1.
USE Exemplo1
DENY SELECT, UPDATE, DELETE ON Clientes
TO [GROZA\user1]
Exemplo 3: Negar todas as permisses atribudas ao usurio GROZA\user2, na tabela Clientes do Banco
de Dados Exemplo1.
USE Exemplo1
DENY ALL ON Clientes
TO [GROZA\user2]
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
353 CURSO COMPLETO00
Observe que utilizamos a palavra ALL, para significar todas as permisses. Na Figura 6.40, temos a
janela com as permisses da tabela Clientes, aps a execuo do comando do Exemplo 3:
Figura 6.40 Permisses na tabela Clientes.
Observe que todas as permisses foram negadas para o usurio GROZA\user2, com exceo de EX-
ECUTE. que esta permisso no se aplica a tabelas, e sim a Stored Procedures.
E para finalizar, mais um pequeno exerccio.
Exerccio: Considerando a situao descrita na Figura 6.41, determine as permisses efetivas para os
usurio user1, user2, user3, user4 e user5, na tabela Produtos do Banco de Dados Exemplo1.
Observe que medida que novas permisses vo sendo atribudas pode ser difcil de terminar o real
nvel de acesso de cada usurio. Para que voc possa manter um controle sobre a atribuio de permisses,
fao as seguintes sugestes:
Mantenha uma documentao sobre as atribuies de permisso. chato? . Ningum gosta?
Ningum gosta. Porm a documentao de fundamental importncia, pois se no tivermos
um controle sobre as atribuies de permisso, podemos chegar a situaes onde usurios que
no devem ter acesso esto tendo e usurios que devem ter acesso no esto tendo, enfim, uma
grande baguna.
Procure sempre atribuir permisses roles e no aos usurios individualmente. Isto facilita
bastante a administrao das permisses.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
354 00CURSO COMPLETO
Figura 6.41 Determine as permisses efetivas para cada usurio.
CONCLUSO
Neste captulo tratamos, extensivamente, sobre a configurao de segurana no acesso ao servidor e
aos dados de um servidor SQL Server 2000. Tambm apresentamos os conceitos bsicos sobre usurios
e grupos no Windows 2000 Server.
Aprendemos que existem dois modos de segurana:
Windows only
SQL Server and Windows
Em seguida vimos que existem diversos estgios a serem vencidos at que o usurio possa ter acesso
aos dados.
O primeiro estgio estar cadastrado com um login no SERVIDOR\instncia. Para gerenciar logins,
utilizamos a opo Logins, a qual est dentro da opo Security.
O segundo estgio estar cadastrado na lista de usurios com permisso de acesso ao Banco de Dados.
Cada Banco de Dados possui a sua prpria lista de usurios. Para gerenciar usurios, utilizamos a opo
Users do Banco de Dados.
O estgio final dar as devidas permisses de acesso, tanto de Banco de Dados, quanto dos objetos do
Banco de Dados. As permisses de Banco de Dados definem quem pode criar novos objetos, alterar os
objetos existentes ou at mesmo exclui-los. J as permisses de objeto definem o nvel de acesso aos
dados, por exemplo somente leitura (SELECT), alterao (UPDATE) e assim por diante.
Falamos bastante sobre o papel das roles e a sua semelhana de funcionalidade com os grupos do
Windows 2000 e Windows NT.
Tabela Produtos do Banco de dados Exemplo 1 da Instncia SERVIDOR\
SRVINST01.
Usurios Roles Membros Permisses
. user1 . role1 . user1 . role1 INSERT
. user2 . user2 UPDATE
. user3 . user3
. user4 . role2 . user3 . role2 negar INSERT
. user5 . user4 negar DELETE
. user5 SELECT
. role3 . user1 . role3 INSERT
. user3 DELETE
. user5 SELECT
. role 4 . user2 . role4 NEGAR UPDATE
. role 5 . ningum . role5 NEGAR TUDO
Q1. Qual a permisso efetiva do usurio user1 ?
Q2. Qual a permisso efetiva do usurio user2 ?
Q3. Qual a permisso efetiva do usurio user3 ?
Q4. Qual a permisso efetiva do usurio user4 ?
Q5. Qual a permisso efetiva do usurio user5 ?
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 6 SEGURANA NO SQL SERVER 2000
355 CURSO COMPLETO00
Aprendemos a realizar as tarefas utilizando as seguintes ferramentas:
Enterprise Manager.
Assistentes.
Comandos T-SQL no Query Analyzer.
Sei que o captulo foi longo, mas no poderia ser diferente, devido a grande importncia do assunto segurana.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
357 CURSO COMPLETO00
Captulo 7
ADMINISTRANDO, MONITORANDO E
OTIMIZANDO O SQL SERVER 2000
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
358 00CURSO COMPLETO
INTRODUO
Nos captulos anteriores aprendemos a criar Bancos de Dados, tabelas e ndices. Tambm aprendemos
a fazer o backup e o restore de Bancos de Dados. No Captulo 6 aprendemos a configurar a segurana
no SQL Server 2000 e a integrao com a segurana do Windows 2000. Agora, j temos um Banco de
Dados configurado e seguro. Porm existem uma srie de outras tarefas que devem ser executadas para
garantir, alm da disponibilidade e segurana, o desempenho e a confiabilidade do Banco de Dados.
Neste captulo aprenderemos a utilizar uma srie de ferramentas que auxiliam o DBA a administrar,
monitorar e otimizar os Bancos de Dados de um servidor SQL Server 2000.
Iniciaremos o captulo aprendendo a criar um Plano de Manuteno para o Banco de Dados. Iremos
criar este Plano de Manuteno utilizando o assistente Maintenance Plan.
Depois aprenderemos a utilizar os chamados comandos DBCC Database Consistency Checker. Estes
comandos so utilizados para efetuar uma srie de verificaes de consistncia em um Banco de Dados,
em resumo, nos ajudam a diagnosticar e corrigir problemas.
Tambm aprenderemos a importar dados para uma tabela do Banco de Dados e exportar dados do SQL
Server para fontes externas. Continuaremos o captulo aprendendo a utilizar o DTS Data Transforma-
tion Services. Esta uma ferramenta que permite a integrao entre fontes de dados nos mais diversos
formatos, atravs da tecnologia OLE-DB. Por exemplo, podemos consolidar em um Banco de Dados do
SQL Server 2000, dados originados do Mainframe, combinados com dados do Microsoft Access e dados
do DB2 da IBM. Ou quem sabe, para misturar um pouco mais, vamos tambm adicionar dados de uma
planilha do Excel e de um Banco de Dados no formato Dbase (.dbf). Esta integrao possvel, graas
ao DTS. Mas o mais interessante que no estamos limitados a integrar dados de fontes diversas,
tambm podemos transform-los (T de Transformation).
Na continuao aprenderemos a utilizar uma ferramenta de monitorao de performance do Windows
2000 Server: o console Desempenho. Atravs deste console podemos medir o desempenho de uma srie de
objetos/contadores relacionados com o SQL Server 2000. Por exemplo, podemos determinar o nmero de
transaes por segundo, o nmero de logins por segundo, etc. Vamos fazer alguns exemplos prticos para
aprender a utilizar este console. O console Desempenho pode ser utilizado para monitorar o desempenho
de uma srie de objetos/contadores, no estando limitado a objetos/contadores do SQL Server 2000. Assim,
podemos, por exemplo, monitorar o uso de recursos crticos para o Windows 2000, tais como a utilizao
do processador, da memria RAM e das operaes de I/O de disco. Porm, neste captulo nos limitaremos
anlise de desempenho dos objetos/contadores relacionados com o SQL Server 2000.
Explicaremos em detalhes o conceito de objetos/contadores na seo sobre desempenho.
A prxima e ltima ferramenta, a ser analisada neste captulo, o Profiler, conhecido como SQL Server
Profiler na verso anterior do SQL Server. Esta ferramenta permite a monitorao das atividades de
cada instncia do servidor SQL Server 2000 separadamente. Tambm podemos monitorar as atividades
de Banco de Dados. Alm de monitorar, a atividade pode ser salva e depois executada novamente
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
359 CURSO COMPLETO00
contra o Banco de Dados. Tambm podemos salvar os dados capturados em uma tabela, em um arquivo
ou em um Script SQL.
Apenas lembrando que um Script SQL um arquivo no formato de texto, com comandos T-SQL.
KNOW-HOW EM: CRIAO DE UM PLANO DE MANUTENO
PARA UM BANCO DE DADOS DO SQL SERVER 2000
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Fundamentos sobre segurana no SQL Server 2000.
Saber utilizar o Enterprise Manager.
METODOLOGIA
Apresentao dos passos necessrios para a criao de um plano de manuteno.
TCNICA
Criao de um plano de manuteno utilizando o Enterprise Manager.
Uma Plano de Manuteno define uma srie de tarefas que devem ser executadas no Banco de Dados
para garantir o bom funcionamento do mesmo, com bom desempenho. Com o Plano de Manuteno
tambm so definidas as tarefas de backup para evitar a perda de informaes, alm de tarefas que
verificam a integridade do Banco de Dados. Esta srie de tarefas pode ser criada de uma maneira
consolidada, atravs da utilizao da criao de um Plano de Manuteno (Maintenance Plan).
Criamos um Plano de Manuteno do Banco de Dados, utilizando o assistente Database Maintenance
Plan Wizard. Este assistente, ao ser executado, cria e agenda para execuo peridica, vrios Jobs,
sendo que cada Job executa uma determinada tarefa. Os Jobs, criados pelo assistente Database Mainte-
nance Plan Wizard, executam as seguintes tarefas:
Reorganizam os dados nas pginas de dados e ndices atravs da reconstruo dos ndices com
um novo valor para o parmetro Fill Factor. Isto garante uma melhor distribuio dos dados,
com uma melhora no desempenho. Para maiores informaes sobre o parmetro Fill Factor,
consulte o Captulo 4.
Fazem a compresso do Banco de Dados, removendo pginas de dados que esto em branco.
Atualizam uma srie de informaes sobre os ndices do Banco de Dados. Estas informaes
so chamadas de Indexes Statistics. Com essa atualizao, o SQL Server 2000 tem condio
de tomar melhores decises na hora de executar uma consulta. O resultado final um desem-
penho melhor.
Fazem uma verificao interna na consistncia dos dados, para certificar-se de que os mesmos
no esto corrompidos ou em um estado inconsistente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
360 00CURSO COMPLETO
Agendam o backup do Banco de Dados e do Log de transaes. Alm disso, podemos configurar
um perodo durante o qual os backups devero ser mantidos. Porm para manter um histrico
dos backups, devemos levar em considerao as necessidades de armazenamento e mdias, no
caso de estarmos efetuando o backup em fita magntica.
Configuram um processo chamado de log shipping. A idia transferir o log de um servidor
para o Banco de Dados de outro servidor. Na verdade o que significa transferir o log? Significa
aplicar os mesmos comandos em outro Banco de Dados. Com este procedimento podemos
manter duas cpias idnticas dos dados, em servidores diferentes. O servidor de destino, que
recebe o log, conhecido como Standby server. Podemos utilizar um Standby server como
uma cpia de reserva do servidor de produo; cpia esta que pode substituir, rapidamente, o
servidor de produo, em caso de falha deste ltimo. Tambm podemos dividir o trabalho,
deslocando as consultas de uma parcela dos clientes para o Standby server.
A replicao de dados pode tambm ser utilizada para manter cpias idnticas dos dados em dois ou mais servidores. Aprenderemos
sobre replicao no Captulo 8.
Agora vamos aprender a criar um Plano de Manuteno, utilizando o Database Maintenance Plan Wizard.
Exemplo:
Para criar um plano de manuteno para o Banco de Dados Northwind, da instncia SERVIDOR\SRVINST01,
faa o seguinte:
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
Surgem as instncias instaladas no servidor SQL Server.
3. D um clique no sinal de mais ao lado de SERVIDOR\SRVINST01 para expandir esta opo
4. Nas opes que surgem, d um clique na opo Databases. No painel da direita, surge uma lista
com os Bancos de Dados da instncia SERVIDOR\SRVINST01.
5. Clique com o boto direito do mouse no banco Northwind. No menu que surge, selecione o
comando Todas as tarefas -> Maintenance Plan.
6. Surge a tela inicial do assistente, com uma mensagem informando sobre o que pode ser feito
com o assistente. D um clique no boto Avanar, seguindo para a prxima etapa. Surgir a
tela indicada na Figura 7.1.
Nesta etapa podemos definir se o plano de manuteno incluir todos os Bancos de Dados da instncia
(All databases), ou apenas os do sistema (All system databases (master, model, and msdb)), ou se incluir
todos os Bancos de Dados do usurio (All user databases (all databases other than master, model, and
msdb)) ou apenas os selecionados (These databases). A opo These databases j vem selecionada por
padro. Na lista de Bancos de Dados podemos selecionar aqueles que queremos incluir no Plano de
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
361 CURSO COMPLETO00
Figura 7.1 Definindo os Bancos de Dados que faro parte do Plano de Manuteno.
No nosso exemplo iremos incluir apenas o Banco de Dados Northwind.
Certifique-se de que o Banco de Dados Northwind esteja selecionado na lista de Bancos de Dados. Este
Banco de Dados j vem selecionado, porque iniciamos o assistente a partir do menu Todas as tarefas,
do menu de contexto (clique com o boto direito) do Northwind.
7. D um clique no boto Avanar para ir para a prxima etapa. Surge a tela para otimizao dos ndices.
Nesta etapa podemos definir uma srie de configuraes a respeito da otimizao dos ndices e das
pginas de dados do Banco de Dados. Os valores a serem definidos nesta opo variam em cada caso.
Apenas um DBA experiente, e que conhece o Banco de Dados, ser capaz de definir os melhores valores.
No nosso exemplo vamos configurar as opes conforme indicado na Figura 7.2.
Observe que temos um boto Change, onde podemos definir um agendamento para as tarefas desta
etapa. Ao clicar neste boto, surge uma tela com as mesmas opes de agendamento que vimos quando
aprendemos a agendar tarefas de backup. Cabe lembrar que o assistente que cria o Plano de Manuteno,
na verdade est criando uma srie de Jobs. Para cada tarefa criado um Job e cada Job pode ter um
agendamento diferente. Por exemplo, podemos configurar a otimizao dos ndices para acontecer
uma vez por semana, no domingo s 6h e os backups para ocorrerem diariamente, s 19h.
8. D um clique no boto Change e agende a otimizao dos ndices para acontecer uma vez por
semana, no domingo s 6h, conforme indicado na Figura 7.3.
Manuteno. Nesta tela tambm podemos selecionar a opo Ship the transaction logs to other SQL
Servers (log shipping), explicada anteriormente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
362 00CURSO COMPLETO
Figura 7.2 Reorganizando os ndices e otimizando o espao em disco.
Figura 7.3 Agendando a reorganizao dos ndices.
9. D um clique no boto OK para fechar a janela de agendamento. Voc estar de volta ao
assistente.
10. D um clique no boto Avanar, seguindo para a prxima etapa. Surge a tela indicada na Figura 7.4.
Nesta etapa podemos definir a verificao de integridade do Banco de Dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
363 CURSO COMPLETO00
Figura 7.4 Opes para verificao de integridade.
Ao clicar na opo Check database integrity, as demais opes sero habilitadas. Podemos incluir
(Include indexes) ou excluir (Exclude indexes) os ndices do processo de verificao de integridade. Em
caso de incluirmos os ndices, podemos marcar a opo Attempt to repair any minor problems, para
que o SQL Server possa resolver, automaticamente, pequenos problemas de integridade. sempre
aconselhvel incluir os ndices na verificao de integridade. Tambm podemos selecionar a opo
Perform these checks before doing backups, para que a verificao de integridade seja feita antes do
backup. No nosso exemplo vamos configurar as opes conforme indicado na Figura 7.5.
Figura 7.5 Verificao de integridade incluindo os ndices.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
364 00CURSO COMPLETO
11. D um clique no boto Change e agende a verificao de integridade para ocorrer diariamente,
s 23h, conforme indicado na Figura 7.6. Observe que estamos criando diferentes agendamentos,
para diferentes tarefas, conforme descrito anteriormente.
Figura 7.6 Agendando a verificao de integridade.
12. D um clique no boto OK para fechar a janela de agendamento. Voc estar de volta ao assistente.
13. D um clique no boto Avanar para ir para a prxima etapa. Surge a tela onde definimos
opes para o backup do Banco de Dados.
Nesta etapa podemos definir a configurao de backup. Tambm podemos definir que seja feita uma
verificao aps o backup (Verify the integrity of the backup on completion of the backup). Lembre
que efetuar uma verificao aps o backup uma operao que demanda tempo. Caso a sua janela de
backup (tempo disponvel para o backup) no permita a verificao, desmarque esta opo.
14. Marque a opo Back up the database as part of the maintenance plan e a opo Disk. Caso
voc tenha um drive de fita instalado no servidor, marque Tape e selecione o drive na lista.
15. D um clique no boto Change e agende o backup para acontecer s segundas, quartas, sextas
e domingos, s 9h30, conforme indicado na Figura 7.7. Observe que estamos criando diferentes
agendamentos, para diferentes tarefas, conforme descrito anteriormente.
16. D um clique no boto OK para fechar a janela de agendamento. Voc estar de volta ao assistente.
17. D um clique no boto Avanar, seguindo para a prxima etapa. Surge a tela indicada na Figura 7.8.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
365 CURSO COMPLETO00
Figura 7.7 Agendando o backup.
Figura 7.8 Definindo as opes do backup.
Nesta etapa podemos definir onde o backup ser feito, em que drive e pasta. No caso de termos includo
mais do que um Banco de Dados podemos fazer o backup de cada um deles em uma subpasta separada
(Create a subdirectory for each database). Tambm podemos definir por quanto tempo o backup deve
ser mantido (Remove files older than).
18. Configure as opes conforme indicado na Figura 7.9.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
366 00CURSO COMPLETO
Figura 7.9 Mantendo o backup por quatro semanas.
19. D um clique no boto Avanar para ir para a prxima etapa. Surge a tela para configurao do
backup do log de transaes.
20. As opes para esta etapa so semelhantes a da etapa onde configuramos o backup do Banco
de Dados. Marque a opo Backup the transaction log as part of the maintenance plan, para
incluir o backup do Log de transaes, no Plano de Manuteno.
21. D um clique no boto Change e configure o backup do Log para executar diariamente, de trs
em trs horas, entre 6h e 18h, conforme indicado na Figura 7.10.
Figura 7.10 Agendando o backup do Log.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
367 CURSO COMPLETO00
22. D um clique no boto OK para fechar a janela de agendamento. Voc estar de volta ao assistente.
23. D um clique no boto Avanar, seguindo para a prxima etapa. Surge a tela para configurarmos
as opes do backup do Log.
Nesta etapa podemos definir onde o backup do Log ser feito, em que drive e pasta. No caso de termos
includo mais do que um Banco de Dados podemos fazer o backup do Log de cada banco em uma
subpasta separada (Create a subdirectory for each database). Tambm podemos definir por quanto
tempo o backup do Log deve ser mantido (Remove files older than).
24. Configure as opes conforme indicado na Figura 7.11.
Figura 7.11 Mantendo o backup do Log por quatro semanas.
25. D um clique no boto Avanar para ir para a prxima etapa. Surge a tela onde podemos
especificar que seja gerado um relatrio.
Nesta etapa podemos especificar que seja gerado um relatrio pelo Plano de Manuteno. Este relatrio
contm uma descrio das diversas etapas do plano.
26. Especifique que seja gerado um relatrio na pasta D:\backups e que sejam excludos relatrios
gerados a mais do que quatro semanas, conforme indicado na Figura 7.12.
27. D um clique no boto Avanar, seguindo para a prxima etapa.
Nesta etapa podemos configurar o histrico para o Job que gerado pelo Plano de Manuteno. O
histrico armazena informaes sobre a execuo e cada passo do Job, se foi executado com sucesso ou
falhou. Estas informaes so armazenadas na tabela sysdbmaintplan_history do Banco de Dados
msdb. Tambm podemos limitar o tamanho do histrico. Por padro o limite de 1.000 linhas.
28. Aumente este limite para 10.000 linhas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
368 00CURSO COMPLETO
Figura 7.12 Gerando um relatrio do Plano de Manuteno.
Observe que tambm podemos salvar o histrico de execuo do Job em um outro servidor SQL Server (Write history to the server).
Podemos utilizar este procedimento para gravar o histrico de execuo de diversos Planos de Manuteno em um nico servidor. O
DBA pode pesquisar este histrico consolidado para acompanhar o andamento dos Planos de Manuteno.
29. D um clique no boto Avanar para ir etapa final.
Nesta etapa podemos digitar um nome para o plano de manuteno. exibido um resumo com as
opes configuradas nas etapas anteriores. Caso voc queira alterar alguma opo, basta utilizar o
boto Voltar (Back).
30. Digite Plano de Manuteno Northwind no campo Plan Name.
31. D um clique no boto Concluir e pronto. O Plano de Manuteno criado.
32. Os Planos de Manuteno podem ser acessados atravs da opo Management do servidor. Ao
expandir esta opo, teremos acesso a opo Database Maintenance Plans, conforme indicado
na Figura 7.13.
Voc pode alterar um Plano de Manuteno quando for necessrio. Para isso basta localizar o Plano de
Manuteno, clicar com o boto direito do mouse no mesmo, e no menu que surge, selecionar Propriedades.
Na Figura 7.14 temos a janela de propriedades do Plano de Manuteno criado neste exemplo.
Voc tambm pode acessar as propriedades do Plano de Manuteno, dando um clique duplo sobre o mesmo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
369 CURSO COMPLETO00
Figura 7.13 Acesso aos Planos de Manuteno.
Figura 7.14 As propriedades do Plano de Manuteno Northwind.
Na Figura 7.15 podemos ver os diversos Jobs criados pelo Plano de Manuteno.
32. Feche o Enterprise Manager.
Exerccio: Crie um Plano de Manuteno para os Bancos de Dados Exemplo1 e pubs.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
370 00CURSO COMPLETO
Figura 7.15 Os Jobs criados pelo Plano de Manuteno.
KNOW-HOW EM: COMANDOS DBCC DATABASE CONSISTENCY CHECKER
PR-REQUISITOS
Noes sobre o log de transaes.
Fundamentos apresentados na Parte I.
Saber utilizar o Query Analyzer.
METODOLOGIA
Apresentao dos principais comandos DBCC.
No SQL Server 2000, atravs da linguagem T-SQL, temos os comandos DBCC. Este grupo de comandos
conhecido como comandos DBCC, porque todos iniciam com o prefixo DBCC. A grande maioria destes
comandos utilizada para verificao da consistncia fsica e lgica de um Banco de Dados. Em muitas
situaes, o comando alm de fazer a verificao, capaz de corrigir pequenos problemas encontrados.
Podemos dividir os comandos DBCC em quatro categorias, conforme descrito na Tabela 7.1.
Tabela 7.1 Categorias para os comandos DBCC.
Vamos estudar os principais comandos em cada uma destas categorias.
Categoria Descrio
Manuteno Executam tarefas de manuteno do Banco de Dados, ndices e filegroups.
Status Fazem a verificao de variveis do Banco de Dados.
Validao Fazem a validao de determinadas operaes no Banco de Dados, em ndices,
tabelas, catlogos, filegroups, tabelas do sistema e alocao de pginas de dados.
Diversos Executam uma srie de operaes variadas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
371 CURSO COMPLETO00
PRINCIPAIS COMANDOS DBCC DE MANUTENO
Comando DBCC DBREINDEX
Utilizamos este comando para reconstruir um ou mais ndices em uma tabela de um Banco de Dados.
Sintaxe conforme Books OnLine:
DBCC DBREINDEX
( [ database.owner.table_name
[ , index_name
[ , fillfactor ]
]
]
) [ WITH NO_INFOMSGS ]
Na nossa misso de simplificar a sintaxe e o entendimento dos comandos da linguagem T-SQL, vamos
a alguns exemplos prticos. Porm antes dos exemplos, vamos fazer algumas observaes a respeito
deste comando:
No podemos utilizar este comando em tabelas do sistema (master, msdb, etc.).
Por padro, somente a role de servidor sysadmin e as roles de Banco de Dados db_owner e
db_ddladmin tm permisso para executar este comando.
mais vantajosa a utilizao do comando DBCC DBREINDEX, do que a utilizao dos comandos
DROP INDEX e CREATE INDEX. Por exemplo, em uma tabela com diversos ndices, podemos
utilizar o comando DBCC DBREINDEX para reconstruir todos os ndices de uma nica vez, ao
invs de utilizar vrios comandos DROP INDEX e CREATE INDEX, um para cada ndice. Alm
disso, o comando DBCC DBREINDEX executado com sucesso ou falha como um todo, ou
seja, atende o conceito de Atomicidade.
Vamos a alguns exemplos prticos.
Reconstruir o ndice UPKCL_auidind, da tabela authors do Banco de Dados pubs.
Use pubs
DBCC DBREINDEX (authors, UPKCL_auidind, 50)
Ao ser executado com sucesso, este comando emite a seguinte mensagem:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Observe que o nome da tabela vai entre apstrofos e o nome do ndice no. O terceiro parmetro a
definio para o FILL FACTOR, que conforme descrevemos no Captulo 4, uma medida para o percentual
de espao a ser deixado em branco, nas pginas do Banco de Dados, quando da construo do ndice.
Para reconstruir todos os ndices de uma tabela, basta no especificar um nome para o ndice, apenas
coloque dois apstrofas, conforme indicado no exemplo a seguir, onde so reconstrudos todos os
ndices da tabela titles do Banco de Dados pubs:
Use pubs
DBCC DBREINDEX (titles, , 60)
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
372 00CURSO COMPLETO
Comando DBCC DBREPAIR
Utilizamos este comando para excluir um Banco de Dados danificado. Este comando somente fornecido
para compatibilidade com verses anteriores do SQL Server. Por exemplo, voc pode ter criado Stored
Procedures ou Scripts que utilizam este comando e que no iriam funcionar, sem alteraes, no SQL
Server 2000. Nas prximas verses do SQL Server, o suporte a este comando poder ser descontinuado.
Comando DBCC INDEXDEFRAG
Utilizamos este comando para desfragmentar Clustered e Secondary indexes de uma tabela.
Sintaxe conforme Books OnLine:
DBCC INDEXDEFRAG
( { database_name | database_id | 0 }
, { table_name | table_id | view_name | view_id }
, { index_name | index_id }
) [ WITH NO_INFOMSGS ]
Vamos simplificar a sintaxe e o entendimento dos comandos da linguagem T-SQL atravs de alguns
exemplos prticos. Porm antes dos exemplos, vamos fazer algumas observaes a respeito deste comando:
No podemos utilizar este comando em tabelas do sistema (master, msdb, etc.).
Por padro, somente a role de servidor sysadmin e as roles de Banco de Dados db_owner e
db_ddladmin tm permisso para executar este comando.
Este comando alm de desfragmentar os ndices, compacta suas pginas, levando em conta o
valor original do parmetro FILL FACTOR, quando da criao do ndice.
Vamos a um exemplo prtico.
Desfragmentar o ndice UPKCL_auidind, da tabela authors do Banco de Dados pubs.
Use pubs
DBCC INDEXDEFRAG (pubs, authors, UPKCL_auidind)
Ao ser executado com sucesso, este comando informa, de 5 em 5 minutos, o andamento da
desfragmentao dos ndices.
Observe que simplificando a sintaxe, poderamos colocar da seguinte maneira:
Use banco_de_dados
DBCC INDEXDEFRAG (banco_de_dados, tabela, ndice)
Comando DBCC SHRINKDATABASE
Este comando utilizado para que possamos reduzir o tamanho de um ou mais arquivos de dados de
um Banco de Dados.
Sintaxe conforme Books OnLine:
DBCC SHRINKDATABASE
( database_name [ , target_percent ]
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
373 CURSO COMPLETO00
[ , { NOTRUNCATE | TRUNCATEONLY } ]
)
Para simplificar a sintaxe e o entendimento dos comandos da linguagem T-SQL, vamos a alguns exemplos
prticos. Porm antes dos exemplos, vamos fazer algumas observaes a respeito deste comando:
No podemos reduzir o tamanho de um Banco de Dados a menos do que o tamanho do Banco
de Dados model. Por exemplo, se o model tiver o tamanho de 5 MB, este ser o menor tamanho
ao qual um Banco de Dados poder ser reduzido.
Por padro, somente a role de servidor sysadmin e a role de Banco de Dados db_owner tm
permisso para executar este comando.
Este comando no ir reduzir um arquivo do Banco de Dados a um tamanho menor do que o
tamanho dos seus dados. Por exemplo, se um arquivo de dados, primrio ou secundrio, contiver
7 MB em dados, este o menor tamanho ao qual este arquivo poder ser reduzido.
Vamos a alguns exemplos prticos.
Reduzir o tamanho dos arquivos do Banco de Dados Exemplo1, mantendo um espao livre de 25% em
cada arquivo.
Use Exemplo1
DBCC SHRINKDATABASE (Exemplo1, 25)
Ao ser executado com sucesso, este comando emite a seguinte mensagem:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
O segundo parmetro 25, indica o percentual de espao livre que deve ser mantido, em cada arquivo
de dados, aps a execuo do comando. Por exemplo, um arquivo de dados possui 20 MB, dos quais 10
MB esto ocupados com dados. Aps a execuo do comando, sero mantidos, evidentemente, os 10
MB de dados, mais 2,5 MB (25%) de espao livre. Na verdade o SQL Server ir arredondar para 13 MB.
Para os arquivos de log, o valor percentual de espao livre contabilizado como um todo e no para
cada arquivo individualmente. No nosso exemplo, aps executado o comando, somando o tamanho
de todos os arquivos de log, o espao livre seria de 25%.
Com o comando DBCC SHRINKDATABASE, podemos utilizar as opes NOTRUNCATE ou TRUNCATE
ONLY. A opo NOTRUNCATE faz com que o espao liberado, seja mantido no Banco de Dados e no
liberado para o Sistema Operacional. J com a opo TRUNCATE ONLY, o espao liberado retornado
para o Sistema Operacional. A seguir, temos um exemplo de utilizao da opo TRUNCATE:
Use Exemplo1
DBCC SHRINKDATABASE (Exemplo1, 25,NOTRUNCATE)
Comando DBCC SHRINKFILE
Utilizamos este comando para reduzir o tamanho de um arquivo de dados (primrio ou secundrio),
ou de um arquivo de log do Banco de Dados.
Sintaxe conforme Books OnLine:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
374 00CURSO COMPLETO
DBCC SHRINKFILE
( { file_name | file_id }
{ [ , target_size ]
| [ , { EMPTYFILE | NOTRUNCATE | TRUNCATEONLY } ]
}
)
Algumas observaes a respeito deste comando:
No podemos reduzir o tamanho de um Banco de Dados a menos do que o tamanho do Banco
de Dados model. Por exemplo, se o model tiver o tamanho de 5 MB, este ser o menor tamanho
ao qual qualquer Banco de Dados poder ser reduzido.
Por padro, somente a role de servidor sysadmin e a role de Banco de Dados db_owner tm
permisso para executar este comando.
Este comando no ir reduzir um arquivo do Banco de Dados a um tamanho menor do que o
tamanho dos seus dados. Por exemplo, se um arquivo de dados, primrio ou secundrio, contiver
7 MB em dados, este o menor tamanho ao qual este arquivo poder ser reduzido.
Vamos a alguns exemplos prticos.
Reduzir o tamanho do arquivo primrio de dados, do Banco de Dados Exemplo1 a 7 MB.
USE Exemplo1
DBCC SHRINKFILE (exemplo1-prim, 7)
Ao ser executado com sucesso, este comando emite a mensagem indicada na Figura 7.16.
Figura 7.16 Resultado da execuo do comando DBCC SHRINKFILE.
O segundo parmetro 7, j indica o tamanho final do arquivo de dados, em MB. exemplo1-prim o
nome lgico associado com o arquivo primrio de dados.
Com o comando DBCC SHRINKFILE, podemos utilizar as opes NOTRUNCATE, TRUNCATE ONLY
ou EMPTYFILE. A opo NOTRUNCATE faz com que o espao liberado, seja mantido no Banco de
Dados e no liberado para o Sistema Operacional. J com a opo TRUNCATE ONLY, o espao liberado
retornado para o Sistema Operacional. A opo EMPTYFILE migra todos os dados do arquivo
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
375 CURSO COMPLETO00
especificado, para outros arquivos de dados no mesmo Filegroup. Novos dados no podero ser gravados
em um arquivo em que a opo EMPTYFILE foi especificada; com isso poderemos excluir o arquivo,
utilizando o comando ALTER DATABASE. A seguir, temos um exemplo de utilizao da opo
EMPTYFILE. Depois utilizamos o comando ALTER DATABASE para excluir o arquivo:
USE Exemplo1
DBCC SHRINKFILE (exemplo1-sec1,EMPTYFILE)
GO
ALTER DATABASE Exemplo1
REMOVE FILE exemplo1-sec1
Ao ser executado com sucesso, este comando emite a mensagem indicada na Figura 7.17.
Figura 7.17 Execuo do comando DBCC SHRINKFILE com a opo EMPTYFILE.
Comando DBCC UPDATEUSAGE
Este comando informa e corrige erros na tabela sysindexes. Erros nesta tabela podem fazer com que o
comando sp_spaceused retorne informaes incorretas.
Sintaxe conforme Books OnLine:
DBCC UPDATEUSAGE
( { database_name | 0 }
[ , { table_name | view_name }
[ , { index_id | index_name } ] ]
)
[ WITH [ COUNT_ROWS ] [ , NO_INFOMSGS ]
]
Algumas observaes a respeito deste comando:
Se no existirem problemas na tabela sysindexes, este comando no retornar nenhuma
mensagem. Este comando tenta corrigir erros nas seguintes colunas da tabela sysindexes: rows,
used, reserved e dpages.
Por padro, somente a role de servidor sysadmin e as roles de Banco de Dados db_owner e
db_ddladmin tm permisso para executar este comando.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
376 00CURSO COMPLETO
Vamos a alguns exemplos prticos.
Utilizar o comando DBCC UPDATEUSAGE no Banco de Dados Northwind.
DBCC UPDATEUSAGE (Northwind)
Ao ser executado com sucesso, este comando emite a seguinte mensagem:
DBCC UPDATEUSAGE: sysindexes row updated for table syscolumns (index ID 2):
USED pages: Changed from (4) to (5) pages.
RSVD pages: Changed from (8) to (10) pages.
DBCC UPDATEUSAGE: sysindexes row updated for table syscolumns (index ID 1):
RSVD pages: Changed from (26) to (27) pages.
DBCC UPDATEUSAGE: sysindexes row updated for table sysdepends (index ID 2):
USED pages: Changed from (2) to (4) pages.
RSVD pages: Changed from (2) to (4) pages.
DBCC UPDATEUSAGE: sysindexes row updated for table Orders (index ID 4):
USED pages: Changed from (2) to (4) pages.
RSVD pages: Changed from (2) to (4) pages.
DBCC UPDATEUSAGE: sysindexes row updated for table Orders (index ID 5):
USED pages: Changed from (2) to (4) pages.
RSVD pages: Changed from (2) to (4) pages.
DBCC UPDATEUSAGE: sysindexes row updated for table Orders (index ID 6):
USED pages: Changed from (2) to (5) pages.
RSVD pages: Changed from (2) to (5) pages.
DBCC UPDATEUSAGE: sysindexes row updated for table Orders (index ID 7):
USED pages: Changed from (2) to (5) pages.
RSVD pages: Changed from (2) to (5) pages.
DBCC UPDATEUSAGE: sysindexes row updated for table Orders (index ID 8):
USED pages: Changed from (2) to (4) pages.
RSVD pages: Changed from (2) to (4) pages.
DBCC UPDATEUSAGE: sysindexes row updated for table Order Details (index ID 2):
USED pages: Changed from (2) to (6) pages.
RSVD pages: Changed from (2) to (6) pages.
DBCC UPDATEUSAGE: sysindexes row updated for table Order Details (index ID 3):
USED pages: Changed from (2) to (6) pages.
RSVD pages: Changed from (2) to (6) pages.
DBCC UPDATEUSAGE: sysindexes row updated for table Order Details (index ID 4):
USED pages: Changed from (2) to (6) pages.
RSVD pages: Changed from (2) to (6) pages.
DBCC UPDATEUSAGE: sysindexes row updated for table Order Details (index ID 5):
USED pages: Changed from (2) to (6) pages.
RSVD pages: Changed from (2) to (6) pages.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
No exemplo do servidor que estou utilizando, este comando fez uma srie de correes. Isto aconteceu porque fiz muitas alteraes no
Banco de Dados Northwind. Na verdade, como dizemos no dia-a-dia: Fucei bastante neste Banco de Dados. Ao rodar este comando em
um Banco de Dados que no foi muito alterado, provvel que no existam correes ou que as mesmas sejam mnimas. Mas a ttulo
de exemplo, foi uma feliz coincidncia, uma vez que a mensagem mostra as diversas correes efetuadas por este comando.
PRINCIPAIS COMANDOS DBCC DE STATUS
Comando DBCC SHOWCONTIG
Este comando exibe informaes sobre a fragmentao dos dados e dos ndices de uma determinada tabela.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
377 CURSO COMPLETO00
Sintaxe conforme Books OnLine:
DBCC SHOWCONTIG
[ ( { table_name | table_id | view_name | view_id }
[ , index_name | index_id ]
)
]
[ WITH { ALL_INDEXES
| FAST [ , ALL_INDEXES ]
| TABLERESULTS [ , { ALL_INDEXES } ]
[ , { FAST | ALL_LEVELS } ]
}
]
Algumas observaes a respeito deste comando:
DBCC SHOWCONTIG utilizado para determinar o quo fragmentada est uma tabela. A
fragmentao ocorre devido a operaes que alteram dados, como inseres, alteraes e
excluses. Estas modificaes no so distribudas de uma maneira uniforme entre as linhas da
tabela, de tal forma que as pginas de dados no apresentam um fator de preenchimento
homogneo. Esta fragmentao pode prejudicar o desempenho de pesquisas realizadas nos
dados da tabela. A queda no desempenho pode ser pior ainda no caso de consultas que utilizam
uma ou mais clusulas Join.
Por padro, somente a role de servidor sysadmin e as roles de Banco de Dados db_owner e
db_ddladmin tm permisso para executar este comando.
Com o comando DBCC SHOWCONTIG, podemos utilizar as seguintes opes:
WITH FAST: Determina que seja feita uma verificao rpida nos ndices.
WITH TABLERESULTS: Exibe os resultados da verificao em forma de tabela.
WITH ALL_INDEXES: Efetua a verificao em todos os ndices de uma tabela ou view.
WITH ALL_LEVELS: Somente pode ser utilizada em conjunto com a opo TABLERESULTS.
Faz com que informaes mais detalhadas, para cada nvel dos ndices, sejam retornadas
pelo comando DBCC SHOWCONTIG.
Vamos a alguns exemplos prticos.
Utilizar o comando DBCC SHOWCONTIG para retornar informaes sobre todos os ndices de todas
as tabelas, do Banco de Dados Northwind.
USE Northwind
DBCC SHOWCONTIG WITH TABLERESULTS, ALL_INDEXES
Na Figura 7.18 so exibidas as primeiras linhas retornadas como resultado do comando anterior.
Tambm poderamos retornar as informaes sobre a fragmentao em um nica tabela, conforme o
exemplo a seguir, onde retornamos informaes sobre a fragmentao na tabela Orders do Banco de
Dados Northwind:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
378 00CURSO COMPLETO
Figura 7.18 Execuo do comando DBCC SHOWCONTIG com a opo ALL_INDEXES.
USE Northwind
DBCC SHOWCONTIG (Orders)
Este comando ir retornar o seguinte resultado:
DBCC SHOWCONTIG scanning Orders table...
Table: Orders (21575115); index ID: 1, database ID: 6
TABLE level scan performed.
- Pages Scanned................................: 20
- Extents Scanned..............................: 5
- Extent Switches..............................: 4
- Avg. Pages per Extent........................: 4.0
- Scan Density [Best Count:Actual Count].......: 60.00% [3:5]
- Logical Scan Fragmentation ..................: 0.00%
- Extent Scan Fragmentation ...................: 40.00%
- Avg. Bytes Free per Page.....................: 146.5
- Avg. Page Density (full).....................: 98.19%
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Para maiores informaes sobre o comando DBCC SHOWCONTIG e sobre os resultados retornados pelo mesmo, consulte a referncia da
linguagem T-SQL no Books OnLine.
Comando DBCC USEROPTIONS
Com este comando obtemos informaes sobre as opes definidas para a conexo ativa com o Banco
de Dados. Por exemplo, quando acessamos o Query Analyzer ou o Enterprise Manager, estamos
estabelecendo uma conexo com uma instncia do servidor SQL Server 2000. O comando DBCC
USEROPTIONS retorna uma srie de informaes sobre esta conexo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
379 CURSO COMPLETO00
Sintaxe conforme Books OnLine:
DBCC USEROPTIONS
Qualquer usurio tem permisso para executar este comando.
Exemplo:
DBCC USEROPTIONS
Ao ser executado com sucesso, este comando emite a seguinte mensagem:
Set Option Value
textsize 64512
language us_english
dateformat mdy
datefirst 7
quoted_identifier SET
arithabort SET
ansi_null_dflt_on SET
ansi_defaults SET
ansi_warnings SET
ansi_padding SET
ansi_nulls SET
concat_null_yields_null SET
PRINCIPAIS COMANDOS DBCC DE VALIDAO
Comando DBCC CHECKDB
Faz a verificao da alocao (de linhas, pginas e extents) e da integridade estrutural de todos os
objetos de um Banco de Dados. Alm da verificao, este comando capaz de reparar problemas com
a alocao de espao no Banco de Dados. Dependendo do tamanho do Banco de Dados e do volume de
dados, este comando pode demorar um bom tempo para ser executado.
Sintaxe conforme Books OnLine:
DBCC CHECKDB
( database_name
[ , NOINDEX
| { REPAIR_ALLOW_DATA_LOSS
| REPAIR_FAST
| REPAIR_REBUILD
} ]
) [ WITH { [ ALL_ERRORMSGS ]
[ , [ NO_INFOMSGS ] ]
[ , [ TABLOCK ] ]
[ , [ ESTIMATEONLY ] ]
[ , [ PHYSICAL_ONLY ] ]
}
]
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
380 00CURSO COMPLETO
Algumas observaes a respeito deste comando:
Por padro, somente a role de servidor sysadmin e a role de Banco de Dados db_owner que
tm permisso para executar este comando.
Este comando faz uma verificao da integridade de todos os elementos de um Banco de Dados.
Vamos a alguns exemplos prticos.
Fazer uma verificao de integridade no Banco de Dados pubs.
Use pubs
DBCC CHECKDB
Ao ser executado com sucesso, este comando emite a seguinte mensagem:
DBCC results for pubs.
DBCC results for sysobjects.
There are 72 rows in 1 pages for object sysobjects.
DBCC results for sysindexes.
There are 50 rows in 3 pages for object sysindexes.
DBCC results for syscolumns.
There are 330 rows in 5 pages for object syscolumns.
DBCC results for systypes.
There are 29 rows in 1 pages for object systypes.
DBCC results for syscomments.
There are 113 rows in 5 pages for object syscomments.
DBCC results for sysfiles1.
There are 2 rows in 1 pages for object sysfiles1.
DBCC results for syspermissions.
There are 37 rows in 1 pages for object syspermissions.
DBCC results for sysusers.
There are 20 rows in 1 pages for object sysusers.
DBCC results for sysproperties.
There are 0 rows in 0 pages for object sysproperties.
DBCC results for sysdepends.
There are 241 rows in 1 pages for object sysdepends.
DBCC results for sysreferences.
There are 10 rows in 1 pages for object sysreferences.
DBCC results for sysfulltextcatalogs.
There are 0 rows in 0 pages for object sysfulltextcatalogs.
DBCC results for sysfulltextnotify.
There are 0 rows in 0 pages for object sysfulltextnotify.
DBCC results for sysfilegroups.
There are 1 rows in 1 pages for object sysfilegroups.
DBCC results for titleauthor.
There are 25 rows in 1 pages for object titleauthor.
DBCC results for stores.
There are 6 rows in 1 pages for object stores.
DBCC results for sales.
There are 21 rows in 1 pages for object sales.
DBCC results for roysched.
There are 86 rows in 1 pages for object roysched.
DBCC results for discounts.
There are 3 rows in 1 pages for object discounts.
DBCC results for jobs.
There are 14 rows in 1 pages for object jobs.
DBCC results for pub_info.
There are 8 rows in 1 pages for object pub_info.
DBCC results for employee.
There are 43 rows in 1 pages for object employee.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
381 CURSO COMPLETO00
DBCC results for authors.
There are 23 rows in 1 pages for object authors.
DBCC results for publishers.
There are 8 rows in 1 pages for object publishers.
DBCC results for titles.
There are 18 rows in 1 pages for object titles.
CHECKDB found 0 allocation errors and 0 consistency errors in database pubs.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Observe que neste exemplo o comando no encontrou nenhum erro de alocao e tambm no encontrou nenhuma inconsistncia.
Tambm podemos utilizar algumas opes com o comando DBCC CHECKDB. Por exemplo, a opo
NOINDEX define que os Nonclustered indexes das tabelas criadas pelo usurio no devem ser verificados.
A seguir temos um exemplo de utilizao desta opo.
DBCC CHECKDB (pubs, NOINDEX)
Para informao sobre todas as opes do comando DBCC CHECKDB, consulte a referncia da linguagem T-SQL, no Books OnLine.
Comando DBCC CHECKTABLE
Faz a verificao da integridade das pginas de dados, ndices, e pginas com valores de campos do tipo
text, ntext e image. Devemos utilizar este comando em tabelas com suspeita de dados corrompidos.
Sintaxe conforme Books OnLine:
DBCC CHECKTABLE
( table_name | view_name
[ , NOINDEX
| index_id
| { REPAIR_ALLOW_DATA_LOSS
| REPAIR_FAST
| REPAIR_REBUILD }
]
) [ WITH { [ ALL_ERRORMSGS | NO_INFOMSGS ]
[ , [ TABLOCK ] ]
[ , [ ESTIMATEONLY ] ]
[ , [ PHYSICAL_ONLY ] ]
}
]
Algumas observaes a respeito deste comando:
Por padro, somente a role de servidor sysadmin e a role de Banco de Dados db_owner que
tm permisso para executar este comando.
feita uma verificao da integridade fsica de tabelas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
382 00CURSO COMPLETO
Vamos a alguns exemplos prticos.
Verificar a integridade da tabela Orders do Banco de Dados Northwind.
Use Northwind
DBCC CHECKTABLE(orders)
Ao ser executado com sucesso, este comando emite a seguinte mensagem:
DBCC results for Orders.
There are 830 rows in 20 pages for object Orders.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Verificar a integridade somente das pginas de dados da tabela Orders do Banco de Dados Northwind,
isto , sem fazer a verificao dos ndices.
Use Northwind
DBCC CHECKTABLE (orders) WITH PHYSICAL_ONLY
Para informao sobre todas as opes do comando DBCC CHECKTABLE, consulte a referncia da linguagem T-SQL, no Books OnLine.
MAIS UM COMANDO DBCC
Comando DBCC HELP
Retorna a sintaxe para um determinado comando DBCC.
Sintaxe conforme Books OnLine:
DBCC HELP ( dbcc_statement | @dbcc_statement_var | ? )
Por padro, somente a role de servidor sysadmin que tem permisso para executar este
comando.
Considere o exemplo:
DBCC HELP (CHECKDB)
Este comando ir retornar a sintaxe para o comando DBCC CHECKDB.
Agora considere o seguinte exemplo:
DBCC HELP (?)
Este comando retorna uma listagem de todos os comandos DBCC, sem o prefixo DBCC, para os quais
est disponvel ajuda, atravs do comando DBCC HELP.
Para uma referncia completa de todos os comandos DBCC, voc pode acessar o item DBCC, na
referncia da linguagem T-SQL, no Books OnLine.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
383 CURSO COMPLETO00
KNOW-HOW EM: IMPORTAO E EXPORTAO DE DADOS
COM O DTS DATA TRANSFORMATION SERVICES
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Saber utilizar o Enterprise Manager.
METODOLOGIA
Aprender a utilizar o DTS Import Wizard e o DTS Export Wizard.
TCNICA
Importar e exportar dados utilizando o DTS.
Com o SQL Server 2000 podemos, facilmente, importar e exportar dados que esto em outros formatos,
como por exemplo:
Dados do Microsoft Access.
Dados no formato Dbase (.dbf).
Dados de outros Bancos de Dados como o ORACLE, DB2 da IBM, etc.
Tambm podemos importar e exportar dados entre diferentes Bancos de Dados do SQL Server
dentro da mesma instncia, entre instncias do mesmo servidor e at mesmo entre instncia de
servidores diferentes.
Para ilustrar estas capacidades faremos alguns exemplos prticos, onde estaremos importando e
exportando dados. Para situaes em que seja necessria a integrao com fontes mais complexas,
como por exemplo dados armazenados no Mainframe, devemos utilizar o DTS Data Transformation
Services. Neste item, estaremos tratando de importaes e exportaes simples, com Bancos de Dados
do Microsoft SQL Server, Microsoft Access e no formado .dbf. Tambm veremos um exemplo de
transformao dos dados importados, com o auxlio do DTS.
IMPORTANDO DADOS DE OUTRAS FONTES DE DADOS
A seguir faremos um exemplo, onde importaremos dados de um Banco de Dados do Microsoft Access.
Exemplo:
Neste exemplo vamos criar um novo Banco de Dados chamado ImportAccess, na instncia
SERVIDOR\SRVINST01. Depois vamos importar algumas tabelas para dentro deste Banco de Dados.
Procedimento 1 Criar um Banco de Dados chamado ImportAccess, com as seguintes
caractersticas:
Nome no SQL Server: ImportAccess
Arquivo primrio: C:\livrosql\ImportAccess\ImportAccess-prim.mdf, tamanho inicial de 10 MB,
tamanho mximo de 50 MB e crescimento automtico habilitado com incrementos de 1 MB.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
384 00CURSO COMPLETO
Arquivo secundrio: C:\livrosql\ImportAccess\ImportAccess-sec1.ndf, tamanho inicial
de 15 MB, tamanho mximo de 50 MB e crescimento automtico habilitado com
incrementos de 10%.
Arquivo de log: C:\livrosql\ImportAccess\ImportAccess-log.ldf, tamanho inicial de 5
MB, tamanho mximo de 50 MB e com crescimento automtico habilitado com
incrementos de 1 MB.
Para criar este Banco de Dados, faa o seguinte:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo. Ser aberto o Query Analyzer com
o Banco de Dados master como sendo o Banco de Dados atual.
3. Digite e execute (Ctrl+E), o seguinte comando:
CREATE DATABASE ImportAccess
ON
*************************
Definio do Arquivo Primrio
*************************
(NAME= ImportAccess-prim,
FILENAME = C:\livrosql\ImportAccess\ImportAccess-prim.mdf,
SIZE= 10MB,
MAXSIZE= 50MB,
FILEGROWTH = 1MB),
***************************
Definio do Arquivo Secundrio
***************************
(NAME= ImportAccess-sec,
FILENAME = C:\livrosql\ImportAccess\ImportAccess-sec.ndf,
SIZE= 15MB,
MAXSIZE= 50MB,
FILEGROWTH = 10%)
*************************
Definio do Arquivo de Log
*************************
LOG ON
(NAME= ImportAccess-log,
FILENAME = C:\livrosql\ImportAccess\ImportAccess-log.ldf,
SIZE= 5MB,
MAXSIZE= 50MB,
FILEGROWTH = 1MB)
***************************************
Final do comando de criao do Banco de Dados
***************************************
Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, o Banco de Dados
ImportAccess ter sido criado e a seguinte mensagem ser exibida no painel inferior do Query Analyzer:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
385 CURSO COMPLETO00
The CREATE DATABASE process is allocating 10.00 MB on disk ImportAccess-prim.
The CREATE DATABASE process is allocating 15.00 MB on disk ImportAccess-sec.
The CREATE DATABASE process is allocating 5.00 MB on disk ImportAccess-log.
4. Feche o Query Analyzer.
Procedimento 2: Importar as tabelas do Banco de Dados C:\Meus Documentos\teste.mdb, no
formato do Microsoft Access 97, para o Banco de Dados ImportAccess, recm criado na instncia
SERVIDOR\SRVINST01 do SQL Server 2000.
Se voc estiver utilizando outro nome para o Banco de Dados, para a instncia do SQL ou para o arquivo teste.mdb, substitua estas
opes pelas opes que voc est utilizando, quando as mesmas aparecerem nos procedimentos deste exerccio.
Para importar as tabelas do Banco de Dados C:\Meus documentos\teste.mdb, para o ImportAccess,
faa o seguinte:
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para exibir os Bancos de Dados desta instncia.
Podemos ver que j aparece o Banco de Dados ImportAccess, criado no Procedimento 1 deste exerccio.
6. D um clique no sinal de mais ao lado de ImportAccess e depois d um clique na opo Tables.
Observe que somente existem as chamadas tabelas do sistema, aquelas criadas automaticamente
pelo SQL Server 2000, quando da criao de um Banco de Dados. Conforme descrevemos
anteriormente, as tabelas do sistema contm informaes sobre o prprio Banco de Dados.
Vamos importar uma srie de tabelas que esto em um arquivo do Microsoft Access. Na Figura
7.19 podemos ver as tabelas que sero importadas.
7. D um clique com o boto direito do mouse no Banco de Dados ImportAccess. Nas opes que
surgem, selecione o comando Todas as tarefas -> Import Data. Surge o DTS Import/Export Wizard.
8. D um clique no boto Avanar (Next), seguindo para a segunda etapa.
Na segunda etapa devemos selecionar qual o formato dos dados a serem importados. Por padro vem
selecionado, na lista Data Source, o drive para SQL Server 2000: Microsoft OLE DB Provider for SQL
Server. Mas existe a possibilidade de importar dados de vrias outras fontes, como por exemplo:
Dbase III, IV e V.
Microsoft Access.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
386 00CURSO COMPLETO
Figura 7.19 Tabelas do arquivo teste.mdb.
Microsoft Excel 3, 4, 5, 97 e 2000.
Paradox 3, 4 e 5.
Fox Pro.
Visual Fox Pro.
ORACLE.
Arquivos de texto.
9. Nesta lista selecione Microsoft Access, pois vamos importar dados de um arquivo .mdb, que
um Banco de Dados do Access.
Quando escolhemos uma opo na lista Data Source, as demais opes desta etapa mudam para refletir
os parmetros que devem ser fornecidos para a fonte de dados escolhida. No caso de uma fonte do
Microsoft Access, devemos definir a localizao do arquivo e um nome de usurio e senha, caso o
Banco de Dados esteja protegido.
10. No campo File Name, digite C:\Meus documentos\teste.mdb. Deixe os campos Username e
Password em branco, pois este Banco de Dados no est protegido. Voc tambm pode utilizar
o boto (...), para navegar at a pasta onde est o Banco de Dados com as tabelas a serem
importadas. Sua tela deve estar conforme indicado na Figura 7.20.
A partir de um Banco de Dados do Microsoft Access, podemos importar somente tabelas e consultas (views). Os formulrios, relatrios,
macros e mdulos no podero ser importados. Isto acontece, porque estes objetos so objetos de aplicao, isto , que constroem a
interface com o usurio e do suporte s funcionalidades da interface. Conforme j salientamos diversas vezes, o Microsoft SQL Server
um servidor de Banco de Dados, o qual disponibiliza os dados para aplicativos desenvolvidos com outras ferramentas, como o Visual
Basic, Basic.NET, ASP, ASP.NET, C#, Delphi, etc.
11. D um clique no boto Avanar (Next), para ir prxima etapa.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
387 CURSO COMPLETO00
Figura 7.20 Definindo a origem dos dados.
12. Nesta etapa devemos definir para qual Banco de Dados, os dados sero importados. Como
abrimos o assistente, clicando com o boto direito do mouse no Banco de Dados ImportAccess
e selecionando o comando Todas as tarefas -> Import Data, o mesmo j vem selecionado por
padro. Aceite esta seleo, pois justamente o que queremos: importar as tabelas do Banco de
Dados teste.mdb do Access, para o Banco de Dados ImportAccess do SQL Server 2000. Nesta
tela, poderamos definir um outro Banco de Dados como o destino.
O mais interessante que o Banco de Dados de destino no precisa, obrigatoriamente, ser um Banco de
Dados do SQL Server 2000. Poderamos, por exemplo, importar de um Banco de Dados do Microsoft
Access, para um do Paradox ou do Dbase IV. Observe tambm que quando escolhemos uma opo na
lista Destination, as demais opes desta etapa mudam para refletir os parmetros que devem ser
fornecidos para a fonte de destino dos dados.
Na lista Server podemos selecionar a instncia do SQL Server, na qual est o Banco de Dados de destino.
13. Certifique-se que na lista Server esteja selecionada a opo SERVIDOR\SRVINTS01, e na lista
Database esteja selecionada a opo ImportAccess, conforme indicado na Figura 7.21.
14. D um clique no boto Avanar (Next), para ir para a prxima etapa.
Nesta etapa, com base nos formatos de origem e destino selecionados, temos duas opes:
Copy table(s) and view(s) from the source database: Esta opo exibir, na prxima etapa, uma
listagem das tabelas e consultas (views), do arquivo de origem. Salientando o que foi dito
anteriormente, somente podemos importar tabelas e consultas para um Banco de Dados do
SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
388 00CURSO COMPLETO
Figura 7.21 Definindo o destino dos dados.
Use a query to specify the data to transfer: Esta opo exibir, na prxima etapa, uma janela
grfica, na qual podemos construir uma instruo SQL que retorna dados de uma ou mais tabelas.
15. Certifique-se de que a opo Copy table(s) and view(s) from the source database esteja selecionada.
16. D um clique no boto Avanar (Next), para ir para a prxima etapa.
Nesta etapa, devemos selecionar as tabelas e consultas a serem importadas. No nosso exemplo selecionaremos
apenas as tabelas. Observe que para distinguir entre as tabelas e consultas, podemos observar o cone no
lado esquerdo do nome de cada objeto. Para tabelas o cone de duas pequensa tabelas sobrepostas, j para
consultas o cone a figura de um pequeno culos com as lentes verdes. Ao selecionar uma tabela ou
consulta, voc pode clicar no boto Preview, que sero exibidos os dados do objeto selecionado.
17. Certifique-se de que todas as tabelas estejam selecionadas, conforme indicado na Figura 7.22.
18. D um clique no boto Avanar (Next), para ir para a prxima etapa.
Nesta etapa, temos as seguintes opes:
Run Immediately: Esta opo faz com que a importao seja executada imediatamente aps
finalizarmos o assistente.
Use replication to publish destination data: Esta opo faz com que o Assistente de Replicao
seja automaticamente inicializado aps finalizarmos o assistente de importao. Trataremos
do assunto replicao, extensivamente, no prximo captulo.
Schedule DTS package for later execution: Esta opo permite que agendemos a importao
para acontecer em intervalos programados, atravs da criao de um Job. Observe que esta
opo pode ser marcada em conjunto com as demais opes. Por exemplo, podemos executar
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
389 CURSO COMPLETO00
Figura 7.22 Selecionando todas as tabelas do Banco de Dados de origem teste.mdb.
Tambm podemos salvar as definies de importao, selecionando a opo Save DTS Package. Temos
quatro formatos possveis para salvar as configuraes: SQL Server, SQL Server Meta Data Services,
Structured Storage File e Visual Basic File.
19. Certifique-se de que apenas a opo Run Immediately esteja selecionada, e d um clique no
boto Avanar (Next), seguindo para a prxima etapa.
Voc estar na tela final do assistente, onde apresentado um resumo das opes selecionadas. Caso
voc queira alterar alguma opo s utilizar o boto Voltar (Back).
20. Para fazer a importao, d um clique no boto Concluir (Finish).
O SQL Server 2000 exibe uma janela com o progresso da importao, conforme mostra a Figura 7.23.
Ao final exibida uma mensagem informando o nmero de objetos que foram importados.
21. D um clique no boto OK para fechar esta mensagem.
22. Voc estar de volta janela de progresso indicada na Figura 7.23. D um clique o boto Done
para fech-la.
23. Voc estar de volta ao Enterprise Manager. D um clique no sinal de mais ao lado do Banco de
Dados ImportAccess para exibir as opes do mesmo.
a importao imediatamente (Run Immediately) e tambm agendar a importao para ocorrer
em perodos determinados. Se selecionarmos esta opo, podemos utilizar o boto (...) para
alterar o agendamento. Se o agendamento no for alterado, o mesmo programado para
execuo diria meia-noite (00:00:00 h).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
390 00CURSO COMPLETO
Figura 7.23 A importao em andamento.
24. D um clique em Tables, para exibir uma listagem das tabelas do Banco de Dados ImportAccess.
Observe, na Figura 7.24, as sete tabelas que foram importadas do Banco de Dados teste.mdb.
Figura 7.24 Tabelas importadas do Banco de Dados teste.mdb.
25. Feche o Enterprise Manager.
O Banco de Dados teste.mdb uma cpia do Norhwind.mdb, que vem como exemplo, juntamente com o Microsoft Office 97. Normalmente
o mesmo encontra-se no seguinte caminho:
C:\Arquivos de programas\Microsoft Office\Office\Exemplos\Northwind.mdb.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
391 CURSO COMPLETO00
EXPORTANDO DADOS DO SQL SERVER 2000 PARA OUTRAS FONTES DE DADOS
Em determinadas situaes pode ser necessria a exportao dos dados que esto em um servidor SQL
Server para outros formatos de dados. Por exemplo, podemos exportar uma tabela ou o resultado de
uma view para um planilha do Excel. A pessoa responsvel, por exemplo uma secretria, pode preparar
um relatrio a partir da planilha do Excel.
A exemplo da importao de dados, podemos exportar dados para uma variedade de formatos. Vamos
fazer dois exemplos de exportao de dados. No primeiro, exportaremos dados para uma planilha do
Excel 97; no segundo, para o formato do Dbase III.
Exemplo:
Exportar as tabelas authors, employee, sales e titles, do Banco de Dados pubs, da instncia
SERVIDOR\SRVINST01, para uma planilha no formato do Excel 97. A planilha ser gravada na pasta
C:\Meus documentos, com o nome de pubs.xls.
Importante: Quando exportamos dados para uma planilha do Excel no necessrio que o arquivo j
tenha sido criado, pois o DTS Import/Export Wizard ir criar o arquivo e exportar os dados para o
mesmo. Caso o arquivo j exista, os dados do arquivo sero mantidos e uma nova planilha ser criada
para cada tabela que est sendo exportada.
Procedimento: Para exportar as tabelas authors, employee, sales e titles, do Banco de Dados pubs, da
instncia SERVIDOR\SRVINST01, para uma planilha no formato do Excel 97, faa o seguinte:
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para exibir os Bancos de Dados desta instncia.
6. Na lista de Bancos de Dados, localize o pubs, d um clique com o boto direito do mouse sobre
o mesmo e selecione o comando: Todas as tarefas -> Export Data. Surge a tela inicial do assistente
DTS Import/Export Wizard.
7. D um clique no boto Avanar (Next), seguindo para a segunda etapa.
Na segunda etapa podemos selecionar o formato dos dados a serem exportados. Por padro vem
selecionado, na lista Data Source, o drive para SQL Server 2000: Microsoft OLE DB Provider for SQL
Server. Mas existe a possibilidade de exportar dados para diversos formatos, como por exemplo:
Dbase III, IV e V.
Microsoft Access.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
392 00CURSO COMPLETO
Microsoft Excel 3, 4, 5, 97 e 2000.
Paradox 3, 4 e 5.
Fox Pro.
Visual Fox Pro.
ORACLE.
Arquivos de texto.
8. Como estamos exportando dados do SQL Server 2000, certifique-se de que na lista Data Source
esteja selecionado Microsoft OLE DB Provider for SQL Server.
Quando escolhemos uma opo na lista Data Source, as demais opes desta etapa mudam para refletir
os parmetros que devem ser fornecidos para a fonte de dados escolhida. No caso de uma fonte do
Microsoft OLE DB Provider for SQL Server, devemos definir o nome do Banco de Dados e as informaes
para conexo. Como acionamos o assistente clicando com o boto direito do mouse no Banco de
Dados pubs, este j vem selecionado na lista Database.
9. Para autenticao selecione Use Windows Authentication. D um clique no boto Avanar
(Next), para ir prxima etapa.
10. Nesta etapa devemos definir para qual formato e arquivo, se for o caso, os dados sero
importados. Na lista Destination selecione: Microsoft Excel 97-2000. No campo File Name
digite: C:\Meus documentos\pubs.xls. Sua tela deve estar conforme indicado na Figura 7.25.
Figura 7.25 Definindo o destino dos dados.
11. D um clique no boto Avanar (Next), para ir para a prxima etapa.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
393 CURSO COMPLETO00
Nesta etapa, com base nos formatos de origem e destino selecionados, temos duas opes:
Copy table(s) and view(s) from the source database: Esta opo exibir, na prxima etapa, uma
listagem das tabelas e consultas (views) do arquivo de origem. Salientando o que foi dito
anteriormente, somente podemos importar tabelas e consultas para um Banco de Dados do
SQL Server 2000.
Use a query to specify the data to transfer: Esta opo exibir, na prxima etapa, uma janela
grfica, na qual podemos construir uma instruo SQL que retorna dados de uma ou mais
tabelas.
12. Certifique-se de que a opo Copy table(s) and view(s) from the source database esteja
selecionada, e clique em Avanar (Next) para seguir.
Observe que o assistente indica o formato dos dados de origem (Microsoft SQL Server) e o formato dos dados de destino (Microsoft Excel 97-2000).
Na etapa seguinte, devemos selecionar as tabelas e consultas a serem exportadas. No nosso exemplo
selecionaremos apenas as tabelas authors, employee, sales e titles. Observe que, para distinguir entre as
tabelas e consultas, podemos observar o cone no lado esquerdo do nome de cada objeto. Para tabelas,
o cone de duas pequenas tabelas sobrepostas; j para consultas, o cone a figura de um pequeno
culos com as lentes verdes. Ao selecionar uma tabela ou consulta, voc pode clicar no boto Preview
que sero exibidos os dados do objeto selecionado. Cada tabela ser exportada como uma nova planilha
na pasta de trabalho C:\Meus documentos\pubs.xls. Na coluna Destination voc pode alterar o nome
que ser atribudo a cada planilha. Por padro, atribudo o nome da tabela de origem.
13. Certifique-se de que as tabelas authors, employee, sales e titles estejam selecionadas. Clique no
boto Avanar (Next), para ir para a prxima etapa.
Nesta etapa, temos as seguintes opes:
Run Immediately: Esta opo faz com que a exportao seja executada imediatamente aps
finalizarmos o assistente.
Use replication to publish destination data: Esta opo faz com que o Assistente de Replicao
seja automaticamente inicializado aps finalizarmos o Assistente de Importao. Trataremos
do assunto replicao, extensivamente, no prximo captulo.
Schedule DTS package for later execution: Esta opo permite que agendemos a exportao
para acontecer em intervalos programados, atravs da criao de um Job. Observe que esta
opo pode ser marcada em conjunto com as demais. Por exemplo, podemos executar a
exportao imediatamente (Run Immediately) e tambm agend-la para ocorrer em perodos
determinados. Se selecionarmos esta opo, podemos utilizar o boto (...) para alterar o
agendamento. Se o agendamento no for alterado, o mesmo programado para execuo
diria meia-noite (00:00:00 h).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
394 00CURSO COMPLETO
Tambm podemos salvar as definies de exportao, selecionando a opo Save DTS Package. Temos
quatro formatos possveis para salvar as configuraes: SQL Server, SQL Server Meta Data Services,
Structured Storage File e Visual Basic File.
14. Certifique-se de que apenas a opo Run Immediately esteja selecionada, e d um clique no
boto Avanar (Next), seguindo para a prxima etapa.
15. Voc estar na tela final do assistente, onde apresentado um resumo das opes selecionadas.
Caso voc queira alterar alguma opo s utilizar o boto Voltar (Back). Para fazer a exportao,
d um clique no boto Concluir (Finish).
O SQL Server 2000 exibe uma janela com o progresso da exportao.
Ao final, exibida uma mensagem informando o nmero de objetos que foram exportados, conforme
indicado na Figura 7.26.
Figura 7.26 Exportao concluda com sucesso.
16. D um clique no boto OK para fechar esta mensagem.
17. Voc estar de volta janela de progresso. D um clique o boto Done para fech-la.
18. Voc estar de volta ao Enterprise Manager. Feche-o.
Abra o Excel e abra o arquivo C:\Meus documentos\pubs.xls. Na Figura 7.27, podemos ver que as
quatro tabelas foram exportadas para o arquivo do Excel e que cada tabela foi exportada para uma
planilha com o nome da tabela.
Agora vamos exportar dados para o formato do Dbase III.
Exerccio:
Exportar as tabelas authors, employee, sales e titles, do Banco de Dados pubs, da instncia
SERVIDOR\SRVINST01, para arquivos no formato do Dbase III. Os arquivos devem ser gravados na
pasta C:\dbase, a qual j deve ter sido previamente criada. Observe que utilizamos arquivos, ao
invs de arquivo. que quando exportamos dados para o formato do Dbase, para cada tabela ou
consulta que est sendo exportada criado um arquivo, com a extenso .dbf.
Procedimento: Para exportar as tabelas authors, employee, sales e titles, do Banco de Dados pubs, da
instncia SERVIDOR\SRVINST01, para arquivos do Dbase, faa o seguinte:
1. Utilize como referncia as instrues do exemplo anterior.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
395 CURSO COMPLETO00
Figura 7.27 Dados na planilha do Excel.
2. Devemos ter um cuidado especial, na etapa para a definio do destino para os dados terceira
etapa do assistente. Nesta etapa, devemos selecionar dBase III na lista Destination. No campo
File name devemos digitar apenas o nome da pasta de destino C:\dbase. Nesta pasta, para
cada tabela ou consulta que estiver sendo exportada, ser criado um arquivo com o nome da
tabela ou consulta e com a extenso .dbf. Os dados de cada tabela ou consulta sero exportados
para os arquivos respectivos. Na Figura 7.28, podemos conferir as configuraes para esta etapa.
Figura 7.28 Definindo o destino dos dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
396 00CURSO COMPLETO
3. Execute os demais passos do assistentes, que so semelhantes ao exerccio anterior.
4. No final, os dados sero exportados, conforme indicado na Figura 7.29.
Figura 7.29 Arquivos exportados para a pasta C:\dbase.
5. Feche o Enterprise Manager.
IMPORTANDO E TRANSFORMANDO DADOS COM O DTS
Atualmente bastante comum termos mais do que um Banco de Dados na empresa. comum uma
situao em que temos alguns aplicativos no Mainframe, outros em Bancos de Dados Relacionais
como o SQL Server 2000, Oracle, Sybase, etc. Tambm pode acontecer de termos dados em Bancos de
Dados no formato do dBase, Microsoft Access, Paradox, etc.
Com freqncia temos uma situao em que precisamos acessar e consolidar dados de diversas fontes.
J vimos que com o DTS Import/Export Wizard a tarefa de importar dados para o SQL Server 2000 e
exportar dados para outros formatos fica bastante facilitada. Porm existem situaes em que no
basta simplesmente importar ou exportar dados. Durante o processo de importao, por exemplo,
pode acontecer de termos que transformar os dados que esto sendo importados. Nesta situao,
precisamos informar quais as transformaes necessrias. Por exemplo, pode ser que estejamos
importando dados de um relatrio de vendas em que os valores esto em Real e queremos transformar
os valores para dlar.
Veremos que, utilizando o DTS Import/Export Wizard, poderemos, facilmente, especificar as transformaes
necessrias. Vamos aprender a configurar as transformaes, atravs de um exemplo prtico.
Exemplo: Neste exemplo vamos importar dados do arquivo C:\teste.mdb para um Banco de Dados
ImportComTransform. Neste nosso exemplo, realizaremos os seguintes procedimentos:
1. Criaremos o Banco de Dados ImportComTransform, na instncia SERVIDOR\SRVINST01, com
as seguintes caractersticas:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
397 CURSO COMPLETO00
Nome no SQL Server: ImportComTransform.
Arquivo primrio: C:\livrosql\ImportComTransform\ImportComTransform-prim.mdf,
tamanho inicial de 10 MB, tamanho mximo de 50 MB e crescimento automtico habilitado
com incrementos de 1 MB.
Arquivo secundrio: C:\livrosql\ImportComTransform\ImportComTransform-sec1.ndf,
tamanho inicial de 15 MB, tamanho mximo de 50 MB e crescimento automtico habilitado
com incrementos de 10%.
Arquivo de log : C:\livrosql\ImportComTransform\ImportComTransform-log.ldf, tamanho
inicial de 5 MB, tamanho mximo de 50 MB e com crescimento automtico habilitado
com incrementos de 1 MB.
2. Importaremos todas as tabelas do Banco de Dados C:\Meus documentos\teste.mdb, porm
realizando as seguintes transformaes:
O valor do campo PreoUnitrio da tabela Produtos deve ser multiplicado por 2,25 para
efeitos de atualizao monetria.
O campo NvelDeReposio da tabela Produtos deve ser multiplicado por 1,5, pois estaremos
trabalhando com nveis mnimos de estoque 50% maiores.
Os dados dos campos NomeDaEmpresa e NomeDoContato da tabela Clientes devem ser
convertidos para maisculos, por exigncia do departamento de RH.
Ns veremos que utilizando o DTS Import/Export Wizard, ser bastante simples especificar as transformaes solicitadas.
Ento, mos obra.
Procedimento 1: Criar o Banco de Dados chamado ImportComTransform, com as caractersticas
definidas anteriormente:
Para criar este Banco de Dados, faa o seguinte:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo. Ser aberto o Query Analyzer com
o Banco de Dados master como sendo o Banco de Dados atual.
3. Digite e execute (Ctrl+E), o seguinte comando:
CREATE DATABASE ImportComTransform
ON
*************************
Definio do Arquivo Primrio
*************************
(NAME= ImportComTransform-prim,
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
398 00CURSO COMPLETO
FILENAME = C:\livrosql\ImportComTransform\ImportComTransform-prim.mdf,
SIZE= 10MB,
MAXSIZE= 50MB,
FILEGROWTH = 1MB),
***************************
Definio do Arquivo Secundrio
***************************
(NAME= ImportComTransform-sec,
FILENAME = C:\livrosql\ImportComTransform\ImportComTransform-sec.ndf,
SIZE= 15MB,
MAXSIZE= 50MB,
FILEGROWTH = 10%)
*************************
Definio do Arquivo de Log
*************************
LOG ON
(NAME= ImportComTransform-log,
FILENAME = C:\livrosql\ImportComTransform\ImportComTransform-log.ldf,
SIZE= 5MB,
MAXSIZE= 50MB,
FILEGROWTH = 1MB)
***************************************
Final do comando de criao do Banco de Dados
***************************************
Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, o Banco de Dados
ImportComTransform ter sido criado e a seguinte mensagem exibida no painel inferior do Query Analyzer:
The CREATE DATABASE process is allocating 10.00 MB on disk ImportComTransform-prim.
The CREATE DATABASE process is allocating 15.00 MB on disk ImportComTransform-sec.
The CREATE DATABASE process is allocating 5.00 MB on disk ImportComTransform-log.
4. Com isso o nosso Banco de Dados foi criado.
5. Feche o Query Analyzer.
Antes de executar o comando do passo 3, C:\livrosql\ImportComTransform j deve ter sido criada, caso contrrio ser emitida uma
mensagem de erro e o comando no ser executado.
Procedimento 2: Importar as tabelas do Banco de Dados C:\Meus Documentos\teste.mdb, no
formato do Microsoft Access 97, para o Banco de Dados ImportAccess, recm criado na instncia
SERVIDOR\SRVINST01, do SQL Server 2000. Alm disso faremos as seguintes transformaes:
O valor do campo PreoUnitrio da tabela Produtos deve ser multiplicado por 2,25 para
efeitos de atualizao monetria.
O campo NvelDeReposio da tabela Produtos deve ser multiplicado por 1,5, pois estaremos
trabalhando com nveis mnimos de estoque 50% maiores.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
399 CURSO COMPLETO00
Figura 7.30 A tabela Produtos do Banco de Dados teste.mdb.
Estes valores estaro multiplicados por 2,25 na tabela Produtos do Banco de Dados ImportComTransform,
aps termos feito a importao e aplicado as transformaes solicitadas. Aps feita a importao, iremos
conferir se os valores realmente foram alterados, ou melhor, transformados.
Para importar as tabelas do Banco de Dados C:\Meus documentos\teste.mdb para o ImportAccess, e
fazer as transformaes solicitadas, faa o seguinte:
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para exibir os Bancos de Dados desta instncia.
6. Na lista de Bancos de Dados, d um clique no sinal de mais ao lado de ImportComTransform e
depois d um clique na opo Tables. Observe que somente existem as chamadas tabelas do
sistema, aquelas criadas automaticamente pelo SQL Server 2000, quando da criao de um
Banco de Dados.
7. D um clique com o boto direito do mouse no Banco de Dados ImportComTransform. Nas
opes que surgem, selecione o comando Todas as tarefas -> Import Data. Surge o DTS Import/
Export Wizard.
Os dados dos campos NomeDaEmpresa e NomeDoContato da tabela Clientes devem ser
convertidos para maisculos, por exigncia do departamento de RH.
Antes de executarmos as transformaes solicitadas vamos dar uma olhada nos dados de origem, no
Banco de Dados teste.mdb. Na figura 7.30 temos uma viso dos dados da tabela Produtos.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
400 00CURSO COMPLETO
8. D um clique no boto Avanar (Next), seguindo para a segunda etapa.
Na segunda etapa devemos selecionar qual o formato dos dados a serem importados. Por padro vem
selecionado, na lista Data Source, o drive para SQL Server 2000: Microsoft OLE DB Provider for SQL
Server. Mas existe a possibilidade de importar dados de vrias outras fontes, conforme descrito nos
exemplos anteriores.
9. Nesta lista selecione Microsoft Access, pois vamos importar dados de um arquivo .mdb, que
um Banco de Dados do Microsoft Access.
Quando escolhemos uma opo na lista Data Source, as demais opes desta etapa mudam para refletir
os parmetros que devem ser fornecidos para a fonte de dados escolhida. No caso de uma fonte do
Microsoft Access, devemos definir a localizao do arquivo e um nome de usurio e senha, caso o
Banco de Dados esteja protegido.
10. No campo File Name, digite C:\Meus documentos\teste.mdb. Deixe os campos Username e
Password em branco, pois este Banco de Dados no est protegido. Voc tambm pode utilizar o
boto (...) para navegar at a pasta onde est o Banco de Dados com as tabelas a serem importadas.
11. D um clique no boto Avanar (Next), para ir para a prxima etapa.
12. Nesta etapa devemos definir para qual Banco de Dados, os dados sero importados. Como
abrimos o assistente, clicando com o boto direito do mouse no Banco de Dados
ImportComTransform e selecionando o comando Todas as tarefas -> Import Data, o mesmo j
vem selecionado, por padro. Aceite esta seleo, pois justamente o que queremos: importar
as tabelas do Banco de Dados teste.mdb do Access, para o Banco de Dados ImportComTransform
do SQL Server 2000. Nesta tela poderamos definir um outro Banco de Dados como o destino.
O mais interessante que o Banco de Dados de destino no precisa, obrigatoriamente, ser um do SQL
Server 2000. Poderamos, por exemplo, importar de um Banco de Dados do Microsoft Access, para um
Banco de Dados do Paradox ou do Dbase IV. Observe tambm que, quando escolhemos uma opo na
lista Destination, as demais opes desta etapa mudam para refletir os parmetros que devem ser
fornecidos para a fonte de destino dos dados.
Na lista Server, podemos selecionar a instncia do SQL Server, na qual est o Banco de Dados de
destino. Certifique-se que esteja selecionada a opo SERVIDOR\SRVINTS01, e na lista Database esteja
selecionada a opo ImportComTransform, conforme indicado na Figura 7.31.
13. D um clique no boto Avanar (Next), para ir para a prxima etapa.
14. Nesta etapa, com base nos formatos de origem e destino selecionados, temos duas opes:
Copy table(s) and view(s) from the source database e Use a query to specify the data to transfer,
j descritas nos exemplos anteriores. Certifique-se de que a opo Copy table(s) and view(s)
from the source database esteja selecionada.
15. D um clique no boto Avanar (Next), seguindo para a prxima etapa.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
401 CURSO COMPLETO00
Figura 7.31 Definindo o Banco de Dados de destino.
Nesta etapa, devemos selecionar as tabelas e consultas a serem importadas. No nosso exemplo
selecionaremos apenas as tabelas. Observe que para distinguir entre as tabelas e consultas, podemos
observar o cone no lado esquerdo do nome de cada objeto. Para tabelas, o cone de duas pequensa
tabelas sobrepostas; j para consultas, o cone a figura de um pequeno culos com as lentes verdes.
Ao selecionar uma tabela ou consulta, voc pode clicar no boto Preview, que sero exibidos os dados
do objeto selecionado.
16. Certifique-se de que todas as tabelas estejam selecionadas.
Por padro, o assistente de importao copia os dados como os mesmos encontram-se: do Banco de
Dados de origem para o de destino. Para definirmos quais os dados que devem sofer transformaes,
devemos utilizar o boto com as reticncias (...), na coluna Transform. No nosso exemplo queremos
transformar dados que esto nas tabelas Produtos e Clientes.
Vamos comear pela tabela Produtos, onde temos que aplicar as seguintes transformaes:
O valor do campo PreoUnitrio da tabela Produtos deve ser multiplicado por 2,25 para efeitos
de atualizao monetria.
O campo NvelDeReposio da tabela Produtos deve ser multiplicado por 1,5, pois estaremos
trabalhando com nveis mnimos de estoque 50% maiores.
17. D um clique no boto com as reticncias, na linha da tabela Produtos. Ser aberta a janela
indicada na Figura 7.32.
Nesta janela temos a guia Column Mapping. Nesta guia definido o mapeamento, campo a campo,
entre a tabela de origem e a tabela de destino. Para efetuarmos as transformaes desejadas, utilizaremos
a guia Transformations.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
402 00CURSO COMPLETO
Figura 7.32 Mapeamento das colunas.
18. D um clique na guia Transformations. Surge a janela indicada na Figura 7.33.
Figura 7.33 Definindo as transformaes.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
403 CURSO COMPLETO00
Observe que, por padro, vem selecionada a opo Copy the source column directly to the destina-
tion columns. Esta opo define que as colunas de origem sero copiadas diretamente para as respectivas
colunas de destino, sem nenhuma alterao.
19. Para definir as transformaes necessrias, d um clique na opo Transform information as
it is copied to the destination. Na parte de baixo da janela ser exibido um Script que, por
padro, utiliza a linguagem VBScript. Alm da linguagem VBScript, temos a opo da linguagem
JScript. Este Script pode ser alterado para que possamos especificar as modificaes que devem
ser feitas, antes de copiar os dados para o destino.
O Script original, que simplesmente limita-se a copiar os dados sem nenhuma alterao, o seguinte:
**********************************************************************
Visual Basic Transformation Script
Copy each source column to the
destination column
************************************************************************
Function Main()
DTSDestination(CdigoDoProduto) = DTSSource(CdigoDoProduto)
DTSDestination(NomeDoProduto) = DTSSource(NomeDoProduto)
DTSDestination(CdigoDoFornecedor) = DTSSource(CdigoDoFornecedor)
DTSDestination(CdigoDaCategoria) = DTSSource(CdigoDaCategoria)
DTSDestination(QuantidadePorUnidade) = DTSSource(QuantidadePorUnidade)
DTSDestination(PreoUnitrio) = DTSSource(PreoUnitrio)
DTSDestination(UnidadesEmEstoque) = DTSSource(UnidadesEmEstoque)
DTSDestination(UnidadesPedidas) = DTSSource(UnidadesPedidas)
DTSDestination(NvelDeReposio) = DTSSource(NvelDeReposio)
DTSDestination(Descontinuado) = DTSSource(Descontinuado)
Main = DTSTransformStat_OK
End Function
20. Vamos alterar as linhas relativas aos campos PreoUnitrio e UnidadesEmEstoque para que
sejam feitas as transformaes solicitadas neste exemplo. Edite o Script para que o mesmo
fique da seguinte maneira:
**********************************************************************
Visual Basic Transformation Script
Copy each source column to the
destination column
************************************************************************
Function Main()
DTSDestination(CdigoDoProduto) = DTSSource(CdigoDoProduto)
DTSDestination(NomeDoProduto) = DTSSource(NomeDoProduto)
DTSDestination(CdigoDoFornecedor) = DTSSource(CdigoDoFornecedor)
DTSDestination(CdigoDaCategoria) = DTSSource(CdigoDaCategoria)
DTSDestination(QuantidadePorUnidade) = DTSSource(QuantidadePorUnidade)
DTSDestination(PreoUnitrio) = DTSSource(PreoUnitrio)*2.25
DTSDestination(UnidadesEmEstoque) = DTSSource(UnidadesEmEstoque)*1.5
DTSDestination(UnidadesPedidas) = DTSSource(UnidadesPedidas)
DTSDestination(NvelDeReposio) = DTSSource(NvelDeReposio)
DTSDestination(Descontinuado) = DTSSource(Descontinuado)
Main = DTSTransformStat_OK
End Function
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
404 00CURSO COMPLETO
Simplesmente estamos multiplicando o campo PreoUnitrio por 2,25 e o campo UnidadesEmEstoque por 1,5 (aumentando-o em 50%),
para atender s solicitaes deste exemplo.
21. D um clique no boto OK para voltar ao assistente DTS Import/Export Wizard.
Agora precisamos definir a seguinte transformao para a tabela Clientes. Os dados dos campos
NomeDaEmpresa e NomeDoContato da tabela Clientes devem ser convertidos para maisculos, por
exigncia do departamento de RH.
22. D um clique no boto com as reticncias, na linha da tabela Clientes.
23. D um clique na guia Transformations.
Observe que, por padro, vem selecionada a opo Copy the source column directly to the destina-
tion columns. Esta opo define que as colunas de origem sero copiadas diretamente para as respectivas
colunas de destino, sem nenhuma alterao.
24. Para definir as transformaes necessrias, d um clique na opo Transform information as
it is copied to the destination. Na parte de baixo da janela ser exibido um Script que, por
padro, utiliza a linguagem VBScript. Alm da linguagem VBScript, temos a opo da linguagem
JScript. Este Script pode ser alterado para que possamos especificar as modificaes que devem
ser feitas, antes de copiar os dados para o destino.
O Script original, que simplesmente limita-se a copiar os dados sem nenhuma alterao, o seguinte:
**********************************************************************
Visual Basic Transformation Script
Copy each source column to the
destination column
************************************************************************
Function Main()
DTSDestination(CdigoDoCliente) = DTSSource(CdigoDoCliente)
DTSDestination(NomeDaEmpresa) = DTSSource(NomeDaEmpresa)
DTSDestination(NomeDoContato) = DTSSource(NomeDoContato)
DTSDestination(CargoDoContato) = DTSSource(CargoDoContato)
DTSDestination(Endereo) = DTSSource(Endereo)
DTSDestination(Cidade) = DTSSource(Cidade)
DTSDestination(Regio) = DTSSource(Regio)
DTSDestination(CEP) = DTSSource(CEP)
DTSDestination(Pas) = DTSSource(Pas)
DTSDestination(Telefone) = DTSSource(Telefone)
DTSDestination(Fax) = DTSSource(Fax)
Main = DTSTransformStat_OK
End Function
25. Vamos alterar as linhas relativas aos campos NomeDaEmpresa e NomeDoContato para que
sejam feitas as transformaes solicitadas neste exemplo. Edite o Script para que o mesmo
fique da seguinte maneira:
**********************************************************************
Visual Basic Transformation Script
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
405 CURSO COMPLETO00
Copy each source column to the
destination column
************************************************************************
Function Main()
DTSDestination(CdigoDoCliente) = DTSSource(CdigoDoCliente)
DTSDestination(NomeDaEmpresa) = UCase(DTSSource(NomeDaEmpresa))
DTSDestination(NomeDoContato) = UCase(DTSSource(NomeDoContato))
DTSDestination(CargoDoContato) = DTSSource(CargoDoContato)
DTSDestination(Endereo) = DTSSource(Endereo)
DTSDestination(Cidade) = DTSSource(Cidade)
DTSDestination(Regio) = DTSSource(Regio)
DTSDestination(CEP) = DTSSource(CEP)
DTSDestination(Pas) = DTSSource(Pas)
DTSDestination(Telefone) = DTSSource(Telefone)
DTSDestination(Fax) = DTSSource(Fax)
Main = DTSTransformStat_OK
End Function
Simplesmente estamos utilizando a funo UCase para converter os dados dos campos NomeDaEmpresa e NomeDoContato para letras maisculas.
26. D um clique no boto OK para voltar ao assistente DTS Import/Export Wizard.
Com isso as transformaes solicitados foram definidas e sero aplicadas quando finalizarmos o assistente.
27. D um clique no boto Avanar (Next), para ir para a prxima etapa.
28. Nesta tela, certifique-se de que apenas a opo Run Immediately esteja selecionada, e clique
em Avanar (Next) para prosseguir.
Voc estar na tela final do assistente, onde apresentado um resumo das opes selecionadas. Caso
voc queira alterar alguma opo s utilizar o boto Voltar (Back).
29. Para fazer a importao, d um clique no boto Concluir (Finish).
O SQL Server 2000 exibe uma janela com o progresso da importao.
No final exibida uma mensagem informando o nmero de objetos que foram importados.
30. D um clique no boto OK para fechar esta mensagem.
31. Voc estar de volta janela do assistente. D um clique no boto Done para fech-la.
Voc estar de volta ao Enterprise Manager.
32. D um clique no sinal de mais ao lado do Banco de Dados ImportComTransform para exibir as
opes do mesmo.
33. Clique em Tables, para exibir uma listagem das tabelas do Banco de Dados ImportComTransform.
Observe, na Figura 7.34, as sete tabelas que foram importadas do Banco de Dados teste.mdb.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
406 00CURSO COMPLETO
Figura 7.34 Tabelas importadas do Banco de Dados teste.mdb.
Agora vamos verificar se as transformaes foram aplicadas.
1. Clique com o boto direito do mouse na tabela Produtos e selecione o comando: Open Table -
> Return all rows. Sero exibidos os dados da tabela Produtos. Observe que o PreoUnitrio do
primeiro produto 40,5, conforme indicado na Figura 7.35. Lembre-se que, no arquivo
teste.mdb, o preo era 18. Isto significa que, alm de importar, o assistente aplicou as
transformaes solicitadas: 18 * 2,25 = 40,5.
Figura 7.35 As transformaes foram aplicadas com sucesso na tabela Produtos.
2. Feche a tabela Produtos e abra a Clientes. Observe que os dados dos campos NomeDaEmpresa
e NomeDoContato esto todos em letras maisculas, conforme indicado na Figura 7.36.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
407 CURSO COMPLETO00
Figura 7.36 As transformaes foram aplicadas com sucesso na tabela Clientes.
3. Feche a tabela Clientes.
4. Feche o Enterprise Manager.
Com os exemplos deste item, pudemos notar que bastante simples a tarefa de importar, exportar e
aplicar transformaes em dados nos mais variados formatos. O DTS, sem dvida, uma das ferramentas
mais interessantes do SQL Server 2000.
KNOW-HOW EM: MONITORAO DE DESEMPENHO
NO SQL SERVER 2000
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Noes bsicas de hardware.
Noes bsicas do Windows 2000 Server.
Noes sobre utilizao do MMC.
METODOLOGIA
Apresentao dos mtodos utilizados para monitorao de desempenho.
TCNICA
Utilizao do console Desempenho para monitoramento.
Um servidor to rpido quanto for o desempenho do seu dispositivo mais lento. Em outras palavras,
o desempenho de um servidor pode ser comprometido se um ou mais dos seus dispositivos estiver
apresentando problemas de funcionamento ou estiver inadequadamente dimensionado. Por exemplo,
no adianta voc ter um servidor multiprocessado, com uma grande quantidade de memria RAM e
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
408 00CURSO COMPLETO
um sistema de discos lentos. Neste caso, o sistemas de discos estar limitando o desempenho do seu
equipamento. Chamamos o elemento limitador de gargalo do sistema, porm o termo mais conhecido
o termo em ingls: Bottlenecks. Utilizarei o termo gargalo. Um gargalo causado, normalmente, pelo
uso excessivo de um ou mais recursos do sistema. Por exemplo, em um servidor de Bancos de Dados,
em que so realizadas consultas complexas, a memria pode tornar um fator limitador do desempenho
do sistema. Neste caso dizemos que a memria o gargalo do sistema. Muitas vezes ao solucionarmos
um gargalo, imediatamente outro componente torna-se um novo gargalo. No exemplo anterior,
poderamos adicionar mais memria RAM, a o processador ficaria sobrecarregado, e eis que o processador
tornou-se o nosso novo gargalo.
Conforme podemos ver, o processo de monitorar o desempenho um processo contnuo, ou seja,
resolvemos um gargalo e vamos em busca do prximo. Nesta seo aprenderemos a monitorar os
principais elementos de hardware, bem como a monitorar o servidor SQL Server 2000, em busca de
informaes que nos ajudem a mant-lo com um desempenho satisfatrio.
Os principais elementos causadores de gargalos no desempenho de um servidor como um todo, e que
devem ser monitorados so os seguintes:
Memria RAM
Processador
Sistema de I/O
Placa de Rede
Para monitorar estes elementos, utilizamos o console Desempenho: Iniciar -> Programas -> Ferramentas
Administrativas -> Desempenho. Antes de aprendermos a utilizar este console, vamos apresentar alguns
elementos tericos, necessrios utilizao do console Desempenho. Veremos os conceitos de Objeto,
Contador e Instncia.
Objeto: No contexto do console Desempenho, um objeto um dos recursos que podem ser
mensurados. Exemplos de objetos so: a memria RAM, o processador, a interface de rede e
assim por diante.
Contador: Cada objeto pode ter um ou mais contadores. Por exemplo, para o objeto processador
podemos ter os contadores Interrupes por segundo, %Tempo do usurio, %Tempo privilegiado
e assim por diante. Para o objeto memria podemos ter, dentre outros, os contadores Pginas
por segundo, Bytes disponveis, etc. Cada contador reflete o nvel de utilizao de um
determinado aspecto do objeto.
Instncia: Para um mesmo objeto, podemos ter uma ou mais instncias. Por exemplo, em um
servidor com mltiplos processadores, cada processador uma instncia do objeto processador.
Cada instncia pode apresentar valores diferentes, para os diversos contadores de cada objeto.
Por exemplo, em um dos processadores, o percentual de utilizao pode estar em 60% e no
segundo processador em 75%.
Agora vamos a alguns exemplos de monitoramento do desempenho.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
409 CURSO COMPLETO00
APRESENTANDO O CONSOLE DESEMPENHO
Para abrir o console Desempenho utilize o seguinte comando: Iniciar -> Programas -> Ferramentas
Administrativas -> Desempenho. Ser aberto o console indicado na Figura 7.37.
Figura 7.37 O console Desempenho.
Alm dos elementos tradicionais de todo console menus, barras de ferramentas, barra de status, etc.
, temos uma rea principal, onde so exibidos grficos com as medidas dos contadores selecionados.
Para adicionar um novo contador, podemos utilizar uma das seguintes opes:
Dar um clique no boto Adicionar boto com um sinal de mais ( + )
ou
Clicar com o boto direito na rea dos grficos, e no menu que surge selecionar o comando
Adicionar contadores.
Ao selecionar um destes comandos aberta a janela Adicionar contadores, conforme indicado na
Figura 7.38.
Nesta janela podemos monitorar o desempenho do computador local (Usar contadores locais do
computador) ou fazer o monitoramento remoto de outro servidor da rede (Selecionar contadores do
computador). Ao selecionarmos a segunda opo, devemos informar o nome do servidor que queremos
monitorar. No exemplo da Figura 7.38, estamos fazendo o monitoramento do servidor chamado
SERVIDOR. Observe que o nome deve vir precedido de duas barras invertidas \\SERVIDOR.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
410 00CURSO COMPLETO
Figura 7.38 A janela para adicionar contadores.
Por padro, na lista Objeto de desempenho, vem selecionado Processador. Nesta lista podemos selecionar
qual os diversos objetos que podem ser monitorados. Observe que no estamos limitados a monitorar,
ao mesmo tempo, contadores de um nico objeto. Posso adicionar um ou mais contadores do objeto
processador, depois selecionar o objeto memria e adicionar um ou mais contadores do objeto memria.
Todos os contadores adicionados passaro a ser monitorados.
Ao selecionarmos um objeto, na lista abaixo do mesmo, so exibidos os contadores disponveis para o
objeto selecionado. Caso o objeto possua mais do que uma instncia, as diferentes instncias do objeto
aparecem na lista da direita. Por exemplo, ao selecionarmos o objeto Disco fsico, do servidor SERVIDOR,
temos duas instncias, conforme indicado na Figura 7.39.
Figura 7.39 Duas instncias do objeto Disco fsico.
Isto acontece porque tenho dois discos instalados, que so representados como Disco 0 e Disco 1. No
Disco 0 tenho um nico volume C:, j no Disco 1 tenho trs volumes D:, E: e F:. Ao monitorarmos um
determinado contador do objeto Disco fsico, por exemplo Bytes lidos por segundo, posso escolher se
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
411 CURSO COMPLETO00
quero monitorar este contador apenas para a instncia Disco 0 (ser monitorado o nmero de bytes
lidos por segundo no Volume C:), para a instncia Disco 1 (ser monitorado o nmero de bytes lidos
por segundo no conjunto dos volumes D:, E: e F:) ou para a instncia Total, situao em que ser
monitorado o nmero de bytes lidos para todos os volumes em conjunto.
Para adicionar um contador basta dar um clique para selecion-lo e depois clicar no boto Adicionar.
Se voc no souber o que significa um determinado contador, basta marc-lo e depois dar um clique
no boto Explicar. Surge uma janela com um texto explicando o que medido pelo contador selecionado.
OS PRINCIPAIS CONTADORES PARA OS OBJETOS PROCESSADOR E MEMRIA
O nosso foco nos contadores dos objetos do SQL Server 2000, porm devido a sua importncia vamos
dar uma rpida olhada nos principais contadores dos objetos memria e processador.
Para o objeto processador, considere o seguinte:
Porcentagem de tempo do processador: a porcentagem de tempo em que um processador
est ocupado executando segmentos que no sejam ociosos. Este contador foi projetado como
um indicador primrio da atividade do processador. calculada medindo-se o tempo que o
processador gasta na execuo do segmento do processo ocioso em cada intervalo de amostragem
e subtraindo-se esse valor de 100%. (Cada processador tem um segmento ocioso que consome
ciclos quando nenhum outro segmento est pronto para ser executado.) Pode ser encarada
como a porcentagem do intervalo de amostragem empregada em trabalhos teis. Este contador
mostra a porcentagem mdia de tempo ocupado observada durante o intervalo de amostragem.
calculada monitorando-se o tempo em que o servio esteve inativo e subtraindo-se esse valor
de 100%. Este valor no deve apresentar valores acima de 80% por perodos prolongados. Caso
isso acontea, pode ser um indicativo de sobrecarga do processador.
% tempo de usurio: Tempo de usurio a porcentagem de tempo do processador gasto no
modo de usurio. (Modo de usurio um modo de processamento restrito projetado para
aplicativos, subsistemas de ambiente e subsistemas integrais. O modo alternativo privilegiado
foi projetado para componentes do Sistema Operacional e permite o acesso direto ao hardware
e a toda a memria. O Sistema Operacional muda segmentos de aplicativos para o modo
privilegiado de forma a acessar servios do Sistema Operacional.) Este contador mostra o tempo
mdio de ocupao como uma porcentagem do tempo de amostragem.
% tempo privilegiado: Tempo privilegiado a porcentagem de tempo do processador gasto no
modo privilegiado. (Modo privilegiado um modo de processamento projetado para componentes
do Sistema Operacional e drivers que manipulam hardware. Ele permite o acesso direto ao hard-
ware e a toda a memria. O modo alternativo de usurio um modo de processamento restrito,
projetado para aplicativos, subsistemas de ambientes e subsistemas integrais. O Sistema
Operacional muda segmentos de aplicativos para o modo privilegiado de forma a acessar servios
do Sistema Operacional.) Tempo privilegiado inclui as interrupes de servio e DPCs. Uma alta
taxa de tempo privilegiado pode se dever a um grande nmero de interrupes geradas por um
dispositivo que falhou, por exemplo uma placa de rede com problemas. Para confirmar esta
hiptese, voc pode monitorar o contador Interrupes por segundo, do objeto processador. Este
contador mostra o tempo mdio de ocupao como uma porcentagem do tempo de amostragem.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
412 00CURSO COMPLETO
Para o objeto memria, considere os seguintes objetos:
Bytes disponveis: Bytes disponveis a quantidade de memria fsica disponvel para os
processos executados no computador, em bytes. calculada somando-se o espao nas listas de
memria Zerada, Livre e Em modo de espera. A memria livre est pronta para uso. A memria
zerada consiste em pginas de memria preenchidas com zeros para impedir que processos
posteriores vejam os dados usados por um processo anterior. A memria em modo de espera
aquela removida do conjunto de trabalho de um processo (sua memria fsica) em uma rota
para disco, mas ainda disponvel para ser reutilizada. Este contador mostra apenas o ltimo
valor observado; no se trata de uma mdia.
Pginas por segundo: Pginas por segundo o nmero de pginas lidas de ou gravadas em
disco para resolver falhas de pgina de hardware. (As falhas de pgina de hardware ocorrem
quando um processo requer cdigo ou dados que no esto em seu conjunto de trabalho ou
esto em outro local na memria fsica e devem ser recuperados de disco, isto , do arquivo de
troca.) Este contador foi projetado como um indicador primrio dos tipos de falhas que causam
demoras em todo o sistema. a soma de Memria: entrada de pginas/s e Memria: sada
de pginas/s. contado em nmeros de pginas, para que possa ser comparado a outras
contagens de pginas, como Memria: falhas de pginas/s, sem exigir converso. Inclui pginas
recuperadas para satisfazer a falhas no cache do sistema de arquivos (geralmente solicitadas
por aplicativos) e arquivos de memria mapeada no armazenados em cache. Este contador
mostra a diferena entre os valores observados nas duas ltimas amostragens, dividida pela
durao do intervalo de amostragem.
UTILIZANDO O CONSOLE DESEMPENHO PARA MONITORAR O SQL SERVER 2000
Agora vamos praticar um pouco. Neste item vamos monitorar alguns dos objetos de desempenho
disponibilizados pelo SQL Server 2000. So muitos os objetos e respectivos contadores do SQL Server
2000. Para localizar estes objetos na lista de objetos disponveis, procure por objetos que iniciam com
MSSQL. Podemos fazer o monitoramento de objetos independentemente, para cada instncia do SQL
Server. Na Tabela 7.2 temos uma relao entre o nome dos objetos e a respectiva instncia do SQL Server.
Tabela 7.2 Relao Objeto x Instncia.
Para cada instncia do SQL Server, so disponibilizados os seguintes objetos:
Access Methods
Backup Device
Buffer Manager
Buffer Partition
Cache Manager
Instncia Nome do objeto inicia com...
SERVIDOR\SRVINST01 MSSQL$SRVINST01
SERVIDOR\SRVINST02 MSSQL$SRVINST02
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
413 CURSO COMPLETO00
Databases
General Statistics
Latches
Locks
Memory Manager
Replication Agents
Replication Distribution
Replication Logreader
Replication Merge
Replication Snapshot
SQL Statistics
User Settable
Para uma descrio completa, de todos estes objetos e todos os contadores de cada objeto, abra o Books OnLine e acesse o item: Administer-
ing SQL Server -> Monitoring Server Performance and Activity -> Monitoring with System Monitor -> Using SQL Server Objects.
A seguir temos uma descrio dos contadores do SQL Server para o objeto MSSQL$SRVINST01:
General Statistics.
Logins/sec: O nmero de logins inicializados por segundo na instncia em questo.
Logouts/sec: O nmero de logouts inicializados por segundo na instncia em questo.
User Connections: Nmero de usurios conectados instncia em questo.
Objeto Contadores
MSSQL$SRVINST01: General Statistics Logins/sec
MSSQL$SRVINST01: General Statistics Logouts/sec
MSSQL$SRVINST01: General Statistics User Connections
Processador Porcentagem de tempo do processador.
Processador % Tempo de usurio
Memria Mbytes disponveis.
Agora vamos a um exemplo prtico, onde iremos monitorar alguns contadores relacionados instncia
SERVIDOR\SRVINST01. Tambm iremos monitorar contadores do objeto processador e do objeto memria.
Exemplo: Utilizar o console Desempenho para monitorar os contadores indicados na Tabela 7.3.
Tabela 7.3 Contadores a serem monitorados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
414 00CURSO COMPLETO
Para adicionar os contadores indicados na Tabela 7.3 faa o seguinte:
1. Abra o console Desempenho (Iniciar -> Programas -> Ferramentas Administrativas -> Desempenho).
2. D um clique no boto Adicionar (boto com um sinal de +). Surge a janela adicionar contadores.
3. Na lista de objetos selecione MSSQL$SRVINST01: General Statistics.
4. D um clique no contador Logins/sec para marc-lo, depois d um clique no boto Adicionar.
5. D um clique no contador Logouts/sec para marc-lo, depois d um clique no boto Adicionar.
6. D um clique no contador User connections para marc-lo, depois d um clique no boto Adicionar.
7. Na lista de objetos selecione processador.
8. D um clique no contador Porcentagem de tempo do processador para marc-lo, depois d um
clique no boto Adicionar.
9. D um clique no contador % Tempo de usurio para marc-lo, depois d um clique no boto Adicionar.
10. Na lista de objetos selecione memria.
11. D um clique no contador Mbytes disponveis para marc-lo, depois d um clique no boto Adicionar.
12. D um clique no boto Fechar. Voc estar de volta ao console Desempenho.
Na Figura 7.40 temos um exemplo da medio dos contadores adicionados neste exemplo.
Figura 7.40 Monitorando diversos contadores.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
415 CURSO COMPLETO00
13. Na parte de baixo do grfico, na listagem de contadores, ao clicarmos em um contador, so
exibidos valores Mximos, Mnimos, Mdio, o ltimo valor e o perodo de coleta dos dados.
14. Para pr um contador em destaque, basta clicar sobre o contador e pressionar Ctrl+H.
15. Feche o console Desempenho.
Ao fechar o console Desempenho, as configuraes que voc fez sero perdidas. Caso voc queira monitorar os mesmos contadores
novamente, ter que adicion-los da mesma maneira que fizemos neste exerccio. Para evitar isto voc pode salvar as configuraes de
um console. Utilizando o console Desempenho, tambm podemos criar Logs de contador, Logs de rastreamento e Alertas. A criao
destes elementos est fora do escopo deste livro. Para aprender a cri-los consulte o Help do Windows 2000 Server.
UTILIZANDO O PROFILER
O Profiler uma ferramenta que podemos utilizar para monitorar a atividade em uma ou mais instncias
de um servidor SQL Server. Entenda-se por atividades desde uma conexo efetuada pelo usurio at os
comandos T-SQL executados atravs desta conexo.
Com a utilizao do Profiler, o DBA pode, por exemplo, monitorar somente as tentativas de conexo sem
sucesso ou somente as consultas que demoram mais do que um determinado tempo para executar. Com isso,
o DBA pode detectar tentativas de acesso indevido, como no caso de sucessivas tentativas de logon sem
sucesso, at consultas mal escritas e que estejam demorando muito para executar. Enfim, uma ferramenta
em que o DBA pode ter um acompanhamento do que est sendo executado no servidor SQL Server.
Tambm temos a possibilidade de filtrar as atividades capturadas. Podemos especificar um filtro para
que sejam exibidas apenas as consultas executadas em um determinado Banco de Dados, por exemplo.
A atividade capturada pode ser salva em um arquivo ou em uma tabela de um Banco de Dados, para
anlise posterior ou em tempo real. Voc pode fazer com que os dados sejam capturados e enviados
para uma tabela, e desenvolver consultas que faam pesquisas nesta tabela.
O conjunto de eventos e aes capturadas definem o que chamamos de um Trace. Podemos criar um
Trace novo, onde vamos definir quais os eventos que queremos acompanhar, ou podemos utilizar
alguns modelos de Trace que so fornecidos junto com o SQL Server. A seguir descrevemos os principais
modelos de Trace j existentes. A disponibilizao de modelos de Trace uma novidade do SQL Server
2000 em relao s verses anteriores. Estes modelos de Trace encontram-se na seguinte pasta:
D:\Arquivos de programas\Microsoft SQL Server\80\Tools\Templates\SQL Profiler
No meu caso, tenho o SQL Server instalado no drive D:
SQLProfilerSP_Counts.tdf: Monitora o nmero de Stored Procedures que foram executados.
Os resultados so agrupados pelo nome do Stored Procedure e informa quantas vezes cada
um foi executado.
SQLProfilerStandard.tdf: Captura informaes sobre conexes, execuo de Stored Procedures
e a execuo de comandos SQL em batch, na ordem em que os mesmos vo sendo executados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
416 00CURSO COMPLETO
SQLProfilerTSQL.tdf: Coleta informaes sobre todos os comandos T-SQL que foram enviados
para o servidor SQL Server e a data e hora em que o comando foi enviado.
SQLProfilerTSQL_Duration.tdf: Coleta o comando T-SQL e o tempo de durao para a execuo
do mesmo.
SQLProfilerTSQL_Grouped.tdf: Coleta informaes semelhantes s coletadas pelo modelo
SQLServerProfilerTSQL.tdf, porm agrupa as informaes pelo nome do usurio que enviou o comando.
SQLProfilerTSQL_Replay.tdf: Fornece uma srie de informaes detalhadas sobre os comandos que
foram executados no servidor e permite que os mesmos sejam reexecutados no Query Analyzer.
SQLProfilerTSQL_SPs.tdf: Informa o Stored Procedure que foi executado, alm de informar os
comandos que foram executados dentro do mesmo. Exibe os comandos na ordem em que
foram executados.
SQLProfilerTuning.tdf: Coleta dados sobre a execuo de Stored Procedures e a execuo de
comandos em batch.
Depois que capturamos uma srie de comandos enviados para uma instncia do SQL Server, podemos
enviar novamente estes comandos para a execuo. Na prtica, os mesmos comandos so executados
novamente, na ordem em que foram capturados. Este procedimento til para testar alteraes que
foram feitas no Banco de Dados para melhorar o desempenho do mesmo. Ao executarmos novamente os
mesmos comandos, podemos observar se o tempo de execuo melhorou aps as alteraes efetuadas.
De uma maneira geral, devemos utilizar o Profiler para as seguintes tarefas:
Monitorar o desempenho de uma instncia do SQL Server.
Depurar a execuo de comandos T-SQL e Stored Procedures.
Identificar consultas que estejam com problemas de desempenho, isto , com um tempo de
execuo muito elevado.
Testar a execuo de comandos T-SQL e Stored Procedures durante a fase de desenvolvimento
de uma aplicao, de tal forma que possamos conferir se os mesmos esto executando de
acordo com o esperado.
Testar hipteses. Podemos capturar as atividades normais em um servidor de produo e executar
esta atividade contra um servidor de teste, no qual fizemos algumas alteraes. Com isso
podemos verificar se as alteraes efetuadas produziro os efeitos desejados. Em caso afirmativo,
podemos implementar as alteraes no servidor de produo. Ningum maluco o suficiente
para fazer testes no servidor de produo.
Fazer auditoria de segurana nas atividades de uma instncia do servidor SQL Server. Com isso
o administrador pode acompanhar, por exemplo, tentativas de acesso indevido ao servidor.
Vamos a um exemplo.
Exemplo: Vamos utilizar o Profiler para fazer o acompanhamento das atividades da instncia
SERVIDOR\SRVINST01. Utilizaremos o modelo SQLProfilerStandard. Nosso exemplo ser constitudo
dos seguintes procedimentos:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
417 CURSO COMPLETO00
Procedimento 1: Abrir o Profiler e criar um novo Trace baseado no modelo SQLProfilerStandard.
Procedimento 2: Gerar atividades na instncia SERVIDOR\SRVINST01. Iremos gerar atividades
utilizando o Enterprise Manager.
Procedimento 3: Voltar ao Profiler, parar a captura e observar a atividade capturada. Depois
salvaremos esta atividade em uma tabela chamada TraceEx1, no Banco de Dados Exemplo2.
Esta tabela ser criada pelo prprio Profiler, na hora de salvar a atividade capturada.
Mos obra.
Procedimento 1: Para abrir o Profiler e criar um novo Trace baseado no modelo SQLProfilerStandard,
faa o seguinte:
1. Abra o Profiler (Iniciar -> Programas -> Microsoft SQL Server -> Profiler). Surge a janela do
Profiler, indicada na Figura 7.41.
Figura 7.41 A janela principal do Profiler.
2. Para criar um novo Trace, selecione o comando File -> New -> Trace, ou pressione Ctrl+N.
3. Surge uma janela perguntando qual instncia do servidor SQL Server, queremos monitorar. Na
lista SQL Server selecione SERVIDOR\SRVINST01. Para autenticao certifique-se de que a opo
Windows authentication esteja selecionada. D um clique em OK para efetuar a conexo.
Surge a janela Trace Properties. Nesta janela podemos definir qual o modelo de Trace que ser utilizado
e personalizar algumas caractersticas do Trace, conforme indicado na Figura 7.42.
4. A guia General j vem selecionada, por padro. No campo Trace name digite: Trace de teste.
5. Observe que no campoTrace SQL Server j aparece SERVIDOR\SRVINST01. Na lista Template
name, certifique-se de que esteja selecionado o modelo SQLProfilerStandard.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
418 00CURSO COMPLETO
Figura 7.42 Configurando as propriedades do Trace.
As demais guias da janela de propriedades esto a seguir descritas:
Events: Nesta guia podemos definir quais os eventos que devem ser registrados no Trace. Os
eventos que aparecem nesta guia so ligados ao modelo selecionado. Para cada modelo de trace
temos um conjunto diferente de eventos a serem monitorados e capturados pelo Profiler. Ao
clicarmos em um determinado evento, a descrio do mesmo aparece na parte inferior da janela,
conforme indicado na Figura 7.43. Nesta guia podemos adicionar ou excluir eventos, para
personalizar o Trace de acordo com nossas necessidades. Observe que os eventos esto divididos
em uma srie de categorias: Cursors, Databases, Errors and Warnings, etc. Dentro de cada categoria
temos uma srie de eventos, que podem ser adicionados ao Trace utilizando o boto Add, ou
removidos utilizando o boto Remove. No vamos adicionar nem remover eventos.
Data Columns: Nesta guia podemos definir quais informaes sero capturadas para cada evento.
Ao clicar em um dos campos, uma explicao sobre o que o mesmo representa apresentada
na parte de baixo da janela. Observe na Figura 7.44, onde clicamos na opo HostName, e na
parte de baixo aparece uma explicao sobre que tipo de informao representa este campo.
No caso, representa o nome do computador a partir do qual o comando foi enviado. No
vamos alterar nada nesta guia.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
419 CURSO COMPLETO00
Figura 7.43 Eventos monitorados pelo modelo SQLProfilerStandard.
Figura 7.44 Definindo as informaes a serem capturadas para cada evento.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
420 00CURSO COMPLETO
Filters: Nesta guia podemos definir filtros, para que somente sejam capturados os eventos que
atendem os critrios especificados pelos filtros. No exemplo da Figura 7.45, estou definindo
um filtro, para que somente sejam capturados eventos enviados a partir do computador
MicroBattisti. No vamos alterar nada nesta guia.
Figura 7.45 Definindo filtros para a captura dos eventos.
6. D um clique no boto Run para iniciar a captura de eventos pelo Profiler.
Sua janela deve estar conforme indicado na Figura 7.46.
Figura 7.46 A captura foi iniciada.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
421 CURSO COMPLETO00
Agora vamos gerar atividades na instncia SERVIDOR\SRVINST01, para que sejam capturados eventos
no Profiler.
7. Minimize o Profiler e vamos para o prximo procedimento.
Procedimento 2: Gerar atividades na instncia SERVIDOR\SRVINST01. Iremos gerar atividades
utilizando o Enterprise Manager e o Query Analyzer. Com o Query Analyzer faremos algumas
tentativas de logon com a senha incorreta, para gerar um evento de falha de logon.
1. Abra o Enterprise Manager.
2. Navegue at a instncia SERVIDOR\SRVINST01, e depois, at o Banco de Dados Northwind.
3. Clique na opo Tables para exibir a listagem de tabelas deste Banco de Dados.
4. Clique com o boto direito do mouse na tabela Orders e selecione o comando Open Table ->
Return all rows. Ser exibida uma janela com os dados da tabela Orders.
5. Feche esta janela.
6. Restaure o Profiler e observe que uma srie de eventos j foram capturados, conforme indicado
na Figura 7.47.
Figura 7.47 O Profiler capturando atividades na instncia SERVIDOR\SRVINST01.
7. Observe que na figura aparece em destaque, o comando executado quando abrimos a tabela
Orders: SELECT * FROM Orders.
8. Minimize o Profiler.
9. Feche o Enterprise Manager.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
422 00CURSO COMPLETO
Procedimento 3: Voltar ao Profiler, parar a captura e observar a atividade capturada. Depois
salvaremos esta atividade em uma tabela chamada TraceEx1, no Banco de Dados Exemplo2.
Esta tabela ser criada pelo prprio Profiler, na hora de salvar a atividade capturada.
1. Restaure o Profiler.
2. Para parar a captura selecione o comando File -> Stop Trace.
3. No meu caso foram capturadas 144 eventos, sendo que o ltimo evento justamente a parada
do Trace: TraceStop, conforme indicado na Figura 7.48.
Figura 7.48 O evento de parada do Trace: TraceStop.
Poderamos reiniciar o Trace, utilizando o comando File -> RunTrace.
Poderamos localizar um evento especfico utilizando o comando Edit -> Find.
Para descartar todos os eventos capturados utilizamos o comando Edit -> Clear Trace Window.
Podemos gerar um Script com todos os comandos capturados. Este Script pode ser gerado para a verso
SQL Server 2000 ou SQL Server 7.0. Para isso utilizamos os comandos File -> Script Trace -> For SQL
Server 2000 ou File -> Script Trace -> For SQL Server 7.0, respectivamente.
4. Agora vamos salvar o Trace em uma tabela do Banco de Dados Exemplo2, criado no Captulo 3.
5. Selecione o comando File -> Save As -> Trace Table.
6. Surge uma janela solicitando o nome da instncia e o tipo de autenticao. Na lista SQL Server,
selecione SERVIDOR\SRVINST01, e marque Windows authentication.
7. D um clique no boto OK para conectar com a instncia selecionada.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2000
423 CURSO COMPLETO00
8. Na janela Destination Table devemos selecionar o nome do Banco de Dados e o nome da
tabela onde sero salvos os dados capturados.
9. Na lista Database selecione Exemplo2.
10. No campoTable, digite TraceEx1, conforme indicado na Figura 7.49.
Figura 7.49 Salvando os eventos capturados.
11. D um clique no boto OK e pronto. A tabela TraceEx1 ser criada no Banco de Dados Exemplo2,
da instncia SERVIDOR\SRVINST01 e os dados capturados pelo Profiler sero gravados nesta tabela.
12. Voc estar de volta ao Profiler. Feche-o.
Voc pode abrir o Enterprise Manager e acessar a tabela TraceEx1 criada anteriormente. Na Figura 7.50
podemos ver os dados que foram salvos nesta tabela.
Figura 7.50 A tabela TraceEx1.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
424 00CURSO COMPLETO
CONCLUSO
Neste captulo aprendemos a utilizar uma srie de ferramentas e comandos para administrao,
monitoramento e otimizao do SQL Server 2000.
Aprendemos a criar um Plano de Manuteno utilizando o assistente Maintenance Plan Wizard. Tambm
aprendemos a utilizar uma srie de comandos, os chamados comandos DBCC. Estes comandos so
utilizados para anlise e correo de problemas na estrutura fsica de um Banco de Dados.
Monitorar o desempenho de um servidor em busca de gargalos um dos papis do DBA. importante
que seja feita uma manuteno peridica para que possamos nos antecipar aos problemas de
desempenho que possam surgir. Com um acompanhamento peridico podemos prever quando um
determinado componente se tornar um gargalo e a temos condies de tomar as aes necessrias.
Na parte final do captulo aprendemos a utilizar o Profiler, uma ferramenta bastante poderosa, que permite
que seja capturada toda a atividade executada em uma determinada instncia do SQL Server.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
425 CURSO COMPLETO00
Captulo 8
REPLICAO: CONCEITO,
IMPLEMENTAO E MANUTENO
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
426 00CURSO COMPLETO
INTRODUO
Replicao o processo de manter duas ou mais rplicas (cpias) dos dados em diferentes servidores
SQL Server 2000. Podemos replicar desde um conjunto de linhas ou colunas de uma tabela at um
Banco de Dados inteiro. Com o SQL Server 2000, temos uma srie de funes e assistentes que nos
permitem configurar o processo replicao. Uma vez estabelecida a replicao, o SQL Server 2000
encarrega-se de manter sincronizadas as diversas rplicas. No contexto deste captulo, chamaremos de
rplica uma cpia de um conjunto de dados mantida pelo SQL Server em dois ou mais servidores.
A necessidade de replicao no exclusiva de ambientes de Bancos de Dados. Podemos citar o caso do
Active Directory do Windows 2000. Em um Domnio do Windows 2000, a informao sobre os diversos
objetos da rede armazenada em um Banco de Dados hierrquico: Active Directory. Existem servidores
chamados DC (Domain Controlers), os quais tm uma cpia completa do Banco de Dados do Active
Directory. Alteraes podem ser feitas em qualquer DC. Como que o Windows 2000 faz para que todos
os DCs recebam as alteraes feitas em um determinado DC? Utilizando o mecanismo de replicao.
O mecanismo de replicao do Windows 2000 controlado pelo prprio Windows 2000 e no tem nenhuma relao com os mecanismos
de replicao do SQL Server 2000 que iremos tratar neste captulo. Apenas citamos o caso do Active Directory para ilustrar uma situao
real onde a replicao utilizada. Tambm poderamos ter citado uma rede com o NDS da Novell, ou uma rede com servidores Lotus
Notes ou Microsoft Exchange Server.
O processo de replicao bastante confivel, sendo que o mesmo capaz de reiniciar do ponto onde
foi interrompido, em caso de falhas de comunicao ou outra falha qualquer. Com isso o SQL Server
2000 capaz de garantir a integridade e a confiabilidade dos dados replicados.
No incio do captulo veremos que, com a complexidade dos sistemas de informao atuais, a replicao
muitas vezes mais do que uma opo, uma necessidade. Analisaremos diferentes cenrios onde o
uso da replicao ajuda na manuteno de um ambiente distribudo, onde temos diversos servidores
de Banco de Dados, sendo que estes esto distribudos em diferentes localizaes geogrficas.
Em seguida, veremos qual a metfora utilizada pelo SQL Server 2000 para viabilizar o processo de
replicao. Veremos a definio dos principais termos utilizados quando tratamos com replicao no
SQL Server 2000.
Na seqncia, veremos os tipos de replicao existentes no SQL Server 2000. Para diferentes necessidades
temos diferentes tipos de replicao que podem ser implementados. Aprenderemos a identificar qual o
tipo mais adequado para uma determinada situao. Tambm falaremos sobre os modelos fsicos de
replicao e como os diferentes tipos de replicao se encaixam nos diferentes modelos fsicos de replicao.
Aps entendidos os conceitos associados com a replicao e apresentados os diferentes tipos e modelos
fsicos, estamos aptos a partir para a implementao. Aprenderemos a configurar a replicao. Como
temos duas instncias do SQL Server 2000 instaladas, vamos configurar a replicao entre as duas
instncias e entre dois Bancos de Dados da mesma instncia.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
427 CURSO COMPLETO00
KNOW-HOW EM: FUNDAMENTOS BSICOS SOBRE REPLICAO
PR-REQUISITOS
Fundamentos apresentados na Parte I.
METODOLOGIA
Apresentao sobre os conceitos bsicos de replicao.
A replicao nos permite manter cpias de um conjunto de dados em diferentes localizaes. So
muitas, conforme veremos a seguir, as aplicaes prticas para a replicao. Uma vez configurado o
processo de replicao, o SQL Server 2000 mantm, automaticamente, sincronizadas as diversas cpias.
Vamos imaginar a rede de uma grande empresa, com diversos escritrios espalhados pelo mundo. Em
cada um destes escritrios temos uma rede local. As diversas redes locais so conectadas por linhas de
comunicao de dados de diferentes velocidades. O que acabamos de descrever nada mais do que
uma tpica WAN Wide Area Network. Na Figura 8.1 temos uma representao genrica da WAN da
nossa empresa fictcia. Chamaremos esta empresa de ABC Ltda.
Figura 8.1 A WAN da Empresa ABC Ltda.
Agora vamos analisar algumas situaes onde pode ser necessria a utilizao de replicao.
Situao 1: Em cada um dos escritrios da empresa ABC Ltda. temos uma rede local. Em cada rede local
temos um servidor SQL Server 2000 com diversos Bancos de Dados. Na Tabela 8.1, temos o nome dos
servidores SQL Server 2000 de cada localidade.
Tabela 8.1 Servidores de cada localidade.
Localidade SERVIDOR\instncia
So Paulo SQLSRVSP\PRODUO
Rio de Janeiro SQLSRVRJ\PRODUO
Porto Alegre SQLSRVPA\PRODUO
Belo Horizonte SQLSRVBH\PRODUO
WAN
So Paulo
Rio de Janeiro
Porto Alegre
Belo Horizonte
2 MB/seg
512 KB/seg
512 KB/seg
256 KB/seg
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
428 00CURSO COMPLETO
Os pedidos dos clientes de cada regio so digitados em um aplicativo de vendas que armazena as
informaes no Banco de Dados Vendas do servidor SQL Server 2000 de cada localidade. Durante a
noite, uma cpia dos pedidos feitos durante o dia, em cada regio, deve ser enviada para o Banco de
Dados do escritrio de So Paulo. Os dados devem ser consolidados em uma segunda instncia do SQL
Server 2000 do servidor de So Paulo. Esta instncia denominada SQLSRVSP\CONSOLIDADO e a sua
funo conter uma cpia completa dos pedidos realizados em todo o Brasil. Como podemos
implementar a soluo solicitada?
Na Figura 8.2, temos uma visualizao do problema proposto.
Figura 8.2 Pedidos digitados em diferentes servidores SQL Server 2000.
Para solucionar o problema proposto, a melhor soluo utilizarmos replicao. Podemos configurar
os servidores SQL Server, de tal forma que os servidores que receberam os pedidos em So Paulo, Rio de
Janeiro, Belo Horizonte e Porto Alegre, enviem os pedidos do dia para a base consolidada em um Banco
de Dados da instncia SQLSRVSP\CONSOLIDADO. Desta maneira, todas as noites os servidores ficam
enviando cpias (replicando), dos pedidos recebidos durante o dia, para o Banco de Dados consolidado.
Aps feitas as replicaes, uma cpia de todos os pedidos estar disponvel no Banco de Dados
consolidado. interessante observar mais uma vez que, aps configurada a replicao, a mesma con-
tinua funcionando automaticamente, ou seja, no precisamos configurar a replicao todos os dias.
Poderamos fazer com que esta replicao ocorresse de hora em hora ou de vinte em vinte minutos. O
que vai definir o intervalo de replicao so as necessidades da empresa. Na Figura 8.3, temos uma
viso deste processo de replicao.
Situao 2: Agora vamos mudar um pouco as nossas exigncias. Vamos supor que todos os escritrios
tambm devam ficar com uma cpia completa de todos os pedidos. Como a replicao pode nos ajudar?
WAN
So Paulo
Rio de Janeiro
Porto Alegre
Belo Horizonte
2 MB/seg
512 KB/seg
512 KB/seg
256 KB/seg
SQLSRVSP\
CONSOLIDADO
SQLSRVSP\
PRODUO
SQLSRVRJ\
PRODUO
SQLSRVBH\
PRODUO
SQLSRVPA\
PRODUO
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
429 CURSO COMPLETO00
Figura 8.3 Escritrios replicando dados para a base consolidada.
Muito simples mais uma vez. Poderamos configurar a replicao de tal maneira, que os escritrios
enviassem os pedidos para a base consolidada. Aps a replicao ter sido completada com sucesso,
poderamos iniciar um novo ciclo de replicao, onde a base consolidada passa a enviar dados para os
escritrios regionais. Ao final deste segundo ciclo de replicao, todos os servidores SQL Server ficariam
com uma cpia idntica do Banco de Dados de pedidos, cpia esta que contm todos os pedidos.
Na Tabela 8.2, temos um exemplo de como poderamos configurar estes dois ciclos de replicao.
Tabela 8.2 Agendamento das replicaes.
Neste caso fizemos uma programao da replicao, de tal maneira que todos os Bancos de Dados
fiquem com uma cpia completa dos pedidos. A partir das 22h, os escritrios comeam a replicar com
a base consolidada, cada um enviando os pedidos do dia. Aps o ltimo escritrio ter replicado, a base
Hora Descrio
22:00 Porto Alegre envia os pedidos para a base consolidada.
22:30 Rio de Janeiro envia os pedidos para a base consolidada.
23:00 Belo Horizonte envia os pedidos para a base consolidada.
23:30 So Paulo envia os pedidos para a base consolidada. Envia de uma instncia para a
outra, no mesmo servidor.
00:00 So Paulo envia a base completa para Porto Alegre.
00:30 So Paulo envia a base completa para Rio de Janeiro.
01:00 So Paulo envia a base completa para Belo Horizonte.
SQLSRVSP\
CONSOLIDADO
SQLSRVSP\
PRODUO
SQLSRVRJ\
PRODUO
SQLSRVPA\
PRODUO
SQLSRVBH\
PRODUO
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
430 00CURSO COMPLETO
consolidada est completa. A partir da zero hora (00:00), a base consolidada comea a replicar com os
escritrios. Ao final deste segundo ciclo de replicao, os escritrios tambm tero uma base completa,
com todos os pedidos.
Na Figura 8.4, temos uma visualizao deste processo de replicao, em que a sincronizao dos dados
ocorre em dois sentidos.
Figura 8.4 Replicao nos dois sentidos.
A replicao pode ser implementada de diferentes maneiras. Por exemplo, em cada replicao pode ser
enviada uma cpia completa de todo o Banco de Dados. Outra maneira fazer com que sejam enviados
apenas os registros que foram alterados ou inseridos. Neste captulo veremos os diferentes tipos de
replicao que podem ser implementados com o SQL Server 2000 e as caractersticas de cada um.
FATORES LIGADOS REPLICAO
Quando formos planejar um esquema de replicao, como forma de manter duas ou mais cpias de
um determinado conjunto de dados, devemos levar em considerao diversos fatores. A seguir
descrevemos quais so estes fatores.
Latncia: o tempo que demora para que dois conjuntos de dados estejam sincronizados. Com
a replicao, no temos como garantir que as diversas rplicas estejam exatamente iguais o tempo
todo. medida que alteraes vo sendo introduzidas em um rplica, demora um certo tempo
(latncia), at que estas alteraes sejam propagadas para as demais rplicas. Devemos levar em
considerao qual o nvel de latncia aceitvel para cada caso: minutos, horas, dias, etc.
SQLSRVSP\
CONSOLIDADO
SQLSRVSP\
PRODUO
SQLSRVRJ\
PRODUO
SQLSRVPA\
PRODUO
SQLSRVBH\
PRODUO
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
431 CURSO COMPLETO00
Existe uma tcnica conhecida como Transaes Distribudas Distributed Transactions. Com esta tcnica medida que uma transao
aplicada em um Banco de Dados, a mesma transao , automaticamente, aplicada nas demais rplicas do Banco de Dados. Desta
forma como se a alterao estivesse sendo feita, ao mesmo tempo, em todos os Bancos de Dados. A grande vantagem desta tcnica
que as diversas cpias esto perfeitamente sincronizadas, o tempo todo. O grande problema com Distributed Transactions quando
um dos servidores, que contm uma das cpias, est fora do ar. Neste caso no temos como aplicar as transaes neste servidor. Com
isso precisamos utilizar uma outra tcnica para sincroniz-lo com os demais, antes que o mesmo volte a funcionar.
Autonomia da rplica: Este fator tem a ver com a possibilidade do servidor em que est uma rplica
poder continuar em funcionamento, caso o mesmo perca o contato com os demais servidores. A
perda de contato pode ser ocasionada, por exemplo, devido a uma falha na linha de comunicao
de dados. No caso de replicao, o servidor pode continuar funcionando sem problemas. Quando
a comunicao for restabelecida, os dados passaro a ser sincronizados, de acordo com a programao
da replicao. Imagine no caso da empresa ABC, que tem escritrios em So Paulo, Rio de Janeiro,
Belo Horizonte e Porto Alegre. Um dos escritrios no pode parar de aceitar pedidos porque houve
uma falha na linha de comunicao. O escritrio continua aceitando pedidos e, quando a linha for
restabelecida, os dados so replicados com a base consolidada.
Conflitos de atualizao: No caso de diversas rplicas, em que os dados podem ser alterados em
qualquer delas, podemos ter uma situao em que o mesmo registro foi alterado em duas
rplicas diferentes. Ao replicar este registro, teremos um conflito de replicao. O SQL Server
tem alguns mecanismos automticos para resoluo deste tipo de conflitos.
Velocidade dos links de WAN: Este um fator de grande importncia. Replicao implica em
informao sendo enviada pela rede. Devemos fazer uma estimativa do volume de dados a ser
replicados e comparar com a capacidade do link disponvel. Isto evita que, devido replicao,
o link fique sobrecarregado, impedindo que outras aplicaes crticas, como por exemplo e-
mail, tenham um desempenho satisfatrio.
BENEFCIOS DA REPLICAO E ONDE UTILIZ-LA
O benefcio mais bvio da replicao a possibilidade de mantermos, em diferentes servidores, cpias
de um mesmo conjunto de dados. Com base nesta idia bsica, podemos dizer que a replicao deve
ser considerada como soluo, nas seguintes situaes:
Permitir que diferentes localidades tenham disposio uma cpia atualizada de um Banco de
Dados. Por exemplo, podemos ter a matriz replicando um catlogo de produtos e uma lista de
preos para suas diversas filiais. Neste caso a replicao uma maneira de manter todas as
localidades com dados atualizados, pois as alteraes feitas no Banco de Dados original da
matriz (conhecido como Banco de Dados mestre) so replicadas para as demais localidades.
Manter em servidores separados, por questes de desempenho, duas cpias idnticas do mesmo
Banco de Dados. Um exemplo tpico a separao do Banco de Dados para ambientes OLTP
(On Line Transaction Processing) e OLAP (On Line Analytical Processing). Um ambiente OLTP
um ambiente onde so feitas basicamente entrada de dados ou consultas simples, como por
exemplo localizar o cadastro de um cliente. Um exemplo tpico deste ambiente uma central
de atendimento ao contribuinte em uma unidade da Receita Federal ou do INSS. Neste caso, h
uma srie de terminais dos atendentes. Estes terminais esto conectados a um Banco de Dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
432 00CURSO COMPLETO
As operaes realizadas normalmente limitam-se a digitar um novo registro ou buscar um j
existente. As aplicaes de um ambiente OLAP, no entanto, realizam consultas bastante
complexas, tipicamente consultas de referncia cruzada. Este tipo de ambiente utilizado,
normalmente, por gerentes e tomadores de deciso, que necessitam de dados consolidados.
Um bom exemplo um gerente que utiliza uma aplicao de Data Mining, procurando padres
de crescimento de vendas de um determinado produto em perodos especficos do ano. Neste
caso, so elaboradas consultas bastante complexas que exigem bastante do Banco de Dados.
Separar aplicaes destes dois ambientes em servidores SQL Server separados uma boa soluo
para melhorar o desempenho. A utilizamos a replicao para manter as duas cpias
sincronizadas. Nesta situao as alteraes so feitas pelos aplicativos do ambiente OLTP e so
replicadas para o Banco de Dados que d suporte ao ambiente OLAP.
Sempre que precisamos copiar e distribuir um conjunto de dados para diversas localidades.
Permitir que alteraes sejam feitas em diversas rplicas do Banco de Dados e fazer com que
estas modificaes sejam repassadas para as demais cpias. Sempre devemos considerar a
possibilidade de conflitos de replicao.
KNOW-HOW EM: O MODELO DE REPLICAO DO SQL SERVER 2000
PR-REQUISITOS
Noes sobre replicao.
Fundamentos apresentados na Parte I.
METODOLOGIA
Apresentao do modelo de replicao do SQL Server 2000 e dos tipos de replicao existentes.
O SQL Server 2000 utiliza um modelo de replicao, muitas vezes chamado de metfora de replicao,
baseado nos seguintes elementos:
Publisher
Distributor
Subscribers
Publicao
Article
Com um viso geral, podemos dizer que o Publisher quem publica informaes a serem replicadas
para um ou mais Subscribers. Sendo que as informaes no so enviadas diretamente do Publisher
para os Subscribers, pois no meio do caminho havia um Distributor, havia um Distributor no meio do
caminho. Drummond que me perdoe pelos direitos autorais.
Bem, falando srio, vamos detalhar estes diversos elementos que fazem parte do modelo de replicao
do SQL Server 2000. Para melhor explicarmos estes elementos, vamos nos apoiar na Figura 8.5.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
433 CURSO COMPLETO00
Figura 8.5 O modelo de replicao do SQL Server 2000.
Um servidor SQL Server 2000 pode representar um dos papis indicados na Figura 8.5: Publisher,
Distributor ou Subscriber. Em toda replicao, temos a presena destes trs papis. Podemos ter diferentes
servidores realizando cada um dos papis ou, em um caso extremo, um nico servidor configurado
como Publisher, Distributor e Subscriber. Esta ltima situao pode parecer absurda, mas a configurao
que vou utilizar para os exemplos deste livro. No computador que estou utilizando neste livro, vou
configurar uma instncia do SQL Server como Publisher e Distributor e a outra instncia como Sub-
scriber. Na empresa comum termos pelo menos as funes de Publisher e Subscriber em servidores
diferentes. Vamos detalhar um pouco mais cada uma destas funes.
PUBLISHER
Um servidor atuando como Publisher um servidor SQL Server 2000 que est disponibilizando dados
para serem replicados para outros servidores. O Publisher mantm a cpia original dos dados e envia o
conjunto de dados a ser replicado para um ou mais Distributors. O Publisher disponibiliza conjuntos
definidos de dados atravs de Publicaes. Podemos ter uma ou mais publicaes, cada uma representando
um conjunto de dados. Alm de disponibilizar dados para a replicao, o Publisher possui mecanismos
para detectar quais dados sofreram alteraes e, portanto, devem ser includos no conjunto de dados a
ser replicado. Por padro, esta funo no est habilitada em um servidor SQL Server 2000. A mesma
somente ser habilitada quando configurarmos este servidor para atuar como um Publisher.
Mais uma vez importante lembrar que, quando estamos falando de servidor SQL Server 2000, queremos fazer referncia a uma
instncia do SQL Server 2000. Se existirem, por exemplo, duas instncias do SQL Server 2000 instaladas no mesmo computador,
como se fossem dois servidores completamente independentes, sendo que um deles pode estar disponibilizando dados para replicao
e o outro no. Ou pode ser que o conjunto de dados disponibilizado pelas diferentes instncias seja completamente distinto.
DISTRIBUTOR
O Distributor recebe do Publisher uma cpia dos dados que foram alterados e devem ser replicados e
disponibiliza estes dados para um ou mais Subscribers. A funo do Distributor varia com o tipo de
Publisher
Distributor
Bancos de Dados
originais.
Disponibiliza os
dados para
replicao.
Recebe e armazena os
dados.
Envia alteraes para um
ou mais Subscrivers.
Subscriber
Recebe as
alteraes.
Armazena uma
rplica dos dados.
Subscriber
Recebe as
alteraes.
Armazena uma
rplica dos dados.
Subscriber
Recebe as
alteraes.
Armazena uma
rplica dos dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
434 00CURSO COMPLETO
replicao que estamos implementando. No prximo item trataremos dos diferentes tipos de replicao
do SQL Server 2000.
Podemos ter um Distributor local, situao em que o Distributor o mesmo servidor que publica os dados
(Publisher), isto , as duas funes esto configuradas no mesmo servidor. Tambm podemos ter um Dis-
tributor remoto, onde o servidor que desempenha a funo de Distributor no o mesmo que desempenha
a funo de Publisher. Tambm podemos ter situaes em que um nico Distributor recebe dados de vrios
Publishers e envia estes dados para um ou mais Subscribers, conforme indicado na Figura 8.6.
Figura 8.6 Um Distributor com vrios Publishers.
SUBSCRIBER
Um Subscriber um servidor SQL Server que armazena uma rplica dos dados e recebe atualizaes
peridicas dos mesmos. Os dados recebidos pelo Subscriber podem ser alterados em determinadas
configuraes. O Subscriber pode inclusive estar publicando um outro conjunto de dados, situao na
qual estar atuando como Publisher para outros servidores. Analisaremos alguns exemplos mais adiante.
Ao configurarmos um servidor como Subscriber temos que informar em quais publicaes estamos
nos inscrevendo.
Um conceito fundamental que no devemos esquecer que todo o conjunto de dados a ser replicado somente pode ter um nico Publisher,
ou seja, no podemos ter o mesmo conjunto de dados, isto , a mesma publicao sendo publicada por dois Publishers diferentes.
Bem, voc j deve estar curioso para saber um pouco mais sobre Publicaes. Ento, vamos l, agora
hora de detalhar os conceitos de Artigos (Article) e Publicaes.
Publisher
Distributor
Bancos de Dados
originais.
Disponibiliza os
dados para
replicao.
Recebe e armazena os
dados.
Envia alteraes para um
ou mais Subscribers.
Subscriber
Recebe as alteraes.

Armazena uma
rplica dos dados.
Subscriber
Recebe as alteraes.

Armazena uma
rplica dos dados.
Subscriber
Recebe as alteraes.

Armazena uma
rplica dos dados.
Publisher
Bancos de Dados
originais.
Disponibiliza os
dados para
replicao.
Publisher
Bancos de Dados
originais.
Disponibiliza os
dados para
replicao.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
435 CURSO COMPLETO00
ARTIGO
Um Artigo pode ser uma tabela de dados ou um objeto do Banco de Dados, como um Stored Procedure
que configurado para replicao. Podemos ter um Artigo que engloba uma tabela inteira, ou um
artigo que engloba apenas algumas colunas o que chamamos de filtragem vertical. Tambm podemos
ter artigos que englobam apenas algumas linhas, o que chamamos de filtragem horizontal. Podemos
ter ainda artigos que englobam Stored Procedures ou Views. No caso de um Artigo que engloba uma
View, podemos publicar dados de vrias tabelas.
Vamos considerar o caso de um escritrio que mantm um Banco de Dados com informaes sobre
produtos: CdigoDoProduto, DescrioDoProduto, CdigoDaCategoria, Preo, Fornecedor,
CdigoEmbalagem, DataDeEntrada, UnidadesEmEstoque, etc. Podemos ter uma situao em que os
escritrios regionais necessitem de apenas algumas informaes, como por exemplo: CdigoDoProduto,
DescrioDoProduto, Preo e UnidadesEmEstoque. Neste caso podemos criar um Artigo que inclua
apenas as colunas necessrias. Em vez de replicar a tabela completa, replicamos apenas os campos
utilizados pelos escritrios regionais. Neste caso estamos aplicando um filtro vertical, no qual apenas
algumas colunas so replicadas.
Tambm poderamos ter uma situao especial, onde determinado escritrio somente revendesse
produtos de determinadas categorias. Neste caso, devemos aplicar um filtro horizontal, onde o nosso
artigo somente incluir as linhas com os produtos que se encaixam nas categorias definidas pelo filtro.
Tambm possvel aplicar uma combinao de filtros verticais e horizontais, onde apenas algumas
colunas e alguns registros so includos no Artigo.
Com isso podemos concluir que atravs da criao de um Artigo que definimos quais dados devem
ser replicados. Isto evita que tenhamos que replicar uma tabela inteira quando apenas um subconjunto
dos dados necessrio.
Tambm podemos incluir a definio de um Stored Procedure como parte de um Artigo. Outra possibilidade
incluir no Artigo a execuo de um Stored Procedure, ao invs de incluir os dados alterados pela
execuo do Stored Procedure. Com isso a mesma execuo acontece no Banco de Dados de destino,
processando as alteraes neste Banco de Dados da mesma maneira que foram processadas no original.
O resultado que os dois conjuntos de dados ficam iguais, porm com um trfego de rede bem menor,
pois ao invs de replicar todos os dados que foram alterados, apenas estamos replicando os comandos
que alteraram os dados, para que estes mesmos comandos sejam executados em outras rplicas.
Na Figura 8.7, temos um exemplo onde estamos aplicando um filtro vertical para criar um Artigo que
inclui apenas algumas colunas da tabela Orders. Estamos incluindo as colunas: OrderID, CustomerID,
OrderDate e ShipCountry.
Na Figura 8.8, temos um exemplo onde estamos aplicando um filtro horizontal, para criar um Artigo
que inclui apenas alguns registros da tabela Orders. Estamos incluindo apenas os registros para o
PasDeDestino = Brasil.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
436 00CURSO COMPLETO
Figura 8.7 Um artigo com filtro vertical.
Figura 8.8 Um artigo com filtro horizontal.
Na Figura 8.9, temos um exemplo onde estamos aplicando um filtro vertical e um filtro horizontal para
criar um Artigo que inclui apenas alguns registros da tabela Orders. Estamos incluindo apenas as colunas
OrderID, CustomerID, OrderDate e ShipCountry, para os registros em que PasDeDestino = Brasil.
Na parte prtica deste captulo aprenderemos a criar Artigos e a aplicar os diferentes tipos de filtros.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
437 CURSO COMPLETO00
Figura 8.9 Um Artigo com filtro horizontal e vertical.
PUBLICAES
Uma Publicao um conjunto de um ou mais Artigos de um Banco de Dados. A Publicao a
unidade de replicao. Em outras palavras, o Subscriber se inscreve em uma Publicao e no em um
Artigo. Mesmo que somente tenhamos que replicar dados de um nico Artigo, devemos criar uma
Publicao que inclui este Artigo.
Normalmente uma Publicao rene os diversos Artigos que do suporte a uma determinada aplicao.
Vamos supor que, nos escritrios regionais, uma aplicao de atendimento ao cliente necessite dados
de diversas tabelas de um determinado Banco de Dados. A maneira mais prtica de distribuir estes
dados criar uma srie de Artigos, criar uma Publicao que inclui os diversos Artigos e replic-la para
os escritrios regionais.
Podemos criar uma ou mais Publicaes em um Banco de Dados, porm uma Publicao no pode
conter Artigos de diferentes Bancos de Dados.
Na Figura 8.10 temos uma viso geral da utilizao dos diversos elementos apresentados nesta seo;
a representao dos diversos elementos que compem o modelo de replicao do SQL Server 2000.
Temos um Publisher no qual foram criadas duas Publicaes. Cada Publicao contm vrios Artigos.
Este Publisher est enviando suas alteraes para dois Distributors. Para cada um dos Distributors,
temos vrios Subscribers, sendo que um dos Subscribers est inscrito para receber dados dos dois Dis-
tributors. Vejam que na rede de uma grande empresa, com filiais em diversos pontos do pas ou at
mesmo em diversos pases, podemos chegar a um modelo de replicao bastante sofisticado. Por isso
fundamental entender os conceitos que esto sendo apresentados na parte inicial deste captulo, para
que possamos fazer um planejamento cuidadoso da replicao.
Um pouco mais de pacincia e teoria e logo estaremos implementando a replicao na prtica.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
438 00CURSO COMPLETO
Figura 8.10 Publisher, Distributors, Subscribers, Artigos e Publicaes.
KNOW-HOW EM: SUBSCRIES E TIPOS DE SUBSCRIES
PR-REQUISITOS
Noes sobre replicao.
Conhecer o modelo de replicao do SQL Server 2000.
Fundamentos apresentados na Parte I.
Saber utilizar o Enterprise Manager.
METODOLOGIA
Apresentao do conceito de subscrio e dos tipos de subscries existentes.
Chamamos de subscrio o processo pelo qual um servidor se inscreve para receber cpia dos dados de uma
ou mais Publicaes. Ao se inscrever para receber cpias dos dados o servidor torna-se um Subscriber.
Podemos ter dois tipos de subscries: Pull subscription e Push subscription. O tipo de subscrio
define como a mesma criada e administrada, tambm de que maneira os dados sero replicados.
PUSH SUBSCRIPTION
Este tipo de subscrio feita durante a criao ou administrao de uma Publicao. Neste tipo de
subscrio, o Distributor responsvel por enviar as alteraes para um ou mais Subscribers. Note que
push significa empurrar e no puxar. Uma analogia que pode ser utilizada que neste tipo de subscrio
o Distributor que empurra, envia as alteraes para um ou mais Subscribers.
Utilizamos Push subscriptions quando queremos ter um controle centralizado sobre o agendamento
das replicaes. muito mais fcil configurar vrias subscries em um nico servidor, no caso o
Publisher
Publicao1:
Artigo1
Artigo2
Artigo3
Publicao2:
Artigo1
Artigo2
Artigo3
Distributor Distributor
Subscriber Subscriber Subscriber Subscriber Subscriber Subscriber
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
439 CURSO COMPLETO00
Distributor, do que ter que configurar a subscrio em diversos servidores, no caso os diversos Sub-
scribers. Neste caso, do Distributor a iniciativa de enviar as alteraes para os Subscribers.
Assim, o Agente de replicao, que o servio responsvel por fazer a replicao, roda no Distributor
ou no Publisher, dependendo de como foi feita a configurao da replicao. Devemos ter em mente
que este agente estar consumindo recursos como memria e processador no Distributor ou no Pub-
lisher. Caso tenhamos um nmero considervel de Subscribers, devemos considerar esta necessidade
de recursos de memria e processamento.
Lembre push no puxar; push empurrar, ou seja, o Distributor o responsvel por enviar as
alteraes para os subscribers conforme o agendamento configurado.
PULL SUBSCRIPTIONS
Este tipo de subscrio feita no Subscriber, que tomar a iniciativa de solicitar o incio da replicao
e envio dos dados do Distributor para o Subscriber. Pull significa puxar, ou seja, o Subscriber puxa os
dados que esto no Distributor.
Com este tipo de subscrio deixamos o controle e o agendamento da replicao a cargo de cada
Subscriber. A administrao fica mais distribuda, e ao mesmo tempo, damos maior liberdade para
cada Subscriber. Por exemplo, localidades ligadas por links mais lentos podem programar a replicao
em perodos mais espaados (maior latncia na atualizao dos dados). Este tipo de subscrio tambm
indicada para usurios mveis. Por exemplo, um vendedor que, ao atender o cliente, conecta-se
rede da empresa atravs da linha telefnica e dispara uma replicao (puxa) para atualizar uma tabela
de preos que est no SQL Server 2000 instalado no seu notebook.
Para Pull subscriptions o agente de replicao roda no Subscriber, consumindo memria e processador
deste equipamento.
KNOW-HOW EM: TIPOS DE REPLICAO
PR-REQUISITOS
Noes sobre replicao.
Conhecer o modelo de replicao do SQL Server 2000.
Fundamentos apresentados na Parte I.
METODOLOGIA
Apresentao dos tipos de replicao existentes no SQL Server 2000.
Temos trs tipos de replicao no SQL Server 2000: Snapshot replication, Transactional replication e
Merge replication. Neste item veremos as caractersticas de cada um dos tipos de replicao, bem como
suas diferenas.
Ao criarmos uma Publicao, tambm definimos o tipo de replicao que ser utilizado para esta Publicao.
Em um mesmo Banco de Dados, podemos ter diferentes Publicaes com diferentes tipos de replicao.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
440 00CURSO COMPLETO
Vamos analisar as diferentes caractersticas de cada um dos tipos de replicao.
SNAPSHOT REPLICATION
Com este tipo de replicao, todo o conjunto de dados replicado a cada intervalo programado. Um
ou mais Subscribers so atualizados com uma cpia exata dos dados publicados pelo Publisher. So
enviados, para os Subscribers, todos os dados quer tenham sido modificados ou no.
o tipo mais simples de replicao, pois os servidores envolvidos na replicao no precisam monitorar
os dados para verificar quais alteraes foram feitas, uma vez que todos os dados so replicados. A
principal desvantagem deste tipo de replicao que a mesma transmite uma grande quantidade de
informaes a cada ciclo de replicao. Em links de WAN, dependendo do volume de dados a ser
replicado, pode ser invivel a utilizao de Snapshot replication.
Algumas caractersticas da Snapshot replication:
No indicada para grandes volumes de dados.
Exige pouco do processador, uma vez que no existe a necessidade de um monitoramento
constante para verificao das alteraes efetuadas no conjunto de dados a ser replicado.
Possui uma latncia elevada, sendo a latncia igual ao intervalo de replicao. Por exemplo, se uma
Snapshot replication est programada para ocorrer uma vez ao dia, a latncia ser de at 24 horas.
Quando falamos do monitoramento das alteraes, o envio dos dados a serem replicados para o Distributor e outras tarefas ligadas
replicao, estamos nos referindo a uma srie de agentes de replicao. Os agentes de replicao so programas que rodam como
servio e executam uma srie de tarefas que viabilizam a replicao dos dados entre diferentes servidores. Temos, por exemplo, um
Snapshot agent, um Distributor agent e assim por diante. Estaremos falando mais sobre agentes ao longo deste captulo.
TRANSACTIONAL REPLICATION
Neste tipo de replicao somente as alteraes efetuadas no Publisher que so replicadas para um ou
mais Subscribers. Qualquer alterao feita, em um ou mais artigos de uma publicao, imediatamente
capturada a partir do Log de transaes e replicada para o Distributor. Dependendo das configuraes
e da velocidade de conexo entre os servidores, podemos manter as diversas rplicas sincronizadas
quase que instantaneamente.
A principal vantagem que podemos manter as diversas rplicas praticamente idnticas, diminuindo
bastante a latncia (questo de segundos) de atualizao entre as diversas rplicas. A grande desvantagem
que este monitoramento contnuo em busca das alteraes, implica em uma maior exigncia de
memria e processamento no servidor SQL Server.
Um detalhe importante a ser observado a autonomia das rplicas. Para manter-se atualizada, a mesma
precisa estar em contato com os demais servidores que participam da replicao, mais especificamente,
com o Subscriber e o Distributor. Este fator pode ser um problema para o caso de servidores em localidades
remotas, ligados rede da empresa por links de WAN. Outro fator a considerarmos que, para Trasactional
replication, as tabelas que compem um Artigo devem possuir um campo do tipo Chave Primria.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
441 CURSO COMPLETO00
Apenas transaes concludas (committed transactions) sero replicadas para os Subscribers, e sero aplicadas nas rplicas, na mesma
ordem em que foram aplicadas no Banco de Dados original.
Este o tipo de replicao que mantm os dados o mais atualizados possveis, com o menor nvel de
latncia em relao aos demais tipos de replicao do SQL Server 2000.
Tanto a Snapshot replication quanto Transactional replication somente permitem que alteraes sejam feitas no Publisher, isto , os
dados no podem ser alterados no Subscriber. Existe, porm, um mecanismo que combina dois itens: a opo Immediate Update
Subscribers Option e Two-phase commit protocol. Com estas duas opes, os dados podem ser alterados nos Subscribers e as alteraes
sero aplicadas no Publisher ao mesmo tempo, atravs da utilizao do protocolo Two-phase commit protocol.
MERGE REPLICATION
A principal caracterstica deste tipo de replicao que alteraes podem ser feitas em qualquer uma
das rplicas dos dados. As alteraes feitas em uma das rplicas sero repassadas para as demais. O SQL
Server 2000 utiliza um mecanismo prprio para resoluo de conflitos de replicao.
Ao iniciarmos o processo de replicao, temos uma Snapshot replication na primeira vez que os dados
so enviados para um ou mais Subscribers. Na seqncia, o mecanismo de replicao fica monitorando
as alteraes efetuadas nas diversas rplicas e fica repassando as alteraes para as demais rplicas. No
temos a garantia de que todas as rplicas estaro perfeitamente sincronizadas instantaneamente. Porm
temos a certeza de que as diversas rplicas iro convergir com o passar do tempo.
O SQL Server 2000 adiciona, automaticamente, um coluna com dados do tipo Identificador nico, s
tabelas que fazem parte da replicao. Os valores desta coluna so criados e mantidos pelo mecanismo
de replicao do SQL Server.
KNOW-HOW EM: OS AGENTES DE REPLICAO NO SQL SERVER 2000
PR-REQUISITOS
Noes sobre replicao.
Conhecer o modelo de replicao do SQL Server 2000.
Conhecer os tipos de replicao existentes no SQL Server 2000.
Fundamentos apresentados na Parte I.
METODOLOGIA
Apresentao dos agentes de replicao existentes no SQL Server 2000.
O suporte replicao no SQL Server 2000 feito por um conjunto de agentes, os chamados SQL
Server Replication Agents. Estes agentes so os responsveis por fazer com que os dados sejam passados
do Publisher para um ou mais Distributors e destes para um ou mais Subscribers. A seguir, vamos ver
um pouco sobre os agentes existentes no SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
442 00CURSO COMPLETO
Snapshot agent: Este agente responsvel por criar e distribuir o conjunto de dados a ser replicado
do Publisher para o Distributor. Alm da definio do conjunto de dados a ser replicado, o Snap-
shot agent tambm inclui informaes sobre o conjunto de dados (meta dados), as quais so
utilizadas pelo Distributor para transferir dados para um ou mais Subscribers. Este agente tambm
mantm informaes sobre o andamento da sincronizao entre as diversas rplicas.
Na Figura 8.11, temos uma figura retirada do Books OnLine, onde vemos a utilizao do Snapshot agent.
Figura 8.11 Snapshot Agent em ao.
Os passos a seguir descrevem o funcionamento deste agente.
1. O Snapshot agent executado no Distributor. Em perodos determinados este agente conecta com
o Subscriber e bloqueia os dados das tabelas a serem replicadas, de tal forma que estes dados no
podem ser alterados enquanto o agente estiver copiando os dados do Publisher para o Subscriber.
2. Aps transferir os dados para o Distributor, o Snapshot agent retira o lock das tabelas no Sub-
scriber, liberando-as para novas alteraes. Devido ao lock que imposto nas tabelas do Sub-
scribers, pode ser necessrio que o agente seja configurado para executar fora do horrio de
expediente normal.
Os dados, que esto no Distributor para serem replicados para um ou mais Subscribers, so referenciados como os dados do Banco de
Dados do Distributor, ou o termo mais comum em ingls: The Distributor database.
Distribution agent: Este agente responsvel por enviar os dados a serem replicados, tanto no
caso de Snapshot replication quanto no caso de Transaction replication, da base do Distributor
Custom
Application
Pubslisher Subscriber
Distributor
Publication Database
Subscription Database
Distribution Database
Snapshot agent
Snapshot
Folder
Distribution agent
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
443 CURSO COMPLETO00
para um ou mais Subscribers. Cada Publicao possui o seu prprio Distributor agent. Para
Push subscriptions, o Distributor agent roda no Distributor; para Pull subscriptions, o Dis-
tributor agent roda no Subscriber.
Log Reader agent: utilizado em replicaes do tipo Transactional replication. O trabalho deste
agente capturar as alteraes no Log de transaes no Publisher, e passar estas transaes para
o Distributor. Lembrando que apenas Committed transactions que so replicadas. Cada Banco
de Dados, que utiliza Transactional replication, tem o seu prprio Log Reader agent no Publisher.
Merge agent: responsvel por sincronizar as alteraes entre as diversas rplicas; sincroniza dados
nos dois sentidos, entre o Publisher e os Subscribers, passando evidentemente pelo Distributor.
Para Push subscriptions, o Merge agent roda no Distributor, para Pull subscriptions, o Merge agent
roda no Subscriber. Este agente no utilizado em Snapshot e Transactional replications.
Agora que j conhecemos a teoria bsica sobre replicao no SQL Server 2000, estamos preparados
para comear a implementar a replicao na prtica.
KNOW-HOW EM: CONFIGURANDO A REPLICAO NO SQL SERVER 2000
PR-REQUISITOS
Conceitos tericos sobre replicao apresentados nos itens iniciais deste captulo.
Conhecer o modelo de replicao do SQL Server 2000.
Fundamentos apresentados na Parte I.
Saber utilizar o Enterprise Manager.
METODOLOGIA
Apresentao dos comandos e assistentes para implementao da replicao.
TCNICA
Implementar a replicao no SQL Server 2000.
Vamos configurar a replicao entre as duas instncias instaladas no nosso servidor. Apenas para lembrar,
o nome do servidor que estou utilizando SERVIDOR e tenho as seguintes instncias instaladas no mesmo:
SERVIDOR\SRVINST01
SERVIDOR\SRVINST02
Iremos configurar a instncia SERVIDOR\SRVINST01 como Publisher e Distributor. Depois, vamos
configurar a instncia SERVIDOR\SRVINST02 como Subscriber. Lembrando que, na prtica, como se
cada instncia fosse um servidor SQL Server completamente separado.
Se voc no tiver duas instncias do servidor SQL Server instaladas, no tem problema, pois possvel configurar uma mesma instncia
como sendo Publisher, Distributor e Subscriber. Esta uma situao pouco usual, sendo somente indicada para sala de aula, treinamentos
ou para um projeto-piloto onde queremos testar a replicao no SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
444 00CURSO COMPLETO
Na configurao de um servidor SQL Server para replicao, o primeiro passo a criao do Publisher
e do Distributor. Estes dois passos so feitos ao mesmo tempo, com a utilizao do assistente Configure
Publishing and Distribution Wizard. Vamos, finalmente, prtica.
Exemplo:
Configurar a instncia SERVIDOR\SRVINST01 como Publisher e Distributor, utilizando para isso o
assistente de publicao e distribuio.
Para configurar a instncia SERVIDOR\SRVINST01 como Publisher e Distributor, faa o seguinte:
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. D um clique na instncia SERVIDOR\SRVINST01 para selecion-la.
5. Selecione o comando Tools -> Wizards.
5. Na janela Select Wizard, d um clique no sinal de mais ao lado da opo Replication.
6. Nas opes que surgem, d um clique na opo Configure Publishing and Distribution Wizard.
7. D um clique no boto OK para iniciar o assistente. Surgir a tela inicial do assistente, que
informa as tarefas que sero executadas.
8. D um clique no boto Avanar (Next), seguindo para a prxima etapa do assistente.
Na segunda etapa devemos selecionar qual o Servidor\instncia atuar como Distributor. Podemos
utilizar a instncia SERVIDOR\SRVINST01 como Publisher e tambm Distributor, ou podemos selecionar
um outro Servidor\instncia para atuar como Distributor.
Para que possamos selecionar um outro Servidor\instncia como Distributor, o mesmo j deve ter sido
previamente configurado como um Distributor e tambm deve estar registrado no Enterprise Manager.
9. No nosso exemplo, vamos utilizar a instncia SERVIDOR\SRVINST01 como Publisher e tambm
Distributor. Para isso, deixe a primeira opo selecionada, conforme indicado na Figura 8.12.
Ao criarmos um novo Distributor, ao invs de utilizar um j existente, o assistente ir efetuar as
configuraes necessrias (Distribution database e log), para preparar o servidor selecionado
como distributor.
10. D um clique no boto Avanar (Next). Nesta terceira etapa ser definida a pasta onde sero
armazenadas cpias dos dados (Snapshots) recebidas do Publisher. Por padro, sugerida a
seguinte localizao:
\\SERVIDOR\D$\Arquivos de programas\Microsoft SQL Server\MSSQL$SRVINST01\ReplData
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
445 CURSO COMPLETO00
Figura 8.12 Definindo um novo Distributor.
Observe que utilizamos o caminho de rede e no um drive do tipo D:\. No exemplo, temos o SQL Server
instalado no drive D:, o qual acessado atravs do compartilhamento administrativo D$. Por padro, o
Windows 2000 compartilha a raiz de todos os drives com um nome de compartilhamento Drive$ C$, D$,
E$, etc. Este compartilhamento somente pode ser acessado por usurios com permisso de administrador
no Windows 2000. Se mantivermos o caminho padro, o qual utiliza o compartilhamento administrativo,
pode ser que agentes rodando em outros servidores no possam acessar este compartilhamento e a replicao
venha a falhar. Neste caso, voc deve criar manualmente um novo compartilhamento, atribuir as permisses
NTFS necessrias e informar o caminho nesta etapa. Na Figura 8.13 temos a tela de aviso que surge quando
utilizamos um compartilhamento administrativo do tipo D$.
Figura 8.13 Aviso quando utilizamos um compartilhamento administrativo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
446 00CURSO COMPLETO
Para maiores informaes sobre permisses NTFS e permisses de compartilhamento no Windows 2000, consulte o livro Microsoft
Windows 2000 Server Curso Bsico & Rpido, de minha autoria, publicado pela Axcel Books (www.axcel.com.br). Para maiores
informaes sobre segurana no SQL Server 2000 consulte o Captulo 6 do presente livro.
O restante do caminho a pasta onde o SQL Server 2000 instalado por padro: Arquivos de
programas\Microsoft SQL Server\MSSQL$SRVINST01\ReplData. Observe que temos a pasta
MSSQL$SRVINST01. Cada instncia do SQL Server 2000 instalada em uma pasta separada.
No vamos alterar o caminho sugerido.
11. D um clique no boto Avanar (Next), seguindo para a prxima etapa do assistente.
12. Se surgir uma tela de aviso, d um clique no boto Yes para ir adiante.
Nesta etapa, podemos aceitar as configuraes-padro para a replicao ou podemos definir configuraes
personalizadas. As configuraes definidas, por padro, para o nosso exemplo, so as seguintes:
a. Configure SERVIDOR\SRVINST01 as a Publisher. Use SERVIDOR\SRVINST01 as the Distributor.
b. Use \\SERVIDOR\D$\Arquivos de programas\Microsoft SQL Server\MSSQL$SRVINST01\
ReplData as the root snapshot folder for Publishers using this Distributor.
c. Store the distribution database distribution in D:\Arquivos de programas\Microsoft SQL
Server\MSSQL$SRVINST01\Data.
d. Store the distribution database log file in D:\Arquivos de programas\Microsoft SQL
Server\MSSQL$SRVINST01\Data.
e. Enable the following servers as Subscribers to publications on SERVIDOR\SRVINST01:
SERVIDOR\SRVINST01
SERVIDOR\SRVINST02
Observe que estamos definindo a instncia SERVIDOR\SRVINST01 como Publisher e Distributor (a). Depois,
definida a pasta para os Snapshots serem armazenados (b). Em seguida, temos a definio da pasta para o
Banco de Dados do Distributor (c) e do Log do Banco de Dados do Distributor (d). A ltima opo (e),
define quais so os servidores autorizados a tornarem-se Subscribers do Publisher SERVIDOR\SRVINST01.
13. Aceite as configuraes-padro.
14. D um clique no boto Avanar (Next) para ir etapa seguinte do assistente. Surgir a tela final
do assistente, onde apresentado um resumo das opes selecionadas. Para alterar alguma
opo voc pode utilizar o boto Voltar (Back).
15. Para finalizar o assistente, d um clique no boto Finish (Concluir).
Surge uma tela indicando as etapas que esto sendo processadas. No final, emitida uma mensagem
informando que as configuraes foram finalizadas com sucesso.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
447 CURSO COMPLETO00
Observe a mensagem. Est sendo informado que SERVIDOR\SRVINST01 foi habilitado como Distributor
de SERVIDOR\SRVINST01, o qual o Publisher. O que acabamos de fazer configurar SERVIDOR\SRVINST01
como Publisher e Distributor. importante salientar que ainda no criamos nenhum Artigo, nem Publicao.
Portanto, ainda no estamos replicando dados. Apenas preparamos SERVIDOR\SRVINST01 para atuar
como Publisher e Distributor. Nos prximos itens, iremos criar Artigos e Publicaes.
16. D um clique no boto OK para fechar a mensagem. Surgir uma tela informando que devido
ao fato de SERVIDOR\SRVINST01 ter sido configurado como Distributor, foi adicionada uma
opo Replication Monitor arvore de opes do Enterprise Manager.
Podemos utilizar o Replicator monitor para as seguintes atividades:
Visualizar uma lista com os Publishers, Publicaes e subscries que so atendidas pelo Distributor.
Visualizar o agendamento, o status atual e o histrico de cada agente de replicao.
Definir e monitorar alertas relacionados a eventos de replicao.
17. D um clique no boto Close para fechar esta mensagem.
18. Voc estar de volta ao Enterprise Manager. Mantenha-o aberto.
Agora temos SERVIDOR\SRVINST01 configurado como Publisher e Distributor, porm o mesmo ainda
no tem nenhuma Publicao. Agora vamos utilizar o Replication monitor para verificar como foi
configurada a replicao na instncia SERVIDOR\SRVINST01.
Para verificar as configuraes de replicao:
1. Estando com o Enterprise Manager aberto, navegue at a instncia SERVIDOR\SRVINST01 e
d um clique no sinal de mais ao lado dela, para expandi-la.
2. Nas opes que surgem, d um clique no sinal de mais ao lado da opo Replication Monitor.
Sero exibidas as opes indicadas na Figura 8.14.
Figura 8.14 Opes do Replication Monitor.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
448 00CURSO COMPLETO
3. D um clique no sinal de mais ao lado de Publishers. Observe que exibido
SERVIDOR\SRVINST01 como o nico Publisher disponvel.
4. D um clique no sinal de mais ao lado de SERVIDOR\SRVINST01. Veja que aparece a opo
(No items). Como no configuramos nenhuma Publicao, aparece a opo No items, indicando
que SERVIDOR\SRVINST01 ainda no est publicando dados para replicao.
5. D um clique no sinal de mais ao lado da opo Agents. Sero exibidos os diversos agentes
responsveis pelas tarefas de replicao. Se clicarmos em qualquer um dos agentes veremos
que ainda no existe nenhum histrico de replicao, conforme indicado na Figura 8.15. Mais
uma vez cabe salientar: ainda no existe histrico dos agentes porque no temos nenhuma
Publicao e, portanto, os agentes ainda no foram acionados para replicar dados.
Figura 8.15 No temos, ainda, nenhuma histrico de execuo dos agentes.
Na opo Replication Alerts, podemos configurar alertas relacionados com eventos de replicao. Um
exemplo de alerta pode ser um e-mail sendo enviado para um administrador quando uma determinada
replicao finaliza com sucesso.
6. Feche o Enterprise Manager.
Agora que j temos um Publisher e um Distributor configurados, temos que partir para a criao de
uma ou mais publicaes. Mas este assunto para o prximo item.
KNOW-HOW EM: CRIAO DE PUBLICAES
PR-REQUISITOS
Conceitos tericos sobre replicao apresentados nos itens iniciais deste captulo.
Conhecer o modelo de replicao do SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
449 CURSO COMPLETO00
Para criar a publicao indicada na Tabela 8.3, faa o seguinte:
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique na instncia SERVIDOR\SRVINST01 para selecion-la.
5. Selecione o comando Tools -> Replication -> Create and Manage Publications. Surge a janela
Create and Manage Publications on SERVIDOR\SRVINST01, conforme indicado na Figura 8.16.
Observe que somente aparecem na listagem, os Bancos de Dados criados pelo usurio; no aparecem
os Bancos de Dados do sistema: master, msdb, pubs, etc.
Fundamentos apresentados na Parte I.
Saber utilizar o Enterprise Manager.
METODOLOGIA
Apresentao dos comandos e assistentes para a criao de publicaes.
TCNICA
Criar publicaes utilizando os comandos apresentados.
Uma Publicao define um conjunto de dados a ser replicado, formado por um ou mais Artigos de um
Banco de Dados. A Publicao a unidade bsica de replicao. Em outras palavras, o Subscriber se
inscreve em uma Publicao e no em um Artigo. Mesmo que somente tenhamos que replicar dados
de um nico Artigo, devemos criar uma Publicao e inclui-lo.
Podemos criar uma ou mais Publicaes em um Banco de Dados, porm uma publicao no pode
conter Artigos de diferentes Bancos de Dados. Agora aprenderemos a criar uma Publicao.
Exemplo:
Criar uma Publicao composta de trs artigos, conforme descrito na Tabela 8.3. A Publicao ser do
tipo Snapshot publication. Chamaremos Publicao1.
Tabela 8.3 Uma publicao com trs artigos.
Artigo Contedo
Art_Customers Toda a tabela Customers do Banco de Dados Northwind.
Art_Prod_Resumo As colunas: ProductID, ProductName, UnitPrice, UnitsInStock e ReorderLevel da tabela
Products do Banco de Dados Northwind. Neste caso estaremos aplicando um
filtro vertical.
Art_Pedidos_Brasil Somente os pedidos em que o campo ShipCountry for igual a Brazil, na tabela Orders
do Banco de Dados Northwind. Neste caso estamos aplicando um filtro horizontal.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
450 00CURSO COMPLETO
Figura 8.16 A janela Create and Manage Publications.
Tambm lembrando que uma Publicao somente pode conter um ou mais Artigos de um mesmo
Banco de Dados. No nosso exemplo, vamos criar uma Publicao que tem trs Artigos, com dados do
Banco de Dados NortwhWind, conforme indicado na Tabela 8.3.
6. D um clique em Northwind para selecion-lo, e depois d um clique no boto Create Publication.
Ser inicializado o assistente Create Publication Wizard, sendo exibida a tela inicial deste assistente.
Observe, que nesta tela, j informado que podemos publicar dados do Banco de Dados Northwind,
pois este era o Banco de Dados selecionado quando clicamos no boto Create Publication. Isto refora
o fato que uma Publicao pode conter somente Artigos com dados de um nico Banco de Dados. A
repetio proposital para que o amigo leitor no esquea este conceito.
7. Marque a opo Show advanced options in this wizard. Ao marcarmos esta opo, teremos
um nmero maior de opes a serem definidas nas demais etapas do assistente.
8. D um clique no boto Avanar (Next), para ir para a prxima etapa do assistente.
Na segunda tela do assistente, surge a listagem com os Bancos de Dados do usurio. Neste momento,
podemos optar por criar a Publicao baseada em dados de um outro Banco de Dados, que no o
originalmente selecionado. Observe que Northwind j vem selecionado.
Como nossa publicao ser baseada no Banco de Dados Northwind, no iremos fazer alteraes nesta etapa.
9. Certifique-se de que Northwind est selecionado na listagem de Banco de Dados; d um clique
no boto Avanar (Next) para seguir em frente.
Surge uma tela onde temos que definir de qual tipo de replicao ir participar a Publicao que est
sendo criada. Por padro, vem selecionada Snapshot publication.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
451 CURSO COMPLETO00
10. Certifique-se de que Snapshot publication esteja selecionada e d um clique no boto Avanar
(Next), para ir prxima etapa do assistente. Surge a janela indicada na Figura 8.17.
Figura 8.17 Configurando opes para atualizao no Subscriber.
Por padro, as replicaes do tipo Snapshot replication e Transactional replication somente permitem
alteraes no Publisher. Porm podemos modificar este comportamento padro, dependendo das
necessidades de cada caso. Nesta etapa do assistente, podemos definir se alteraes podem ser feitas
nos Subscribers. Em caso afirmativo, tambm podemos definir de que maneira estas alteraes sero
replicadas para o distributor.
Ns podemos selecionar uma das opes ou as duas opes disponveis nesta etapa. A seguir descrevo
o funcionamento de cada uma das opes:
Immediate Updating: Ao selecionarmos esta opo, Publisher e o Subscriber devem estar
conectados para que as atualizaes dos dados possam ser feitas no Subscriber.
Queued Updating: Neste caso, o Publisher e o Subscriber no precisam estar conectados para
que possam ser feitas alteraes no Subscriber. As alteraes so colocadas em uma fila (queue)
e executadas off-line.
Immediate Updating com Queued Updating as a Failover: Esta situao uma combinao das
duas anteriores e deve ser utilizada quando o Publisher e o Subscriber esto conectados na
maioria do tempo, mas existem perodos em que a comunicao interrompida. Quando
existe comunicao utilizada Immediate Updating, quando no existe comunicao utiliza-
se Queued Updating. Para habilitar esta opo, devemos marcar as duas opes desta etapa.
As opes selecionadas nesta etapa no podero ser alteradas depois que a Publicao for criada. Para alterar esta opo devemos
fazer com que todos os Subscribers cancelem as suas inscries, excluir a Publicao, cri-la novamente com as opes desejadas e
inscrever novamente todos os Subscribers.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
452 00CURSO COMPLETO
No nosso exemplo no vamos permitir alteraes nos Subscribers.
11. Certifique-se de que as opes Immediate Updating e Queued Updating estejam desmarcadas
e d um clique no boto Avanar (Next), seguindo para a prxima etapa do assistente.
Na etapa Transform Published Data, temos a opo de definir se queremos efetuar alguma transformao
nos dados que sero publicados. Por exemplo, pode ser que a matriz nos EUA queira converter os
valores que esto em dlares para reais, quando os dados so replicados para um servidor na filial do
Brasil. Qualquer transformao especificada estar sob controle do DTS Data Transformation Ser-
vices. Vimos o DTS em ao, no captulo anterior.
No vamos especificar nenhuma transformao.
12. Certifique-se de que a opo No, Subscribers receive data directly esteja selecionada, conforme
indicado na Figura 8.18. D um clique no boto Avanar (Next), para ir para a prxima etapa
do assistente.
Figura 8.18 No aplicaremos transformaes aos dados publicados.
Na etapa Specify Subscriber Types podemos definir quais os tipos de Subscribers que teremos para a
Publicao que est sendo criada. Observe que o Subscriber no precisa ser, obrigatoriamente, um
servidor SQL Server 2000. A opo Servers running SQL Server 2000, j vem marcada por padro.
13. Certifique-se de que apenas a opo Servers running SQL Server 2000 esteja selecionada. D
um clique no boto Avanar (Next), seguindo para a prxima etapa do assistente.
Surge uma tela onde podemos definir os Artigos que faro parte da Publicao, conforme indicado na
Figura 8.19. Os Artigos a serem criados foram definidos na Tabela 8.3.
Vamos comear definindo o seguinte artigo:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
453 CURSO COMPLETO00
Figura 8.19 Definindo os Artigos que faro parte da Publicao.
Artigo: Art_Customers.
Contedo: Toda a tabela Customers do Banco de Dados Northwind.
14. Para criar um novo Artigo, que inclui toda a tabela Customers, selecione Customers, na lista
de tabelas.
15. Para alterar as propriedades deste Artigo, d um clique duplo na tabela Customers. Surge a
janela indicada na Figura 8.20. Para abrir as propriedades de um Artigo, voc tambm pode dar
um clique no boto com as reticncias (...).
Figura 8.20 Propriedades do Artigo Art_Customers.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
454 00CURSO COMPLETO
16. No campo Name, digite: Art_Customers.
17. No campo Description, digite: Artigo que publica a tabela Customers, sem filtros.
Observe que podemos definir o dono e o nome da tabela de destino nos Subscribers. Por padro, o
nome da tabela de destino o mesmo da tabela de origem do Artigo.
Na guia Snapshot podemos definir uma srie de opes. Por exemplo, podemos definir qual o
comportamento deve ser adotado, caso a tabela de destino j exista, se vamos ou no incluir Clustered
indexes na replicao e assim por diante. Para uma descrio completa das opes da guia Snapshot,
basta clicar nesta guia e depois no boto Ajuda (Help).
18. D um clique no boto OK para fechar a janela com as propriedades do Artigo Art_Customers.
Voc estar de volta ao assistente.
Agora vamos definir o seguinte artigo:
Artigo: Art_Prod_Resumo.
Descr.: As colunas: ProductID, ProductName, UnitPrice, UnitsInStock e ReorderLevel da tabela
Products do Banco de Dados Northwind. Neste caso estaremos aplicando um filtro vertical.
Neste momento vamos apenas definir que o Artigo baseado na tabela Products. O filtro ser definido em uma das prximas etapas do assistente.
19. Para criar um novo Artigo, baseado na tabela Products, selecione Products, na lista de tabelas.
20. Para alterar as propriedades deste Artigo, d um clique duplo na tabela Products. Surge a janela
indicada na Figura 8.21. Para abrir as propriedades de um Artigo, voc tambm pode dar um
clique no boto com as reticncias (...).
21. No campo Name, digite: Art_Prod_Resumo.
22. No campo Description, digite: Artigo que publica a tabela Products, com filtro vertical.
Observe que podemos definir o dono e o nome da tabela de destino nos Subscribers. Por padro, o
nome da tabela de destino o mesmo da tabela de origem do Artigo.
Na guia Snapshot podemos definir uma srie de opes. Por exemplo, podemos definir qual o
comportamento deve ser adotado, caso a tabela de destino j exista, se vamos ou no incluir Clustered
indexes na replicao e assim por diante. Para uma descrio completa das opes da guia Snapshot,
basta clicar nesta guia e depois no boto Ajuda (Help).
Voc deve ter observado que nesta etapa no existe a opo de definirmos filtros, verticais ou horizontais. Estas opes estaro
disponveis em uma das prximas etapas do assistente. Neste momento apenas definimos os Artigos, com qual tabela cada qual est
relacionado e as propriedades de cada Artigo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
455 CURSO COMPLETO00
Figura 8.21 Propriedades do Art_Prod_Resumo.
23. D um clique no boto OK para fechar a janela com as propriedades do artigo Art_Prod_Resumo.
Voc estar de volta ao assistente.
Agora vamos definir o seguinte artigo:
Artigo: Art_Pedidos_Brasil
Descrio: Somente os pedidos em que o campo ShipCountry for igual a Brazil, na tabela
Orders do Banco de Dados Northwind. Neste caso, estamos aplicando um filtro horizontal.
Neste momento vamos apenas definir que o Artigo baseado na tabela Orders. O filtro ser definido em uma das prximas etapas do assistente.
24. Para criar um novo artigo, baseado na tabela Orders, selecione Orders, na lista de tabelas.
25. Para alterar as propriedades deste artigo, d um clique duplo na tabela Orders. Surge a janela
indicada na Figura 8.22. Para abrir as propriedades de um artigo, voc tambm pode dar um
clique no boto com as reticncias (...).
26. No campo Name, digite: Art_Pedidos_Brasil.
27. No campo Description, digite: Artigo que publica a tabela Orders, com filtro horizontal.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
456 00CURSO COMPLETO
Figura 8.22 Propriedades do Art_Pedidos_Brasil.
Observe que podemos definir o dono e o nome da tabela de destino nos Subscribers. Por padro, o
nome da tabela de destino o mesmo da tabela de origem do Artigo.
Na guia Snapshot podemos definir uma srie de opes. Por exemplo, podemos definir qual o
comportamento deve ser adotado, caso a tabela de destino j exista, se vamos ou no incluir Clustered
indexes na replicao e assim por diante. Para uma descrio completa das opes da guia Snapshot,
basta clicar nesta guia e depois no boto Ajuda (Help).
28. D um clique no boto OK para fechar a janela com as propriedades do artigo Art_Ped_Brasil.
29. D um clique no boto Avanar, seguindo para a prxima etapa do assistente. O SQL Server faz
uma anlise no conjunto de dados que est sendo publicado.
Ao publicarmos o Banco de Dados Northwind, aps a anlise feita pelo SQL Server 2000, surge a tela
indicada na Figura 8.23.
Esta mensagem informa que estamos incluindo na replicao uma coluna do tipo IDENTITY. A seguir
transcrevo a mensagem completa:
Because this publication does not allow updatable subscriptions, when IDENTITY columns are
transferred to the Subscriber, the IDENTITY property will not be transferred. (For example, a
column defined as INT IDENTITY at the Publisher will be defined as INT at the Subscriber.)
If you want the IDENTITY property transferred to the subscription table, you must do the following:
Create the subscription table manually using the IDENTITY property and the NOT FOR
REPLICATION option. You can have SQL Server execute a custom script to perform this action
before the snapshot is applied. To specify a custom script, create the publication, create the
script, and enter the script name on the Snapshot tab of the publication properties.
Set the name conflicts article property so that SQL Server does not drop an existing table when
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
457 CURSO COMPLETO00
Figura 8.23 Mensagem emitida aps a anlise pelo SQL Server 2000.
A mensagem tambm informa que as tabelas Orders e Products tm campos do tipo IDENTITY. O
problema encontrado pelo SQL Server 2000, deve-se ao fato que no estamos autorizando alteraes
nos Subscribers, conforme configurado nas etapas iniciais do assistente. Quando no so permitidas
atualizaes nos Subscribers, a propriedade IDENTITY de um campo no ser transferida para os Sub-
scribers. A soluo criar a tabela manualmente em cada Subscriber, definir o campo como sendo do
tipo IDENTITY e marcar a opo NOT FOR REPLICATION.
30. D um clique no boto Avanar, para ir para a prxima etapa do assistente, na qual podemos
definir o nome da Publicao e um comentrio para a mesma.
31. No campo Publication name, digite: Publicao1.
32. No campo Publication description, digite: Publica a tabela Customers, a tabela Products com
um filtro vertical e a tabela Orders com um filtro horizontal.
33. D um clique no boto Avanar, seguindo para a prxima etapa do assistente.
34. Nesta etapa devemos selecionar a opo Yes, I will define data filters, enable anonymous
subscriptions, or customize other properties, para que possamos definir filtros para os Artigos
criados anterioremente. Certifique-se de que esta opo esteja selecionada, e clique em Avanar.
Nesta etapa devemos indicar quais os tipos de filtro queremos definir. No nosso exemplo, vamos
definir um filtro vertical no Artigo Art_Prod_Resumo e um filtro horizontal no Artigo Art_Pedidos_Brasil.
applying the snapshot at the Subscriber. This property is on the Snapshot tab of article properties.
The following published tables contain IDENTITY columns:
[dbo].[Orders]
[dbo].[Products]
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
458 00CURSO COMPLETO
66. Selecione as duas opes desta etapa, conforme indicado na Figura 8.24 e clique no boto Avanar..
Figura 8.24 Vamos definir filtros verticais e horizontais.
Nesta etapa temos uma janela com dois painis. No painel da direita, temos a lista dos artigos definidos
anteriormente. Ao selecionarmos um artigo no painel da esquerda, podemos definir as opes de
filtragem no painel da direita, conforme indicado na Figura 8.25. Nesta etapa podemos definir filtros
verticais. Selecionamos um artigo no painel da esquerda e no painel da direita desmarcamos as colunas
que no devem ser replicadas.
Figura 8.25 Etapa para a definio dos filtros verticais.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
459 CURSO COMPLETO00
Agora vamos definir um filtro vertical no Artigo Art_Prod_Resumo, para especificar que somente sejam
replicadas as colunas ProductID, ProductName, UnitPrice, UnitsInStock e ReorderLevel.
36. Para definir este filtro, d um clique em Art_Prod_Resumo, no painel da esquerda. No painel
da direita, desmarque os campos que no devem ser replicados. Deixe selecionados somente os
seguintes campos:
ProductID
ProductName
UnitPrice
UnitsInStock
ReorderLevel.
37. D um clique no boto Avanar para ir para a prxima etapa do assistente. Surge a janela
indicada na Figura 8.26.
Filtros horizontais so definidos na prxima etapa.
Figura 8.26 Etapa para a definio dos filtros horizontais.
Nesta etapa, temos a opo de definir os filtros horizontais. Lembrando que um filtro horizontal permite
que seja especificado um critrio, por exemplo ShipCountry = Brazil. Somente sero replicados os
registros que atenderem o critrio especificado. Por isso, com a filtragem horizontal replicado um
subconjunto de registros, enquanto na filtragem vertical replicado um subconjunto de colunas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
460 00CURSO COMPLETO
Agora vamos definir um filtro horizontal no Artigo Art_Pedidos_Brasil, para especificar que somente
sejam replicados os registros em que o campo ShipCountry for igual a Brasil.
38. Para definir este filtro, d um clique no Artigo Art_Pedidos_Brasil, para selecion-lo. Depois, d um
clique no boto com as reticncias (...) na linha deste Artigo. Surge a tabela indicada na Figura 8.27.
Figura 8.27 Definindo um filtro horizontal.
Para definir o filtro horizontal, basta completar o comando SQL, especificando um critrio na clusula
WHERE. O comando original o seguinte:
SELECT <published_columns> FROM <<TABLE>> WHERE
39. Complete este comando da seguinte maneira:
SELECT <published_columns> FROM <<TABLE>> WHERE <<TABLE>>.ShipCountry=Brazil
Este nada mais do que um comando SQL, onde podemos utilizar a clusula WHERE e os operadores OR, AND, NOT, LIKE, etc.
40. D um clique no boto OK para definir o filtro vertical. Observe que o filtro recm-definido j
informado na coluna Filter Clause.
41. D um clique no boto Avanar, seguindo para a prxima etapa do assistente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
461 CURSO COMPLETO00
Nesta etapa, podemos definir se iremos permitir ou no subscries annimas. Uma subscrio annima
um tipo de Pull subscription em que no so armazenadas informaes detalhadas a respeito da
subscrio e do Subscriber. Quem inicia a subscrio o Subscriber, sendo de responsabilidade deste
solicitar o envio das alteraes a partir do Distributor.
42. Certifique-se de que a opo No, allow only named subscriptions esteja selecionada e d um
clique no boto Avanar.
Nesta etapa, podemos definir um agendamento para que a replicao Snapshot acontea. Veja que este
o agendamento para o Snapshot agent. Este agente o responsvel por mover os dados a serem
replicados do Publisher para o Banco de Dados do Distributor. Ns temos um outro tipo de agendamento
que define quando os dados sero enviados do Distributor para um ou mais Subscribers (Push sub-
scriptions) ou quando o Subscriber puxar os dados do Distributor (Pull subscriptions).
43. Para definir um agendamento, clique no boto Change. Vamos definir que a replicao ocorra
diariamente, de 2 em 2 horas, conforme indicado na Figura 8.28.
Figura 8.28 Definindo o agendamento para a replicao.
44. D um clique no boto OK para definir o agendamento. Voc estar de volta ao assistente.
O agendamento da replicao criado como um Job. Ns iremos aprender a acessar e alterar as propriedades deste Job mais adiante.
45. D um clique no boto Avanar para tela final do assistente, onde apresentado um resumo
das opes selecionadas. Se voc quiser alterar alguma opo, s clicar no boto Voltar (Back).
46. D um clique no boto Finish (Concluir) para finalizar o assistente e criar a publicao.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
462 00CURSO COMPLETO
Surge uma mensagem indicando o progresso da criao da publicao, conforme indicado na Figura 8.29.
Figura 8.29 Janela indicando o progresso da criao da publicao.
No final, emitida uma mensagem informando que a publicao foi criada com sucesso.
Observe que nesta janela temos um boto Publication Properties. Podemos utilizar este boto para
alterar as propriedades da publicao recm criada.
47. D um clique no boto Close para fechar esta janela.
Voc estar de volta janela Create and Manage Publications on SERVIDOR\SRVINST01. Observe
que j aparece Publicao1, recm-criada, no Banco de Dados Northwind.
Observe que as demais opes desta janela esto habilitadas. Isto acontece porque agora temos uma
Publicao, e com isso podemos configurar, por exemplo, subscries para a mesma.
48. D um clique no boto Close para fechar esta janela.
49. Voc estar de volta ao Enterprise Manager. Feche-o.
Pode parecer longo o processo para criao de uma Publicao, mas medida que voc desenvolver
mais experincia com o SQL Server 2000 ver que este processo torna-se bastante simples, com a
utilizao do assistente.
Uma vez criada a Publicao, temos mais algumas tarefas para realizar at que a replicao esteja
funcionando. A primeira delas aprender a configurar um ou mais Subscribers para a Publicao que
criamos. Mas isto assunto para o prximo item.
KNOW-HOW EM: HABILITAO DE SUBSCRIBERS
PR-REQUISITOS
Conceitos tericos sobre replicao apresentados nos itens iniciais deste captulo.
Conhecer o modelo de replicao do SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
463 CURSO COMPLETO00
Ter criado Publicaes no item anterior.
Fundamentos apresentados na Parte I.
Saber utilizar o Enterprise Manager.
METODOLOGIA
Apresentao dos comandos e assistentes para configurao de um Subscriber.
TCNICA
Configurar um Subscriber utilizando o Enterprise Manager.
Criamos uma Publicao no item anterior. O objetivo da criao de uma publicao para que a
mesma possa ser replicada para um ou mais Subscribers. Aprenderemos neste item como habilitar
Subscriber e configurar subscries.
Podemos configurar trs tipos de subscries:
Pull subscriptions
Push subscriptions
Anonymous subscriptions
Iremos configurar a instncia SERVIDOR\SRVINST02 como um Subscriber da Publicao Publicao1,
criada no item anterior. Iremos configurar uma subscrio do tipo Push subscription. Este tipo de
subscrio configurada no Publisher, conforme descrito anteriormente. indicada para situaes nas
quais devemos fazer um gerenciamento centralizado das subscries. Porm no devemos esquecer
que neste tipo de subscrio, os agentes responsveis pela replicao rodam no Distributor, consumindo
memria e processamento deste servidor. Estas necessidades adicionais de memria e processamento
devem ser levadas em considerao.
Conforme descrito no incio deste item, o primeiro passo habilitarmos um ou mais Subscribers. Com
exceo de Anonymous subscriptions, para que possamos configurar uma subscrio, em primeiro
lugar, devemos habilitar um ou mais servidores para que os mesmos possam estar aptos a receber os
dados de uma ou mais Publicaes. Vamos iniciar habilitando a instncia SERVIDOR\SRVINST02 como
Subscriber para a Publicao1.
Exemplo:
Para habilitar a instncia SERVIDOR\SRVINST02 como Subscriber da Publicao Publicao1, faa o seguinte:
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique na instncia SERVIDOR\SRVINST01 para selecion-la.
5. Selecione o comando Tools -> Replication -> Configuring Publishing, Subscribers and Distribu-
tion. Surgir a janela Publisher and Distributor Properties SERVIDOR\SRVINST01.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
464 00CURSO COMPLETO
6. D um clique na guia Subscribers. Por padro, surge uma lista com as instncias registradas no
Enterprise Manager.
Nesta janela tambm podemos adicionar novos servidores. Para isso utilizamos o boto New. Ao
clicarmos neste boto, surge uma janela solicitando que informemos o tipo de Subscriber. Os tipos
disponveis so os seguintes:
SQL Server database
Microsoft Jet 4.0 Database (Microsoft Access)
OLE DB Data Source
ODBC Data Source
Podemos habilitar todos os servidores da lista como Subscribers, de uma s vez, clicando no boto
Enable All. Podemos habilitar um Subscriber simplesmente clicando na caixa de seleo ao lado do
nome do servidor. Para desabilitarmos, basta clicar novamente para desmarcar a caixa de seleo. Ao
desabilitarmos um Subscriber, as informaes sobre o mesmo sero excludas e o mesmo ter que ser
novamente adicionado (utilizando o boto New), para que possa ser habilitado. Antes de desabilitar
um Subscriber, o SQL Server 2000 emite uma mensagem de aviso, conforme indicado na Figura 8.30.
Figura 8.30 Aviso ao desabilitarmos um Subscriber.
No nosso exemplo, a instncia SERVIDOR\SRVINST02 j estava habilitada.
7. Para habilitar um novo servidor como Subscriber, d um clique no boto New. Surge a janela
para selecionar o tipo do novo Subscriber.
8. D um clique na opo SQL Server database para selecion-la e depois clique no boto OK.
9. Surge a janela Registerd SQL Server Properties, onde devemos informar o nome da instncia a
ser habilitada como Subscriber e tambm informaes de autenticao, conforme indicado na
Figura 8.31.
10. Se voc tiver um novo Subscriber a ser habilitado, digite as informaes necessrias e d clique no
boto OK. No meu caso, como as duas instncias instaladas no meu servidor (SERVIDOR\SRVINST01
e SERVIDOR\SRVINST02) j esto habilitadas, vou clicar em Cancelar.
11. Voc estar de volta a guia Subscribers. D um clique em OK para aplicar as alteraes configuradas.
12. Voc estar de volta ao Enterprise Manager. Feche-o.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
465 CURSO COMPLETO00
Figura 8.31 Informaes sobre o novo Subscriber que est sendo habilitado.
Agora que a instncia SERVIDOR\SRVINST02 j est habilitada como Subscriber, vamos configurar uma
subscrio do tipo Push subscription. Conforme descrito anteriormente, este tipo tem as seguintes caractersticas:
Com este tipo de subscrio, o Distributor responsvel por enviar as alteraes para um ou
mais Subscribers. Lembre que push significa empurrar e no puxar. Uma analogia que pode
ser utilizada que neste tipo de subscrio o Distributor que empurra, envia as alteraes
para um ou mais Subscribers.
Utilizamos Push subscriptions quando queremos ter um controle centralizado sobre o agendamento
das replicaes. muito mais fcil configurar vrias subscries em um nico servidor, no caso o
Distributor, do que ter que configurar a subscrio em diversos servidores, no caso, os diversos
Subscribers. do Distributor a iniciativa de enviar as alteraes para os Subscribers.
Assim como o Agente de replicao, servio responsvel por fazer a replicao, roda no Dis-
tributor ou no Publisher, dependendo de como foi feita a configurao da replicao. Devemos
ter em mente que este agente estar consumindo recursos como memria e processador no
Distributor ou no Publisher. Caso tenhamos um nmero considervel de Subscribers, devemos
planejar cuidadosamente esta necessidade de recursos de memria e processamento.
Antes de configurarmos a subscrio para a Publicao1, vamos excluir o Banco de Dados Northwind
da instncia SERVIDOR\SRVINST02. Vamos fazer isso para verificar se realmente s esto sendo
replicados os dados definidos pelos trs Artigos da Publicao1.
Para excluir o Banco de Dados Northwind da instncia SERVIDOR\SRVINST02: abra o Enterprise Man-
ager; navegue at o Banco de Dados Northwind da instncia SERVIDOR\SRVINST02; clique com o
boto direito do mouse em Northwind; no menu que surge d um clique em Excluir. Surge uma
mensagem pedindo confirmao, d um clique no boto Yes para confirmar a excluso.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
466 00CURSO COMPLETO
Agora vamos a um exemplo prtico.
Exemplo:
Configurar a instncia SERVIDOR\SRVINST02 como Subscriber da Publicao Publicao1 criada no
item anterior. Criar uma Subscrio do tipo Push subscription, ou seja, configurada a partir do Pub-
lisher, que no nosso caso a instncia SERVIDOR\SRVINST01.
Para criar a subscrio solicitada, faa o seguinte:
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique na instncia SERVIDOR\SRVINST01 para selecion-la.
5. Selecione o comando Tools -> Replication -> Push Subscriptions to Others.
Surge a janela Create and Manage Publications on SERVIDOR\SRVINST01. Observe que existe uma peque-
na mo segurando o Banco de Dados Northwind. Esta mo indica que existe uma ou mais Publicaes
neste Banco de Dados. Na verdade, existe apenas a Publicao1 que criamos no item anterior.
6. D um clique no sinal de mais ao lado de Northwind para exibir as Publicaes deste Banco de Dados.
7. Nas opes que surgem, d um clique em Publicao1, e clique no boto Push New Subscription.
Ser iniciado o assistente Push Subscription Wizard.
8. Marque a opo Show advanced options in this wizard e clique no boto Avanar.
Nesta etapa podemos fazer a subscrio para os servidores que foram habilitados como Subscribers. No
nosso exemplo, temos a instncia SERVIDOR\SRVINST01 e a instncia SERVIDOR\SRVINST02 habilitadas.
9. Vamos inscrever a instncia SERVIDOR\SRVINST02 como Subscriber. Para isso, d um clique
na mesma, abaixo da opo Enabled Subscribers, conforme indicado na Figura 8.32. Depois,
clique no boto Avanar para ir para a prxima etapa do assistente.
Nesta etapa podemos definir qual o Banco de Dados no Subscriber que ir receber os dados. Podemos
inclusive criar um novo Banco de Dados para receber os dados. Observe que, por padro, o nome do
Banco de Dados sugerido o mesmo do original, no qual foi criada a Publicao. Voc pode digitar o
nome de um outro Banco de Dados existente, conforme indicado na Figura 8.33.
Vamos criar um novo Banco de Dados chamado NorthwindRepl, o qual ir receber os dados replicados
a partir da publicao Publicao1.
10. Para criar o NorhwindRepl, d um clique no boto Browse or Create.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
467 CURSO COMPLETO00
Figura 8.32 Inscrevendo SERVIDOR\SRVINST02 como Subscriber da Publicao1.
Figura 8.33 Definindo o Banco de Dados no Subscriber.
Surge uma janela onde so exibidos os Bancos de Dados de usurio, da instncia SERVIDOR\SRVINST02.
11. D um clique no boto Create New. Surge a tela para criao de um novo Banco de Dados.
Aprendemos a utilizar esta tela no Captulo 3. Caso voc tenha alguma dvida volte ao Captulo
3 e revise os procedimentos para criao de um Banco de Dados.
12. Crie um Banco de Dados com as caractersticas indicadas na Tabela 8.4.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
468 00CURSO COMPLETO
Antes de criar este Banco de Dados, a pasta C:\livrosql\NorthwindRepl j deve existir, seno ser gerado um erro.
Tabela 8.4 O Banco de Dados NorthWindRepl.
A criao de um novo Banco de Dados para receber os dados replicados no , de maneira alguma, necessria. Poderamos utilizar um
Banco de Dados j existente. Optamos por criar um novo Banco de Dados para salientar a execuo deste procedimento.
Arquivo Definies
Primrio C:\livrosql\ NorthWindRepl \NorthwindRepl-prim.mdf.
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 10 MB.
Secundrio C:\livrosql\NorthWindRepl\NorthwindRepl-sec1.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 100 MB.
Secundrio C:\livrosql\NorthWindRepl\NorthwindRepl-sec2.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 10 MB.
Arquivo de log C:\livrosql\NorthWindRepl\NorthwindRepl-log1.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 10 MB.
Arquivo de log C:\livrosql\NorthWindRepl\NorthwindRepl-log2.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 10 MB.
Arquivo de log C:\livrosql\NorthWindRepl\NorthwindRepl-log3.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 10 MB.
13. D um clique no boto OK.
Aps criar o Banco de Dados NorthwindRepl, o mesmo passa a ser exibido na listagem de Bancos de
Dados do usurio.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
469 CURSO COMPLETO00
14. D um clique em NorthwindRepl para selecion-lo, conforme indicado na Figura 8.34 e clique
em OK, depois em Avanar.
Figura 8.34 O Banco de Dados NorthwindRepl recm-criado.
Nesta etapa poderemos definir se o agente de replicao deve rodar no Distributor ou no Subscriber, sendo
que esta ltima opo somente suportada para Subscribers que utilizem o Windows 2000 ou o Windows NT.
15. Vamos rodar o agente no Distributor, conforme indicado na Figura 8.35.
Figura 8.35 Rodando o agende de replicao no Distributor.
16. D um clique no boto Avanar (Next) para ir para a prxima etapa do assistente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
470 00CURSO COMPLETO
Nesta etapa podemos definir um agendamento ou selecionar a opo Continuosily, a qual replica as
alteraes para o Subscriber assim que as mesmas ocorrem no publisher. No nosso caso, vamos definir
um agendamento para que a replicao ocorra diariamente de hora em hora.
17. Clique no boto Change e configure o agendamento conforme indicado na Figura 8.36. Depois
clique em OK para definir o agendamento
Figura 8.36 Replicao diria de hora em hora.
Para a definio do agendamento, devemos considerar a necessidade de atualizao dos dados e, principalmente, a existncia de links
de WAN conectando Subscribers remotos. Lembre que estamos configurando uma replicao do tipo Snapshot, na qual todo o conjunto
de dados enviado a cada replicao.
18. Voc estar de volta ao assistente. Clique em Avanar (Next), seguindo para a prxima etapa.
Nesta etapa informamos que a primeira vez que a replicao est sendo configurada e que, portanto,
o Snapshot agent deve preparar o servidor para a replicao. O agente realiza uma srie de aes para
viabilizar a replicao.
19. Certifique-se de que as opes esto selecionadas conforme indicado na Figura 8.37, e clique
em Avanar.
Nesta etapa, exibido o status do servio SQL Server Agent no Publisher (SERVIDOR\SRVINST01). Este
servio est em funcionamento (Running).
20. D um clique no boto Avanar (Next), para ir para a tela final do assistente, onde apresentado
um resumo das opes selecionadas. Se voc quiser alterar alguma opo s clicar no boto
Voltar (Back).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
471 CURSO COMPLETO00
Figura 8.37 Inicializando o agente de replicao.
21. D um clique no boto Finish (Concluir) para finalizar o assistente e criar a subscrio.
Surge uma mensagem indicando o progresso da criao da subscrio.
No final, emitida uma mensagem informando que a subscrio foi criada com sucesso.
22. D um clique no boto Close para fechar esta janela.
23. Voc estar de volta janela Create and Manage Publications on SERVIDOR\SRVINST01. D
um clique no boto Close para fechar esta janela.
24. Voc estar de volta ao Enterprise Manager. Feche-o.
Agora vamos verificar as modificaes que foram introduzidas em SERVIDOR\SRVINST01 aps termos
configurado a replicao. Veremos os agentes que foram implementados, o histrico de replicao dos
agentes. Depois verificaremos se os dados foram realmente replicados.
OS AGENTES CRIADOS PARA A REPLICAO EM SERVIDOR\SRVINST01
Vamos conferir quais os agentes que foram criados em SERVIDOR\SRVINST01 para dar suporte
replicao do tipo Snapshot que configuramos nos exerccios anteriores. Para isso utilizaremos a opo
Replication monitor da instncia SERVIDOR\SRVINST01. Tambm iremos verificar o histrico de
execuo destes agentes, para sabermos se a replicao j foi efetuada.
Exemplo:
Para verificar quais agentes foram criados e verificar o histrico de execuo do agente, faa o seguinte:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
472 00CURSO COMPLETO
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Repli-
cation Monitor para expandi-la.
6. Nas opes que surgem, abaixo de Replication Monitor, d um clique no sinal de mais ao lado
da opo Agents, para exibir as categorias de agentes disponveis.
7. Nas opes que surgem, d um clique na opo Snapshot Agents.
8. No painel da direita, exibida uma listagem com os Snapshot agents que foram criados. Como
temos uma nica Publicao, aparece um nico agente nesta listagem, conforme indicado na
Figura 8.38.
Figura 8.38 Snapshot Agent para a publicao Publicao1.
Agora vamos verificar o histrico de execuo do agente.
9. D um clique com o boto direito do mouse no agente Publicao1. No menu que surge, d
um clique na opo Agent History.
exibida a janela Snapshot Agent History, conforme indicado na Figura 8.39. No nosso exemplo,
observe que o agente foi executado uma nica vez.
Para ver detalhes sobre a execuo do agente, d um clique no boto Session Details. Ser exibida uma
janela com uma srie de informaes sobre a execuo do agente, conforme indicado na Figura 8.40.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
473 CURSO COMPLETO00
Figura 8.39 A janela Snapshot Agent History.
Figura 8.40 Detalhes sobre a execuo do Snapshot Agente Publicao1.
Na lista Show, na janela Snapshot Agent History, podemos filtrar quais execues devem ser exibidas, no
caso do agente j ter sido executado diversas vezes. As opes de filtragem esto indicadas na Figura 8.41.Para
ativar um filtro, basta selecionar uma das opes desta lista e depois clicar no boto Apply Filter.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
474 00CURSO COMPLETO
Figura 8.41 Opes para filtrar o histrico de execuo do agente.
10. D um clique no boto Close para fechar a janela Snapshot Agent History.
Voc estar de volta ao Enterprise Manager, com a opo Snapshot Agents selecionada.
Lembre que o nosso agente est programado, ou melhor, agendado para executar de duas em duas
horas. Ao executar, o agente transmite toda a publicao Publicao1 do Publisher para o Distributor.
Devemos observar que transmitida toda a Publicao e no somente os dados que foram alterados,
pois estamos utilizando uma replicao do tipo Snapshot replication.
Podemos fazer com que o agente seja executado imediatamente. Para isso basta clicar com o boto
direito do mouse no agente e no menu de opes clique em Start Agent. Tambm convm lembrar que
para a replicao do tipo Snapshot replication, o Snapshot agent roda no Distributor. Quando o agente
executado, o mesmo se conecta com o Publisher, faz um lock nas tabelas que fazem parte da Publicao
e copia os dados do Publisher para o Distributor. Uma vez encerrada a cpia dos dados, o lock nas
tabelas liberado, para que os usurios voltem a ter acesso s tabelas. Devido ao lock que colocado
nas tabelas, pelo Snapshot agent, devemos planejar cuidadosamente este agendamento. Vamos supor
que o agente rode s 15h, quando a sua empresa est a pleno funcionamento. Se o agente demorar
meia-hora para completar o seu trabalho, os usurios no podero acessar os dados das tabelas que
esto com lock por meia-hora, o que pode ser inaceitvel.
11. Clique com o boto direito do mouse no agente e depois clique na opo Start Agent, para
fazer com que o mesmo seja executado imediatamente.
12. Aps encerrada a execuo (coluna Status troca de Running para Succedded), d um clique com
o boto direito do mouse no agente e no menu que surge, d um clique na opo Agent History.
Observe que a ltima execuo, j aparece no histrico de execuo do agente, conforme indicado na
Figura 8.42.
Tambm podemos alterar a programao de execuo do agente. Lembrando que quando criamos a
Publicao, programamos o agente para executar todos os dias de duas em duas horas. Vamos alter-lo para
que o mesmo execute todos os dias, porm de trs em trs horas e somento do perodo das 8h s 22h.
Vamos alterar o agendamento.
13. D um clique com o boto direito do mouse no agente Publicao1. No menu de opes que
surge, d um clique na opo Agent Properties.
14. Na janela que surge, d um clique na guia Schedules. Surge a janela na qual est listado o
agendamento criado anteriormente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
475 CURSO COMPLETO00
Figura 8.42 O histrico de execues do Snapshot agent, atualizado.
15. Para alterar o agendamento, d um clique no mesmo para marc-lo e depois d um clique no
boto Edit.
16. Na janela que surge, d um clique no boto Change, para alterar o agendamento.
17. Na janela para configurao do agendamento, configure as opes conforme indicado na
Figura 8.43. Depois clique em OK para fech-la.
Figura 8.43 Alterando o agendamento.
18. Voc estar de volta janela Edit Job Schedule..... D um clique em OK para fech-la.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
476 00CURSO COMPLETO
Voc estar de volta janela com as propriedades do Snapshot Agent.
Cabe ressaltar que possvel criar mais do que um agendamento para o mesmo agente. Para criar um
novo agendamento, basta clicarmos no boto New Schedule e informar os dados para o novo
agendamento. Voc deve estar se perguntando por que teramos mais de um agendamento para um
agente? Vamos a um exemplo. Suponhamos que o agente deva rodar todos os dias, de duas em duas
horas e tambm nas segundas, quartas e sextas-feiras, s 23h30. Para definir este tipo de agendamento,
s criando dois agendamentos diferentes. Um define a execuo diria de duas em duas horas. O outro
agendamento define a execuo s segundas, quartas e sextas-feiras, s 23h30.
19. Clique na guia Notifications. Surgir a janela para definio de notificaes.
20. Nesta janela podemos definir as chamadas Notificaes que devem ser enviadas quando o
Job executa com sucesso ou em caso de falha. Podemos ter os seguintes tipos de notificaes,
no mutuamente excludentes:
E-mail operator: Esta opo permite que seja enviada uma mensagem de e-mail para o
administrador responsvel pelo SQL Server 2000. Para que a mensagem possa ser enviada
precisamos do servio SMTP (Simple Message Transport Protocol), instalado no servidor.
Este servio faz parte do IIS 5.0 e pode ser instalado utilizando-se a opo Adicionar ou
Remover Programas do Painel de controle. Caso o servidor tenha o Exchange Server
instalado, no ser necessrio o SMTP Service que vem com o IIS 5.0.
Page operator: Permite que seja enviado um aviso para um pager. O software de comunicao
com o pager deve ser fornecido pelo fabricante do equipamento.
Net send operator: uma mensagem enviada utilizando-se o comando Net Send do Win-
dows 2000. A mensagem aparece na forma de uma janela na mquina onde o destinatrio
est logado.
Write to Windows Application event log: Esta opo faz com que um evento seja gravado no
log de aplicaes do Windows 2000. Para visualizar o log do Windows 2000 utilize o console
Visualizar Eventos (Iniciar -> Programas -> Ferramentas Administrativas -> Visualizar Eventos).
Automatically delete job: Exclui o Job aps a execuo ou falha do mesmo, dependendo
das configuraes selecionadas.
Vamos definir um operador do tipo E-mail operator.
21. D um clique na opo E-mail operator para selecion-la.
22. Como ainda no definimos nenhum operador, surge uma janela avisando que no existe
nenhum operador definido e perguntando se desejo criar um novo operador. D um clique no
boto Sim para confirmar a criao de um novo operador.
Se voc j tiver definido E-mail operators anteriormente, ao marcar esta opo, voc pode selecionar um operador na lista de operadores.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
477 CURSO COMPLETO00
23. Surge a janela New Operator Properties SERVIDOR\SRVINST01. Nesta janela vamos criar
um novo operador. Na guia General digite as informaes indicadas ns Figura 8.44. Depois,
clique no boto OK para criar o operador.
Figura 8.44 Criando um novo operador.
24. Voc estar de volta guia Notifications. Na lista ao lado do boto de reticncias (...), selecione
When the jobs succeeds, para que o operador seja notificado toda vez que o Job for executado
com sucesso. Depois clique no boto OK para fechar a janela de propriedades do Snapshot
Agent Publicao1.
Voc estar de volta ao Enterprise Manager. Vamos ver quais os outros agentes que foram criados.
25. D um clique na opo Distribution Agents.
No painel da direita, exibido o agente responsvel por passar os dados do Distributor para o Sub-
scriber. Lembre que configuramos uma replicao do tipo Push subscriptions, na qual os dados so
empurrados do Distributor para um ou mais Subscribers. Neste caso, o responsvel por empurrar
os dados do Distributor para um ou mais Subscribers este Distributor agent, indicado na Figura 8.45.
Os passos para verificar o histrico de execuo, alterar o agendamento e definir operadores so os
mesmos para qualquer agente, conforme descrito anteriormente. Por exemplo, para verificar o histrico
de execuo deste Job, basta clicar com o boto direito do mouse no Job e no menu de opes que
surge d um clique na opo Agent History...
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
478 00CURSO COMPLETO
Figura 8.45 Distributor agent.
26. D um clique na opo Miscellaneous Agents. No painel da direita, exibida uma listagem
com uma srie de agentes que do suporte replicao.
27. Feche o Enterprise Manager.
J vimos que, ao habilitarmos a replicao, uma srie de modificaes foram feitas em
SERVIDOR\SRVINST01. Agora vamos verificar se os dados foram realmente replicados para o Banco de
Dados NorthwindRepl em SERVIDOR\SRVINST02. Os dados j devem ter sido replicados, pois conforme
conferimos no histrico de replicao, os agentes responsveis pela replicao executaram com sucesso.
Mas nunca demais dar uma conferida.
Tambm cabe lembrar que, na publicao Publicao1, que foi criada para a replicao, temos apenas
trs Artigos. Somente os dados dos Artigos so replicados e no todo o Banco de Dados Northwind de
SERVIDOR\SRVINST01. Apenas para recordar, os Artigos da Publicao1 esto definidos conforme
indicado na Tabela 8.5.
Tabela 8.5 Uma publicao com trs Artigos.
Exemplo:
Para verificar se os dados esto sendo replicados com sucesso, faa o seguinte:
Artigo Contedo
Art_Customers Toda a tabela Customers do Banco de Dados Northwind.
Art_Prod_Resumo As colunas: ProductID, ProductName, UnitPrice, UnitsInStock e ReorderLevel da tabela
Products do Banco de Dados Northwind. Neste caso estaremos aplicando um filtro vertical.
Art_Pedidos_Brasil Somente os pedidos em que o campo ShipCountry for igual a Brazil, na tabela Orders
do Banco de Dados Northwind. Neste caso estamos aplicando um filtro horizontal.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
479 CURSO COMPLETO00
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST02 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data-
bases para exibir os Bancos de Dados desta instncia.
6. D um clique no sinal de mais ao lado de NorthwindRepl, para exibir os objetos deste Banco
de Dados.
7. D um clique na opo Tables, para exibir as tabelas do Banco de Dados NorthwindRepl.
No painel da direita ser exibida uma listagem das tabelas. Esto includas nesta listagem tanto as
tabelas de sistema, criadas quando o Banco de Dados criado, quanto as tabelas replicadas a partir da
Publicao1. As tabelas replicadas so as seguintes:
Customers
Orders
Products
O nome das tabelas no Banco de Dados de destino, no precisa ser igual ao nome no Banco de Dados origem. Lembre que esta opo
configurada quando criamos a publicao. Para maiores detalhes, consulte o exerccio, neste captulo, onde criamos a publicao Publicao1.
8. Clique com o boto direito do mouse na tabela Orders, selecione o comando Open Table ->
Return all rows. Sero exibidos os registros da tabela Orders.
Observe que somente temos pedidos em que o campo ShipCountry = Brazil.
A tabela Orders replicada com base na definio de um Artigo em que especificamos um filtro hori-
zontal com o critrio ShipCountry=Brazil. Por isso que esto sendo replicados somente os pedidos
para o Brasil. Isto comprova que o nosso filtro e a replicao esto funcionando corretamente.
9. Feche a tabela Orders. Clique no boto x de baixo, pois se voc clicar no de cima ser fechado
o Enterprise Manager.
Vamos tambm conferir se a replicao da tabela Products est funcionando corretamente. Lembre que,
para esta tabela, definimos um filtro vertical, onde somente devem ser replicados os seguintes campos:
ProductID
ProductName
UnitPrice
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
480 00CURSO COMPLETO
UnitsInStock
ReorderLevel
10. Clique com o boto direito do mouse na tabela Products, selecione o comando Open Table ->
Return all rows. Sero exibidos os registros da tabela Products.
Observe que somente foram replicados os campos ProductID, ProductName, UnitPrice, UnitsInStock e
ReorderLevel.
Isto comprova que o nosso filtro vertical est funcionando corretamente.
11. Feche a tabela Products.
12. Feche o Enterprise Manager.
KNOW-HOW EM: CONFIGURAR SUBSCRIES DO TIPO PULL SUBSCRIPTIONS
PR-REQUISITOS
Conceitos tericos sobre replicao apresentados nos itens iniciais deste captulo.
Conhecer o modelo de replicao do SQL Server 2000.
Ter criado Publicaes no item anterior.
Fundamentos apresentados na Parte I.
Saber utilizar o Enterprise Manager.
METODOLOGIA
Apresentao dos comandos e assistentes para configurao de subscrio do tipo Pull subscription.
TCNICA
Configurar uma subscrio do tipo Pull subsciption utilizando o Enterprise Manager.
Pull subscriptions so configuradas no Subscriber, ou seja, o Subscriber que tomar a iniciativa de
solicitar que a replicao seja iniciada e os dados sejam enviados do Distributor para o Subscriber. Pull
significa puxar, ou seja, o subscriber puxa os dados que esto no distributor.
Com este tipo de subscrio deixamos o controle e o agendamento da replicao a cargo de cada Subscriber.
A administrao fica mais distribuda mas, ao mesmo tempo, damos maior liberdade para cada Subscriber.
Por exemplo, localidades ligadas por links mais lentos podem programar a replicao em perodos mais
espaados (maior latncia na atualizao dos dados). Este tipo de subscrio tambm indicada para usurios
mveis. Por exemplo, um vendedor que, ao atender o cliente, conecta-se rede da empresa, utilizando uma
linha telefnica e dispara uma replicao (puxa) para atualizar uma tabela de preos.
Para Pull subscriptions o agente de replicao roda no Subscriber, consumindo memria e processador
deste equipamento.
Exemplo:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
481 CURSO COMPLETO00
Vamos criar uma subscrio do tipo Pull subscription em SERVIDOR\SRVINST02. Esta subscrio ser
baseada na publicao Publicao1 no Publisher SERVIDOR\SRVINST01. Os dados repicados sero
armazenados no Banco de Dados NorthwindPull, o qual ser criado durante o processo de configurao
da subscrio. Agendaremos esta subscrio para replicar diariamente, de 6 em 6 horas. Neste exemplo
o Publisher SERVIDOR\SRVINST01 e o Subscriber SERVIDOR\SRVINST02. Quem iniciar a replicao
SERVIDOR\SRVINST02, pois uma Pull subscription. Dizemos que SERVIDOR\SRVINST02 puxa
os dados do Distributor.
Para criar a subscrio do tipo Pull subscription solicitada, faa o seguinte:
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique na instncia SERVIDOR\SRVINST02 para selecion-la.
5. Selecione o comando Tools -> Replication -> Pull subscription to SERVIDOR\SRVINST02.
6. Surge a janela Pull Subscription to SERVIDOR\SRVINST02. Para criar uma nova Pull subscrip-
tion para a instncia SERVIDOR\SRVINST02, d um clique no boto Pull New Subscription,
conforme indicado na Figura 8.46.
Figura 8.46 Criando uma nova Pull subscription.
Nesta tela voc pode definir para qual Banco de Dados sero replicados os dados, ou seja, qual o Banco de Dados de destino em
SERVIDOR\SRVINST02. No nosso caso vamos replicar para um novo Banco de Dados. Criaremos este Banco de Dados em uma das etapas
do assistente para criao da Pull subscription.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
482 00CURSO COMPLETO
7. iniciado o assistente Pull Subscription Wizard. Na tela inicial, marque a opo Show ad-
vance options in this wizard e d um clique no boto Avanar (Next), para ir para a prxima
etapa do assistente.
Nesta etapa do assistente devemos definir se queremos nos inscrever em uma Publicao de um servidor
SQL Server, ou uma publicao de um Publisher que est integrada com o Active Directory do Windows
2000. Somente Publishers que rodam o SQL Server 2000 podem estar integrados com o Active Directory.
8. Certifique-se de que a opo Look at publications from registered servers est selecionada e
clique em Avanar.
9. Nesta etapa devemos especificar para qual publicao estamos nos inscrevendo. D um clique
no sinal de mais ao lado de SERVIDOR\SRVINST01. Na lista de publicaes, selecione
Publicao1 e clique em Avanar para prosseguir.
Nesta etapa devemos definir qual o Banco de Dados que ir receber os dados replicados. Podemos
inclusive criar um novo Banco de Dados, para isso utilizamos o boto New.
Vamos criar um novo Banco de Dados chamado NorthwindPull, o qual ir receber os dados replicados
a partir da Publicao Publicao1.
10. Clique no boto New.
Surge uma janela para criao de um novo Banco de Dados. Aprendemos a utilizar esta tela no Captulo
3. Caso voc tenha alguma dvida volte ao Captulo 3 e revise os procedimentos para criao de um
Banco de Dados.
Antes de criar este Banco de Dados, a pasta C:\livrosql\NorthwindPull j deve existir, seno ser gerado um erro.
Tabela 8.6 O Banco de Dados NorthwindPull.
Arquivo Definies
Primrio C:\livrosql\NorthwindPull\NorthwindPull-prim.mdf.
Crescimento automtico habilitado.
Tamanho inicial: 5 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 10 MB.
Secundrio C:\livrosql\NorthwindPull\NorthwindPull-sec1.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 5 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 100 MB.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
483 CURSO COMPLETO00
A criao de um novo Banco de Dados para receber os dados replicados no , de maneira alguma, obrigatria. Poderamos utilizar um
j existente. Optamos por criar um novo Banco de Dados para salientar a execuo deste procedimento.
11. Crie o Banco de Dados com as caractersticas indicadas na Tabela 8.6, e d um clique no boto
OK para voltar ao assistente.
12. Aps criar o Banco de Dados NorthwindPull, o mesmo passa a ser exibido na listagem de
Bancos de Dados do usurio. D um clique em NorthwindRepl para selecion-lo.
13. D um clique no boto Avanar (Next), para ir para a prxima etapa do assistente.
Nesta etapa temos somente a opo de inicializar a estrutura e os dados necessrios replicao, conforme
indicado na Figura 8.47.
14. D um clique no boto Avanar (Next), seguindo para a prxima etapa do assistente.
Nesta etapa podemos definir se vamos utilizar a pasta padro ou selecionar uma outra pasta para os
arquivos com os dados para a replicao Snapshot.
15. Utilize a pasta padro, conforme indicado na Figura 8.48.
16. D um clique no boto Avanar (Next), para ir para a prxima etapa do assistente.
Nesta etapa podemos definir um agendamento ou selecionar a opo Continuosily, a qual puxa as
alteraes para o Subscriber assim que as mesmas ocorrem no publisher. No nosso caso vamos definir
um agendamento para que a replicao ocorra diariamente de 3 em 3 horas.
17. Para isso, clique no boto Change e configure o agendamento conforme indicado na Figura
8.49. Depois clique em OK para defini-lo.
Arquivo Definies
Arquivo de log C:\livrosql\NorthwindPull\NorthwindPull-log1.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 5 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 10 MB.
Arquivo de log C:\livrosql\NorthwindPull\NorthwindPull-log2.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 5 MB.
Crescimento em incrementos de 5 %.
Tamanho mximo de 10 MB.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
484 00CURSO COMPLETO
Figura 8.47 Inicializando a estrutura necessria replicao.
Figura 8.48 Utilizando a pasta padro.
Para a definio do agendamento devemos considerar a necessidade de atualizao dos dados e, principalmente, a existncia de links de
WAN conectando Subscribers remotos. Lembre que estamos configurando uma replicao do tipo Snapshot, na qual todo o conjunto de dados
enviado a cada replicao, o que pode fazer com que um grande volume de dados tenha que ser enviado atravs da links de WAN.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
485 CURSO COMPLETO00
Figura 8.49 Replicao diria de 3 em 3 horas.
18. Voc estar de volta ao assistente. D um clique no boto Avanar (Next) para ir para a prxima
etapa do assistente.
19. Nesta etapa exibido o status do servio SQL Server Agent no Subscriber (SERVIDOR\SRVINST02).
Este servio est em funcionamento (Running). Clique em Avanar (Next).
Voc estar na tela final do assistente, onde apresentado um resumo das opes selecionadas. Se voc
quiser alterar alguma opo s clicar no boto Voltar (Back).
20. D um clique no boto Finish (Concluir) para finalizar o assistente e criar a subscrio.
Surge uma mensagem indicando o progresso da criao da publicao.
No final, emitida uma mensagem informando que a subscrio foi criada com sucesso.
21. D um clique no boto OK para fechar esta janela.
Voc estar de volta janela Pull Subscription to SERVIDOR\SRVINST02, onde est indicado que
temos uma Pulls Subscription no Banco de Dados NorthwindPull, conforme indicado na Figura 8.50.
Observe que foram habilitados diversos botes. Por exemplo, podemos utilizar o boto Delete Sub-
scription para excluir uma subscrio.
22. D um clique no boto Close para fechar esta janela.
23. Voc estar de volta ao Enterprise Manager. Feche-o.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
486 00CURSO COMPLETO
Figura 8.50 Pull subscription recm criada.
Agora podemos verificar quais os agentes que foram criados em SERVIDOR\SRVINST02, vamos forar
uma replicao e conferir se os dados foram replicados. Mas isto assunto para o prximo item.
ANALISANDO A PULL SUBSCRIPTION CRIADA NO ITEM ANTERIOR
Vamos verificar quais agentes foram criados em SERVIDOR\SRVINST02. Como a inscrio que
configuramos uma Pull subscription, existem agentes rodando no Subscriber, o qual puxa (Pull) os
dados a partir do Distributor.
Para verificar o(s) agente(s) que foram criados em SERVIDOR\SRVINST02, faa o seguinte:
1. Abra o Enterprise Manager e navegue at a instncia SERVIDOR\SRVINST02.
2. D um clique no sinal de mais ao lado da opo Replication.
Observe que no Subscriber no temos a opo Replication monitor, a qual somente est disponvel no Subscriber/Distributor, que no
nosso caso SERVIDOR\SRVINST01.
3. Nas opes que surgem, d um clique em Subscriptions.
No painel da direita, so exibidos os Jobs responsveis pela subscrio criada no item anterior.
Para ver o histrico de execuo de um agente, basta clicar com o boto direito do mouse no agente e
no menu que surge, d um clique Job History.
Agora vamos verificar se os dados foram realmente replicados.
4. Abaixo da instncia SERVIDOR\SRVINST02, d um clique no sinal de mais ao lado da opo
Databases.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
487 CURSO COMPLETO00
5. Na lista de Bancos de Dados, d um clique no sinal de mais ao lado de NorthwindPull. Ser
exibida uma lista com os objetos do Banco de Dados NorthwindPull.
6. D um clique na opo Tables.
Observe que no painel da direita, alm das tabelas de sistema, tambm temos as tabelas: Customers,
Orders e Products. Estas contm os dados replicados a partir da Publicao Publicao1.
Observe tambm que foram criadas algumas tabelas que contm informaes necessrias replicao:
MSreplication_subscriptions, MSsubscription_agents e MSsubscription_properties, conforme indicado
na Figura 8.51.
Figura 8.51 Tabelas com informaes de suporte replicao.
7. D um clique com o boto direito do mouse na tabela Orders, e no menu que aparece selecione
o comando Open Table -> Return all rows. Observe que realmente foram replicados somente
os registros em que o campo ShipCountry igual a Brazil. Isto comprova que o filtro horizon-
tal est funcionando corretamente.
8. Feche o Enterprise Manager.
EXCLUINDO ELEMENTOS DA REPLICAO
Podemos facilmente remover subscries e Publicaes.
Para remover uma Publicao, basta navegar at a opo Replication Monitor, localiz-la, clicar com o
boto direito do mouse na Publicao e no menu que aparece, dar um clique na opo Excluir.
Para remover uma subscrio, temos que acessar as propriedades da Publicao correspondente. Uma
vez acessada estas propriedades, podemos definir se queremos excluir todas as subscries existentes
para a Publicao em questo, ou uma ou mais subscries a serem selecionadas.
Vamos remover a subscrio do tipo Pull subscription, que criamos anteriormente. Para isso, faa o seguinte:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
488 00CURSO COMPLETO
1. Abra o Enterprise Manager e navegue at a instncia SERVIDOR\SRVINST01.
2. Selecione o comando: Tools -> Replication -> Create and Manage Publications.
Ser exibida a janela Create and Manage Publications on SERVIDOR\SRVINST01.
3. Na lista de Bancos de Dados, d um clique no sinal de mais ao lado de Northwind.
4. Ser exibida a Publicao Publicao1. D um clique em Publicao1 para selecion-la.
5. D um clique no boto Properties and Subscriptions. Ser exibida a janela informando que
voc pode alterar as propriedades da Publicao ou excluir uma ou mais subscries.
6. D um clique no boto OK para abrir a janela de propriedades da Publicao Publicao1.
7. D um clique na guia Subscriptions.
Surge uma janela com uma listagem de todas as inscries existentes para a Publicao Publicao1.
Conforme podemos conferir na Figura 8.52, existem duas subscries: uma do tipo Push e outra do
tipo Pull. Justamente as duas que criamos nos exerccios anteriores.
Figura 8.52 Subscries para a publicao Publicao1.
8. Para excluir a Publicao Pull, que criamos anteriormente, d um clique sobre a mesma para
selecion-la, depois d um clique no boto Delete.
9. Surge uma janela pedindo confirmao da excluso. D um clique em Yes para confirmar.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
489 CURSO COMPLETO00
Voc estar de volta guia Subscriptions da janela de propriedades da Publicao Publicao1. Observe
que a subscrio, que foi excluda, j no aparece mais na listagem.
10. D um clique no boto OK para fechar a janela de propriedades.
11. Voc estar de volta janela Create and Manage Publications on SERVIDOR\SRVINST01. D
um clique no boto Close para fechar esta janela.
Voc estar de volta ao Enterprise Manager.
Ao excluirmos uma subscrio, o Banco de Dados de destino no ser excludo. No nosso exemplo, o
Banco de Dados de destino era NorthwindPull no Subscriber que, no nosso exemplo, era a instncia
SERVIDOR\SRVINST02.
Conforme pode ser observado, o Banco de Dados NorthwindPull no foi excludo ao excluirmos a subscrio.
12. Feche o Enterprise Manager.
KNOW-HOW EM: REPLICAO PARA OUTROS
TIPOS DE SUBSCRIBERS NO SQL SERVER 2000
PR-REQUISITOS
Conceitos tericos sobre replicao apresentados nos itens iniciais deste captulo.
Conhecer o modelo de replicao do SQL Server 2000.
Configuraes de replicao no SQL Server 2000 apresentadas nos itens anteriores.
Fundamentos apresentados na Parte I.
Saber utilizar o Enterprise Manager.
METODOLOGIA
Apresentao dos comandos e assistentes para configurao de um Subscriber que no seja um SQL Server 2000.
TCNICA
Configurar um Subscriber, que no seja o SQL Server 2000, utilizando o Enterprise Manager.
Podemos replicar dados para um Subscriber que no seja uma instncia do SQL Server 2000. Por exemplo,
podemos ter dados em um Publisher SQL Server 2000, sendo replicados para um Subscriber Microsoft
Access. Podemos replicar para diversos tipos de Subscribers, como por exemplo:
Microsoft Access
ORACLE
IBM DB2/AS400
IBM DB2/MVS
IBM DB2/NT
IBM/DB2 6000
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
490 00CURSO COMPLETO
Tambm podemos ter Subscribers do tipo ODBC ou OLE DB. Com isso, podemos replicar para qualquer
formato de dados, para o qual esteja disponvel um drive ODBC ou um OLE DB Provider, o que amplia
enormemente as opes disponveis.
Falaremos mais sobre OLE DB nos Captulos 10, 11 e 12.
Um drive ODBC deve atender os seguintes requisitos:
Deve ser ODBC level-1 compilant (compatvel com ODBC nvel-1).
Deve ser um drive de 32 bits e thread-safe.
Deve suportar transaes.
Deve suportar DDL Data Definition Language.
No pode ser read-only (somente leitura).
Deve suportar nomes longos de tabelas, como por exemplo MSreplication_subscriptions.
Um OLE DB Provider deve ser capaz de suportar os seguintes objetos para a replicao transacional:
Objeto DataSource.
Objeto Session.
Objeto Command.
Objeto Rowset.
Objeto Error.
Estes objetos so suportados pela grande maioria dos OLE DB Providers disponveis.
REPLICANDO DADOS PARA UM SUBSCRIBER DO MICROSOFT ACCESS 97
Para aprendermos a criar subscries para outros tipos de Subscribers, iremos fazer um exemplo prtico.
Vamos criar uma subscrio para um Banco de Dados do Microsoft Access 97. Utilizaremos o Banco de
Dados C:\Meus documentos\SubsAcc97.mdb, que ser criado no exemplo. O passo seguinte configurar
o Banco de Dados do Microsoft Access como sendo um Subscriber autorizado. Ao adicionarmos um
Subscriber do Microsoft Access, o mesmo aparece como se fosse mais um servidor registrado no Enter-
prise Manager. Este tipo de servidor conhecido como Linked Server. Depois iremos criar uma subscrio
para este Banco de Dados para a Publicao Publicao1. Como estamos configurando a Publicao a
partir do Publisher, ser uma subscrio do tipo Push subscription, pois estaremos empurrando os
dados do Publisher (SQL Server 2000 SERVIDOR\SRVINST01), para o Subscriber (Microsoft Access 97
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
491 CURSO COMPLETO00
C:\livrosql\SubsAcc97.mdb). Aps criada a subscrio, executaremos o agente de replicao e iremos
conferir se os dados foram realmente replicados para o Banco de Dados do Microsoft Access 97.
Para que possamos criar subscries para outros tipos de Subscribers, que no o SQL Server 2000, quando da criao da Publicao,
devemos habilitar a opo Heterogeneous data sources,..., na etapa Specify Subscribers Type. No nosso caso, esta opo no foi
especificada quando criamos a Publicao1. Por isso vamos criar uma nova publicao, chamada Publicao2 com esta opo habilitada.
Esta publicao ser idntica Publicao 1 criada anteriormente, apenas com a referida opo habilitada.
Voc pode acompanhar este exemplo utilizando tanto o Microsoft Access 97 quanto o Microsoft Access 2000.
Exemplo: Criar uma Publicao chamada Publicao2. Depois criar uma subscrio para esta Publicao,
onde o Subscriber um Banco de Dados do Microsoft Access 97.
Para criar a subscrio solicitada, executaremos os seguintes procedimentos:
Procedimento 1: Criar o Banco de Dados C:\livrosql\SubsAcc97.mdb.
Procedimento 2: Registrar o Banco de Dados C:\livrosql\SubsAcc97.mdb. como um Subscriber
autorizado (aparecer como um linked Server). Daremos o nome de SUBSCRIBER_ACCESS
para este Banco de Dados.
Procedimento 3: Criar uma Publicao chamada Publicao2. Esta Publicao ter a opo
Heterogeneous data sources... habilitada, para permitir Subscribers outros que no o SQL Server
7.0 ou SQL Server 2000.
Procedimento 4: Criar uma subscrio do tipo Push subscription, do Banco de Dados do
Microsoft Access 97, para a Publicao Publicao2 do SQL Server 2000.
Procedimento 5: Disparar o agente de replicao, para forar uma replicao imediata.
Procedimento 6: Verificar se os dados foram realmente replicados.
J havamos criado a pasta C:\livrosql nos captulos anteriores. Caso voc ainda no tenha criado esta pasta, crie antes de iniciar este procedimento.
Ento mos obra, que temos bastante trabalho a fazer.
Procedimento 1: Para criar o Banco de Dados C:\livrosql\SubsAcc97.mdb, faa o seguinte:
1. Abra o Microsoft Access (Iniciar -> Programas -> Microsoft Access).
2. Na janela que surge, d um clique na opo Banco de Dados vazio, para criar um novo Banco
de Dados do Access, conforme indicado na Figura 8.53. Clique no boto OK.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
492 00CURSO COMPLETO
Figura 8.53 Criando um novo Banco de Dados do Access.
3. Surge a janela Novo arquivo de Banco de Dados, onde temos que informar a pasta e o nome do
Banco de Dados a ser criado.
4. Na lista Salvar em, selecione C:.
5. Sero exibidas todas as pastas do drive C:. D um clique duplo na pasta livrosql para abri-la.
6. No campo Nome do arquivo, digite SubsAcc97.mdb, e clique no boto Criar.
Ser criado o Banco de Dados SubsAcc97.mdb e o mesmo carregado no Microsoft Access.
7. Feche o Microsoft Access.
Agora vamos registrar este Banco de Dados como um Subscriber autorizado no Publisher
SERVIDOR\SRVINST01.
Procedimento 2: Para registrar o Banco de Dados C:\livrosql\SubsAcc97.mdb como um Subscriber
autorizado no Publisher SERVIDOR\SRVINST01, com o nome de SUBSCRIBER_ACCESS, faa o seguinte:
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique na instncia SERVIDOR\SRVINST01 para selecion-la.
5. Selecione o comando Tools -> Replication -> Configure Publishing, Subscribers, and Distribution.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
493 CURSO COMPLETO00
6. Ser exibida a janela Publisher and Distributor Properties SERVIDOR\SRVINST01. D um
clique na guia Subscribers. Sero exibidos os Subscribers autorizados, conforme indicado na
Figura 8.54.
Figura 8.54 Subscribers habilitados em SERVIDOR\SRVINST01.
7. Para autorizar um novo Subscriber, d um clique no boto New.
8. Surge a janela Enable New Subscriber, para que voc selecione o tipo do novo subscriber.
Selecione Microsoft Jet 4.0 Database (Microsoft Access), conforme indicado na Figura 8.55, e
d um clique no boto OK.
Figura 8.55 Definindo um Subscriber do tipo Microsoft Jet 4.0.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
494 00CURSO COMPLETO
Figura 8.56 Adicionando o Subscriber SUBSCRIBER_ACCESS, associado ao arquivo C:\livrosql\ SubsAcc97.mdb.
Voc estar de volta janela Enable Subscriber Microsoft Jet 4.0 Database, onde o Subscriber
SUBSCRIBER_ACCESS j aparece na listagem. Nesta tela, voc tambm pode fornecer um nome de
usurio e senha para acessar o Banco de Dados do Access, caso seja necessrio. Por padro, definido
o usurio Admin com senha em branco.
11. D um clique no boto OK.
Voc estar de volta janela Publisher and Distributor Properties SERVIDOR\SRVINST01, com o
Subscriber SUBSCRIBER_ACCESS, j aparecendo na listagem de Subscribers autorizados.
12. D um clique no boto OK.
Voc estar de volta ao Enterprise Manager.
13. Mantenha o Enterprise Manager aberto. Vamos utiliz-lo no prximo procedimento.
Agora vamos criao da Publicao2.
Surge a janela Enable Subscriber Microsoft Jet 4.0 Database. Caso voc j tenha habilitado algum
Subscriber do Microsoft Access, anteriormente, o mesmo aparecer nesta janela. No nosso caso ainda
no temos nenhum Subscriber registrado.
9. Para criar o novo Subscriber d um clique no boto Add.
Surge a janela Add Microsoft Jet Linked Server. Nesta janela, definimos o nome com que o Subscriber
aparecer no Enterprise Manager e o arquivo .mdb.
10. Configure as opes conforme indicado na Figura 8.56 e d um clique no boto OK.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
495 CURSO COMPLETO00
Procedimento 3: Para criar uma Publicao chamada Publicao2. Esta Publicao ter a opo Hetero-
geneous data sources... habilitada, para que possamos permitir Subscribers outros que no o SQL Server
7.0 ou SQL Server 2000.
1. Voc j deve estar com o Enterprise Manager aberto. Navegue at a instncia SERVIDOR\SRVINST01
e d um clique na mesma para selecion-la.
2. Selecione o comando Tools -> Replication -> Create and Manage Publications.
3. Surge a janela Create and Manage Publications on SERVIDOR\SRVINST01. D um clique no
Banco de Dados Northwind para selecion-lo.
Agora vamos criar a Publicao2, a qual exatamente igual Publicao 1, apenas com a diferena de que
a Publicao2 possui a opo para subscribers heterogneos (Microsoft Access, ORACLE, DB2, etc.), habilitada.
4. D um clique no boto Create Publication. Surgir a tela inicial do assistente Create Publica-
tion Wizard.
5. Selecione a opo Show advanced options in this wizard, e d um clique no boto Avanar
(Next), para ir para a prxima etapa do assistente.
6. Nesta tela, certifique-se de que Northwind esteja selecionado na lista de Banco de Dados, pois
iremos criar a Publicao2 no Banco de Dados Northwind.
7. D um clique no boto Avanar (Next), seguindo para a prxima etapa do assistente.
Nesta etapa, temos a opo de criar a nova Publicao baseada em uma outra j existente. No nosso
exemplo, vamos criar Publicao 2, baseada na Publicao1 criada anteriormente, de tal forma que as
duas tenham os mesmos artigos.
D um clique na opo Yes, use the following publication as template e, na lista de Publicaes, d
um clique em Publicao1 para selecion-la, conforme indicado na Figura 8.57.
9. D um clique no boto Avanar (Next), para ir para a prxima etapa do assistente.
10. Na etapa Updatable Subscriptions, certifique-se de que as duas opes disponveis no estejam
marcadas, e clique em Avanar (Next).
11. Na etapa Transform Published Data, certifique-se de que a opo No, Subscribers receive data
Directaly esteja selecionada e d um clique no boto Avanar (Next), seguindo para a prxima
etapa do assistente.
Importantssimo: Nesta etapa de fundamental importncia que esteja selecionada a opo Hetero-
geneous data source, such as Oracle or Microsoft Access; or servers running earlier versions of SQL
Server, conforme destacado na Figura 8.58. Se esta opo no for selecionada, no poderemos criar
uma subscrio para o Microsoft Access ou qualquer outro tipo de subscriber que no seja o SQL Server
7.0 ou SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
496 00CURSO COMPLETO
Figura 8.57 Criando Publicao2 tendo como modelo Publicao1.
Figura 8.58 No esquea, de jeito nenhum, de selecionar esta opo.
12. Certifique-se de que a opo Heterogeneous data source, such as Oracle or Microsoft Access;
or servers running earlier versions of SQL Server esteja selecionada e d um clique no boto
Avanar (Next).
13. Na etapa Specify Articles, j temos definidos os mesmos Artigos que da Publicao1, pois estamos
utilizando esta como modelo. Clique em Avanar (Next).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
497 CURSO COMPLETO00
14. Surge a tela com mensagem a respeito de campos do tipo IDENTITY. D um clique no boto
Avanar (Next) para ir para a prxima etapa do assistente.
15. Nesta etapa, devemos definir o nome e uma descrio para a Publicao. Digite os valores
conforme indicado na Figura 8.59 e clique em Avanar (Next).
Figura 8.59 Definindo o nome e um comentrio para a Publicao.
16. Nesta etapa, j vm as mesmas opes de filtro definidas na Publicao1, a qual estamos
utilizando como modelo. D um clique no boto Avanar (Next), seguindo para a prxima
etapa do assistente.
17. Nesta etapa, vm definidos os mesmos filtros verticais que esto definidos na Publicao1. No
vamos alter-los. Clique em Avanar (Next), para ir prxima etapa do assistente.
18. Nesta etapa, vm definidos os mesmos filtros horizontais que esto definidos na Publicao1. No
vamos alter-los. D um clique no boto Avanar (Next), para ir para a prxima etapa do assistente.
19. Na etapa Allow Anonymous Subscriptions, certifique-se de que a opo No, only allow named
subscriptions esteja selecionada, e clique em Avanar (Next).
Nesta etapa podemos definir o agendamento. Este agendamento define de quanto em quanto tempo
os dados sero passados do Publisher para o Subscriber.
20. Vamos definir que o agente deve rodar diariamente, de 2 em 2 horas. Para isso, d um clique
no boto Change e defina as opes, conforme indicado na Figura 8.60 e clique em OK.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
498 00CURSO COMPLETO
Figura 8.60 Definindo o agendamento.
Voc estar de volta ao assistente.
21. D um clique no boto Avanar (Next), para ir tela final do assistente, onde apresentado um
resumo das opes selecionadas. Se voc quiser alterar alguma opo s clicar no boto
Voltar (Back).
22. D um clique no boto Finish (Concluir) para finalizar o assistente e criar a Publicao.
Surge uma mensagem indicando o progresso da criao da Publicao.
No final, emitida uma mensagem informando que a Publicao foi criada com sucesso.
23. D um clique no boto Close para fechar esta janela.
24. Voc estar de volta janela Create and Manage Publications on SERVIDOR\SRVINST01. D
um clique no boto Close para fechar esta janela.
25. Voc estar de volta ao Enterprise Manager. Mantenha-o aberto.
Agora que autorizamos um Subscriber do Microsoft Access e criamos uma Publicao (Publicao2)
que aceita Subscribers heterogneos, podemos criar uma subscrio do tipo Push subscription.
Procedimento 4: Para criar uma Subscrio do tipo Push subscription, do Banco de Dados do Microsoft
Access 97, para a Publicao Publicao2 do SQL Server 2000, faa o seguinte.
1. Voc j deve estar com o Enterprise Manager aberto. Navegue at a instncia SERVIDOR\SRVINST01
e d um clique na mesma para selecion-la.
2. Selecione o comando Tools -> Replication -> Push Subscriptions to Others. Surgir a janela
Create and Manage Publications on SERVIDOR\SRVINST01.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
499 CURSO COMPLETO00
3. D um clique no sinal de mais ao lado de Northwind, depois d um clique em Publicao2.
Estaremos criando uma subscrio para um Subscriber do Microsoft Access, o qual estar se
inscrevendo para receber os dados da Publicao2.
4. D um clique no boto Push New Subscription. iniciado o assistente Push Subscription Wizard.
5. Na tela inicial do assistente, marque a opo Show advanced options in this Wizard, e d um
clique no boto Avanar (Next), para ir para a prxima etapa do assistente.
6. Nesta etapa, selecione o Subscriber do Microsoft Access SUBSCRIBER_ACCESS (Microsoft Jet
4.0), criado anteriormente, conforme indicado na Figura 8.61, e clique em Avanar (Next).
Figura 8.61 Selecionando o Subscriber do tipo Microsoft Access.
7. Na etapa Chose Destination Database, vamos aceitar as configuraes-padro e clicar no boto
Avanar (Next), para ir para a prxima etapa do assistente.
Nesta etapa, podemos definir o agendamento, ou seja, de quanto em quanto tempo, os dados sero
empurrados (Push) do Distributor para o Subscriber.
8. Vamos definir que o agente deve rodar diariamente, de 2 em 2 horas. Para isso, d um clique
no boto Change, defina as opes, conforme indicado na Figura 8.62, e clique no boto OK.
Voc estar de volta ao assistente.
9. D um clique no boto Avanar (Next), para ir para a prxima etapa do assistente.
10. Na etapa Initialize Subscription, aceite as configuraes-padro, e d um clique no boto Avanar
(Next), para ir para a prxima etapa.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
500 00CURSO COMPLETO
Figura 8.62 Definindo o agendamento.
11. Nesta etapa indicado que o SQL Server Agent est rodando. Clique em Avanar (Next).
Voc estar na tela final do assistente, onde apresentado um resumo das opes selecionadas. Se voc
quiser alterar alguma opo s clicar no boto Voltar (Back).
12. D um clique no boto Finish (Concluir) para finalizar o assistente e criar a subscrio.
Surge uma mensagem indicando o progresso da criao da subscrio.
No final, emitida uma mensagem informando que a subscrio foi criada com sucesso.
13. D um clique no boto Close para fechar esta janela.
14. Voc estar de volta janela Create and Manage Publications on SERVIDOR\SRVINST01. D
um clique no boto Close para fech-la.
15. Voc estar de volta ao Enterprise Manager. Mantenha-o aberto.
Muito bem. J criamos o Banco de Dados C:\livrosql\SubsAcc97.mdb Procedimento 1. Depois
habilitamos um Subscriber que aponta para este Banco de Dados, com o nome de SUBSCRIBER_ACCESS
Procedimento 2. Depois criamos uma Publicao (Publicao2), a qual aceita Subscribers heterogneos
Procedimento 3. Na seqncia, criamos uma subscrio do tipo Push subscription para o Subscriber
SUBSCRIBER_ACCESS Procedimento 4.
Agora vamos disparar os agentes manualmente, para forar uma replicao, e depois abrir o Banco de
Dados C:\livrosql\SubsAcc97.mdb, para verificar se os dados foram realmente replicados.
Procedimento 5: Para disparar o agente de replicao, e forar uma replicao imediata, faa o seguinte:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
501 CURSO COMPLETO00
1. Voc deve estar com o Enterprise Manager aberto.
2. Abaixo de SERVIDOR\SRVINST01, d um clique no sinal de mais ao lado de Replication Monitor.
3. Nas opes que surgem, d um clique no sinal de mais ao lado da opo Agents.
4. Nas opes que surgem, d um clique na opo Snapshot Agents.
5. Na lista de agentes que surgem, d um clique no agente Publicao2, e no menu que surge
clique na opo Start Agent.
6. D um clique na opo Distribution Agents.
7. Na lista de agentes que surge, localize um agente em que, na coluna Subscription, aparea:
SUBSCRIBER_ACCESS (default destination), conforme indicado na Figura 8.63. Clique com o
boto direito do mouse neste agente e, no menu que surge, d um clique em Start Agent.
Figura 8.63 Forando o envio dos dados para o Subscriber.
Os dados devem ter sido replicados para o Banco de Dados C:\PushAcc97.mdb.
8. Feche o Enterprise Manager.
Procedimento 6: Para verificar se os dados foram realmente replicados, faa o seguinte:
1. Abra o Windows Explorer (Iniciar -> Programas -> Acessrios -> Windows Explorer) e navegue
at a pasta C:\livrosql.
2. D um clique duplo no arquivo PushAcc97.mdb para abri-lo no Microsoft Access. J devem
aparecer as tabelas: Orders, Products e Customers, conforme indicado na Figura 8.64
3. Feche o Microsoft Access.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
502 00CURSO COMPLETO
Figura 8.64 Dados replicados com sucesso para o Banco de Dados do Microsoft Access.
Neste item podemos ver, na prtica, a possibilidade de replicar dados entre diferentes formatos. Esta
possibilidade facilita a integrao de Bancos de Dados do SQL Server, com diversos outros formatos de
Bancos de Dados. Esta uma funcionalidade de grande valor, principalmente para as empresas que trabalham
com diferntes formatos de dados, e que precisam acessar estes dados de uma maneira consolidada.
CONCLUSO
Neste captulo aprendemos sobre os princpios bsicos de replicao com o SQL Server 2000.
Iniciamos o captulo apresentando uma srie de conceitos sobre a replicao no SQL Server 2000.
Aprendemos sobre a metfora Publisher Subscriber utilizada no SQL Server. Tambm aprendemos
que no meio do caminho existe um tal de Distributor. Analisamos algumas situaes onde a replicao
pode ser aplicada com sucesso.
Tambm aprendemos sobre os diversos tipos de replicao existentes: Snapshot, Transaction e Merge.
Uma vez apresentada a teoria, partimos para uma srie de exemplos prticos, os quais ilustram os
conceitos apresentados.
A partir do prximo captulo, estaremos tratando de assuntos relacionados com o desenvolvimento de
aplicaes que utilizam o SQL Server 2000 como Banco de Dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
503 CURSO COMPLETO00
Captulo 9
DESENVOLVIMENTO NO SQL
SERVER 2000 ELEMENTOS BSICOS
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
504 00CURSO COMPLETO
INTRODUO
Neste captulo aprenderemos tpicos relacionados ao desenvolvimento de aplicaes no SQL Server
2000. Estaremos tratando de elementos que so criados em um Banco de Dados do SQL Server 2000 e
podem ser acessados por aplicaes desenvolvidas em Visual Basic, Delphi, ASP, etc.
Iniciaremos o captulo falando sobre Integridade de Dados. No Captulo 1 apresentamos os conceitos de
Chave Primria, Chave Estrangeira, relacionamentos e tipos de relacionamentos, Integridade referencial.
No SQL Server 2000, a Integridade de dados configurada atravs do uso de Constraints, Rules, Stored
Procedures e Defaults. Aprenderemos sobre os tipos de Constraints existentes e tambm aprenderemos a
criar os diversos tipos de Constraints que do suporte Integridade de dados no SQL Server 2000. Aps
implementada a Integridade de dados, vamos testar o funcionamento da mesma. Para implement-la,
iremos fazer uma cpia do Banco de Dados Pubs. Chamaremos a cpia de PubsIntF. Ao efetuarmos a cpia,
iremos copiar apenas as tabelas e Views, sendo que no copiaremos as diversas Constraints j existentes
neste Banco de Dados. Depois passaremos a implementar a Integridade de dados na cpia PubsIntF.
Uma vez implementada a Integridade de dados atravs de Constraints, aprenderemos a criar Views. Uma
View nada mais do que uma consulta, a qual pode ser baseada em um ou mais critrios e pode acessar
dados de uma ou mais tabelas. Com a utilizao de Views, podemos criar listagens consolidadas dos
dados. Por exemplo, no Banco de Dados Northwind, as informaes sobre o cabealho do pedido esto
na tabela Orders e as informaes sobre os itens de cada pedido esto na tabela Order Details. Podemos
utilizar uma View, por exemplo, para obter uma listagem com o nmero do pedido, a data de envio, o
nome do cliente e o valor total, o qual calculado atravs da soma dos itens individuais de cada pedido.
Observe que, neste caso, estamos acessando dados das tabelas Orders e Order Details. Isto possvel de
ser feito atravs da utilizao de uma View. Alm disso devemos ter definido um relacionamento do tipo
um para Vrios entre a tabela Orders (lado Um) e a tabela Order Details (lado Vrios), ou seja, um pedido
pode conter vrios itens ou utilizar uma clusula Join no comando T-SQL que define a View.
No final do captulo aprenderemos a definir permisses de acesso a Views e testaremos as permisses.
Para acompanhar os tpicos apresentados neste captulo, o amigo leitor deve ter um bom entendimento dos conceitos de: Chave
Primria, Relacionamentos, tipos de relacionamentos, Chave Estrangeira, Normalizao e noes bsicas da linguagem T-SQL. Estes
conceitos foram apresentados no Captulo 1. Caso voc tenha dvida em algum destes conceitos, revise o Captulo 1 antes de iniciar o
estudo dos tpicos deste captulo.
KNOW-HOW EM: IMPLEMENTAO DE
INTEGRIDADE DOS DADOS NO SQL SERVER 2000
PR-REQUISITOS
Fundamentos apresentados na Parte I.
METODOLOGIA
Apresentao terica sobre a implementao da Integridade dos dados no SQL Server 2000.
Apresentao dos tipos de integridade existentes no SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
505 CURSO COMPLETO00
Implementar integridade de dados, na prtica, significa evitar que os dados de um Banco de Dados
estejam em um estado inconsistente. Um exemplo de dados em um estado inconsistente termos
itens de um pedido, na tabela Order Details, porm o cabealho do pedido no existe na tabela Orders.
Outro tipo de problema que temos que evitar a entrada de valores fora da faixa permitida em uma
coluna. Por exemplo, se tivermos um campo Oramento, em uma tabela Projetos, podemos fazer com
que este campo aceite um valor mximo, digamos 25.000. Se for digitado um valor superior a 25.000,
o SQL Server 2000 no deve aceitar.
Neste item, estaremos aprendendo a definir diversos elementos que nos ajudam a manter a
Integridade e a confiabilidade dos dados. Conforme descrito na introduo deste captulo,
Iniciaremos fazendo uma cpia do Banco de Dados Pubs, da instncia SERVIDOR\SRVINST01. Os
exemplos sero feitos na cpia deste. Criaremos esta cpia em um Banco de Dados chamado
PubsIntF, o qual ser criado neste item.
Exemplo: Criar o Banco de Dados PubsIntF, na instncia e copiar as tabelas e Views do Banco de Dados
Pubs para o PubsIntF, que deve ser criado conforme indicado na Tabela 9.1.
Tabela 9.1 O Banco de Dados PubsIntF.
Vamos dividir o nosso exerccio em dois procedimentos.
Antes de criar o Banco de Dados PubsIntF, a pasta C:\livrosql\PubsIntF j deve ter sido criada, caso contrrio ser gerada uma mensagem de erro.
Arquivo Definies
Primrio C:\livrosql\PubsIntF\PubsIntF-prim.mdf.
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Crescimento em incrementos de 10 %.
Tamanho mximo de 20 MB.
Secundrio C:\livrosql\PubsIntF\PubsIntF-sec.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Crescimento em incrementos de 10 %.
Tamanho mximo de 20 MB.
Arquivo de log C:\livrosql\PubsIntF\PubsIntF-log1.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Crescimento em incrementos de 10 %.
Tamanho mximo de 20 MB.
Arquivo de log C:\livrosql\PubsIntF\PubsIntF-log2.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Crescimento em incrementos de 10 %.
Tamanho mximo de 20 MB.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
506 00CURSO COMPLETO
Procedimento 1: Para criar o Banco de Dados PubsIntF, faa o seguinte:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo.
Ser aberto o Query Analyzer com Master sendo o Banco de Dados atual.
3. Digite o seguinte comando:
CREATE DATABASE PubsIntF
ON
*************************
Definio do Arquivo Primrio
*************************
(NAME= PubsIntF_prim,
FILENAME = C:\livrosql\PubsIntF\PubsIntF-prim.mdf ,
SIZE= 10MB,
MAXSIZE= 20MB,
FILEGROWTH = 10%),
***************************
Definio do Arquivo Secundrio
***************************
(NAME= PubsIntF_sec,
FILENAME = C:\livrosql\PubsIntF\PubsIntF-sec.ndf ,
SIZE= 10MB,
MAXSIZE= 20MB,
FILEGROWTH = 10%)
*************************
Definio dos Arquivos de Log
*************************
LOG ON
(NAME= PubsIntF_log1,
FILENAME = C:\livrosql\PubsIntF\PubsIntF-log1.ldf ,
SIZE= 10MB,
MAXSIZE= 20MB,
FILEGROWTH = 10%),
*************************
Segundo arquivo de log
*************************
(NAME= PubsIntF_log2,
FILENAME = C:\livrosql\PubsIntF\PubsIntF-log2.ldf ,
SIZE= 10MB,
MAXSIZE= 20MB,
FILEGROWTH = 10%)
***************************************
Final do comando de criao do Banco de Dados
***************************************
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
507 CURSO COMPLETO00
Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, o Banco de Dados
PubsIntF ter sido criado e a seguinte mensagem ser exibida no painel inferior do Query Analyzer:
The CREATE DATABASE process is allocating 10.00 MB on disk PubsIntF_prim.
The CREATE DATABASE process is allocating 10.00 MB on disk PubsIntF_sec.
The CREATE DATABASE process is allocating 10.00 MB on disk PubsIntF_log1.
The CREATE DATABASE process is allocating 10.00 MB on disk PubsIntF_log2.
Com isso o nosso Banco de Dados foi criado.
4. Feche o Query Analyzer.
Agora vamos ao segundo procedimento, onde iremos copiar as tabelas e dados do Banco de Dados
Pubs da instncia SERVIDOR\SRVINST01, para o Banco de Dados PubsIntF criado no Procedimento 1.
Procedimento 2: Para copiar as tabelas e Views do Banco de Dados Pubs da instncia SERVIDOR\
SRVINST01, para o Banco de Dados PubsIntF, faa o seguinte:
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado da opo Microsoft SQL Servers, para exibir os grupos de
servidores SQL Server registrados.
3. D um clique no sinal de mais ao lado da opo SQL Server Group. Sero exibidas as instncias
registradas.
4. D um clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01, para exibir as
diversas opes da mesma.
5. Nas opes que surgem, d um clique no sinal de mais ao lado da opo Databases, para exibir
os Bancos de Dados da instncia SERVIDOR\SRVINST01.
Agora vamos copiar as tabelas e Views do Banco de Dados Pubs para o PubsIntF.
6. D um clique com o boto direito do mouse no Banco de Dados Pubs. No menu de opes que
surge, selecione o comando Todas as tarefas -> Export Data.
Ser iniciado o assistente DTS Import/Export Wizard. Na tela inicial exibida uma mensagem com um
resumo das funcionalidades do assistente.
7. D um clique no boto Avanar (Next) para ir para a prxima etapa do assistente.
8. Nesta etapa definimos a origem dos dados. Como abrimos o assistente clicando com o boto
direito do mouse no Banco de Dados Pubs e selecionando o comando Todas as tarefas -> Ex-
port Data, o Banco de Dados Pubs j vem definido como origem dos dados a serem exportados.
9. D um clique no boto Avanar (Next), seguindo para a prxima etapa do assistente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
508 00CURSO COMPLETO
10. Nesta etapa, devemos definir o destino dos dados. No nosso caso o destino o Banco de Dados
PubsIntF, da instncia SERVIDOR\SRVINST01. Na lista Server selecione SERVIDOR\SRVINST01,
e na lista Database, selecione PubsIntF, conforme indicado na Figura 9.1.
Figura 9.1 Definindo o destino dos dados.
11. D um clique no boto Avanar (Next) para ir para a prxima etapa do assistente.
12. Nesta etapa, certifique-se de que a opo Copy table(s) and view(s) from the source database,
esteja selecionada, e clique em Avanar (Next).
13. Nesta etapa podemos selecionar quais tabelas e Views sero copiadas para o Banco de Dados de
destino. D um clique no boto Select All, para copiar todas as tabelas e Views, e depois clique
em Avanar (Next).
14. Nesta etapa podemos definir um agendamento, para que a cpia seja efetuada em perodos
determinados. No o nosso caso, somente queremos que a cpia seja efetuada uma vez.
Certifique-se de que a opo Run immediatelly esteja selecionada e que as demais opes
estejam desmarcadas. D um clique no boto Avanar (Next), seguindo para a prxima etapa
do assistente.
Voc estar na tela final do assistente. Um resumo das opes selecionadas apresentado nesta tela.
Caso voc queira alterar alguma opo, utilize o boto Voltar (Back).
15. D um clique no boto Concluir (Finish).
exibida uma tela com o progresso da cpia dos diversos objetos tabelas e Views.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
509 CURSO COMPLETO00
16. No final, exibida uma mensagem indicando que a cpia foi efetuada com sucesso. D um
clique em OK para fechar esta mensagem.
17. Voc estar de volta tela de progresso da execuo. D um clique no boto Done, para fechar
esta tela.
Voc estar de volta ao Enterprise Manager; e as tabelas e Views do Banco de Dados Pubs foram copiadas
para o PubsIntF.
18. Feche o Enterprise Manager.
Agora que j preparamos o Banco de Dados PubsIntF, vamos aprender a criar diversos elementos que
garantem a Integridade e consistncia dos dados, neste Banco de Dados.
OS TIPOS DE INTEGRIDADE DE DADOS EXISTENTES NO SQL SERVER 2000
Garantir a integridade dos dados, significa termos dados confiveis armazenados no Banco de Dados, em
resumo, dados de qualidade. No Books OnLine, encontramos a seguinte definio de integridade de dados:
Integridade dos dados um estado no qual todos os dados armazenados no Banco de Dados, esto
corretos. Se valores incorretos foram armazenados no Banco de Dados, dizemos que o mesmo perdeu
a Integridade dos dados.
Por exemplo, no devemos permitir que sejam inseridos dois pedidos com o mesmo nmero de pedido
ou dois funcionrios com o mesmo nmero de matrcula. Tambm no devemos aceitar que sejam
cadastrados produtos para uma categoria de produtos que no existe na tabela Categorias. Outro exemplo
de dado incorreto um dado que est fora de uma faixa permitida. Por exemplo, a entrada de um valor
um 1.000.000.000 em um campo valor da hora extra.
Para garantir que estes tipos de incorrees no aconteam, que o SQL Server 2000 disponibiliza uma
srie de elementos que nos ajudam a garantir a Integridade dos dados.
No SQL Server 2000, temos os seguintes tipos de Integridade de dados:
Integridade de Domnio (Domain Integrity): Este tipo de integridade tambm conhecido
como Integridade de Coluna e define o conjunto ou faixa de valores que so aceitveis para
um determinado campo de uma tabela. Temos vrios mecanismos para impor este tipo de
integridade. Por exemplo, ao definirmos o tipo de um campo como sendo numrico, j estamos
impedindo que sejam digitados valores de texto neste campo. O tipo de campo integer,
double, etc. tambm define uma faixa de valores aceitveis. Tambm podemos utilizar Con-
straints para impor Integridade de Domnio. Podemos definir uma Constraint que somente
aceita, os valores 1, 2 ou 3 em um determinado campo. O conceito de Constraint semelhante
ao conceito de regra de validao, o qual utilizado no Microsoft Access.
Integridade de Entidade (Entity Integrity): Este tipo de integridade est relacionada com a
definio de uma Chave Primria para a tabela. Lembrando que um campo do tipo Chave
Primria no pode conter valores repetidos. Por exemplo, se definimos o campo CPF como
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
510 00CURSO COMPLETO
sendo a Chave Primria da tabela Clientes, no podemos cadastrar dois clientes com o mesmo
CPF, isto , no podemos ter valores repetidos neste campo.
Integridade Referencial: Conforme explicamos no Captulo 1, a Integridade Referencial faz
com que o SQL Server impea que algumas aes sejam executadas e fora a execuo de outras
aes. Para clarear este conceito, vamos considerar o exemplo da Figura 9.2.
Figura 9.2 Relao entre as tabelas Pedidos, Clientes e Detalhes do pedido.
Temos dois relacionamentos. Um relacionamento do tipo Um para Vrios entre as tabelas Pedidos e
Detalhes do pedido, ou seja, Um pedido pode conter Vrios itens. Temos um outro relacionamento do
tipo Um para Vrios entre as tabelas Clientes e Pedidos, ou seja, Um cliente pode fazer vrios pedidos.
A Integridade Referencial pode evitar as seguintes situaes:
Sejam adicionados registros em uma tabela relacionada (lado Vrios), sem que tenha sido adicionado
o registro relacionado na tabela primria (lado Um). No nosso exemplo, isto evita que sejam
adicionados itens na tabela Detalhes do pedido, para um pedido que ainda no tenha sido cadastrado
na tabela Pedidos. Ou que seja adicionado um pedido para um Cliente ainda no cadastrado.
Alterao de valores na tabela primria (lado Um), deixando registros rfos na tabela
relacionada (lado Vrios). No nosso exemplo, ao alterarmos o nmero do pedido na tabela
Pedidos, o campo NmeroDoPedido dos itens relacionados, na tabela Detalhes do pedido, ser
tambm atualizado. Este mecanismo conhecido como Atualizao em Cascata, no Microsoft
Access. Ou ao alterarmos o cdigo do cliente, na tabela Clientes, o respectivo cdigo tambm
ser atualizado em todos os pedidos efetuados pelo cliente, na tabela Pedidos.
Impedir que sejam excludos registros na tabela primria (lado Um), se existirem registros
correspondentes na tabela relacionada (lado Vrios). Por exemplo, impedir que seja excludo
um pedido na tabela Pedidos, para o qual ainda existam itens na tabela Detalhes do pedido. No
Microsoft Access, existe um mecanismo chamado Excluso em Cascata. Quando este mecanismo
ativado, se excluirmos o registro na tabela primria, todos os registros correspondentes, na
tabela relacionada sero tambm excludos.
Uma outra caracterstica interessante que a integridade pode ser definida pelo usurio. O usurio
pode definir regras personalizadas de integridade, em atendimento s necessidades de uma ou mais
aplicaes. Por exemplo, podemos definir uma regra que impea funcionrios de uma determinada
categoria, de aprovarem parcelamentos acima de um determinado valor. Estas regras podem ser
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
511 CURSO COMPLETO00
implementadas com o uso de Constraints, Stored Procedures e Trigguers. Aprenderemos sobre Con-
straints e Triggers neste captulo e sobre Stored Procedures no prximo captulo.
KNOW-HOW EM: CRIAO E TESTE DE
CONSTRAINTS NO SQL SERVER 2000
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Saber utilizar o Query Analyzer.
Noes sobre Integridade de dados e os tipos de integridade de dados existentes no SQL Server 2000.
METODOLOGIA
Apresentao do conceito de Constraint e dos procedimentos para a criao e teste de Constraints.
TCNICA
Utilizao do Query Analyzer para a criao e teste de Constraints.
A utilizao de Constraints, para garantir a Integridade dos dados, o mtodo recomendado pela prpria
Microsoft. Com a utilizao de Constraints, a Integridade dos dados garantida automaticamente. Podemos
utilizar Constraints para limitar os valores que podem ser inseridos em uma determinada coluna
(Integridade de domnio) e tambm para garantir o relacionamento entre tabelas (Integridade referencial).
Uma Constraint que atua somente sobre uma coluna, chamada de column Constraint, j uma Con-
straint que atua sobre duas ou mais colunas, conhecida como table Constraint.
Na Tabela 9.2, temos um resumo dos diversos tipos de Constraints.
Tabela 9.2 Tipos de Constraints e utilizao de cada uma delas.
Tipo Descrio
DEFAULT Define um valor a ser atribudo a uma coluna, caso no tenha sido digitado nenhum valor para esta coluna.
Por exemplo, se a maioria dos clientes da cidade de So Paulo, podemos definir um valor padro So Paulo
para o campo cidade. Com isso se no for especificado um valor diferente, o campo cidade conter o valor
So Paulo, para cada novo registro que for criado na tabela Clientes. Este um tipo de Integridade de
domnio. No Microsoft Access, esta propriedade chamada de Valor padro.
CHECK Define uma regra de validao para o campo. Por exemplo, podemos definir que o campo Salrio no pode
conter valores maiores do que R$ 7.000,00. Este um tipo de Integridade de domnio. No Microsoft Access,
esta propriedade chamada de Regra de Validao.
PRIMARY KEY Define um campo como sendo Chave Primria da tabela. No sero permitidos valores repetidos ou nulos
(NULL), neste campo. Ao definirmos um campo como Chave Primria, criado um Clustered Index neste campo.
FOREIGN KEY Define um campo como Chave Estrangeira. Lembrando que a Chave Estrangeira um campo ou conjunto de
campos em uma tabela secundria, relacionados com uma Chave Primria em uma tabela primria. Por
exemplo, o campo CdigoCliente, na tabela Pedidos uma Chave Estrangeira, relacionada com o campo Chave
Primria CdigoCliente, na tabela Clientes.
UNIQUE No permite valores duplicados em um determinado campo, porm valores nulos so aceitos. Um ndice
criado para melhorar o desempenho.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
512 00CURSO COMPLETO
Agora vamos a alguns exemplos prticos de criao dos diversos tipos de Constraints.
Podemos criar Constraints no momento de criao de uma tabela, quando utilizamos o comando CREATE
TABLE. Tambm podemos criar Constraints em uma tabela j existente, utilizando o comando ALTER TABLE.
Constraints podem estar associadas com uma ou mais colunas. Considere os seguintes fatos:
Uma Constraint associada com uma nica coluna conhecida como column-level Constraint.
Uma Constraint associada com mltiplas colunas conhecida como table-level Constraint.
DEFAULT Constraints somente podem ser associadas com um nico campo, isto , so col-
umn-level Constraints.
Constraints no so definidas na tabela do Banco de Dados, isto , uma Constraint no pode
referenciar colunas de outras tabelas. Por exemplo, no podemos definir uma Constraint para
um campo da tabela Clientes, a qual acessa valores em outras tabelas.
Podemos adicionar, alterar e excluir Constraints, sem termos que excluir e recriar a tabela.
Quando adicionamos uma Constraint, o SQL Server 2000 verifica se os dados da tabela se
enquadram na Constraint que est sendo adicionada. Por exemplo, se tentarmos adicionar
uma Constraint do tipo UNIQUE, em um campo onde existem valores repetidos, a mesma no
ser adicionada e uma mensagem de erro ser emitida.
Informaes sobre Constraints so armazenadas nas seguintes tabelas de sistema: syscomments, sysreferences e sysconstraints.
Ao criar uma Constraint, devemos definir um nome para a mesma, pois caso contrrio o SQL Server 2000 ir gerar um nome. O problema
que o nome gerado, automaticamente, pelo SQL Server 2000, no nada amistoso e, tampouco, indicativo da funo da Constraint.
Tambm podemos criar Constraints utilizando o Enterprise Manager, atravs da opo Design Table, a qual
acessada atravs de um clique com o boto direito do mouse na tabela onde ser criada a Constraint.
CRIANDO CONSTRAINTS COM O QUERY ANALYZER
Para criar Constraints com o Query Analyzer, utilizamos os comandos CRETE TABLE, caso estejamos
definindo uma ou mais Constraints no momento da criao da tabela. Para definirmos uma ou mais
Constraints, em uma tabela j existente, utilizamos o comando ALTER TABLE. Vamos revisar a sintaxe
destes comandos, focando apenas nas opes para criao de Constraints:
Sintaxe para o comando CREATE TABLE:
CREATE TABLE table_name
( { < column_definition >
| Constraint constraint_name TIPO (coluna1, coluna2,..., coluna_n }
[ ,...n ]
)
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
513 CURSO COMPLETO00
Sintaxe para o comando ALTER TABLE, para excluir uma Constraint existente:
ALTER TABLE nome_tabela
DROP CONSTRAINT nome_da_constraint
Sintaxe para adicionar uma Constraint:
ALTER TABLE nome_tabela
ADD CONSTRAINT nome_da_constraint TIPO FOR nome(s)_do(s)_campo(s)
Vamos fazer alguns exemplos prticos para que possamos entender melhor a sintaxe e o funcionamento
destes comandos.
NOT NULL CONSTRAINT
Este o tipo mais simples de Constraint. Ele evita que sejam aceitos valores nulos em um
determinado campo.
Exemplo: No exemplo a seguir, criamos uma tabela chamada Clientes, onde os campos Nome, CPF e
Endereo, no podem conter valores nulos.
CREATE TABLE Clientes
(
CPF char(14) NOT NULL,
Nome char(50) NOT NULL,
Endereo char(50) NOT NULL,
Fone char(20),
Cidade char(20),
e_mail char(50),
Empresa char(50)
)
Se tentarmos inserir um registro, onde temos um valor NULL para um dos campos CPF, Nome ou
Endereo , o SQL Server 2000 no insere o registro e emite uma mensagem de erro. Por exemplo,
vamos utilizar o seguinte comando:
INSERT INTO Clientes (CPF,Nome,Endereo,fone,cidade,e_mail,empresa)
VALUES (111.111.111-11, Jos da Silva, NULL, 2222222,Santa Maria,,)
Este comando tenta inserir um registro na tabela Clientes. Porm estamos definindo um valor NULL
para o campo Endereo, o que no permitido. Ao tentarmos executar este comando, ser emitida a
seguinte mensagem de erro:
Server: Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column Endereo, table pubs.dbo.Clientes;
column does not allow nulls.
INSERT fails.
The statement has been terminated.
DEFAULT CONSTRAINTS
Uma Constraint do tipo DEFAULT associada com uma nica coluna. Quando inserimos um registro,
se no for fornecido um valor para uma determinada coluna, e esta coluna no tiver uma Constraint
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
514 00CURSO COMPLETO
DEFAULT associada, ser atribudo o valor NULL para a coluna. Caso tenha sido definida uma Con-
straint NOT NULL para a coluna, a insero do registro falha e uma mensagem de erro ser exibida.
Quando definimos uma Constraint do tipo DEFAULT, estamos especificando qual o valor ser definido
para uma determinada coluna, em caso de no ter sido definido, explicitamente, um valor para a
mesma. Por exemplo, podemos definir como valor padro para a coluna cidade, o valor SO PAULO.
Sempre que for inserido um registro, sem que tenha sido definido um valor para a coluna Cidade, a
mesma assumir o valor SO PAULO, ao invs de NULL. Conforme descrevemos anteriormente, este
mecanismo chamado de Valor padro, no Microsoft Access. DEFAUTL Constraint um tipo de
Integridade de Domnio.
No podemos definir DEFAULT Constraints para colunas que contenham o seguinte tipo de dados:
timestamp
IDENTITY
ROWGUIDCOL
Os valores para este tipo de coluna so gerados automaticamente pelo SQL Server 2000.
DEFAULT Constraints so aplicadas quando utilizamos um comando INSERT. No so aplicadas para
comandos UPDATE. Podemos utilizar funes internas do SQL Server 2000 para definir o valor de uma
DEFAULT Constraint. Por exemplo, se quisermos que o valor DEFAULT de um campo data, seja a data
do sistema, poderamos utilizar a funo GETDATE.
Vamos a alguns exemplos.
Vamos adicionar uma DEFAULT Constraint associada com a coluna Cidade da tabela Clientes, criada
nos exemplos do item anterior. Definiremos So Paulo como valor padro para a coluna Cidade.
Para definir a Constraint podemos executar o seguinte comando:
ALTER TABLE Clientes
ADD CONSTRAINT DefCidade DEFAULT So Paulo FOR Cidade
Agora vamos inserir um registro onde no fornecido o valor para o campo Cidade:
INSERT INTO Clientes (CPF,Nome,Endereo,fone)
VALUES (222.222.222-22, Jos da Silva, Rua abc - 20, 2222222)
No informamos um valor para o campo Cidade. Como existe uma DEFAUTL Constraint definida para
este campo, o mesmo assume o valor So Paulo, que o valor definido na Constraint. Como ns
gostamos de ver para crer, vamos dar um SELECT na tabela clientes, para conferir.
Conferindo o funcionamento da Constraint DefCidade:
CPF Nome Endereo Fone Cidade e-mail Empresa
222.222.222-22 Jos da Silva Rua abc - 20 2222222 So Paulo NULL NULL
Observe que para os campos e-mail e Empresa, para os quais no foram informados valores e tambm
no existe DEFAUTL Constraint, foi definido como valor NULL.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
515 CURSO COMPLETO00
Utilizamos os comandos sp_helpconstraint nome_da_tabela e sp_help nome_da_constraint para obter
informaes a respeito de uma Constraint. Considere os exemplos.
Obtendo informaes sobre Constraints na tabela Clientes:
exec sp_helpconstraint Clientes
Obtendo informaes sobre a Constraint DefCidade:
exec sp_help DefCidade
Na Figura 9.3, temos o resultado da execuo deste comando.
Figura 9.3 Resultado do comando exec sp_help DefCidade.
CHECK CONSTRAINTS
Uma CHECK Constraint permite que seja definido um conjunto ou uma faixa de valores aceitveis
para um determinado campo. Por exemplo, podemos definir que o campo Cidade somente deve aceitar
os valores So Paulo, Rio de Janeiro e Belo Horizonte. Ou podemos definir uma faixa de valores, por
exemplo, uma coluna Salrio deve, estar na faixa de 1000 a 5000. Este mecanismo conhecido como
Regra de Validao no Microsoft Access.
Considere o seguinte sobre CHECK Constraints:
feita uma verificao dos dados toda vez que executamos um comando INSERT ou um
comando UPDATE.
A definio da Constraint pode referenciar outras colunas na mesma tabela, porm no pode
referenciar colunas de outras tabelas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
516 00CURSO COMPLETO
No podemos definir CHECK Constraints para colunas que contenham o seguinte tipo de dados:
timestamp
IDENTITY
unique-identifier
No pode conter subconsultas.
Para exemplificar o uso de CHECK Constraints, vamos adicionar uma coluna financiamento, do tipo
float, a nossa tabela Clientes. Depois vamos criar duas Constraints do tipo CHECK. Uma que define
que o financiamento deva estar na faixa de entre 1000 e 5000 reais e outra que defina que o campo
Bairro somente podem ser Centro, Itarar ou Camobi.
Para adicionar o campo Financiamento, utilizamos o seguinte comando:
ALTER TABLE Clientes
ADD Financiamento Float
Para definir que o campo Financiamento deve ser maior ou igual a 1000 e menor ou igual a 5000,
utilizamos o seguinte comando:
ALTER TABLE Clientes
ADD CONSTRAINT FaixaFinanciamento
CHECK (Financiamento>=1000 AND Financiamento<= 5000)
Vamos testar esta Constraint. Tentaremos inserir um registro, onde o Financiamento maior do que
5000. Tentaremos executar o seguinte comando:
INSERT INTO Clientes (CPF,Nome,Endereo,fone,cidade,e_mail,empresa,financiamento)
VALUES (666.333.333-33, Para Pedro, XYZ, 2222222,Santa Maria,,,7000)
Este comando no ser executado e a seguinte mensagem de erro ser exibida:
Server: Msg 547, Level 16, State 1, Line 1
INSERT statement conflicted with COLUMN CHECK Constraint FaixaFinanciamento.
The conflict occurred in database pubs, table Clientes, column Financiamento.
The statement has been terminated.
Agora vamos alterar o nosso comando, reduzindo o Financiamento 3000,00. Com isso, o comando
ser executado com sucesso:
INSERT INTO Clientes (CPF,Nome,Endereo,fone,cidade,e_mail,empresa,financiamento)
VALUES (333.333.333-33, Para Pedro, XYZ, 2222222,Santa Maria,,,3000)
Vamos adicionar um campo chamado Bairro e depois vamos definir um conjunto de valores possveis
para este campo.
Para adicionar o campo Bairro, utilizamos o seguinte comando:
ALTER TABLE Clientes
ADD Bairro Char(25)
Para definir que o campo Bairro somente deve aceitar os valores Centro, Itarar e Camobi, utilizamos
o seguinte comando:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
517 CURSO COMPLETO00
ALTER TABLE Clientes
ADD CONSTRAINT ValoresBairro
CHECK (Bairro=Centro or Bairro=Itarar ou Bairro=Camobi)
Vamos testar esta Constraint. Tentaremos inserir um registro, onde o Bairro igual a Urlndia.
Tentaremos executar o seguinte comando:
INSERT INTO Clientes (CPF,Nome,Endereo,fone,cidade,e_mail,empresa,salrio,bairro)
VALUES (444.444.444-44, Pedro Para, KKK, 2222222,Santa Maria,,,2300,Urlndia)
Este comando no ser executado e a seguinte mensagem de erro ser exibida:
Server: Msg 547, Level 16, State 1, Line 1
INSERT statement conflicted with COLUMN CHECK Constraint ValoresBairro.
The conflict occurred in database pubs, table Clientes, column Bairro.
The statement has been terminated.
Agora vamos alterar o nosso comando, alterando o bairro para Centro, que um dos valores permitidos
pela Constraint. O seguinte comando ser executado com sucesso:
INSERT INTO Clientes (CPF,Nome,Endereo,fone,cidade,e_mail,empresa,salrio,bairro)
VALUES (444.444.444-44, Pedro Para, KKK, 2222222,Santa Maria,,,2300,Centro)
Podemos construir CHECK Constraints mais elaboradas. Por exemplo, podemos construir uma que
somente aceite o CPF se o mesmo for digitado no formato nnn.nnn.nnn-nn, onde n um nmero
entre 0 e 9. Vamos a um exemplo.
Definir uma Constraint que fora o CPF a ser digitado o formato nnn.nnn.nnn-nn, caso contrrio, o
registro no ser aceito. Podemos utilizar o seguinte comando:
ALTER TABLE Clientes
ADD CONSTRAINT FormatCPF
CHECK (CPF like [0-9] [0-9] [0-9]. [0-9] [0-9] [0-9]. [0-9] [0-9] [0-9]- [0-9] [0-9])
Vamos tentar inserir um registro em que o CPF no atende a regra definida na Constraint FormatCPF.
Iremos trocar o tracinho por um ponto. Tente executar o seguinte comando:
INSERT INTO Clientes (CPF,Nome,Endereo,fone,cidade,e_mail,empresa,salrio,bairro)
VALUES (555.555.555.55, Maria Silva, POP, 4445566,Santa Maria,,,2300,Centro)
O comando no ser executado e a seguinte mensagem de erro ser emitida:
Server: Msg 547, Level 16, State 1, Line 1
INSERT statement conflicted with COLUMN CHECK Constraint FormatCPF.
The conflict occurred in database pubs, table Clientes, column CPF.
The statement has been terminated.
Tambm podemos utilizar os comandos sp_helpconstraint nome_tabela e sp_help nome_da_constraint
para obter informaes sobre uma CHECK Constraint.
PRIMARY KEY CONSTRAINTS
Este tipo de Constraint utilizado para definir qual o campo ou campos formam a Chave Primria de
uma tabela. Este campo no poder conter valores repetidos ou NULL. O valor da Chave Primria,
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
518 00CURSO COMPLETO
identifica de maneira nica, cada registro de uma tabela. Ao definirmos uma Chave Primria
automaticamente criado um ndice associado mesma. Por padro, criado um Clustered index,
desde que no ainda no exista um na tabela, uma vez que cada tabela somente pode conter um
Clustered index. Tambm podemos definir que seja criado um Nonclustered index. Lembrando que
PRIMARY KEY um tipo de Entity integrity.
Somente podemos ter uma Chave Primria em cada tabela. Os valores da Chave Primria devem ser
nicos e no so permitidos valores NULL. Podemos definir um campo como sendo Chave Primria,
no momento da criao da tabela, como no exemplo a seguir, onde criamos a tabela Pedidos e definimos
o campo NmeroPedido, como sendo a Chave Primria da tabela:
CREATE TABLE Pedidos
(
NmeroPedido char(14) PRIMARY KEY,
CPF char(14) NOT NULL,
DataPedido datetime NOT NULL,
DataEnvio datetime NOT NULL,
MatrFunc char(20),
CNPJ char(20),
Empresa char(50)
)
O mtodo utilizado neste exemplo no o mais adequado, pois no atribumos um nome a esta Chave
Primria, o que faz com que o SQL Server 2000 atribua um nome nada intuitivo. O ideal que, ao criar
a Chave Primria, tambm seja definido um nome para a mesma. Vamos excluir a tabela Pedidos e
cri-la novamente, agora definindo um nome para a Chave Primria. Para isso utilizamos o seguinte
comando:
DROP TABLE Pedidos
GO
CREATE TABLE Pedidos
(
NmeroPedido char(14) CONSTRAINT Num_Ped PRIMARY KEY,
CPF char(14) NOT NULL,
DataPedido datetime NOT NULL,
DataEnvio datetime NOT NULL,
MatrFunc char(20),
CNPJ char(20),
Empresa char(50)
)
Tambm podemos definir uma Chave Primria em um tabela j existente, desde que esta tabela ainda no
tenha uma definida. Para isto, utilizamos o comando ALTER TABLE. No exemplo a seguir, utilizaremos este
comando para definir o campo CPF da tabela Clientes como sendo a Chave Primria:
ALTER TABLE Clientes
ADD CONSTRAINT PrimCPF PRIMARY KEY CLUSTERED(CPF)
Se voc tentar definir um campo como Chave Primria e j existir uma definida na tabela, a seguinte
mensagem de erro, ser exibida:
Server: Msg 1779, Level 16, State 1, Line 1
Table Clientes already has a primary key defined on it.
Server: Msg 1750, Level 16, State 1, Line 1
Could not create Constraint. See previous errors.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
519 CURSO COMPLETO00
UNIQUE CONSTRAINTS
Ao definirmos uma UNIQUE Constraint em uma coluna, estamos garantindo que no existam valores
repetidos para esta coluna. Porm a coluna pode aceitar valores NULL, sendo esta uma das diferenas
da UNIQUE Constraint em relao a PRIMARY KEY Constraint. Outra diferena que podemos ter
vrias UNIQUE Constraints em uma mesma tabela, diferentemente de PRIMARY KEY Constraint, que
somente pode existir uma por tabela.
Somente podemos criar uma UNIQUE Constraint em uma coluna que no faa parte de uma Chave
Primria. Uma UNIQUE Constraint pode ser formada por uma ou mais colunas, caso em que teremos
uma UNIQUE CONSTRAINT composta. Uma coluna com uma UNIQUE Constraint pode ser referenciada
por uma Chave Estrangeira, definida por uma FOREIGN KEY Constraint.
A unicidade de um campo associado a uma UNIQUE CONSTRAINT garantida atravs da criao de
um ndice que no permite valores duplicados. Este ndice, por padro, criado como um Nonclustered
index. Porm, podemos definir que o ndice seja criado como um Clustered index, desde que no
exista outro Clustered index j definido na tabela.
Podemos definir uma UNIQUE Constraint, no momento de criao de uma tabela. No exemplo a seguir,
estamos definindo o campo NmMatrcula como Chave Primria e o campo NmeroIdentidade como
sendo nico, atravs de uma UNIQUE Constraint neste campo, ao criarmos a tabela Funcionrios:
CREATE TABLE Funcionrios
(
NmMatrcula char(14) CONSTRAINT Num_Matr PRIMARY KEY,
NmeroIdentidade char(14) CONSTRAINT Num_Iden UNIQUE NONCLUSTERED,
DataEntrada datetime NOT NULL,
DataAniversrio datetime NOT NULL,
Nome char(50),
Cargo char(20),
Funo char(50),
Salrio float
)
Outra possibilidade adicionarmos uma UNIQUE Constraint a uma tabela j existente, utilizando o
comando ALTER DATABASE. Vamos criar uma UNIQUE Constraint composta, a qual associada aos
campos Nome, Cargo e Salrio.
Este exemplo no tem muito sentido prtico. Iremos utiliz-lo apenas para exemplificar a sintaxe de criao de uma UNIQUE Constraint
composta.
ALTER TABLE Funcionrios
ADD CONSTRAINT Constr_Comp UNIQUE NONCLUSTERED (Nome,Cargo,Salrio)
Observe que neste caso especificamos que seja criado um Nonclustered index.
FOREIGN KEY CONSTRAINTS
Utilizamos FOREIGN KEY Constraints para implementar a Integridade Referencial no Banco de Dados.
Ao definirmos uma FOREIGN KEY associada a uma coluna (ou um conjunto de colunas), estamos
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
520 00CURSO COMPLETO
definindo esta coluna como uma Chave Estrangeira. A Chave Estrangeira representa o lado vrios de
um relacionamento do tipo Um para Vrios.
Por exemplo, temos um relacionamento do tipo Um para Vrios entre a tabela Fornecedores (lado Um)
e a tabela Produtos (lado Vrios). Na tabela Fornecedores, o campo CdigoDoFornecedor uma Chave
Primria. Na tabela Produtos, o campo CdigoDoFornecedor uma Chave Estrangeira. Sendo que as
duas tabelas so relacionadas atravs de um relacionamento do tipo Um para Vrios, significando que
Um fornecedor pode fornecer Vrios produtos.
Uma Chave Estrangeira pode ser relacionada com um campo em que temos uma PRIMAY KEY Con-
straint ou uma UNIQUE Constraint.
Para que possamos estabelecer o relacionamento entre uma Chave Estrangeira e uma Chave Primria,
algumas regras devem ser observadas:
O nmero de colunas da Chave Estrangeira e os tipos de dados especificados no comando
FOREIGN KEY devem coincidir com os especificados na clusula REFERENCE. Porm, o nome
das colunas no precisa ser o mesmo. Veja a sintaxe do comando mais adiante e exemplos de
uso destes comandos.
Quando criamos uma FOREIGN KEY Constraint no criado, automaticamente, um ndice.
Porm, na prtica, pode ser til a criao de um ndice associado Chave Estrangeira. Para
aprender sobre a criao e manuteno de ndices consulte o Captulo 4.
Para modificar dados em uma tabela que possui uma Constraint do tipo FOREIGN KEY, o usurio
deve ter permisses SELECT ou REFERENCE na tabela primria. Por exemplo, vamos considerar
o relacionamento entre as tabelas Categorias (lado Um) e Produtos (lado Vrios), relacionadas
atravs do campo CdigoDaCategoria. Na tabela Categorias, o campo CdigoDaCategoria uma
Chave Primria, j na tabela Produtos, o campo CdigoDaCategoria uma Chave Estrangeira.
Para que o usurio possa alterar dados na tabela Produtos, ele precisa ter permisso SELECT ou
REFERENCE, na tabela Categorias, que a tabela relacionada com Produtos.
Podemos criar uma referncia entre duas colunas da mesma tabela. Neste caso, utilizamos
apenas a clusula REFERENCES, sem a clusula FOREIGN KEY.
Vamos pr em prtica toda esta teoria. Nos exemplos anteriores criamos uma tabela Clientes e uma
tabela Pedidos, com os campos indicados na Figura 9.4.
Figura 9.4 Tabelas Clientes e Pedidos, criadas nos exemplos anteriores.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
521 CURSO COMPLETO00
Observe que o campo CPF existe nas duas tabelas e, na tabela Clientes, este campo uma Chave
Primria indicado por uma pequena chave amarela ao lado do campo. Vamos criar um relacionamento
entre estas duas tabelas. O relacionamento ser do tipo Um (tabela Clientes) para Vrios (tabela Pedidos).
Para definirmos este relacionamento, vamos criar uma FOREIGN KEY Constraint no campo CPF da
tabela Pedidos, sendo que esta FOREIGN KEY ir fazer referncia (em bom Portugus vai se relacionar
com) ao campo CPF da tabela Clientes.
Para criar uma FOREIGN KEY no campo CPF da tabela Pedidos, vamos executar o seguinte comando:
ALTER TABLE Pedidos
ADD CONSTRAINT Rel_Ped_Cli FOREIGN KEY(CPF)
REFERENCES Clientes(CPF).
Uma vez executado este comando, teremos criado um relacionamento entre as tabelas Clientes e Pedidos,
conforme indicado na Figura 9.5.
Figura 9.5 Relacionamento criado entre as tabelas Clientes e Pedidos.
Observe que definimos uma Constraint do tipo FOREIGN KEY em uma tabela j existente. Porm
podemos definir este tipo de Constraint no momento da criao da tabela.
Vamos supor que foi solicitada a criao de uma tabela chamada Dependentes. Um cliente poder
autorizar um ou mais dependentes, para que faam compras em seu nome. Neste caso, teremos um
relacionamento do tipo Um para Vrios entre a tabela Clientes e a tabela Dependentes. O campo que
ir relacionar as duas tabelas o campo CPF. A tabela Clientes o lado um do relacionamento e a
tabela Dependentes o lado vrios. Neste caso, a Constraint do tipo FOREIGN KEY ser criada na
tabela Dependentes. Como a tabela Dependentes ainda no existe, iremos cri-la e, durante a criao,
especificar uma FOREIGN Constraint no campo CPF, a qual referencia o campo CPF da tabela Clientes.
A tabela Dependentes ter os seguintes campos:
CPF Char(14) FOREIGN KEY relacionada com o campo CPF da tabela Clientes.
Nome Char(50)
Fone Char(25)
e_mail Char(50)
Para criar a tabela Dependentes e definir o relacionamento solicitado, devemos executar o seguinte comando:
CREATE TABLE Dependentes
(
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
522 00CURSO COMPLETO
CPF Char(14) NOT NULL,
Nome Char(50) NOT NULL,
Fone Char(25) NOT NULL,
e_mail Char(50),
CONSTRAINT Rel_Cli_Dep FOREIGN KEY(CPF)
REFERENCES Clientes(CPF)
)
Aps a execuo deste comando teremos o relacionamento entre as tabelas Clientes e Dependentes j
definido. A Figura 9.6 mostra as tabelas Clientes, Pedidos e Dependentes e os respectivos relacionamentos.
Figura 9.6 Mais um relacionamento criado: Clientes e Dependentes.
Vamos fazer alguns testes referentes Integridade referencial. Uma vez definido o relacionamento
entre as tabelas Clientes e Dependentes, o SQL Server 2000 no deve deixar que seja adicionado um
registro na tabela Dependentes, para um cliente que no existe. Vamos fazer o seguinte teste, tentaremos
adicionar um dependente para o cliente com o CPF 999.999.999-99. Acontece que este cliente no
existe na tabela Clientes. Tente executar o seguinte comando
INSERT INTO Dependentes (CPF,Nome,fone,e_mail)
VALUES (999.999.999-99, Faustino da Silva, 2222222,faustino@abc.com)
O comando no ser executado e a seguinte mensagem de erro ser exibida:
Server: Msg 547, Level 16, State 1, Line 1
INSERT statement conflicted with COLUMN FOREIGN KEY Constraint Rel_Cli_Dep.
The conflict occurred in database pubs, table Clientes, column CPF.
The statement has been terminated.
Observe o seguinte trecho desta mensagem:
The conflict occurred in database pubs, table Clientes, column CPF.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
523 CURSO COMPLETO00
Este trecho, embora no muito claramente, est nos dizendo que no existe o CPF 999.999.999-99, na
tabela Clientes, ou seja, que estamos tentando cadastrar um dependente para um cliente que no
existe. Agora vamos alterar o comando anterior, substituindo o CPF inexistente pelo CPF de um cliente
cadastrado nos exerccios anteriores. Execute o seguinte comando:
INSERT INTO Dependentes (CPF,Nome,fone,e_mail)
VALUES (666.333.333-33, Faustino da Silva, 2222222,faustino@abc.com)
Agora sim, o comando executado com sucesso e um dependente adicionado na tabela Dependentes.
Com este exemplo, podemos observar como o SQL Server gerencia, automaticamente, a Integridade
Referencial, uma vez definidos os relacionamentos. Quando trabalhamos com o SQL Server 2000, ou
qualquer outro Banco de Dados que segue o modelo Relacional, de fundamental importncia que
entendamos os conceitos apresentados no Captulo 1 e aqui exemplificados. Sem o domnio destes
conceitos, iremos projetar Bancos de Dados com problemas. Muitas vezes, estes problemas somente
aparecem quando colocamos uma ou mais aplicaes em produo. Surgem desde consultas com
desempenho insuficiente at inconsistncia e falta de Integridade dos dados.
VERIFICAO DOS DADOS QUANDO UMA CONSTRAINT ADICIONADA
Por padro, o SQL Server 2000 verifica os dados existentes em uma tabela, quando uma Constraint
adicionada. Caso os dados no se enquadrem nas definies da Constraint, a mesma no ser criada.
Por exemplo, se voc tentar definir uma Constraint do tipo UNIQUE em uma coluna que contm
valores repetidos, o comando no ser executado e uma mensagem de erro ser exibida. Embora no
seja recomendado, esta verificao automtica pode ser desabilitada. Somente podemos desabilitar a
verificao dos dados, quando uma Constraint adicionada para Constraints do tipo CHECK e FOR-
EIGN KEY. A verificao sempre ser feita para Constraints do tipo PRIMARY KEY e UNIQUE.
Para desabilitar a verificao, utilizamos a opo WITH NOCHECK, com o comando ALTER DATA-
BASE, conforme o exemplo a seguir:
ALTER TABLE Produtos
WITH NOCHECK
ADD CONSTRAINT Constr_1
CHECK (Preo >= 0)
Neste exemplo estamos adicionando uma Constraint do tipo CHECK, definindo que o campo Preo,
da tabela Teste, deve ter um valor maior ou igual a zero. A clusula WITH NOCHECK faz com que os
dados existentes na tabela Produtos no sejam verificados e, mesmo que existam valores negativos na
coluna Preo, a Constraint ser adicionada.
A nica situao em que pode ser admissvel a utilizao da opo WITH NOCHECK, seria em uma
situao em que temos um grande volume de dados, e os mesmos j esto, comprovadamente,
depurados. Nesta situao, desabilitaramos a verificao ao adicionar a Constraint, para poupar tempo.
A opo WITH NOCHECK no desabilita a verificao para os registros que so adicionados aps a definio da Constraint. Se formos
adicionar um registro que no atende a definio de uma ou mais Constraints definidas na tabela, o registro no ser inserido e uma
mensagem de erro ser exibida.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
524 00CURSO COMPLETO
DESABILITANDO E HABILITANDO NOVAMENTE CONSTRAINTS
Podemos desabilitar, temporariamente, uma ou mais Constraints. Por exemplo, quando formos importar
um grande volume de dados, estando estes dados em um estado consistente, podemos desabilitar uma
ou mais Constraints, para agilizar a importao dos dados. Uma vez encerrada a importao, voltamos
a habilit-las. Somente podemos desabilitar Constraints do tipo CHECK e FOREIGN KEY.
Para desabilitar uma Constraint utilizamos a clusula NOCHECK CONSTRAINT nome_constraint, com
o comando ALTER DATABASE. Para reabilitar a Constraint, utilizamos a clusula CHECK CONSTRAINT
nome_constraint, com o comando ALTER DATABASE.
Para desabilitarmos a Constraint FaixaFinanciamento, criada na tabela Clientes, utilizamos o seguinte comando:
ALTER TABLE Clientes
NOCHECK CONSTRAINT FaixaFinanciamento
Para voltar a habilitar esta Constraint, utilizamos o seguinte comando:
ALTER TABLE Clientes
CHECK CONSTRAINT FaixaFinanciamento
EXCLUINDO CONSTRAINTS
Podemos excluir uma Constraint, utilizando o comando ALTER TABLE. Utilizamos a seguinte sintaxe:
ALTER TABLE nome_da_tabela
DROP CONSTRAINT nome_da_constraint
Por exemplo, para excluir uma Constraint chamada Teste, da tabela Clientes, do Banco de Dados
Vendas, utilizamos o seguinte comando:
USE Vendas
ALTER TABLE Clientes
DROP CONSTRAINT Teste
Exerccio:
Vamos propor um exerccio, para que voc possa revisar os diversos comandos vistos neste item. O
exerccio ser baseado no Banco de Dados PubsIntF, que criamos no incio do captulo. Lembrando que
este uma cpia do Banco de Dados Pubs. Vamos criar alguns relacionamentos neste Banco de Dados.
Das diversas tabelas que compem este Banco de Dados, vamos nos concentrar nas quatro tabelas
mostradas na Figura 9.7.
Primeiro, vamos fazer uma anlise sobre os relacionamentos que devem ser definidos para as tabelas
apresentadas, e depois partirmos para a definio das Constraints a serem implementadas em cada tabela.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
525 CURSO COMPLETO00
Figura 9.7 Algumas tabelas do Banco de Dados PubsIntF.
Os seguintes campos sero definidos como Chaves Primrias:
Campo au_id na tabela authors.
Campo pub_id na tabela publishers.
Campo title_id na tabela titles.
Definiremos os seguintes relacionamentos:
Relacionamento do tipo Um para Vrios entre as tabelas authors (lado Um) e a tabela titleauthor
(lado Vrios), atravs do campo au_id.
Relacionamento do tipo Um para Vrios entre as tabelas titles (lado Um) e a tabela titleauthor
(lado Vrios), atravs do campo title_id.
Relacionamento do tipo Um para Vrios entre as tabelas publishers (lado Um) e a tabela titles
(lado Vrios), atravs do campo pub_id.
Ento vamos prtica.
1. Abra o Query Analyzer e faa uma conexo com a instncia SERVIDOR\SRVINST01.
2. Torne PubsIntF o Banco de Dados atual, utilizando o seguinte comando:
USE PubsIntF
3. Para definir o campo au_id, da tabela authors, como uma Chave Primria, execute o seguinte comando:
ALTER TABLE authors
ADD CONSTRAINT Prim_authors PRIMARY KEY CLUSTERED(au_id)
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
526 00CURSO COMPLETO
4. Para definir o campo pub_id, da tabela publishers, como uma Chave Primria, execute o
seguinte comando:
ALTER TABLE publishers
ADD CONSTRAINT Prim_publishers PRIMARY KEY CLUSTERED(pub_id)
5. Para definir o campo title_id, da tabela titles, como uma Chave Primria, execute o seguinte comando:
ALTER TABLE titles
ADD CONSTRAINT Prim_titles PRIMARY KEY CLUSTERED(title_id)
Neste ponto, o nosso Banco de Dados j possui definidas trs Chaves Primrias, conforme indicado na
Figura 9.8, na qual o campo Chave Primria indicado pela pequena chave amarela.
Figura 9.8 Chaves Primrias j definidas.
Agora vamos para a definio dos relacionamentos. Lembrando que um relacionamento definido
atravs de uma Constraint do tipo FOREIGN KEY.
6. Crie uma Constraint do tipo FOREIGN KEY, associada com o campo au_id da tabela titleauthor,
a qual referencia o campo au_id da tabela authors. Para criar este relacionamento, utilize o
seguinte comando:
ALTER TABLE titleauthor
ADD CONSTRAINT FK_author FOREIGN KEY(au_id)
REFERENCES authors(au_id)
7. Crie uma Constraint do tipo FOREIGN KEY, associada com o campo title_id da tabela titleauthor,
a qual referencia o campo title_id da tabela titles. Para criar este relacionamento, utilize o
seguinte comando:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
527 CURSO COMPLETO00
ALTER TABLE titleauthor
ADD CONSTRAINT FK_title FOREIGN KEY(title_id)
REFERENCES titles(title_id)
8. Crie uma Constraint do tipo FOREIGN KEY, associada com o campo pub_id da tabela titles, a
qual referencia o campo pub_id da tabela publishers. Para criar este relacionamento, utilize o
seguinte comando:
ALTER TABLE titles
ADD CONSTRAINT FK_pub FOREIGN KEY(pub_id)
REFERENCES publishers(pub_id)
Aps executados estes comandos, os relacionamentos propostos tero sido criados, conforme indicado
na Figura 9.9.
Figura 9.9 Relacionamentos propostos j definidos.
KNOW-HOW EM: CONCEITOS E CRIAO DE VIEWS NO SQL SERVER 2000
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Conhecer os comandos bsicos da linguagem T-SQL.
Saber utilizar o Query Analyzer e o Enterprise Manager.
Conhecimento sobre relacionamentos e o modelo Relacional.
METODOLOGIA
Apresentao dos procedimentos necessrios para a criao de Views com o Query Analyzer e o Enterprise Manager.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
528 00CURSO COMPLETO
TCNICA
Criao e teste de Views, utilizando o Query Analyzer e o Enterprise Manager.
INTRODUO
Quando executamos um comando T-SQL no Query Analyzer, o mesmo processados e uma mensagem
exibida. Por exemplo, quando executamos um comando CREATE TABLE, uma tabela criada no
Banco de Dados atual e uma mensagem, dizendo que o comando foi executado com sucesso, emitida.
Tambm podemos executar consultas, como por exemplo:
SELECT * FROM Orders WHERE ShipCountry = Brazil
O comando executado e ser retornada uma listagem com todos os registros da tabela Orders, em que
o campo ShipCountry for igual a Brazil. Se fecharmos o Query Analyzer e abrirmos novamente, teremos
que digitar o comando mais um vez para execut-lo. Este tipo de consulta conhecido com Ad-hoc.
Alguns autores traduzem a expresso Ad-hoc como sendo Sob demanda. A mim, parece uma traduo
aceitvel, uma vez que a consulta executada no momento em que solicitada, depois, ao fechar o
Query Analyzer, os comandos so descartados.
Porm, para aplicativos, que executam repetidamente um determinado conjunto de consultas, este
mtodo de consultas Ad-hoc no o mais adequado. No SQL Server 2000, temos a opo de salvar uma
instruo SQL que retorna dados. A instruo salva e um nome atribudo a mesma. Com isso,
podemos definir View de uma maneira bastante simples:
View uma instruo T-SQL que retorna dados e salva no Banco de Dados com um nome, ou seja,
passa a ser um objeto do Banco de Dados. Quando uma View executada, a mesmo retorna um
conjunto de dados no formato de uma tabela. Uma View pode retornar dados de uma ou mais tabelas.
Para criar uma View, utilizamos o comando CREATE VIEW. Vamos criar uma View, chamada Ped_USA,
a qual seleciona os registros da tabela Pedidos em que o campo ShipCountry igual a USA.
USE Northwind
CREATE VIEW Ped_USA
AS
SELECT * FROM ORDERS WHERE ShipCountry = USA
Agora ara executarmos a View, basta darmos um SELECT * Nome_da_View. A mesma executada e
todos os registros, por ela selecionados, sero retornados. No caso, sero retornados os pedidos onde o
campo ShipCountry = USA. Para executar a view Ped_USA, execute o seguinte comando:
SELECT * FROM Ped_USA
Sero retornados os resultados indicados na Figura 9.10.
Veremos em detalhes estes comandos mais adiante.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
529 CURSO COMPLETO00
Figura 9.10 Execuo da View Ped_USA.
TIPOS DE VIEWS QUANTO AO CONJUNTO DE DADOS RETORNADOS
Podemos ter diversos tipos de Views, dependendo do conjunto de dados retornados. Uma View, que
retorna apenas algumas colunas de uma tabela, conhecida como Subset of table columns. Podemos
utilizar este tipo de View para fazer com que o usurio somente receba o conjunto de dados que lhe
interessa. Por exemplo, uma consulta feita por um vendedor, pode retornar apenas a descrio do
produto, o preo, o valor do frete e o prazo de entrega. J uma consulta feita pelo responsvel pelo
estoque, pode retornar somente o cdigo do produto e o nvel de estoque do mesmo.
Uma View, que retorna apenas um subconjunto das linhas de uma tabela, conhecida como Subset of
table rows. o caso tpico da consulta onde utilizada a clusule WHERE, para filtrar o conjunto de dados.
Tambm podemos criar Views que retornam dados de diversas tabelas, atravs de uma ou mais clusulas
Join. Alm disso, tambm podemos utilizar as chamadas funes de agregao como por exemplo
SUM para calcular a soma em um determinado campo ou AVG para calcular a mdia.
Tambm podemos definir uma clusula SELECT dentro de outra, o que mais conhecido como
SUBCONSULTA. Aprenderemos a criar subconsultas, bem como os demais tipos de Views mais adiante,
neste item.
POR QUE UTILIZAR VIEWS?
Existem vrios motivos que justificam a utilizao de Views. Vamos falar sobre os principais.
Com a utilizao de Views, podemos ocultar a complexidade no acesso aos dados. Se um usurio ou
aplicao precisa acesso ao um conjunto de dados, o qual obtido a partir de vrias tabelas, podemos
simplificar este acesso, criando uma View que consolida os dados necessrios. Depois s fazer com
que o usurio ou aplicao acesse esta View.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
530 00CURSO COMPLETO
Simplifica a atribuio de permisses. Podemos definir permisses na view, o que simplifica bastante o
gerenciamento de permisses, uma vez que temos que gerenciar um nmero menor de objetos. Uma
Banco de Dados normalizado apresenta um grande nmero de tabelas. Com isso, as consultas executadas
pelos usurios, precisam acessar dados de diversas tabelas. Este meio-campo pode ser feito com a criao
de uma View.
O desenvolvimento e manuteno de aplicaes tambm fica simplificado. Se existirem alteraes na
estrutura de uma ou mais tabelas e a aplicao tiver sido desenvolvida para acessar os dados diretamente
das tabelas, a aplicao ter que ser reescrita quando fizermos alteraes nas tabelas. Podemos evitar
este problema criando uma View e fazendo com que a aplicao acesse a View. Se houver alteraes nas
tabelas, alteramos a View para que o mesmo conjunto de dados seja retornado, evitando, com isso, que
a aplicao tenha que ser alterada.
Existem outras tcnicas que simplificam a manuteno de aplicaes. Falaremos mais sobre estas tcnicas nos Captulos 10 e 11.
LIMITAES NA CRIAO DE VIEWS
Ao criarmos Views, devemos considerar as seguintes limitaes:
Somente podemos criar uma View no Banco de Dados atual, embora a mesma possa acessar
dados de tabelas de outros Banco de Dados ou at mesmo de outros servidores, quer seja outras
instncias do SQL Server ou os chamados linked servers.
Uma View pode ter, no mximo, 1024 colunas.
O usurio, que est criando a View, deve ter permisso de acesso a todas as colunas includas na
View, caso contrrio o mesmo no conseguir cri-la.
Podemos aninhar Views, isto , uma View pode referenciar outra, at um nvel de 32 Views
aninhadas.
Uma vez apresentada a teoria, vamos prtica. Seguindo a metodologia utilizada at o momento,
aprenderemos a criar Views utilizando as seguintes ferramentas:
Query Analyzer.
Enterprise Manager.
CRIANDO VIEWS COM O ENTERPRISE MANAGER
Com o Enterprise Manager, uma View criada utilizando-se o assistente Create View Wizard.
Acessamos este assistente de duas maneiras.
Atravs do menu Tools -> Wizards. Na janela que surge, clicamos no sinal de mais ao lado da categoria
Database; clique na opo Create View Wizard para selecion-la e depois clique no boto OK. O assistente
inicializado.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
531 CURSO COMPLETO00
Outra maneira de criarmos uma View navegar at o Banco de Dados onde a mesma ser criada, clicar
com o boto direito do mouse na opo Views e no menu que surge dar um clique na opo New View.
Neste caso, ao invs do assistente, exibida uma janela onde podemos criar e salvar a View, conforme
indicado na Figura 9.11.
Figura 9.11 Janela para criao da View.
A janela exibida na Figura 9.11 possui uma funcionalidade semelhante a famosa QBE (Query By Example) do Microsoft Access. A QBE
uma interface grfica que facilita a criao de consultas no Microsoft Access.
Vamos fazer um exemplo utilizando o assistente e depois outro utilizando a janela indicada na Figura 9.11.
Exemplo 1: Utilize o assistente Create View Wizard, para criar uma View que retorne uma listagem
com o nmero do pedido, a Data do Pedido, a Data do Envio, a cidade e o pas de destino, para os
pedidos enviados para o Brazil, em que a cidade Sao Paulo ou Campinas, a partir da tabela Orders do
Banco de Dados Northwind, da instncia SERVIDOR\SRVINST01.
Salvar a View com o nome de View_SP_Campinas.
Estamos utilizando Brazil com z e Sao Paulo sem o til, porque os dados do Banco de Dados Northwind esto na verso em ingls, que
a verso que acompanha o SQL Server 2000.
Para criar a view solicitada faa o seguinte:
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
532 00CURSO COMPLETO
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado de Databases
para expandi-la.
6. Na lista de Bancos de Dados exibida, d um clique no sinal de mais ao lado de Northwind para
exibir os objetos do mesmo.
7. D um clique na opo Views para selecion-la. No painel da direita deve ser exibida uma
listagem com uma srie de Views que so criadas com este Banco de Dados, durante a instalao
do SQL Server 2000.
8. Selecione o comando Tools -> Wizards.
9. Na janela que surge, d um clique no sinal de mais ao lado da opo Database.
10. Surge uma lista com os assistentes disponveis para a manipulao de Bancos de Dados. D um
clique em Create View Wizard para selecionar esta opo e depois clique no boto OK para
iniciar o assistente.
11. Ser exibida a tela inicial do assistente. Nesta tela informado um resumo das opes a serem
selecionadas nas prximas etapas. D um clique no boto Avanar (Next), seguindo para a
prxima etapa do assistente.
Nesta etapa, devemos selecionar o Banco de Dados onde a View ser criada. Lembre-se de que, embora
uma View possa referenciar colunas de outros Bancos de Dados ou at mesmo de outras instncias do
SQL Server, uma View criada em um banco da dados.
12. Como iniciamos o assistente com a opo Views do Banco de Dados Northwind selecionada,
por padro, j vem selecionado Northwind na lista Database name. Certifique-se de que
Northwind esteja selecionado, e clique em Avanar (Next).
13. Nesta etapa, temos que definir a partir de qual ou quais tabelas a View ir retornar dados. No
nosso exemplo, somente retornar dados da tabela Orders. Selecione a tabela Orders, conforme
indicado na Figura 9.12. D um clique no boto Avanar (Next), para ir para a prxima etapa
do assistente.
14. Nesta etapa, devemos definir quais colunas, da tabela Orders, sero includas na View. Selecione
as seguintes colunas:
OrderID
OrderDate
ShippedDate
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
533 CURSO COMPLETO00
Figura 9.12 Selecionando a tabela Orders.
ShipCity
ShipCountry
Observe que estamos criando uma View que acessa apenas algumas colunas da tabela Orders.
15. D um clique no boto Avanar (Next), para ir para a prxima etapa do assistente.
Nesta etapa, podemos definir uma clusula WHERE para que a View aplique um filtro. nesta etapa
que devemos definir que somente queremos os pedidos para o Brazil como pas de destino e So Paulo
ou Campinas como cidade de destino. Neste ponto, o assistente no to assistente assim, pois
temos que escrever a clusual WHERE manualmente, ou seja, se no conhecermos a sintaxe da linguagem
T-SQL no temos como ir adiante. Mas, parece justo, pois trabalhar com um Banco de Dados Relacional,
como o SQL Server 2000, sem conhecer a linguagem SQL dureza.
16. Nesta etapa digite a seguinte clusula WHERE, conforme indicado na Figura 9.13:
WHERE (ShipCountry=Brazil) And (ShipCity=Sao Paulo or ShipCity=Campinas)
Cabe alguns comentrios sobre esta clusula WHERE. Observe que temos dois testes ligados por um
operador AND. Neste caso, para que um registro seja selecionado, o mesmo deve atender aos dois
requisitos. O campo ShipCountry deve ser Brazil e a cidade deve ser uma das duas cidades ligadas pela
clusula OR, ou seja, cidade = Sao Paulo ou cidade = Campinas.
17. D um clique no boto Avanar (Next), seguindo para a prxima etapa do assistente.
18. Nesta etapa, devemos digitar um nome para a View. No campo View name, digite
View_SP_Campinas, e clique em Avanar (Next).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
534 00CURSO COMPLETO
Figura 9.13 Definindo critrios de filtragem.
Surge a tela final do assistente. Nesta tela, exibido o comando que ser utilizado para criar a View
CREATE VIEW. Aprenderemos mais sobre este comando mais adiante. Se voc quiser alterar alguma
opo, utilize o boto Voltar (Back).
19. Para criar a View View_SP_Campinas, d um clique no boto Concluir (Finish).
20. Surge uma mensagem informando que a View foi criada com sucesso. D um clique no boto
OK para fech-la.
Voc estar de volta ao Enterprise Manager e a View ter sido criada.
Agora, vamos executar a View e conferir se os resultados retornados pela mesma, esto corretos.
Para conferir os resultados da View, faa o seguinte:
1. Localize-a na lista de Views, clique com o boto direito do mouse sobre a mesma, e no menu de
opes que surge, selecione o comando Open View -> Return all rows.
2. A View executada, e os resultados so exibidos, conforme indicado na Figura 9.14. Observe
que somente foram retornados os pedidos em que o pas de destino (ShipCountry) Brazil e a
cidade de destino (ShipCity) Sao Paulo ou Campinas, o que confirma o correto funcionamento
da nossa View.
3. Clique no x mais de baixo, para fechar a janela de resultados.
Voc estar de volta ao Enterprise Manager.
Podemos alterar a definio de uma View, simplesmente alterando o comando que a define:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
535 CURSO COMPLETO00
Figura 9.14 Resultado da execuo da View.
1. Para alterar uma View, d um clique duplo sobre a mesma.
2. Ser exibida uma janela onde podemos alterar o comando de definio da View. Altere o critrio
de Sao Paulo para Rio de Janeiro, conforme indicado na Figura 9.15.
Figura 9.15 Alterando o critrio de filtragem para o campo ShipCity.
Nesta janela, podemos fazer uma verificao na sintaxe do comando digitado. Para isso, utilizamos o boto
Check Syntax. Se o comando estiver correto, ser exibida uma janela informando que a sintaxe est OK.
Se houver algum erro, ao clicarmos no boto Check Syntax, ser emitida uma mensagem indicando
qual foi o erro. Na Figura 9.16, temos um exemplo de mensagem de erro que exibida, quando o nome
de uma das colunas est incorreto.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
536 00CURSO COMPLETO
Figura 9.16 Erro de sintaxe no comando.
Aps ter alterado o critrio de Sao Paulo para Rio de Janeiro, d um clique no boto OK para fechar a
janela de definio da View e salvar as alteraes.
Voc estar de volta ao Enterprise Manager e lista de Views do Banco de Dados Northwind.
Vamos executar novamente a View View_SP_Campinas, que agora seria melhor ser chamada de
View_RJ_Campinas, para conferir se as alteraes nos critrios de filtragem j esto funcionando
corretamente.
3. Para executar a View View_SP_Campinas, localize-a na lista de Views, clique com o boto
direito do mouse sobre a mesma e, no menu de opes que surge, selecione o comando Open
View -> Return all rows.
A View executada e os resultados so exibidos.
Observe que somente foram retornados os pedidos em que o pas de destino (ShipCountry) Brazil e
a cidade de destino (ShipCity) Rio de Janeiro ou Campinas, o que confirma o correto funcionamento
da nossa View, aps a alterao dos critrios de filtragem.
4. Clique no x mais de baixo, para fechar a janela de resultados.
Voc estar de volta ao Enterprise Manager.
Agora vamos renomear a view. Vamos alterar o nome da mesma para View_RJ_Campinas:
1. Clique com o boto direito do mouse na view View_SP_Campinas. No menu que surge, d um
clique na opo Renomear.
2. O nome antigo selecionado. Simplesmente digite o novo nome View_RJ_Campinas e tecle
Enter. A View ser renomeada.
Voc tambm pode atribuir permisses a uma View:
1. Clique com o boto direito do mouse na View. No menu que surge, d um clique na opo Propriedades.
2. Ser exibida a janela com o comando que define a View. D um clique no boto Permissions.
Surge a janela indicada na Figura 9.17. Nesta janela, podemos definir permisses para os usurios que
tem permisso de acesso ao Banco de Dados usurios que aparecem na opo users do Banco de Dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
537 CURSO COMPLETO00
Figura 9.17 Definindo permisses de acesso para a View.
Para maiores informaes sobre como funcionam e como definir permisses de acesso a objetos de um Banco de Dados, consulte o Captulo 6.
3. Clique no boto Cancelar, para fechar a janela de permisses.
4. Voc estar de volta janela Propriedades. Feche-a.
5. Voc estar de volta ao Enterprise Manager. Feche-o.
Neste exemplo, aprendemos uma srie de operaes com Views, como:
Criar uma View utilizando o assistente Create View Wizard.
Definir critrios de filtragem, utilizando uma clusula WHERE.
Executar uma View.
Alterar uma View.
Renomear uma View.
Definir permisses para uma View.
Agora vamos ao segundo exemplo, onde utilizaremos o comando New View, para criar uma nova View.
Exemplo 2: Criar uma View em que so retornados os campos, conforme indicado na Tabela 9.3.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
538 00CURSO COMPLETO
Tabela 9.3 Colunas para a View TotalPorPedido.
Este exemplo tem os seguintes objetivos:
Mostrar como criar uma View que referencia dados de vrias tabelas, no nosso caso, duas
tabelas: Order e Order Details.
Ensinar a definirmos campos calculados em uma View.
Mostrar a utilizao da clusula Order By.
Vamos chamar a View de: TotalPorPedido. Aps criar e executar esta View, devemos obter os resultados
indicados na Figura 9.18
Campo Tabela
OrderID Orders
OrderDate Orders
ShipCountry Orders
Total Este campo o valor total da nota. Este total calculado a partir de dados da tabela Order Details, onde
temos informaes sobre os diversos itens de cada pedido. Nesta tabela, temos os campos UnitPrice,
Quantity e Discount. Estes so os campos que entram no clculo do valor de cada item. Utilizaremos a
seguinte frmula: ([Quantity]*[UnitPrice])*(1-[Desconto]). Aps calculado o valor individual de cada item,
ainda temos que agrupar os diversos itens do mesmo pedido, para termos o total do pedido. Faremos estas
etapas, passo a passo.
Figura 9.18 Resultados da View TotalPorPedido.
Ento, vamos criao da View TotalPorPedido.
Para criar a View TotalPorPedido, faa o seguinte:
1. Abre o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
539 CURSO COMPLETO00
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da Databases
para expandi-la.
6. Na lista de Bancos de Dados exibida, d um clique no sinal de mais ao lado de Northwind para
exibir os objetos do mesmo.
7. D um clique na opo Views para selecion-la. No painel da direita, deve ser exibida uma
listagem com uma srie de Views que j so criadas com este Banco de Dados, durante a instalao
do SQL Server 2000, inclusive a View View_RJ_Campinas, criada no exemplo anterior.
8. Clique com o boto direito do mouse em Views e, no menu que surge, d um clique na opo
New View.
Ser exibida a janela para criao de uma nova View. Esta janela composta de quatro painis, conforme
indicado na Figura 9.19.
Figura 9.19 Janela para criao de uma nova View, com quatro painis.
Temos os seguintes painis:
Painel 1 Diagram Pane: Neste painel, so exibidas as tabelas que tem colunas referenciadas
pela View. Ainda no temos nenhuma tabela exibida neste painel. Mais adiante adicionaremos
as tabelas Orders e Detail Orders.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
540 00CURSO COMPLETO
Painel 2 Grid Pane: Neste painel, so mostrados os campos adicionados View. Para cada
campo adicionado exibida uma linha neste painel. Alm do nome do campo, temos colunas
para definir critrios de filtragem, ordenao e um Alias para o campo.
Painel 3 SQL Pane: Neste painel, medida que vamos configurando a View, vai sendo exibido
o respectivo comando T-SQL que est sendo montado. Na prtica, estamos utilizando a inter-
face grfica para montar a View mas, o que fica gravado no Banco de Dados, apenas o comando
T-SQL que define a View.
Painel 4 Results Pane: Neste painel, so exibidos os resultados da execuo da View, quando
clicamos no boto Run (boto com um ponto de exclamao vermelho).
No restante do captulo estaremos fazendo referncia a estes painis pelo nmero, por exemplo: painel 1, painel 2, etc.
O passo seguinte adicionarmos tabelas. A View TotalPorPedido acessa dados das tabelas Orders e
Order Details. Vamos adicionar estas duas tabelas.
9. Para adicionar tabelas, d um clique no boto Add Table, indicado na Figura 9.20.
Figura 9.20 O boto Add Table.
10. Surge a janela Add Table, onde podemos adicionar Tabelas (guia Tables), Views (guia Views) e
funes (guia Functions). Observe o fato de poderemos fazer com que uma View acesse dados
obtidos a partir da execuo de outras Views. Chamamos esta capacidade de Aninhar views.
11. No nosso exemplo, iremos adicionar apenas tabelas. Selecione as tabelas Orders e Order Detail,
na guia Tables, conforme indicado na Figura 9.21.
Para selecionar vrias tabelas, basta segurar a tecla Ctrl pressionada e ir clicando nas tabelas a serem selecionadas. Para selecionar
vrias tabelas, em seqncia, d um clique na primeira tabela da seqncia, mantenha pressionada a tecla Shift, e d um clique na
ltima tabela da seqncia.
12. Aps selecionar as tabelas, d um clique no boto Add. Depois, d um clique no boto Close
para fechar a janela Add Table.
Voc estar de volta janela de definio de View, com as tabelas Order e Order Details j adicionadas
no painel 1.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
541 CURSO COMPLETO00
Figura 9.21 Selecionando tabelas.
Observe que o comando T-SQL (no painel 3) j foi alterado e aparece a seguinte clusula:
FROM dbo.[Order Details] INNER JOIN
dbo.Orders ON dbo.[Order Details].OrderID = dbo.Orders.OrderID
Vamos fazer duas observaes sobre esta clusula.
Observe que o SQL Server 2000 est utilizando o nome completo das tabelas, no seguinte formato: dono.[Nome da Tabel]. Onde, por
padro, aparece o usurio dbo. Dbo simplesmente um alias para o nome do usurio que criou a tabela. O usurio que cria um objeto em
um Banco de Dados passa a ser o dono do objeto e, portanto, com permisses completas sobre o mesmo. Mais adiante, veremos que o SQL
Server 2000 utilizar a nomenclatura completa para se referir a um campo de uma tabela. Por exemplo, para se referir ao compo OrderID,
da tabela Orders, ser utilizada a seguinte nomenclatura: dbo.[Orders].[OrderId]. O formato dono.[Nome da Tabela].[Nome do campo].
Podemos notar a utiliao da clusula INNER JOIN. Esta clusula representa o relacionamento entre as tabelas. Lembrando que as tabelas
Orders e Order Detail tm um relacionamento do tipo um (tabela Orders) para Vrios (tabela Order Details), atravs do campo Order ID.
Na Figura 9.22, podemos ver as tabelas Order e Order Details j adicionadas e o comando T-SQL j
modificado.
Uma vez adicionadas as tabelas, o prximo passo definir quais campos de cada tabela faro parte da
View. Alm disso, temos um campo calculado, que chamaremos de total.
Vamos adicionar os campos indicados na Tabela 9.4.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
542 00CURSO COMPLETO
Campo Tabela
OrderID Orders
OrderDate Orders
ShipCountry Orders
Total Campo calculado, utilizando a seguinte frmula ([Quantity]*[UnitPrice])*(1-[Desconto]).
Para adicionar campos, basta clicar na caixa de seleo ao lado do respectivo campo. medida que
vamos clicando, os campos vo sendo adicionados, um em cada linha, no painel 2 e o comando T-SQL
vai sendo atualizado.
13. Clique na caixa de seleo ao lado dos campos OrderID, OrderDate e ShipCountry na tabela
Orders, para adicion-los.
Os campos so adicionados, um em cada linha do painel 2, conforme indicado na Figura 9.23.
Para cada linha do painel 2, temos as seguintes informaes:
Column: o nome da coluna, conforme definido na estrutura da tabela de origem.
Alias: Podemos atribuir um nome alternativo, um apelido, ou no linguajar da informtica, um
alias, para uma determinada coluna. O alias passa a ser o nome do campo na View.
Table: Informa o nome da tabela de origem do campo.
Figura 9.22 Tabelas Order e Order Details j adicionadas.
Tabela 9.4 Colunas para a View TotalPorPedido.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
543 CURSO COMPLETO00
Figura 9.23 Campos OrderID, OrderDate e ShipCountry j adicionados.
Output: Se estiver marcado, o campo far parte dos resultados da View, caso contrrio o campo
no far parte dos resultados. Podemos ter um campo que esteja sendo utilizado apenas para
filtrar os resultados, sendo que o mesmo no deve aparecer quando a View for executada.
Sort type: Define se a coluna deve ser utilizada como base para a ordenao dos resultados.
Podemos escolher ordem crescente ou decrescente.
Sort Order: Define a ordem de prioridade da coluna na ordenao, caso os resultados estejam
sendo ordenados por mais de uma coluna. Por exemplo, se estamos ordenando pelo pas de
destino e depois pela cidade, obteremos um resultado onde todos os pedidos para o Brazil vm
juntos na listagem e, dentro dos pedidos para o Brazil, os mesmos so ordenados pela cidade.
Por exemplo, os pedidos de Campinas sero exibidos antes dos pedidos do Rio de Janeiro e
assim por diante.
Criteria: Nesta coluna, podemos definir critrios de filtragem, os quais sero definidos em uma
clusula WHERE do comando T-SQL . Temos mais quatro colunas com OR. Estas colunas
permitem que sejam definidos critrios adicionais para o campo.
Se definirmos critrios de filtragem em mais do que um campo, os mesmos sero ligados por um operador AND. Por exemplo, se
definirmos o critrio Brazil no campo ShipCountry e Sao Paulo no campo ShipCity. Somente sero exibidos os registros que atenderem
o critrios para o campo ShipCountry E (AND) tambm o critrio para o campo ShipCity. Se o registro atender somente um ou nenhum
dos critrios, o registro no ser selecionado.
14. Para criarmos um campo calculado, digitamos a frmula de clculo na coluna Column, ou seja,
ao invs do nome do campo colocada a frmula de clculo. No nosso exemplo, digite a frmula:
([Quantity]*[UnitPrice])*(1-[Desconto]), na coluna Column, da primeira linha em branco.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
544 00CURSO COMPLETO
15. No campo Alias, vamos definir um nome para este campo calculado. Digite Total.
Agora temos um campo calculado, que determina o preo de cada item individual de cada pedido.
Vamos salvar a nossa view, antes de continuar trabalhando nela.
16. D um clique no boto Save (boto com o desenho de um disquete).
17. Surge a janela Save As. No campo Save this view as, digite o nome TotalPorPedido e d um
clique no boto OK.
Vamos executar a view e observar os resultados obtidos.
18. Para executar a View, d um clique no boto Run (boto com um ponto de exclamao vermelho).
No painel 4, so exibidos os registros obtidos, conforme indicado na Figura 9.24, onde o painel 4 foi
ampliado em relao aos demais, para dar destaque aos resultados obtidos.
Figura 9.24 Resultados da execuo da View.
Observe que no est sendo exibido o total por pedido. Ao invs disso, est sendo exibido o total para
cada item do pedido. Por exemplo, para o pedido 10248 existem trs itens. Por isso que aparecem trs
registros para o pedido 10248 e, na ltima coluna, aparece o total para cada item. O que temos que
fazer agora agrupar todos os itens do mesmo pedido e fazer com que a ltima coluna exiba a soma
dos itens. Isto feito com a clusula GROUP BY, a qual pode ser configurada na janela de criao da
View, na qual estamos trabalhando.
Vamos agrupar os resultados, para exibir o total por pedido.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
545 CURSO COMPLETO00
19. Temos que fazer com que seja exibida a coluna Group By, no painel 2. Para exibir esta coluna,
d um clique no boto Use Group By, indicado na Figura 9.25.
Figura 9.25 O boto Use Group By.
Obseve que, no painel 2, exibida uma coluna Group By, conforme indicado na Figura 9.26.
Figura 9.26 A coluna Group By.
A regra geral, que devemos lembrar para esta coluna, que os campos que tiverem valores repetidos, devem
ter a coluna configurada como Group By, que o valor padro. No nosso exemplo, o nmero do pedido
(OrderID), a data do pedido (OrderDate) e o pas de destino (ShipCountry), evidentemente, so os mesmos
para todos os itens de um mesmo pedido. Vamos tomar os trs primeiros registros como exemplo:
Estes so os trs itens para o pedido 10248. Para os campos OrderID, OrderDate e ShipCountry,
selecionamos Order By. Para o campo Total, selecionamos Sum (somar), pois queremos que os vrios
itens do pedido sejam somados para obtermos o total do pedido. Ao abrir a lista de opes na coluna
Order By, podemos ver que temos uma srie de funes disponveis, como por exemplo Sum (somar),
Avg (mdia), Min (mnimo), Max (mximo), etc.
20. Para os campos OrderID, OrderDate e ShipCountry mantenha a coluna Order By, com a opo
Order By selecionada. Para o campo Total, selecione Sum, conforme indicado na Figura 9.27.
OrderId OrderDate ShipCountry Total
10248 4/7/1996 France 98
10248 4/7/1996 France 168
10248 4/7/1996 France 174
Figura 9.27 Agrupando para obter o total por pedido.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
546 00CURSO COMPLETO
21. Para executar a View e obter uma listagem atualizada, j agrupada, e com o total por pedido, d
um clique no boto Run (boto com um ponto de exclamao vermelho).
Podemos ver os resultados atualizados, j com os itens de cada pedido agrupados e com o total por
pedido sendo exibido na coluna Total, conforme indicado na Figura 9.28.
Figura 9.28 Resultado final: Total por pedido.
Observe que somente aparece um registro por pedido.
22. D um clique no boto Save para salvar as ltimas alteraes.
O comando T-SQL que define a View, ficou assim:
SELECT dbo.Orders.OrderID, dbo.Orders.OrderDate, dbo.Orders.ShipCountry, SUM((dbo.[Order
Details].Quantity * dbo.[Order Details].UnitPrice)
* (1 dbo.[Order Details].Discount)) AS Total
FROM dbo.[Order Details] INNER JOIN
dbo.Orders ON dbo.[Order Details].OrderID = dbo.Orders.OrderID
GROUP BY dbo.Orders.OrderID, dbo.Orders.OrderDate, dbo.Orders.ShipCountry
Observe que o SQL Server 2000 est utilizando a nomenclatura completa para tabelas e campos de
tabelas. Tambm interessante salientar a utilizao da clusula GROUP BY.
Outro ponto interessante a notar a sincronizao entre a interface grfica e o comando T-SQL que vai
sendo montado no painel 3. Qualquer alterao feita na interface grfica atualiza o comando T-SQL e
qualquer alterao feita no comando T-SQL se reflete na interface grfica. Este comportamento idntico
ao comportamento da QBE Query By Example, do Microsoft Access.
Tambm podemos ocultar ou exibir os diferentes painis, para liberar mais espao no vdeo. Para isto
utilizamos os botes:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
547 CURSO COMPLETO00
Show/Hide Diagram Pane (painel 1).
Show/Hide Grid Pane (painel 2).
Show/Hide SQL Pane (painel 3).
Show/Hide Results Pane (painel 4).
Estes botes esto ilustrados na Figura 9.29. Da esquerda para a direita, temos os botes Show/Hide
Diagram Pane, Show/Hide Grid Pane, Show/Hide SQL Pane e Show/Hide Results Pane, respectivamente.
Figura 9.29 Os botes Show/Hide
Ao clicar em um destes botes, se o respectivo painel estiver oculto, o mesmo ser exibido e se estiver
sendo exibido, ao clicar no respectivo boto, o mesmo ser oculto.
Voc pode adicionar tabelas, a qualquer momento, basta utilizar o boto Add Table.
23. Tambm podemos verificar se a sintaxe do comando T-SQL est OK. Para isso, basta clicar no
boto Verify SQL, indicado na Figura 9.30.
Figura 9.30 O boto Verify SQL.
Se o comando estiver OK ser emitida a mensagem indicada na Figura 9.31.
Figura 9.31 A sintaxe do comando est OK.
24. D um clique no boto OK para fechar esta mensagem.
25. Feche a View. Para isso clique no x de baixo, pois se clicar no x de cima, ser fechado o
Enterprise Manager.
Voc estar de volta ao Enterprise Manager.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
548 00CURSO COMPLETO
Observe que a View TotalPorPedido j aparece na listagem de Views, do Banco de Dados Northwind.
Agora podemos execut-la sempre que for necessrio.
26. Para executar a View no Enterprise Manager, clique com o boto direito do mouse na View e
no menu que surge, selecione o comando Open View -> Return all rows.
No Query Analyzer, utilizamos o seguinte comando, para executar a View TotalPorPedido:
USE Northwind
SELECT * FROM TotalPorPedido
27. Feche o Enterprise Manager.
Agora faremos mais alguns exemplos, para aprendermos a criar consultas mais complexas com o Enterprise Manager. Neste primeiro
exerccio, fomos, passo a passo, salientando cada aspecto da interface, aspectos estes que sero utilizados nos prximos exemplos, onde
nos deteremos mais na criao da View em si. Por isso importante que voc tenha aprendido a utilizar a interface para construo de
Views, conforme apresentado no exemplo anterior.
MAIS ALGUNS EXEMPLOS DE VIEWS
Vamos criar uma View que informe o nmero de pedidos por pas de destino. Depois faremos com que
somente sejam exibidos os registros para os pases com mais pedidos. Nesta View, teremos apenas o
campo ShipCountry da tabela Orders e um campo OrderID. Ao agruparmos a View pelo pas de destino,
pediremos ao SQL Server 2000 que faa uma contagem do nmero de pedidos por pas de destino.
Vamos chamar esta View de NumPedPorPais.
Para criar a View NumPedPorPais, faa o seguinte:
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da Databases
para expandi-la.
6. Na lista de Bancos de Dados exibida, d um clique no sinal de mais ao lado do Banco de Dados
Northwind para exibir os objetos do mesmo.
7. D um clique na opo Views para selecion-la. No painel da direita, deve ser exibida uma
listagem com uma srie de Views, que j so criadas com este Banco de Dados, durante a
instalao do SQL Server 2000, inclusive a View TotalPorPedido, criada no exemplo anterior.
8. Clique com o boto direito do mouse em Views e, no menu que surge, d um clique na opo
New View.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
549 CURSO COMPLETO00
Ser exibida a janela para criao de uma nova View.
O primeiro passo adicionarmos tabelas. A view TotalPorPedido acessa dados somente da tabelas Orders
9. Para adicionar a tabela Orders, d um clique no boto Add Table.
Surge a janela Add Table, onde podemos adicionar tabelas (guia Tables), Views (guia Views) e funes
(guia Functions).
10. D um clique na tabela Orders para selecion-la, depois d um clique no boto Add.
11. D um clique no boto Close para voltar a janela de construo de View.
A tabela Orders j aparece no painel 1. Uma vez adicionada a tabela Orders, o prximo passo definir
quais campos faro parte da View.
12. Adicione os campos OrderID e ShipCountry. Para adicionar campos, basta clicar na caixa de
seleo ao lado do respectivo campo. medida que vamos clicando, os campos vo sendo
adicionados, um em cada linha, no painel 2 e o comando T-SQL vai sendo atualizado.
13. Clique na caixa de seleo ao lado dos campos OrderID, e ShipCountry na tabela Orders, para
adicion-los. Na coluna Alias, para o campo OrderID, digite Pedidos por Pas.
Vamos salvar a nossa View, antes de continuar trabalhando nela.
14. D um clique no boto Save (boto com o desenho de um disquete).
15. Surge a janela Save As. No campo Save this view as, digite o nome NumPedPorPais e d um
clique no boto OK.
Vamos agrupar os resultados para exibir o nmero de pedidos por pas de destino.
16. Para tanto temos que exibir a coluna Group By, no painel 2. Para exibi-la, d um clique no
boto Use Group By.
17. Obseve que no painel 2 exibida uma coluna Group By. Para o campo OrderID, selecione
Count e, para o campo ShipCountry, selecione Group By, conforme indicado na Figura 9.32.
18. Para executar a View e obter uma listagem atualizada, j agrupada, e com o nmero de pedidos,
d um clique no boto Run (boto com um ponto de exclamao vermelho).
Podemos ver os resultados atualizados, j com o nmero de pedidos por pas, conforme indicado na
Figura 9.33.
19. D um clique no boto Save para salvar as tlimas alteraes.
20. Vamos melhorar um pouco o resultado, ordenando o mesmo pelo nome do pas. Para isso,
selecione Ascending, na coluna Sort Type, para o campo ShipCountry.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
550 00CURSO COMPLETO
Figura 9.32 Agrupando para obter o nmero de pedidos por pas.
Figura 9.33 Resultado final: nmero de pedidos por pas.
21. Execute novamente a View e observe que os resultados esto ordenados pelo nome do pas.
Voc deve obter um resultado semelhante ao seguinte:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
551 CURSO COMPLETO00
Agora s falta fazer com que sejam exibidos apenas os dez registros com maior nmero de pedidos.
Para limitar os resultados a um nmero especfico de registros, vamos utilizar as propriedades da View.
Primeiro, se queremos exibir somente os registros para os dez pases com o maior nmero de pedidos,
devemos ordenar pelo nmero de pedidos, ao invs de ordenar pelo nome do pas.
22. Na coluna Sort Type, para o campo ShipCountry, exclua a ordenao Ascending. s abrir a
lista na coluna Sort Type e selecionar a opo Unsorted.
23. Na coluna Sort Type, para o campo OrderID, selecione Descending. Observe que estamos
selecionando Descending, porque queremos os dez pases com maior nmero de pedidos. Por
isso a ordenao descending, com os pases, com maior nmero de pedidos primeiro.
Agora, vamos definir, nas propriedades da View, que somente sejam exibidos dez registros.
24. Para abrir as propriedades da View, d um clique no boto Properties, conforme indicado na
Figura 9.34.
Nmero de pedidos Pas
16 Argentina
40 Austria
19 Belgium
83 Brazil
30 Canada
18 Denmark
22 Finland
77 France
... ...
Figura 9.34 O boto Properties.
25. Na janela de propriedades da View, selecione as opes conforme indicado na Figura 9.35.
26. D um clique no boto OK. Voc estar de volta View.
27. D um clique no boto Run, para executar a View.
Voc deve obter um resultado semelhante ao seguinte:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
552 00CURSO COMPLETO
Figura 9.35 Limitando o nmero de registros a dez.
O comando T-SQL, que define a view, ficou assim:
SELECT TOP 10 COUNT(OrderID) AS [Pedidos por Pas], ShipCountry
FROM dbo.Orders
GROUP BY ShipCountry
ORDER BY COUNT(OrderID) DESC
Observe a utilizao da clusula TOP 10, para limitar os resultados aos primeiros dez registros. Como
classificamos a listagem em ordem decrescente do nmero de pedidos, os primeiros dez so justamente
os registros para os dez pases com o maior nmero de pedidos.
Pedidos por Pas ShipCountry
122 USA
122 Germany
83 Brazil
77 France
56 UK
46 Venezuela
40 Austria
37 Sweden
30 Canada
28 Italy
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
553 CURSO COMPLETO00
28. Feche a view. Para isso clique no x de baixo, pois se clicar no x de cima, ser fechado o
Enterprise Manager.
Voc estar de volta ao Enterprise Manager.
Observe que a View NumPedPorPais j aparece na listagem de Views, do Banco de Dados Northwind.
Agora podemos execut-la sempre que for necessrio.
29. Para executar a View no Enterprise Manager, clique com o boto direito do mouse na View, e
no menu que surge, selecione o comando Open View -> Return all rows.
No Query Analyzer, utilizamos o seguinte comando para executar a View NumPedPorPais:
USE Northwind
SELECT * FROM NumPedPorPais
30. Mantenha o Enterprise Manager aberto.
Agora vamos criar uma View onde trabalhamos com diversos critrios. Vamos criar uma View em que
so adicionados os campos indicados na Tabela 95.
Tabela 9.5 Colunas para a View ExemplosCriterios.
Campo Tabela
OrderID Orders
OrderDate Orders
ShippedDate Orders
ShipCountry Orders
ShipCity Orders
LastName Employees
FirstName Employees
ShipCity Orders
CompanyName Customers
ComtactName Customers
Salvaremos esta View com o nome de ExemplosCritrios.
Iremos dividir este exerccio em duas partes. Primeiro, faremos a construo bsica da View, sem utilizar
nenhum critrio, depois passamos a testar diversos critrios.
Para fazer a construo bsica da View ExemplosCritrios, faa o seguinte:
1. Voc j deve estar com o Enterprise Manager aberto e com a opo Views do Banco de Dados
Northwind sendo exibida.
2. Clique com o boto direito do mouse em Views e, no menu que surge, d um clique na opo
New View.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
554 00CURSO COMPLETO
Ser exibida a janela para criao de uma nova View. O primeiro passo adicionarmos tabelas. A View
ExemplosCritrios acessa dados das tabelas Orders, Employees e Customers.
3. Para adicionar as tabelas, clique no boto Add Table.
Surge a janela Add Table, onde podemos adicionar tabelas (guia Tables), Views (guia Views) e funes
(guia Functions).
4. Selecione as tabelas Orders, Employees e Customers, depois d um clique no boto Add.
5. D um clique no boto Close para voltar janela de construo de View.
Uma vez adicionada a tabela Orders, o prximo passo definir quais campos faro parte da View.
6. Adicione os campos indicados na Tabela 9.5. Para adicionar campos, basta clicar na caixa de
seleo ao lado do respectivo campo. medida que vamos clicando, os campos vo sendo
adicionados, um em cada linha, no painel 2, e o comando T-SQL vai sendo atualizado.
Aps ter adicionado todos os campos indicados na Tabela 9.5, a View deve estar conforme indicado na
Figura 9.36.
Figura 9.36 A parte bsica da View, sem critrios, finalizada.
Vamos salvar nossa View, antes de continuar trabalhando nela.
7. D um clique no boto Save (boto com o desenho de um disquete).
8. Surge a janela Save As. No campo Save this view as, digite o nome ExemplosCriterios e d um
clique no boto OK.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
555 CURSO COMPLETO00
9. Execute a View.
Voc receber uma listagem com todos os pedidos, onde aparece o nmero do pedido, a data do
pedido, a data do envio, o pas e cidade de destino, o nome do funcionrio que fez o pedido, o nome
do cliente e o nome do contato no cliente.
Ainda no especificamos nenhum critrio de filtragem.
Antes de especificarmos critrios, vamos dar uma olhada no comando SQL gerado at o momento:
SELECT dbo.Orders.OrderID, dbo.Orders.OrderDate, dbo.Orders.ShippedDate,
dbo.Orders.ShipCountry, dbo.Orders.ShipCity, dbo.Employees.FirstName,
dbo.Employees.LastName, dbo.Customers.CompanyName,
dbo.Customers.ContactName
FROM dbo.Orders
INNER JOIN
dbo.Customers ON dbo.Orders.CustomerID = dbo.Customers.CustomerID
INNER JOIN
dbo.Employees ON dbo.Orders.EmployeeID = dbo.Employees.EmployeeID
Observe que, como acessamos dados de trs tabelas, temos dois INNER JOIN. Esta uma regra geral, o
nmero de clusulas Join igual ao nmero de tabelas menos um. Trs tabelas = 2 Joins.
Agora vamos trabalhar um pouco com critrios.
Primeiro filtro a ser aplicado: fazer com que sejam exibidos apenas os registros para o Brazil em que a
Cidade Sao Paulo.
Esta, convenhamos, uma moleza. Mas vamos l, s para aprendermos a especificar critrios nesta
interface grfica.
10. Enquanto estivermos trabalhando com os critrios, vamos ocultar o painel 1 Diagram Pane.
Para ocultar este painel, d um clique no boto Show/Hide Diagram Pane (terceiro boto da
esquerda para a direita).
11. Defina os critrios, conforme indicado na Figura 9.37.
Figura 9.37 Pedidos para o Brazil/Sao Paulo.
Neste caso, bastou digitar o valor dos critrios nos respectivos campos. Como temos critrios em mais
do que um campo, os mesmos so ligados por um operador AND. Isto significa que um registro, para
ser selecionado, ter que atender os dois critrios.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
556 00CURSO COMPLETO
Aps definirmos estes critrios, o nosso comando T-SQL fica da seguinte maneira:
SELECT dbo.Orders.OrderID, dbo.Orders.OrderDate, dbo.Orders.ShippedDate,
dbo.Orders.ShipCountry, dbo.Orders.ShipCity, dbo.Employees.FirstName,
dbo.Employees.LastName, dbo.Customers.CompanyName,
dbo.Customers.ContactName
FROM dbo.Orders
INNER JOIN
dbo.Customers ON dbo.Orders.CustomerID = dbo.Customers.CustomerID
INNER JOIN
dbo.Employees ON dbo.Orders.EmployeeID = dbo.Employees.EmployeeID
WHERE (dbo.Orders.ShipCountry = Brazil) AND (dbo.Orders.ShipCity = Sao Paulo)
Observe a adio da clusula WHERE em relao ao comando anterior. Alm disso, os dois critrios
esto ligados pelo operador AND.
12. Clique no boto Run (boto com uma exclamao vermelha) para executar a View e observe os
resultados. Somente sero retornados os pedidos para o Brazil e cidade Sao Paulo.
Mais uma vez quero reforar o fato de Brazil estar com z e Sao Paulo sem o til. que o Banco de Dados de exemplo Northwind vem
na verso em ingls, que a verso do SQL Server 2000.
Figura 9.38 Pedidos para o Brazil/Sao Paulo, para a empresa Comrcio Mineiro.
Aps definirmos estes critrios, o nosso comando T-SQL fica da seguinte maneira:
SELECT dbo.Orders.OrderID, dbo.Orders.OrderDate, dbo.Orders.ShippedDate,
dbo.Orders.ShipCountry, dbo.Orders.ShipCity, dbo.Employees.FirstName,
dbo.Employees.LastName, dbo.Customers.CompanyName,
dbo.Customers.ContactName
FROM dbo.Orders
Segundo filtro a ser aplicado: vamos refinar um pouco mais a nossa pesquisa. Vamos manter os critrios
anteriores e adicionar um critrio para o campo CompanyName. Queremos somente os pedidos para
a Empresa Comrcio Mineiro.
Mais uma barbada. O mais difcil saber porque uma empresa com sede em So Paulo se chama
Comrcio Mineiro e no Comrcio Paulista.
13. Mantenha os critrios anteriores e adicione o critrio para o campo CompanyName, conforme
indicado na Figura 9.38.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
557 CURSO COMPLETO00
INNER JOIN
dbo.Customers ON dbo.Orders.CustomerID = dbo.Customers.CustomerID
INNER JOIN
dbo.Employees ON dbo.Orders.EmployeeID = dbo.Employees.EmployeeID
WHERE (dbo.Orders.ShipCountry = Brazil) AND (dbo.Orders.ShipCity = Sao Paulo)
AND (dbo.Customers.CompanyName = Comrcio Mineiro)
14. Clique no boto Run (boto com uma exclamao vermelha) para executar a View, e observe
os resultados. Somente sero retornados os pedidos para o Brazil, cidade de Sao Paulo e para a
companhia Comrcio Mineiro.
Sero retornados cinco registros, a no ser que voc tenha alterado os dados que vem com o Banco de
Dados de exemplo Northwind.
Terceiro filtro a ser aplicado: vamos comear a aplicar filtros mais complexos. Porm, antes de definirmos
os filtros para este exemplo, elimine todos os critrios anteriores. Vamos definir os seguintes critrios,
neste exemplo:
Somente devem ser exibidos os pedidos para o primeiro semestre de 1997 (01/01/1997 -> 30/
06/1997) enviados para o Brasil.
Classificar os pedidos em ordem crescente, do campo OrderDate.
15. Exclua todos os critrios anteriores e adicione os critrios para os campos OrderDate e
ShipCountry, conforme indicado na Figura 9.39.
Figura 9.39 Pedidos para o Brazil no primeiro semestre de 1997.
16. Clique no boto Run (boto com uma exclamao vermelha) para executar a View, e observe
os resultados. Somente sero retornados os pedidos para o Brazil, em que a data do pedido
(OrderDate) est no primeiro semestre de 1997.
A seguir, so exibidos os resultados parciais obtidos com esta View:
OrderID OrderDate ShippedDate ShipCountry
10406 7/1/1997 13/1/1997 Brazil
10414 14/1/1997 17/1/1997 Brazil
10420 21/1/1997 27/1/1997 Brazil
10421 21/1/1997 27/1/1997 Brazil
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
558 00CURSO COMPLETO
Os resultados confirmam os critrios definidos.
Quarto e ltimo exemplo de filtro a ser aplicado: vamos ver um exemplo em que utilizado o operador
LIKE. Porm, antes de definirmos os filtros para este exemplo, elimine todos os critrios anteriores.
Vamos definir os seguintes critrios, neste exemplo:
Somente devem ser exibidos os pedidos para as companhias em que o nome da companhia
(CompanyName), inicie com A, B ou C.
Classificar os pedidos em ordem crescente, do campo CompanyName.
17. Exclua todos os critrios anteriores e adicione, para o campo CompanyName, o critrio indicado
na Figura 9.40.
Figura 9.40 Nome da companhia comea com as letras A, B ou C.
18. Clique no boto Run (boto com uma exclamao vermelha) para executar a View, e observe
os resultados. Somente sero retornados os pedidos que se encaixam no critrio especificado.
A seguir, so exibidos os resultados parciais obtidos com esta View:
OrderID OrderDate ShippedDate ShipCountry
10423 23/1/1997 24/2/1997 Brazil
10447 14/2/1997 7/3/1997 Brazil
10466 6/3/1997 13/3/1997 Brazil
10481 20/3/1997 25/3/1997 Brazil
10487 26/3/1997 28/3/1997 Brazil
10494 2/4/1997 9/4/1997 Brazil
10496 4/4/1997 7/4/1997 Brazil
10512 21/4/1997 24/4/1997 Brazil
10541 19/5/1997 29/5/1997 Brazil
10563 10/6/1997 24/6/1997 Brazil
10581 26/6/1997 2/7/1997 Brazil
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
559 CURSO COMPLETO00
OrderID OrderDate ShippedDate ShipCountry
OrderID CompanyName OrderDate
10308 Ana Trujillo Emparedados y helados 18/9/1996
10365 Antonio Moreno Taquera 27/11/1996
10507 Antonio Moreno Taquera 15/4/1997
10535 Antonio Moreno Taquera 13/5/1997
10573 Antonio Moreno Taquera 19/6/1997
10558 Around the Horn 4/6/1997
10355 Around the Horn 15/11/1996
10383 Around the Horn 16/12/1996
10453 Around the Horn 21/2/1997
10444 Berglunds snabbkp 12/2/1997
10445 Berglunds snabbkp 13/2/1997
10384 Berglunds snabbkp 16/12/1996
10278 Berglunds snabbkp 12/8/1996
10280 Berglunds snabbkp 14/8/1996
10524 Berglunds snabbkp 1/5/1997
10572 Berglunds snabbkp 18/6/1997
10582 Blauer See Delikatessen 27/6/1997
10501 Blauer See Delikatessen 9/4/1997
10509 Blauer See Delikatessen 17/4/1997
10584 Blondesddsl pre et fils 30/6/1997
10559 Blondesddsl pre et fils 5/6/1997
10566 Blondesddsl pre et fils 12/6/1997
10297 Blondesddsl pre et fils 4/9/1996
10265 Blondesddsl pre et fils 25/7/1996
10360 Blondesddsl pre et fils 22/11/1996
10449 Blondesddsl pre et fils 18/2/1997
10436 Blondesddsl pre et fils 5/2/1997
10326 Blido Comidas preparadas 10/10/1996
10331 Bon app 16/10/1996
10340 Bon app 29/10/1996
10362 Bon app 25/11/1996
10470 Bon app 11/3/1997
10511 Bon app 18/4/1997
10525 Bon app 2/5/1997
10492 Bottom-Dollar Markets 1/4/1997
10389 Bottom-Dollar Markets 20/12/1996
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
560 00CURSO COMPLETO
Para maiores informaes sobre o operador LIKE, consulte o Captulo 1.
OrderID OrderDate ShippedDate
ShipCountry
10410 Bottom-Dollar Markets 10/1/1997
10411 Bottom-Dollar Markets 10/1/1997
10431 Bottom-Dollar Markets 30/1/1997
10289 Bs Beverages 26/8/1996
10471 Bs Beverages 11/3/1997
10484 Bs Beverages 24/3/1997
10539 Bs Beverages 16/5/1997
10538 Bs Beverages 15/5/1997
10578 Bs Beverages 24/6/1997
10521 Cactus Comidas para llevar 29/4/1997
10259 Centro Comercial Moctezuma 18/7/1996
10254 Chop-suey Chinese 11/7/1996
10370 Chop-suey Chinese 3/12/1996
10519 Chop-suey Chinese 28/4/1997
10494 Comrcio Mineiro 2/4/1997
10466 Comrcio Mineiro 6/3/1997
10290 Comrcio Mineiro 27/8/1996
10462 Consolidated Holdings 3/3/1997
10435 Consolidated Holdings 4/2/1997
19. D um clique no boto Save para salvar as tlimas alteraes.
20. Feche a View, clicando no x de baixo.
21. Voc estar de volta ao Enterprise Manager. Feche-o.
Agora que j vimos como criar views com o Enterprise Manager, vamos ver como cri-las utilizando
comandos T-SQL no Query Analyzer.
CRIANDO VIEWS COM O QUERY ANALYZER
Criar Views com o Query Analyzer simplesmente uma questo de utilizar o comando CREATE VIEW.
Vamos estudar este comando neste item.
A sintaxe para o comando CRETE VIEW a seguinte:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
561 CURSO COMPLETO00
CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] ) ]
[ WITH < view_attribute > [ ,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]
Simplificando a sintaxe apresentada no Books OnLine, teramos o seguinte:
CREATE VIEW Nome_da_View
AS
Comando SQL
Por exemplo, para criar uma View chamada Pedidos_Teste, que retorna os campos OrderID, OrderDate,
ShipCountry e ShipCity da tabela Orders do Banco de Dados Northwind, utilizamos o seguinte comando:
USE Northwind
GO
CREATE VIEW Pedidos_Teste
AS
SELECT OrderID, OrderDate, ShipCountry
FROM Orders
importante que voc coloque o comando GO, antes do comando CREATE VIEW, caso o comando CREATE VIEW no seja o primeiro
comando. Se no utilizarmos o comando GO, ser emitida a seguinte mensagem de erro:
Server: Msg 111, Level 15, State 1, Line 2
CREATE VIEW must be the first statement in a query batch.
O mais importante para a criao de Views, utilizando o Query Analyzer, conhecer a linguagem T-
SQL. Pois uma View nada mais do que um comando T-SQL gravado em um Banco de Dados.
Quando criamos uma View, o que gravado no Banco de Dados apenas o comando T-SQL, alm de
informaes sobre permisses de acesso. Os dados, que a View retorna, so obtidos a partir das tabelas
do Banco de Dados, toda vez que a View for executada.
Informaes sobre as Views so armazenadas nas tabelas sysobjects. Informaes sobre as colunas
referenciadas em cada View so armazenadas na tabela syscolumns. Informaes sobre os objetos das
quais a View depende so armazenadas na tabela sysdepends. O texto que define o comando T-SQL da
View armazenado na tabela syscomments.
A permisso para utilizar o comando CREATE VIEW atribuda para as roles de Banco de Dados db_owner
e db_ddladmin, alm da role de servidor sysadmin.
Podemos fazer com que o texto da View, que armazenado na tabela syscomments, seja criptografado.
Isto impede que o cdigo seja acessado simplesmente atravs de um SELECT na tabela syscomments.
Ou melhor, o cdigo at que pode ser acessado, s que o mesmo estar criptografado, impedindo que
seja lido, a menos que a criptografia seja quebrada. A seguir, um exemplo de criao de uma View com
a utilizao da opo WITH ENCRYPTION:
CREATE VIEW Pedidos_Criptografada
WITH ENCRYPTION
AS
SELECT OrderID, OrderDate, ShipCountry, ShipCity
FROM Orders
WHERE ShipCountry = Alemanha
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
562 00CURSO COMPLETO
Vamos a um exemplo: criar uma view chamada Mdia_Vendas_por_Ano. Esta View deve exibir um
registro para cada ano em que existem pedidos e o valor mdio de vendas para cada ano.
O detalhe nesta View que temos que utilizar dados da tabela Orders e da tabela Order Details. Pois os
clculos do total por pedido, que vai possibilitar o clculo da mdia anual, so realizados a partir dos
campos da tabela Order Details. Alm disso, teremos que utilizar a funo Year, para extrair apenas o
ano do campo OrderDate. Depois, agrupamos o campo ano e utilizamos a funo AVG na coluna que
calcula o valor das vendas.
Para criar esta View, faa o seguinte:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server, digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo.
3. Ser aberto o Query Analyzer com o master como sendo o Banco de Dados atual. Digite e exe-
cute o seguinte comando:
USE Northwind
GO
CREATE VIEW Mdia_Vendas_por_Ano
AS
SELECT YEAR(OrderDate) AS [Ano do Pedido],
AVG(([Quantity] * [UnitPrice])* (1 -[Discount])) AS [Mdia Anual]
FROM [Orders]
INNER JOIN
[Order Details] ON [Orders].[OrderID] = [Order Details].[OrderID]
GROUP BY YEAR(OrderDate)
Agora vamos testar se a View Mdia_Vendas_por_Ano est retornando os resultados desejados.
4. Execute o seguinte comando:
SELECT * FROM Mdia_Vendas_por_Ano
Voc deve obter os resultados indicados na Figura 9.41.
Figura 9.41 Mdia anual de vendas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2000 ELEMENTOS BSICOS
563 CURSO COMPLETO00
J que estamos com o Query Analyzer aberto, vamos aprender a atribuir permisses para Views e
depois testar estas permisses.
Para uma discusso aprofundada sobre o modelo de segurana e atribuio de permisses, consulte o Captulo 6 deste livro.
No Captulo 6, havamos dado permisso para os usurios GROZA\user1 e GROZA\user2 acessar a
instncia SERVIDOR\SRVINST01. Agora, vamos adicion-los como usurios com permisso de acesso
ao Banco de Dados Northwind, da instncia SERVIDOR\SRVINST01.
1. Voc ainda deve estar com o Query Analyzer aberto e logado na instncia SERVIDOR\SRVINST01.
Execute o seguinte comando:
USE Northwind
GO
exec sp_grantdbaccess GROZA\user1
exec sp_grantdbaccess GROZA\user2
Agora vamos dar permisso de acesso para o usurio GROZA\user1 para a View Mdia_Vendas_por_Ano,
e vamos negar permisso de acesso a esta View, para o usurio GROZA\user2.
2. Para dar permisso de acesso ao usurio GROZA\user1, execute o seguinte comando:
GRANT SELECT ON Mdia_Vendas_por_Ano
TO [GROZA\user1]
3. Para negar permisso de acesso ao usurio GROZA\user2, execute o seguinte comando:
DENY SELECT ON Mdia_Vendas_por_Ano
TO [GROZA\user2]
Se o usurio GROZA\user2 tentar executar o seguinte comando:
SELECT * FROM Mdia_Vendas_por_Ano
o mesmo obter a seguinte mensagem de erro:
Server: Msg 229, Level 14, State 5, Line 1
SELECT permission denied on object Mdia_Vendas_por_Ano, database Northwind,
owner dbo.
A mensagem nos informa que o usurio no tem permisso de acesso. Isto confere com as configuraes
de permisses que fizemos.
4. Feche o Query Analyzer.
No prximo captulo e no Apndice, estaremos falando mais sobre a linguagem T-SQL e tambm sobre
funes disponveis. No exemplo anterior, utilizamos a funo Year, para extrair apenas o ano do
campo OrderDate. No prximo captulo, veremos uma srie de funes que podem ser utilizadas em
comandos T-SQL.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE II: KNOW-HOW
564 00CURSO COMPLETO
CONCLUSO
Neste captulo apresentamos os elementos bsicos para o desenvolvimento de aplicaes que se baseiam
no SQL Server 2000.
Iniciamos o captulo tratando sobre Integridade de dados e como o SQL Server 2000 faz para mant-la.
Falamos sobre os diferentes tipos de integridade e aprendemos a implement-los, utilizando Constraints.
Vimos diversos exemplos de construo de Constraints.
Depois, passamos a tratar da criao de Views. Atravs de uma View, podemos facilitar e simplificar o
acesso aos dados. Podemos ocultar a complexidade de determinadas consultas, atravs da construo
de uma View. Tudo o que a aplicao precisa fazer chamar a View, ao invs de ter que entender toda
a complexidade necessria para acessar os dados. Com a View, tambm podemos atribuir permisses
de uma maneira centralizada, o que facilita a administrao da segurana.
No prximo captulo, continuaremos tratando de desenvolvimento, tendo como base elementos do
prprio SQL Server 2000. Nos captulos seguintes Captulo 11 e Captulo 12 , passaremos a tratar do
desenvolvimento de aplicaes que acessam os Bancos de Dados do SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
565 CURSO COMPLETO00
Parte 3
DESENVOLVIMENTO
Este material no pode ser utilizado em treinamentos e em Sala de Aula
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
567 CURSO COMPLETO00
Captulo 10
DESENVOLVIMENTO NO SQL SERVER
2000 STORED PROCEDURES E TRIGGERS
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
568 00CURSO COMPLETO
INTRODUO
Neste captulo aprenderemos tpicos avanados de desenvolvimento de aplicaes no SQL Server
2000. Estaremos tratando de elementos que so criados em um Banco de Dados do SQL Server 2000 e
podem ser acessados por aplicaes desenvolvidas em Visual Basic, Delphi, ASP, etc.
Iniciaremos o captulo falando sobre Stored Procedures. Conforme veremos, existem muitas aplicaes
prticas e vantagens de utilizarmos Stored Procedures. A linguagem que utilizamos para criar Stored
Procedures, como no poderia deixar de ser em se tratando de SQL Server 2000, a linguagem T-SQL.
Stored Procedures so semelhantes a procedimentos e subrotinas em outras linguagens. Por exemplo:
Podem ser chamados por outro Stored Procedures ou por programas desenvolvidos em ASP,
Visual Basic, Delphi, etc.
Podem receber um ou mais parmetros de entrada e retornar um ou mais parmetros de sada.
Podem conter lgica de programao, como instrues de controle e de lao.
A utilizao de Stored Procedures nos fornece vantagens, como por exemplo: programao modular, execuo
mais rpida, reduo de trfego de rede e, ainda, podem ser utilizados como um mecanismo de segurana.
Depois, passaremos a estudar o mecanismo de Triggers.
Triggers so uma classe especial de Stored Procedures. Uma trigger pode ser programada para executar
sempre que um comando UPDATE, INSERTE ou DELETE for executado em um Banco de Dados. A
principal utilizao de triggers para impor Regras de Negcio ao Banco de Dados. Uma Regra de
Negcio uma regra do mundo real que deve ser respeitada pelas operaes efetuadas sobre os dados
do Banco de Dados. Vamos supor que um gerente de um determinado banco no possa aprovar mais
do que R$ 100.000,00 em emprstimos por ms. Ao inserir um novo emprstimo no Banco de Dados,
podemos fazer com que seja verificado o total de emprstimos j aprovados pelo gerente, no ms
corrente. Se o total exceder o valor mximo, o novo emprstimo no ser aprovado. Podemos inclu-
sive fazer com que o chefe imediato receba um e-mail avisando desta situao.
Tambm mostraremos um exemplo de triggers que atualizam, automaticamente, uma pgina HTML
com dados de uma ou mais tabelas. Veremos passo a passo como construir esta pgina e testaremos a
atualizao automtica da mesma.
Na parte final do captulo, estaremos tratando de alguns comandos avanados da linguagem T-SQL. Falaremos
sobre Joins avanados e os diferentes tipos de Joins existentes, sobre Sumarizao de dados. Tambm
trataremos das diversas funes que podem ser utilizadas em uma instruo SELECT. Tambm veremos
criao de subconsultas e os cuidados em relao ao desempenho, quando utilizamos subconsultas.
Este captulo apresenta uma srie de conceitos de fundamental importncia para o desenvolvimento
de aplicaes com o SQL Server 2000 ou baseadas no SQL Server 2000. Nos prximos captulos, falaremos
um pouco mais sobre aplicaes, principalmente utilizando pginas ASP para acessar um Banco de
Dados no SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
569 CURSO COMPLETO00
DESENVOLVIMENTO EM: TEORIA E DESENVOLVIMENTO
DE STORED PROCEDURES NO SQL SERVER 2000
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Saber utilizar o Enterprise Manager e o Query Analyzer.
Noes sobre Integridade de Dados e os tipos de integridade existentes no SQL Server 2000.
Noes sobre os comandos bsicos da linguagem T-SQL.
METODOLOGIA
Apresentao do conceito de Stored Procedures e dos principais comandos para a criao e teste de Stored Procedures.
TCNICA
Utilizao do Query Analyzer e do Enterprise Manager para a criao e teste de Stored Procedures.
A primeira pergunta que temos que responder a seguinte:
O que um Stored Procedure?
Resposta formal: Um Stored Procedure uma coleo de comandos, a qual atribuda um nome,
sendo que esta coleo nomeada de comandos salva no Banco de Dados.
Resposta descomplicada: Podemos gravar um conjunto de comandos, que realiza uma funo especfica
no Banco de Dados. Ao salvarmos este conjunto de comandos damos um nome ao mesmo. Pronto,
acabamos de criar um Stored Procedure.
Uma vez criado, o Stored Procedure pode ser executado sempre que for necessrio, simplesmente
chamando o Stored Procedure pelo nome, isto evita que tenhamos que digitar o conjunto de comandos
repetidamente. A utilizao de Stored Procedures uma tcnica eficiente de executarmos operaes
repetitivas. Ao invs de digitar os comandos cada vez que a operao precisa ser executada, criamos
um Stored Procedure e executamos. Isso evita que o mesmo conjunto de comandos tenha que ser
inserido em diversos locais no Banco de Dados. Se tivermos que alterar o conjunto de comandos de
uma determinada operao, basta alter-los no Stored Procedures e todos os objetos que chamam o
Stored Procedure passaro a ter acesso nova verso. Isto facilita muito as alteraes na lgica do
Banco de Dados. ou no muito parecido com a idia de Procedimentos e Funes de linguagens
como o Pascal e o C.
Em um Stored Procedure tambm podemos ter estruturas de controle e deciso, tpicas das linguagens
de programao. Em termos de desenvolvimento de aplicaes, tambm temos vantagens com a
utilizao de Stored Procedures.
Vamos imaginar que estamos criando uma aplicao em Visual Basic e que a mesma acessa dados de
um Banco de Dados do SQL Server 2000. Sem a utilizao de Stored Procedures, a aplicao precisa
enviar o conjunto de comandos T-SQL necessrios a execuo de cada tarefa. Pode ser que, em diversas
partes do programa, seja necessria a execuo da mesma tarefa. A pior tcnica possvel seria codificar
estes comandos, nos diversos pontos do programa, onde os mesmos so necessrios. Qualquer alterao
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
570 00CURSO COMPLETO
iria demandar que todo o cdigo do programa fosse revisado e as ocorrncias dos comandos alteradas.
Simplesmente um pesadelo.
Poderamos melhorar um pouco esta situao isolando o conjunto de comandos em um funo e
chamando a funo onde os comandos so necessrios. Isso faria com que apenas tivssemos que
modificar a funo, sempre que houvesse alterao na lgica de processamento dos dados. Mas imagi-
ne uma empresa grande, com milhares de usurios utilizando a aplicao em Visual Basic. Modificar
uma funo interna da aplicao, significa ter que reinstalar a aplicao em milhares de estaes de
trabalho. A tarefa de manuteno da aplicao atualizada torna-se bastante complicada.
Se, ao invs de uma funo interna da aplicao, criarmos um Stored Procedure e fizermos com que o
programa chame o Stored Procedure, para executar os comandos necessrios, teremos mais facilidades no
momento de atualizar a aplicao. Pois, neste caso, bastaria alterar o Stored Procedure e pronto, a aplicao
j passaria a ter a verso modificada, evitando uma reinstalao em milhares de estaes de trabalho.
Existem solues mais sofisticadas do que a utilizao de Stored Procedures. So as chamadas aplicaes em n camadas. Este o modelo
recomendado pela Microsoft. Falaremos sobre aplicaes de n camadas no Captulo 11.
Alm de facilitar a manuteno e alterao das aplicaes, a utilizao de Stored Procedures nos fornece
outras vantagens:
Ocultar a complexidade de acesso ao Banco de Dados: Quando utilizamos a normalizao de
tabelas, a tendncia que tenhamos um nmero elevado de tabelas no Banco de Dados. Porm,
do ponto de vista do usurio, as consultas por ele executadas envolvem dados de diversas
tabelas. Ao invs de fazer com que a aplicao tenha que tratar desta complexidade acessando
e consolidando dados de diversas tabelas para exibi-los de uma maneira consolidada para o
usurio podemos ocultar esta complexidade num Stored Procedure. O Stored Procedure
contm todos os comandos necessrios para buscar os dados necessrios e fornece os mesmos
para o usurio. A nica coisa que a nossa aplicao precisa fazer chamar o Stored Procedure e
receber os resultados. Veja que isto simplifica, enormemente, o desenvolvimento de aplicaes.
Pode receber parmetros de entrada e retornar resultados, atravs de parmetros de sada. Com
isso um Stored Procedure pode ser desenvolvido, de tal forma que receba parmetros de entrada
e, com base nos parmetros recebidos, execute diferentes comandos ou retorne diferentes
conjuntos de dados.
Reduo no trfego de rede gerado pela aplicao: Esta reduo acontece, porque ao invs da
aplicao enviar um grande nmero de comandos, enviado para o servidor apenas o pedido
de execuo do Stored Procedure e os parmetros de entrada necessrios. O Stored Procedure
executa e retorna os resultados, na forma de parmetros de sada.
Facilita e centraliza o gerenciamento de permisses. Podemos atribuir permisses em nvel de
usurio ou role para a execuo de um Stored Procedure.
Melhoria na velocidade de execuo: O SQL Server 2000 compila os comandos do Stored Pro-
cedure, na primeira vez que o mesmo executado, e mantm estes comandos na memria
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
571 CURSO COMPLETO00
cache, para agilizar as prximas execues. Isto faz com que as chamadas subseqentes executem
bem mais rpido.
Temos diversos tipos de Stored Procedures. Neste captulo aprenderemos a criar os chamados User-
defined Stored Procedures, ou seja, Stored Procedures criados (definidos) pelo usurio. Podemos criar
User-defined Stored Procedures em qualquer Banco de Dados do usurio.
Os tipos de Stored Procedures existentes so os seguintes:
User-defined Stored Procedures: So criados nos Bancos de Dados do usurio. So utilizados
para execuo de tarefas repetitivas, facilitando a manuteno e alterao das mesmas.
Temporary Stored Procedures: So criados e mantidos pelo prprio SQL Server 2000, no Banco
de Dados tempdb. Normalmente, esto associados a tarefas de manuteno e gerenciamento
de conexes de usurios com o servidor SQL Server 2000. Podemos ter dois tipos:
Store Procedures temporrios locais: O nome inicia com o sinal # e somente a conexo que
criou um Stored Procedure temporrio pode execut-lo; ao ser encerrada a conexo, o
Stored Procedure eliminado.
Stored procedures temporrios globais: O nome inicia com ## e podem ser executados por
todas as conexes ativas com o Banco de Dados, at que a conexo que criou o Stored
Procedure seja encerrada, quando ento o mesmo excludo.
System Stored Procedures: J falamos e utilizamos bastante este tipo de Stored Procedures. So
criados no momento da instalao do SQL Server 2000 e ficam gravados no Banco de Dados
master. Iniciam com sp_. So utilizados para uma srie de tarefas de manuteno e
gerenciamento dos diversos objetos e configuraes do servidor SQL Server 2000.
Extended Stored Procedures: Executam funes externas ao servidor SQL Server 2000,
normalmente funes tpicas do Sistema Operacional. So criados no momento da instalao
do SQL Server 2000 e tem o nome iniciando com xp_. Alguns System Stored Procedures tm
sua funcionalidade baseada na chamada a Extended Stored Procedures.
Ao criarmos um Stored Procedure, os comandos do mesmo so verificados em busca de erros de sintaxe.
Se houver erros, uma mensagem emitida e o Stored Procedure no poder ser salvo enquanto os erros
no forem corrigidos. Na Figura 10.1, temos um exemplo de uma mensagem de erro, na verificao da
sintaxe dos comandos de um Stored Procedure.
Figura 10.1 Erro nos comandos de um Stored Procedure.
Agora que j conhecemos o que e quais as vantagens, podemos partir para a criao de Stored Procedures.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
572 00CURSO COMPLETO
CRIANDO STORED PROCEDURES
Criar um Stored Procedure consiste, basicamente, em definir o conjunto de comandos do Stored Pro-
cedure e salvar o mesmo com um nome, no Banco de Dados.
A exemplos de outros objetos de Banco de Dados, podemos criar um Stored Procedure, utilizando trs
maneiras diferentes:
Query Analyzer.
Enterprise Manager.
Create Stored Procedure Wizard.
Vamos comear pelo Query Analyzer, para que possamos aprender os diversos comandos que podem
ser includos em um Stored Procedure.
CRIANDO STORED PROCEDURES COM O QUERY ANALYZER
Para criar um Stored Procedure, utilizamos o comando CREATE PROCEDURE. Ao criarmos Stored
Procedures devemos lembrar dos seguintes detalhes:
O tamanho mximo de um Stored Procedure 128 MB. Convenhamos que mais do que
suficiente. Se voc tiver que escrever um Stored Procedure e o mesmo for muito grande,
provvel que deva ser adotada outra soluo, como a criao de um objeto COM+ ou um Web
Service, na nova arquitetura .net da Microsoft.
Estarei falando de Web Services e da plataforma de desenvolvimento .net no meu prximo livro, a ser publicado pela Axcel Books.
Somente usurios que so membros da role de servidor sysadmin ou das roles de Banco de
Dados db_owner e db_ddladmin tm permisso para executar o comando CREATE PROCE-
DURE. Esta permisso pode ser atribuda por membros da role sysadmin, para outros usurios.
Em um Stored Procedures podemos referenciar tabelas, Views, outros Stored Procedures e tabelas
temporrias.
Podemos incluir, em um Stored Procedure, qualquer comando T-SQL, com exceo dos seguintes
comandos: CREATE PROCEDURE, CREATE DEFAULT, CREATE RULE, CREATE TRIGGER e
CREATE VIEW.
Sintaxe para o comando CREATE PROCEDURE:
CREATE PROCEDURE nome_do_stored_procedure
[
{@nome_parmetro1 tipo_de_dados_do_parmetro} [=valor_default] [OUTPUT]
]
[,..n]
AS
comando 1
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
573 CURSO COMPLETO00
comando 2
...
comando n
Vamos a um exemplo simples.
Exemplo: Criar e testar um Stored Procedure que retorna todos os registros da tabela orders, em que o
campo ShipCountry igual a London. Gravar o Stored Procedure com o nome usp_PedidosLondon. O
mesmo ser criado no Banco de Dados Northwind da instncia SERVIDOR\SRVINST01.
Estamos utilizando o prefixo usp_ para indicar user Stored Procedure. Porm esta no uma conveno obrigatria, apenas uma recomendao.
Para criar o Stored Procedure usp_PedidosLondon.
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server, digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo.
3. Ser aberto o Query Analyzer com o Banco de Dados master como sendo o Banco de Dados
atual. Digite o seguinte comando:
USE Northwind
GO
CREATE PROCEDURE usp_PedidosLondon
AS
SELECT * FROM Orders
WHERE ShipCity = London
O comando executado e a seguinte mensagem exibida:
The command(s) completed successfully.
4. Agora podemos executar o Stored Procedure sempre que for necessrio. Para execut-lo, exe-
cute o seguinte comando:
exec usp_PedidosLondon
O Stored Procedure executado, os comandos que o compem so executados e os resultados, retornados
(somente os pedidos para London), conforme indicado na Figura 10.2.
Quando criamos um Stored Procedure, o SQL Server 2000 grava informaes sobre o mesmo em uma
srie de tabelas no prprio Banco de Dados onde o Stored Procedure criado. O nome do Stored Proce-
dure armazenado na tabela sysobjects. Os comandos do Stored Procedure so armazenados na tabela
syscomments. Podemos fazer com que estes comandos sejam criptografados. Para isso utilizamos a opo
WITH ENCRYPTION. No exemplo a seguir, temos um comando que cria um Stored Procedure chamado
usp_Customers e criptografa os comandos do Stored Procedure, armazenados na tabela syscomments:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
574 00CURSO COMPLETO
USE Northwind
GO
CREATE PROCEDURE usp_Customers
WITH ENCRYPTION
AS
SELECT * FROM Customers
Figura 10.2 A execuo do Stored Procedure usp_PedidosLondon.
Na Figura 10.3, podemos ver os dados da tabela syscomments. Observe que temos um campo chamado
encrypted. Este campo indica se a coluna text ser criptografada (encrypted=1) ou ser armazenada
sem criptografia (encrypted=0). Observe a linha em destaque, onde a coluna texto est criptografada.
Figura 10.3 A tabela syscomments do Banco de Dados Northwind.
CRIANDO STORED PROCEDURES COM PARMETROS DE ENTRADA
A utilizao de parmetros de entrada permite a criao de Stored Procedures mais flexveis. Vamos
considerar o Stored Procedure usp_PedidosLondon, criado no exemplo anterior. Da maneira como foi
criado, sem parmetros de entrada, o critrio de pesquisa ser sempre o mesmo: ShipCity = London.
Podemos criar um Stored Procedure mais genrico, o qual aceita o nome da cidade como parmetro e
retorna todos os pedidos para a cidade passada como parmetro.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
575 CURSO COMPLETO00
Para criar um Stored Procedure com um ou mais parmetros de entrada, utilizamos a seguinte sintaxe:
CREATE PROCEDURE nome_StorProc
@nome_parmetro tipo_parmetro
AS
comando 1
comando 2
...
comando n
Caso tenhamos mais do que um parmetro de entrada, devemos separ-los por vrgula, conforme
indicado a seguir:
CREATE PROCEDURE
@nome_parmetro1 tipo_parmetro1,
@nome_parmetro2 tipo_parmetro2,
...
@nome_parmetron tipo_parmetron
AS
comando 1
comando 2
...
comando n
Para utilizar o parmetro nos comandos do Store Procedure, basta utilizar @nome_do_parmetro.
Vamos a alguns exemplos.
Exemplo 1: Criar um Stored Procedure chamado usp_Pedidos_Cidade. Este store procedure ser criado
no Banco de Dados Northwind, da instncia SERVIDOR\SRVINST01. O Stored Procedure deve aceitar
um parmetro chamado cidade, o qual do tipo nvarchar(15), e usar o valor passado neste parmetro
como critrio de pesquisa, para retornar apenas os pedidos para a cidade passada como parmetro.
Para criar o Stored Procedure usp_Pedidos_Cidade, faa o seguinte:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server, digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo.
3. Ser aberto o Query Analyzer com o master como sendo o Banco de Dados atual. Digite o
seguinte comando:
USE Northwind
GO
CREATE PROCEDURE usp_Pedidos_Cidade
@cidade nvarchar(15)
AS
SELECT * FROM Orders
WHERE ShipCity = @cidade
4. Para executar o Stored Procedure usp_Pedidos_Cidade, passando Campinas como parmetro,
utilizamos o seguinte comando:
Execute usp_Pedidos_Cidade Campinas
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
576 00CURSO COMPLETO
Na Figura 10.4, temos os resultados da execuo do Stored Procedure, com Campinas sendo passado
como parmetro.
Figura 10.4 Execuo de um Stored Procedure com valor do parmetro = Campinas.
5. Para executar o Stored Procedure usp_Pedidos_Cidade, passando Bruxelles como parmetro,
utilizamos o seguinte comando:
Execute usp_Pedidos_Cidade Bruxelles
Na Figura 10.5, temos os resultados da execuo do Stored Procedure, com Bruxelles sendo passado
como parmetro.
Figura 10.5 Execuo de um Stored Procedure com valor do parmetro = Bruxelles.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
577 CURSO COMPLETO00
Observe que agora temos um Stored Procedure bem mais flexvel, onde podemos informar o critrio
de pesquisa para o campo ShipCountry.
6. Feche o Query Analyzer.
Exemplo 2: Criar um Stored Procedure chamado usp_Ped_Cid_Pas. Este ser criado no Banco de Dados
Northwind, da instncia SERVIDOR\SRVINST01. O Stored Procedure deve aceitar dois parmetros:
um chamado cidade, o qual do tipo nvarchar(15), e outro chamado pas, o qual do tipo nvarchar(15).
O Stored Procedure usar os valores passados nestes parmetros como critrio de pesquisa, para retornar
apenas os pedidos para a cidade e pas de destino passados como parmetros.
Para criar o Stored Procedure usp_Ped_Cid_Pas, faa o seguinte:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server, digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo.
3. Ser aberto o Query Analyzer com o Banco de Dados master como sendo o Banco de Dados
atual. Digite o seguinte comando:
USE Northwind
GO
CREATE PROCEDURE usp_Ped_Cid_Pas
@cidade nvarchar(15),
@pas nvarchar(15)
AS
SELECT * FROM Orders
WHERE (ShipCity = @cidade) and (ShipCountry=@pas)
4. Para executar o Stored Procedure usp_Ped_Cid_Pas, passando Buenos Aires como valor para o
parmetro cidade, e Argentina como valor para o parmetro pas, utilizamos o seguinte comando:
Execute usp_Ped_Cid_Pas Buenos Aires, Argentina
5. Para executar o Stored Procedure usp_Ped_Cid_Pas, passando Sao Paulo como valor para o
parmetro cidade, e Alemanha como valor para o parmetro pas, utilizamos o seguinte comando:
Execute usp_Ped_Cid_Pas Sao Paulo, Alemanha
Evidentemente que esta ltima execuo no ir retornar nenhum registro, apenas a seguinte mensagem
ser exibida:
(0 row(s) affected)
Se passarmos apenas o parmetro cidade, ignorando o parmetro pas, conforme indicado no seguinte comando:
Execute usp_Ped_Cid_Pas Sao Paulo
iremos obter a seguinte mensagem de erro:
Server: Msg 201, Level 16, State 3, Procedure usp_Ped_Cid_Pas, Line 0
Procedure usp_Ped_Cid_Pas expects parameter @pas, which was not supplied.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
578 00CURSO COMPLETO
Observe que a mensagem informa que esperado um parmetro chamado pas (@pas) e que o mesmo
no foi informado.
Se passarmos parmetros a mais, conforme indicado no seguinte comando:
Execute usp_Ped_Cid_Pas Sao Paulo, Alemanha, 12/06/2001
iremos obter a seguinte mensagem de erro:
Server: Msg 8144, Level 16, State 2, Procedure usp_Ped_Cid_Pas, Line 0
Procedure or function usp_Ped_Cid_Pas has too many arguments specified.
6. Feche o Query Analyzer.
UTILIZANDO ESTRUTURAS DE DECISO EM UM STORED PROCEDURE
A linguagem que utilizamos para os comandos de um Stored Procedure a linguagem T-SQL. Como
toda linguagem que se preza, temos estruturas de deciso na linguagem T-SQL. A seguir, vamos apresentar
as principais estruturas de controle disponveis.
A ESTRUTURA IF...ELSE
Este o bom e velho IF que existem em qualquer linguagem. A estrutura do IF...ELSE a seguinte:
IF Teste_booleano
Comandos se o teste for verdadeiro
ELSE
Comandos se o teste for falso
Vamos a um exemplo: Criar um Stored Procedure que recebe o nome de dois pases como parmetros
de entrada. O Stored Procedure conta o nmero de pedidos enviados para cada pas. O nmero de
pedidos de cada pas armazenado em uma varivel local do Stored Procedure. Depois, um teste
efetuado, utilizando a clusula IF...ELSE e diferentes mensagens sero emitidas, dependendo do teste
ser verdadeiro ou falso. O Stored Procedure ser criado como o nome usp_ExIF e ser gravado no Banco
de Dados Northwind. As pesquisas sero feitas na tabela Orders do Banco de Dados Northwind.
O comando para criar o Stored Procedure proposto o seguinte:
USE Northwind
GO
CREATE PROCEDURE usp_ExIF
@pas1 nvarchar(15),
@pas2 nvarchar(15)
AS
Cria as variveis locais
DECLARE @TotPed1 int, @TotPed2 int
DECLARE @mensagem1 Char(100), @mensagem2 Char(100)
Define o valor de cada varivel
SET @TotPed1 = (SELECT Count(OrderID) FROM Orders WHERE ShipCountry=@pas1)
SET @TotPed2 = (SELECT Count(OrderID) FROM Orders WHERE ShipCountry=@pas2)
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
579 CURSO COMPLETO00
Executo o teste, utilizando IF...ELSE
IF (@TotPed1) > (@TotPed2)
BEGIN
SET @mensagem1= O Nmero de pedidos do primeiro pas maior
Print(@mensagem1)
END
ELSE
BEGIN
SET @mensagem2= O Nmero de pedidos do segundo pas maior
Print(@mensagem2)
END
Para executarmos este Stored Procedure, utilizamos o seguinte comando:
exec usp_ExIF Brazil,EUA
O Stored Procedure usp_ExIF executado e a seguinte mensagem emitida:
O Nmero de pedidos do primeiro pas maior
Como somos um pouco desconfiados, vamos conferir se o Stored Procedure est funcionando
corretamente. Para isso, vamos simplesmente inverter os dois parmetros, conforme indicado no
comando a seguir:
exec usp_ExIF EUA,Brazil
O Stored Procedure usp_ExIF executado e a seguinte mensagem emitida:
O Nmero de pedidos do segundo pas maior
Isto confirma o funcionamento do nosso Stored Procedure. Como ns estamos com ms intenes,
vamos tentar confundir o Stored Procedure usp_ExIF. Vamos passar o mesmo pas para os dois
parmetros, conforme indicado no comando a seguir:
exec usp_ExIF EUA,EUA
O Stored Procedure usp_ExIF executado e a seguinte mensagem emitida:
O Nmero de pedidos do segundo pas maior
Opa !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Um pequeno bug no nosso Stored Procedure????
isso mesmo.
Observe o seguinte trecho de cdigo:
IF (@TotPed1) > (@TotPed2)
BEGIN
SET @mensagem1= O Nmero de pedidos do primeiro pas maior
Print(@mensagem1)
END
ELSE
BEGIN
SET @mensagem2= O Nmero de pedidos do segundo pas maior
Print(@mensagem2)
END
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
580 00CURSO COMPLETO
Veja que apenas testamos se o nmero de pedidos do pas 1 maior do que o nmero de pedidos do
pas 2 (IF (@TotPed1) > (@TotPed2)). Se o nmero de pedidos for igual o que aconteceu quando
passamos o mesmo pas para os dois parmetros , o teste falha e sero executados os comandos da
parte ELSE. Para corrigir este pequeno bug, temos que alterar o Stored Procedure, prevendo uma terceira
situao, na qual o nmero de pedidos dos dois pases igual. Bem, digamos que este foi um bug
introduzido de propsito. Pois agora aprenderemos dois novos detalhes:
A estrutura IF com mais do que um ELSE.
O comando ALTER PROCEDURE, para alterar um Stored Procedure j existente.
Exemplo: Utilizar o comando ALTER PROCEDURE, para alterar o Stored Procedure usp_ExIF e corrigir
o bug existente. Para fazer esta alterao, utilizamos o seguinte comando:
USE Northwind
GO
ALTER PROCEDURE usp_ExIF
@pas1 nvarchar(15),
@pas2 nvarchar(15)
AS
Cria as variveis locais
DECLARE @TotPed1 int, @TotPed2 int
DECLARE @mensagem1 Char(100), @mensagem2 Char(100)
DECLARE @mensagem3 Char(100)
Define o valor de cada varivel
SET @TotPed1 = (SELECT Count(OrderID) FROM Orders WHERE ShipCountry=@pas1)
SET @TotPed2 = (SELECT Count(OrderID) FROM Orders WHERE ShipCountry=@pas2)
Executo o teste, utilizando IF...ELSE
IF (@TotPed1) > (@TotPed2)
BEGIN
SET @mensagem1= O Nmero de pedidos do primeiro pas maior
Print(@mensagem1)
END
ELSE
IF (@TotPed1)<(@TotPed2)
BEGIN
SET @mensagem2= O Nmero de pedidos do segundo pas maior
Print(@mensagem2)
END
ELSE
BEGIN
SET @mensagem3= O Nmero de pedidos dos dois pases igual
Print(@mensagem3)
END
Observe que, para alterar o store procedure, utilizamos o comando ALTER PROCEDURE e, aps a
clusula AS, temos que informar todos os comandos que iro redefinir o Stored Procedure. Os comandos
informados iro substituir o conjunto de comandos existentes.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
581 CURSO COMPLETO00
Somente o dono do Stored Procedure e as roles sysadmin, db_owner e db_ddladmin que tm permisso para executar o comando
ALTER PROCEDURE. Esta permisso no pode ser atribuda a outros usurios ou roles.
Vamos testar novamente o Stored Procedure.
Para executarmos este Stored Procedure, utilizamos o seguinte comando:
exec usp_ExIF Brazil,EUA
O Stored Procedure usp_ExIF executado e a seguinte mensagem emitida:
O Nmero de pedidos do primeiro pas maior
OK. Este o resultado esperado. Vamos continuar nossos testes. Execute o seguinte comando:
exec usp_ExIF EUA,Brazil
O Stored Procedure usp_ExIF executado e a seguinte mensagem emitida:
O Nmero de pedidos do segundo pas maior
Maravilha. Estamos quase l. S falta o derradeiro teste. Execute o seguinte comando:
exec usp_ExIF EUA,EUA
O Stored Procedure usp_ExIF executado e a seguinte mensagem emitida:
O Nmero de pedidos dos dois pases igual
Maravilha !!!!!!!!!!!!!!!
Isto comprova que o bug foi corrigido.
Mais alguns comentrios sobre o exemplo anterior:
Utilizamos a clusula DECLARE, para declarar variveis locais, que so utilizadas pelo Stored
Procedure. A sintaxe para o comando DECLARE, a seguinte:
DECLARE @varivel1 tipo, @varivel2 tipo
Para atribuir valores a uma varivel local, utilizamos o comando SET. A sintaxe para o comando
SET a seguinte:
SET @varivel = valor
Observe que o resultado retornado, por um comando SELECT, foi atribudo a uma varivel
local, como no exemplo:
SET @TotPed1 = (SELECT Count(OrderID) FROM Orders WHERE ShipCountry=@pas1)
SET @TotPed2 = (SELECT Count(OrderID) FROM Orders WHERE ShipCountry=@pas2)
Agora vamos aprender mais uma estrutura de controle.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
582 00CURSO COMPLETO
A ESTRUTURA WHILE...CONTINUE
Esta estrutura faz com que um conjunto de comandos continue sendo executado, enquanto uma
determinada condio for verdadeira.
A sintaxe para este comando a seguinte:
WHILE Teste
BEGIN
Comando1
Comando2
...
Comandon
END
Enquanto o teste for verdadeiro, os comandos dentro do bloco BEGIN...END continuaro a ser executados.
Quando a condio tornar-se falsa, a execuo continua no primeiro comando aps o CONTINUE.
Os comandos dentro do bloco BEGIN...END devem modificar o valor da varivel (ou variveis) que esto sendo testadas no incio do lao
WHILE, caso contrrio, a condio nunca se tornar falsa e o lao continuar executando sem parar. Veja o exemplo a seguir.
Exemplo: Vamos criar uma tabela chamada SomaNaturais. Esta tabela ser criada no Banco de Dados
Northwind e ter a seguinte estrutura:
Aps criar a tabela SomaNaturais, vamos criar um Stored Procedure chamado usp_CalculaSoma, o qual
calcula a soma dos n primeiros nmeros inteiros e armazena a soma nas respectivas colunas, conforme
indicado no exemplo a seguir:
E assim por diante. O valor de n ser passado como parmetro de entrada para o Stored Procedure.
O primeiro passo criar a tabela SomaNaturais. Para isto utilizamos o seguinte comando:
USE Northwind
GO
Campo Tipo
Nmero float
SomaAcumulada float
Nmero Soma Acumulada
1 1
2 3
3 6
4 10
5 15
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
583 CURSO COMPLETO00
CREATE TABLE SomaNaturais
(
Nmero float,
SomaAcumulada float
)
Agora vamos a criao do Stored Procedure:
USE Northwind
GO
CREATE PROCEDURE usp_CalculaSoma
@numero int
AS
Cria uma varivel para controle do lao
e inicializa a varivel com o valor 1.
DECLARE @contador int
SET @contador = 1
Cria uma varivel para a soma
e inicializa a varivel com o valor 0.
DECLARE @soma float
SET @soma = 0
WHILE (@contador<=@numero)
BEGIN
SET @soma = @soma + @contador
INSERT INTO SomaNaturais VALUES (@contador,@soma)
SET @contador = @contador + 1
END
Observe o comando SET @contador = @contador + 1, no interior da estrutura WHILE. Se no colocssemos este comando, a varivel
@contador jamais se tornaria igual ao parmetro @numero e o lao WHILE entraria em execuo infinita.
Agora vamos testar o Stored Procedure usp_CalculaSoma. Vamos passar como parmetro o nmero 10.
Para isso utilizamos o seguinte comando:
EXEC usp_CalculaSoma 10
A execuo deste comando retorna a seguinte mensagem:
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
Agora vamos dar um SELECT na tabela SomaNaturais. Utilize o seguinte comando:
SELECT * FROM SomaNaturais.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
584 00CURSO COMPLETO
Voc obter o seguinte resultado:
Isto comprova que o stored Procedure usp_CalculaSoma est funcionando corretamente. Poderamos
fazer uma pequena modificao nele. Se executarmos novamente o usp_CalculaSoma, os registros
existentes na tabela SomaNaturais sero mantidos e novos registros sero includos. O ideal que
somente sejam mantidos os registros da ltima execuo. Para isso, basta excluirmos os registros j
existentes. Isto feito com um comando SQL que exclui todos os registros da tabela SomaNaturais,
antes de entrar na estrutura WHILE. Vamos alterar o Stored Procedure usp_CalculaSoma para inserir
este comando SQL. Para isso, utilizamos o seguinte comando:
USE Northwind
GO
ALTER PROCEDURE usp_CalculaSoma
@numero int
AS
Elimina os registros da tabela SomaNaturais
DELETE SomaNaturais
Cria uma varivel para controle do lao
e inicializa a varivel com o valor 1.
DECLARE @contador int
SET @contador = 1
Cria uma varivel para a soma
e inicializa a varivel com o valor 0.
DECLARE @soma float
SET @soma = 0
WHILE (@contador<=@numero)
BEGIN
SET @soma = @soma + @contador
INSERT INTO SomaNaturais VALUES (@contador,@soma)
SET @contador = @contador + 1
END
Nmero SomaAcumulada
1.0 1.0
2.0 3.0
3.0 6.0
4.0 10.0
5.0 15.0
6.0 21.0
7.0 28.0
8.0 36.0
9.0 45.0
10.0 55.0
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
585 CURSO COMPLETO00
DEFININDO PARMETROS DE SADA (OU DE RETORNO) PARA UM STORED PROCEDURE
Assim como podemos passar valores, na forma de parmetros de entrada, tambm podemos receber
valores do Stored Procedure, na forma de parmetros de sada. Para definir que um parmetro de sada,
basta colocar a palavra OUTPUT aps a definio do tipo do parmetro, como no exemplo a seguir:
CREATE PROCEDURE usp_ParamSaida @paramsaida int OUTPUT
Podemos ter um ou mais parmetros de sada. Nos comandos que definem o Stored Procedure atribumos
um valor ao parmetro de sada, utilizando o comando SET. Ao ser executado o Stored Procedure, o
SQL Server retorna o valor associado com um ou mais parmetros de sada.
Vamos a um exemplo.
Exemplo: Criar um Stored Procedure que retorna o valor mdio dos pedidos para um pas que passado
como parmetro de entrada. Criar o Stored Procedure no Banco de Dados Northwind, com o nome de
usp_MdiaPedidosPas.
Para criar o Stored Procedure usp_MdiaPedidosPas, utilizamos o seguinte comando:
USE Northwind
GO
CREATE PROCEDURE usp_MdiaPedidosPas
@pas varchar(15),
@mdia float OUTPUT
AS
SET @mdia= (SELECT AVG(([Quantity]*[UnitPrice]) * (1-[Discount])) AS Media
FROM [Orders]INNER JOIN [Order Details]
ON [Orders].[OrderID] = [Order Details].[OrderID]
WHERE ([ShipCountry]=@pas))
Observe que executamos um comando SELECT que calcula a mdia para o pas passado no parmetro
de entrada @pas. O resultado deste comando SELECT atribudo varivel de sada @mdia. Vamos a
execuo deste Stored Procedure:
DECLARE @Resultado float
EXEC usp_MdiaPedidosPas Brazil, @Resultado OUTPUT
PRINT (@Resultado)
Ser retornado o seguinte resultado:
526.728
Algumas observaes importantes:
Temos que especificar o parmetro de sada tanto na criao como na execuo do Stored
Procedure, conforme indicado no exemplo:
EXEC usp_MdiaPedidosPas Brazil, @Resultado OUTPUT
O Stored Procedure executado e o valor de retorno armazenado na varivel @resultado. Depois
utilizamos o comando Print para exibir o valor desta varivel.
O nmero mximo de parmetros incluindo parmetros de entrada e sada 1024.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
586 00CURSO COMPLETO
Agora execute o seguinte comando:
DECLARE @Resultado float
EXEC usp_MdiaPedidosPas USA, @Resultado OUTPUT
PRINT (@Resultado)
Ser retornado o seguinte resultado:
697.684
EXCLUINDO UM STORED PROCEDURE
Para excluir um Stored Procedure, executamos o comando DROP PROCEDURE.
Por exemplo, para excluir o Stored Procedure usp_MdiaPedidosPas, criado no exemplo anterior,
utilizamos o seguinte comando:
DROP PROCEDURE usp_MdiaPedidosPas
Podemos excluir mais do que um Stored Procedure, passando o nome dos vrios Stored Procedures a
serem excludos, separando o nome por vrgulas, conforme indicado no exemplo a seguir:
DELETE PROCEDURE proc1, proc2, ..., procn
CRIANDO STORED PROCEDURES COM O ENTERPRISE MANAGER
Podemos utilizar o Enterprise Manager para criar Stored Procedures. Temos duas opes:
O menu New Stored Procedure.
O assistente Create Procedure Wizard.
CRIANDO STORED PROCEDURES COM A OPO NEW STORED PROCEDURES
O menu New Stored Procedure acessado clicando com o boto direito do mouse na opo Stored
Procedures do Banco de Dados onde o mesmo ser criado.
Ao clicarmos na opo New Stored Procedure, surge a janela indicada na Figura 10.6.
Nesta janela definimos o nome do Stored Procedure. Observe que a parte inicial do comando j vem definida:
CREATE PROCEDURE [OWNER].[PROCEDURE NAME] AS
Para definir o nome, substitumos o trecho [PROCEDURE NAME] pelo nome do Stored Procedure a ser
criado, como por exemplo: [usp_PedidosPorPas]. A criao do Stored Procedure se resume a definio
de seus comandos. Assim, temos que conhecer a linguagem T-SQL, pois mesmo utilizando a opo
New Stored Procedure, teremos que digitar os comandos.
Por exemplo, para criar um Stored Procedure chamado usp_PedidosBrAlAr, definiramos os comandos
de criao, conforme indicado na Figura 10.7.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
587 CURSO COMPLETO00
Figura 10.6 Janela para criao de um novo Stored Procedure.
Figura 10.7 Criando o Stored Procedure usp_PedidosBrAlAr.
Para verificar se a sintaxe dos comandos est correta, clique no boto Check Syntax. Se os comandos
estiverem corretos, ser emitida a mensagem indicada na Figura 10.8.
Figura 10.8 Syntaxe dos comandos OK.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
588 00CURSO COMPLETO
Uma vez definidos os comandos que faro parte do Stored Procedure, d um clique no boto OK e o
mesmo ser criado. O Stored Procedure, recm criado, j deve aparecer na lista de Stored Procedures do
Banco de Dados. Caso isso no acontea, d um clique na opo Stored Procedures e pressione a tecla
F5 para atualizar a listagem.
No temos como executar o Stored Procedure utilizando a interface do Enterprise Manager. Para testar
o usp_PedidosBrAlAr, abra o Query Analyzer, faa uma conexo com a instncia SERVIDOR\SRVINST01,
e execute o comando:
USE NORTHWIND
EXEC usp_PedidosBrAlAr
Sero retornados apenas os pedidos para o Brazil, Alemanha e Argentina.
No Enterprise Manager, voc pode definir as permisses para um Stored Procedure utilizando o seguinte
procedimento: Clique com o boto direito no Stored Procedure. No menu que surge, selecione o comando
Todas as tarefas -> Manage Permissions. Voc tambm pode clicar com o boto direito e selecionar o comando
Propriedades. Na janela que surge, d um clique no boto Permissions. Nos dois casos ser aberta a janela para
gerenciamento das permisses de acessso ao Stored Procedure, conforme indicado na Figura 10.9.
Figura 10.9 Gerenciando permisses para o Stored Procedure.
Voc pode renomear um Stored Procedure. Para isso, d um clique com o boto direito do mouse no
Stored Procedure e, no menu que surge, d um clique Renomear. Digite o novo nome e pressione ENTER.
Se voc renomear um Stored Procedure que est sendo chamado dentro de outros Stored Procedures, ou que est sendo chamado
dentro de uma aplicao, os Stored Procedures e as aplicaes que chamam o Stored Procedure renomeado tero que ser atualizadas,
caso contrrio deixaro de funcionar corretamente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
589 CURSO COMPLETO00
CRIANDO STORED PROCEDURES COM O ASSISTENTE CREATE PROCEDURE WIZARD
O assistente Create Procedure Wizard oferece opes mais limitadas para a criao de um Stored Proce-
dure. Ele utilizado para criar Stored Procedures que efetuam operaes bsicas em uma ou mais
tabelas. As operaes bsicas so as seguintes:
INSERT Inserir registros em uma tabela.
DELETE Excluir registros em uma tabela.
UPDATE Atualizar registros em uma tabela.
Uma utilizao prtica do assistente criar um conjunto inicial de Stored Procedures, os quais executam
as operaes bsicas descritas anteriormente. Os demais Stored Procedures podem ser criados utilizando
ou o comando CREATE PROCEDURE ou a opo New Stored Procedure.
Vamos a um exemplo prtico, para ilustrar a utilizao deste assistente.
Criar Stored Procedures para as operaes de insero, excluso e atualizao de registros, da tabela
Customers, do Banco de Dados Northwind, da instncia SERVIDOR\SRVINST01. Os Stored Procedures
sero nomeados, conforme indicado na Tabela 10.1.
Tabela 10.1 Nomes para os Stored Procedures.
Para criar os Stored Procedures solicitados, faa o seguinte:
1. Se voc no estiver com o Enterprise Manager aberto, abra-o (Iniciar -> Programas -> Microsoft
SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da Databases
para expandi-la.
6. Na lista de Bancos de Dados exibida, d um clique no sinal de mais ao lado de Northwind para
exibir os objetos do mesmo.
7. D um clique na opo Stored Procedures para selecion-la. No painel da direita, deve ser
exibida uma listagem com os Stored Procedures do Banco de Dados.
Funo Nome
INSERT usp_InsereRegistrosCustomers
DELETE usp_ExcluiRegistrosCustomers
UPDATE usp_AtualizaRegistrosCustomers
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
590 00CURSO COMPLETO
8. Selecione o comando Tools -> Wizards.
9. Na janela que surge, d um clique no sinal de mais ao lado da opo Database.
10. Surge uma lista com os assistentes disponveis para a manipulao de Bancos de Dados. D um
clique em Create Stored Procedure Wizard para selecionar esta opo, e depois clique no boto
OK para iniciar o assistente.
11. Ser exibida a tela inicial do assistente. D um clique no boto Avanar (Next), seguindo para
a prxima etapa do assistente.
Nesta etapa, devemos selecionar o Banco de Dados onde sero criados os Stored Procedures. Como ao
abrirmos o assistente, e a opo Stored Procedures, do Banco de Dados Northwind, estava selecionada,
este Banco de Dados j vem selecionado na lista Database name.
12. Certifique-se de que Northwind esteja selecionado na lista Database name, conforme indicado
na Figura 10.10, e clique em Avanar (Next).
Figura 10.10 Criando Stored Procedures no Banco de Dados Northwind.
13. Nesta etapa, podemos definir quais Stored Procedures (INSERT, DELETE ou UPDATE) sero
criados e para quais tabelas.
14. Marque as opes Insert, Delete e Update para a tabela Orders, conforme indicado na Figura
10.11 e d um clique no boto Avanar (Next).
Estaremos na etapa final do assistente.
Nesta etapa, podemos definir o nome para cada um dos Stored Procedures que est sendo criado. O
assistente define um nome padro para cada Stored Procedure, conforme indicado na Figura 10.12.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
591 CURSO COMPLETO00
Figura 10.11 Criando stored procedures para operaes bsicas na tabela Orders.
Figura 10.12 Nomes criados pelo prprio assistente.
Vamos alterar os nomes criados pelo assistente. Vamos utilizar os nomes sugeridos na Tabela 10.1.
15. Para alterar o nome de um Stored Procedure, d um clique no mesmo para selecion-lo, depois
d um clique no boto Edit.
Ser aberta a janela Edit Stored Procedures Properties, na qual voc pode digitar um novo nome para
o Stored Procedure, conforme indicado na Figura 10.13. Nesta janela, voc tambm pode definir quais
campos faro parte do comando que define o Stored Procedure. Por padro, todos os campos so
includos. Para excluir algum campo, basta desmarcar a caixa de seleo na coluna Select. Voc tambm
pode clicar no boto Edit SQL, para alterar os comandos que definem o Stored Procedure.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
592 00CURSO COMPLETO
Figura 10.13 Definindo o nome do Stored Procedure.
16. Aps ter digitado o nome, d um clique no boto OK. Voc estar de volta ao assistente e o
Stored Procedure ter sido renomeado, conforme indicado na Figura 10.14.
Figura 10.14 Stored procedure j renomeado.
17. Repita os passos 15 e 16 para renomear os demais Stored Procedures, utilizando os nomes
definidos na Tabela 10.1.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
593 CURSO COMPLETO00
18. Uma vez renomeados todos os Stored Procedures, d um clique no boto Concluir (Finish),
para encerrar o assistente e criar os Stored Procedures.
19. Uma mensagem ser emitida, indicando o nmero de Stored Procedures que foram criados. D
um clique no boto OK para fechar esta mensagem.
Voc estar de volta ao Enterprise Manager.
20. D um clique na opo Stored Procedures, no painel da esquerda.
21. Pressione a tecla F5 para atualizar a listagem de Stored Procedures do Banco de Dados Northwind.
Observe que os Stored Procedures criados pelo assistente j aparecem na listagem.
22. Feche o Enterprise Manager.
Como podemos constatar o assistente no , digamos, nenhuma maravilha. Serve somente para a
criao de Stored Procedures que realizam operaes bsicas em uma ou mais tabelas.
VERIFICANDO INFORMAES SOBRE OS STORED PROCEDURES DE UM BANCO DE DADOS
Existem algumas System Stored Procedures que nos fornecem informaes sobre os Stored Procedures
existentes em um Banco de Dados.
O COMANDO SP_HELP
Podemos utilizar o Stored Procedure sp_help, para obter informaes sobre qualquer objeto do Banco
de Dados. A sintaxe para este comando a seguinte:
exec sp_help nome_do_stored_procedure.
Por exemplo, para obter informaes sobre o Stored Procedure usp_PedidosBrAlAr, utilizamos o
seguinte comando:
USE Northwind
exec sp_help usp_PedidosBrAlAr
Sero retornadas as seguintes informaes:
Name Owner Type Created_datetime
usp_PedidosBrAlAr dbo Stored Procedure 2001-03-31 14:28:06.247
O COMANDO SP_HELPTEXT
Podemos utilizar o Stored Procedure sp_helptext, para exibir os comandos do Stored Procedure, desde que o
mesmo no tenha sido criado com a opo WITH ENCRYPTION. A sintaxe para este comando a seguinte:
exec sp_helptext nome_do_stored_procedure
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
594 00CURSO COMPLETO
Por exemplo, para obter informaes sobre os comandos do Stored Procedure usp_PedidosBrAlAr,
utilizamos o seguinte comando:
USE Northwind
exec sp_helptext usp_PedidosBrAlAr
Sero retornadas as seguintes informaes:
Text
CREATE PROCEDURE [usp_PedidosBrAlAr] AS
SELECT * From Orders
WHERE ShipCountry IN (Brazil,Argentina,Alemanha)
ORDER BY ShipCountry
ou seja, exatamente os comandos que definem o Stored Procedure.
O COMANDO SP_STORED_PROCEDURES
Este comando simplesmente retorna uma listagem dos Stored Procedures existentes no Banco de
Dados atual.
Por exemplo, para obter uma listagem de todos os Stored Procedures do Banco de Dados Northwind,
execute o seguinte comando:
USE Northwind
exec sp_stored_procedures
Com isto, encerramos o nosso estudo bsico sobre Stored Procedures. Existem livros inteiros sobre a
criao de Stored Procedures e a linguagem T-SQL. No Books OnLine, existe uma referncia completa
da linguagem T-SQL, a qual acessada atravs da opo: Transact-SQL Reference.
Agora vamos ao estudo de triggers.
DESENVOLVIMENTO EM: TEORIA E DESENVOLVIMENTO
DE TRIGGERS NO SQL SERVER 2000
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Saber utilizar o Enterprise Manager e o Query Analyzer.
Noes sobre Integridade de Dados e os tipos de integridade de dados existentes no SQL Server 2000.
Noes sobre os comandos bsicos da linguagem T-SQL.
METODOLOGIA
Apresentao do conceito de Triggers e dos principais comandos para a criao e teste de Triggers.
TCNICA
Utilizao do Query Analyzer e do Enterprise Manager para a criao e teste de Triggers.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
595 CURSO COMPLETO00
Uma trigger um tipo especial de Stored Procedure, que executado automaticamente, quando ocorrem
operaes INSERT, UPDATE ou DELETE, na tabela na qual a trigger foi configurada. Chamamos este
executar automaticamente de disparar a trigger. Podemos ter triggers associadas com uma ou mais
das operaes que alteram dados. Por exemplo, podemos ter uma trigger associada com a operao
INSERT, porm no termos nenhuma trigger associada com as operaes UPDATE e DELETE.
Triggers somente so executadas automaticamente, no podendo ser executadas atravs da utilizao
do comando Exec. Uma trigger sempre associada a uma tabela, porm os comandos que formam a
trigger podem acessar dados de outra tabela. Por exemplo, podemos criar uma trigger para a operao
INSERT na tabela Order Details. Sempre que for inserido um novo item de pedido (operao INSERT)
ser disparada uma trigger que atualiza o nvel de estoque do produto que est sendo vendido.
Com o uso de triggers, podemos definir regras mais complexas do que com a utilizao de uma Con-
straint do tipo CHECK. Estas regras mais complexas so conhecidas como Regras do Negcio, ou
seja, um conjunto de regras que define relaes entre os dados do Banco de Dados. Estas relaes
representam regras do mundo real. Por exemplo, podemos ter uma regra que impea um gerente de
aprovar financiamentos maiores do que um determinado valor. Neste caso, quando o gerente for
inserir um novo financiamento no Banco de Dados, podemos criar uma trigger que verifica se o valor
do financiamento est dentro do limite definido pela empresa. Caso o valor esteja dentro do limite, o
registro inserido no Banco de Dados, caso contrrio, o registro rejeitado e, uma ao, como por
exemplo enviar um e-mail para o chefe imediato, pode ser automaticamente executada pela trigger.
Vamos tornar um pouco mais complexa a nossa Regra de Negcio do exemplo anterior. Vamos supor
que o gerente no tenha um limite individual para cada financiamento que aprova, mas sim um limite
mensal, isto , a soma de todos os emprstimos aprovados por um gerente, dentro do ms corrente,
no pode ultrapassar um determinado valor. Esta regra aparentemente complexa, tambm pode ser
implementada atravs de uma trigger. Quando o gerente tenta inserir um novo emprstimo, a trigger
faz a totalizao dos emprstimos feitos por ele, para o ms corrente j incluindo o valor do emprstimo
que esta sendo inserido. Se o somatrio estiver abaixo do valor estipulado, o novo emprstimo
inserido, caso contrrio o mesmo rejeitado e uma ao tomada pela trigger.
Alm de Regras de Negcios, podemos utilizar triggers para modificaes em cascata, em tabelas do
Banco de Dados. Por exemplo, suponha que voc esteja excluindo um cliente da tabela Clientes. Podemos
criar uma trigger associada a ao DELETE da tabela Clientes, a qual exclui todos os pedidos (na tabela
Pedidos) do cliente que est sendo excludo. Na tabela Pedidos, podemos ter uma trigger associada a ao
DELETE, que exclui todos os itens do pedido que est sendo excludo. Estes itens esto gravados em uma
tabela Detalhes do pedido. Alm da excluso, tambm podemos criar triggers que faam atualizao em
cascata. Por exemplo, se alterarmos o cdigo de um cliente, na tabela Clientes (ao UPDATE), podemos
fazer com que uma trigger altere o cdigo nos pedidos do cliente, na tabela Pedidos.
Uma trigger somente executada aps o comando que a disparou ter sido completado. Por exemplo, se tivermos uma trigger
associada com uma ao INSERT, a trigger no ser disparada enquanto a ao INSERT no tiver sido concluda. Porm, uma trigger
includa como parte de uma transao, juntamente com o comando que a disparou. No nosso exemplo, o comando INSERT e a trigger
estariam no contexto de uma transao. Se o comando INSERT violar alguma regra definida pela trigger, podemos utilizar um roll back
na trigger, para cancelar a insero dos dados feitos pelo comando INSERT. Este mecanismo ilustrado na Figura 10.15
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
596 00CURSO COMPLETO
Figura 10.15 Trigger no contexto de uma transao.
Se o comando, que est sendo executado (INSERT, DELETE ou UPDATE), violar a definio de uma
Constraint definida para uma das colunas da tabela, a trigger no ir disparar. Alm disso, uma trigger
dispara uma nica vez para cada comando, mesmo que o comando altere dados em diversos registros.
Por exemplo, um comando UPDATE que aumenta em 20% o valor do campo PreoUnitrio de todos
os registros. Para este comando, a trigger associada ir disparar uma nica vez e no uma vez para cada
registro que for alterado.
Podemos ter mais do que uma trigger definida para uma mesma ao INSERT, UPDATE ou DELETE.
No existe uma ordem definida para a execuo de mltiplas triggers associadas com o mesmo comando.
A utilizao de mltiplas triggers para o mesmo comando no uma prtica muito comum.
O usurio dono da tabela (dbo) e membros das roles sysadmin, db_owner e db_ddladmin tm permisso
para criar e excluir triggers. Estas permisses no podem ser transferidas para outros usurios e roles.
Alm disso, o usurio dono da trigger deve ter permisso para executar todos os comandos que fazem
parte da mesma. Por exemplo, se a trigger precisa excluir dados em uma determinada tabela, o usurio
que a cria precisa ter permisso para excluir dados nesta tabela. Se o usurio que criou a trigger no
tiver permisso para executar qualquer um dos comandos que a compem, a mesma ir falhar e um
roll back ser utilizado para reverter as alteraes feitas pela trigger e pelo comando que disparou.
No SQL Server 2000, temos cinco tipos de triggers, conforme o comando com a qual a mesma associada:
DELETE.
INSERT.
UPDATE.
INSTEAD OF (novidade no SQL Server 2000).
AFTER (novidade no SQL Server 2000).
Uma trigger dos tipos DELETE, INSERT e UPDATE disparada quando os respectivos comandos so
executados. Uma trigger do tipo INSTEAD OF disparada em substituio a uma das triggers DELETE,
TRANSAO
INSERT
Regra
OK?
Commit
Transaction
Roll back
Transaction
Sim
No
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
597 CURSO COMPLETO00
INSERT ou UPDATE. Podemos criar triggers INSTEAD OF relacionadas com qualquer um dos comandos
DELETE, INSERT ou UPDATE. J uma trigger do tipo AFTER disparada aps todos os comandos de
uma trigger associada com um DELETE, INSERT ou UPDATE terem sido executados. Se tivermos mltiplas
triggers AFTER definidas em uma determinada tabela, para um determinado conjunto de comandos,
podemos especificar a ordem de execuo das diversas triggers do tipo AFTER.
Outra novidade do SQL Server 2000 que podemos especificar triggers em Views que alteram dados.
Os comandos que compem uma trigger tm acesso a duas tabelas especiais. Estas tabelas so chamadas
de deleted table e inserted table. Estas tabelas somente existem na memria do servidor, no sendo
gravadas em disco. Os registros destas tabelas somente so acessveis durante a execuo da trigger. Para
fazer referncia a estas tabelas, dentro de uma trigger, utilizamos os nomes deleted e inserted.
A tabela deleted armazena cpias dos registros afetados por um comando DELETE ou UPDATE (armazena
o registro antes das alteraes). Quando um comando DELETE ou UPDATE executado, os registros
so excludos da tabela em questo e armazenados na tabela deleted. No caso de registros que esto
sendo alterados, na tabela deleted fica uma cpia do registro antes das alteraes. Desta forma, a tabela
que est sendo alterada e a tabela deleted jamais tero registros coincidentes.
A tabela inserted armazena cpias dos registros afetados por um comando INSERT ou UPDATE. Os
registros na tabela inserted so cpias dos novos registros da tabela que disparou a trigger.
Bem, j vimos bastante teoria, agora o momento de aprendermos a criar e a testar o funcionamento
de triggers. Seguindo o mtodo utilizado at o momento, vamos aprender a criar triggers utilizando o
Query Analyzer e tambm o Enterprise Manager.
CRIANDO TRIGGERS COM O QUERY ANALYZER
Para criar triggers utilizamos o comando CREATE TRIGGER.
Sintaxe bsica para o comando CREATE TRIGGER:
CREATE TRIGGER nome_da_trigger
ON {tabela ou view}
[WITH ENCRYPTION]
{FOR | AFTER | INSTEAD OF}
{[DELETE] [,] [INSERT] [,] [UPDATE]}
[WITH APPEND]
[NOT FOR REPLICATION]
AS
comando 1
comando 2
comando 3
...
comando n
Com este comando podemos criar triggers associadas com qualquer dos comandos bsicos DELETE,
INSERT ou UPDATE , e tambm triggers do tipo INSTEAD OF e AFTER. Uma trigger pode ser associada
com mais de uma opo, por exemplo, podemos criar uma trigger que dispara em resposta a um
comando INSERT e tambm a um comando UPDATE.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
598 00CURSO COMPLETO
Nos comandos que definem a trigger (comando 1, ..., comando n), podemos incluir a maioria dos
comandos, inclusive as estruturas IF...ELESE e WHILE. No so permitidos os seguintes comandos:
ALTER DATABASE
CREATE DATABASE
DISK INIT
DISK RESIZE
DROP DATABASE
LOAD DATABASE
LOAD LOG
RECONFIGURE
RESTORE DATABASE
RESTORE LOG
Ao criarmos uma trigger, informaes sobre a mesma so armazenadas nas tabelas de sistema, sysobjects e syscomments.
Vamos ver alguns exemplos prticos. medida que formos implementando os exemplos, vou explicando
novos conceitos e comandos que forem sendo utilizados.
Exemplo 1: Vamos iniciar com um exemplo simples. Vamos criar uma trigger que evita que sejam
inseridos novos clientes na tabela Customers do Banco de Dados Northwind, em que o campo Coun-
try seja igual a China ou Indonsia. Esta trigger ser criada para a ao INSERT. Vamos cham-la de
tg_ExcluiChinaIndonsia. Esta trigger verifica se o campo Country igual a China ou Indonsia. Em
caso afirmativo, um Roll back ser chamado para cancelar a insero do registro, caso contrrio a
transao ser concluda.
Para criar a trigger tg_ExcluiChinaIndonsia, faa o seguinte:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo.
3. Ser aberto o Query Analyzer com o Banco de Dados master como sendo o Banco de Dados
atual. Digite o seguinte comando:
USE Northwind
GO
CREATE TRIGGER tg_ExcluiChinaIndonsia
ON Customers
FOR INSERT
AS
IF EXISTS(SELECT * FROM inserted WHERE Country IN (China,Indonsia))
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
599 CURSO COMPLETO00
PRINT PAS PROIBIDO !!!
ELSE
PRINT PAS PERMITIDO
Observe a utilizao da funo EXISTS(comando SQL). Esta funo retorna verdadeiro, caso o comando SQL retorne algum registro, e
falso, caso contrrio.
Agora vamos testar o funcionamento da trigger, utilizando um comando INSERT.
4. Execute o seguinte comando:
USE Northwind
GO
INSERT INTO [Customers]
( [CustomerID],[CompanyName],[ContactName],[ContactTitle],
[Address],[City],[Region],[PostalCode], [Country], [Phone], [Fax])
VALUES
(xxxxx,Empresa ABC Ltda.,Jos da Silva,Gerente,
Rua Riachuelo 80,Santa Maria,Centro,97050-010',China,220-1335',220-1314')
Ao executarmos este comando recebemos a seguinte mensagem:
PAS PROIBIDO !!!
(1 row(s) affected)
Mas, ao invs da mensagem PAS PROIBIDO !!!, ns queremos que a insero do registro seja cancelada,
caso o pas seja China ou Indonsia. Para isso, vamos alterar a trigger tg_ExcluiChinaIndonsia. Ao
invs da mensagem, vamos dar um Roll back. Como a operao INSERT e a trigger ocorrem no contexto
de uma transao, conforme descrito anteriormente, ao cancelarmos a transao estaremos cancelando
a trigger e tambm o comando INSERT.
Para alterar uma trigger, utilizamos o comando ALTER TRIGGER. A sintaxe bsica para este comando
a seguinte:
USE Northwind
GO
ALTER TRIGGER nome_trigger
ON nome_tabela
FOR { INSERT | UPDATE | DELETE }
AS
comando 1
comando 2
comando 3
...
comando n
5. Para alterar a trigger tg_ExcluiChinaIndonsia, utilizamos o seguinte comando:
USE Northwind
GO
ALTER TRIGGER tg_ExcluiChinaIndonsia
ON Customers
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
600 00CURSO COMPLETO
FOR INSERT
AS
IF EXISTS(SELECT * FROM inserted WHERE Country IN (China,Indonsia))
BEGIN
PRINT INSERO DO REGISTRO CANCELADA !!!!!!
ROLLBACK
END
ELSE
PRINT PAS PERMITIDO
Agora vamos tentar inserir um cliente em que o campo Country igual a Indonsia. Vamos verificar se
a trigger foi disparada e depois daremos um SELECT para verificar se a insero do registro, foi realmente
cancelada.
Para inserir um registro em que o pas Indonsia, execute o seguinte comando:
USE Northwind
GO
INSERT INTO [Customers]
([CustomerID],[CompanyName],[ContactName],[ContactTitle],
[Address],[City],[Region],[PostalCode], [Country], [Phone], [Fax])
VALUES
(ABC12,Empresa 123 Ltda.,Para Pedro,Gerente,
Rua Riachuelo 444,Porto Alegre,Centro,97051-230',Indonsia,220-
4444',223-1344')
Este comando retorna a seguinte mensagem:
INSERO DO REGISTRO CANCELADA !!!!!!
7. Vamos conferir se o comando INSERT realmente foi cancelado. Para verificar se o registro para
a Indonsia no foi inserido, execute o seguinte comando:
USE Northwind
GO
SELECT * FROM Customers
WHERE CustomerID=ABC12'
O resultado ser:
(0 row(s) affected)
Isto comprova que o comando INSERT foi cancelado.
Veja que agora temos uma trigger, que dispara sempre que tentarmos inserir um registro na tabela
Customers. Esta trigger verifica se o registro que est sendo inserido possui um valor igual a China ou
Indonsia, no campo Country. Caso o registro tenha um destes valores no campo Country, a insero
ser cancelada atravs da utilizao de um comando ROLLBACK. O comando ROLLBACK cancela a
execuo da transao, da qual fazem parte a trigger e o comando INSERT que disparou a trigger.
Como o comando INSERT faz parte da transao que est sendo cancelada, este cancelado e a insero
do registro tambm.
8. Feche o Query Analyzer.
Com este exemplo vimos, na prtica, a ao de uma trigger. Agora, vamos a mais alguns exemplos,
para ilustrar outros tipos de triggers.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
601 CURSO COMPLETO00
Exemplo 2: Vamos supor que, por ordem da administrao, no devem ser feitas alteraes nem inseres
na tabela Customers. Para garantir que esta norma seja respeitada, voc deve implementar uma trigger,
que dispare em resposta aos comandos INSERT e UPDATE na tabela Customers. Esta trigger deve emitir
um aviso que as alteraes e inseres de clientes esto suspensas e registrar em uma tabela, chamada
TentouAlterar, o nome do cliente que tentou-se alterar ou inserir e tambm o nome do usurio logado
que tentou fazer a insero ou alterao. Vamos chamar esta trigger de tg_NoAlteraInsereCliente. A
tabela TentouAlterar ter a estrutura indicada na Tabela 10.2.
Tabela 10.2 Estrutura da tabela TentouAlterar.
Para criar a trigger tg_NoAlteraInsereCliente, faa o seguinte:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo.
Ser aberto o Query Analyzer com o master como sendo o Banco de Dados atual.
3. O primeiro passo criar a tabela TentouAlterar. Para isso, digite o seguinte comando:
USE Northwind
CREATE TABLE TentouAlterar
(
Cliente nvarchar(50) NOT NULL,
Usurio char(30) NOT NULL
)
4. Para criar a trigger tg_NoAlteraInsereCliente, utilize o seguinte comando:
USE Northwind
GO
CREATE TRIGGER tg_NoAlteraInsereCliente
ON Customers
FOR INSERT,UPDATE
AS
Varivel que ser utilizada na trigger
DECLARE @NomeCliente nvarchar(50)
Verificamos se foi feita uma alterao.
IF EXISTS(SELECT * FROM deleted)
BEGIN
Defino o valor da varivel @NomeCliente
SET @NomeCliente = (SELECT CompanyName FROM deleted)
INSERT INTO [TentouAlterar]
([Cliente],[Usurio])
VALUES
(@NomeCliente,CURRENT_USER)
Campo Tipo
Cliente nvarchar(50)
Usurio char(30)
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
602 00CURSO COMPLETO
PRINT VOC NO PODE ALTERAR O REGISTRO DE UM CLIENTE !!!!
ROLLBACK
END
Verifico se foi feita uma insero.
ELSE
IF EXISTS(SELECT * FROM inserted)
BEGIN
Defino o valor da varivel @NomeCliente
SET @NomeCliente = (SELECT CompanyName FROM inserted)
INSERT INTO [TentouAlterar]
([Cliente],[Usurio])
VALUES
(@NomeCliente,CURRENT_USER)
PRINT VOC NO PODE INSERIR NOVOS CLIENTES!!!!
ROLLBACK
END
ELSE
BEGIN
PRINT ESTA MENSAGEM NUNCA SER EXIBIDA !!!!
END
Observe que, na definio da trigger, associamos a mesma com as aes INSERT e UPDATE FOR INSERT,UPDATE. Tambm observe a
utilizao, novamente, da funo EXISTS. Tambm utilizamos a funo CURRENT_USER para capturar o nome do usurio atualmente
logado no SQL Server e que executou o comando INSERT ou UPDATE.
Agora vamos testar o funcionamento da trigger, utilizando um comando INSERT.
5. Execute o seguinte comando:
USE Northwind
GO
INSERT INTO [Customers]
( [CustomerID],[CompanyName],[ContactName],[ContactTitle],
[Address],[City],[Region],[PostalCode], [Country], [Phone], [Fax])
VALUES
(123hh,Empresa hhh Ltda.,Jos Pereira,Gerente,
Rua Riachuelo 80,Santa Maria,Centro,97050-010',China,220-1335',220-1314')
Voc receber a seguinte mensagem:
INSERO DO REGISTRO CANCELADA !!!!!!
E agora, Jos? A mensagem no deveria ser:
VOC NO PODE INSERIR NOVOS CLIENTES!!!!
6. Acontece que temos uma outra trigger, criada anteriormente, chamada
tg_ExcluiChinaIndonsia, a qual tambm est associada com a ao INSERT. Foi esta trigger
que disparou, emitiu a mensagem INSERO DO REGISTRO CANCELADA !!!!!! e deu um
Roll back na transao. Vamos excluir esta trigger. Para excluir uma trigger, utilizamos o comando
DROP TRIGGER nome_trigger. Execute o seguinte comando:
USE Northwind
GO
DROP TRIGGER tg_ExcluiChinaIndonsia
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
603 CURSO COMPLETO00
7. Agora execute novamente o seguinte comando INSERT:
USE Northwind
GO
INSERT INTO [Customers]
( [CustomerID],[CompanyName],[ContactName],[ContactTitle],
[Address],[City],[Region],[PostalCode], [Country], [Phone], [Fax])
VALUES
(123hh,Empresa hhh Ltda.,Jos Pereira,Gerente,
Rua Riachuelo 80,Santa Maria,Centro,97050-010',China,220-1335',220-1314')
Agora a mensagem a seguinte:
(1 row(s) affected)
VOC NO PODE INSERIR NOVOS CLIENTES!!!!
Esta mensagem emitida pela trigger tg_NoAlteraInsereCliente, a qual detectou que tentamos executar
uma operao INSERT e impediu que a mesma fosse executada.
8. Vamos conferir se a operao realmente foi cancelada. Execute o seguinte comando:
USE Northwind
GO
SELECT * FROM Customers
WHERE CustomerID=123hh
O resultado deve ser:
(0 row(s) affected)
Isto comprova que o registro no foi inserido.
Agora vamos testar se a trigger est realmente funcionando para alteraes UPDATE.
9. Execute o seguinte comando:
USE Northwind
GO
Executo o UPDATE para disparar a trigger.
UPDATE [Customers]
SET [CustomerID] = XXX12,
[CompanyName] = XXX Ltda.,
[ContactName] = Jos Costa,
[ContactTitle] = Gerente,
[Address] = Rua ABC 123,
[City] = Lajeado,
[Region] = Central,
[PostalCode] = 11111-111,
[Country] = Brazil,
[Phone] = 111-1111,
[Fax] = 111-1111
WHERE [CustomerID]=RICAR
Um parntese: se voc receber a seguinte mensagem de erro:
Server: Msg 547, Level 16, State 1, Line 1
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
604 00CURSO COMPLETO
UPDATE statement conflicted with COLUMN REFERENCE constraint FK_Orders_Customers.
The conflict occurred in database Northwind, table Orders, column CustomerID.
The statement has been terminated.
Isto acontece por causa do relacionamento entre a tabela Customers e a tabela Orders. Lembre que
uma trigger somente disparada depois que o comando associado tiver sido completado. No nosso
exemplo, a trigger somente vai disparar depois que o comando UPDATE tiver sido executado. Se o
comando UPDATE violar alguma Regra de Negcio, a trigger chama um ROLL BACK e cancela as
alteraes feitas pelo comando. Acontece, neste caso, que o UPDATE no consegue executar devido ao
relacionamento com a tabela Orders. Pois se alterarmos o campo CustomerID na tabela Customers,
existiro registros na tabela Orders, para um CustomerID que no existe mais. O que temos que fazer
habilitar a atualizao em cascata, ou seja, quando o registro do cliente for alterado, todos os seus
pedidos, na tabela Orders, tambm sero atualizados com o novo valor do campo CustomerID. Feito
isso, a trigger disparada; como alteraes no so permitidas neste nosso exemplo, a trigger chama
um Roll back e cancela as alteraes feitas na tabela Customer e na tabela relacionada Orders. Para
habilitar a atualizao em cascata, entre a tabela Customer e Orders, faa o seguinte:
1. Abra o Enterprise Manager e navegue at o Banco de Dados Northwind, da instncia
SERVIDOR\SRVINST01.
2. D um clique no sinal de mais ao lado do Banco de Dados Northwind, para exibir as opes do
mesmo. Clique na opo Diagramas.
Por padro, no temos nenhum diagrama. Vamos criar um novo diagrama para termos acesso ao
relacionamento entre a tabela Customers e Orders e podermos alterar este relacionamento, habilitando
a alterao em cascata.
3. Clique com o boto direito do mouse em Diagrams e selecione o comando New Database Diagram.
4. Surge o assistente Create Database Diagram Wizard. D um clique no boto Avanar (Next),
para ir para a prxima etapa do assistente.
5. Surge uma tela onde podemos adicionar as tabelas que faro parte do diagrama. Adicione as
tabelas Customers e Orders, conforme indicado na Figura 10.16.
6. D um clique no boto Avanar (Next), seguindo para a prxima etapa do assistente. Voc
estar na etapa final.
7. D um clique no boto Concluir (Finish).
Observe a linha ligando as tabelas Customer e Orders. Esta linha representa, graficamente, o
relacionamento entre as duas tabelas, conforme indicado na Figura 10.17.
8. Clique na linha do relacionamento para selecion-la. Note que a mesma fica em negrito; d
um clique com o boto direito do mouse na linha, e no menu que surge d um clique na opo
Propriedades.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
605 CURSO COMPLETO00
Figura 10.17 O relacionamento entre as tabelas Customer e Orders.
9. Na janela que surge, selecione a opo Cascade Update Related Fields, conforme indicado na
Figura 10.18.
10. D um clique no boto Fechar. Voc estar de volta janela do diagrama.
11. D um clique no boto Save (primeiro boto da esquerda para a direita).
Figura 10.16 Adicionando as tabelas Customers e Orders.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
606 00CURSO COMPLETO
Figura 10.18 Definindo a opo Cascade Update Related Fields.
12. Surge uma janela pedindo o nome do diagrama. Digite Diagrama de Teste, para o nome, e d
um clique no boto OK.
13. Feche o Enterprise Manager.
Agora quando o registro do cliente for alterado, havendo alteraes no campo CustomerID, os registros
da tabela Orders tambm sero alterados.
O comando executado e a seguinte mensagem exibida:
(1 row(s) affected)
VOC NO PODE ALTERAR O REGISTRO DE UM CLIENTE !!!!
Esta mensagem emitida pela trigger tg_NoAlteraInsereCliente, a qual detectou que tentamos executar
uma operao UPDATE e impediu que a mesma fosse executada.
14. Vamos conferir se a operao realmente foi cancelada. Execute o seguinte comando, no Query
Analyzer.
USE Northwind
GO
SELECT * FROM Customers
WHERE CustomerID=XXX12'
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
607 CURSO COMPLETO00
O resultado deve ser:
(0 row(s) affected)
15. Isto comprova que o registro no foi alterado. Neste caso inclusive as alteraes em cascata,
feitas na tabela Orders, foram canceladas. Para comprovar este fato, execute o seguinte comando:
USE Northwind
GO
SELECT * FROM Orders
WHERE CustomerID=XXX12'
O resultado deve ser:
(0 row(s) affected)
16. Feche o Query Analyzer.
Com estes exemplos, podemos ver como uma trigger disparada e como a mesma interage com as
tabelas de um Banco de Dados. A utilizao de triggers, abre um leque de opes para a implementao
de Regras de Negcio. Quanto mais conhecermos da linguagem T-SQL, mais poderemos obter com a
utilizao de triggers. Para uma referncia completa da linguagem T-SQL, consulte o tpico Transact-
SQL Reference, no Books OnLine.
Agora vamos aprender a criar triggers utilizando o Enterprise Manager.
CRIANDO TRIGGERS COM O ENTERPRISE MANAGER
Podemos criar, alterar e excluir triggers, utilizando o Enterprise Manager. Por exemplo, para gerenciar
as triggers da tabela Customers, do Banco de Dados Northwind, da instncia SERVIDOR\SRVINST01,
faa o seguinte:
1. Abra o Enterprise Manager (Iniciar -> Programas -> Microsoft SQL Server -> Enterprise Manager).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. D um clique no sinal de mais ao lado de SQL Server Group para expandir esta opo.
4. Clique no sinal de mais ao lado da instncia SERVIDOR\SRVINST01 para expandi-la.
5. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado de Databases
para expandi-la.
6. Na lista de Bancos de Dados exibida, d um clique no sinal de mais ao lado de Northwind para
exibir os objetos do mesmo.
7. D um clique na opo Tables, para exibir a listagem com as tabelas do Banco de Dados Northwind.
8. Na listagem de tabelas, localize a tabela Customers, clique com o boto direito do mouse na
mesma e, no menu que surge, selecione o comando Todas as tarefas -> Manage Triggers.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
608 00CURSO COMPLETO
Surge a janela Trigger Properties.
Na lista name, por padro vem selecionada a opo New.
No campo Text, voc define o comando para a trigger, exatamente como definamos no Query Ana-
lyzer. Voc pode utilzar o boto Check Syntax para verificar se o comando digitado est correto. Para
definir o nome da nova trigger, basta substituir o texto [TRIGGER NAME], pelo nome da nova trigger.
9. Na lista Name, voc pode selecionar o nome de uma trigger j existente, para alterar os comandos
da trigger. Por exemplo, na Figura 10.19, selecionamos a trigger tg_NoAlteraInsereCliente,
criada em um dos exemplos anteriores.
Figura 10.19 Alterando uma trigger existente.
10. Aps alterar os comandos, basta clicar no boto Apply, que as alteraes sero salvas.
11. Voc tambm pode excluir uma trigger. Basta selecion-la na lista Name e depois clicar no
boto Delete. Surge uma janela pedindo confirmao para excluir a trigger.
12. Para sair sem salvar as alteraes, clique no boto Close. Se voc efetuou alguma alterao, o
SQL Server emite uma mensagem avisando que alteraes foram feitas e pedindo se voc deseja
salv-las, conforme indicado na Figura 10.20.
Figura 10.20 Confirmao para salvar as alteraes efetuadas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
609 CURSO COMPLETO00
13. Se surgir a janela indicada na Figura 10.20, d um clique em No para fech-la e descartar as
alteraes efetuadas.
Conforme podemos constatar, a criao de triggers com o Enterprise Manager no difere muito da
criao com o Query Analyzer. Em resumo, temos que conhecer a linguagem T-SQL para que possamos
criar a trigger.
MAIS ALGUNS COMANDOS RELACIONADOS COM TRIGGERS
Vamos ver mais alguns comandos relacionados com triggers. Podemos executar estes comandos no
Query Analyzer.
O COMANDO SP_HELPTEXT
Este comando retorna o cdigo da trigger. A sintaxe para este comando a seguinte:
exec sp_helptext nome_trigger1
Se executarmos o seguinte comando:
USE Northwind
GO
exec sp_helptext tg_NoAlteraInsereCliente
obteremos o seguinte resultado:
CREATE TRIGGER tg_NoAlteraInsereCliente
ON Customers
FOR INSERT,UPDATE
AS
Varivies que sero utilizadas na trigger
DECLARE @NomeCliente nvarchar(50)
Verificamos se foi feita uma alterao.
IF EXISTS(SELECT * FROM deleted)
BEGIN
Defino o valor da varivel @NomeCliente
SET @NomeCliente = (SELECT CompanyName FROM deleted)
INSERT INTO [TentouAlterar]
([Cliente],[Usurio])
VALUES
(@NomeCliente,CURRENT_USER)
PRINT VOC NO PODE ALTERAR O REGISTRO DE UM CLIENTE !!!!
ROLLBACK
END
Verifico se foi feita uma insero.
ELSE
IF EXISTS(SELECT * FROM inserted)
BEGIN
Defino o valor da varivel @NomeCliente
SET @NomeCliente = (SELECT CompanyName FROM inserted)
INSERT INTO [TentouAlterar]
([Cliente],[Usurio])
VALUES
(@NomeCliente,CURRENT_USER)
PRINT VOC NO PODE INSERIR NOVOS CLIENTES!!!!
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
610 00CURSO COMPLETO
ROLLBACK
END
ELSE
BEGIN
PRINT ESTA MENSAGEM NUNCA SER EXIBIDA !!!!
END
Este exatamente o cdigo da trigger.
O COMANDO SP_HELPTRIGGER
Este comando retorna o nome das triggers existentes em uma tabela. A sintaxe para este comando a seguinte:
exec sp_helptrigger nome_tabela
Se executarmos o seguinte comando:
USE Northwind
GO
exec sp_helptrigger Customers
obteremos o seguinte resultado:
trigger_name trigger_owner isupdate isdelete isinsert isafter isinsteadof
tg_MantmBrazilArgentina dbo 0 1 0 1 0
tg_NoAlteraInsereCliente dbo 1 0 1 1 0
As colunas is... indicam o tipo de trigger. Por exemplo, isupdate=1 indica que a trigger disparada por
um comando UPDATE; isdelete=1 indica que a trigger disparada por um comando DELETE e assim
por diante.
HABILITANDO E DESABILITANDO TRIGGERS
Podemos desabilitar temporariamente, uma trigger. Para desabilitar uma trigger utilizamos o comando:
ALTER TABLE nome_da_tabela
DISBLE TRIGGER nome_da_trigger
Por exemplo, para desabilitar a trigger tg_NoAlteraInsereCliente, da tabela Customers, utilizamos o
seguinte comando:
USE Northwind
GO
ALTER TABLE Customers
DISABLE TRIGGER tg_NoAlteraInsereCliente
Para habilitar novamente a trigger tg_NoAlteraInsereCliente, utilizamos o seguinte comando:
USE Northwind
GO
ALTER TABLE Customers
ENABLE TRIGGER tg_NoAlteraInsereCliente
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
611 CURSO COMPLETO00
Poderamos desabilitar uma trigger, por exemplo, quando estamos fazendo uma importao de um grande
volume de dados para uma determinada tabela. Se estivermos certos que os dados atendem s Regras do
Negcio, podemos desabilitar a trigger durante a importao, para evitar que a mesma seja disparada, o
que pode agilizar a importao. Uma vez finalizada a importao, voltamos a habilitar a trigger.
Com isso encerramos o nosso estudo de triggers. Vamos agora estudar algumas comandos avanadas
da linguagem T-SQL.
DESENVOLVIMENTO EM: COMANDOS AVANADOS DA LINGUAGEM T-SQL
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Saber utilizar o Enterprise Manager e o Query Analyzer.
Noes sobre os comandos bsicos da linguagem T-SQL.
METODOLOGIA
Apresentao de alguns comandos avanados da linguagem T-SQL.
TCNICA
Criao de exemplos que utilizam os comandos avanados apresentados.
Neste item, vamos tratar de alguns comandos e tcnicas avanadas da linguagem T-SQL. Falaremos
sobre os seguintes itens:
Pesquisando mltiplas tabelas.
Utilizando subconsultas.
PESQUISANDO DADOS EM MLTIPLAS TABELAS
comum a situao em que, para construir uma View (consulta), temos que acessar dados de duas ou
mais tabelas. Por exemplo, se quisermos uma listagem com o nome do funcionrio, o nmero do
pedido, a data do pedido e o pas de destino, teremos que acessar dados das seguintes tabelas do Banco
de Dados Northwind.
Customers
Orders
Order Details
Para que possamos acessar dados de duas ou mais tabelas, em uma consulta, utilizamos uma clusula
Join. Um Join uma operao que nos permite acessar dados de duas ou mais tabelas. O JOIN
efetuado com base em uma coluna que seja comum a duas ou mais tabelas. Por exemplo, se fizermos
um Join entre as tabelas Orders e Order Details, o mesmo ser efetuado atravs da coluna OrderID, que
a coluna que relaciona as duas tabelas. Na tabela Order Details, o campo OrderID utilizado para
indicar a qual pedido pertence um determinado item.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
612 00CURSO COMPLETO
Vamos a um exemplo de utilizao do Join.
Exemplo: Escrever um comando SQL que retorne os campos indicados na Tabela 10.3.
Tabela 10.3 Campos Tabelas.
Esta listagem ir retornar uma linha para cada item de cada pedido, com os campos indicados na
Tabela 10.3. Por exemplo, se um campo tiver cinco itens, sero retornadas cinco linhas, com o mesmo
valor para o campo OrderID e OrderDate, e diferentes valores para os demais campos. Para construir a
listagem solicitada, utilizamos o seguinte comando:
SELECT [Orders].[OrderID], [Orders].[OrderDate], [Order Details].[ProductID],
[Order Details].[UnitPrice],[Order Details].[Quantity]
FROM [Order Details]
JOIN
[Orders]
ON
[Order Details].[OrderID] = [Orders].[OrderID]
Observe que estamos utilizando a sintaxe [NomeDaTabela].[NomeDoCampo].
Campo Tabela
OrderID Orders
OrderDate Orders
ProductID Order Details
UnitPrice Order Details
Quantity Order Details
O resultado parcial indicado na listagem a seguir:
OrderID OrderDate ProductID UnitPrice Quantity
10248 4/7/1996 11 14 12
10248 4/7/1996 42 9,8 10
10248 4/7/1996 72 34,8 5
10249 5/7/1996 14 18,6 9
10249 5/7/1996 51 42,4 40
10250 8/7/1996 41 7,7 10
10250 8/7/1996 51 42,4 35
10250 8/7/1996 65 16,8 15
Observe que, para cada pedido, aparecem tantas linhas quantos forem os itens do pedido.
Vamos analisar a sintaxe bsica do Join.
SELECT Campo1, Campo2, ..., Campon
FROM Tabela1
JOIN Tabela2
ON [Tabela1].[CampoComun]= [Tabela2].[CampoComun]
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
613 CURSO COMPLETO00
Alm do Join ligando as duas tabelas, devemos especificar qual o campo em comum nas duas tabelas.
Isto feito pela clusula ON.
TIPOS DE JOIN
Existem trs tipos de Join, conforme listado a seguir:
INNER JOIN: Este o Join padro, isto , se no especificarmos o tipo a ser utilizado, ser
utilizado um INNER JOIN. A caracterstica do INNER JOIN que somente so retornados os
registros que tm valores coincidentes nas duas ou mais tabelas. Por exemplo, se tivermos um
INNER JOIN ligando as tabelas Customers e Orders (Clientes e Pedidos), somente sero
retornados os registros para os clientes que tm algum pedido na tabela Orders. Clientes que
no efetuaram pedidos (portanto, no tem registros coincidentes na tabela Orders), no faro
parte do resultado da operao INNER JOIN. A seguir, um exemplo de utilizao de um INNER
JOIN, entre as tabelas Customers e Orders:
SELECT [Customers].[CustomerID], [Customers].[CompanyName],
[Customers].[City],[Orders].[OrderID], [Orders].[OrderDate]
FROM [Customers] INNER JOIN
[Orders]
ON [Customers].[CustomerID]= [Orders].[CustomerID]
Este comando retorna todos os clientes que tm pedidos e os respectivos pedidos. Se um cliente tiver
dez pedidos, retornaro dez registros para este cliente, um para cada pedido. Clientes que no tem
pedido, no aparecero na listagem.
LEFT OUTER JOIN: Este tipo retorna todos os registros da primeira tabela e os registros
relacionados da segunda tabela. No nosso exemplo, na listagem anterior, se trocarmos o IN-
NER JOIN por um LEFT OUTER JOIN, sero retornados todos os Clientes e os pedidos
relacionados, e tambm os clientes que no possuem pedidos. Para os que no possuem pedidos,
os campos OrderID e OrderDate tero o valor Null. A seguir, temos o comando que utiliza um
LEFT OUTER JOIN:
SELECT [Customers].[CustomerID], [Customers].[CompanyName],
[Customers].[City],[Orders].[OrderID], [Orders].[OrderDate]
FROM [Customers] LEFT OUTER JOIN
[Orders]
ON [Customers].[CustomerID]= [Orders].[CustomerID]
ORDER BY [Customers].[CustomerID]
Na Figura 10.21, podemos observar que foram retornados inclusive os clientes que no possuem pedidos,
o que indicado pelos valores NULL nos campos OrderID e OrderDate.
Se voc utilizar o Banco de Dados Northwind, que vem com o SQL Server 2000, sero retornados todos os clientes, pois existem pedidos
para todos. Para poder exemplificar neste exerccio, eu exclu os pedidos para os clientes com os seguintes cdigos:
ALFKI
ANATR
ANTON
AROUT
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
614 00CURSO COMPLETO
Figura 10.21 Utilizando LEFT OUTER JOIN.
RIGHT OUTER JOIN: Este tipo retorna todos os registros da segunda tabela e os registros
relacionados da primeira tabela. Um exemplo de RIGHT OUTER JOIN:
SELECT [Customers].[CustomerID], [Customers].[CompanyName],
[Customers].[City],[Orders].[OrderID], [Orders].[OrderDate]
FROM [Customers] RIGHT OUTER JOIN
[Orders]
ON [Customers].[CustomerID]= [Orders].[CustomerID]
ORDER BY [Customers].[CustomerID]
Na Figura 10.22, podemos observar que foram retornados todos os pedidos da tabela pedidos, e apenas
os clientes que possuem pedidos, isto , todos os registros da segunda tabela (Orders) e apenas os
registros relacionados da primeira tabela (Customers).
Figura 10.22 Utilizando RIGHT OUTER JOIN.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
615 CURSO COMPLETO00
JOIN COM MAIS DO QUE DUAS TABELAS
Tambm podemos fazer um Join com mais do que duas tabelas. Sempre o nmero de Joins ser igual
ao nmero de tabelas menos um. Por exemplo, se estivermos relacionando quatro tabelas, teremos trs
Joins; se estivermos relacionando trs tabelas, teremos dois Joins, e assim por diante.
Exemplo: Criar uma listagem com os campos indicados na Tabela 10.4.
Tabela 10.4 Campos Tabelas.
Teremos uma listagem com o cdigo e o nome do cliente, o nmero, a data e o total do pedido, sendo
que o total calculado a partir de dados da tabela Order Details. Com isso estamos acessando campos
de trs tabelas: Customers, Orders e Order Details. Trs tabelas = dois Joins.
A seguir temos o comando que retorna a listagem solicitada:
SELECT [Customers].[CustomerID], [Customers].[CompanyName],
[Orders].[OrderID],[Orders].[OrderDate],
SUM(([Order Details].[Quantity] * [Order Details].[UnitPrice])
* (1 - dbo.[Order Details].Discount)) AS TotalPedido
FROM [Order Details]
INNER JOIN
[Orders] ON [Order Details].[OrderID] = [Orders].[OrderID]
INNER JOIN
[Customers] ON [Orders].[CustomerID] = [Customers].[CustomerID]
GROUP BY
[Customers].[CustomerID], [Customers].[CompanyName],
[Orders].[OrderID],[Orders].[OrderDate]
ORDER BY
[Customers].[CustomerID]
Na listagem a seguir, temos a parte inicial do resultado retornado:
CustomerID CompanyName OrderID OrderDate TotalPedido
BERGS Berglunds snabbkp 10278 12/8/1996 1.488,80
BERGS Berglunds snabbkp 10280 14/8/1996 613,20
BERGS Berglunds snabbkp 10384 16/12/1996 2.222,40
BERGS Berglunds snabbkp 10444 12/2/1997 1.031,70
BERGS Berglunds snabbkp 10445 13/2/1997 174,90
BERGS Berglunds snabbkp 10524 1/5/1997 3.192,65
Vamos fazer alguns comentrios sobre o comando anterior.
Vamos considerar o trecho onde feito o Join entre as trs tabelas. Na verdade, o Join feito sempre
entre duas tabelas, fizemos duas duas, conforme indicado no trecho a seguir:
Campo Tabela
CustomerID Customers
CompanyName Customers
OrderID Orders
OrderDate Orders
TotalPedido ([Quantity]*[UnitPrice])*(1-[Discount])
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
616 00CURSO COMPLETO
FROM [Order Details]
INNER JOIN
[Orders] ON [Order Details].[OrderID] = [Orders].[OrderID]
INNER JOIN
[Customers] ON [Orders].[CustomerID] = [Customers].[CustomerID]
Fizemos o Join entre as tabelas [Order Details] e [Orders], atravs do campo [OrderID]. Depois feito o
Join entre as tabelas [Orders] e [Customers], atravs do campo CustomerID.
Tambm utilizamos GROUP BY, para agrupar os diversos itens de cada pedido e a funo SUM, para
calcular a soma de todos os itens do pedido. No final, ordenamos pelo cdigo do cliente [CustomerID].
No Apndice, veremos mais alguns detalhes sobre operaes Join.
UTILIZANDO SUBCONSULTAS
Uma subconsulta um comando SELECT dentro de outro comando SELECT, ou seja, uma consulta
dentro da outra. Uma consulta pode ser utilizada em qualquer local onde uma expresso seja aceita.
Em alguns casos, podemos obter os mesmos resultados utilizando Joins ao invs de subconsultas. Um
detalhe que devemos estar atentos quando utilizamos subconsultas em relao ao desempenho. De
uma forma geral, devemos utilizar subconsultas quando quisermos dividir uma consulta complexa,
em uma srie de passos mais simples, mas que combinados geram o resultado da consulta complexa.
Alguns detalhes a serem considerados quando utilizamos subconsultas:
Subconsultas devem estar dentro de parnteses.
Podemos ter diversos nveis de subconsultas, isto , uma consulta dentro da outra, dentro da
outra. Porm, mais uma vez quero chamar ateno para a questo do desempenho.
Para vermos as subconsultas em ao, vamos a um exemplo.
Exemplo: Criar uma listagem onde so exibidos os campos OrderID da tabela Orders, o campo OrderDate
da tabela Orders e o maior preo unitrio dos itens que fazem parte do pedido. Para criar esta consulta,
utilizamos o seguinte comando:
SELECT [Orders].[OrderID], [Orders].[OrderDate],
(SELECT MAX([Order Details].[UnitPrice]) FROM [Order Details]
WHERE [Orders].[OrderID] = [Order Details].[OrderID]) AS MaiorPreoUnitrio
FROM [Orders]
A seguir, temos os registros iniciais retornados pela consulta anterior:
OrderID OrderDate MaiorPreoUnitrio
10248 1996-07-04 348.000
10249 1996-07-05 424.000
10250 1996-07-08 424.000
10251 1996-07-08 168.000
10252 1996-07-09 648.000
10253 1996-07-10 160.000
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
617 CURSO COMPLETO00
Observe a subconsulta:
(SELECT MAX([Order Details].[UnitPrice]) FROM [Order Details]
WHERE [Orders].[OrderID] = [Order Details].[OrderID]) AS MaiorPreoUnitrio
Esta consulta pesquisa os diversos itens para cada pedido e retorna o maior preo unitrio.
Outro uso tpico de uma subconsulta como parmetro da filtragem da consulta. Considere o comando
a seguir:
SELECT OrderID, CustomerID,OrderDate As MaisRecente
FROM Orders
WHERE OrderDate=(Select MAX(OrderDate) FROM Orders)
Este comando retorna os pedidos mais recentes, ou seja, para o valor mximo da data. O valor mximo
da data significa a data mais recente no Banco de Dados. O resultado desta consulta o seguinte:
OrderID CustomerID MaisRecente
11077 RATTC 1998-05-06
11076 BONAP 1998-05-06
11075 RICSU 1998-05-06
11074 SIMOB 1998-05-06
A subconsulta determina a data mais recente, data esta que utilizada como critrios para a clusula
WHERE. Em resumo, o resultado retornado pela subconsulta passado para a clusula WHERE.
Se trocarmos o MAX por MIN, teremos uma listagem dos pedidos mais antigos. Execute o seguinte comando:
SELECT OrderID, CustomerID,OrderDate As MaisAntigo
FROM Orders
WHERE OrderDate=(Select MIN(OrderDate) FROM Orders)
Com este comando obtemos o seguinte resultado:
OrderID CustomerID MaisAntigo
10248 VINET 1996-07-04
Temos um tipo especial de subconsulta chamada de Subconsulta correlacionada (Correlated
subqueries). Neste tipo de subconsulta, so utilizadas informaes da consulta principal e executada
para cada linha retornada pela consulta externa. Neste tipo de subconsulta que temos que tomar
cuidados com o desempenho. Por exemplo, se a consulta principal retorna 5000 registros, a subconsulta
ser executada 5000 vezes.
Mais uma vez vamos utilizar um exemplo para ilustrar este conceito.
Exemplo: Criar uma consulta que liste o nome de todos os funcionrios que fizeram pedidos para o Brazil,
em que o campo OrderDate para o ano de 1997. Para obter esta listagem, utilizamos o seguinte comando:
SELECT
[Employees].[FirstName]+ +[Employees].[LastName] As NomeCompleto, EmployeeID
FROM Employees
WHERE EXISTS
( SELECT * FROM [Orders]
WHERE
[Employees].[EmployeeID]=[Orders].[EmployeeID]
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
618 00CURSO COMPLETO
AND Year([OrderDate])=1997)
ORDER BY [Employees].[FirstName]
Vamos explicar o funcionamento desta subconsulta em quatro passos:
1. Os valores obtidos pela consulta externa (primeiro SELECT) so passados para a consulta interna.
Lembre que, para cada registro obtido pela consulta externa, a consulta interna executada.
2. A consulta interna (segundo SELECT) utiliza o valor passado pela consulta externa e executa o
comando SELECT da subconsulta.
3. Aps a execuo, a subconsulta retorna o seu resultado para a consulta principal.
4. Com base no valor retornado pela subconsulta, em conjunto com a funo EXISTS, o registro
retornado pela consulta externa includo ou descartado do resultado final. O prximo registro
retornado pela consulta externa passado para a consulta interna, a qual executa novamente.
E o processo continua, at que todos os registros da consulta principal tenham sido passados
para a consulta interna. Desta maneira vemos que a consulta interna executada tantas vezes,
quantos forem os registros retornados pela consulta externa.
A seguir, temos os resultados do comando deste exemplo:
NomeCompleto EmployeeID
Andrew Fuller 2
Anne Dodsworth 9
Janet Leverling 3
Laura Callahan 8
Margaret Peacock 4
Michael Suyama 6
Nancy Davolio 1
Robert King 7
Steven Buchanan 5
A correta utilizao de subconsultas pode facilitar a obteno de resultados aparentemente complexos
de se obter com um nico comando SELECT. Porm, mais uma vez, vou ressaltar o cuidado em relao
ao desempenho quando tratamos com subconsultas.
CONCLUSO
Neste captulo, tratamos de assuntos importantes relacionados ao desenvolvimento de aplicativos com o
SQL Server 2000. Tratamos de elementos que so criados no prprio Banco de Dados, como por exemplo:
Stored Procedures
Triggers
Um Stored Procedure, de uma maneira simples, um conjunto de comandos que gravado no Banco
de Dados com um determinado nome. Uma vez gravado, o Stored Procedure pode ser executado a
qualquer momento, utilizando a seguinte sintaxe:
exec nome_stored_procedure parmetros
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2000 STORED PROCEDURES E TRIGGERS
619 CURSO COMPLETO00
Uma das grandes vantagens dos Stored Procedures que os mesmos ficam na memria cache aps a
primeira execuo. Isso faz com que as execues subseqentes sejam bem mais rpidas, o que melhora
o desempenho em relao, por exemplo, utilizao de consultas.
Triggers so um tipo especial de Stored Procedure executado em resposta a um comando SELECT,
INSERT ou UPDATE, em uma tabela do Banco de Dados. Quando uma trigger executada, dizemos
que a trigger foi disparada. A principal funo das triggers impor as chamadas Regras de Negcio
ao Banco de Dados.
Na parte final do captulo, vimos algumas tcnicas avanadas dos comandos T-SQL. Tratamos da clusula
Join, a qual utilizada quando temos um comando que acessa dados de vrias tabelas.
Tambm tratamos e apresentamos alguns exemplos sobre utilizao de subconsultas. Com uma subconsulta,
podemos estruturar um comando SQL complexo, em partes menores e mais simples de entender.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
621 CURSO COMPLETO00
Captulo 11
DESENVOLVENDO APLICAES QUE ACESSAM
DADOS NO SQL SERVER 2000
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
622 00CURSO COMPLETO
INTRODUO
Desenvolver aplicativos que acessam dados em um servidor SQL Server 2000 bastante simples. Com
as tecnologias para acesso de dados, ficou mais fcil criar aplicaes que acessam dados de variadas
fontes: SQL Server 2000, ORACLE, Mainframe, dados no formato Dbase, dados no estruturados, etc.
Neste captulo, veremos os modelos para o desenvolvimento de aplicativos e tambm as tecnologias
da Microsoft para acesso a dados. Vamos falar sobre modelos de desenvolvimento em uma, duas, trs
ou n camadas. Veremos a definio e as vantagens de cada modelo.
A maioria das ferramentas de desenvolvimento modernas so capazes de trabalhar com as tecnologias
de acesso a dados da Microsoft. Poderamos citar o Visual Basic, Delphi, Power Builder, Visual C++, a
linha Visual Age da IBM, Microsoft Access, Lotus Notes, etc. Seria mais fcil listar quais ferramentas
no do suporte s tecnologias de acesso a dados da Microsoft.
De uma maneira geral, o conjunto destas tecnologias chamado de UDA Universal Data Access. Dentro
deste bojo de tecnologias, temos como principais componentes o ODBC Open Database Connectivity
e OLE DB no vou traduzir, pois a sigla mais do que consagrada e no existe uma traduo que reflita
exatamente o que OLE DB. O ODBC mantido para compatibilidade com aplicaes desenvolvidas
anteriormente, porm, para novas aplicaes, a Microsoft aconselha a utilizao de OLE DB. Falaremos
mais sobre estas tecnologias, no decorrer deste captulo. A tecnologia OLE DB utilizada em conjunto
com a tecnologia ADO Activex Data Objects. Tambm veremos detalhes sobre ADO, neste captulo.
Neste captulo estarei dando nfase em como acessar os dados do servidor SQL Server 2000, dentro de
uma aplicao. Estaremos dando exemplos de acesso a dados, utilizando a tecnologia de pginas ASP
Active Server Pages. De maneira alguma este captulo tem a pretenso de ensinar sobre o
desenvolvimento de aplicaes em ASP. O objetivo ilustrar a parte referente ao acesso dos dados do
servidor SQL Server 2000. No prximo captulo estaremos tratando do acesso aos dados de um servidor
SQL Server 2000, utilizando o Microsoft Access 2000.
Para maiores informaes sobre a criao de aplicaes utilizando ASP, consulte o livro Criando Sites Dinmicos com ASP 3.0, publicado
pela Axcel Books.
Uma vez apresentada a teoria bsica sobre os modelos de aplicaes e sobre as tecnologias para acesso
a dados, partiremos para alguns exemplos prticos. Nos exemplos, aprenderemos a estabelecer conexes
com o servidor SQL Server 2000 e a enviar comandos para serem executados no servidor. Aps a
execuo dos comandos, os resultados so retornados para a aplicao que, no nosso caso, ser ou uma
pgina ASP, ou um Banco de Dados do Microsoft Access 2000.
Veremos que, mais uma vez, um bom entendimento dos comandos bsicos da linguagem SQL de
fundamental importncia. Para um tutorial sobre os comandos bsicos da linguagem SQL, consulte o
Apndice, no final do livro.
Para que voc possa acompanhar todos os exemplos deste captulo, preciso um conhecimento bsico da linguagem HTML, principalmente
no referente a criao de formulrios com HTML e da linguagem VBScript da Microsoft. Maiores informaes sobre estes tpicos podem
ser encontradas no livro citado anteriormente, nesta introduo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
623 CURSO COMPLETO00
DESENVOLVIMENTO EM: UMA INTRODUO AO
DESENVOLVIMENTO DE APLICAES EM N CAMADAS
PR-REQUISITOS
No h.
METODOLOGIA
Apresentao dos principais modelos de desenvolvimento.
As aplicaes atuais so, sem nenhuma dvida, muito mais complexas de desenvolver, implementar e
manter do que as aplicaes de uma ou duas dcadas atrs. So as mais diversas aplicaes e para as mais
diversas finalidades, tais como: Comrcio Eletrnico, BI Business Intelligence, CRM Customer Relation-
ship Management (Gerenciamento das Relaes com o Cliente), ERP Enterprise Resource Planning, etc.
So muitas siglas, muitas necessidades e, consequentemente, muita complexidade no desenvolvimento e,
principalmente, na manuteno e atualizao de aplicaes empresariais. Por isso novos modelos de
desenvolvimento vm sendo propostos para facilitar o desenvolvimento e, o mais importante, a atualizao
e manuteno de aplicaes. Neste tpico, estaremos fazendo uma retrospectiva desde o modelo em duas
camadas, o tradicional Cliente/Servidor, at os modelos mais atuais, em n camadas.
O objetivo que o amigo leitor possa identificar, claramente, os problemas do modelo tradicional de
desenvolvimento em duas camadas e quais as solues propostas pelos modelos em trs ou mais camadas.
MODELO EM DUAS CAMADAS CLIENTE/SERVIDOR TRADICIONAL
O modelo Cliente/Servidor foi criado tendo como objetivo bsico a descentralizao dos dados e recursos
de processamento, em oposio ao modelo centralizado utilizado na poca em que o Mainframe
dominava absoluto. Neste modelo, conforme indicado pela Figura 11.1, em uma rede de computadores,
existem uma ou mais mquinas que atuam como Servidores, disponibilizando recursos para as demais
mquinas, as quais atuam como Clientes.
Figura 11.1 O modelo Cliente/Servidor tradicional.
Cliente Cliente Cliente Cliente Cliente
Servidor de Arquivos Banco de Dados
Outros Servidores
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
624 00CURSO COMPLETO
Conforme pode ser visto na Figura 11.1, temos Servidores de Arquivos, Banco de Dados e outras funes,
tais como: servidores de impresso, servidores Web, etc. Estas redes, tipicamente, so formadas por
Servidores, os quais so equipamentos com um maior poder de processamento e armazenamento, e
pelos Clientes, os quais, na maioria dos casos, so microcomputadores PCs, ligados em rede.
APLICAES EM DUAS CAMADAS
No incio da utilizao do modelo Cliente/Servidor, as aplicaes foram desenvolvidas utilizando-se um
modelo de desenvolvimento em duas camadas. Neste modelo, um programa, normalmente criado em um
ambiente de desenvolvimento, como o Visual Basic, Delphi ou Power Builder, instalado em cada Cliente.
Este programa acessa dados em um servidor de Banco de Dados, conforme ilustrado na Figura 11.2.
Figura 11.2 O modelo de desenvolvimento em duas camadas.
No modelo em duas camadas, temos um programa que instalado no Cliente, programa esse que faz
acesso a um Banco de Dados que fica residente no Servidor de Banco de Dados (no nosso caso,
evidentemente, este servidor o SQL Server 2000). Na maioria dos casos, a mquina do Cliente um
PC rodando Windows, e a aplicao Cliente desenvolvida utilizando-se um dos ambientes conhecidos,
conforme citado anteriormente. Sendo a aplicao Cliente, um programa para Windows (na grande
maioria dos casos), a mesma deve ser instalada em cada um dos computadores da rede, que faro uso
da aplicao. o processo de instalao normal, para qualquer aplicao Windows. No modelo de
duas camadas, a aplicao Cliente responsvel pelas seguintes funes:
Apresentao: O cdigo que gera a interface visvel do programa faz parte da aplicao Cliente.
Todos os formulrios, menus e demais elementos visuais esto contidos no cdigo da aplicao
Cliente. Caso sejam necessrias alteraes na interface do programa, faz-se necessria a gerao
de uma nova verso do programa, e todos os computadores que possuem a verso anterior,
devem receber a nova verso, para que o usurio possa ter acesso s alteraes da interface. A
que comeam a surgir os problemas no modelo de duas camadas. Uma simples alterao de
interface suficiente para gerar a necessidade de atualizar a aplicao em centenas ou milhares
de computadores, dependendo do porte da empresa. O gerenciamento desta tarefa, algo
extremamente complexo e que envolve custos elevados.
Cliente Cliente Cliente Cliente
Banco de Dados
Cliente
No modelo de duas camadas,
toda a "Lgica do negcio"
fica no Cliente. Quando o
programa Cliente instalado,
so instaladas todas as regras
de acesso ao Banco de
Dados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
625 CURSO COMPLETO00
Lgica do Negcio: As regras, que definem a maneira como os dados sero acessados e processados,
so conhecidas como Regras de Negcio. Fazem parte das Regras de Negcio desde funes
simples para validao da entrada de dados, como o clculo do digito verificador de um CPF, at
funes mais complexas, como descontos escalonados para os maiores clientes, de acordo com o
volume da compra. Questes relativas legislao fiscal e escrita contbil, tambm fazem parte
das Regras de Negcio. Por exemplo, um programa para gerncia de Recursos Humanos,
desenvolvido para a legislao dos EUA, no pode ser utilizado, sem as devidas adaptaes, por
uma empresa brasileira. Isso acontece porque a legislao dos EUA diferente da legislao
brasileira. Em sntese, as regras para o sistema de Recursos Humanos so diferentes. Alm isso,
alteraes nas Regras de Negcio so bastante freqentes, ainda mais com as repetidas mudanas
na legislao do nosso pas. Com isso, faz-se necessria a gerao de uma nova verso do programa,
cada vez que uma determinada regra muda, ou quando regras forem acrescentadas ou retiradas.
Desta forma, todos os computadores que possuem a verso anterior devem receber a nova verso,
para que o usurio possa ter acesso s alteraes. A que se agravam os problemas no modelo de
duas camadas. Qualquer alterao nas Regras do Negcio, suficiente para gerar a necessidade de
atualizar a aplicao, em centenas ou milhares de computadores. O gerenciamento desta tarefa
algo extremamente complexo e de custo elevado. Alis, j dissemos isso no pargrafo anterior, s
que to importante que sempre bom repetir.
Com a evoluo do mercado e as alteraes da legislao, mudanas nas Regras do Negcio so bastante
freqentes. Com isso, o modelo de duas camadas demonstrou-se de difcil manuteno e gerenciamento,
alm de apresentar um TCO Total Cost Ownership (Custo Total de Propriedade) muito elevado. O
TCO uma medida que leva em conta diversos fatores, para calcular qual o custo em se manter uma
estao em rede e funcionando no perodo de um ano. Alguns clculos apontam para valores prximos
de 10.000 dlares, por estao, por ano. Convenhamos que um custo considervel.
A outra camada vem a ser o Banco de Dados, o qual fica armazenado em Servidor da rede. Uma
aplicao desenvolvida em Visual Basic, a qual acessa um Banco de Dados em um servidor Microsoft
SQL Server, um tpico exemplo de uma aplicao em duas camadas.
Em busca de solues para os problemas e para os custos do modelo de duas camadas, que surge a
proposta do modelo de trs camadas, conforme analisaremos a seguir.
APLICAES EM TRS CAMADAS
Como uma evoluo do modelo de duas camadas, surge o modelo de trs camadas. A idia bsica do
modelo de trs camadas retirar as Regras de Negcio do cliente e centraliz-las em um determinado
ponto, ponto este que chamado de servidor de Aplicaes. O acesso ao Banco de Dados feito atravs
das regras contidas no servidor de Aplicaes. Ao centralizar as Regras do Negcio em um servidor de
Aplicaes, fica muito mais fcil a atualizao das mesmas. A Figura 11.3, nos d uma idia geral do
modelo em trs camadas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
626 00CURSO COMPLETO
Figura 11.3 O modelo de desenvolvimento em trs camadas.
Todo o acesso do cliente, ao Banco de Dados, feito de acordo com as regras contidas no servidor de
Aplicaes. O cliente no tem acesso ao Banco de Dados, sem antes passar pelo servidor de Aplicaes.
Neste modelo, as trs camadas so as seguintes:
Apresentao: Continua no programa instalado no cliente. Alteraes na interface do programa,
geram a necessidade de atualizar a aplicao em todos os computadores, onde a mesma est
sendo utilizada. Porm cabe ressaltar, que alteraes na interface, so menos freqentes do que
alteraes nas Regras de Negcio.
Lgica: So as Regras de Negcio, as quais determinam de que maneira os dados sero utilizados.
Esta camada foi deslocada para o servidor de Aplicaes. Desta maneira, quando uma Regra do
Negcio for alterada, basta atualiz-la no servidor de Aplicaes. Aps a atualizao, todos os
usurios passaro a ter acesso a nova verso, sem que seja necessrio reinstalar o programa em
cada um dos computadores da rede. Vejam que, ao centralizar as Regras do Negcio em um
servidor de Aplicaes, estamos facilitando a tarefa de manter a aplicao atualizada.
Dados: Nesta camada, temos o servidor de Banco de Dados, no qual reside toda a informao
necessria para o funcionamento da aplicao. Cabe ressaltar que os dados somente so acessados
atravs do servidor de Aplicao, e no diretamente pela aplicao Cliente.
Com a introduo da uma camada de Lgica, resolvemos o problema de termos que atualizar a aplicao,
em centenas ou milhares de computadores, cada vez que uma Regra de Negcio for alterada. Porm,
continuamos com o problema de atualizao da aplicao, cada vez que sejam necessrias mudanas
na interface. Por isso que surgiram os modelos de n-camadas. No prximo tpico, iremos falar um
pouco sobre o modelo de quatro camadas.
APLICAES EM QUATRO CAMADAS
Como uma evoluo do modelo em trs camadas, surge o modelo em quatro camadas. A idia bsica
do modelo em quatro camadas retirar a camada de apresentao do Cliente e centraliz-la em um
determinado ponto, o qual na maioria dos casos um servidor Web. Com isso, o prprio Cliente deixa
de existir como um programa que precisa ser instalado em cada computador da rede. O acesso
Cliente Cliente Cliente Cliente
Servidor de Aplicaes
Cliente
No modelo em trs camadas,
toda a "Lgica do Negcio"
fica no servidor de
Aplicaes. Com isso, a
atualizao das Regras de
Negcio fica mais fcil.
Sercidor de Banco de
Dados
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
627 CURSO COMPLETO00
aplicao feito atravs de um navegador, como o Internet Explorer ou o Netscape Navigator. A Figura
11.4 nos d uma idia geral do modelo em quatro camadas.
Figura 11.4 O modelo de desenvolvimento em quatro camadas.
Para acessar a aplicao, o cliente acessa o endereo da aplicao, utilizando o seu navegador. Por exemplo
http://www.empresa-abc.com/sistemas/cadastro.asp. Todo o acesso do cliente ao Banco de Dados feito
de acordo com as regras contidas no servidor de Aplicaes. O cliente no tem acesso ao Banco de Dados,
sem antes passar pelo servidor de Aplicaes. Com isso, as quatro camadas so as seguintes:
Cliente: Neste caso, o Cliente o navegador utilizado pelo usurio, quer seja o Internet Ex-
plorer, quer seja o Netscape Navigator, ou outro navegador qualquer.
Apresentao: Passa para o servidor Web. A interface pode ser composta de pginas HTML,
ASP, ou qualquer outra tecnologia capaz de gerar contedo para o navegador. Com isso, alteraes
na interface da aplicao so feitas diretamente no servidor Web, sendo que estas alteraes
estaro, automaticamente, disponveis para todos os Clientes. Desta maneira, no existe a
necessidade de reinstalar a aplicao em todos os computadores da rede, cada vez que forem
feitas alteraes na interface da aplicao. Fica muito mais fcil garantir que todos esto tendo
acesso verso mais atualizada da aplicao. A nica coisa que o Cliente precisa ter instalado
na sua mquina o navegador. O acesso ao Banco de Dados, feito atravs do servidor de
Aplicaes, o qual por sua vez conecta com o Banco de Dados.
Lgica: So as Regras de Negcio, as quais determinam de que maneira os dados sero utilizados.
Esta camada est no servidor de Aplicaes. Desta maneira, quando uma Regra do Negcio for
alterada, basta atualiz-la no servidor de Aplicaes. Aps a atualizao, todos os usurios
passaro a ter acesso nova verso, sem que seja necessrio reinstalar o programa em cada um
dos computadores da rede. Vejam que, ao centralizar as Regras do Negcio em um servidor de
Aplicaes, estamos facilitando a tarefa de manter a aplicao atualizada.
Dados: Nesta camada, temos o servidor de Banco de Dados, no qual reside toda a informao
necessria para o funcionamento da aplicao.
Cliente Cliente Cliente Cliente
Servidor de Aplicaes
Cliente
Sercidor de Banco de
Dados
Servidor Web
O Cliente s precisa de um navegador para ter acesso
aplicao.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
628 00CURSO COMPLETO
Com o deslocamento da camada de apresentao para um servidor Web, resolvemos o problema de
termos que atualizar a aplicao, em centenas ou milhares de computadores, cada vez que houver
alguma alterao na interface da aplicao. Neste ponto, a atualizao das aplicaes uma tarefa bem
mais gerencivel, muito diferente do que acontecia no caso do modelo em duas ou trs camadas.
Os servidores de Aplicao, Web e Banco de Dados no precisam, necessariamente, serem servidores
separados, isto , uma mquina para fazer o papel de cada um dos servidores. O conceito de servidor de
Aplicao, Web ou Banco de Dados um conceito relacionado com a funo que o servidor desempenha.
Podemos ter, em um mesmo equipamento, um servidor de Aplicaes, um servidor Web e um servidor
de Banco de Dados. Claro que questes de desempenho devem ser levadas em considerao, conforme
analisaremos no prximo tpico.
QUESTES A CONSIDERARMOS NOS MODELOS DE TRS OU MAIS CAMADAS
Muitas so as vantagens dos modelos de trs ou mais camadas, em relao a facilidade de gerenciamento
e atualizao das aplicaes. Porm, consideraes devem ser feitas em relao a desempenho e
dimensionamento dos equipamentos que atuaro como servidores.
A partir do momento que estamos deslocando funcionalidades (tipicamente lgica e apresentao), do
cliente para um ou mais servidores, tambm estamos deslocando capacidade de processamento em
termos de memria RAM e processador. Funes que antes eram executadas pelos clientes, utilizando
memria e processador da estao Cliente, agora foram deslocados para os Servidores, com isso
consumindo memria e processador do servidor. Por isso, um dos fatores mais importantes a considerar,
o correto dimensionamento dos equipamentos servidores.
Para fazer o dimensionamento dos servidores, precisamos estimar o nmero de usurios que iro acessar
a aplicao simultaneamente, o nvel de exigncia de cada usurio, os recursos necessrios pelos soft-
ware do servidor, dentre outros. Para determinar o nvel de recursos necessrios em cada um dos
servidores, voc precisa fazer um estudo bem detalhado, de tal forma que o servidor no fique
subdimensionado. Quando o servidor no est corretamente dimensionado, a tendncia que o acesso
a aplicao fique bastante lento, causando insatisfao entre os usurios.
Dentro deste modelo de desenvolvimento para a Web, em trs ou mais camadas, existem diversos pontos,
nos quais podemos utilizar a tecnologia ASP. Para desenvolver a interface da aplicao, combinamos
cdigo HTML com cdigo ASP. Utilizando ASP, podemos desenvolver pginas que acessam o Banco de
Dados, atravs do servidor de Aplicaes. Questes como autenticao de usurios, determinao do
nvel de acesso e segurana da aplicao, podem ser desenvolvidas com a utilizao de ASP. Neste captulo
estaremos utilizando a tecnologia ASP para acessar dados no servidor SQL Server 2000.
DESENVOLVIMENTO EM: PREPARAO DO SERVIDOR
PARA ACOMPANHAR OS EXEMPLOS DESTE CAPTULO
PR-REQUISITOS
Noes bsicas do Windows.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
629 CURSO COMPLETO00
Noes bsicas de aplicaes Web.
Noes bsicas do Windows 2000 Server.
METODOLOGIA
Preparao do servidor Windows 2000 e configurao do IIS.
Antes que voc possa acompanhar os exemplos deste captulo, precisamos verificar se o servidor que
voc est utilizando est configurado corretamente. Os dados do servidor que estou utilizando esto
indicados na Tabela 11.1.
Tabela 11.1 Caractersticas do equipamento que estou utilizando.
(*) Este endereo faz parte da minha Intranet residencial. No um endereo que possa ser acessado
pela Internet, a no ser que algum tenha criado um site com este endereo.
Se as configuraes do equipamento que voc est utilizando forem diferentes, utilize as configuraes
do seu equipamento, ao invs das indicadas na Tabela 11.1.
Neste tpico, vamos fazer duas configuraes. A primeira criar uma pasta onde colocaremos os
exemplos deste captulo. A segunda configurar esta pasta como uma Pasta Virtual do servidor IIS
Internet Information Services. Para que possamos testar as pginas ASP de exemplo, precisamos que o
IIS esteja instalado e testado. Para maiores informaes sobre a instalao e teste do IIS, consulte a
introduo deste livro.
CRIANDO A PASTA ONDE IREMOS GRAVAR OS EXEMPLOS DESTE CAPTULO
Utilizando o Windows Explorer, crie uma pasta chamada LivroSQL2000, no drive C:. Dentro da pasta
LivroSQL2000, crie uma subpasta chamada Capitulo11, conforme indicado na Figura 11.5.
Agora vamos fazer com que a pasta LivroSQL2000 (e, conseqentemente, todas as suas subpastas, no
nosso exemplo temos somente a subpasta Capitulo11) passe a fazer parte do servidor IIS http://
www.groza.com.
Lembrando mais uma vez, estou utilizando os parmetros da Tabela 11.1, em que o nome do servidor Servidor. Se o nome do seu
equipamento for diferente, substitua Servidor pelo nome que voc est utilizando. O servidor tambm pode ser acessado com o
endereo www.groza.com.
Caracterstica Descrio
Sistema Operacional Windows 2000 Server em Portugus.
Nome Servidor
SQL Server SQL Server 2000
Instncias SERVIDOR\SRVINST01
SERVIDOR\SRVINST02
Endereo Web http://servidor (*) ou www.groza.com
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
630 00CURSO COMPLETO
Figura 11.5 Criando a pasta C:\LivroSQL2000\Capitulo11.
TORNANDO A PASTA LIVROSQL2000, PARTE DO SERVIDOR IIS
Agora vamos aprender, passo a passo, como tornar a pasta LivroSQL2000 parte do servidor IIS. Para isso
utilizaremos o console Gerenciador do Internet Services, do Windows 2000 Server. Para maiores
informaes sobre MMC, Snap-in e Consoles administrativos, consulte a Unidade IV, do livro Microsoft
Windows 2000 Server Curso Bsico & Rpido, de minha autoria e publicado pela editora Axcel Books.
Para tornar a pasta LivroSQL2000, parte do servidor IIS http://servidor:
1. Faa o logon com uma conta com direitos de Administrador no Windows 2000 Server.
2. Clique em Iniciar -> Programas -> Ferramentas administrativas -> Gerenciador do Internet Services.
3. Ser aberta a janela Internet Information Services. D um clique duplo no nome do computador
para abri-lo. No exemplo da Figura 11.6, o nome do computador Servidor. So exibidas trs
opes, conforme indicado pela Figura 11.6.
4. D um clique no sinal de mais, ao lado da opo Site da Web padro, para expandir esta opo.
As opes que aparecem, so as pastas que j fazem parte do site.
5. D um clique com o boto direito do mouse, sobre Site da Web padro. No menu que surge,
aponte para Novo. Nas opes que surgem, d um clique na opo Pasta virtual, conforme
indicado pela Figura 11.7.
6. Esta pasta virtual ser associada a pasta LivroSQL2000, criada anteriormente. Ser exibida a
primeira tela do Assistente para a criao de pasta virtual. D um clique no boto Avanar,
seguindo para a prxima etapa do assistente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
631 CURSO COMPLETO00
Figura 11.6 Opes de gerenciamento para o IIS 5.0.
Figura 11.7 Criando uma nova Pasta virtual no servidor IIS.
Nesta segunda etapa, voc precisa definir um nome (Alias) para esta pasta virtual. Utilizaremos o
mesmo nome da pasta: LivroSQL2000. Porm no obrigatrio que seja utilizado o mesmo nome. Por
questo de facilidade de administrao e gerenciamento, sempre utilizo nomes iguais para o nome da
pasta no disco rgido e o nome no IIS.
7. Digite LivroSQL2000, conforme indicado pela Figura 11.8. D um clique no boto Avanar.
Nesta etapa, o assistente pergunta qual a pasta a ser associada com o nome virtual informado na etapa
anterior. Podemos digitar o caminho completo para a pasta, ou utilizar o boto Procurar, para localizar
a pasta desejada. No nosso exemplo, vamos digitar C:\LivroSQL2000. Com isso estamos associando a
pasta C:\LivroSQL2000, com a pasta LivroSQL2000, do servidor IIS.
8. Digite C:\LivroSQL2000, conforme indicado na Figura 11.9, e d um clique no boto Avanar,
para ir para a prxima etapa do assistente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
632 00CURSO COMPLETO
Figura 11.8 Digitando um nome para a pasta no IIS.
Figura 11.9 Informando o caminho da pasta C:\LivroSQL2000.
Nesta etapa do assistente, podemos configurar as permisses de acesso pasta livro. Certifique-se de
que as opes Leitura e Executar Scripts (ASP por exemplo) estejam marcadas, conforme indicado
pela Figura 11.10. Se a opo Executar Scripts (ASP por exemplo) no estiver marcada, o cdigo ASP
ser ignorado pelo IIS e, com isso, os exemplos deste captulo no iro funcionar.
9. D um clique em Avanar. Surge a tela final do assistente.
10. D um clique no boto Concluir, para finalizar o assistente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
633 CURSO COMPLETO00
Figura 11.10 Configurando as opes de segurana.
Voc estar de volta ao Gerenciador do Internet Services.
Observe que um novo diretrio virtual chamado LivroSQL2000, j aparece como parte integrante do
servidor IIS.
11. Feche o Gerenciador do Internet Services.
Uma vez criado o diretrio virtual LivroSQL2000, o qual est associado pasta C:\LivroSQL2000, como posso acessar, atravs do
navegador, o contedo que for colocado dentro da pasta C:\LivroSQL2000, ou em uma das suas subpastas?
A resposta para a questo acima, bastante simples, basta que entendamos como so formados os
endereos em um servidor como o IIS. No nosso exemplo, o endereo do servidor http://servidor. Ao
digitarmos este endereo, estamos acessando a pgina principal do servidor. Vamos supor que dentro
da pasta virtual LivroSQL2000 (associada com a pasta C:\LivroSQL2000), fosse colocada uma pgina
chamada index.asp, como faramos para acessar esta pgina, atravs do navegador? O endereo da
pgina em questo, seria o seguinte: http://servidor/LivroSQL2000/index.asp.
A Figura 11.11 descreve em detalhes a formao deste endereo.
Observe que, primeiro, vem o nome do servidor (http://servidor), depois o nome do diretrio virtual
(LivroSQL2000) e, finalmente, o nome da pgina a ser acessada (index.asp).
Como que fica o endereo, quando eu quero acessar uma pgina que est dentro de uma subpasta da pasta LivroSQL2000?
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
634 00CURSO COMPLETO
Figura 11.11 A formao de endereos no servidor IIS.
Seguindo o mesmo raciocnio anterior, fica fcil responder a esta pergunta. Vamos supor que voc
queira acessar uma pgina chamada cep.asp, que est na subpasta Capitulo11, a qual est na pasta
LivroSQL2000. Como fica o endereo para acessar esta pgina? A Figura 11.12 responde esta questo.
Figura 11.12 A formao de endereos em subpastas do diretorio virtual, no servidor IIS.
Com isso, podemos ver que existe uma lgica bem definida para a formao dos endereos. Apenas para
confirmar, vamos dar mais alguns exemplos de formao de endereos. Considere os casos abaixo indicados:
Qual o endereo de uma pgina chamada teste.htm, gravada na subpasta Testes (que ainda no
existe), da pasta virtual LivroSQL2000? Resposta: http://servidor/LivroSQL2000/Testes/teste.htm
Qual o endereo de uma pgina chamada cadastro.asp, gravada no diretrio Capitulo10?
Resposta: http://servidor/LivroSQL2000/Capitulo10/cadastro.asp
importante que voc entenda bem a maneira como o servidor IIS constri os endereos de acesso
para as pginas gravadas em seus diretrios virtuais. Observe que o diretrio virtual simplesmente
um nome que nos leva at o diretrio real, gravado no disco. Podemos criar diversos diretrios virtuais,
em um nico servidor IIS. Em um trabalho futuro, estarei escrevendo sobre o IIS 5.0.
Agora estamos com o nosso servidor quase pronto para acompanhar os exemplos deste captulo. S
falta configurarmos algumas fontes ODBC, que sero utilizadas nos exemplos prticos. Mas antes de
configurarmos as fontes ODBC, vamos fazer um estudo sobre ODBC, OLE DB e ADO. Com isso, ficaremos
sabendo o que uma fonte ODBC, bem como uma srie de outros conceitos importantes para a criao
de aplicaes que acessam dados no servidor SQL Server 2000. Ento, mos obra.
DESENVOLVIMENTO EM: UM POUCO SOBRE ODBC, OLE DB E ADO
PR-REQUISITOS
Noes sobre os modelos de desenvolvimento de aplicaes.
http://servidor/LivroSQL2000/index.asp
Nome do servidor
Nome do diretrio virtual
Nome da pgina a
ser acessada
http://servidor/LivroSQL2000/Capitulo11/cep.asp
Nome do servidor
Nome do diretrio virtual
Nome da pgina a
ser acessada
Nome da subpasta
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
635 CURSO COMPLETO00
Noes sobre o modelo relacional de Banco de Dados.
METODOLOGIA
Apresentao das tecnologias ODBC, ADO/OLE DB.
A Microsoft vem, h muito tempo, desenvolvendo tecnologias que permitam acesso s mais variadas
fontes de dados, quer sejam dados estruturados em Bancos de Dados tradicionais como o Microsoft
SQL Server, dados nos formatos mais tradicionais como os armazenados em Mainframes, at dados
no estruturados, como mensagens de correio eletrnico e arquivos com contedo multimdia, como
som e imagem. A expresso por trs deste esforo conhecida como Acesso Universal aos Dados ou
UDA do Ingls Universal Data Access.
Porm, na tentativa de disponibilizar o Acesso Universal aos Dados, muitas tecnologias foram criadas,
o que muitas vezes causa uma certa confuso e at desconforto para quem trabalha com desenvolvimento
de aplicaes. Cada nova tecnologia anunciada, um novo ciclo de aprendizado tem incio, sem contar
que muitas vezes a comunicao entre as diferentes tecnologias no exatamente a esperada. Neste
mundo de tecnologias, j nos deparamos com siglas como:
DAO Data Access Objects.
RDS Remote Data Access.
ADO Acivex Data Object.
ODBC Open Database Connectivity.
OLE DB prefiro no traduzir.
normal que o desenvolvedor fique um pouco confuso com esta Sopa de letrinhas. Mais importante
do que decorar o significado de cada sigla entender a tecnologia que fornece acesso aos dados e saber
utiliz-las corretamente. Hoje, a tecnologia mais utilizada e recomendada pela Microsoft a dobradinha
ADO/OLE DB. A utilizao de ODBC bastante forte e deve se manter por um bom perodo digamos
por mais trs ou quatro anos ainda teremos que, no mnimo, dar suporte a aplicaes que utilizam
ODBC. Por isso, analisaremos estas duas opes neste tpico, sendo que muitas vezes estaremos
utilizando as duas ao mesmo tempo. Agora vamos procurar entender um pouco melhor estas tecnologias.
UM POUCO SOBRE ODBC OPEN DATABASE CONNECTIVITY
ODBC um padro da indstria de informtica para acesso a Bancos de Dados estruturados. Um Banco de
Dados estruturado utiliza o modelo Relacional, onde temos tabelas e relacionamentos entre tabelas. So
exemplos de Bancos de Dados estruturados: MS SQL Server, Oracle, MS Access, Sybase, DB2 da IBM, etc.
Para uma reviso do modelo Relacional, consulte o Captulo 1.
ODBC uma interface que permite que os aplicativos acessem qualquer base de dados para a qual
existe um driver ODBC. Utilizando ODBC, podemos criar pginas ASP que acessem dados para os
quais existam drives ODBC, de uma maneira simples e rpida.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
636 00CURSO COMPLETO
Com a utilizao de ODBC, podemos criar aplicaes que se tornam independentes do sistema de
Banco de Dados que est sendo utilizado. Por exemplo, desenvolvemos uma aplicao para acessar
uma fonte de dados ODBC. Esta fonte de dados est ligada a um Banco de Dados do Microsoft Access.
Em determinado momento, resolvemos migrar do Microsoft Access para o Microsoft SQL Server 2000.
Sem problemas. Basta alterar nossa fonte de dados ODBC para que a mesma passe a referenciar o Banco
de Dados no Microsoft SQL Server 2000 e, pronto, a nossa aplicao passa a utilizar a nova fonte de
dados de maneira transparente, atravs do driver ODBC.
Na Figura 11.13, temos uma viso geral do acesso aos dados utilizando ODBC.
Figura 11.13 ODBC para acesso a dados.
Para que uma fonte ODBC possa ser utilizada a mesma precisa ser previamente criada, utilizando-se o
Gerenciador ODBC, o qual acessvel atravs da opo Ferramentas administrativas do menu Iniciar -
> Programas. Agora aprenderemos a criar fontes de dados ODBC.
Ao desenvolver um aplicativo, o desenvolvedor far referncia a fonte ODBC criada. A ttulo de exemplo,
iremos criar duas fontes, uma para um Banco de Dados Microsoft Access 2000 e outra para um Banco
de Dados Microsoft SQL Server 2000. A fonte ODBC para o SQL Server 2000 ser utilizada neste captulo
e a fonte para o Microsoft Access 2000, no Captulo 12.
CRIANDO UMA FONTE ODBC PARA UM BANCO DE DADOS DO MICROSOFT ACCESS 2000
Vamos criar uma fonte para um Banco de Dados do Microsoft Access 2000. Utilizaremos uma base de
exemplo que j vem com o Microsoft Access Northwind.mdb. No nosso exemplo, esta fonte estar
localizada em C:\Meus documentos.
A estrutura (tabelas e relacionamentos) deste Banco de Dados praticamente igual ao Northwind instalado com o SQL Server 2000.
Para criar uma fonte ODBC chamada nwind:
Aplicao Web
Gerenciador ODBC
Driver ODBC
SQL Server
Driver ODBC
Microsoft Access
Driver ODBC
Oracle
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
637 CURSO COMPLETO00
Dependendo da verso do ODBC instalado em seu computador, as telas apresentadas podem ser um pouco diferentes das aqui apresentadas.
1. Abra o Gerenciador de fontes ODBC (Iniciar -> Programas -> Ferramentas administrativas ->
Fontes da dados (ODBC). Surge a janela indicada na Figura 11.14.
Figura 11.14 O Gerenciador de fontes ODBC.
Uma fonte de dados chamada de DSN (Data Source Name), a qual pode ser de trs dipos:
User DSN: Este tipo de fonte ODBC contm as informaes necessrias para se conectar com
um determinado Banco de Dados. Somente pode ser utilizada pelo usurio que criou a fonte e
no computador onde a mesma foi criada. um tipo pouco utilizado.
System DSN: Este , sem dvidas, o tipo mais utilizado. Este tipo de fonte ODBC contm as
informaes necessrias para se conectar com um determinado Banco de Dados. visvel para
todos os usurios que acessam o servidor, inclusive para os servios do Windows 2000.
File DSN: Este tipo de fonte ODBC contm as informaes necessrias para se conectar com
um determinado Banco de Dados. As informaes so gravadas em um arquivo e podem ser
compartilhadas por vrios usurios.
No nosso caso estaremos trabalhando, sempre, com uma fonte ODBC do tipo System DSN.
Para maiores informaes sobre os diferentes tipos de DSN consulte o site http://msdn.microsoft.com.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
638 00CURSO COMPLETO
2. D um clique na guia System DSN. Surge a janela indicada na Figura 11.15.
Figura 11.15 Criando uma fonte do tipo System DSN.
3. D um clique no boto Add, para criar uma nova fonte ODBC.
4. Surge uma janela perguntando qual o tipo de Banco de Dados que a fonte ODBC ir selecionar.
Selecione Driver do Microsoft Access (*.mdb), conforme indicado na Figura 11.16.
Figura 11.16 Selecionando o Banco de Dados a ser usado.
5. D um clique no boto Concluir. aberta a janela Configurar ODBC para Microsoft Access,
conforme indicado na Figura 11.17.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
639 CURSO COMPLETO00
Figura 11.17 Definies para a fonte ODBC para o Microsoft Access.
Nesta janela, devemos fornecer diversas informaes, tais como o nome para a fonte ODBC, a localizao
do arquivo .mdb, etc.
6. No campo Nome da fonte de dados, digite nwind.
7. No campo Descrio, digite Dados do Microsoft Access 2000.
A janela Configurar ODBC para Microsoft Access deve estar conforme indicado na Figura 11.18.
Figura 11.18 Definindo a fonte ODBC.
8. D um clique no boto Selecionar. Utilizamos este boto para selecionar o arquivo .mdb que
ser acessado pela fonte ODBC que est sendo criada. Surgir a janela Selecionar Banco de
Dados do sistema.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
640 00CURSO COMPLETO
16. Navegue at a pasta onde est o arquivo .mdb. No nosso exemplo vamos navegar at a pasta
Meus documentos do drive C:, e dentro da pasta Meus documentos vou selecionar
Northwind.mdb, conforme indicado na Figura 11.19.
Figura 11.19 Selecionando o arquivo C:\Meus documentos\Northwind.mdb
10. D um clique no boto OK e voc estar de volta janela Configurar ODBC para Microsoft Access.
11. D um clique no boto OK para fechar a janela Configurar ODBC para Microsoft Access.
12. Voc estar de volta a janela do Gerenciador de fontes ODBC, com a fonte ODBC nwind j
criada. Feche o Gerenciador.
Estaremos utilizando esta fonte ODBC em exemplos do Captulo 12.
CRIANDO UMA FONTE ODBC PARA UM BANCO DE DADOS PUBS, DA INSTNCIA SERVIDOR\SRVINST01
Vamos criar uma fonte para um Banco de Dados do Microsoft SQL Server 2000. Utilizaremos um Banco
de Dados de exemplo que j vem com o Microsoft SQL Server 2000 pubs. No nosso exemplo, o nome
do Servidor SQL SERVIDOR e a instncia SERVIDOR\SRVINST01. Caso voc esteja trabalhando em
um servidor com um nome diferente, utilize o nome do servidor no qual voc est trabalhando.
O Banco de Dados pubs modelado com base em uma editora fictcia. Existem tabela para cadastro de autores, ttulos de livro, etc.
Para criar uma fonte ODBC chamada ST1_pubs, na instncia SERVIDOR\SRVINST01, faa os seguinte:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
641 CURSO COMPLETO00
Dependendo da verso do ODBC instalado em seu computador, as telas apresentadas podem ser um pouco diferentes das aqui apresentadas.
1. Abra o Gerenciador de fontes ODBC (Iniciar -> Programas -> Ferramentas administrativas ->
Fontes da dados (ODBC).
2. D um clique na guia System DSN.
3. D um clique no boto Add, para criar uma nova fonte ODBC.
4. Surge uma janela perguntando qual o tipo de Banco de Dados que voc deseja acessar. Selecione
SQL Server, conforme indicado na Figura 11.20.
Figura 11.20 Selecionando o Banco de Dados a ser usado.
5. D um clique no boto Concluir. aberta a janela Create a New Data Source to SQL Server,
conforme indicado na Figura 11.21.
6. No campo Name, digite ST1_pubs.
7. No campo Description, digite Banco pubs no SQL Server 2000.
8. Na lista Server, selecione o nome do Servidor SQL a ser utilizado. No nosso exemplo
SERVIDOR\SRVINST01.
A janela Create a New Data Source to SQL Server deve estar conforme indicado na Figura 11.22.
9. D um clique no boto Avanar para ir para a prxima etapa.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
642 00CURSO COMPLETO
Figura 11.21 Definies para a fonte ODBC para o SQL Server.
Figura 11.22 Definies para a fonte ODBC.
10. Nesta etapa, definimos o tipo de autenticao a ser utilizado. Como estamos nos conectando
com SERVIDOR\SRVINST01, certifique-se de que With Windows NT authentication using
the network login ID esteja selecionado, conforme indicado na Figura 11.23.
11. D um clique no boto Avanar, seguindo para a prxima etapa. Nesta tela, vamos definir com
qual Banco de Dados nos conectamos por padro, ao estabelecer a conexo com
SERVIDOR\SRVINST01. Clique na opo Change default database to. A lista abaixo desta
opo habilitada. Nesta lista, selecione pubs, conforme indicado na Figura 11.24.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
643 CURSO COMPLETO00
Figura 11.23 Definindo o tipo de autenticao.
Figura 11.24 Definindo a qual Banco de Dados a fonte ODBC se conecta.
Em um Servidor SQL Server, podem existir diversos Bancos de Dados. Neste caso, estamos definindo a
qual Banco de Dados a nossa fonte ODBC ir conectar-se.
12. D um clique no boto Avanar para ir para a ltima etapa. Nesta etapa podemos definir
diversas opes, tais como:
O idioma para as mensagens do SQL Server.
Se devemos ou no utilizar criptografia dos dados para aumentar a segurana.
Se devemos utilizar as configuraes regionais tais como hora, data e formato para nmeros
em geral e para valores monetrios.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
644 00CURSO COMPLETO
13. Selecione as opes conforme indicado na Figura 11.25.
Figura 11.25 Finalizando a configurao da fonte ODBC.
14. D um clique no boto Concluir para finalizar a criao da fonte ODBC.
Surge a janela ODBC Microsoft SQL Server Setup, a qual informa as diversas opes selecionadas,
conforme indicado na Figura 11.26. Nesta janela, podemos clicar no boto Test Data Source... para
verificar se a conexo com o Banco de Dados est OK.
Figura 11.26 Resumo das opes selecionadas para a fonte ODBC.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
645 CURSO COMPLETO00
15. D um clique no boto Test Data Source. Deve surgir uma janela indicando que o teste foi
realizado com sucesso, conforme indicado na Figura 11.27.
Figura 11.27 Teste indicando que a conexo est OK.
16. D um clique em OK para fechar a janela de teste.
17. D um clique em OK para fechar a janela de resumo.
18. Voc estar de volta janela do Gerenciador de fontes ODBC, com a fonte ODBC ST1_pubs j
criada. D um clique em OK para fechar o Gerenciador.
Estaremos utilizando esta fonte ODBC em exemplos deste captulo.
Agora que j sabemos um pouco sobre ODBC, vamos falar sobre a dobradinha ADO/OLE DB.
UM POUCO SOBRE OLE DB E ADO
OLE DB uma nova tecnologia, baseada na tecnologia COM Common Object Model da Microsoft,
para acesso a Bases de dados. Uma das grandes novidades trazidas pela tecnologia OLE DB a
possibilidade de acesso a bases de dados, no estruturadas, como por exemplo arquivos de mensagens
de correio eletrnico, arquivos de texto, e Bancos de Dados de documentos como o Lotus Notes ou o
Microsoft Exchange. Alm disso, a tecnologia OLE DB foi construda tendo a performance como uma
de suas diretivas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
646 00CURSO COMPLETO
Diferente do ODBC, no existe um Driver OLE DB para cada fonte de dado. Na tecnologia OLE DB, o
conector para uma fonte de dados chamado de OLE DB Provider. Por exemplo, existe um OLE DB
Provider para Microsoft Access, um para Microsoft SQL Server, um para mensagens de correio do
Microsoft Exchange, um para Bancos de Dados Oracle e assim por diante.
OLE DB a tecnologia preferencial, segundo a Microsoft, para acesso a dados, quer estruturados ou
no. Em diversos documentos e manuais oficiais da Microsoft, existem referncias utilizao de OLE
DB como a tecnologia a ser utilizada para acesso a qualquer fonte de dados.
Muitos usurios pensam que OLE DB veio para substituir completamente o padro ODBC. Na verdade
isto pode at acontecer daqui a algum tempo. Porm, na prtica, existe um OLE DB Provider para
ODBC. Com isso, utilizando OLE DB podemos ter acesso a qualquer fonte de dados ODBC. Na prtica,
ODBC funciona como se fosse um subconjunto de OLE DB, uma vez que OLE DB fornece acesso a
todas as fontes de dados ODBC (atravs da utilizao OLE DP Provider para ODBC), mais as fontes de
dados no estruturadas para as quais existem OLE DB Provider disponveis.
Na Figura 11.28, temos uma viso geral do acesso a fontes de dados, utilizando OLE DB.
Figura 11.28 Acessando fontes de dados com OLE DB.
Veja que possvel o acesso a qualquer fonte de dados ODBC. Tambm possvel o acesso sem a
utilizao de ODBC, utilizando-se o OLE DB Provider adequado para cada situao. Quanto estamos
utilizando OLE DB, temos a figura da fonte de dados e do consumidor de dados. Um OLE DB Provider
a fonte de dados, j o aplicativo o consumidor de dados. No prximo item, criaremos pginas ASP
que acessam dados de um Banco de Dados do Microsoft SQL Server 2000. Com isso, nossas pginas
ASP atuaro como consumidores de dados.
Porm OLE DB, na verdade, uma API (Application Programming Interface) baseada na tecnologia COM
da Microsoft. Utilizar diretamente uma API algo que requer conhecimentos avanados de programao,
tais como o domnio das linguagens C e C++. Embora seja factvel utilizar diretamente OLE DB, muito
pouco produtivo, alm de exigir profissionais com conhecimentos avanados de programao.
OLE DB
Gerenciador ODBC
Driver ODBC
SQL Server
Driver ODBC
Microsoft Access
Driver ODBC
Oracle
Jet
Provider
SQL Server
Provider
Exchange
Server
Provider
OLE DB Providers
Drivers ODBC
Microsoft
Access
MIcrosoft
SQL
Server
Microsoft
Exchange
Server
MIcrosoft
SQL
Server
Microsoft
Access
ORACLE
Fontes de dados: Estruturadas e No estruturadas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
647 CURSO COMPLETO00
Para solucionar o problema de utilizao direta de OLE DB foi criada uma camada adicional de
programao, a qual conhecida como ADO Activex Data Objects. Com a utilizao de ADO, temos
acesso a uma srie de objetos e seus mtodos. A utilizao dos objetos ADO bem mais simples do que
a utilizao direta da API OLE DB. Com a utilizao de ADO, a produtividade do desenvolvedor aumenta
bastante, pois os objetos de ADO so de fcil aprendizagem e utilizao, principalmente para quem j
programa em Visual Basic ou Delphi. Quando utilizamos um objeto ADO, o prprio objeto sabe como
converter a chamada feita, para comandos que a API OLE DB entende e capaz de executar.
Neste e no prximo captulo, sempre que formos fazer acesso a Bases de dados, estaremos utilizando
objetos ADO. Por exemplo, para estabelecer uma conexo com um Banco de Dados, estaremos utilizando
o objeto Connection; para acessar registros de uma ou mais tabelas do Banco de Dados, estaremos
utilizando um objeto chamado Recordset e assim por diante.
Na Figura 11.29, representamos o acesso a dados atravs de ADO, o qual se comunica com a API OLE DB.
Figura 11.29 Acessando fontes de dados com ADO/OLE DB.
Com isso terminamos nosso estudo sobre os aspectos tericos necessrios ao entendimento da conexo de pginas ASP com Bancos de
Dados. A partir do prximo item estaremos aprendendo, na prtica, a criar pginas ASP que fazem conexo com Banco de Dados.
Grande parte do nosso trabalho ser estudar os objetos, mtodos, propriedades e eventos da tecnologia ADO. Nunca demais salientar
que ADO a forma de acesso a dados indicada pela Microsoft. No site msdn.microsoft.com existem diversos documentos que ensinam
como migrar de outras tecnologias mais antigas (como DAO por exemplo), para a tecnologia ADO/OLE DB. Alm disso a Microsoft vem
anunciando que as tecnologias mais antigas (como DAO e RDO) sero descontinuadas, isto , sero substitudas por ADO.
Outro ponto importante a salientar que ADO no somente para uso em aplicaes Web. Podemos
utilizar ADO para qualquer aplicao, como as tradicionais aplicaes Cliente/Servidor de duas camadas
desenvolvidas em Visual Basic ou qualquer outra linguagem com suporte a ADO/OLE DB.
OLE DB
Gerenciador ODBC
Driver ODBC
SQL Server
Driver ODBC
Microsoft Access
Driver ODBC
Oracle
Jet
Provider
SQL Server
Provider
Exchange
Server
Provider
OLE DB Providers
Drivers ODBC
Microsoft
Access
MIcrosoft
SQL
Server
Microsoft
Exchange
Server
MIcrosoft
SQL
Server
Microsoft
Access
ORACLE
Fontes de dados: Estruturadas e No estruturadas.
ADO
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
648 00CURSO COMPLETO
Neste Captulo, estaremos criando as pginas ASP utilizando um editor de textos padro, como o Bloco de Notas. Existem ambientes de
desenvolvimentos do tipo RAD (Rapid Application Development), para a criao de pginas ASP. Dois dos mais conhecidos so o Visual
Interdev, da prpria Microsoft e o Ultradev da Macromedia.
DESENVOLVIMENTO EM: O MODELO DE OBJETOS
DO ADO ACTIVEX DATA OBJECTS
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Noes sobre os modelos de desenvolvimento.
Conhecimento bsico de ODBC e OLE DB
METODOLOGIA
Apresentao dos principais objetos do ADO, para acesso aos dados do servidor SQL Server 2000.
Neste item, teremos uma viso geral do Modelo de Objetos do ADO. Nos demais itens deste captulo,
estaremos utilizando alguns destes objetos. Para um estudo detalhado dos objetos do modelo ADO,
consulte o livro Criando Sites Dinmicos com ASP 3.0, de minha autoria e publicado pela editora
Axcel Books (www.axcel.com.br).
Na Figura 11.30, temos uma viso geral dos principais objetos do Modelo de Objetos ADO.
Figura 11.30 O Modelo de Objetos ADO.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
649 CURSO COMPLETO00
Abaixo uma descrio resumida dos principais objetos:
Connection: Este objeto utilizado para estabelecer uma conexo com uma fonte de dados,
seja atravs de um driver ODBC ou de um OLE DB Provider. O primeiro passo para acessar uma
fonte de dados estabelecer uma conexo com esta fonte. Uma vez estabelecida esta conexo,
podemos utilizar outros objetos para extrair, alterar e inserir dados ou qualquer outra operao
que seja permitida pela fonte de dados. Quando estabelecemos a conexo, tambm podemos
passar informaes de autenticao, tais como o nome do usurio e senha, de tal forma que
seja dado acesso aos dados de acordo com as permisses de cada usurio. Por exemplo, podem
existir usurios que devem ter permisso somente para leitura dos dados, j outros usurios
podem necessitar de permisso para leitura e alterao e assim por diante.
Um detalhe importante a ser salientado que a criao de uma conexo com um Banco de Dados,
atravs da utilizao do objeto Connection, no obrigatria. Podemos utilizar diretamente os objetos
Command, Recordset e Record, pois cada vez que utilizarmos um destes objetos, uma conexo ser
automaticamente criada. Porm pode ser mais prtico a criao explcita de uma conexo, principalmente
em situaes em que muitos comandos so executados contra a fonte de dados. Neste caso, a criao de
uma conexo, com a utilizao do objeto Connection, pode melhorar o desempenho da aplicao Web.
Se deixarmos que cada objeto crie a sua prpria conexo, teremos um nmero grande de conexes. Cada
conexo consome recursos, principalmente memria RAM, no servidor. Se criarmos um objeto Connec-
tion e os demais objetos utilizarem esta conexo, teremos um nmero reduzido de conexes, o que
melhora o desempenho. Pode parecer pouco significativo para uma nica pgina ASP. Agora imagine
uma pgina ASP que acessada por milhares de usurios. Multiplique o nmero de usurios pelo nmero
de conexes que a pgina ASP cria com o Banco de Dados, e voc ter um bom motivo para utilizar o
objeto Connection, ao invs de deixar cada objeto criar a sua prpria conexo.
Command: Este objeto pode ser utilizado para executar um comando (uma instruo SQL por
exemplo) em uma fonte de dados. Podemos utilizar este objeto para efetuar uma consulta em
um Banco de Dados e retornar o resultado em um objeto Recordset. Tambm podemos utilizar
este objeto para alterar a estrutura de um Banco de Dados, desde que tenhamos permisso para
isso. Um dos usos mais comuns do objeto Command para executar um Stored Procedure em
um Banco de Dados. Com o uso deste objeto podemos, inclusive, passar parmetros de entrada
e receber parmetros de sada de um Stored Procedure.
Recordset: Este objeto representa um conjunto de registros obtidos a partir de um Banco de
Dados. Este conjunto de registros pode, por exemplo, ter sido retornado devido a uma operao
do objeto Command. Todo objeto Recordset formado por linhas e colunas, como se fosse
uma tabela de um Banco de Dados.
Record: Este objeto representa uma nica linha (ou seja, um nico registro) de um objeto Recordset.
Stream: Este objeto utilizado para manipular dados no estruturados, normalmente
organizados em formas de rvores hierrquicas. Pode ser utilizado para acessar informaes de
um sistema de arquivos ou um sistema de correio eletrnico.
Cada um destes objetos apresenta uma srie de mtodos, propriedades, eventos e colees.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
650 00CURSO COMPLETO
Na maioria das situaes utilizamos os objetos Connection e Recordset juntos em uma mesma pgina. No prximo item estudar o objeto
Connection, porm j fazendo uso do objeto Recordset nos exemplos prticos; ser apresentado apenas o bsico sobre o objeto Recordset.
Nos prximos itens deste captulo, estudaremos mais detalhes sobre o objeto Recordset.
Antes do primeiro exemplo prtico, vamos definio do que uma pgina ASP.
DESENVOLVIMENTO EM: APLICAES COM ASP ACTIVE SERVER PAGES
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Noes sobre os modelos de desenvolvimento.
Conhecimento bsico de ODBC e OLE DB
Modelo de Objetos do ADO.
Noes sobre os comandos bsicos da linguagem T-SQL.
METODOLOGIA
Apresentao dos objetos, mtodos e propriedades do modelo ADO para acesso aos dados do servidor SQL Server 2000, atravs de pginas ASP.
TCNICA
Utilizao dos objetos, mtodos e propriedades do modelo ADO para a criao de paginas ASP que acessam aos dados do servidor SQL
Server 2000.
Definir exatamente o que ASP uma tarefa que pode gerar controvrsias. Eu, particularmente, gosto
de definir ASP, como sendo: Uma tecnologia que permite a criao de pginas dinmicas, nas quais
alm de cdigo HTML, temos cdigo ASP. justamente este cdigo, que fornece toda a funcionalidade
que torna os sites criados em ASP dinmicos, possibilitando a criao de aplicaes Web.
Uma pgina ASP uma mistura de cdigo HTML tradicional com cdigo ASP. O cdigo ASP colocado
entre os marcadores <% (incio de um bloco de cdigo ASP) e %> (final de um bloco de cdigo ASP).
Em uma pgina, podemos ter diversos blocos de cdigo ASP. Desta forma, posso ir intercalando cdigo
ASP e cdigo HTML padro. O cdigo ASP que fornece a capacidade de execuo de comandos que
fazem conexes com Banco de Dados, retorna resultados e executa clculos e operaes que tornam as
pginas mais dinmicas. A seguir, um exemplo simples de um arquivo em que temos cdigo ASP e
cdigo HTML na mesma pgina:
Exemplo 11.1 O exemplo de hoje ...
1 <HTML>
2 <HEAD>
3 <TITLE>Minha primeira pgina ASP !!</TITLE>
4 </HEAD>
5 <BODY>
6 <%
7 Response.Write <H1>Data de hoje: & Date( ) & </H1>
8 Response.Write <H1>Hora atual: & Time( ) & </H1>
9 %>
10 </BODY>
11 </HTML>
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
651 CURSO COMPLETO00
No digite o nmero das linhas. A numerao apenas aparece na listagem, para servir como referncia na hora de explicarmos o cdigo ASP.
Figura 11.31 Uma pgina ASP.
Salvei este arquivo na pasta Captulo11 criada anteriormente, com o nome de Exemplo11-1.asp. Por isso o endereo para esta pgina
o seguinte: http://servidor/LivroSQL2000/Capitulo11/Exemplo11-1.asp
Ao abrir esta pgina no navegador, obtemos o resultado indicado na Figura 11.31.
Se voc pressionar F5 para Recarregar a pgina, ser exibida a data e hora, j atualizados. Em resumo,
cada vez que voc carregar a pgina, as funes Date( ) e Time( ) retornaro a data e hora atualizadas.
Veja que o cdigo ASP que torna a pgina dinmica.
No defino ASP como uma linguagem de Script, porque para a criao de pginas ASP, podemos utilizar
diferentes linguagens, tais como VBScript e Java Script. Neste captulo, utilizaremos o VBScript.
Para maiores detalhes sobre o VBScript consulte o endereo http://msdn.microsoft.com/scriptin ou o endereo http://www.serachvb.com.
Voc tambm encontrar informaes sobre VBScript no livro Criando Sites Dinmicos com ASP 3.0, citado anteriormente.
Melhor do que definies formais entender como funciona uma pgina ASP. Vamos nos basear na
Figura 11.32.
Vamos fazer alguns comentrios sobre esta figura.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
652 00CURSO COMPLETO
Figura 11.32 Como funciona o ASP.
O servidor Web, no nosso caso o IIS da Microsoft, reconhece que a pgina solicitada uma pgina ASP,
pela extenso da pgina. As pginas ASP devem ter a extenso .asp. Se criarmos uma pgina ASP e
salvarmos a mesma com e extenso .htm ou .html, o IIS, simplesmente ignora o cdigo ASP. A criao
de pginas ASP est ligada utilizao do IIS. No podemos, por exemplo, criar pginas ASP e
disponibiliz-las utilizando outros servidores Web, como o Netscape Web Server ou o Apache. J existem
empresas trabalhando para disponibilizar a tecnologia ASP para alguns servidores Web, rodando no
Sistema Operacional Unix ou Linux.
O usurio digita o endereo http://www.abc.com/cep.asp e tecla Enter. Feito isso, o pedido enviado
para o servidor www.abc.com. O servidor identifica a extenso do arquivo .asp. Como a extenso
.asp, a pgina cep.asp passada para o Interpretador ASP, o qual faz parte do IIS. O interpretador
percorre toda a pgina, executando o cdigo ASP e retornando o cdigo HTML, resultante deste
processamento. Com isso, o que retornado para o usurio que solicitou a pgina ASP apenas o
cdigo HTML resultante do processamento da pgina. Este fato pode ser comprovado, pedindo para
que o navegador exiba o cdigo-fonte da pgina. No caso do Internet Explorer 5.0, basta selecionar a
opo Cdigo fonte, do menu Exibir. O fato do retorno ser HTML puro, traz diversos benefcios, dentro
os quais podemos destacar:
Os algoritmos, bem como o prprio cdigo ASP, ficam protegidos. Isto significa que o usurio
no tem acesso ao cdigo das aplicaes Web, desenvolvidas em ASP. Isto bastante desejvel,
uma vez que no seria interessante que qualquer usurio pudesse copiar, livremente, os
algoritmos e cdigos da sua empresa.
O acesso a pginas ASP independente do navegador utilizado. No importa se estamos
utilizando o Netscape Navigator, o Internet Explorer, ou qualquer outro navegador. Uma vez
que o que retorna cdigo HTML, qualquer navegador capaz de acessar uma pgina ASP.
Em contrapartida, o servidor precisa ser o IIS da Microsoft. Outros servidores ainda no possuem um
Interpretador ASP, o que inviabiliza a utilizao de pginas ASP nos mesmos.
Outra questo importante a considerar o fato de uma pgina ASP ser interpretada no servidor. Isto
significa que voc no pode criar uma pgina ASP e test-la localmente, simplesmente abrindo-a no
navegador. Se voc criar uma pgina ASP, salv-la no seu disco rgido local e tentar abri-la no navegador,
Internet
http://www.abc.com/
cep.asp
Servidor Web
www.abc.com
A pgina ASP processada no servidor. O
resultado do processamento uma pgina
HTML. O que retorna para o cliente a pgina
HTML, j resultante do processamento no
servidor Web.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
653 CURSO COMPLETO00
todo o cdigo ASP ser ignorado, uma vez que no existe o Interpretador ASP. Para poder testar as suas
pginas ASP, voc ter que salv-las em um servidor Web, que esteja rodando o IIS.
J conversamos bastante e agora hora de ao. No prximo item, vamos estudar o objeto Connection
e criar uma pgina ASP que utiliza este objeto para retornar dados de uma tabela de um Banco de
Dados do SQL Server 2000.
O OBJETO CONNECTION
Conforme descrevemos anteriormente, o primeiro passo para conectar uma pgina ASP com uma
fonte de dados estabelecer uma conexo com a fonte de dados. Para estabelecermos uma conexo
com um Banco de Dados, utilizamos o objeto Connection. Podemos criar uma conexo utilizando
uma fonte ODBC ou um OLE DB Provider. Neste tpico, vamos estudar o objeto Connection, e aprender
a criar conexes utilizando ODB e OLE DB. Tambm veremos alguns exemplos prticos, onde criaremos
pginas .asp que fazem conexo com Bancos de Dados no servidor SQL Server 2000.
CRIANDO CONEXES ODBC
Vamos aprender a criar conexes com um Banco de Dados, utilizando fontes ODBC.
O cdigo a seguir cria uma conexo com a fonte ODBC nwind criada anteriormente:
Set conn = Server.CreateObject(ADODB.Connection)
conn.Open nwind
O primeiro passo criar a conexo com o Banco de Dados. Para isto, crio um objeto do tipo
ADODB.Connection, depois abro a conexo utilizando o mtodo Open. Como parmetro para o mtodo
Open, passo o nome da fonte de dados ODBC. No nosso exemplo, o nome da fonte nwind. Lembre
que esta fonte nwind est associada com o Banco de Dados C:\Meus documentos\Northwind.mdb,
do Microsoft Access 2000.
Os objetos ADO tm diversos mtodos e propriedades. Um mtodo executa uma ao especfica, ao esta representada por um verbo
abrir, fechar, retornar, etc. As propriedades de um objeto retornam valores ou caractersticas do objeto.
Para acessarmos um mtodo ou propriedade de um objeto, utilizamos a seguinte sintaxe:
Para mtodos: nome_objeto.nome_mtodo parmetros.
Para propriedades: nome_objeto.propriedade
Um objeto tambm pode conter eventos. Um evento uma determinada ao que acontece com o
objeto, como por exemplo, ao encerrar uma conexo, gerado o evento Disconnect do objeto Con-
nection. Podemos escrever cdigo ASP que deve ser executado quando um evento disparado.
O cdigo a seguir cria uma conexo com a fonte ODBC ST1_pubs criada anteriormente:
Set conn = Server.CreateObject(ADODB.Connection)
conn.Open ST1_pubs
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
654 00CURSO COMPLETO
Observe que apenas trocamos o nome da fonte ODBC, em relao ao exemplo anterior. Neste exemplo,
o nome da fonte ST1_pubs. Lembre que esta fonte ST1_pubs est associada com o Banco de Dados
pubs da instncia SERVIDOR\SRVINST01, do servidor SQL Server 2000.
O OBJETO CONNECTION MTODOS, PROPRIEDADES E EVENTOS
Ao estabelecermos uma conexo, estamos informando para a nossa pgina ASP uma srie de detalhes
que a mesma necessita para poder acessar os dados. Utilizando o objeto Connection podemos definir
qual o OLE DB Provider a ser utilizado, qual a fonte de dados e demais informaes tais como nome de
usurio e senha, caso sejam necessrios.
Na Tabela 11.2, temos uma breve descrio dos principais mtodos do objeto Connection.
Tabela 11.2 Os principais mtodos do objeto Connection.
Na Tabela 11.3, temos uma breve descrio das principais propriedades do objeto Connection.
Tabela 11.3 As principais propriedades do objeto Connection.
Mtodo Descrio
BeginTrans Inicia uma nova transao.
Cancel Cancela a execuo assncrona dos comandos Execute e Open.
Close Fecha uma conexo que esteja aberta e quaisquer objetos que sejam dependentes desta conexo.
CommitTrans Salva as alteraes que foram feitas e encerra a transao corrente.
Execute Executa um consulta, um comando ou uma instruo SQL e retorna um objeto do tipo Recordset.
Por exemplo, pode ser utilizado para obter uma listagem de vendas de um Banco de Dados, ou
qualquer outra listagem que possa ser obtida a partir de uma instruo SQL.
Open Abre uma conexo com uma fonte de dados. Feito isso, comandos podem ser executados atravs
desta conexo.
OpenSchema Utilizado para obter informao sobre a estrutura de uma fonte de dados, tais como as definies
de tabelas e relacionamentos de um Banco de Dados Relacional.
RoolbackTrans Cancela quaisquer alteraes que tenham sido feitas pela transao e finaliza a transao.
Propriedade Descrio
Attributes Indica uma ou mais caractersticas de um objeto Connection. Retorna um valor Long.
CommandTimeout Indica o tempo mximo de execuo de um comando. Caso o comando demore mais do que o
tempo definido nesta propriedade, ser gerado um erro. O valor padro 30 segundos.
ConnectionString Contm todas as informaes utilizadas para estabelecer a conexo com a fonte de dados.
ConnectionTimeout Indica o tempo mximo para tentativa de estabelecer uma conexo. Caso a conexo no seja
estabelecida em um tempo menor ou igual ao definido em ConnectionTimeout, a conexo ser
encerrada e um erro gerado. Por padro este valor definido em 15 segundos.
CursorLocation Define ou retorna a localizao do cursor, se no Servidor ou no Cliente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
655 CURSO COMPLETO00
CRIANDO CONEXES UTILIZANDO OLE DB
Vamos aprender a criar conexes com um Banco de Dados, utilizando fontes da tecnologia OLE DB.
Ao utilizarmos OLE DB, no precisamos criar uma fonte OLE DB, ao invs disso, todo o cdigo
necessrio para estabelecer a conexo est na prpria pgina ASP que, conforme veremos a seguir,
simplesmente a definio da propriedade ConnectionString, do objeto Connection.
Conforme ilustrado na Figura 11.28, possvel o acesso a uma fonte de dados, sem a utilizao de
ODBC. Este um ponto de confuso entre muitos programadores iniciantes em ASP. Em diversas
conversas com colegas que estavam iniciando o estudo de ASP, surgiu esta dvida:
possvel conectar com uma fonte de dados, como, por exemplo, um Banco de Dados do Microsoft
Access, sem a utilizao de um driver ODBC?
Na Tabela 11.4, temos uma breve descrio dos principais eventos do objeto Connection.
Tabela 11.4 Os principais eventos do objeto Connection.
Propriedade Descrio
DefaultDatabase Indica qual o Banco de Dados padro para um objeto Connection. Por exemplo, quando estamos
conectando com um Servidor SQL precisamos definir qual o Banco de Dados que ser acessado.
Fazemos isso definindo qual o Banco de Dados padro, atravs da utilizao da propriedade
DefaultDatabase.
Errors Contm todos os objetos Error criados em resposta a falhas envolvendo o provedor de dados.
IsolationLevel Define o nvel de isolamento das transaes para um objeto Connection.
Mode Indica as permisses disponveis para modificao de dados atravs de uma conexo.
Properties Contm todos os objetos Property de um determinado objeto Connection.
Provider Retorna o nome do provedor para uma determinada conexo.
State Indica se a conexo est aberta ou fechada.
Version Retorna a verso da tecnologia ADO. Por exemplo, 2.0 ou 2.5.
Evento Descrio
BeginTransComplete Ocorre aps o trmino de uma operao BeginTrans.
CommitTransComplete Ocorre aps o trmino de uma operao CommitTrans.
ConnectComplete Ocorre aps o incio de uma conexo.
Disconnect Ocorre aps o trmino de uma conexo.
ExecuteComplete Ocorre aps o trmino da execuo de um comando.
InfoMessage Ocorre toda a vez que a operao ConnectionEvent ocorre com sucesso e informao adicional
retornada pelo provedor de dados.
RollBackTransComplete Ocorre aps a execuo da operao RollbackTrans.
WillConnect Ocorre antes do incio de uma conexo.
WillExecute Ocorre antes que um comando pendente executado em uma determinada conexo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
656 00CURSO COMPLETO
A resposta sim; perfeitamente possvel, para isto basta criar um objeto Connection e configurar
corretamente a sua propriedade ConnectionString.
A propriedade ConnectionString deve conter as informaes necessrias para estabelecer a conexo
com uma fonte de dados. Atravs desta propriedade, devemos fornecer informaes tais como:
Provedor.
Nome do usurio.
Senha do usurio.
Nome do arquivo (como no caso de um Banco de Dados do Microsoft Access).
Nome do servidor (como no caso de um Servidor SQL Server).
Nome do Banco de Dados no Servidor.
So informaes necessrias para que a pgina ASP possa estabelecer a conexo com a fonte de dados,
utilizando o OLE DB Provider correto. Pode at ser que seja utilizado o OLE DB Provider para ODBC,
mas isto no obrigatrio.
Agora aprenderemos um pouco mais sobre a propriedade ConnectionString. Tambm veremos alguns
exemplos de utilizao desta propriedade.
A PROPRIEDADE CONNECTIONSTRING
Esta propriedade configurada de diferentes maneiras, de acordo com a fonte de dados que estiver
sendo utilizada. Por exemplo, a configurao para acessar um Banco de Dados do Microsoft Access
diferente da configurao para acessar um Banco de Dados do Microsoft SQL Server ou do Oracle.
Vamos estudar como configurar esta propriedade para acessar algumas das principais fontes de dados:
Microsoft Access, Microsoft SQL Server e Oracle.
A propriedade ConnectionString tem uma srie de parmetros no formato:
argumento = valor
onde argumento pode ser a informao sobre o provedor, o nome do usurio, etc. Apenas a ttulo de
exemplo, mostramos a seguir a propriedade ConnectionString para conexo com um Banco de Dados
do Microsoft Access:
Provider=MSDASQL.1;Data Source=nwind;
Extended Properties=DSN=nwind;
DBQ=C:\MEUS DOCUMENTOS\NWIND.MDB;DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;
Exibimos a propriedade em diversas linhas, por questo de espao. Quando estiver criando uma pgina .asp, coloque, sempre, um
comando em cada linha.
Agora vamos decifrar o que significam estes parmetros e aprender a utilizar esta propriedade,
configurando conexes OLE DB, com um Banco de Dados do Microsoft Access.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
657 CURSO COMPLETO00
Vamos configurar a propriedade ConnectionString para estabelecer uma conexo com um Banco de
Dados do Microsoft Access. Para tal, devemos configurar os parmetros indicados na Tabela 11.5.
Tabela 11.5 Definindo a propriedade ConnectionString para uma fonte do Microsoft Access.
Por padro, o OLE DB Provider para Microsoft Access (tambm chamado de Jet OLE DB Provider), abre o Banco de Dados com permisso
de leitura e escrita, isto , os dados tambm podem ser modificados. Para alterar o modo de abertura para, por exemplo, somente
escrita, devemos utilizar a propriedade Mode, do objeto Connection.
A seguir, temos um exemplo de uma conexo com um Banco de Dados do Microsoft Access, utilizando
a propriedade ConnectionString:
Set conn=Server.CreateObject(ADODB.Connection)
conn.Open PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\Northwind.mdb
Primeiro, criamos um objeto do tipo Connection. Depois, utilizamos o mtodo Open, para abrir esta
conexo. Observe que, aps o mtodo Open, passada uma String de conexo como parmetro para o
mtodo Open. Este parmetro a propriedade ConnectionString.
Poderamos obter o mesmo resultado de uma maneira diferente: primeiro, vamos definir a propriedade
ConnectionString, depois simplesmente chamamos o mtodo Open. Ao chamar o mtodo Open, o mesmo
verifica se a propriedade ConnectionString j est definida e utiliza a mesma. Nosso exemplo ficaria assim:
1. Set conn=Server.CreateObject(ADODB.Connection)
2 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA
SOURCE=c:\meus documentos\Northwind.mdb
3. conn.Open
Neste caso, na linha 1, foi definida a propriedade ConnectionString e, depois, na linha 3, utilizamos o
mtodo Open.
Utilizamos os nmeros de linha apenas para referncia. Quando criamos nossas pginas ASP, no devemos utilizar nmeros de linhas.
Parmetro Descrio
Provider Deve ser especificado o OLE DB Provider para o Microsoft Access. Para esta propriedade, utilizamos
o seguinte valor: Microsoft.Jet.OLEDB.4.0.
Data Source Informamos o caminho para o arquivo .mdb. Por exemplo, C:\Arquivos de programas\office\
nwind.mdb.
User ID Especifica o nome do usurio com o qual a conexo ser estabelecida. Caso esta propriedade no
seja informada, a mesma ser definida como admin, o qual o usurio padro.
Password Informa a senha para o usurio que far a conexo. Caso esta propriedade no seja informada,
a mesma ser definida como .
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
658 00CURSO COMPLETO
A linha 2 aparece quebrada em duas linhas por questes de espao para exibio, mas a mesma deve ser digitada em uma nica linha.
No exemplo a seguir, temos um caso onde foi fornecido o nome do usurio e a senha para conexo.
1 Set conn=Server.CreateObject(ADODB.Connection)
2 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\meus documentos\nwind.mdb;
User ID=jsilva;Password=senha12"
3 conn.Open
Para maiores detalhes sobre segurana de Bancos de Dados do Microsoft Access, consulte a documentao
do Microsoft Access.
CONFIGURANDO CONEXES COM BANCOS DE DADOS DO MICROSOFT SQL SERVER 2000
Para configurar a propriedade ConnectionString para estabelecer uma conexo com um Banco de
Dados do Microsoft SQL Server 2000, configuramos os parmetros indicados na Tabela 11.6.
Tabela 11.6 Definindo a propriedade ConnectionString para uma fonte do Microsoft SQL Server 2000.
O PRIMEIRO EXEMPLO CONECTANDO COM O BANCO DE
DADOS NORTHWIND, DA INSTNCIA SERVIDOR\SRVINST01
No Exemplo 11.2, temos um exemplo de uma conexo com um Banco de Dados do Microsoft SQL
Server, utilizando a propriedade ConnectionString.
Crie este exemplo utilizando o editor de textos de sua preferncia. No inclua o nmero das linhas, os quais servem apenas para
referncia. Salve este exemplo na pasta C:\LivroSQL2000\Capitulo11, com o nome de Exemplo11-2.asp.
Parmetro Descrio
Provider Deve ser especificado o OLE DB Provider para o Microsoft SQL Server. Para esta
propriedade utilizamos o seguinte valor: SQLOLEDB.
Data Source ou Server Informamos o nome do Servidor SQL, no formato Servidor\Instncia. Por exemplo:
SERVIDOR\SRVINST01 ou SERVIDOR\SRVINST02.
Initial Catalog ou Database Nome do Banco de Dados a ser utilizado. Em um Servidor SQL Server, podem existir
vrios Bancos de Dados.
User ID ou uid Especifica o nome do usurio com a qual a conexo ser estabelecida.
Password ou pwd Informa a senha para o usurio que far a conexo. Caso no esta propriedade no seja
informada, a mesma ser definida como .
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
659 CURSO COMPLETO00
Exemplo11.2 Conectando com um Banco de Dados do Microsoft SQL Server 2000 Exemplo11-2.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Conectando com o SQL Server 2000</TITLE>
5 </HEAD>
6 <BODY>
7 <H1>
8 <FONT color=navy>Registros da tabela Orders !!!!</FONT>
9 </H1>
10 <%
11 O primeiro passo criar a conexo com o Banco de Dados
12 Para isto crio um objeto do tipo Connection
13 Cria um objeto do tipo ADODB.Connection
14 Set conn=Server.CreateObject(ADODB.Connection)
15 Agora defino a propriedade ConnectionString do objeto Connection
16 criado anteriormente.
17 conn.ConnectionString = PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SRVINST01 ;Initial Catalog=Northwind;
User ID=sa;Password=senha123"
18 conn.Open
19 O prximo passo criar uma instruo SQL
20 inst_sql=SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCity, Orders.ShipCountry
FROM Orders ORDER BY Orders.OrderDate
21 Esta instruo SQL retorna os campos OrderID, OrderDate,
ShipCity e ShipCountry, da tabela Orders, do Banco de Dados NorthWind.
22 Agora criamos um objeto RecordSet.
23 Este objeto ir executar a instruo SQL e
24 receber o resultado da consulta.
25 Set Pedidos = Server.CreateObject(ADODB.Recordset)
26 Agora executamos a instruo SQL
27 Pedidos.Open inst_sql, conn, 3, 3
28 Neste ponto, j tenho todos os registros retornados
29 pela instruo SQL. Estes registros esto armazenados
30 no objeto Clientes, que um objeto do tipo Recordset.
31 Agora, passo a montar a pgina que ser retornada para o
32 navegador do Cliente. Vamos montar uma tabela com o
33 resultado da consulta.
34 %>
35 <P>
36 <HR>
37 <TABLE bgColor=gray border=1 borderColor=navy cellPadding=1 cellSpacing=1 width=100%>
38 <TR>
39 <TD align=middle bgColor=gray>Cdigo </TD>
40 <TD align=middle bgColor=gray>Data </TD>
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
660 00CURSO COMPLETO
41 <TD align=middle bgColor=gray>Cidade </TD>
42 <TD align=middle bgColor=gray>Pas </TD>
43 </TR>
44 <%
45 Inicio um Loop para percorrer todos os registros
46 do RecordSet Clientes, exibindo um registro em
47 cada linha da tabela.
48 Do Until Pedidos.eof %>
49 <TR>
50 <TD align=middle bgColor=gray><%=Pedidos.Fields(OrderID)%></TD>
51 <TD align=middle bgColor=gray><%=Pedidos.Fields(OrderDate)%></TD>
52 <TD align=middle bgColor=gray><%=Pedidos.Fields(ShipCity)%></TD>
53 <TD align=middle bgColor=gray><%=Pedidos.Fields(ShipCountry)%></TD>
54 </TR>
55 <%
56 Pedidos.MoveNext
57 loop
58 %>
59 </TABLE>
60 </P>
61 <HR>
62 </BODY>
63 </HTML>
Ao acessarmos este arquivo, obtemos o resultado indicado na Figura 11.33.
Figura 11.33 Registros da tabela Orders do Banco de Dados Northwind da instncia SERVIDOR\SRVINST01 do servidor SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
661 CURSO COMPLETO00
Para que voc possa utilizar a conta sa para login no servidor SQL Server, o modo de segurana precisa estar configurado para SQL
Server and Windows. Para informaes sobre como alterar o modo de segurana de uma instncia do servidor SQL Server 2000,
consulte o Captulo 6 Segurana no SQL Server 2000.
Vamos comentar alguns detalhes sobre o cdigo do Exemplo 11.2.
Primeiro, vamos considerar o seguinte fragmento de cdigo:
17 conn.ConnectionString = PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SRVINST01 ;Initial Catalog=Northwind;
User ID=sa;Password=senha123
18 conn.Open
Observe que, neste caso, primeiro definimos a propriedade ConnectionString. Depois, utilizamos o mtodo
Open, para abrir a conexo. Como a propriedade ConnectionString j estava definida, o mtodo Open
utiliza as informaes da propriedade ConnectionString para estabelecer a conexo com o Banco de Dados.
Segundo, vamos considerar a String de conexo:
PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SRVINST01;
Initial Catalog=Northwind;
User ID=sa;Password=senha123
Observe que estamos informando os parmetros indicados na Tabela 11.7.
Tabela 11.7 Parmetros para a String de conexo com o Servidor SQL Server 2000.
Temos dois parmetros que merecem comentrios.
O parmetro Data Source ou Server foi informado da seguinte maneira:
SERVIDOR\SRVINST01
Este formato, conforme descrito nos captulos iniciais do livro, uma novidade do Microsoft SQL
Server 2000. O valor antes da barra (\) o nome do Servidor e o valor depois da barra o nome da
Instncia do SQL Server a ser utilizada. Com o Microsoft SQL Server 2000, posso ter vrias instncias
do Servidor SQL, isto como se eu tivesse vrios servidores SQL Server 2000 diferentes no mesmo
equipamento, sendo que cada um deles deve possuir um nome diferente. Neste livro estamos utilizando
um servidor com duas instncias, conforme indicado a seguir:
SERVIDOR\SRVINST01
SERVIDOR\SRVINST02
Parmetro Valor fornecido
Provider SQLOLEDB
Data Source ou Server SERVIDOR\SRVINST01
Initial Catalog ou Northwind
User ID ou uid sa
Password ou pwd senha123
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
662 00CURSO COMPLETO
Quando vou definir a String de conexo, preciso definir a qual a instncia quero conectar a pgina ASP.
Se voc estiver utilizando o Microsoft SQL Server 7.0, basta fornecer o nome do Servidor. Neste caso
definiramos a propriedade ConnectionString da seguinte maneira:
PROVIDER=SQLOLEDB;
Data Source=SERVIDOR;
Initial Catalog=Northwind;
User ID=sa;Password=senha123
Observe que estamos conectando com o Banco de Dados Northwind. Dentre deste Banco de Dados, a
nossa instruo SQL acessa dados da tabela Orders, conforme indicado pelo seguinte fragmento de cdigo:
20 inst_sql=SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCity, Orders.ShipCountry
FROM Orders ORDER BY Orders.OrderDate
Com esta instruo so retornados os campos OrderID, OrderDate, ShipCity e ShipCountry. Alm
disso, a listagem obtida classificada pelo campo OrderDate, conforme pode ser confirmado pelos
resultados exibidos na Figura 11.33.
O restante do cdigo para a construo da tabela e exibio de um registro em cada linha.
CONFIGURANDO CONEXES OLE DB, COM BANCOS DE DADOS ORACLE
Para configurar a propriedade ConnectionString para estabelecer uma conexo com um Banco de
Dados de um servidor ORACLE, podemos configurar os parmetros indicados na Tabela 11.8.
Tabela 11.8 Definindo a propriedade ConnectionString para uma fonte ORACLE.
A seguir, temos um exemplo de uma conexo com um Banco de Dados, utilizando a propriedade
ConnectionString:
1 Set conn=Server.CreateObject(ADODB.Connection)
2 conn.Open Provider=MSDAORA;Data Source=SERVIDOR;User ID=admin;
Password=admin123
Primeiro, criamos um objeto do tipo Connection. Depois, utilizamos o mtodo Open, para abrir esta
conexo. Observe que, aps o mtodo Open, passada uma String de conexo como parmetro para
este mtodo. Este parmetro a propriedade ConnectionString.
Poderamos obter o mesmo resultado de uma maneira diferente: primeiro, vamos definir a propriedade
ConnectionString, depois simplesmente chamamos o mtodo Open. Ao chamar o mtodo Open, o mesmo
verifica se a propriedade ConnectionString j est definida e utiliza a mesma. Nosso exemplo ficaria assim:
Propriedade Descrio
Provider Deve ser especificado o OLE DB Provider para o ORACLE. Para esta propriedade utilizamos o
seguinte valor: MSDAORA.
Data Source Informamos o nome do Servidor ORACLE.
User ID Especifica o nome do usurio com a qual a conexo ser estabelecida.
Password Informa a senha para o usurio que far a conexo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
663 CURSO COMPLETO00
1 Set conn=Server.CreateObject(ADODB.Connection)
2 conn.ConnectionString = Provider=MSDAORA;Data Source=SERVIDOR;
User ID=admin; Password=admin123
3 conn.Open
Neste caso, na linha 2 foi definida a propriedade ConnectionString e, na linha 3, utilizamos o mtodo Open.
Utilizamos os nmeros de linha apenas para referncia. Quando criamos nossas pginas ASP, no devemos utilizar nmeros de linhas.
Microsoft Access, Microsoft SQL Server e ORACLE so os casos mais comuns de conexes de pginas ASP
com fontes de dados. Porm, conforme descrito no Captulo 5, atravs de OLE DB podemos estabelecer
conexes com qualquer fonte de dados, para a qual esteja disponvel um OLE DB Provider, inclusive
fontes de dados no estruturadas no formato de Bancos de Dados Relacionais. Como exemplos de fontes
que no possuem o tradicional formato dos Bancos de Dados Relacionais, poderamos citar os arquivos
de mensagens de correio eletrnico do Microsoft Exchange ou do Lotus Notes, um catlogo de Indexao
do Microsoft Index Server ou, at mesmo, uma fonte de dados residente em um Mainframe.
COMENTRIOS FINAIS SOBRE O OBJETO CONNECTION
Agora veremos mais alguns detalhes importantes sobre o objeto Connection.
Conforme mostrado no Exemplo 11.2, para conectar uma pgina ASP com uma fonte de dados, estamos
utilizando os seguintes passos:
Criamos um objeto do tipo Connection e conectamos este objeto com uma fonte de dados,
seja via ODBC, seja via OLE DB.
Criamos um objeto do tipo RecordSet e executamos uma instruo SQL. Feito isto, o objeto
RecordSet conter os dados retornados pela fonte de dados.
Uma vez obtidos os dados, utilizamos cdigo ASP para exibir os resultados desejados. Esta metodologia funciona
sem maiores problemas, porm existem alguns aspectos importantes a serem considerados, tais como o
encerramento de uma conexo e o nvel de acesso aos dados oferecido por uma determinada conexo.
A linha 2 aparece quebrada em duas linhas por questes de espao para exibio, mas a mesma deve ser digitada em uma nica linha.
Para detalhes sobre o ORACLE, consulte a documentao do produto.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
664 00CURSO COMPLETO
O MTODO CLOSE
O mtodo Close utilizado para fechar/encerrar uma Conexo e quaisquer outros objetos que sejam
dependentes da conexo. Por exemplo, se criamos um objeto RecordSet que obteve dados a partir da
conexo que est sendo encerrada, o objeto RecordSet tambm ser encerrado.
A sintaxe deste mtodo bastante simples. Vamos supor que tenhamos criado uma conexo chamada
Clientes; para encerr-la, poderamos utilizar o seguinte cdigo:
<% Clientes.Close %>
Ao fecharmos um objeto, estaremos liberando os recursos computacionais que o mesmo utilizava, tais
como memria e processador. Porm, o objeto continua na memria, com isso podemos utilizar o
mtodo Open para abrir novamente a conexo e voltar a utiliz-la. No exemplo abaixo, fechamos o
objeto Clientes e depois voltamos a abri-lo, utilizando o mtodo Open.
<% Clientes.Close
Clientes.Open
%>
Neste caso poderamos voltar a utilizar o objeto Clientes. Para remover um objeto, em definitivo, da
memria, devemos definir o seu valor como Nothing, conforme indicado no exemplo:
<%
Set Clientes = Nothing
%>
Feito isso, somente poderemos voltar a utilizar o objeto se o mesmo for novamente criado, utilizando
o seguinte cdigo:
Set Clientes = Server.CreateObject(ADODB.Connection)
Observe que, pelo fato de Clientes ser um objeto (do tipo Connection) e no simplesmente uma
varivel, devemos utilizar o operador Set. Se tentarmos criar ou remover um objeto, sem a utilizao
do operador Set, obteremos uma mensagem de erro e a pgina no ser exibida.
POOL DE CONEXES
Quando um usurio fecha uma conexo, atravs da utilizao do mtodo Close, conforme descrito
anteriormente, esta conexo mantida na memria e a conexo adiciona a um pool de conexes
inativas. Da prxima vez que o mesmo usurio, ou qualquer outro usurio for abrir uma nova conexo,
o OLE DB primeiro verifica se, no Pool de conexes inativas, existe uma conexo exatamente igual ao
que o usurio est solicitando. Se for encontrada, a mesma ser utilizada, caso contrrio uma nova
conexo ser criada e enviada para o usurio que solicitou.
O OLE DB mantm um Pool de conexes, porque o processo de criar uma conexo o que mais exige
recursos do servidor Web. Sempre que uma conexo puder ser reaproveitada, a partir do Pool de conexes,
estaremos economizando recursos do servidor.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
665 CURSO COMPLETO00
As conexes inativas no permanecem indefinidamente no Pool de conexes, aps um perodo padro
sem utilizao, as mesmas so removidas, de tal forma a no onerar os recursos do servidor Web, sem
que as mesmas estejam sendo utilizadas.
A utilizao de Pool de conexes de grande importncia, principalmente para servidores Web muito
acessados, em que novas conexes esto sendo criadas e fechadas a todo instante. Neste caso, o Pool de
conexes representa um alvio na carga de recursos como memria RAM e processador.
Com isso, encerramos nosso estudo bsico sobre conexes com a utilizao de OLE DB. Na seqncia,
vamos ver um exemplo simples de conexo com Banco de Dados, utilizando uma fonte ODBC.
UM EXEMPLO UTILIZANDO ODBC
Neste item, vamos utilizar a fonte ODBC, nwind, criada anteriormente, para criar uma pgina ASP que
conecta o Banco de Dados Northwind e mostra uma listagem de Clientes com as seguintes informaes:
Cdigo do Cliente (CdigoDoCliente).
Cargo (CargoDoContato).
Endereo (Endereo).
Telefone (Telefone).
O nome entre parnteses o nome do campo na tabela Clientes do Banco de Dados C:\Meus documentos\Northwind.mdb. Caso voc
esteja utilizando outro Banco de Dados ou outra tabela, utilize os nomes de campo adequados.
Na Figura 11.34, podemos ver a estrutura da tabela Clientes que est sendo utilizada no nosso exemplo.
Figura 11.34 A tabela Clientes do Banco de Dados Northwind.
Pode acontecer que a estrutura do Northwind esteja em Ingls. Os nomes dos campos aparecem com
CustomerID, City, Address e assim por diante. Utilize os nomes conforme os mesmos se apresentam na
sua cpia do Banco de Dados Northwind.mdb.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
666 00CURSO COMPLETO
No Exemplo 11.3 apresentamos uma pgina ASP que faz a conexo com o Banco de Dados Northwind
e exibe uma listagem de Clientes. Aps a listagem explicaremos cada um dos comandos utilizados.
Crie este exemplo utilizando o editor de textos de sua preferncia. No inclua o nmero das linhas, os quais servem apenas para
referncia. Salve este exemplo na pasta C:\LivroSQL2000\Capitulo11, com o nome de Exemplo11-3.asp.
Exemplo 11.3 Uma pgina ASP que conecta com o Banco de Dados Northwind Exemplo11-3.asp.
1. <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Clientes no Banco de Dados Northwind !</TITLE>
5 </HEAD>
6 <BODY>
7 <H1>
8 <FONT color=navy>Listagem de Clientes !!!</FONT>
9 </H1>
10 <%
11 O primeiro passo criar a conexo com o Banco de Dados
12 Para isto crio um objeto do tipo Connection
13 Cria um objeto do Tipo ADODB.Connection
14 Set conn = Server.CreateObject(ADODB.Connection)
15 Agora abro uma conexo com a fonte ODBC nwind
16 criada anteriormente.
17 conn.Open nwind
18 O prximo passo criar uma instruo SQL
19 a qual utilizada para criar a listagem de Clientes.
20 inst_sql=SELECT Clientes.CdigoDoCliente, Clientes.CargoDoContato,
Clientes.Endereo,Clientes.Telefone FROM Clientes
21 Esta instruo SQL retorna os campos CdigoDoCliente, CargoDoContato,
22 Endereo e Telefone, da tabela Clientes.
23 Agora criamos um objeto RecordSet.
24 Este objeto ir executar a instruo SQL e
25 receber o resultado da consulta.
26 Set Clientes = Server.CreateObject(ADODB.Recordset)
27 Agora executamos a instruo SQL
28 retornando os registros da tabela Clientes.
29 Clientes.Open inst_sql, conn, 3, 3
30 Os dois ltimos parmetros sero discutidos
31 no prximo item, quando estudarmos o objeto RecordSet em detalhes.
32 Neste ponto j tenho todos os registros retornados
33 pela instruo SQL. Estes registros esto armazenados
34 no objeto Clientes, que um objeto do tipo Recordset.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
667 CURSO COMPLETO00
35 Agora passo a montar a pgina que ser retornada para o
36 navegador do Cliente. Vamos montar uma tabela com o
37 resultado da consulta.
38 %>
39 <P>
40 <HR>
41 <TABLE bgColor=gray border=1 borderColor=navy cellPadding=1 cellSpacing=1 width=100%>
42 <TR>
43 <TD align=middle bgColor=gray>Cdigo</TD>
44 <TD align=middle bgColor=gray>Cargo</TD>
45 <TD align=middle bgColor=gray>Endereo</TD>
46 <TD align=middle bgColor=gray>Telefone</TD>
47 </TR>
48 <%
49 Inicio um Loop para percorrer todos os registros
50 do RecordSet Clientes, exibindo um registro em
51 cada linha da tabela.
52 Do Until Clientes.eof %>
53 <TR>
54 <TD align=middle bgColor=gray><%=Clientes.Fields(CdigoDoCliente)%></TD>
55 <TD align=middle bgColor=gray><%=Clientes.Fields(CargoDoContato)%></TD>
56 <TD align=middle bgColor=gray><%=Clientes.Fields(Endereo)%></TD>
57 <TD align=middle bgColor=gray><%=Clientes.Fields(Telefone)%></TD>
58 </TR>
59 <%
60 Clientes.MoveNext
61 loop %>
62 </TABLE>
63 </P>
64 <HR>
65 </BODY>
66 </HTML>
Ao carregar esta pgina no Internet Explorer, o usurio recebe uma listagem conforme indicado na
Figura 11.35.
Antes de comentarmos esta listagem gostaria, mais uma vez, de salientar a natureza dinmica das
pginas criadas com ASP. Neste exemplo, qualquer alterao que seja feita nos dados da tabela Clientes,
refletir na listagem de Clientes, na prxima vez que o usurio carregar a pgina Exemplo11-3.asp. Isto
acontece porque a listagem montada, a partir do Banco de Dados, cada vez que a pgina carregada.
Com isso, ao carregar a pgina, todos os dados existentes na tabela Clientes sero exibidos. Por isso que
dizemos que a pgina criada dinamicamente, ou seja, cada vez que a pgina solicitada, o cdigo
ASP estabelece a conexo com o Banco de Dados, solicita a listagem de Clientes e apresenta a listagem
no formato de uma tabela, conforme definimos.
Agora vamos s explicaes a respeito do cdigo do Exemplo11.3. Embora existam diversos comentrios
na prpria listagem, cabe aqui, alguns esclarecimentos. Vamos detalhar diversos trechos de cdigo
deste exemplo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
668 00CURSO COMPLETO
Figura 11.35 A listagem de clientes do Banco de Dados Northwind.
Trecho 1: Considere o seguinte trecho de cdigo:
14 Set conn = Server.CreateObject(ADODB.Connection)
Esta linha cria um objeto Connection chamado conn. Poderamos utilizar qualquer nome vlido para
este objeto. Um ponto importante a salientar a utilizao da instruo Set. Sempre que formos criar
um objeto (Connection, Recordset, etc.), devemos usar a instruo Set. Se no utilizarmos a instruo
Set na criao de objetos, obteremos um erro na hora de carregar a pgina.
Tambm importante observarmos o seguinte:
Server.CreateObject(ADODB.Connection)
Este cdigo cria um objeto no servidor, sendo que este objeto do tipo ADODB.Connection, ou seja,
uma conexo ADO para Banco de Dados.
Aps a execuo deste comando, um objeto Connection foi criado, porm o mesmo ainda no faz
referncia a nenhum Banco de Dados especfico.
Trecho 2: Considere o seguinte trecho de cdigo:
15 Agora abro uma conexo com a fonte ODBC nwind
16 criada anteriormente.
17 conn.Open nwind
Na linha 17, estou associando a conexo conn a uma fonte ODBC nwind. Lembrando que esta fonte
ODBC foi criada previamente. Caso voc esteja utilizando uma fonte ODBC diferente, utilize o nome
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
669 CURSO COMPLETO00
adequado. Esta associao feita atravs do mtodo Open, do objeto Connection. A partir deste
momento, a minha conexo conn est associada ao Banco de Dados Northwind, conforme definido
pala fonte ODBC nwind.
Uma vez estabelecida a conexo hora de retornar dados, isto , registros, a partir do Banco de Dados.
Isto feito pelo trecho de cdigo a seguir.
Trecho 3: Considere o seguinte trecho de cdigo.
20 inst_sql=SELECT Clientes.CdigoDoCliente, Clientes.CargoDoContato,
Clientes.Endereo,Clientes.Telefone FROM Clientes
21 Esta instruo SQL retorna os campos CdigoDoCliente, CargoDoContato,
22 Endereo e Telefone, da tabela Clientes.
23 Agora criamos um objeto RecordSet.
24 Este objeto ir executar a instruo SQL e
25 receber o resultado da consulta.
26 Set Clientes = Server.CreateObject(ADODB.Recordset)
27 Agora executamos a instruo SQL
28 retornando os registros da tabela Clientes.
29 Clientes.Open inst_sql, conn, 3, 3
30 Os dois ltimos parmetros sero discutidos
31 durante o estudo do objeto Recordset.
Na linha 20, simplesmente, criamos uma varivel chamada inst_sql, a qual contm a instruo SQL
que ser executada no Banco de Dados Northwind. Observe que uma instruo SQL bastante simples,
a qual, basicamente, seleciona os campos CdigoDoCliente, CargoDoContato, Endereo e Telefone da
tabela Clientes do Banco de Dados Northwind.
Uma vez definida a instruo SQL, partimos para a criao de um objeto RecordSet. A criao deste
objeto feita na linha 26, onde criado um RecordSet chamado Clientes. Poderamos ter escolhido
qualquer nome para este objeto. Observe a utilizao da instruo Set. Como estamos criando um
objeto (do tipo RecordSet), devemos utilizar a instruo Set.
Agora devemos executar a instruo SQL, para que o objeto Recordset contenha os registros retornados
pela instruo SQL. Isto feito pelo seguinte cdigo:
29 Clientes.Open inst_sql, conn, 3, 3
Neste caso, utilizamos o mtodo Open do objeto RecordSet Clientes. O primeiro parmetro a instruo
SQL a ser utilizada inst_sql. O segundo parmetro o nome da conexo a ser utilizada conn. O terceiro
e quatro parmetros definem comportamentos para o objeto RecordSet, tais como se possvel mover-se
para frente e para trs, avanando e voltando pelos registros, se os registros retornados so apenas para
leitura ou para leitura e alteraes e assim por diante. Estudaremos estas opes no prximo tpico.
Bem, neste momento j temos um objeto RecordSet chamado Clientes, o qual possui uma srie de
registros obtidos a partir da tabela Clientes do Banco de Dados Northwind. Cada registro tem quatro
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
670 00CURSO COMPLETO
campos, conforme foi definido pela nossa instruo SQL, que somente retorna os campos
CdigoDoCliente, CargoDoContato, Endereo e Telefone.
Uma vez que o RecordSet Clientes foi criado com sucesso, hora de criarmos uma tabela que exibe os
dados do objeto RecordSet. Comeamos criando a primeira linha da tabela, a qual ir conter o ttulo
das colunas. Isto feito pelo cdigo descrito a seguir.
Trecho 4: Considere o seguinte trecho de cdigo.
41 <TABLE bgColor=gray border=1 borderColor=navy cellPadding=1 cellSpacing=1 width=100%>
42 <TR>
43 <TD align=middle bgColor=gray>Cdigo</TD>
44 <TD align=middle bgColor=gray>Cargo</TD>
45 <TD align=middle bgColor=gray>Endereo</TD>
46 <TD align=middle bgColor=gray>Fone</TD>
47 </TR>
Observe que, para criar o cabealho da tabela, utilizamos cdigo HTML puro. Veja que estamos criando
uma tabela com quatro colunas. Vamos exibir um registro por linha; como cada registro tem quatro
campos, precisamos de uma tabela com quatro colunas. Esta tabela ter tantas linhas quantos forem os
registros do objeto Clientes.
A construo do corpo da tabela feita com o seguinte trecho de cdigo:
52 Do Until Clientes.eof %>
53 <TR>
54 <TD align=middle bgColor=gray><%=Clientes.Fields(CdigoDoCliente)%></TD>
55 <TD align=middle bgColor=gray><%=Clientes.Fields(CargoDoContato)%></TD>
56 <TD align=middle bgColor=gray><%=Clientes.Fields(Endereo)%></TD>
57 <TD align=middle bgColor=gray><%=Clientes.Fields(Telefone)%></TD>
58 </TR>
59 <%
60 Clientes.MoveNext
61 loop %>
62 </TABLE>
Na linha 52, iniciamos um lao Do Until Condio... Loop. Como condio utilizamos a propriedade
Eof do objeto Clientes. O lao continua sendo executado, at que a condio Clientes.eof se torne
verdadeira. Esta condio somente ir tornar-se verdadeira quando o indicador de registro j estiver
alm do ltimo registro. Com isso, o lao somente ser encerrado depois que tivermos percorrido
todos os registros do objeto Clientes, que exatamente o que queremos.
Para cada registro criada uma nova linha na tabela. Isto feito pelo seguinte trecho de cdigo:
53 <TR>
54 <TD align=middle bgColor=gray><%=Clientes.Fields(CdigoDoCliente)%></TD>
55 <TD align=middle bgColor=gray><%=Clientes.Fields(CargoDoContato)%></TD>
56 <TD align=middle bgColor=gray><%=Clientes.Fields(Endereo)%></TD>
57 <TD align=middle bgColor=gray><%=Clientes.Fields(Telefone)%></TD>
58 </TR>
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
671 CURSO COMPLETO00
Observe o fragmento de cdigo:
<%=Clientes.Fields(CdigoDoCliente)%>
Este fragmento retorna o valor do campo CdigoDoCliente do registro atual do Recordset Clientes.
Com isso, vamos preenchendo cada coluna com os respectivos valores de cada campo de cada registro.
A primeira coluna com o campo CdigoDoCliente, a segunda com o campo CargoDoContato e assim
por diante. Neste caso, utilizamos a coleo Fields do RecordSet Clientes, a qual nos d acesso aos
campos individuais de cada registro.
As linhas seguintes so de grande importncia:
59 <%
60 Clientes.MoveNext
61 loop %>
62 </TABLE>
Se no colocssemos a linha 60, esta pgina ASP entraria em Loop infinito e somente o primeiro
registro seria exibido repetidamente, at congelar a pgina. Quando criamos um objeto RecordSet, por
padro, o indicador de registro posicionado no primeiro registro. Utilizamos o mtodo MoveNext
para mover o indicador para o prximo registro. Com isso, a cada passagem do Lao Do Until, o
indicador posicionado no prximo registro, at o momento em que todos os registros foram
percorridos. Se no houvesse esta linha, o indicador ficaria sempre no primeiro registro e o lao nunca
seria encerrado, pois a condio Clientes.eof seria sempre verdadeira, impedindo que o lao fosse
encerrado. A linha 62 simplesmente a tag HTML de fechamento da tabela.
J vimos alguns exemplos nos quais utilizamos o objeto Recordset. Agora vamos estud-lo em detalhes.
Vamos falar sobre seus mtodos, propriedades e eventos. Tambm veremos exemplos de utilizao do
objeto Recordset.
O OBJETO RECORDSET
Nos exemplos que foram apresentados at aqui, j utilizamos o objeto RecordSet. Agora chegou o
momento de fazer um estudo mais aprofundado deste objeto.
O objeto RecordSet contm o resultado de uma instruo SQL, executada em um Banco de Dados. Um
objeto RecordSet contm um conjunto de Registros. como se fosse uma tabela, onde cada linha um
registro, sendo que cada registro formado por um conjunto de campos (colunas da tabela). Por
exemplo, ao executarmos a seguinte instruo SQL:
Select * from Pedidos
estaremos selecionando todos os registros da tabela Pedidos, os quais podero ser acessados atravs de
um objeto do tipo RecordSet.
Existem detalhes importantes que devemos conhecer a respeito do acesso aos dados. Devemos considerar
questes como:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
672 00CURSO COMPLETO
O acesso deve ser somente para leitura dos dados ou devem ser permitidas alteraes e inseres
de novos dados?
Como tratar questes sobre o acesso simultneo aos dados, por exemplo, como tratar a situao
em que dois usurios tentam alterar o mesmo registro, ao mesmo tempo?
Estas so questes importantes e devem ser consideradas sempre que formos disponibilizar acesso aos
dados da nossa empresa, para usurios da Internet. Tambm precisamos conhecer o que so Cursores, quais
os tipos de Cursores disponveis e para que utilizamos Cursores. Vamos estudar estes pontos neste tpico.
Para criar um objeto RecordSet, utilizamos a seguinte sintaxe:
Set Pedidos = Server.CreateObject(ADODB.Recordset)
Neste exemplo, estamos criando um RecordSet chamado Pedidos. Uma vez criado o RecordSet, o prximo
passo utilizarmos o mtodo Open. O mtodo Open possui a seguinte sintaxe:
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
Considere o exemplo:
Pedidos.Open inst_sql, conn, 3, 3
Os parmetros a serem passados para o mtodo Open, esto descritos na Tabela 11.9.
Tabela 11.9 Parmetros do mtodo Open do objeto RecordSet.
UM POUCO SOBRE CURSORES
Um cursor o mecanismo utilizado em ADO para gerenciar o conjunto de registros de um objeto
RecordSet. Somente podemos ter acesso a um registro por vez. Este registro chamado de Registro
corrente. Quando utilizamos o mtodo Open, por padro, o primeiro registro o Registro corrente.
Um cursor tambm utilizado para determinar qual o Registro corrente, bem como para movimentar
o indicador de registro entre os diversos registros do objeto RecordSet. O mecanismo que identifica
qual o Registro corrente chamado de Record pointer. Quem lida com a manipulao do Record
Parmetro Descrio
Source Pode ser o nome de um objeto Command, uma instruo SQL ou o nome de uma varivel que
contm uma instruo SQL, o nome de uma tabela ou de um Store Procedure do Banco de Dados
ou at uma URL que aponta para uma fonte de dados.
ActiveConnection O nome da conexo a ser utilizada ou a String de conexo para uma fonte de dados ODBC ou
OLE DB. opcional.
CursorType um valor que determina o tipo de cursor que ser utilizado pelo provedor de dados na
abertura do RecordSet. opcional. Falaremos mais sobre tipos de cursores ainda neste item.
LockType um valor que determina o tipo de lock que ser utilizado pelo provedor de dados na abertura
do RecordSet. opcional. Falaremos mais sobre tipos de lock ainda neste item.
Options Um valor do tipo Long, o qual define como o provedor de dados deve avaliar o argumento
Source, quando o mesmo for algo diferente de um objeto Command ou quando o RecordSet
deve ser recuperado a partir de um arquivo salvo previamente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
673 CURSO COMPLETO00
pointer o cursor. Por isso quando utilizamos os mtodos MoveNext (mover para o prximo registro),
MovePrevious (mover para o registro anterior) ou qualquer outro mtodo de movimentao, estamos
utilizando o cursor.
O mecanismo do cursor tambm gerencia situaes em que tentamos avanar alm do ltimo registro
ou voltar alm do primeiro registro, ou quando acessamos o valor de um campo de um registro. De
uma maneira simples, podemos afirmar que grande parte da funcionalidade de um objeto RecordSet
fornecida pelo mecanismo do cursor.
Quando utilizamos o mtodo Open, podemos definir diferentes formas de comportamento para o
mecanismo do cursor. Estas formas de comportamento que determinam os tipos de cursores
disponveis, os quais esto descritos na Tabela 11.10. O tipo do cursor pode ser definido com um valor
numrico ou atravs de uma constante, conforme indicado na Tabela 11.10.
Tabela 11.10 Tipos de cursores disponveis.
O tipo de cursor a ser utilizado depende da aplicao que estamos desenvolvendo. Por exemplo, se
estamos desenvolvendo uma pgina ASP apenas para exibir um conjunto de registros, podemos utilizar
um cursor do tipo Static. Cursores mais simples, como o do tipo Static, consomem menos recursos.
Cursores mais sofisticados, como o do tipo Dynamic, consomem mais recursos computacionais. Estes
recursos podem ser consumidos na estao do Cliente ou no servidor Web, dependendo da localizao
do cursor. Veremos como definir a localizao do cursor atravs da utilizao da propriedade
CursorLocation, no prximo item.
Agora alguns exemplos de utilizao do mtodo Open.
Valor/Constante Tipo/Descrio
3 adOpenStatic Define um cursor do tipo Static. Um cursor deste tipo contm uma cpia esttica dos
registros. O contedo do RecordSet definido no momento da criao do mesmo. Caso
sejam feitas alteraes no Banco de Dados, estas alteraes no sero visveis para o
RecordSet que utiliza um cursor do tipo Static. Somente recriando o RecordSet que
poderemos ter acesso as alteraes efetuadas. Podemos movimentar o ponteiro de
registro em ambas as direes, isto , podemos utilizar os mtodos MoveNext,
MovePrevious e assim por diante.
0 adOpenForwardOnly Cria um cursor do tipo Forward Only. Este o valor padro que ser utilizado caso no
seja definido nenhum outro tipo. Somente podemos utilizar o mtodo MoveNext. Se
tentarmos utilizar um outro mtodo de movimentao, ser gerado um erro e a pgina
no ser carregada. Tambm um cursor do tipo Static, com a diferena que somente
podemos nos movimentar para a frente.
2 adOpenDynamic Cria um cursor do tipo Dynamic. Um cursor deste tipo no possui um conjunto fixo de
registros. Quaisquer alteraes, adies e excluses feitas por outros usurios sero
visveis para o objeto RecordSet, sem que o mesmo tenha que ser eliminado e recriado.
Podemos nos movimentar em ambas as direes dentro do RecordSet.
1 adOpenKeyset Cria um cursor do tipo Keyset. Um cursor deste tipo parecido com um cursor Dynamic,
com a exceo de que o conjunto de registros fixo. O RecordSet enxerga as alteraes
feitas por outros usurios, porm a adio de novos registros no visvel para um
RecordSet do tipo Keyset. Caso algum registro seja eliminado por outros usurios, o
respectivo registro estar inacessvel no RecordSet. Podemos nos movimentar em ambas
as direes dentro do RecordSet.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
674 00CURSO COMPLETO
Este exemplo cria um RecordSet chamado Clientes e define um cursor do tipo Static.
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.Open inst_sql, conn, 3, 3
%>
Ao invs de utilizarmos o valor 3, podemos utilizar a constante correspondente adOpenStatic ,
conforme o exemplo:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.Open inst_sql, conn, adOpenStatic, 3
%>
O prximo exemplo cria um RecordSet chamado Clientes e define um cursor do tipo Keyset.
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.Open inst_sql, conn, 1, 3
%>
Ao invs de utilizarmos o valor 1, podemos utilizar a constante correspondente adOpenKeyset ,
conforme o exemplo:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.Open inst_sql, conn, adOpenKeyset, 3
%>
LOCALIZAO DO CURSOR
O cursor pode estar localizado no servidor Web ou no Cliente que est acessando os dados. Algumas
fontes de dados, como o Microsoft SQL Server, podem oferecer servios de cursor no Servidor. O Microsoft
Access no oferece servios de cursor, com isso o cursor fica localizado no Cliente. Quando acessamos
fontes de dados, utilizando OLE DB, podemos utilizar o servio de cursor oferecido pelo prprio OLE
DB. A opo padro, caso no seja definido nada em contrrio, que o cursor esteja no Servidor.
Para definir a localizao do cursor, devemos utilizar a propriedade CursorLocation do objeto RecordSet.
Definimos esta propriedade antes da utilizao do mtodo Open do objeto RecordSet. A Tabela 11.11
descreve os valores possveis para esta propriedade.
Tabela 11.11 Valores para a propriedade CursorLocation.
Valor/Constante Tipo/Descrio
3/adUseClient Utiliza servios de cursor no Cliente.
1/adUseNone No utiliza servios de cursor. Somente mantido por questes de compatibilidade com as
verses anteriores.
2/adUseServer Utiliza servios de cursor do servidor ou do provedor OLE DB.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
675 CURSO COMPLETO00
No prximo exemplo, definimos o cursor no Cliente:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.CursorLocation = 3
Clientes.Open inst_sql, conn, 3, 3
%>
A propriedade CursorLocation deve ser definida antes da utilizao do mtodo Open. Ao tentarmos definir a propriedade CursorLocation,
com o RecordSet aberto, obteremos a seguinte mensagem de erro:
Tipo de erro:
ADODB.Recordset (0x800A0E79)
Operation is not allowed when the object is open.
A mensagem indica que a operao (definir a localizao do cursor) no permitida quando o objeto
est aberto.
Ao invs de utilizarmos o valor 3, podemos utilizar a constante correspondente adUseClient ,
conforme o exemplo:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.CursorLocation = adUseClient
Clientes.Open inst_sql, conn, adOpenStatic, 3
%>
Quando criamos um RecordSet com o cursor no Servidor, responsabilidade do Servidor gerenciar a
navegao e as atualizaes do RecordSet, sendo que sero consumidos recursos no Servidor.
Ao utilizar o cursor no Cliente, todo o contedo do RecordSet copiado para a estao do Cliente e
gerenciado por um cursor local. Devemos considerar a questo da velocidade da conexo do usurio
com a Internet ou com a Intranet da empresa, pois se o RecordSet for muito grande, isto , um grande
nmero de registros, o tempo para copiar todo o RecordSet, pode ser inaceitvel. Porm uma vez
copiado o RecordSet para a estao do Cliente, a utilizao do RecordSet mais rpida, pois no
preciso acessar o Servidor para simples operaes, tais como movimentar-se para o prximo registro.
Quando uma aplicao Web desenvolvida, a localizao dos cursores deve ser discutida na fase de
projeto, sempre procurando propiciar o melhor desempenho possvel para a aplicao. Em uma mesma
aplicao posso ter pginas que utilizam o cursor no Servidor e outras que utilizam o cursor no Cliente,
depende apenas da natureza de cada pgina.
No prximo exemplo, definimos o cursor no Servidor:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.CursorLocation = 2
Clientes.Open inst_sql, conn, 3, 3
%>
Ao invs de utilizarmos o valor 2, podemos utilizar a constante correspondente adUseServer , conforme
o exemplo:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
676 00CURSO COMPLETO
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.CursorLocation = adUseServer
Clientes.Open inst_sql, conn, adOpenStatic, 3
%>
Lembrando que no necessrio definir o cursor no Servidor, pois essa a definio padro, ou seja, se
no for definida, explicitamente, a propriedade CursorLocation assume o valor adUseServer.
LOCK DE REGISTROS
Os Banco de Dados utilizam o Lock de registros como uma maneira de garantir a integridade dos
dados. Com a utilizao do Lock, garantimos que um mesmo registro no esteja sendo alterado,
simultaneamente, por mais do que um usurio. Quando um usurio acessa um registro para fazer
alguma alterao, o registro bloqueado, de tal forma que outros usurios no possam ter acesso ao
registro. O acesso ao registro somente ser liberado aps as alteraes terem sido salvas no Banco de
Dados. O tipo de Lock definido pela propriedade LockType do objeto RecordSet. Existem diferentes
maneiras de se fazer o Lock dos registros, conforme descrito na Tabela 11.12
Tabela 11.12 Tipos de Lock.
A maneira e os tipos de Lock possveis de serem utilizados, tambm dependem da fonte de dados que
est sendo utilizada. Quando no existe a necessidade de fazer alteraes nos registros, devemos utilizar,
sempre, um Lock do tipo Read Only (ou seja, como o RecordSet apenas leitura, os registros no
precisam ser bloqueados), pois isso evita que o Provider tenha que fazer verificaes ao acessar cada
registro, para verificar se o registro no est bloqueado no momento. Com isso teremos um
processamento bem mais rpido.
Um registro bloqueado no pode nem sequer ser visualizado pelos usurios, com isso evita-se que seja
exibido um registro que est sendo alterado.
Valor/Constante Tipo/Descrio
1/adLockReadOnly Cria um Lock do tipo Read Only. o tipo padro de lock. O RecordSet somente leitura,
isto , os registros no podem ser modificados, logo no precisam ser bloqueados. Com
isso tenho um processamento mais rpido, porm perco a capacidade de fazer alteraes
nos registros.
2/adLockPessimistic Cria um Lock do tipo Pessimistic. O provedor OLE DB tenta bloquear o registro no
momento em que o mesmo comea a ser editado. Isso feito para tentar garantir que o
registro ser editado com sucesso.
3/adLockOptimistic Cria um Lock do tipo Optimistic. O registro no bloqueado enquanto as alteraes no
registro no forem salvas no Banco de Dados atravs da utilizao do mtodo Update do
RecordSet.
4/adLockBatchOptimistic Cria um Lock do tipo Batch Optimistic. Este tipo de Lock permite que vrios registros sejam
modificados. Os registros somente sero bloqueados quando for chamado o mtodo
UpdateBatch do objeto RecordSet.
-1/adLockUnspecified No define o tipo de Lock. Quando utilizamos o mtodo Clone, para criar uma cpia do
RecordSet, o Clone ser criado com o mesmo tipo de Lock do RecordSet original.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
677 CURSO COMPLETO00
Para definir o tipo de Lock, utilizamos a propriedade LockType, conforme indicado no exemplo a
seguir, onde definimos o tipo de Lock como Optimistic:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.LockType = 3
Clientes.Open inst_sql, conn, 3, 3
%>
A propriedade LockType deve ser definida antes da utilizao do mtodo Open. Ao tentarmos definir a propriedade CursorLocation, com
o RecordSet aberto, obteremos a seguinte mensagem de erro:
Tipo de erro:
ADODB.Recordset (0x800A0E79)
Operation is not allowed when the object is open.
A mensagem indica que a operao (definir a localizao do cursor) no permitida quando o objeto
est aberto.
Ao invs de utilizarmos o valor 3, podemos utilizar a constante correspondente adLockOptimistic
, conforme o exemplo:
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.LockType = adLockOptimistic
Clientes.Open inst_sql, conn, adOpenStatic, 3
%>
Agora que j discutimos um pouco sobre cursores, localizao do cursor e Lock de registros, podemos
partir para o estudo de mais alguns detalhes do objeto RecordSet.
PROPRIEDADES DO OBJETO RECORDSET
Atravs da utilizao de propriedades de um objeto podemos definir algumas caractersticas do objeto
e tambm retornar as caractersticas do objeto. Algumas propriedades so somente para leitura, isto
significa que apenas podemos verificar o valor da propriedade. Outras propriedades so de leitura e
escrita, isto , podemos definir o valor da propriedade. Para definir o valor de uma propriedade,
utilizamos a seguinte sintaxe:
<% RecordSet.nome_da_propriedade = valor %>
Na Tabela 11.13 esto listadas as principais propriedades do objeto RecordSet.
Tabela 11.13 Principais propriedades do objeto RecordSet.
Propriedade Descrio
AbsolutePage Retorna a pgina do Registro corrente. Pgina um conceito de armazenamento de Banco de Dados.
AbsolutePosition Indica a posio do Registro corrente, dentro do RecordSet.
ActiveCommand Retorna o objeto Command utilizado para criar o RecordSet, caso tenha sido utilizado um objeto
Command. Esta propriedade somente leitura.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
678 00CURSO COMPLETO
MTODOS DO OBJETO RECORDSET
O objeto RecordSet nos fornece diversos mtodos, os quais podem ser utilizados para nos deslocar
atravs dos registros, fazer uma cpia do RecordSet, etc. Para utilizarmos um mtodo do objeto RecordSet,
utilizamos a seguinte sintaxe:
<% RecordSet.nome_do_mtodo parmetro1, parmetro2, ..., parmetron %>
Na Tabela 11.14 esto listados os principais mtodos do objeto RecordSet.
Propriedade Descrio
BOF Esta propriedade torna-se verdadeira quando estivermos no primeiro registro e utilizarmos o
mtodo MovePrevious, ou seja, indica uma tentativa de voltarmos alm do primeiro registro.
somente leitura.
Bookmark Retorna um marcador (bookmark) que identifica de maneira nica cada registro do RecordSet.
Tambm pode ser utilizado para tornar o registro identificado pelo Bookmark como o registro
corrente. Nem todos as fontes de dados e seus respectivos OLE DB Providers oferecem esta
propriedade.
CacheSize Indica o nmero de registros do RecordSet que devem ser mantidos no cache local de memria.
Tambm pode ser utilizada para definir este nmero de registros.
CursorLocation Pode ser utilizada para definir ou retornar a posio do cursor.
CursorType Indica o tipo de cursor utilizado em um objeto RecordSet. Tambm pode ser utilizado para definir o
tipo de cursor. Deve ser usado antes do mtodo Open, caso contrrio ir provocar um erro
quando a pgina for carregada.
EditMode Retorna um valor que indica o status de edio do registro atual. Este valor pode ser: 0 indica que
no existe edio em andamento; 1 indica que os dados do registro atual foram modificados,
porm ainda no foram salvos; 2 indica que o mtodo AddNew foi chamado e o registro que est
sendo criado, ainda no foi salvo no Banco de Dados; 4 indica que o registro atual foi deletado.
somente leitura.
EOF Esta propriedade torna-se verdadeira quando estivermos no ltimo registro e utilizarmos o mtodo
MoveNext, ou seja, indica uma tentativa de avanarmos alm do ltimo registro. somente leitura.
Filter Pode ser utilizado para filtrar os registros de um RecordSet de acordo com um critrio definido.
LockType Indica o tipo de Lock que est sendo utilizado. Tambm pode ser utilizado para definir o tipo de
Lock, antes que o mtodo Open tenha sido utilizado.
MaxRecords Define o nmero mximo de registros que uma consulta deve retornar para o objeto RecordSet.
O valor padro zero, o que significa sem limite de registros.
PageCount Indica quantas pginas de dados o objeto RecordSet contm. somente leitura.
PageSize Indica o nmero de registros por pgina.
RecordCount Indica o nmero de registros do objeto RecordSet. somente leitura.
Sort Especifica um ou mais campos para ordenao do RecordSet, alm do tipo de ordenao se
ascendente ou descendente. Para utilizarmos esta propriedade devemos utilizar o cursor no cliente.
Source Indica as fontes dos dados de um objeto RecordSet. Por exemplo, exibe a instruo SQL que deu
origem aos dados ou o nome da tabela ou consulta que originou os dados do objeto RecordSet.
State Indica o estado do objeto RecordSet. Indica se o mesmo est aberto, fechado ou executando uma
operao de maneira assncrona. somente leitura.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
679 CURSO COMPLETO00
Agora vamos aprender a executar algumas operaes bastante comuns em aplicaes Web do dia a dia.
Aprenderemos a inserir registros, excluir registros e alterar um determinado registro.
UMA PGINA ASP PARA INSERIR INFORMAES NO BANCO DE DADOS
Neste exemplo, aprenderemos a construir uma pgina ASP que recebe os dados digitados em um
formulrio HTML e armazena estes dados no registro de uma tabela. Tambm faremos a validao para
verificar se todos os campos obrigatrios foram preenchidos, caso algum campo obrigatrio no tenha
sido preenchido, devolvemos o formulrio para o usurio informando qual ou quais campos obrigatrios
no foram preenchidos. Caso todos os campos tenham sido preenchidos corretamente, os valores
digitados sero gravados no Banco de Dados.
Podemos utilizar este exemplo para criar um formulrio de cadastro de usurios ou qualquer outra
aplicao que necessite armazenar os dados digitados em um formulrio.
Tabela 11.14 Principais mtodos do objeto RecordSet.
Mtodo Descrio
AddNew Utilizado para adicionar um novo registro em um RecordSet que seja atualizvel.
Cancel Cancela a execuo de uma operao Open assncrona.
CancelBatch Cancela uma operao de atualizao em Batch.
CancelUpdate Cancela qualquer alterao feita no registro corrente, ou alteraes feitas em um novo registro
antes da chamada ao mtodo Update.
Clone Cria uma cpia do objeto RecordSet.
Close Fecha o objeto RecordSet e todos os objetos dele dependentes.
Delete Elimina o registro corrente ou um grupo de registros selecionados.
Find Pesquisa no RecordSet por um registro que atende um critrio especificado.
GetRows Retorna registros de um RecordSet e os armazena em um array.
GetString Retorna todo o RecordSet como uma String.
Move Movimenta o indicador de registro a partir de uma posio especificada um determinado nmero de
registros. Por exemplo, posso movimentar o indicador dez registros a partir do registro 10, com isso
o indicador fica no registro 20.
MoveFirst Movimenta o indicador para o primeiro registro.
MoveLast Movimenta o indicador para o ltimo registro.
MoveNext Movimenta o indicador para o prximo registro.
MovePrevious Movimenta o indicador para o registro anterior.
Open Abre o objeto RecordSet.
Requery Atualiza o conjunto de registros do RecordSet, executando novamente a consulta que deu origem
ao RecordSet.
Resync Atualiza os dados do RecordSet, buscando os dados a partir do Banco de Dados.
Save Salva o contedo do RecordSet em um arquivo.
Update Salva quaisquer alteraes que tenham sido feitas para o objeto RecordSet.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
680 00CURSO COMPLETO
Eu, por exemplo, utilizo uma aplicao deste tipo para fazer a avaliao dos treinamentos que ministro em todo o pas. Ao final do treinamento
os usurios, sem se identificar, preenchem um formulrio com as opinies sobre o treinamento, o material e o desempenho do instrutor. Estes
dados so armazenados diretamente em um Banco de Dados do Microsoft Access; a partir do qual fao uma srie de estatsticas.
Nos exemplos, estarei utilizando a linguagem VBScript. Para maiores informaes sobre VBScript, consulte um dos seguintes sites:
msdn.microsoft.com/vbscript; www.searchvb.com; e www.vbscripts.com.
Voc tambm pode consultar o livro Criando Sites Dinmicos com ASP 3.0, j citado anteriormente.
Neste livro, voc tambm encontrar informaes sobre a criao de formulrios utilizando HTML.
No Exemplo 11.3, temos o cdigo HTML para a criao do formulrio de cadastro, no qual o usurio
poder digitar os dados. Os dados digitados neste formulrio sero inseridos na tabela Customers, do
Banco de Dados Northwind, da instncia SERVIDOR\SRVINST01.
Exemplo 11.3 O formulrio para digitao dos dados Cadastro.htm.
1 <HTML>
2 <HEAD>
3 <TITLE>Cadastro de novos Clientes !!</TITLE>
4 </HEAD>
5 <BODY bgColor=#c0c0c0>
6 <P>
7 <FONT color=white size=6 style=BACKGROUND-COLOR: navy>
8 <B>Tabela Customers Northwind </B>
9 </FONT>
10 </P>
11 <P>
12 <FONT color=#ffffff size=5 style=BACKGROUND-COLOR: darkred>
13 <B><EM>Cadastro de Clientes !</EM></B>
14 </FONT>
15 </P>
16 <P>
17 <FONT color=navy size=4>
18 <EM>Digite os dados solicitados e clique no boto Enviar.</EM>
19 </FONT>
20 </P>
21 <P>
22 <FORM ACTION=cadastro.asp METHOD=POST>
23 <TABLE bgColor=#ffffff border=1 cellPadding=1 cellSpacing=1 width=100% style=HEIGHT:
161px; WIDTH: 340px>
24 <TR>
25 <TD>Cdigo:</TD>
26 <TD><INPUT id=CustomerID maxLength=50 name=CustomerID size=35>&nbsp;
27 <FONT color=red><B>(*)</B></FONT></TD>
28 </TR>
29 <TR>
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
681 CURSO COMPLETO00
30 <TD>Nome:</TD>
31 <TD><INPUT id=CompanyName maxLength=30 name=CompanyName size=35>
32 <FONT color=red><B>(*)</B></FONT></TD>
33 </TR>
34 <TR>
35 <TD>Contato:</TD>
36 <TD><INPUT id=ContactName maxLength=20 name=ContactName >
37 <FONT color=red><B>(*)</B></FONT></TD>
38 </TR>
39 <TR>
40 <TD>Cargo:</TD>
41 <TD><INPUT id=ContactTitle maxLength=25 name=ContactTitle size=25>
42 <FONT color=red><B>(*)</B></FONT></TD>
43 </TR>
44 <TR>
45 <TD>Endereo:</TD>
46 <TD><INPUT id=Address maxLength=20 name=Address></TD>
47 </TR>
48 <TR>
49 <TD>Cidade:</TD>
50 <TD><INPUT id=City maxLength=20 name=City></TD>
51 </TR>
52 <TR>
53 <TD>Regio:</TD>
54 <TD><INPUT id=Region maxLength=20 name=Region></TD></TR>
55 <TR>
56 <TR>
57 <TD>CEP:</TD>
58 <TD><INPUT id=PostalCode maxLength=20 name=PostalCode></TD></TR>
59 <TR>
60 <TR>
61 <TD>Pas:</TD>
62 <TD><INPUT id=Country maxLength=20 name=Country></TD></TR>
63 <TR>
64 <TR>
65 <TD>Telefone:</TD>
66 <TD><INPUT id=Phone maxLength=20 name=Phone></TD></TR>
67 <TR>
68 <TR>
69 <TD>FAX:</TD>
70 <TD><INPUT id=Fax maxLength=20 name=Fax></TD></TR>
71 <TR>
72 <TR>
73 <TD colSpan=2>
74 <INPUT id=enviar name=enviar style=HEIGHT: 24px; WIDTH:109px type=submit
value=Enviar dados.>
70 <INPUT id=limpar name=limpar type=submit value=Limpar Formulrio.>
71 </TD>
72 </TR>
73 </TABLE>
74 </FORM>
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
682 00CURSO COMPLETO
75 </P><BR>
76 <FONT color=red><B>(*)
77 <FONT color=navy>Campos de preenchimento obrigatrio.</FONT></B></FONT>
78 </BODY>
79 </HTML>
Ao carregarmos o Exemplo 11.3, obteremos o resultado indicado na Figura 11.36.
Figura 11.36 O formulrio para digitao dos dados.
Agora precisamos construir a pgina, Cadastro.asp, a qual ir verificar se todos os campos obrigatrios
foram preenchidos. Se todos os campos obrigatrios foram preenchidos, os dados sero gravados em
um Banco de Dados, caso contrrio o formulrio enviado para o usurio, solicitando que o mesmo
preencha os campos que esto faltando.
Para armazenar os dados, utilizaremos a tabela Customers, do Banco de Dados Northwind, da instncia
SERVIDOR\SRVINST01. A estrutura da tabela Customers est indicada na Figura 11.37.
Para acessar este Banco de Dados utilizaremos OLE DB, sem a necessidade da criao de uma fonte
ODBC. Faremos isto atravs da utilizao da propriedade ConnectionString, j descrita neste captulo.
A pgina cadastro.asp far o seguinte:
Estabelece uma conexo com o Banco de Dados Northwind e cria um RecordSet chamado
Cadastro, o qual est ligado tabela Customers.
Depois, a pgina verifica se algum campo obrigatrio no foi preenchido.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
683 CURSO COMPLETO00
Figura 11.37 Tabela Customers do Banco Northwind no SQL Server 2000.
Caso todos os campos obrigatrios tenham sido preenchidos, os dados so gravados na tabela
Customers.
Caso algum campo obrigatrio no tenha sido preenchido, a pgina ASP informa quais cam-
pos obrigatrios no foram preenchidos, retorna o formulrio para o usurio, mantendo os
campos que j haviam sido preenchidos, para que o usurio possa preencher somente os que
esto faltando.
No Exemplo 11.4, temos o cdigo para a pgina Cadastro.asp.
Exemplo 11.4 Pgina ASP para processamento dos dados Cadastro.asp.
1 <%@ Language=VBScript %>
2 <HTML>
4 <HEAD>
5 </HEAD>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o Banco de Dados
9 Para isto crio um objeto do tipo Connection
10 Cria um objeto do Tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o Banco de Dados Northwind
13 da instncia SERVIDOR\SRVINST01, utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SRVINST01;Initial Catalog=Northwind;
User ID=sa;Password=senha123
15 conn.Open
16 Agora criamos um objeto RecordSet.
17 Este objeto ir acessar a tabela Customers.
18 Set Cadastro = Server.CreateObject(ADODB.Recordset)
19 Cadastro.Open Customers, conn, 3, 3
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
684 00CURSO COMPLETO
20 Neste ponto tenho o objeto Cadastro ligado com a tabela
21 Cadastro do Banco de Dados clientes.mdb.
22 **************************************************
23 Inicia a verificao para saber se todos
24 os campos obrigatrios foram preenchidos.
25 Atribuo os campos obrigatrios variveis, para facilitar a verificao.
26 Os dados recebidos pelo formulrio so acessados atravs do objeto Request e do
27 seu mtodo Form. Por exemplo, Request.Form(CustomerID) contm o valor digitado
no campo CustomerID do formulrio Cadastro.htm.
28 Codigo = Request.Form(CustomerID)
29 Nome = Request.Form(CompanyName)
30 Contato = Request.Form(ContactName)
31 Cargo = Request.Form(ContactTitle)
32 Verifica se os campos obrigatrios foram preenchidos.
33 Qualquer dado obrigatrio que no tenha sido preenchido,
34 definir a varivel faltou_dado em Sim.
35 If (Codigo=)Then
36 mensagem_codigo=Preencha o campo Cdigo:
37 faltou_dado=Sim
38 faltou_codigo=Sim
39 End If
40 If (Nome=)Then
41 mensagem_nome=Preencha o campo Nome:
42 faltou_dado=Sim
43 faltou_nome=Sim
44 End If
45 If (Contato=)Then
46 mensagem_contato=Preencha o campo Contato:
47 faltou_dado=Sim
48 faltou_contato=Sim
49 End If
50 If (Cargo=)Then
51 mensagem_cargo=Preencha o campo Cargo:
52 faltou_dado=Sim
53 faltou_cargo=Sim
54 End If
55 Caso todos os campos obrigatrios tenham sido
56 preenchidos, gravo os dados no Banco de Dados.
57 e informo que a operao foi realizada com sucesso.
58 If faltou_dado<>Sim Then
59 Cadastro.AddNew
60 Cadastro.Fields(CustomerID)= Request.Form(CustomerID)
71 Cadastro.Fields(CompanyName)= Request.Form(CompanyName)
72 Cadastro.Fields(ContactName)= Request.Form(ContactName)
73 Cadastro.Fields(ContactTitle)= Request.Form(ContactTitle)
74 Cadastro.Fields(Address)= Request.Form(Address)
75 Cadastro.Fields(City)= Request.Form(Region)
76 Cadastro.Fields(Region)= Request.Form(Region)
77 Cadastro.Fields(PostalCode)= Request.Form(PostalCode)
78 Cadastro.Fields(Country)= Request.Form(Country)
79 Cadastro.Fields(Phone)= Request.Form(Phone)
80 Cadastro.Fields(Fax)= Request.Form(Fax)
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
685 CURSO COMPLETO00
81 Cadastro.Update
82 Cadastro.Close
83 Set Cadastro = Nothing
84 Response.Write CLIENTE CADASTRADO COM SUCESSO<BR>
85 Response.Write <A href=cadastro.htm>Clique aqui para Cadastrar outro Cliente</A>
86 Response.Write <HR>
87 End If
88 Caso algum dado obrigatrio no tenha sido digitado
89 Envia o formulrio de volta para o Cliente,
90 preservando os valores que o mesmo j digitou.
91 Observe que utilizamos Response.Write para ir
92 recriando todo o formulrio. Tambm observe que o formulrio enviado de volta
93 na pgina cadastro.asp e que o atributo action da tag FORM definido como
94 cadastro.asp, ou seja a pgina cadastro.asp chama a si mesma aps o
95 usurio clicar no boto Enviar. Esta uma tcnica bastante interessante.
96 Antes de enviar o formulrio, informamos quais
97 os campos obrigatrio que no foram preenchidos.
98 If faltou_codigo=Sim Then
99 Response.Write <B>O campo Cdigo deve ser preenchido.</B> <br>
100 End If
101 If faltou_nome=Sim Then
102 Response.Write <B>O campo Nome deve ser preenchido.</B> <br>
103 End If
104 If faltou_contato=Sim Then
105 Response.Write <B>O campo Contato deve ser preenchido.</B> <br>
106 End If
107 If faltou_cargo=Sim Then
108 Response.Write <B>O campo cargo deve ser preenchido.</B> <br>
109 End If
110 %>
111 <%
112 Comeo a reenviar o formulrio para o usurio, utilizando Response.Write.
113 Caso esteja faltando algum dado, envio o formulrio.
114 para o usurio preencher os campos que esto faltando.
115 Os valores j digitados, so preservados.
116 %>
117 <% If faltou_dado=Sim Then
118 Response.Write <BODY bgColor=#c0c0c0>
119 Response.Write <P><FONT color=white size=6 style=BACKGROUND-COLOR: navy><STRONG>Cadastro
de Clientes
120 Response.Write CLIENTES:</EM></STRONG></FONT> <BR></FONT><FONT color=navy
size=4><EM>Digite os dados solicitados e clique no boto
121 Response.Write Enviar.</EM></FONT></P>
122 Response.Write <P>
123 Response.Write Caso queira alterar algum dado
124 Response.Write digite no formulrio abaixo.<HR>
125 Response.Write <FORM ACTION=cadastro.asp METHOD=post id=form1 name=form1>
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
686 00CURSO COMPLETO
126 Response.Write <TABLE bgColor=#ffffff border=1 cellPadding=1 cellSpacing=1 width=100%
style=HEIGHT: 161px; WIDTH: 340px>
127 Response.Write <TR>
128 Response.Write <TD>Cdigo:</TD>
129 Response.Write <TD><INPUT id=CustomerID maxLength=50 name=CustomerID size=35 value= &
Chr(34) & Request.Form(CustomerID) & Chr(34) & >&nbsp;<FONT
130 Response.Write color=red><B>(*)</B></FONT></TD></TR>
131 Response.Write <TR>
132 Response.Write <TD>Nome:</TD>
133 Response.Write <TD><INPUT id=CompanyName maxLength=50 name=CompanyName size=35 value=
& Chr(34) & Request.Form(CompanyName) & Chr(34) & >&nbsp;<FONT
134 Response.Write color=red><B>(*)</B></FONT></TD></TR>
135 Response.Write <TR>
136 Response.Write <TD>Contato:</TD>
137 Response.Write <TD><INPUT id=ContactName maxLength=50 name=ContactName size=35 value=
& Chr(34) & Request.Form(ContactName) & Chr(34) & >&nbsp;<FONT
138 Response.Write color=red><B>(*)</B></FONT></TD></TR>
139 Response.Write <TR>
140 Response.Write <TD>Cargo:</TD>
141 Response.Write <TD><INPUT id=ContactTitle maxLength=50 name=ContactTitle size=35
value= & Chr(34) & Request.Form(ContactTitle) & Chr(34) & >&nbsp;<FONT
142 Response.Write color=red><B>(*)</B></FONT></TD></TR>
143 Response.Write <TR>
144 Response.Write <TD>Endereo:</TD>
145 Response.Write <TD><INPUT id=Address maxLength=50 name=Address
size=35 value= & Chr(34) & Request.Form(Address) & Chr(34) & >
146 Response.Write </TD></TR>
147 Response.Write <TR>
148 Response.Write <TD>Cidade:</TD>
149 Response.Write <TD><INPUT id=City maxLength=50 name=City
size=35 value= & Chr(34) & Request.Form(City) & Chr(34) & >
150 Response.Write </TD></TR>
151 Response.Write <TR>
152 Response.Write <TD>Regio:</TD>
153 Response.Write <TD><INPUT id=Region maxLength=50 name=Region
size=35 value= & Chr(34) & Request.Form(Region) & Chr(34) & >
154 Response.Write </TD></TR>
155 Response.Write <TR>
156 Response.Write <TD>CEP:</TD>
157 Response.Write <TD><INPUT id=PostalCode maxLength=50 name=PostalCode
size=35 value= & Chr(34) & Request.Form(PostalCode) & Chr(34) & >
158 Response.Write </TD></TR>
159 Response.Write <TR>
160 Response.Write <TD>Pas:</TD>
161 Response.Write <TD><INPUT id=Country maxLength=50 name=Country
size=35 value= & Chr(34) & Request.Form(Country) & Chr(34) & >
162 Response.Write </TD></TR>
163 Response.Write <TR>
164 Response.Write <TD>Telefone:</TD>
165 Response.Write <TD><INPUT id=Phone maxLength=50 name=Phone
size=35 value= & Chr(34) & Request.Form(Phone) & Chr(34) & >
166 Response.Write </TD></TR>
167 Response.Write <TR>
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
687 CURSO COMPLETO00
168 Response.Write <TD>Fax:</TD>
169 Response.Write <TD><INPUT id=Fax maxLength=50 name=Fax
size=35 value= & Chr(34) & Request.Form(Fax) & Chr(34) & >
170 Response.Write </TD></TR>
171 Response.Write <FONT color=red><B>(*)</B></FONT></TD></TR>
172 Response.Write <TR>
173 Response.Write <TD colSpan=2><INPUT id=enviar name=enviar style=HEIGHT: 24px; WIDTH:
109px type=submit value=Enviar_dados.>&nbsp;
174 Response.Write <INPUT id=limpar name=limpar type=submit value=Limpar_formulrio.></TD></TR>
175 Response.Write </TABLE>
176 Response.Write </FORM>
177 Response.Write </P><FONT color=red><B>(*) <FONT color=navy>Campos de preenchimento
178 Response.Write obrigatrio.</FONT></B></FONT>
179 End If
180 %>
181 </BODY>
182 </HTML>
Algumas linhas aparecem divididas em duas ou mais linhas. Nunca demais lembrar que estas linhas devem ser digitadas como uma
linha nica. As mesmas esto exibidas em duas ou mais linhas apenas por questo de espao.
Algumas observaes sobre Exemplo 11.4:
A primeira observao a ser feita a respeito do cdigo que insere um novo registro na tabela
Customers do Banco de Dados Northwind. O cdigo ASP que realiza esta tarefa o seguinte:
58 If faltou_dado<>Sim Then
59 Cadastro.AddNew
60 Cadastro.Fields(CustomerID)= Request.Form(CustomerID)
71 Cadastro.Fields(CompanyName)= Request.Form(CompanyName)
72 Cadastro.Fields(ContactName)= Request.Form(ContactName)
73 Cadastro.Fields(ContactTitle)= Request.Form(ContactTitle)
74 Cadastro.Fields(Address)= Request.Form(Address)
75 Cadastro.Fields(City)= Request.Form(Region)
76 Cadastro.Fields(Region)= Request.Form(Region)
77 Cadastro.Fields(PostalCode)= Request.Form(PostalCode)
78 Cadastro.Fields(Country)= Request.Form(Country)
79 Cadastro.Fields(Phone)= Request.Form(Phone)
80 Cadastro.Fields(Fax)= Request.Form(Fax)
81 Cadastro.Update
82 Cadastro.Close
83 Set Cadastro = Nothing
81 Response.Write CLIENTE CADASTRADO COM SUCESSO<BR>
82 Response.Write <A href=cadastro.htm>Clique aqui para Cadastrar outro Cliente</A>
83 Response.Write <HR>
84 End If
Neste cdigo, utilizamos o mtodo AddNew do objeto RecordSet Cadastro. Depois vamos preenchendo
cada novo campo do registro, com o respectivo valor preenchido pelo usurio no formulrio. No final,
utilizamos o mtodo Update para salvar o registro na tabela.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
688 00CURSO COMPLETO
O mtodo Close utilizado para fechar o RecordSet Cadastro e, por fim, tiramos o objeto Cadastro da
memria. Isto feito atribuindo-se o valor Nothing para o objeto Cadastro. importante lembrar
que para atribuir valor para um objeto, devemos utilizar o operador Set, caso contrrio obteremos uma
mensagem de erro.
Tambm gostaria de observar a situao em que o usurio deixa de preencher algum campo
obrigatrio. Neste caso, o usurio informado a respeito de qual ou quais campos no foram
preenchidos. O formulrio retornado para o usurio, juntamente com os valores j digitados,
para que o usurio no precise digitar todos os valores novamente. Observe que todo o cdigo
HTML que gera o formulrio retornado utilizando-se Response.Write.
Vamos testar o funcionamento da pgina Cadastro.asp.
Na Figura 11.38, o usurio preencheu alguns campos, porm no preencheu os campos obrigatrios
Contato e Cargo.
Figura 11.38 Os campos obrigatrios Contato e Cargo no foram preenchidos.
Ao clicar no boto Enviar dados, a pgina Cadastro.asp detecta que alguns campos obrigatrios no
foram preenchidos e informa o usurio a este respeito, conforme indicado na Figura 11.39.
Agora o usurio preenche os campos obrigatrios que esto faltando, conforme indicado na Figura 11.40.
Ao clicar no boto Enviar dados, as informaes sero salvas no Banco de Dados. A pgina Cadastro.asp
informa que os dados foram salvos com sucesso e retorna um link para que o usurio possa voltar ao
formulrio de cadastro e cadastrar outro cliente, conforme indicado na Figura 11.41.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
689 CURSO COMPLETO00
Figura 11.39 O usurio informado quais campos obrigatrios no foram preenchidos.
Figura 11.40 O usurio preenche os campos que esto faltando.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
690 00CURSO COMPLETO
Figura 11.41 O cliente foi cadastrado com sucesso.
Na Figura 11.42, acessamos a tabela Customers, atravs do Enterprise Manager e podemos constatar
que o cliente foi realmente cadastrado.
Figura 11.42 Os dados enviados pela pgina ASP foram gravados na tabela Customers.
DEMAIS OPERAES UTILIZANDO ASP
Neste tpico, veremos como efetuar as demais operaes utilizando ASP. Veremos quais os mtodos
utilizados para efetuar as seguintes operaes:
Localizar um registro.
Editar um registro.
Excluir um registro.
PARA LOCALIZAR UM REGISTRO
Para que possamos localizar um registro, ou um conjunto de registros com base em um ou mais critrios,
basta construirmos uma instruo SQL que retorna os dados desejados. Por exemplo, se quisermos
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
691 CURSO COMPLETO00
pesquisar um determinado produto na tabela Products, do Banco de Dados Northwind. Criamos um
formulrio HTML onde o usurio pode digitar o cdigo do produto. O valor digitado passado para
uma pgina ASP, utilizando a opo Action, da tag FORM. A pgina ASP recebe o valor digitado, utilizando
Request.Form(NomeDoCampoNoFormulrio). Com o valor recebido, a pgina ASP monta uma
instruo SQL, utilizando o cdigo digitado como filtro. Os resultados so exibidos em uma tabela.
Vamos a um exemplo bastante simples. O nosso exemplo ser composto de duas pginas ASP. A primeira
pgina ser chamada ListaPaises.asp. Esta pgina obtm uma lista de todos os pases para os quais
existe pedidos na tabela Orders do Banco de Dados Northwind da instncia SERVIDOR\SRVINST02.
Selecionamos um dos pases da lista e clicamos em um boto Pesquisar. Ao clicarmos no boto Pesquisar,
ser chamada uma segunda pgina ASP PaisesObtidos.asp. Esta segunda pgina exibe uma listagem
com os campos OrderID, OrderDate, ShipCity e ShipCountry para todos os pedidos do pas selecionado
na pgina ListaPaises.asp.
No Exemplo 11.5, temos a listagem que cria a pgina ListaPaises.asp.
Exemplo 11.5 Pgina ASP que cria a listagem de pases ListaPaises.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <TITLE>Selecione o Pas de destino.</TITLE>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o Banco de Dados.
9 Para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 Agora abro uma conexo com o Banco de Dados Northwind
13 utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SRVINST02;Initial Catalog=Northwind;
User ID=sa;Password=senha123
15 conn.Open
16 Agora criamos um objeto RecordSet.
17 Este objeto ir acessar o campo ShipCountry
18 da tabela Produtos
19 Set Paises = Server.CreateObject(ADODB.Recordset)
20 Paises.Open Select ShipCountry from Orders Group By ShipCountry Order By ShipCountry,
conn, 3, 3
21 Neste ponto tenho o objeto Paises com uma listagem
22 em ordem ascendente, dos pases para os quais existem
23 pedidos efetuados.
24 %>
25 <P><B>Selecione o pas a ser pesquisado.</B></P>
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
692 00CURSO COMPLETO
26 <P><B><I>Depois clique no boto Pesquisar.</I></B></P>
27 <FORM action=PaisesObtidos.asp method=post id=form1 name=form1>
28 <SELECT id=listapaises name=listapaises>
29 <%
30 Agora construo a lista de opes a partir dos
31 dados obtidos da tabela Orders.
32 Para cada pas obtido, crio uma nova opo
33 na lista.
34 Do While Not Paises.EOF
35 Response.Write <OPTION value= & Chr(34) & Paises.Fields(ShipCountry) & Chr(34)
& > & Paises.Fields(ShipCountry)& </OPTION>
36 Paises.MoveNext
37 Loop
38 %>
39 </SELECT>
40 <BR>
41 <HR>
42 <INPUT type=submit value=Pesquisar id=Pesquisar name=Pesquisar>
43 </FORM>
44 </BODY>
45 </HTML>
Ao carregarmos a pgina ListaPaises.asp, obtemos o resultado indicado na Figura 11.43.
Figura 11.43 A pgina ListaPaises.asp.
Agora precisamos construir a pgina PaisesObtidos.asp. Esta pgina receber o valor selecionado na
lista, e utilizar este valor como critrio de pesquisa. O nome da lista na pgina ListaPaises.asp
listapaises. O que define o nome de um campo em um formulrio a opo id, como indicado no
fragmento de cdigo a seguir:
28 <SELECT id=listapaises name=listapaises>
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
693 CURSO COMPLETO00
A pgina PaisesObtidos.asp tambm exibir os resultados obtidos.
Na Listagem 11.6, temos o cdigo que cria a pgina PaisesObtidos.asp.
Exemplo 11.6 Utilizando o pas selecionado como critrio de pesquisa PaisesObtidos.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 </HEAD>
5 <TITLE>Resultados da pesquisa para <%=Request.Form(listapaises) %>.</TITLE>
6 <BODY>
7 <%
8 O primeiro passo criar a conexo com o Banco de Dados.
9 Para isto crio um objeto do tipo Connection.
10 Cria um objeto do tipo ADODB.Connection
11 Set conn=Server.CreateObject(ADODB.Connection)
12 conn.ConnectionString = PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SRVINST02;Initial Catalog=Northwind;
User ID=sa;Password=senha123
13 conn.Open
14 Agora criamos um objeto RecordSet.
15 Este objeto ir utilizar o pas selecionado como critrio de pesquisa
18 na tabela Orders. Feito isso teremos os pedidos para o pas selecionado na lista.
19 Set Pedidos = Server.CreateObject(ADODB.Recordset)
20 Pedidos.Open Select OrderID, OrderDate, ShipCity, ShipCountry from Orders WHERE
ShipCountry= & Request.Form(listapaises) & , conn, 3, 3
21 Vamos exibir novamente a lista de pases para que o usurio
22 possa selecionar outro pas e fazer outra pesquisa.
23 Agora criamos um objeto RecordSet.
24 Este objeto ir acessar o campo ShipCountry
25 da tabela Orders.
26 Set Paises = Server.CreateObject(ADODB.Recordset)
27 Paises.Open Select ShipCountry from Orders Group By ShipCountry Order By ShipCountry,
conn, 3, 3
28 Neste ponto tenho o objeto Paises com uma listagem
29 em ordem ascendente, dos pases para os quais existem
30 pedidos efetuados.
31 %>
32 <B>Selecione outro pas para fazer uma nova pesquisa.</B><BR>
33 <B><I>Depois clique no boto Pesquisar.</I></B><BR>
34 <FORM action=PaisesObtidos.asp method=post id=form1 name=form1>
35 <SELECT id=listapaises name=listapaises>
36 <%
37 Agora construo a lista de opes a partir dos
38 dados obtidos da tabela Orders.
39 Para cada pas obtido, crio uma nova opo
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
694 00CURSO COMPLETO
40 na lista.
41 Do While Not Paises.EOF
42 Response.Write <OPTION value= & Chr(34) & Paises.Fields(ShipCountry) & Chr(34)
43 If Paises.Fields(ShipCountry)= Request.Form(listapaises) Then
44 Response.Write SELECTED
45 End If
46 Response.Write > & Paises.Fields(ShipCountry)& </OPTION>
47 Paises.MoveNext
48 Loop
49 %>
50 </SELECT>
51
52 <HR>
53 <INPUT type=submit value=Pesquisar id=Pesquisar name=Pesquisar>
54 </FORM>
55 <%
56 Exibo os resultados obtidos.
57 %>
58 <B>Relao de pedidos para: <% =Request.Form(listapaises) %>.</B>
59 <HR>
60 <% Agora exibo os resultados utilizando uma tabela. %>
61 <TABLE border=1>
62 <TR>
63 <TD><B>Cdigo</B></TD>
64 <TD><B>Data</B></TD>
65 <TD><B>Cidade</B></TD>
66 <TD><B>Pas</B></TD>
67 </TR>
68 <%
69 Do While Not Pedidos.EOF
70 %>
71 <TR>
72 <TD><% =Pedidos.Fields(OrderID) %></TD>
73 <TD><% =Pedidos.Fields(OrderDate) %></TD>
74 <TD><% =Pedidos.Fields(ShipCity) %></TD>
75 <TD><I><% =Pedidos.Fields(ShipCountry) %></I></TD>
76 </TR>
77 <% Pedidos.MoveNext
78 Loop
79 %>
80 </TABLE>
81 <BR>
82 <HR>
83 </BODY>
84 </HTML>
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
695 CURSO COMPLETO00
UTILIZANDO O NOSSO EXEMPLO
Agora vamos utilizar o nosso exemplo para comprovar o correto funcionamento do mesmo.
Ao carregar a pgina ListaPaises.asp, obtemos o resultado indicado na Figura 11.44.
Figura 11.44 Selecione um pas da lista.
Vamos supor que o usurio selecionou Norway, na lista de pases. Ao clicar no boto Pesquisar, sero
exibidos apenas os Pedidos o pas selecionado, conforme indicado na Figura 11.45.
Figura 11.45 Exibindo os pedidos para a Norway.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
696 00CURSO COMPLETO
Observe que novamente exibida a lista de pases e o pas selecionado anteriormente aparece selecionado
na lista. Para pesquisar os pedidos para outro pas s selecionar o pas desejado na lista, e clicar no
boto Pesquisar. Veja que com isso construmos um formulrio de pesquisa bastante interativo. O
usurio seleciona o pas desejado, e manda pesquisar. Cada vez que o usurio seleciona um pas diferente
na lista e clica no boto Pesquisar; o novo valor selecionado utilizado como critrio de filtragem e
somente os registros que atendem ao critrio sero retornados.
EDITANDO E EXCLUINDO REGISTROS
Para editar um registro, em primeiro lugar devemos localiz-lo, isto , o registro a ser editado deve ser
o registro atual. Uma vez localizado, comeamos a alterar os seus campos, utilizando a seguinte sintaxe:
NomeObjeto.Fields(Campo1) = valor
NomeObjeto.Fields(Campo2) = valor
NomeObjeto.Fields(Campo3) = valor
...
NomeObjeto.Fields(Campon) = valor
onde Campo1, Campo2, etc. o nome de cada campo, conforme definido na estrutura da tabela.
Depois, utilizamos o mtodo Update, para gravar as alteraes na tabela no Banco de Dados:
NomeObjeto.Update.
No trecho de cdigo a seguir, estamos alterando um registro da tabela Customers do Banco de Dados Northwind.
Neste fragmento, o objeto Clientes deve ser um objeto do tipo Recordset que est ligado a tabela Customers
do Banco de Dados Northwind. Para alterar o registro atual, utilizaramos os seguintes comandos:
Clientes.Fields(CustomerID)=XXXXX
Clientes.Fields(CompanyName)=Empresa ABC Ltda.
Clientes.Fields(ContactName)=Jos da Silva Pereira
Clientes.Fields(ContactTitle)=Gerente
Clientes.Fields(Address)=Rua das amoreiras 999
Clientes.Fields(City)=Cafund
Clientes.Fields(Region)=Fim do Mundo
Clientes.Fields(PostalCode)=12345-678
Clientes.Fields(Country)=Brasil
Clientes.Fields(Phone)=(55)222-2222
Clientes.Fields(Fax)=(55)333-4455
Clientes.Update
Para excluir o registro atual, utilizamos o mtodo Delete, do objeto Recordset. Por exemplo, para
excluir o registro atual do Recordset Clientes, utilizamos o seguinte comando:
Clientes.Delete
O registro atual ser excludo, l na tabela do Banco de Dados, tabela que est associada com o Recordset.
CONCLUSO
Neste Captulo, tratamos de uma srie de assuntos relacionados com o acesso aos dados de um servidor
SQL Server 2000, utilizando a dobradinha ADO/OLE DB. Tambm falamos sobre a utilizao de ODBC,
porm salientando que esta uma tecnologia mais antiga.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2000
697 CURSO COMPLETO00
Iniciamos o captulo falando do modelo de desenvolvimento em duas, trs ou n camadas. Vimos os
problemas com o modelo tradicional Cliente/Servidor em duas camadas. Tambm aprendemos sobre
o modelo de n camadas e como o mesmo se propem a minimizar ou at eliminar a maioria dos
problemas relacionados a manuteno e atualizao de aplicaes.
Na seqncia, aprendemos a preparar o servidor para que o amigo leitor pudesse acompanhar os exemplos
deste captulo. Aprendemos a criar uma pasta virtual no IIS e a acessar arquivos criados dentro desta pasta.
Em seguida, estudamos um pouco de OLE DB e ADO. Vimos qual o modelo de acesso atravs da
utilizao de OLE DB Providers. Tambm vimos qual o papel do ADO no acesso aos dados.
No restante do captulo, estudamos alguns objetos do Modelo de Objetos do ADO e mostramos alguns
exemplos prticos, atravs da utilizao de pginas ASP para acesso a dados no servidor SQL Server
2000. Aprendemos a realizar as operaes bsicas com os dados do servidor, tais como:
Pesquisar
Inserir novos registros
Alterar registros
Excluir registros
No prximo captulo, falaremos um pouco sobre o acesso aos dados do SQL Server 2000 utilizando o
Microsoft Access 2000. Tambm apresentaremos uma noo bsica sobre XML e como o SQL Server
2000 d suporte ao padro XML.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
699 CURSO COMPLETO00
Captulo 12
ACESSANDO DADOS COM O MICROSOFT
ACCESS 2000 E O PADRO XML
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
700 00CURSO COMPLETO
INTRODUO
Neste Captulo, vamos tratar de dois assuntos relacionados ao desenvolvimento de aplicaes:
Utilizando o Microsoft Access 2000 como Front-End para os dados do SQL Server 2000.
O padro XML.
Na primeira parte do Captulo, estaremos tratando da utilizao do Microsoft Access 2000 para acessar
os dados do SQL Server 2000. A idia bsica utilizar as facilidades de desenvolvimento do Microsoft
Access, em conjunto com as facilidades de manipulao e armazenamento de dados do SQL Server.
Para que isso seja possvel o Microsoft Access precisa ter acesso aos dados armazenados no SQL Server.
Iremos apresentar uma breve introduo ao Microsoft Access e a seus elementos principais. Esta
introduo ser importante para que possamos prosseguir com os prximos tpicos, onde estaremos
analisando diversas maneiras de conectar um Banco de Dados do Access com dados de um Banco de
Dados do SQL Server.
Veremos que existem diversas maneiras de estabelecer esta comunicao. Estaremos tratando, dentre
outras, das seguintes formas de comunicao entre o Microsoft Access e o SQL Server:
Importando dados do SQL Server em tabelas do Microsoft Access.
Anexando tabelas no Microsoft Access.
Criando consultas no Microsoft Access, baseadas em tabelas do SQL Server 2000.
Estaremos sempre focando a conexo dos elementos de um Banco de Dados do Microsoft Access com
dados do SQL Server 2000. De maneira alguma este captulo um tratado completo sobre o
desenvolvimento de aplicaes utilizando o Microsoft Access e o SQL Server 2000. Tambm
aconselhvel que o leitor j tenha alguma experincia com o Microsoft Access e com a linguagem VBA.
Em seguida, veremos como acessar dados do SQL Server 2000 utilizando simplesmente o nosso
navegador. Veremos quais as condies necessrias para que possamos acessar dados, simplesmente
utilizando o protocolo HTTP Hypertext Transfer Protocol. Veremos como executar um comando SQL
embutido em uma URL, atravs do protocolo HTTP. Esta uma das novidades do SQL Server 2000 em
relao s verses anteriores.
Na parte final do Captulo, falaremos um pouco sobre o padro (muitos classificam como linguagem)
XML Extensible Markup Language. Veremos o que o XML, qual a sua importncia e qual o suporte
do SQL Server 2000 em relao a este padro. Tambm veremos como fazer com que uma consulta
retorne os resultados no formato XML, utilizando a clusula FOR XML. Esta clusula mais uma das
novidades do SQL Server 2000.
Para maiores informaes sobre XML, consulte os seguintes endereos:
www.xml.org.
www.wdvl.com/Software/XML.
www.w3.org/xml.
www.internet.com.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
701 CURSO COMPLETO00
xml101.com.
www.xmlpitstop.com/.
www.xml.com.
DESENVOLVIMENTO EM: UMA RPIDA REVISO SOBRE A
ESTRUTURA DE UM BANCO DE DADOS DO MICROSOFT ACCESS
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Noes sobre o Microsoft Access 97 ou 2000.
METODOLOGIA
Apresentao dos objetos que compem um Banco de Dados do Microsoft Access.
Neste tpico, vamos fazer uma rpida reviso sobre a estrutura de um Banco de Dados do Microsoft
Access 2000: como armazenado e do que composto.
O Microsoft Access 2000, a exemplo das verses anteriores, armazena todos os elementos de um Banco
de Dados, em um arquivo com a extenso .mdb. Quer o Banco de Dados tenha uma ou dezenas de
tabelas e outros elementos, sempre ser criado um nico arquivo com a extenso .mdb, arquivo este
onde esto gravados todos os elementos deste Banco de Dados. Esta forma de armazenamento difere
de sistemas mais antigos, como por exemplo o Dbase III e Dbase IV, onde cada tabela era armazenada
em um arquivo diferente, cada ndice em um arquivo diferente, cada formulrio em um arquivo diferente
e assim por diante. Esta estrutura tambm diferente da utilizada pelo SQL Server 2000, o qual cria, no
mnimo, um arquivo primrio (.mdf) e um arquivo de log (.log), podendo ter zero ou mais arquivos
secundrios (.ndf), para cada Banco de Dados.
Para maiores informaes sobre a maneira como o SQL Server 2000 armazena um Banco de Dados e sobre arquivos primrios,
secundrios e de log, consulte o Captulo 3 Trabalhando com Banco de Dados no Microsoft SQL Server 2000.
Um Banco de Dados do Microsoft Access 2000 pode conter diversos elementos. Os principais so:
Tabelas
Consultas
Formulrios
Relatrios
Pginas (novidade no Microsoft Access 2000).
Macros
Mdulos
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
702 00CURSO COMPLETO
Na Figura 12.1, vemos o arquivo de exemplo Northwind.mdb carregado no Microsoft Access 2000. No
painel da esquerda vemos as opes para os principais elementos que formam um Banco de Dados do
Access 2000. Se clicarmos, por exemplo, na opo Consultas, ser exibida uma listagem das consultas
do Banco de Dados Northwind; se clicarmos na opo Relatrios, ser exibida uma listagem com os
relatrios do Banco de Dados Northwind e assim por diante. Estes diversos elementos so tambm
conhecidos como objetos do Banco de Dados. Uma tabela um objeto, uma consulta um objeto e
assim por diante. Para acessar um determinado objeto basta dar um clique duplo no mesmo.
Figura 12.1 Elementos bsicos de um Banco de Dados do Microsoft Access 2000.
A seguir, vamos a uma descrio bsica dos diversos elementos que compem um Banco de Dados do
Microsoft Access 2000.
TABELAS
As tabelas so os objetos onde ficam gravados os dados inseridos pelos usurios. Uma tabela um
conjunto de dados sobre um tpico especfico, como produtos ou fornecedores. Utilizar uma tabela
separada para cada tpico significa armazenar os dados somente um vez, o que torna o Banco de
Dados mais eficiente e reduz os erros de entrada de dados, conforme descrito no Captulo 1, quando
falamos do modelo Relacional.
importante salientar que o nico local onde ficam gravados os dados em objetos do tipo tabela.
Para criar novas tabelas podemos utilizar a opo Criar tabela no modo estrutura ou a opo Criar
tabela usando assistente. Todo objeto no Microsoft Access 2000 possui um modo chamado estrutura.
No modo estrutura que definimos as caractersticas e propriedades do objeto. Por exemplo, no modo
estrutura de uma tabela definimos quais os campos que faro parte da tabela e quais as caractersticas
de cada campo. Na Figura 12.2, temos uma viso do modo estrutura da tabela Clientes, onde so
exibidas as propriedades para o campo CdigoDoCliente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
703 CURSO COMPLETO00
Figura 12.2 Modo estrutura da tabela Clientes.
Para acessar o modo estrutura de um objeto, d um clique com o boto direito do mouse no objeto e,
no menu que surge, selecione a opo Modo Estrutura.
CONSULTAS
Utilizamos consultas para poder visualizar os dados de diversas maneiras diferentes. Por exemplo,
podemos querer uma listagem onde so acessados dados de duas ou mais tabelas. Tambm podemos
querer uma listagem onde somente so exibidos registros que atendam um ou mais critrios. Tudo o
que falamos sobre Views, no Captulo 9, tambm vlido para consultas no Microsoft Access 2000.
O tipo mais comum de consulta a consulta seleo. Uma consulta seleo recupera dados de uma ou
mais tabelas atravs de critrios especificados e exibe os dados na ordem escolhida. Tambm podemos
criar consultas para alterar e excluir dados, para fazer uma referncia cruzada entre os dados ou para
criar uma nova tabela com base nos resultados obtidos.
importante salientar que as consultas no armazenam dados. Quando uma consulta gravada no
Banco de Dados, a nica coisa que salva o comando SQL que define a consulta. Quando for executada,
a mesma busca os dados em uma ou mais tabelas e exibe os resultados para o usurio.
A exemplo das tabelas, uma consulta tambm possui um modo estrutura. Na Figura 12.3, temos o
modo estrutura da consulta Consulta Pedidos. Este modo conhecido por QBE Query By Example.
Esta interface semelhante interface grfica para a criao de Views no SQL Server 2000, que estudamos
no Captulo 9.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
704 00CURSO COMPLETO
Figura 12.3 Modo estrutura da consulta Consulta Pedidos.
Para consultas, alm do modo estrutura, temos o modo SQL, onde exibido o comando SQL que define
a consulta. Para exibir o modo SQL, estando no modo estrutura, selecione o comando Exibir -> Modo
SQL. Na Figura 12.4, temos o modo SQL da consulta Consulta Pedido do Banco de Dados
Northwind.mdb. O comando que aparece nesta figura o que gravado no Banco de Dados. Em resumo,
o que define uma consulta um comando SQL e este comando que salvo no Banco de Dados.
Figura 12.4 Modo SQL da consulta Consulta Pedidos.
No modo estrutura que definimos as caractersticas e propriedades do objeto. Por exemplo, no modo
estrutura de uma consulta, definimos quais os campos que faro parte da consulta, quais os critrios de
filtragem e ordenao e assim por diante. Ao fazermos alteraes neste modo, o Microsoft Access altera
o comando SQL para refletir as mudanas efetuadas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
705 CURSO COMPLETO00
FORMULRIOS
O formulrio permite que sejam criadas telas grficas mais fceis de utilizar. Com a utilizao de
formulrios podemos criar um aplicativo com aparncia profissional, onde podemos inserir botes de
comando, menus e todos os elementos de desenvolvimento do ambiente Windows. Os formulrios
tambm expem um modelo de eventos, os quais facilitam uma srie de operaes, como por exemplo
a validao de dados.
Podemos criar formulrios para executar diversas aes:
Servir para entrada de dados em uma ou mais tabelas.
Servir como interface de navegao do aplicativo.
Servir como uma caixa de dilogo onde o usurio pode inserir informaes.
Um formulrio obtm dados a partir de uma tabela ou a partir de um consulta. No caso de um formulrio
baseado em uma consulta, quando o mesmo aberto, a consulta associada executada. A consulta obtm
dados de uma ou mais tabelas e retorna os dados obtidos para o formulrio. O formulrio pode exibir os
dados e pode ou no permitir que os mesmos sejam alterados ou que novos dados sejam inseridos.
O formulrio possui um modo estrutura que onde construmos o formulrio. A criao de um
formulrio semelhante a criao de formulrios em ferramentas de desenvolvimento como o Visual
Basic ou Delphi. Basicamente, vamos arrastando e configurando elementos em uma tela grfica. Tambm
podemos escrever cdigo para responder a eventos que acontecem no formulrio. Na Figura 12.5,
temos o modo estrutura do formulrio Pedidos. Observe que temos uma Caixa de Ferramentas, a
partir da qual podemos arrastar elementos para a construo do formulrio.
Figura 12.5 Modo estrutura do formulrio Pedidos.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
706 00CURSO COMPLETO
Na Figura 12.6, temos o formulrio carregado para ser utilizado pelo usurio. Este modo conhecido
por Modo Formulrio. Observe que temos um formulrio onde so exibidas (e podem ser inseridas)
informaes, de duas tabelas diferentes: Pedidos e Detalhes do Pedido. Esta facilidade de podermos
digitar as informaes do cabealho do pedido (tabela Pedidos) e dos itens do pedido (tabela Detalhes
do Pedido), em uma mesma tela, ilustra bem a utilidade dos formulrios.
Figura 12.6 Modo formulrio do formulrio Pedidos.
RELATRIOS
Com a utilizao de consultas podemos obter diversas listagens, inclusive com a especificao de um ou
mais critrios de pesquisa. Porm no temos como formatar com um layout mais profissional, a listagem
retornada por uma consulta. Para solucionar este problema podemos utilizar relatrios. Por exemplo, um
relatrio pode ser baseado em uma consulta. Ao abrir o relatrio, a consulta executada, os dados so
retornados a partir das tabelas e so passados para o relatrio. O relatrio recebe os dados retornados pela
consulta e acrescenta elementos de formatao que deixam a aparncia da listagem mais profissional.
Quero salientar novamente que os dados somente ficam armazenados nas tabelas. O relatrio baseado na
consulta, esta por sua vez executada ao abrirmos o relatrio. A consulta busca os dados em uma ou mais
tabelas e retorna os dados para o relatrio. Este, por sua vez, d uma aparncia profissional aos resultados.
Tambm podemos ter um relatrio baseado em uma tabela. Neste caso, ao abrirmos o relatrio, o
mesmo vai buscar dados diretamente na tabela associada.
O relatrio tem um modo estrutura que onde construmos e definimos a formatao do relatrio. A
criao de um relatrio semelhante a criao de relatrios em ferramentas de desenvolvimento como
o Visual Basic ou Delphi. Basicamente, vamos arrastando e configurando elementos em uma tela
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
707 CURSO COMPLETO00
grfica. Tambm podemos escrever cdigo para responder a eventos que acontecem no formulrio. Na
Figura 12.7, temos o relatrio aberto no modo estrutura do relatrio Resumo de Vendas por Ano.
Observe que temos uma Caixa de Ferramentas, a partir da qual podemos arrastar elementos para a
construo do relatrio.
Figura 12.7 Modo estrutura do relatrio Resumo de Vendas por Ano.
Na Figura 12.8, temos o relatrio aberto no modo de visualizao de impresso. Este modo permite
que o usurio visualize o relatrio na tela do micro, antes de enviar o mesmo para a impressora.
Figura 12.8 Modo visualizar impresso do relatrio Resumo de Vendas por Ano.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
708 00CURSO COMPLETO
Tambm gostaria de comentar que este relatrio baseado na consulta Resumo de Vendas por Ano.
Esta consulta que consolida os dados de vendas anuais, por trimestre. Esta consolidao feita a
partir de dados das tabelas Pedidos e Detalhes do Pedido.
PGINAS
Uma pgina de acesso a dados um tipo especial de pgina da Web, projetado para exibir e trabalhar
com dados da Internet ou de uma Intranet dados que so armazenados em um Banco de Dados do
Microsoft Access ou do Microsoft SQL Server. A pgina de acesso a dados tambm pode incluir dados
de outras fontes como, por exemplo, o Microsoft Excel.
Esta uma das novidades do Microsoft Access 2000 em relao s verses anteriores.
Podemos estruturar as pginas de acesso a dados no modo estrutura de pgina no Microsoft Access. A
pgina um arquivo separado armazenado fora do Microsoft Access; entretanto, quando voc cria o
arquivo, o Microsoft Access automaticamente adiciona um atalho ao arquivo na janela Banco de Dados.
Estruturar uma pgina de acesso a dados semelhante a estruturar formulrios e relatrios voc usa
uma lista de campos, a caixa de ferramentas, os controles, a caixa de dilogo Classificar e agrupar etc.
Entretanto, h algumas diferenas significativas na maneira como voc estrutura e interage com as
pginas de acesso a dados, em oposio a formulrios e relatrios. A forma como voc estrutura a
pgina depende para que ela ser usada:
Relatrio interativo: Este tipo de pgina de acesso a dados freqentemente usado para
consolidar e agrupar informaes armazenadas no Banco de Dados e, em seguida, publicar
resumos dos dados. Por exemplo, uma pgina poderia publicar o desempenho de vendas de
cada regio em que voc faz negcios. Usando indicadores de expanso, voc pode ir de um
resumo geral das informaes como, por exemplo, uma lista de todas as regies e suas vendas
combinadas totais, a detalhes especficos sobre vendas individuais dentro de cada regio. Embora
a pgina de acesso a dados tambm possa fornecer botes da barra de ferramentas para classificar
e filtrar os dados, voc no pode editar dados nesse tipo de pgina.
Entrada de dados: Este tipo de pgina de acesso a dados usado para exibir, adicionar e editar registros.
Anlise de dados: Este tipo de pgina de acesso a dados pode incluir uma lista de tabelas
dinmicas, semelhante a um formulrio de tabela dinmica do Microsoft Access ou um relatrio
de tabela dinmica do Microsoft Excel, que permite que voc reorganize os dados para analis-
los de maneiras diferentes. A pgina poderia conter um grfico que voc usaria para analisar
tendncias, detectar padres e comparar dados em seu Banco de Dados. Ou a pgina poderia
conter uma planilha na qual voc poderia inserir e editar dados, e usar frmulas para calcular
como voc faz no Microsoft Excel.
Na Figura 12.9, temos a pgina de dados Analisar Vendas, no modo estrutura.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
709 CURSO COMPLETO00
Figura 12.9 Modo estrutura da pgina Analisar Vendas.
Como usar pginas de acesso a dados no Internet Explorer?
Uma pgina de acesso a dados conectada diretamente a um Banco de Dados. Quando usurios exibem
a pgina de acesso a dados no Microsoft Internet Explorer, eles esto exibindo sua prpria cpia da
pgina. O que significa que qualquer filtragem, classificao e outras alteraes que eles fazem na
maneira com que os dados so exibidos incluindo alteraes que eles fazem dentro de uma lista de
tabelas dinmicas ou planilha afetam somente sua cpia da pgina de acesso a dados. Entretanto,
alteraes feitas nos prprios dados como, por exemplo, modificar valores e adicionar ou excluir
dados so armazenadas no Banco de Dados base e, portanto, esto disponvel para qualquer pessoa
que exiba a pgina de acesso a dados.
Para exibir e trabalhar com a pgina de acesso a dados na Internet ou em uma Intranet, os usurios precisam do Microsoft Internet Explorer 5.
Na Figura 12.10, temos a pgina de dados Analisar Vendas, carregada no Internet Explorer.
Observe o sinal de mais ao lado do nome do cliente. Se dermos um clique no sinal de mais ao lado do
nome do cliente, sero exibidos detalhes sobre as vendas para este cliente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
710 00CURSO COMPLETO
Figura 12.10 Pgina Analisar Vendas no Internet Explorer.
Como usar pginas de acesso a dados no Microsoft Access?
Voc tambm pode trabalhar com uma pgina de acesso a dados no modo pgina no Microsoft Access.
As pginas de acesso a dados podem suplementar os formulrios e relatrios que voc usa em seu
aplicativo de Banco de Dados.
Na Figura 12.11, temos a pgina de dados Analisar Vendas, carregada no Microsoft Access.
MACROS
Macros so utilizados em diversos programas para automatizar tarefas repetitivas. Por exemplo, se para
obter um determinado resultado, temos que executar uma srie de quatro consultas em seqncia, e
depois exportar os dados para uma planilha do Microsoft Excel, podemos criar uma macro que faa
estas aes para ns, de uma maneira automtica.
Existem diversas aes de macros pr-definidas que podem ser utilizadas no Microsoft Access 2000.
Por exemplo, temos macros para abrir tabelas, consultas e formulrios, para exportar dados para o
Excel, para o Dbase III e assim por diante.
A exemplo de outros objetos, uma macro tambm tem um modo estrutura. Neste modo, vamos
definindo uma ou mais aes que faro parte da macro. Se houver mais do que uma ao, as mesmas
sero executadas na ordem em que foram definidas, na estrutura da macro.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
711 CURSO COMPLETO00
Figura 12.11 Pgina Analisar Vendas no Microsoft Access.
Na Figura 12.12, temos a estrutura da macro Fornecedores do Banco de Dados Northwind. Esta macro
possui diversas aes.
Figura 12.12 Modo estrutura da macro Fornecedores.
Podemos fazer com que uma macro seja executada em resposta a um evento de um formulrio ou de
um relatrio. Tambm podemos executar macros com a utilizao de comandos da linguagem VBA.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
712 00CURSO COMPLETO
MDULOS
Os mdulos contm cdigo VBA Visual Basic for Application. Com a utilizao do VBA, podemos
criar aplicaes profissionais, utilizando o Microsoft Access. Para se ter uma idia, atravs do VBA
temos acesso a todos os objetos do modelo ADO Activex Data Object. Com isso podemos criar
objetos do tipo Connection e Recordset, como os que criamos com pginas ASP, no captulo anterior.
A linguagem VBA bastante poderosa. Atravs dela podemos ter acesso a todos os objetos do ambiente
do Microsoft Access. Por exemplo, utilizando VBA podemos criar tabelas, configurar a segurana, criar
e executar consultas, etc.
A exemplo de outros objetos, um mdulo tambm tem um modo estrutura. Na verdade, o modo
estrutura de um mdulo o ambiente de desenvolvimento onde podemos escrever cdigo VBA. Neste
ambiente, temos algumas facilidades para a escrita e depurao de cdigo em VBA.
Na Figura 12.13, podemos ver o modo estrutura do mdulo Funes Utilitrias do Banco de Dados
Northwind.mdb.
Figura 12.13 Modo estrutura do mdulo Funes Utilitrias.
Podemos fazer com que um mdulo seja executado em resposta a um evento de um formulrio ou de
um relatrio.
Com isso encerramos a nossa breve viso sobre os principais elementos de um Banco de Dados do
Microsoft Access 2000. Maiores informaes sobre o Microsoft Access 2000 podem ser encontradas
com a documentao do produto.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
713 CURSO COMPLETO00
DESENVOLVIMENTO EM: COMO ACESSAR DADOS DO SERVIDOR
SQL SERVER 2000 UTILIZANDO O MICROSOFT ACCESS 2000
PR-REQUISITOS
Noes sobre os elementos que compem um Banco de Dados do Microsoft Access 2000.
Noes sobre os modelos de desenvolvimento.
Conhecimento bsico de ODBC.
METODOLOGIA
Apresentao de diferentes maneiras, para acessar os dados do SQL Server 2000, a partir do Microsoft Access 2000.
TCNICA
Utilizao dos comandos apresentados para acessar os dados no Servidor SQL Server 2000.
Temos vrias opes para, a partir do Microsoft Access 2000, ter acesso aos dados do SQL Server 2000.
Iremos aprender a utilizar as seguintes opes:
Importando dados do SQL Server em tabelas do Microsoft Access.
Anexando tabelas no Microsoft Access.
Criando consultas no Microsoft Access, baseadas em tabelas do SQL Server 2000.
Cada uma destas abordagens tem suas vantagens, desvantagens e se aplica em situaes especficas.
Vamos estud-las individualmente.
IMPORTANDO DADOS DO SQL SERVER EM TABELAS DO MICROSOFT ACCESS
Podemos importar os dados que esto em tabelas de um Banco de Dados do SQL Server 2000, para
tabelas em um Banco de Dados do Microsoft Access 2000. Com a importao, os dados so copiados
das tabelas de um Banco de Dados para as do outro.
Uma das vantagens da importao que os dados ficam gravados no arquivo .mdb, do Banco de Dados
do Microsoft Access 2000. Desta forma os dados so acessados localmente, o que pode propiciar um
melhor desempenho. Outra vantagem que os dados podem ser acessados, mesmo que a conexo de
rede com o servidor SQL Server 2000 tenha sido temporariamente interrompida.
Como nem tudo so vantagens, temos a desvantagem da falta de sincronizao dos dados. Explicando
melhor, com a importao, no existe nenhuma vinculao entre as tabelas no Microsoft Access 2000
e no SQL Server 2000. Em outras palavras, se os dados no SQL Server 2000 forem alterados, as alteraes
no sero repassadas para as tabelas do Microsoft Access. A nica maneira de receber as alteraes
excluir as tabelas no Microsoft Access e repetir a importao.
Por isso no muito comum a utilizao de importao. Uma situao especfica em que pode ser
aconselhado a importao, quando algum (por exemplo, um auditor), precisa ter uma cpia dos
dados em sua estao de trabalho ou notebook, para depois trabalhar nestes dados e realizar consultas
especficas. Nesta situao, pode ser interessante fazer uma importao dos dados e trabalhar localmente.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
714 00CURSO COMPLETO
No caso de um notebook que ser utilizado, por exemplo, em casa, sem comunicao com a rede da
empresa, a importao durante o horrio do expediente, enquanto o mesmo est conectado rede,
pode ser a nica soluo.
Para que possamos fazer a importao, uma fonte ODBC deve ter sido previamente criada. Alm disso,
deve ser uma fonte ODBC de um dos seguintes tipos:
File DSN.
Machine DSN.
Se a importao tiver que ser feita por vrios usurios em vrias estaes ou notebooks diferentes, pode ser
mais interessante utilizar uma fonte do tipo File DSN. Nesta situao, o administrador cria a fonte ODBC e
envia, por disquete ou por e-mail, para todos os usurios que precisam fazer a importao dos dados. Estes,
por sua vez, utilizam a fonte ODBC para proceder a importao dos dados. Uma fonte ODBC do tipo File
DSN gravada em um arquivo, o que facilita a distribuio da mesma para vrios usurios.
J uma fonte ODBC do tipo Machine DSN, somente pode ser utilizada na estao de trabalho onde foi criada.
Antes de aprendermos a importar dados do SQL Server 2000 para o Microsoft Access, vamos criar uma
fonte ODBC do tipo File DSN.
Exerccio: Criar uma fonte ODBC do tipo File DSN, a qual aponta para a instncia SERVIDOR\SRVINST02
e faz conexo com o Banco de Dados pubs. Vamos salvar esta fonte com o nome de Instancia2.dsn, na
pasta C:\Meus documentos.
Para criar a fonte ODBC Instancia2.dsn, faa o seguinte:
1. Abra o Gerenciador de fontes ODBC (Iniciar -> Programas -> Ferramentas administrativas ->
Fontes de dados (ODBC)).
2. D um clique na guia File DSN. Ir surgir uma lista com as fontes do tipo File DSN j existentes.
Por padro, so exibidas as fontes do tipo File DSN gravadas na pasta X:\Arquivo de
Programas\Arquivos comuns\Data Sources\ODBC, onde X: o drive onde est instalado o
Windows 2000 Server.
3. D um clique no boto Add, para criar uma nova fonte ODBC.
4. Surge uma janela perguntando qual o tipo de Banco de Dados que voc deseja acessar. Selecione
SQL Server, conforme indicado na Figura 12.14, e d um clique no boto Avanar.
5. Surge a janela para voc definir a pasta e o nome do arquivo onde sero salvas as informaes
sobre a fonte que est sendo criada. Digite C:\Meus documentos\Instancia2.dsn, conforme
indicado na Figura 12.15, e clique no boto Avanar.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
715 CURSO COMPLETO00
Figura 12.14 Definindo uma fonte para o SQL Server.
Figura 12.15 Definindo a pasta e o nome da fonte do tipo File DSN.
6. Ser exibido um resumo sobre as informaes selecionadas at o momento. D um clique no
boto Concluir. aberta a janela Create a New Data Source to SQL Server, conforme indicado
na Figura 12.16.
Nesta janela, devemos fornecer diversas informaes, tais como um comentrio para a fonte que est
sendo criada e a instncia a qual queremos que a mesma faa conexo.
7. No campo Description, digite Conexo ODBC com a Instncia 2.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
716 00CURSO COMPLETO
Figura 12.16 Definies para a fonte ODBC para o SQL Server.
8. Na lista Server, selecione o nome do Servidor SQL a ser utilizado. No nosso exemplo
SERVIDOR\SRVINST02.
A janela Create a New Data Source to SQL Server deve estar conforme indicado na Figura 12.17.
Figura 12.17 Definies para a fonte ODBC.
9. D um clique no boto Avanar, seguindo para a prxima etapa.
10. Nesta etapa definimos o tipo de autenticao a ser utilizado. Como estamos nos conectando
com SERVIDOR\SRVINST02, certifique-se de que With SQL Server authentication using a
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
717 CURSO COMPLETO00
login ID and password entered by the user esteja selecionado; para o campo Login ID digite sa
e para o campo Password digite a senha para o usurio sa.
11. D um clique no boto Avanar para ir para a prxima etapa. Nesta etapa, vamos definir com
qual Banco de Dados nos conectamos por padro, ao estabelecer a conexo com
SERVIDOR\SRVINST01. Clique na opo Change default database to. A lista abaixo desta
opo habilitada. Nesta lista, selecione pubs.
Em um Servidor SQL Server podem existir diversos Bancos de Dados. Neste caso, estamos definindo a
qual Banco de Dados a nossa fonte ODBC ir conectar-se.
12. D um clique no boto Avanar, seguindo para a ltima etapa. Nesta etapa, podemos definir
diversas opes, tais como:
O idioma para as mensagens do SQL Server.
Se devemos ou no utilizar criptografia dos dados para aumentar a segurana.
Se devemos utilizar as configuraes regionais tais como hora, data e formato para nmeros
em geral e para valores monetrios.
13. Selecione as opes conforme indicado na Figura 12.18.
Figura 12.18 Finalizando a configurao da fonte ODBC.
14. D um clique no boto Concluir para finalizar a criao da fonte ODBC.
Surge a janela ODBC Microsoft SQL Server Setup, a qual informa as diversas opes selecionadas.
Nesta janela, podemos clicar no boto Test Data Source, para verificar se a conexo com o Banco de
Dados est OK.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
718 00CURSO COMPLETO
15. D um clique no boto Test Data Source. Deve surgir uma janela indicando que o teste foi
realizado com sucesso.
16. D um clique em OK para fechar a janela de teste.
17. D um clique em OK para fechar a janela de resumo.
18. Voc estar de volta a janela do Gerenciador de fontes ODBC. D um clique em OK para fech-lo.
Agora que temos a nossa fonte File DSN Instancia2.dsn, vamos criar um novo Banco de Dados do Microsoft
Access 2000, na pasta C:\Meus documentos, com o nome de pubs.mdb. Aps criarmos o Banco de Dados,
vamos utilizar a fonte Instancia2.dsn, para importar os dados das tabelas do Banco de Dados pubs de
SERVIDOR\SRVINST02, para tabelas do Banco de Dados pubs.mdb do Microsoft Access 2000.
Exerccio: Importar os dados do Banco de Dados pubs da instncia SERVIDOR\SRVINST02, do servidor
SQL Server 2000, para o pubs.mdb do Microsoft Access 2000, o qual ser criado neste exerccio.
Procedimento 1: Criar o Banco de Dados C:\Meus documentos\pubs.mdb.
Para criar o Banco de Dados C:\Meus documentos\pubs.mdb, faa o seguinte:
1. Abra o Microsoft Access (Iniciar -> Programas -> Microsoft Access).
2. Na janela que surge, d um clique na opo Banco de Dados vazio do Access, conforme indicado
na Figura 12.19.
Figura 12.19 Criando um novo Banco de Dados no Microsoft Access.
Surge a janela Novo arquivo de Banco de Dados.
3. Utilize a lista Salvar em, para navegar at a pasta C:\Meus documentos. No campo Nome do
arquivo, digite pubs.mdb e, depois, d um clique no boto OK.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
719 CURSO COMPLETO00
4. D um clique no boto Criar.
O Banco de Dados pubs.mdb criado e aberto no Microsoft Access 2000. Por padro, vem a guia
Tabelas selecionada. Observe que, como o Banco acaba de ser criado, ainda no existe nenhuma tabela.
Com isso criamos o Banco de Dados pubs.mdb.
5. Mantenha o Microsoft Access aberto.
Procedimento 2: Importar as tabelas do Banco de Dados pubs, de SERVIDOR\SRVINST02.
Para importar as tabelas do Banco de Dados pubs, de SERVIDOR\SRVINST02, faa o seguinte:
1. Estando com o Microsoft Access 2000 aberto e com o arquivo pubs.mdb carregado, selecione o
seguinte comando: Arquivo -> Obter dados externos -> Importar.
Surge a janela Importar, indicada na Figura 12.20.
Figura 12.20 A janela Importar.
Na lista Arquivos do tipo, devemos selecionar em qual formato esto os dados a serem importados
para o Microsoft Access. Podemos importar dados de diversos formatos, como por exemplo de outros
arquivos do Microsoft Access, de arquivos do Dbase, etc.
Para importar arquivos do SQL Server, temos que utilizar uma fonte ODBC.
2. Na lista Arquivos do tipo, selecione ODBC Databases( ).
Surge a janela Select Data Source. Nesta janela, podemos selecionar uma fonte ODBC do tipo File DSN
ou Machine Data Source.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
720 00CURSO COMPLETO
3. D um clique na guia File DSN e, no campo DSN Name, digite C:\Meus documentos\Instancia2.
dsn, conforme indicado na Figura 12.21.
Figura 12.21 Utilizando a fonte Instancia2.dsn criada anteriormente.
4. D um clique no boto OK.
Surge a janela SQL Server Login. Nesta janela, devemos fornecer o nome de usurio e senha para fazer
a conexo com o servidor SQL Server 2000.
5. Digite sa para usurio e a senha para este usurio, conforme indicado na Figura 12.22.
Figura 12.22 Informaes de login.
6. D um clique no boto OK.
Surge a janela Importar Objetos, onde podemos selecionar quais tabelas sero importadas.
7. D um clique no boto Selecionar Tudo, para selecionar todas as tabelas. Sua tela estar conforme
indicado na Figura 12.23.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
721 CURSO COMPLETO00
Figura 12.23 Selecionando todas as tabelas.
Voc tambm pode selecionar as tabelas individualmente, caso no queira importar todas. Para ir selecionando as tabelas individualmente,
mantenha a tecla Ctrl pressionada e v clicando nas tabelas a serem selecionadas.
8. D um clique no boto OK.
Surge uma janela informando o progresso da importao. Uma vez encerrada a importao voc estar de
volta ao Microsoft Access, onde j so exibidas as tabelas importadas, conforme indicado na Figura 12.24.
Figura 12.24 Tabelas importadas com sucesso.
Observe que as tabelas so importadas com o nome no seguinte formato:
dono_da_tabela_Nome_da_Tabela
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
722 00CURSO COMPLETO
Podemos renomear as tabelas caso seja necessrio. Para renomear uma tabela, clique com o boto
direito do mouse na tabela, e no menu que surge, d um clique na opo Renomear. Digite o novo
nome e pressionte Enter.
Ao importar as tabelas no definido nenhum tipo de relacionamento entre as mesmas. Caso voc precise definir relacionamentos do
tipo Um para Vrios ou do tipo Um para Um, ter que fazer isso manualmente. Para definir relacionamentos no Microsoft Access,
utilizamos o comando Ferramentas -> Relacionamentos.
9. Feche o Microsoft Access 2000.
ANEXANDO TABELAS NO MICROSOFT ACCESS
Anexar diferente de importar. Ao anexarmos uma tabela, os dados no esto sendo copiados para o
Banco de Dados .mdb do Microsoft Access. Ao anexarmos uma tabela do SQL Server 2000, o Microsoft
Access cria uma referncia tabela que est sendo anexada, ao invs de copiar os dados da mesma. A
referncia contm as informaes necessrias para que o Banco de Dados do Microsoft Access possa
acessar os dados no SQL Server 2000. Os demais elementos do Microsoft Access consultas, formulrios,
relatrios, pginas, macros e mdulos podem acessar a tabela anexada, como se ela fosse uma tabela
local do prprio Access.
Uma das grandes vantagens da anexao que os dados mantm-se atualizados, ou seja, sempre que
alteraes forem feitas nos dados no SQL Server, estas alteraes podem tornar-se imediatamente visveis
no Microsoft Access, utilizando o Gerenciador de Tabelas vinculado, o qual acessado atravs do
menu Ferramentas -> Utilitrios de Banco de Dados. Em contra-partida, se o servidor SQL Server estiver
em um computador da rede e perdermos o acesso rede, tambm perderemos o acesso s tabelas
anexadas. Questes de desempenho tambm devem ser consideradas, uma vez que, ao utilizarmos
tabelas anexadas, poderemos ter uma grande quantidade de dados trafegando pela rede. Esta
considerao torna-se mais importante em situaes de acesso remoto, onde o Banco de Dados do
Microsoft Access e o servidor SQL Server esto ligados atravs de um link de WAN.
Para aprendermos a anexar tabelas vamos criar um Banco de Dados chamado pubs_anexado.mdb, na
pasta C:\Meus documentos. Depois iremos anexar as tabelas (o Microsoft Access 2000 chama de vincular)
do Banco de Dados pubs, da instncia SERVIDOR\SRVINST02. Para que possamos anexar tabelas,
precisamos de uma fonte ODBC que faa a conexo com o Banco de Dados do SQL Server 2000, onde
esto as tabelas a serem anexadas. Ns j temos esta fonte ODBC, que foi criada no exemplo anterior:
C:\Meus documentos\Instancia2.dsn. Utilizaremos esta fonte no nosso exemplo prtico.
Exerccio: Utilizando as orientaes do item anterior, crie um Banco de Dados chamado pubs_anexado.mdb,
na pasta C:\Meus documentos. Ao criar este Banco de Dados, o mesmo ser, automaticamente, carregado
no Microsoft Access. Mantenha o Banco de Dados pubs_anexado.mdb carregado.
Para anexar tabelas do Banco de Dados pubs, de SERVIDOR\SRVINST02, ao pubs_anexado.mdb do
Microsoft Access, faa o seguinte:
1. Estando com o Microsoft Access 2000 aberto, e com o arquivo pubs_anexado.mdb carregado,
selecione o seguinte comando: Arquivo -> Obter dados externos -> Vincular tabelas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
723 CURSO COMPLETO00
Surge a janela Vincular, indicada na Figura 12.25.
Figura 12.25 A janela Vincular.
Na lista Arquivos do tipo, devemos selecionar em qual formato esto os dados cujas tabelas sero
anexadas ao Microsoft Access. Podemos anexar dados de diversos formatos, como por exemplo de
outros arquivos do Microsoft Access, de arquivos do Dbase, etc.
Para anexar arquivos do SQL Server, temos que utilizar uma fonte ODBC.
2. Na lista Arquivos do tipo selecione ODBC Databases( ).
Surge a janela Select Data Source. Nesta janela, podemos selecionar uma fonte ODBC do tipo File DSN
ou Machine Data Source.
3. D um clique na guia File DSN e, no campo DSN Name, digite C:\Meus documentos\Instancia2.
dsn, conforme indicado na Figura 12.26.
4. D um clique no boto OK.
Surge a janela SQL Server Login. Nesta janela, devemos fornecer o nome de usurio e senha para fazer
a conexo com o Servidor SQL Server 2000.
5. Digite sa para usurio e a senha para este usurio, conforme indicado na Figura 12.27.
6. D um clique no boto OK.
Surge a janela Vincular tabelas, onde podemos selecionar quais tabelas sero anexadas, ou no idioma
do Microsoft Access, vinculadas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
724 00CURSO COMPLETO
Figura 12.26 Utilizando a fonte Instancia2.dsn criada anteriormente.
Figura 12.27 Informaes de login.
7. D um clique no boto Selecionar Tudo, para selecionar todas as tabelas. Sua tela estar conforme
indicado na Figura 12.28.
Figura 12.28 Selecionando todas as tabelas.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
725 CURSO COMPLETO00
Voc tambm pode selecionar as tabelas individualmente, caso no queira anexar todas. Para ir selecionando as tabelas individualmente,
mantenha a tecla Ctrl pressionada e v clicando nas tabelas a serem vinculadas.
8. D um clique no boto OK.
Surge uma janela informando o progresso da vinculao.
18. Caso o Microsoft Access no consiga definir qual o relacionamento entre as tabelas, ser exibida
uma janela solicitado que voc defina informaes adicionais para cada tabela na qual existem
dvidas. No exemplo da Figura 12.29, o Microsoft Access est nos pedindo que informemos
qual o campo, ou conjunto de campos, que formam a Chave Primria para a tabela Dependentes.
Selecione os campos CPF e Nome, e d um clique no boto OK.
Figura 12.29 Definindo uma Chave Primria composta por dois campos.
10. D um clique no boto OK.
Podem surgir mais janelas pedindo que sejam definidas informaes adicionais. Se no informarmos todos os dados solicitados, pode
acontecer de algumas tabelas no poderem ter seus dados atualizados atravs do Microsoft Access.
Uma vez encerrada a anexao voc estar de volta ao Microsoft Access, onde j so exibidas as tabelas
anexadas.
Observe que o cone ao lado das tabelas anexadas a figura de um pequeno globo. Este cone o
indicativo que permite diferenciar entre tabelas anexadas e as que fazem parte do Banco de Dados.
Agora voc pode utilzar as tabelas anexadas como se as mesmas fizessem parte do banco de dados.
Podemos criar consultas, formulrios, relatrios e demais objetos do Microsoft Access, os quais utilizam
dados das tabelas anexadas.
11. Feche o Microsoft Access 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
726 00CURSO COMPLETO
Ao clicar com o boto direito do mouse em uma tabela anexada e selecionar o comando Excluir, voc no estar excluindo a tabela no Banco
de Dados do Microsoft SQL Server 2000, voc estar apenas excluindo as informaes de vinculao com a tabela. A tabela no SQL Server
2000 no ser afetada. Ao fazer esta excluso no Microsoft Access, voc receber uma mensagem semelhante indicada na Figura 12.30.
Figura 12.30 Excluindo informaes de vnculo.
CRIANDO CONSULTAS NO MICROSOFT ACCESS, BASEADAS EM TABELAS DO SQL SERVER 2000
Vamos iniciar o nosso estudo, aprendendo a criar consultas baseadas em tabelas do SQL Server 2000,
ou seja, criamos uma consulta normalmente no Microsoft Access, porm a consulta acessa dados do
SQL Server 2000. importante diferenciar que, neste caso, no estamos acessando dados de uma
tabela anexada, mas sim diretamente do SQL Server 2000.
Para que uma consulta do Microsoft Access 2000 possa acessar tabelas no SQL Server 2000, precisamos
configurar a propriedade SourceConnectStr (Seq de conexo da origem). Nesta propriedade informamos
uma String para que a consulta consiga estabelecer uma conexo ODBC com o SQL Server 2000. Outro
detalhe que devemos observar que, uma vez estabelecida a conexo, as tabelas do SQL Server sero
acessadas com o nome no formato dbo.NomeDaTabela. Porm, no Microsoft Access, o ponto (.) no
um caracter permitido como nome de tabela. Por isso, antes de executarmos a consulta, iremos criar
aliases para as tabelas. Criaremos aliases sem o ponto.
Vamos fazer um exemplo prtico.
Exemplo: Criar um novo Banco de Dados chamado BuscaDadosNoSQL.mdb e salv-lo na pasta C:\Meus
documentos. Neste Banco de Dados, criar uma consulta baseada nas tabelas Orders e Order Details do
Banco de Dados Northwind de SERVIDOR\SRVINST02. Esta consulta deve retornar os campos OrderID,
OrderDate, ShipCountry e um campo calculado que fornea o valor total do pedido. Este exerccio ser
composto de dois procedimentos. No Procedimento 1, iremos criar o Banco de Dados
BuscaDadosNoSQL.mdb. No Procedimento 2, iremos criar a consulta Relao de Pedidos a partir do SQL.
Procedimento 1: Para criar o Banco de Dados BuscaDadosNoSQL.mdb, faa o seguinte:
1. Abra o Microsoft Access (Iniciar -> Programas -> Microsoft Access).
2. Na janela que surge, d um clique na opo Banco de Dados vazio do Access, e depois d um
clique no boto OK.
3. Surge a janela Novo arquivo de Banco de Dados. Utilize a lista Salvar em, para navegar at a
pasta C:\Meus documentos. No campo Nome do arquivo, digite BuscaDadosNoSQL.mdb.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
727 CURSO COMPLETO00
4. D um clique no boto Criar.
O Banco de Dados BuscaDadosNoSQL.mdb criado e aberto no Microsoft Access 2000. Por padro,
vem a guia Tabelas selecionada. Observe que, como o banco acaba de ser criado, ainda no existe
nenhuma tabela.
Com isso, criamos o Banco de Dados BuscaDadosNoSQL.mdb.
5. Mantenha o Microsoft Access aberto.
Procedimento 2: Para criar a consulta Relao de Pedidos, a partir do SQL, faa o seguinte:
1. D um clique na guia Consultas.
2. D um clique na opo Criar consulta no modo Estrutura. Surge a janela Mostrar tabela, indicada na
Figura 12.31. Como acabamos de criar o Banco de Dados BuscaDadosNoSQL.mdb, a lista de tabelas
est vazia. Neste caso, faremos com que a nossa consulta busque dados no servidor SQL Server 2000.
Figura 12.31 A janela Mostrar tabela, sem nenhuma tabela na lista.
3. D um clique no boto Fechar.
A janela Mostrar tabela ser fechada e voc estar no modo estrutura para a criao de uma nova
consulta. Este modo semelhante interface grfica para a criao de Views no SQL Server 2000.
Para maiores informaes sobre a criao de Views, consulte o Captulo 9. Para maiores informaes sobre a criao de consultas no
Microsoft Access 2000, consulte a documentao do produto.
Para fazer com que a consulta possa acessar tabelas em um Banco de Dados do servidor SQL Server,
precisamos configurar as propriedades da consulta. Mais especificamente, temos que definir a
propriedade Seq da conexo da origem.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
728 00CURSO COMPLETO
4. Para acessar as propriedades da consulta, selecione o comando Exibir -> Propriedades. Surge a
janela Propriedades da consulta, indicada na Figura 12.32. Nesta janela, podemos definir a
propriedade Seq da conexo da origem.
Figura 12.32 A janela de propriedades da consulta.
5. Nesta propriedade temos que definir uma String de conexo ODBC para o Banco de Dados
Nortwhind, da instncia SERVIDOR\SRVINST02. Digite a seguinte String:
ODBC;DRIVER=SQL Server;UID=sa;PWD=senha123LANGUAGE=Portugus
(Brasil);DATABASE=Northwind;WSID=SERVIDOR;APP=Microsoft Open Database
Connectivity;SERVER=SERVIDOR\SRVINST02;
Uma String de conexo ODBC informa os parmetros necessrios para a conexo. Os parmetros so
informados na forma de pares Nome_parmetro = valor e os pares so separados por ponto e vrgula
(;). A nica exceo o primeiro parmetro ODBC , o qual no no formato de um par. Este
parmetro informa que o que vem a seguir a definio de uma String de conexo ODBC.
Na Tabela 12.1, temos a descrio dos parmetros informados na String anterior.
Tabela 12.1 Parmetros para a String de conexo ODBC.
Parmetro Descrio
DRIVER=SQL Server Este parmetro informa o driver que ser utilizado pela conexo ODBC. No caso, estamos
informando que iremos conectar utilizando o drive para o SQL Server.
UID Informa o nome do usurio, com o qual faremos a conexo com o servidor SQL Server.
PWD Informa a senha para o usurio informado no parmetro UID.
LANGUAGE Informa o idioma para as mensagens de retorno, caso acontea algum erro durante a conexo.
DATABASE Define com qual Banco de Dados iremos nos conectar, uma vez que podemos ter diversos
Bancos de Dados em uma instncia do SQL Server 2000.
APP Informa que estamos utilizando ODBC.
Connectivity Define a qual instncia iremos nos conectar. No nosso exemplo, estamos conectando com
SERVIDOR\SRVINST02.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
729 CURSO COMPLETO00
6. Uma vez definida esta propriedade, feche a janela de propriedades da consulta. Para isso clique
no boto Fechar (x), da janela de propriedades.
Voc estar de volta consulta. Antes de testar se a nossa conexo ODBC est funcionando, vamos
salvar a consulta.
7. Selecione o comando Arquivo -> Salvar, ou d um clique no boto Salvar (boto com o desenho
de um disquete).
8. Surge uma janela pedindo que voc digite o nome da consulta. Digite Relao de Pedidos a
partir do SQL.
9. D um clique no boto OK e pronto, a consulta salva.
O prximo passo adicionar as tabelas Order e Order Details, para que possamos criar a consulta proposta.
10. Para adicionar tabelas, selecione o comando Consulta -> Mostrar tabela, ou d um clique no
boto Mostrar tabela (boto com um sinal de mais amarelo).
exibida a janela Mostrar tabela, porm agora com a listagem das tabelas disponveis no Banco de
Dados Northwind de SERVIDOR\SRVINST02, conforme indicado na Figura 12.33.
Figura 12.33 Consulta no Microsoft Access acessando tabelas do SQL Server 2000.
11. D um clique duplo na tabela dbo.Orders para adicion-la consulta.
12. D um clique duplo na tabela dbo.Order Details para adicion-la consulta.
13. D um clique no boto Fechar para voltar consulta. As tabelas dbo.Orders e dbo.Order Details
j estaro adicionadas.
Conforme comentado anteriormente, o Microsoft Access no aceita um ponto no nome das tabelas. Se
tentarmos criar uma consulta mantendo os nomes como esto, ao executarmos a consulta, receberemos
a mensagem de erro indicada na Figura 12.34.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
730 00CURSO COMPLETO
Figura 12.34 Mensagem de erro devido ao ponto (.) no nome das consultas.
No podemos renomear as tabelas no SQL Server 2000, at porque o dbo. significa o usurio dono da
tabela. O que podemos fazer criar um alias (apelido) para a tabela. Este apelido vlido na consulta.
14. Para criar um apelido para a tabela Orders, clique com o boto direito no nome da tabela
(dbo.Orders) e, no menu que surge, selecione Propriedades. Na janela que surge digite um
alias, no nosso caso, digite Orders, conforme indicado na Figura 12.35. Aps digitar o alias,
clique no boto Fechar (x), para voltar consulta.
Figura 12.35 Criando um alias para a tabela Orders.
15. Repita o passo 14 e crie o alias OrderDetails para a tabela dbo.Order Details. A sua tela deve
estar conforme indicado na Figura 12.36.
Agora precisamos definir o relacionamento entre as duas tabelas. As tabelas Orders e Orders Details so
relacionadas atravs do campo OrderID. Ao criarmos um relacionamento em uma consulta, o mesmo
somente vlido na consulta, ou seja, no estaremos definindo um relacionamento no Banco de
Dados Northwind de SERVIDOR\SRVINST02. Na verdade, ao criarmos um relacionamento, estamos
utilizando uma clusula Join.
16. Para criar o relacionamento entre as duas tabelas, na consulta, clique no campo OrderID na
tabela Orders, mantenha o mouse pressionado e arraste o campo OrderID da tabela Orders sobre
o campo OrderID da tabela Order Details. Ao largar o mouse, surge uma linha unindo os dois
campos. Esta linha um indicativo do relacionamento, conforme indicado na Figura 12.37.
De agora em diante como se estivssemos construindo uma consulta no Microsoft Access. Vamos
adicionar os campos OrderID, OrderDate e ShipCountry, alm de um campo calculado.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
731 CURSO COMPLETO00
Figura 12.36 J foram definidos aliases para as duas tabelas.
Figura 12.37 Relacionamento definido na consulta.
17. Adicione o campo OrderID da tabela Orders. Para fazer isso voc pode dar um clique duplo no
campo OrderID ou pode arrast-lo da tabela Orders at a primeira coluna da consulta.Tambm
adicione os campos OrderDate e ShipCountry, da tabela Ordes. A consulta deve estar conforme
indicado na Figura 12.38.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
732 00CURSO COMPLETO
Figura 12.38 Adicionando campos consulta.
18. Agora vamos adicionar um campo calculado. Na coluna em branco, ao lado do campo
ShipCountry, digite a seguinte frmula, na primeira linha:
Total: ([Quantity]*[UnitPrice])*(1-[Discount])
A parte antes dos dois pontos um alias para o campo calculado, e o que vm depois dos dois pontos
a frmular para o clculo.
Esta frmula calcula o total para cada item do pedido. Para calcular o total do pedido, temos que
agrupar os diversos itens de cada pedido e som-los. Para fazer este agrupamento, temos que exibir a
linha de totais, na estrutura da consulta.
19. Para exibir a linha de totais, selecione o comando Exibir -> Total. Uma nova linha chamada
Total, aparecer abaixo da linha Tabela.
20. Agora vamos s configuraes finais. Na linha de totais selecione Agrupar Por, para os campos
OrderID, OrderDate e ShipCountry. Para o campo calculado, selecione Soma.
Estamos quase prontos para executar a consulta e observar os resultados obtidos.
Antes de executarmos a consulta, vamos formatar os dados da coluna calculada.
21. Clique com o boto direito do mouse em qualquer linha da coluna calculada Total. No menu
que surge, selecione Propriedades. aberta a janela de propriedades desta coluna.
22. Defina a propriedade Formato como sendo Moeda e a propriedade Casas decimais, como sendo
2, conforme indicado na Figura 12.39.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
733 CURSO COMPLETO00
Figura 12.39 Definindo as propriedades do campo calculado.
23. Clique no boto Fechar (x) da janela de propriedades para voltar estrutura da consulta.
Agora estamos em condies de executar a consulta e observar os resultados obtidos.
24. Para executar a consulta, selecione o comando Consulta -> Executar, ou d um clique no boto
Executar (boto com uma exclamao vermelha).
Na Figura 12.40, temos os resultados da consulta.
Figura 12.40 Resultados da consulta.
25. Para voc ter uma idia do comando SQL associado consulta, selecione o comando Exibir ->
Modo SQL. Dever ser exibido o seguinte comando:
SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry,
Sum(([Quantity]*[UnitPrice])*(1-[Discount])) AS Total
FROM dbo.Orders AS Orders
INNER JOIN
dbo.[Order Details] AS [Orde Details]
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
734 00CURSO COMPLETO
ON
Orders.OrderID = [Orde Details].OrderID
IN

[ODBC;DRIVER=SQL
Server;UID=sa;PWD=senha123LANGUAGE=Portugus
(Brasil);DATABASE=Northwind;WSID=SERVIDOR;APP=Microsoft Open
Database Connectivity;SERVER=SERVIDOR\SRVINST02;]
GROUP BY
Orders.OrderID, Orders.OrderDate, Orders.ShipCountry;
Observe a utilizao da clusula IN. Esta clusula recebe dois parmetros. O primeiro um parmetro
vazio ( ), no caso de estarmos utilizando uma conexo ODBC como o seguindo parmetro. Observe que
a String de conexo ODBC faz parte do comando SQL que retorna os dados, ou seja, a informao para
acessar o Banco de Dados Northwind em SERVIDOR\SRVINST02 passada no prprio comando SQL.
26. Clique no boto Salvar para salvar a consulta.
27. Selecione o comando Arquivo -> Fechar para sair da consulta.
28. Feche o Microsoft Access 2000.
Neste tpico procurei mostrar algumas maneiras de acessar os dados do SQL Server 2000, de dentro do Microsoft Access 2000. Falar
sobre o desenvolvimento de aplicaes utilizando o Microsoft SQL Server como Front End e o SQL Server 2000 como Back End, assunto
para um livro inteiro. Alis um dos projetos nos quais estou pensando com carinho.
DESENVOLVIMENTO EM: ACESSANDO DADOS DO SERVIDOR
SQL SERVER 2000 COM O NAVEGADOR E O PADRO XML
PR-REQUISITOS
Noes sobre os modelos de desenvolvimento.
Conhecimento bsico de ODBC e OLE DB
Noes sobre os comandos bsicos da linguagem T-SQL.
Saber utilizar o MMC Microsoft Management Console.
METODOLOGIA
Apresentao dos passos necessrios para a configurao e acesso aos dados do servidor SQL Server 2000 atravs do navegador.
TCNICA
Utilizao do MMC para configurar o acesso via navegador, aos dados do SQL Server 2000 e utilizao do navegador para testar o acesso.
Uma das grandes novidades do SQL Server 2000 a possibilidade de acessarmos dados do SQL Server
2000, utilizando apenas um navegador. Antes que isto seja possvel, precisamos fazer algumas
configuraes para habilitar o acesso aos dados, atravs do navegador. Por padro, os dados so
retornados no formato XML. Falaremos um pouco sobre XML na parte final deste captulo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
735 CURSO COMPLETO00
Para configurar a acesso a um Banco de Dados do SQL Server 2000, atravs do navegador, utilizamos o
utilitrio IIS Virtual Directory Management for SQL Server. Este utilitrio permite a criao de um
diretrio virtual no servidor IIS, pasta esta que faz conexo com o servidor SQL Server. Para que possamos
configurar esta pasta virtual, as seguintes condies devem ser atendidas:
O servidor deve estar rodando Windows NT 4.0 ou Windows 2000.
Para o caso do Windows NT, temos algumas condies adicionais. Deve estar instalado o IIS
4.0 ou superior ou o PWS (Personal Web Server), para o caso do Windows NT Workstation 4.0.
Tambm deve estar instalado o MMC (Microsoft Management Console) 1.2. Esta verso do
MMC instalada com o Option Pack 4.0 ou com o SQL Server 2000.
Para computadores rodando Windows 2000 Professional, deve ser instalado o pacote de
ferramentas administrativas Adminpak.msi. Este arquivo pode ser encontrado na pasta
%Windir%\System32 de computadores onde est instalado o Windows 2000 Server. Onde
%Windir% deve ser substitudo pela pasta onde est instalado o Windows 2000 Server. Este
arquivo tambm pode ser encontrado na pasta I386 do CD de instalao do Windows 2000
Server. Para instalar este pacote de ferramentas administrativas, s localizar o arquivo
Adminpak.msi, clicar com o boto direito do mouse no mesmo e, no menu de opes que
surge, clicar em Instalar.
Conforme citado anteriormente, precisamos usar o utilitrio IIS Virtual Directory Management for SQL
Server, para criar um diretrio virtual no IIS. Este utilitrio cria uma associao entre o diretrio virtual
do IIS e um Banco de Dados de uma instncia do SQL Server 2000. Para acessar este utilitrio utilizamos
o seguinte caminho: Iniciar -> Programas -> Microsoft SQL Server -> Configure SQL XML Support in IIS.
O nome do servidor IIS e o nome do diretrio virtual devem ser informados como parte da URL de
acesso. As informaes definidas para o diretrio virtual (como login, senha e permisses de acesso)
so utilizadas para estabelecer uma conexo com um Banco de Dados de uma instncia do servidor
SQL Server 2000 e executar uma consulta.
Atravs do navegador, fazer os seguintes tipos de acessos:
Acessar diretamente uma tabela do Banco de Dados. Neste caso, a URL deve incluir um nome
virtual do tipo dbobject. Veremos exemplos mais adiante.
URL Uniform Resource Locattor, nada mais do que um endereo da Web. Por exemplo: http:www.microsoft.com/windows2000/
library/default.asp uma URL.
Executar um arquivo de modelo. Um arquivo de modelo um documento no formato XML,
no qual temos um ou mais comandos SQL. Quando um arquivo de modelo especificado em
uma URL, os comandos SQL armazenados no arquivo de modelo so executados. Tambm
podemos especificar uma consulta SQL (normalmente um comando SELECT), diretamente na
URL, porm esta no uma prtica recomendada por questes de segurana.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
736 00CURSO COMPLETO
CONFIGURANDO O ACESSO ATRAVS DO NAVEGADOR
Agora chega de conversa e vamos ver este acesso via browser funcionar na prtica. O primeiro passo
criar um diretrio virtual associado a um Banco de Dados de uma instncia do SQL Server 2000. Vamos
fazer isto no exemplo a seguir.
Exemplo: Criar um diretrio virtual chamado NorthwindSQL, o qual associado ao Banco de Dados
Northwind, de SERVIDOR\SRVINST02.
Para criar o diretrio virtual NorthwindSQL, faa o seguinte:
1. Antes de configurarmos o diretrio virtual NorthwindSQL no IIS, precisamos criar a estrutura
de pastas que d suporte a este diretrio virtual. Esta estrutura de pastas e subpastas deve ser
criada abaixo do diretrio raiz do servidor IIS. Por padro, o diretrio raiz D:\Inetpub\wwwroot.
Caso o seu diretrio esteja em outra unidade, troque o D:\ pela unidade correspondente. Dentro
de wwwroot vamos criar uma pasta chamada NorthwindSQL. Dentro da pasta NorthwindSQL
vamos criar duas subpastas schema e template, conforme indicado na Figura 12.41.
Figura 12.41 Criando a estrutura de pastas e subpastas para o diretrio virtual.
Uma vez criada esta estrutura de pastas e subpastas, vamos criao do diretrio virtual.
2. Abra o utilitrio IIS Virtual Directory Management for SQL Server (Iniciar -> Programas ->
Microsoft SQL Server -> Configure SQL XML Support in IIS).
Surge o console IIS Virtual Directory Management for SQL Server, indicado na Figura 12.42.
3. Clique no sinal de mais ao lado do nome do servidor. No meu exemplo, o nome Servidor.
4. Surgem as opes Site da Web padro e Site de administrao na Web. Clique com o boto
direito do mouse na opo Site da Web padro. No menu que surge, aponte para Novo ->
Virtual Directory.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
737 CURSO COMPLETO00
Figura 12.42 O console IIS Virtual Directory Management for SQL Server.
Ao clicar em Virtual Directory, surge a janela Propriedades de New Virtual Directory, indicada na
Figura 12.43.
Figura 12.43 Criando um novo diretrio virtual.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
738 00CURSO COMPLETO
5. Na guia General, vamos definir o nome do diretrio virtual (NorthwindSQL) e a pasta onde o
mesmo ser localizado (D:\InetPub\wwwroot\NorthwindSQL), conforme indicado na Figura 12.44.
Figura 12.44 Definindo o nome e a localizao.
Mais uma vez quero lembrar que D:\Inetpub\wwwroot a localizao do diretrio raiz, para o servidor IIS que estou utilizando. Caso
voc esteja utilizando outras configuraes, utilize-as no lugar das configuraes apresentadas neste exemplo.
6. D um clique na guia Security.
Nesta guia, temos que fornecer informaes sobre o tipo de autenticao que ser utilizado e o nome
e senha do usurio para conexo com o servidor SQL Server.
7. Selecione SQL Server, na opo Account Type, digite sa no campo User Name e a senha do
usurio sa, no campo Password, conforme indicado na Figura 12.45.
8. D um clique na guia Data Source.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
739 CURSO COMPLETO00
Figura 12.45 Informaes de login.
9. Surge uma janela pedindo para que voc digite a senha novamente, para confirmao. Digite
a senha e d um clique no boto OK. Sero exibidas as opes da guia Data Source.
10. Nesta guia definimos a instncia do SQL Server 2000 associada com o diretrio virtual que est
sendo criado e dentro da instncia qual o Banco de Dados. Para instncia, vamos selecionar
SERVIDOR\SRVINST02 e, para o Banco de Dados, Northwind, conforme indicado na Figura 12.46.
11. D um clique na guia Settings.
12. Nesta guia, selecione todas as opes:
Allow URL Queries.
Allow template queries.
Allow XPath.
Allow POST.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
740 00CURSO COMPLETO
Figura 12.46 O Banco de Dados Northwind da instncia SERVIDOR\SRVINST02.
13. Clique na guia Virtual Names. Nesta guia, associaremos nomes s subpastas template e schema.
14. Clique no boto New. Surge a janela Virtual Name Configuration.
15. No campo Virtual Name, digite template. Na lista type, selecione template. No campo Path,
digite: D:\Inetpub\wwwroot\NorthwindSQL\template. Sua janela deve estar conforme
indicado na Figura 12.47.
Figura 12.47 Associando nomes virtuais pasta template.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
741 CURSO COMPLETO00
16. D um clique no boto Save. Voc estar de volta guia Virtual Names.
17. Clique no boto New para criar mais um nome virtual.
18. No campo Virtual Name, digite dbobject. Na lista type, selecione dbobject.
19. D um clique no boto Save. Voc estar de volta guia Virtual Names.
20. D um clique no boto OK para salvar as configuraes e criar o diretrio virtual NorthwindSQL.
Feito isso o nosso diretrio virtual ter sido criado, conforme indicado na Figura 12.48.
Figura 12.48 O diretrio virtual NorthwindSQL.
21. Feche o console IIS Virtual Directory Management for SQL Server.
No prximo tpico, iremos testar o acesso aos dados do SQL utilizando o navegador.
TESTANDO O ACESSO AOS DADOS DO SQL SERVER 2000, ATRAVS DO NAVEGADOR
Aps termos configurado um diretrio virtual associado com o Banco de Dados Northwind, podemos
testar o acesso aos dados utilizando HTTP. O nosso diretrio virtual chamado NorthwindSQL, conforme
configurado no exemplo anterior. Lembre que estou utilizando um computador com o nome de Servidor.
Se voc estiver utilizando um nome diferente, substitua pelo nome correspondente.
Outro detalhe a ser observado que os dados so retornados no formato XML Extensible Markup
Language. No prximo item, falaremos um pouco sobre este padro que vem sendo utilizado cada vez
mais na industria de informtica.
Para testar o acesso via HTTP, abra o Internet Explorer e digite o seguinte endereo:
http://servidor/NorthwindSQL?sql=SELECT * FROM Employees FOR XML AUTO&root=root
Este endereo envia o comando SELECT * FROM Employees para o Banco de Dados Northwind, associado
com o diretrio virtual NorthwindSQL. Os dados so retornados no formato XML, conforme indicado
na Figura 12.49.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
742 00CURSO COMPLETO
Figura 12.49 Dados no formato XML.
Ainda no conhecemos o formato XML, mas posso adiantar que um documento no formato XML
contm apenas dados, sem nenhuma informao a respeito do formato de exibio dos mesmos. A
seguir, temos a parte inicial do documento, onde retornado o registro para o cliente Nancy Davolio:
<Employees EmployeeID=1LastName=DavolioFirstName=Nancy
Title=Sales RepresentativeTitleOfCourtesy=Ms.
BirthDate=1948-12-08T00:00:00HireDate=1992-05-01T00:00:00
Address=507 20th Ave. E. Apt. 2A City=SeattleRegion=WAPostalCode=98122Country=USA
HomePhone=(206) 555-9857 Extension=5467 Photo=dbobject/Employees[@EmployeeID=1']/@Photo
Notes=Education includes a BA in psychology from Colorado State University in 1970. She also
completed The Art of the Cold Call. Nancy is a member of Toastmasters
International.ReportsTo=2PhotoPath=http://accweb/emmployees/davolio.bmp />
Tambm temos a clusula FOR XML, a qual faz com que os dados sejam retornados no formato
XML.Podemos executar, praticamente, qualquer comando SELECT, com todas as suas clusulas. Por
exemplo, o endereo a seguir retorna apenas os pedidos da tabela Orders, em que o pas Brazil:
http://servidor/NorthwindSQL?sql=SELECT * FROM Orders WHERE ShipCountry=Brazil FOR XML
AUTO&root=root
Alterando um pouco o endereo, podemos ordenar o resultado pela data do pedido, isto , pelo
campo OrderDate
http://servidor/NorthwindSQL?sql=SELECT * FROM Orders WHERE ShipCountry=Brazil Order By
OrderDate FOR XML AUTO&root=root
Vejam que apenas uma questo de utilizar o comando SQL correto.
Ser que podemos utilizar uma clusula Join? A melhor maneira de descobrir tentando. Tente utilizar
o seguinte endereo:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
743 CURSO COMPLETO00
http://servidor/NorthwindSQL?sql=SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry,
SUM(([Quantity]*[UnitPrice])*(1-[Discount])) As Total FROM Orders INNER JOIN [Order Details]
ON [Orders].[OrderID]=[Order Details].[OrderID]
GROUP BY Orders.OrderID, Orders.OrderDate, Orders.ShipCountry
HAVING (Orders.ShipCountry = Brazil) FOR XML AUTO&root=root
A sintaxe para o nosso comando est correta, porm ao tentarmos executar este comando receberemos
a seguinte mensagem de erro:
MSSQLError HResult=0x80040e14 Source=Microsoft OLE DB Provider for SQL Server
Description=GROUP BY and aggregate functions are currently not supported with FOR XML AUTO.
A mensagem nos informa que a clusula GROUP BY e funes de agregao (no nosso exemplo
utilizamos o SUM), no so suportadas com a clusula FOR XML AUTO.
Vamos modificar um pouco o comando; ao invs da agrupar e totalizar vamos, simplesmente, calcular
o total de cada item de cada pedido. Para isso, utilize o seguinte endereo:
http://servidor/NorthwindSQL?sql=SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry,
(([Quantity]*[UnitPrice])*(1-[Discount])) As Total FROM Orders INNER JOIN [Order Details]
ON [Orders].[OrderID]=[Order Details].[OrderID]
WHERE Orders.ShipCountry = Brazil FOR XML AUTO&root=root
A seguir, temos a parte inicial dos resultados obtidos:
<Orders OrderID=10250OrderDate=1996-07-08T00:00:00ShipCountry=BrazilTotal=77 />
<Orders OrderID=10250OrderDate=1996-07-08T00:00:00ShipCountry=BrazilTotal=1261.4 />
<Orders OrderID=10250OrderDate=1996-07-08T00:00:00ShipCountry=BrazilTotal=214.20001 />
<Orders OrderID=10253OrderDate=1996-07-10T00:00:00ShipCountry=BrazilTotal=200 />
<Orders OrderID=10253OrderDate=1996-07-10T00:00:00ShipCountry=BrazilTotal=604.79999 />
<Orders OrderID=10253OrderDate=1996-07-10T00:00:00ShipCountry=BrazilTotal=640 />
<Orders OrderID=10256OrderDate=1996-07-15T00:00:00ShipCountry=BrazilTotal=393 />
<Orders OrderID=10256OrderDate=1996-07-15T00:00:00ShipCountry=BrazilTotal=124.8 />
<Orders OrderID=10261OrderDate=1996-07-19T00:00:00ShipCountry=BrazilTotal=160 />
<Orders OrderID=10261"OrderDate=1996-07-19T00:00:00"ShipCountry=BrazilTotal=288" />
<Orders OrderID=10287"OrderDate=1996-08-22T00:00:00"ShipCountry=BrazilTotal=472.60001" />
Voc j deve ter observado que o navegador converte o endereo digitado para um formato diferente.
Por exemplo, os espaos em branco so substitudos por %20. Isto acontece porque existem alguns
caracteres especiais que no podem fazer parte de um endereo. Por isso, os mesmos so substitudos
pelos correspondentes permitidos.
Na Tabela 12.2, temos a descrio dos caracteres especiais e os correspondentes pelos quais so substitudos.
Tabela 12.2 Caracteres especiais em endereos HTTP.
Este caracter substitudo por este (em hexadecimal)
Espao em branco %20
/ %2F
? %3F
% %25
# %23
& %26
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
744 00CURSO COMPLETO
A clusula FOR XML possui as seguintes limitaes:
No podemos utilizar FOR XML em subconsultas, quer a consulta principal seja um comando
INSERT, UPDATE ou DELTE, um comando SELECT ou qualquer outro comando. O exemplo a
seguir no suportado pela clusula FOR XML
SELECT *
FROM Table1
WHERE ......(SELECT * FROM Table2 FOR XML RAW)
Este um caso de subconsulta que utiliza a clusula FOR XML.
No pode ser utilizada em conjunto com as clusula COMPUTED BY ou FOR BROWSE.
GROUP BY e funes de agregao (SUM, COUNT, etc.) no so suportadas, conforme
exemplificamos anteriormente.
No pode ser utilizado em um comando que define uma View ou em uma funo definida pelo
usurio, funo esta que retorna um conjunto de registros.
No pode ser utilizado com cursores.
Agora que j vimos como acessar dados do servidor SQL Server 2000, atravs de um navegador, vamos
ver uma breve introduo sobre o padro XML.
UMA POUCO SOBRE EXTENSIBLE MARKUP LANGUAGE XML
Neste tpico vamos entender porque tanto se fala em XML e a que veio este, que alguns classificam
como linguagem e outros como um padro. No endereo http://www-106.ibm.com/developerworks/
education/xmlintro/xmlintro-1-1.html, eu encontro trs definies que muito me agradam. A primeira
diz que XML uma nova tecnologia para desenvolvimento de aplicaes Web. Em seguida, o texto
afirma que XML um padro, que permite que o desenvolvedor crie suas prprias tags. E, por
ltimo, temos que XML simplifica as transaes business-to-business na Web. Na seqncia, vamos
procurar entender porque cada uma destas afirmaes verdadeira.
PRIMEIRO UM POUCO DE HISTRIA
Nos primeiros tempos da informatizao nas empresas, tnhamos, basicamente, aplicativos baseados em
Mainframe. O aplicativo e o Banco de Dados ficavam no Mainframe, sendo que os mesmos eram acessados
atravs dos famosos terminais verdes que, com o advento da arquitetura Cliente/Servidor, vieram a ser,
pejorativamente, chamados de Terminais Burros. O formato dos dados dependia do fornecedor do Main-
frame que, na grande maioria dos casos, era a IBM. Um dos formatos mais conhecidos o formato de
arquivos seqenciais, que nada tem a ver com o formato dos Bancos de Dados Relacionais como o SQL
Server 2000. Este era um ambiente centralizado e com maiores facilidades de gerenciamento e controle.
No final da dcada de 80 e incio dos anos 90, surgiu com toda a fora a arquitetura Cliente/Servidor.
Junto com esta arquitetura, comearam a ser utilizados os chamados Bancos de Dados Relacionais.
Podemos citar como exemplos de Bancos de Dados Relacionais os seguintes produtos:
Microsoft SQL Server.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
745 CURSO COMPLETO00
ORACLE.
DB2 da IBM.
Sybase.
Ingress.
Neste momento, j comeavam a surgir algumas dificuldades de convivncia com diferentes formatos
de dados. Muitas empresas comeavam a migrar sistemas do grande porte (Mainframe) para a arquitetura
Cliente/Servidor, porm, durante um bom tempo as duas arquiteturas precisavam conviver. Em muitas
empresas, a convivncia entre sistemas em Mainframe e sistemas em arquitetura Cliente/Servidor de
duas ou mais camadas perdura at hoje.
Mas o problema comea a se agravar, pois hoje na rede da empresa, temos dados nos mais diferentes
formatos. So dados no formato de planilhas, de texto, de mensagens de e-mail, etc. Para piorar um
pouco mais, com o advento da Internet, as empresas passaram a trocar informaes cada vez mais
intensamente. Como possvel trocar informaes entre sistemas que utilizam diferentes formatos para
os dados? Uma srie de solues foram propostas de maneira que os sistemas possam acessar dados em
diversos formatos. A prpria Microsoft apresentou solues como ODBC e mais recentemente OLE DB.
Aqui, temos o primeiro ponto onde o XML pode ser de grande valor. O padro XML pode vir a ser e eu
at diria que est se tornando o formato comum para troca de dados entre diferentes sistemas e diferentes
empresas. Neste ponto, comea a fazer sentido a afirmao colocada na introduo deste tpico: XML
simplifica as transaes business-to-business na Web. Simplifica pelo fato de servir como um formato
padro para os dados a serem trocados entre as diferentes empresas. Por exemplo, imagine uma empresa
que vende pela Internet. O sistema que suporta o site de Comrcio Eletrnico desenvolvido no Main-
frame. Esta empresa precisa trocar dados com fornecedores e com empresas de carto de crdito, as quais,
no nosso exemplo, utilizam sistemas mais modernos com formatos de dados diferentes do existente no
Mainframe. Antes do XML, fazer esta comunicao seria um grande desafio, talvez at invivel, devido
aos custos de implementao. Com o XML, o site transforma os dados para o padro XML e os envia
neste formato para os fornecedores e empresas de carto de crdito. Estas empresas recebem os dados no
formato XML e convertem para o formato dos sistemas internos da empresa. Vejam que, desta forma, o
XML funciona como uma espcie de formato universal para troca de dados entre diferentes sistemas.
Trocar dados no formato .xml muito mais simples e prtico do que utilizar uma srie de gateways e
drivers de converso de dados entre diferentes formatos. Que seja bem vindo o XML.
O que acontece, hoje, que a maioria dos sistemas j tem a capacidade de exportar e importar dados
no formato XML. Porm, uma tendncia que notamos que os sistemas esto sendo adaptados para
trabalhar diretamente com dados XML. No momento em que escrevo este captulo, a Microsoft anuncia
que a prxima verso do Office ter suporte a arquivos no formato XML. J pensou que maravilha,
nada de arquivos proprietrios no formato .doc ou .xls, apenas arquivos .xml.
Os documentos que definem o padro XML podem ser encontrados nos seguintes endereos:
http://www.w3.org/XML.
http://www.xml.com/axml/axml.html.
Mas o padro XML no apenas um formato comum para troca de dados. Veremos o que mais XML ,
no prximo item.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO PARTE III: DESENVOLVIMENTO
746 00CURSO COMPLETO
O QUE MAIS TEM A OFERECER ESTE TAL DE XML?
Em primeiro lugar, XML uma linguagem que utiliza tags, semelhante ao HTML. Um dos principais
pontos a favor do XML o fato de ser extensvel (Extensible). Isto significa que no estamos limitados
a um conjunto fixos de tags. Podemos criar tags de acordo com a nossa necessidade. Podemos utilizar
XML para descrever a estrutura e a semntica de um conjunto de dados. Por exemplo, at hoje, no
existem tags HTML para tipos especficos de dados, como por exemplo equaes matemticas (smbolos
de integral, derivada, matriz, etc.), escalas musicais (sustenidos, claves de sol, etc.), frmulas qumicas,
etc. Com HTML, estamos limitados s tags que fazem parte da definio original da linguagem. Por
exemplo, para representar uma equao matemtica, temos que utilizar uma figura, pois no existe
uma tag para o smbolo da integral ou da derivada. Com XML, podemos ir um muito mais adiante.
No existe a tag que precisamos, ento vamos cri-la. Neste ponto que XML comea a se diferenciar
das demais linguagens. Podemos utilizar XML para definir tags associadas com um domnio especfico.
Por exemplo, as operadoras de carto de crdito podem se reunir e criar um conjunto especfico de tags
para troca de informaes no formato XML, em operaes de Comrcio Eletrnico na Web.
Um documento HTML contm informaes sobre como o seu contedo deve ser exibido, e facilmente
interpretado por um navegador que foi desenvolvido para entender HTML. J seres humanos dificilmente
conseguem extrair alguma informao til de um documento no formato HTML. J um documento
no formato XML no contm qualquer informao sobre como os dados devem ser exibidos ou
formatados, ao invs disso, o documento XML contm os dados e informaes sobre a estrutura dos
dados. Ao lermos um documento XML conseguimos extrair informaes do mesmo. A estrutura dos
dados est descrita no prprio documento XML. Tags de documentos XML so mais amistosas, por
exemplo, considere o seguinte trecho do exemplo anterior:
<Orders OrderID=10253OrderDate=1996-07-10T00:00:00ShipCountry=BrazilTotal=604.79999 />
<Orders OrderID=10253OrderDate=1996-07-10T00:00:00ShipCountry=BrazilTotal=640 />
Podemos identificar que temos informaes sobre o campo OrderID da tabela Orders. Na seqncia,
tambm podemos identificar os campos OrderDate, ShipCountry e Total. Veja que as tags XML so
mais amistosas do que as tradicionais tags HTML, como por exemplo <TD>, <TR> <STRONG>, etc.
Voc deve estar pensando que, em contrapartida, os dados no formato XML no so muito apresentveis.
Para resolver esta situao, podemos associar uma folha de estilo a um documento XML. As folhas de
estilo fornecem um layout mais profissional a um documento XML. Podemos utilizar a tecnologia de
CSS (Cascading Style Sheets), para formatar os dados de um documento XML. Com isto, obtemos um
efeito interessante. Observe que estamos separando o contedo (que est no documento XML), da
apresentao (que est definida no arquivo .css). Com isso podemos, facilmente, apresentar os dados
de diferentes maneiras para diferentes usurios, simplesmente associando diferentes folhas de estilo.
Em resumo, XML extensvel, ou seja, podemos criar as tags que forem necessrias e pode ser utilizado
como um formato padro para troca de informaes, uma vez que um documento XML contm alm
dos dados, informaes sobre a estrutura dos dados, o que facilita a leitura do mesmo por qualquer
sistema que entenda o padro XML.
Uma coisa certa. XML veio para ficar e cada vez mais solues so baseadas neste padro. Para se ter
uma idia da fora de XML, empresas como Microsoft, IBM, Sun, ORACLE e outras gigantes da indstria
de informtica abraaram este padro e anunciam produtos com suporte a XML.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS 2000 E O PADRO XML
747 CURSO COMPLETO00
Com o SQL Server 2000 j temos suporte ao padro XML, conforme vimos neste captulo. Aprendemos
a retornar dados no formato XML, utilizando o navegador. XML assunto para um livro inteiro. Quem
sabe um Curso Completo de XML. Com os links do incio do Captulo, voc pode ter uma boa idia do
que capaz o padro XML.
CONCLUSO
Neste Captulo, tratamos de mais alguns assuntos relacionados com o desenvolvimento de aplicaes
com base nos dados de um servidor SQL Server 2000.
Iniciamos o captulo aprendendo diferentes maneiras de utilizar o Microsoft Access 2000 para interagir
com os dados do SQL Server 2000. Aprendemos a importar dados do SQL Server 2000 para tabelas do
Microsoft Access 2000, utilizando fontes ODBC. Vimos que a vantagem deste mtodo que os dados
esto disponveis localmente, e a grande desvantagem que no existe uma sincronizao dos dados.
Quando dados so alterados ou novos registros so inseridos no Banco de Dados do SQL Server 2000,
estas alteraes no so sincronizadas com as tabelas importadas no Microsoft Access 2000.
Outro mtodo que aprendemos foi anexar tabelas do SQL Server 2000 utilizando fontes ODBC. Com a
anexao os dados continuam no servidor SQL Server 2000 e podem ser facilmente sincronizados. A
desvantagem que posso perder o acesso aos dados se o servidor estiver fora do ar.
Depois, aprendemos a criar consultas baseadas, diretamente, em tabelas do SQL Server 2000. Para isso
configuramos uma String ODBC de conexo com o SQL Server 2000.
Em seguida, aprendemos a configurar um diretrio virtual associado com um Banco de Dados de uma
instncia do SQL Server 2000. Para isso utilizamos o utilitrio IIS Virtual Directory Management for SQL
Server. Criamos um diretrio virtual chamado NorthwindSQL e depois testamos o acesso aos dados do
SQL Server 2000, utilizando o navegador. Vimos que os dados so retornados no formato XML.
Encerramos o captulo falando um pouco sobre o que o XML e quais as caractersticas do XML que o
tornam um padro de grande aceitao para a criao de aplicaes de Comrcio Eletrnico e troca de
dados em geral.
Com isso encerramos nossa jornada atravs do SQL Server 2000. Falamos sobre os diversos aspectos e
funcionalidades deste que tem conquistado, a cada dia, uma fatia maior do mercado de Bancos de
Dados Relacionais. Espero que as informaes aqui contidas possam ser de grande ajuda para todos
que esto iniciando a aprendizagem do SQL Server 2000 e tambm para aqueles que j so usurios
mais experientes e que esto em busca de informaes especficas sobre um determinado assunto.
Para sugestes sobre o contedo deste livro e assuntos que voc gostaria de ver includos nas prximas
edies, basta entrar em contato atravs do e-mail: batisti@hotmail.com.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
749 CURSO COMPLETO00
Anexo
REFERNCIA ATRAVS DE EXEMPLOS, DOS
PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
750 00CURSO COMPLETO
INTRODUO
Neste anexo, apresentaremos um guia de referncia rpida para os principais comandos da linguagem T-
SQL. Estarei reapresentando alguns dos exemplos colocados nos demais captulos do livro. O objetivo
pr os diversos exemplos em um nico local para que o leitor possa utilizar como uma referncia rpida.
Em inmeros exemplos deste livro, estivemos utilizando comandos da linguagem T-SQL. Em alguns,
utilizamos estes comandos no Query Analyzer. Nesta ferramenta, os comandos so digitados utilizando a
sitaxe da linguagem T-SQL e depois executados. Mas tambm executamos uma srie de comandos utilizando
o Enterprise Manager. Cada vez que utilizamos um assistente ou uma janela de propriedades, estamos
passando informaes para o servidor SQL Server. O servidor recebe as informaes passadas pela interface
grfica e monta um comando T-SQL para execuo da tarefa respectiva. Em resumo, o Enterprise Manager
, simplesmente, uma interface grfica que facilita a criao e execuo de comandos T-SQL.
O mais importante estarmos cientes de que a grande maioria das aes realizadas, em um servidor
SQL Server 2000, so executadas atravs de um ou mais comandos T-SQL. Estes comandos podem ter
sido digitados e executados diretamente no Query Analyzer, ou montados com auxlio do Enterprise
Manager. Por isso importante conhecermos os principais comandos T-SQL e a sintaxe dos mesmos.
Neste Apndice, veremos a sintaxe dos principais comandos T-SQL, bem como exemplos de utilizao
dos mesmos. Para acompanhar os exemplos, aqui apresentados, o amigo leitor dever utilizar o Query
Analyzer. Estarei utilizando, na maioria dos exemplos, o Banco de Dados Northwind. Este Banco de
Dados, instalado com o SQL Server 2000, um de exemplo, e a estrutura do mesmo bastante semelhante
ao Banco de Dados Northwind.mdb, instalado com o Microsoft Access.
Estaremos apresentando dois grupos distintos de comandos:
Para seleo, atualizao, excluso e insero de dados: Ao estudarmos este grupo de comandos,
veremos exemplos de utilizao dos comandos SELECT, INSERT, UPDATE e DELETE. Veremos
as diversas clusulas e opes destes comandos. Veremos como utilizar a clusula JOIN para
criar consultas que retornam dados de duas ou mais tabelas. Tambm trataremos de clusulas
como WHERE, IN, LIKE, etc.
Para criao e manipulao de objetos de um Banco de Dados: Neste grupo de comandos
veremos como criar e manipular objetos do Banco de Dados, tais como: Bancos de Dados,
tabelas, views, Stored Procedures, etc.
Alguns dos comandos que veremos neste Apndice, exigem que voc tenha permisso de administrador,
no SQL Server 2000, para execut-los. Se a instncia do SQL Server 2000, que voc est utilizando, est
no modo de segurana Windows Only, voc dever fazer o logon com uma conta de Administrador do
Windows 2000 ou Windows NT. Esta conta, automaticamente, possuir permisses de administrador
no SQL Server 2000. Se a instncia do SQL Server 2000, que voc est utilizando, est no modo de
segurana SQL Server and Windows voc pode utilizar tanto uma conta de Administrador do Win-
dows 2000 ou do NT, para fazer o logon no Sistema Operacional.
Voc tambm pode fazer o logon com uma conta de usurio, no Sistema Operacional e depois fazer o
logon com a conta sa no SQL Server 2000.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
751 CURSO COMPLETO00
Para maiores informaes sobre segurana no SQL Server 2000, consulte o Captulo 6.
NOES BSICAS DA LINGUAGEM SQL COMANDOS PARA CONSULTAR DADOS
Como o prprio nome sugere Microsoft SQL Server 2000 a linguagem utilizada pelo Microsoft SQL
Server 2000 o T-SQL (Transaction Structured Query Language). O T-SQL utilizado para uma srie
de operaes, como por exemplo:
Selecionar um conjunto de registros com base em um ou mais critrios de pesquisa.
Alterar informaes no Banco de Dados.
Inserir informaes no Banco de Dados.
Criar Bancos de Dados.
Criar novas tabelas.
Configurar opes de segurana.
Excluir registros, etc.
Embora a maioria destas operaes possa ser feita atravs da interface grfica do Microsoft SQL Server
2000, existem situaes em que precisamos conhecer e utilizar a linguagem T-SQL. Para a criao de
Store Procedures, Triggers e outros recursos avanados, estivemos utilizando a linguagem T-SQL nos
captulos deste livro.
Neste Apndice, apresentaremos uma referncia para os principais comandos da linguagem T-SQL.
Aprenderemos os comandos para manipulao de dados consultar, inserir, alterar e excluir.
Quando for utilizada a sigla SQL, estarei me referindo ao padro SQL de uma maneira genrica. Quando for utilizada a sigla T-SQL
estarei me referindo a implementao da linguagem SQL feita pela Microsoft no SQL Server 2000.
INTRODUO
O SQL foi desenvolvido para ser uma linguagem padro para operaes em Banco de Dados. A linguagem
SQL foi elaborada para ser independente de hardware ou software. Ao usar SQL, voc no precisa saber
a respeito do software de Banco de Dados ou do hardware envolvido em uma operao. Tudo o que
voc precisa conhecer o mtodo (instruo) SQL padro para solicitar informaes, que
obrigatoriamente o mesmo em todos os sistemas que utilizam o SQL.
Existem pequenas diferenas nas implementaes do SQL de diferentes fabricantes. Desta forma algumas rotinas escritas utilizando o
SQL Plus do Oracle podem no rodar, sem alteraes no Microsoft SQL e vice-versa.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
752 00CURSO COMPLETO
Uma instruo SQL descreve o conjunto de dados que voc deseja recuperar (quais campos, de quais
tabelas, critrios de filtragem, classificao, expresses calculadas, etc.).
Todas as instrues T-SQL so conduzidas como um nico comando que contm uma descrio completa
da informao exigida. Ao escrever uma instruo T-SQL, voc no deve se preocupar em como os
dados so recuperados, mas somente com o contedo do conjunto de dados. Esse o principal benefcio
do mtodo T-SQL.
Lembre-se que o SQL um padro genrico para expresses de consulta em Banco de Dados. Embora
a maior parte das verses do SQL compartilhe elementos bsicos, elas no so idnticas. O Access SQL
usa algumas palavras-chave que voc no encontra em outras verses do SQL. Tambm existem pequenas
diferenas entre o Microsoft Access e o Microsoft SQL Server.
Veremos atravs de exemplos a utilizao das principais palavras-chave do T-SQL para a construo de
expresses SQL para pesquisa em Banco de Dados.
A INSTRUO SELECT
Esta com certeza a instruo T-SQL mais importante; no existe pesquisa que no utilize esta instruo.
Vamos conhec-la em detalhes.
A instruo SELECT utilizada para especificar quais os campos de quais tabelas faro parte da consulta,
quais os critrios de pesquisa que sero utilizados, qual a ordem de classificao, etc.
A sintaxe simplificada da instruo conforme indicado abaixo:
SELECT
campo1, campo2, campo3
FROM nome_da_tabela
[WHERE condio ]
[GROUP BY nome_do_campo ]
[HAVING ... ]
[ORDER BY... ]
Na Tabela A.1 temos uma descrio destes elementos:
Tabela A.1 Os principais elementos da instruo SELECT.
Elemento Descrio
campo1, campo2, campon Nome dos campos a serem retornados a partir de uma ou mais tabelas.
nome_da_tabela Nome da tabela a partir da qual os dados devem ser recuperados.
WHERE Permite que sejam especificados critrios de pesquisa.
GROUP BY Podemos agrupar os resultados em torno de um ou mais campos de dados. Por
exemplo, em um relatrio de vendas anuais, posso ter os resultados agrupados por
ms, com a soma das vendas do ms logo aps a listagem de vendas daquele ms.
HAVING Especifica critrios para serem utilizados juntamente com Group By. Quando utilizamos
Group By, no podemos utilizar a clusula WHERE para especificar critrios, ao invs
disso devemos utilizar a clusula HAVING.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
753 CURSO COMPLETO00
Vamos analisar alguns exemplos prticos de utilizao da linguagem SQL.
Para os exemplos deste anexo estarei utilizando o Banco de Dados Nortwhind. Este Banco de Dados est com os nomes de tabelas e
nomes de campos em ingls. Utilizarei os nomes em ingls nos exemplos deste anexo. Voc pode utilizar o Query Analyzer para
executar e testar os exemplos apresentados aqui.
Para que possamos executar uma instruo SELECT em uma ou mais tabelas de um Banco de Dados, no
Query Analyzer, o Banco de Dados onde esto as tabelas deve ser o atual. Para torn-lo o Banco de Dados
atual, utilizamos o comando USE nome_banco_de_dados. Por exemplo, para tornar o Banco de Dados
Northwind, o Banco de Dados atual, utilizamos o seguinte comando:
USE Northwind
Agora alguns exemplos prticos.
Exemplo 1: Criar uma instruo SQL que retorne os campos OrderID, OrderDate, Freight e ShipCountry
da tabela Orders.
SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry, Orders.Freight FROM Orders
Observe que os nomes dos campos esto separados por vrgula, alm disso estamos utilizando o nome
completo, isto : Nome_da_tabela.Nome_do_campo. Tambm poderamos utilizar o comando, sem o
nome da tabela, antes do nome do campo, conforme indicado no seguinte comando:
SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders
Somente obrigatria a utilizao do nome da tabela antes do nome do campo quando o mesmo campo existir em duas ou mais tabelas
que fazem parte da instruo SELECT.
Elemento Descrio
ORDER BY Podemos ordenar os resultados obtidos com base em um ou mais campos de dados.
Por exemplo, podemos ordenar uma listagem de vendas em ordem alfabtica do
nome do cliente ou do nome do vendedor.
Por exemplo, imagine que estejamos escrevendo uma instruo T-SQL para criar uma listagem com o
Cdigo e o Nome do Cliente, bem como todos os pedidos efetuados pelo cliente. Acontece que o
Cdigo do Cliente, no nosso exemplo, existe nas duas tabelas: Customers e Orders. Neste caso, devemos
especificar o nome da tabela, antes do nome do campo.
Exemplo 2: Alterar a instruo SQL anterior para que os registros sejam classificados em ordem crescente
pelo valor do campo Freight.
Para classificar a listagem obtida, utilizamos uma clusula ORDER BY Nome_do_campo.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
754 00CURSO COMPLETO
SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders
ORDER BY Freight
Observe a utilizao da clusula ORDER BY Freight para classificar os registros em ordem Crescente.
A classificao em ordem crescente a padro. Quando formos classificar em ordem decrescente,
precisamos especificar a palavra DESC, conforme indicado a seguir:
SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders
ORDER BY Freight DESC
Exemplo 3: Agora vamos comear a inserir condies. Muitas vezes as condies so chamadas de
filtro. Uma vez estabelecida uma condio, somente os registros que atendem a condio especificada
sero retornados. Desta forma a condio atua como se fosse um filtro. Neste exemplo, vamos alterar
a instruo SQL anterior para que sejam exibidos somente os pedidos cujo ShipCountry seja Brazil.
SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders
WHERE ShipCountry=Brazil
ORDER BY Freight
Estou utilizando Brazil com z pois os dados do Banco de Dados Northwind esto em ingls.
Observe a utilizao da clusula WHERE para filtrar somente os pedidos cujo pas (campo ShipCountry)
seja Brasil. Como o campo ShipCountry um campo do tipo texto, o valor do critrio (Brazil) tem que
vir entre apstrofes. Vamos trabalhar um pouco mais com a clusula WHERE.
Exemplo 4: Altere a instruo SQL anterior para que sejam exibidos somente os pedidos para o Brasil
ou Alemanha.
SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders
WHERE Orders.ShipCountry=Brazil OR Orders.ShipCountry=Alemanha
ORDER BY Freight
Observe a utilizao da clusula OR ligando os dois critrios. Lembre que esta clusula retorna um
registro se o campo ShipCountry atender um dos dois critrios, isto , se for Brasil ou se for Alemanha,
o registro ser selecionado, que exatamente o que desejamos, ou seja, todos os pedidos para o Brasil
ou para a Alemanha.
Exemplo 5: Altere a instruo SQL anterior, retirando o critrio para o campo ShipCountry. Adicione
um critrio para o campo OrderID com valor maior do que 10500, retire a classificao do campo
Freight e classifique pelo campo OrderID.
SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders
WHERE OrderID>10500
ORDER BY OrderID
Observe a clusula WHERE utilizando o operador de comparao maior do que ( > ) e a classificao
atravs da clusula ORDER BY no campo OrderID.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
755 CURSO COMPLETO00
Na Tabela A.2 temos uma relao com os principais operadores de comparao.
Tabela A.2 Operadores de comparao.
Podemos ver, atravs dos exemplos, que a linguagem SQL no to difcil como pode parecer primeira vista.
Observe que a sintaxe da linguagem bastante intuitiva e orientada extrao de dados atravs das consultas.
Vamos continuar analisando alguns exemplos de aplicao da linguagem SQL com a utilizao de
recursos mais avanados.
Exemplo 6: Alterar a instruo SQL anterior, e adicionar um critrio de tal maneira que somente sejam
exibidos os pedidos para o ano de 1997. Tirar o critrio do campo OrderID.
SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders
WHERE Year([OrderDate])=1997
ORDER BY OrderID
Observe a utilizao da funo Year([Nome_do_campo]), para extrairmos apenas o ano do campo
OrderDate e especificarmos como critrio o Ano=1997. Tambm a clusula ORDER BY foi mantida,
classificando a listagem em ordem crescente pelo nmero do pedido. A utilizao de funes junto
com os comando SQL nos fornece inmeras possibilidades de refinamento em nossas consultas.
Exemplo 7: Alterar a instruo SQL anterior, para que sejam exibidos somente os pedidos no perodo
de 01/01/1997 at 31/07/1997 e que tenham ShipCountry=Brazil, Argentina, Alemanha ou Canad.
SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders
WHERE OrderDate Between 1/1/97 And 7/31/97
AND
ShipCountry In (Brazil,Argentina,Alemanha,Canad)
ORDER BY OrderID
Observe a utilizao de vrios critrios em diferentes campos. Colocamos critrios nos campos OrderDate
e ShipCountry. Os critrios de dois ou mais campos so ligados atravs do operador AND, indicando
que um registro deve atender ambos os critrios para ser selecionado. Tambm temos a utilizao dos
operadores BETWEEN (Entre) para selecionar as datas dentre de um determinado intervalo e do operador
IN (Em) para selecionar o campo ShipCountry que seja igual a um dos valores apresentados na lista.
Observe tambm que os valores de data vem delimitados por apstrofes ().
Operador Descrio
= Igual
<> Diferente
!= Diferente
> Maior do que
< Menor do que
>= Maior ou igual
<= Menor ou igual
!> No maior do que
!< No menor do que
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
756 00CURSO COMPLETO
O operador IN pode ser utilizado para definirmos uma srie de valores aceitveis em um determinado
campo. No exemplo temos a seguinte utilizao da clusula IN:
ShipCountry In (Brazil,Argentina,Alemanha,Canad)
Neste caso, estamos definindo que o campo ShipCountry pode assumir um dos valores definidos na
lista de valores, ou seja: Brazil, Argentina, Alemanha ou Canad. Somente sero retornados os pedidos
para estes pases. Utilizamos o operador IN ao invs de uma srie de operadores OR.
Embora o efeito seja o mesmo, o comando ficaria maior e mais difcil de interpretar. Por exemplo, ao
invs do operador IN anterior, poderamos utilizar a seguinte seqncia de operadores OR:
WHERE OrderDate Between 1/1/97 And 7/31/97
AND
(ShipCountry=Brazil OR ShipCountry=Argentina OR ShipCountry=Alemanha OR
ShipCountry=Canad)
Utilizamos os parnteses para garantir que a srie de testes com o operador OR seja executada como
um todo e o resultado desta avaliao seja utilizado como segundo parmetro para o operador AND.
Exemplo 8: Criar uma instruo SQL que retorne os campos OrderID, OrderDate, OrderDate, Freight e
ShipCountry da tabela Orders. Criar uma coluna adicional que calcula o nmero de dias entre os
campos ShippedDate e OrderDate. Chamar esta coluna de Dias_Ped_Entr. Manter os critrios
estabelecidos no exemplo anterior.
SELECT OrderID, OrderDate, ShippedDate, ShipCountry, Freight,
ShippedDate-OrderDate AS Dias_Ped_Entr FROM Orders
WHERE (OrderDate Between 1/1/97 And 7/31/97)
AND
(ShipCountry In (Brasil,Argentina,Alemanha,Canad))
ORDER BY Orders.OrderID
Veja que a coluna calculada DataDeEntrega-OrderDate est junto com a listagem dos campos no incio
da instruo SELECT. Alm disso foi utilizada a palavra AS para atribuir um nome (apelido) para esta
coluna calculada. Este nome o que ser utilizado para fazer referncia coluna, em uma pgina ASP
ou um programa desenvolvido em Visual Basic, por exemplo.
Desta forma para criar uma coluna calculada a partir de outras colunas, basta colocar a expresso de
clculo e utilizar a clusula AS para atribuir um nome coluna calculada.
Voc tambm pode classificar a listagem em ordem crescente ou decrescente de um campo calculado.
Por exemplo, se voc quisesse classificar a listagem do item anterior, em ordem crescente, do nmero
de dias entre a Data de envio e a Data do pedido, bastaria utilizar a seguinte instruo SQL:
SELECT OrderID, OrderDate, ShippedDate, ShipCountry, Freight, ShippedDate-OrderDate AS
Dias_Ped_Entr
FROM Orders
WHERE (OrderDate Between 1/1/97 And 8/31/97)
AND
(ShipCountry In (Brasil,Argentina,Alemanha,Canad))
ORDER BY DataDeEntrega-OrderDate
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
757 CURSO COMPLETO00
O OPERADOR LIKE
Utilizamos o operador LIKE para fazer pesquisas aproximadas. Por exemplo para pesquisar todos os
pedidos em que o nome do cliente contenha a palavra Silva em qualquer parte do nome. Esta uma
pesquisa aproximada, pois retornar os pedidos para Jos da Silva, Paulo Costa e Silva, Antnio da
Silva, Silvano Farias e assim por diante. Observe que o nome Silvano contm a string Silva e por isso
tambm retornado. Por exemplo, para retornar somente os clientes em que o nome inicia com a letra
J, podemos utilizar o seguinte comando:
SELECT *
FROM Customers
WHERE (ContactName LIKE J%)
ORDER BY ContactName
O smbolo % significa qualquer coisa, ou seja, o campo ContactName deve iniciar com a letra J, no
importando o que venha depois.
Na Tabela A.3, temos uma relao com os caracteres especiais que podem ser utilizados com o operador LIKE.
Tabela A.3 Caracteres especiais do operador LIKE.
Agora alguns exemplos de utilizao.
Exemplo 9: Alterar a instruo SQL do Exemplo 8, eliminando os critrios para a OrderDate e para o
ShipCountry. Colocar um novo critrio para ShipCountry, onde sejam exibidos apenas os pedidos em
que o campo ShipCountry tem a primeira letra na faixa de A at M. Utilize o operador LIKE.
SELECT OrderID, OrderDate, ShippedDate, ShipCountry, Freight, ShippedDate-OrderDate AS
Dias_Ped_Entr
FROM Orders
WHERE ShipCountry LIKE [A-M]%
ORDER BY ShipCountry
Observe a utilizao do operador LIKE no critrio de pesquisa para esta consulta. Nunca demais
salientar que a utilizao das instrues SQL juntamente com as funes e operadores como o LIKE,
nos fornece um amplo conjunto de possibilidades. O caracter % utilizado como um curinga. Por
exemplo, se especificarmos o seguinte critrio:
WHERE NomeDoCLiente LIKE Joo%
Operador Significa
% Qualquer string de zero ou mais caracteres.
_ Qualquer caracter simples.
[ ] Qualquer caracter simples, dentro de uma faixa. Por exemplo, para pesquisar somente os clientes
em que a primeira letra do nome esteja na faixa de A at L, utilizamos o seguinte critrio: WHERE
ContactName LIKE [A-L]%.
[ ^ ] Qualquer caracter simples, que no esteja dentro de uma faixa. Por exemplo, para pesquisar
somente os clientes em que a primeira letra do nome no esteja na faixa de A at L, utilizamos o
seguinte critrio: WHERE ContactName LIKE [^A-L]%.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
758 00CURSO COMPLETO
sero retornados todos os registros para clientes cujo nome inicia com Joo. O caracter curinga %
significa, em termos simples, qualquer coisa, ou seja, o critrio especifica que o nome inicie com
Joo, no importando (qualquer coisa) o que vier depois.
Aqui cabe um aviso importante para os usurios do Microsoft Access. No Microsoft Access, o caracter curinga o *, j no Microsoft SQL
Server 2000, utilizamos como caracter curinga o %, o qual tambm utilizado na construo de pginas ASP.
Para maiores informaes sobre a tecnologia ASP Active Server Pages, consulte o livro Criando Sites Dinmicos com ASP 3.0, 730
pginas, de minha autoria. O livro foi publicado pela editora Axcel Books do Rio de Janeiro www.axcel.com.br.
At agora estivemos trabalhando com instrues que selecionam registros de uma nica tabela. Porm
bastante comum criarmos instrues SQL baseadas em duas ou mais tabelas. Quando criamos instrues SQL
que buscam dados em duas ou mais tabelas, dizemos que est sendo feito um Join entre as duas tabelas.
Normalmente este Join (ou ligao) feito atravs de um campo comum as duas tabelas. Por exemplo,
OrderID na tabela Orders e OrderID na tabela Order Details. Outro exemplo, CustomerID na tabela
Orders e CustomerID na tabela Customers. Pode acontecer de termos consultas que trabalham com
trs ou mais tabelas, neste caso teremos diversos Joins.
O nmero de Joins sempre igual ao nmero de tabelas menos um. Por exemplo, se a nossa consulta acessar dados de quatro tabelas,
teremos trs Joins.
Agora passaremos e explorar na prtica, atravs de exemplos, a construo de instrues SQL que
trabalham com duas ou mais tabelas.
Exemplo 10: Criar uma instruo SQL que selecione os campos relacionados a seguir.
OrderID da tabela Orders.
OrderDate da tabela Orders.
ShipCountry da tabela Orders.
Freight da tabela Orders.
ProductID da tabela Order Details.
UnitPrice da tabela Order Details.
Quantity da tabela Order Details.
Alm disso, as tabelas Orders e Order Details esto relacionadas pelo campo OrderID, atravs de um
relacionamento do tipo Um para Vrios.
Classificar a listagem em ordem crescente do Nmero do pedido.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
759 CURSO COMPLETO00
Para resolver este exemplo podemos utilizar a seguinte instruo SQL:
SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry, Orders.Freight,
[Order Details].[ProductID], [Order Details].[UnitPrice], [Order Details].[Quantity]
FROM Orders
INNER JOIN
[Order Details]
ON Orders.OrderID = [Order Details].[OrderID]
ORDER BY Orders.OrderID
Primeiro, devemos observar que, pelo fato de estarmos tratando com dados de duas tabelas, estamos
utilizando a nomenclatura completa, isto , [Nome_da_tabela].[Nome_do_campo].
Observe a utilizao da clusula INNER JOIN, ligando as tabelas Orders e [Order Details], atravs do
campo OrderID, conforme especificado na clusula ON, onde temos o seguinte:
ON Orders.OrderID = [Order Details].OrderID
Observe que esta listagem ir trazer vrios registros para cada pedido, tantos quantos forem os itens de
cada pedido, conforme indicado na listagem parcial a seguir:
OrderID OrderDate ShipCountry Freight ProductID UnitPrice
10248 1996-07-04 France 32.3800 11 14.0000
10248 1996-07-04 France 32.3800 42 9.8000
10248 1996-07-04 France 32.3800 72 34.8000
10249 1996-07-05 Germany 11.6100 14 18.6000
10249 1996-07-05 Germany 11.6100 51 42.4000
10250 1996-07-08 Brazil 65.8300 41 7.7000
Mas, se ao invs do ProductID, ns quisssemos que fosse exibida a Descrio do produto?
Em primeiro lugar, esta informao encontra-se na tabela Products, logo teremos que adicionar a
tabela Products nossa consulta, a qual ir se ligar tabela Order Details atravs do campo ProductID,
logo teremos mais um Join. Para trs tabelas teremos dois Joins.
Aps adicionar a tabela Products e substituir o campo ProductID pelo campo ProductName, a nossa
instruo SQL deve ficar conforme indicado no seguinte exemplo:
SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry, Orders.Freight,
Products.ProductName, [Order Details].[UnitPrice], [Order Details].[Quantity]
FROM Products
INNER JOIN
(Orders INNER JOIN [Order Details]
ON
Orders.OrderID = [Order Details].[OrderID])
ON
Products.ProductID = [Order Details].[ProductID]
ORDER BY Orders.OrderID
Observe que, neste caso, temos um INNER JOIN dentro do outro. Dentro do parnteses feita a ligao
entre as tabelas Orders e Order Details, atravs do campo OrderID, e externamente feita a ligao
entre as tabelas Products e Order Details, atravs do campo ProductID.
Podemos utilizar diversos nveis de INNER JOIN, embora esta no seja uma prtica recomendada, pois
se aumentarmos muito os nveis de INNER JOIN, podemos ter, como resultado, pesquisas mais lentas
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
760 00CURSO COMPLETO
em conseqncia do aumento da complexidade das mesmas. At trs ou quatro nveis considerado
normal, acima disso preciso repensar a maneira de construir a consulta.
Vamos a um exemplo em que utilizamos Join, uma clusula WHERE e o operador LIKE.
Exemplo 11: Alterar a instruo SQL do item anterior para que somente sejam exibidos os pedidos para
os produtos cujo campo ProductName inicie com uma letra na faixa de A at J. Tirar a classificao do
campo OrderID e classificar em ordem crescente do campo ProductName.
SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry, Orders.Freight,
Products.ProductName, [Order Details].[UnitPrice], [Order Details].[Quantity]
FROM Products
INNER JOIN
(Orders INNER JOIN [Order Details]
ON
Orders.OrderID = [Order Details].[OrderID])
ON
Products.ProductID = [Order Details].[ProductID]
WHERE (Products.ProductName LIKE [A-J]%)
ORDER BY Products.ProductName
Observe, alm dos dois INNER JOIN, a utilizao da clusula WHERE em conjunto com operador LIKE
para especificar o critrio desejado.
At este momento estivemos construindo instrues SQL que executam consultas no Banco de Dados.
Especificamos quais campos sero exibidos, critrios de filtragem para estes campos e uma ordem de
classificao. A partir de agora, aprenderemos a utilizar comandos SQL para a construo de outros tipos
de instrues SQL, as quais realizam alteraes, incluses e excluses em tabelas de Banco de Dados.
NOES BSICAS DA LINGUAGEM SQL COMANDOS
PARA ALTERAR, MODIFICAR E EXCLUIR DADOS
ATUALIZANDO DADOS A INSTRUO UPDATE
A instruo UPDATE utilizada para alterar registros em uma ou mais tabelas de um Banco de Dados.
Poderamos, por exemplo, criar um formulrio onde o usurio pode alterar os seus dados cadastrais.
Primeiro, os dados so recuperados a partir do Banco de Dados; em seguida, as alteraes so enviadas
de volta para o Banco de Dados, atravs de uma instruo UPDATE. Vamos estudar esta instruo
atravs de exemplos, assim como fizemos com a instruo SELECT.
Exemplo 1: Criar uma instruo SQL que aumenta o campo UnitPrice em 20 % na tabela Order Details,
devido a um ajuste na moeda e uma desvalorizao do Real em relao ao Dlar.
UPDATE [Order Details]
SET UnitPrice = UnitPrice*1.2
Observe a simplicidade da instruo UPDATE. Utilizamos uma instruo UPDATE, seguida do nome da
tabela onde ser feita a atualizao. Em seguida, uma instruo SET com a expresso de atualizao
para aumentar em 20 % o valor do campo UnitPrice em todos os registros da tabela Order Details.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
761 CURSO COMPLETO00
Na Tabela A.4, temos uma relao com os principais operadores matemticos para realizao de clculos
bsicos.
Tabela A.5 Operadores matemticos.
Vamos alterar a instruo anterior, para incluir um critrio na consulta de atualizao. Quando utilizamos
um critrio em conjunto com a instruo UPDATE, somente os registros que atendem o critrio
especificado, sero atualizados.
Exemplo 2: Alterar a instruo SQL do exemplo anterior para que somente sejam aumentados em
20%, o campo UnitPrice dos registros cujo PreoUnitrio for maior ou igual a R$ 20,00.
UPDATE [Order Details]
SET UnitPrice = UnitPrice*1.2
WHERE UnitPrice>=20
Adicionamos uma clusula WHERE, para atualizar apenas os registros cujo PreoUnitrio seja maior
ou igual a R$ 20,00.
Exemplo 3: Alterar a instruo SQL do exemplo anterior para que somente sejam aumentados os registros
cujo PreoUnitrio seja maior ou igual a R$ 20,00 e cujo campo OrderID seja menor do que 10500.
UPDATE [Order Details]
SET UnitPrice = UnitPrice*1.2
WHERE (UnitPrice >= 20)
AND
(OrderID<10500)
Observe que utilizamos critrios em dois campos (UnitPrice e OrderID) e que estes critrios esto
ligados por um operador AND, o que significa que um registro, somente ser atualizado se ele atender
aos dois critrios ao mesmo tempo (UnitPrice maior ou igual a 20 e OrderID menor do que 10500). Se
o registro atender apenas uma das condies, o mesmo no ter o seu PreoUnitrio atualizado.
Vamos refinar um pouco mais a nossa consulta de atualizao. Vamos fazer com que somente sejam
atualizados os pedidos em que o ano do campo OrderDate seja igual a 1997, e ainda iremos manter os
critrios adicionados nos exemplos anteriores.
Exemplo 4: Alterar a instruo SQL do exemplo anterior para incluir um critrio para que o ano do
campo OrderDate seja 1997. Voc ter que incluir a tabela Orders, uma vez que o campo OrderDate,
encontra-se nesta tabela. Neste caso, estaremos utilizando uma instruo UPDATE, em conjunto com
uma clusula WHERE.
UPDATE [Order Details]
SET [Order Details].[UnitPrice]=[Order Details].[UnitPrice]*1.2
Operador Descrio
+ Adio
- Subtrao
* Multiplicao
/ Diviso
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
762 00CURSO COMPLETO
FROM [Order Details], Orders
WHERE
[Order Details].[OrderID]=[Orders].[OrderID]
AND
([Order Details].[UnitPrice]>=20)
AND
([Order Details].[OrderID]<10500)
AND
Year(OrderDate)=1997
Observe que fizemos o relacionamento entre as duas tabelas, atravs da definio de um critrio na
clusula WHERE, conforme indicado a seguir:
WHERE
[Order Details].[OrderID]=[Orders].[OrderID]
AND
...
Novamente, a utilizao de operadores e funes nos fornece uma grande flexibilidade em termos de
construo de nossas consultas.
INSERINDO NOVOS REGISTROS A INSTRUO INSERT
A instruo INSERT utilizada para adicionar registros em uma tabela de um Banco de Dados. Por
exemplo, quando o usurio preenche os dados de um formulrio de cadastro e os envia para o Banco de
Dados, podemos utilizar a instruo INSERT para inserir estes dados em uma tabela do Banco de Dados.
Vamos analisar alguns exemplos.
Exemplo 1: Este exemplo cria um novo registro na tabela Funcionrios:
INSERT INTO Employees (EmployeeID,FirstName, LastName, Title)
VALUES (10,Paulo, Braga, Estagirio,RH Manager)
Esta instruo insere um registro na tabela Funcionrios com os seguintes dados:
EmployeeID: 10.
FirstName: Paulo.
LastName: Braga.
Title: RH Manager.
Exemplo 2: Este exemplo seleciona todos os estagirios de uma tabela Estagirios que tenham sido
contratados h mais de 30 dias e adiciona os registros selecionados tabela Funcionrios.
Este exemplo no leva em considerao o Banco de Dados Northwind. Estamos considerando um Banco de Dados qualquer, onde
tenhamos as tabelas Estagirios e Funcionrios.
INSERT INTO Funcionrios
SELECT Estagirios.* FROM Estagirios
WHERE DataDaContratao < Date() - 30
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
763 CURSO COMPLETO00
Observe que utilizamos a funo Date( ) para capturar a data do sistema e subtramos 30, para obter
apenas os funcionrios contratados a mais do que 30 dias.
EXCLUINDO DADOS A INSTRUO DELETE
A instruo DELETE utilizada para excluir registros de um Banco de Dados. Vamos supor que voc
tenha desenvolvido uma aplicao Web para agenda eletrnica, onde o usurio pode cadastrar contatos,
endereos, telefones e compromissos. Podemos criar uma pgina ASP que permite ao usurio eliminar
dados que no sejam mais necessrios na agenda. Neste caso, podemos fazer uso da instruo DELETE.
Vamos a um exemplo prtico.
Exemplo 1: Criar uma instruo SQL que elimine todos os pedidos da tabela Orders em que o campo
ShipCountry seja a Germany (Alemanha).
DELETE FROM Orders
WHERE Orders.ShipCountry=Germany
A instruo to simples, que praticamente dispensa comentrios. A nica recomendao importante
que no devemos utilizar uma instruo DELETE, sem a utilizao de uma clusula WHERE. Utilizar
um DELETE sem uma clusula WHERE significa que estaremos eliminando todos os registros da tabela.
Neste item, apresentamos uma breve introduo a linguagem SQL, que no Microsoft SQL Server
chamada de Transact-SQL.
COMANDOS PARA CRIAO E MANIPULAO DOS OBJETOS DO BANCO DE DADOS
Agora veremos uma srie de comandos para criao e manipulao de objetos de um Banco de Dados.
Vamos tratar, dentre outros, de comandos para as seguintes funes:
Criao de Bancos de Dados.
Criao de tabelas em um Banco de Dados.
Criao de ndices em uma tabela.
Criao de views.
Criao de Stored Procedures.
Criao de Triggers.
Criao de logins e usurios.
Atribuio de permisses de acesso.
Os comandos que aprenderemos neste item so executados utilizando o Query Analyzer.
Para abrir o Query Analyzer e executar um ou mais comandos, faa o seguinte:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
764 00CURSO COMPLETO
2. Na janela de conexo, selecione o tipo de autenticao, e informe os dados necessrios (login e
senha no caso de autenticao SQL Server and Windows). Clique no boto OK para fazer a conexo.
Ser aberto o Query Analyzer com o Banco de Dados master como sendo o atual.
3. Digite o comando a ser executado.
4. Pressione Ctrl+E para executar o comando.
CRIANDO UM BANCO DE DADOS O COMANDO CREATE DATABASE
Para criar um Banco de Dados, utilizamos o comando CREATE DATABASE. A seguir, a sintaxe para este
comando com alguns comentrios.
Sintaxe comentada para o comando CREATE DATABASE:
CREATE DATABASE NOME_DO_BANCO_DE_DADOS
ON
*************************
Definio do Arquivo Primrio
*************************
(NAME= Nome_Lgico_Arquivo_Primrio,
FILENAME = Caminho para gravar o arquivo, por ex. C:\livrosql\exemplo3\ex3-prim.mdf,
SIZE= Tamanho_Inicial,
MAXSIZE= Tamanho_Mximo_Admitido,
FILEGROWTH = Incremento),
***************************
Definio do Arquivo Secundrio
***************************
(NAME= Nome_Lgico_Arquivo_Secundrio,
FILENAME = Caminho para gravar o arquivo, por ex. C:\livrosql\exemplo3\ex3-sec.ndf,
SIZE= Tamanho_Inicial,
MAXSIZE= Tamanho_Mximo_Admitido,
FILEGROWTH = Incremento)
*************************
Definio do Arquivo de Log
*************************
LOG ON
(NAME= Nome_Lgico_Arquivo_Log,
FILENAME = Caminho para gravar o arquivo, por ex. C:\livrosql\exemplo3\ex3-log.ldf,
SIZE= Tamanho_Inicial,
MAXSIZE= Tamanho_Mximo_Admitido,
FILEGROWTH = Incremento)
***************************************
Final do comando de criao do Banco de Dados
***************************************
Conforme vimos no Captulo 3, um Banco de Dados pode conter um arquivo primrio (.mdf), um ou
mais arquivos secundrios (.ndf) e um ou mais arquivos de log (.ldf).
Agora, vamos utilizar o comando CREATE DATABASE para criar um Banco de Dados chamado
BDExemplo, com as caractersticas definidas na Tabela A.5. Os arquivos, primrio, secundrio e de log,
devero ser salvos em C:\livrosql\exemplo3. Esta pasta j deve existir antes da execuo do comando,
caso contrrio ao executarmos o comando o mesmo ser encerrado e uma mensagem de erro ser
emitida.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
765 CURSO COMPLETO00
Exemplo: Criar um Banco de Dados com as caractersticas definidas na Tabela A.5.
Tabela A.5 Banco de Dados BDExemplo.
Para criar o Banco de Dados BDExemplo, utilizamos o seguinte comando, no Query Analyzer:
CREATE DATABASE BDExemplo
ON
*************************
Definio do Arquivo Primrio
*************************
(NAME= BDExemplo_prim,
FILENAME = C:\livrosql\BDExemplo\BDExemplo-prim.mdf ,
SIZE= 7MB,
MAXSIZE= 25MB,
FILEGROWTH = 1MB),
***************************
Definio do Arquivo Secundrio
***************************
(NAME= BDExemplo_sec1,
FILENAME = C:\livrosql\BDExemplo\BDExemplo-sec1.ndf ,
SIZE= 10MB,
MAXSIZE= 50MB,
FILEGROWTH = 10%)
*************************
Definio do Arquivo de Log
*************************
LOG ON
(NAME= BDExemplo_log1,
Arquivo Definies
Primrio C:\livrosql\BDExemplo\BDExemplo-prim.mdf.
Crescimento automtico habilitado.
Tamanho inicial: 7 MB.
Crescimento em incrementos de 1 MB.
Tamanho mximo de 25 MB.
Secundrio C:\livrosql\BDExemplo\BDExemplo-sec1.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Crescimento em incrementos de 10 %.
Tamanho mximo de 50 MB.
Arquivo de log C:\livrosql\BDExemplo\BDExemplo-log1.ldf.
Crescimento automtico habilitado.
Tamanho inicial: 7 MB.
Crescimento em incrementos de 2 MB.
Tamanho mximo de 25 MB.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
766 00CURSO COMPLETO
FILENAME = C:\livrosql\BDExemplo\BDExemplo-log1.ldf ,
SIZE= 7MB,
MAXSIZE= 25MB,
FILEGROWTH = 2MB)
***************************************
Final do comando de criao do Banco de Dados
***************************************
Veja que estamos utilizando o caracter de sublinhado _ para os nomes lgicos, pois no podemos utilizar o sinal de -, o qual no um
caracter vlido para um nome lgico. Se utilizarmos o sinal de , devemos colocar os nomes entre apstrofes.
Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, o Banco de Dados
BDExemplo ter sido criado e a seguinte mensagem ser exibida no painel inferior do Query Analyzer:
The CREATE DATABASE process is allocating 7.00 MB on disk BDExemplo_prim.
The CREATE DATABASE process is allocating 10.00 MB on disk BDExemplo_sec1.
The CREATE DATABASE process is allocating 7.00 MB on disk BDExemplo_log1.
CRIAO DE TABELAS EM UM BANCO DE DADOS O COMANDO CREATE TABLE
Para criar uma tabela em um Banco de Dados, utilizamos o comando CREATE TABLE.
A seguir, a sintaxe para este comando, com alguns comentrios.
Sintaxe comentada para o comando CREATE TABLE:
CREATE TABLE Nome_da_tabela
Agora inicio a definio bsica dos campos da tabela
(
Campo1 tipo_do_Campo1 NULL ou NOT NULL
Campo2 tipo_do_Campo2 NULL ou NOT NULL
Campo3 tipo_do_Campo3 NULL ou NOT NULL
Campo4 tipo_do_Campo4 NULL ou NOT NULL
Campo5 tipo_do_Campo5 NULL ou NOT NULL
Campon tipo_do_Campon NULL ou NOT NULL
)
A ttulo de exemplo, vamos criar a tabela Produtos, no Banco de Dados BDExemplo criado anteriormente,
com os campos indicados na Tabela A.6.
Tabela A.6 A tabela Produtos.
Campo Tipo de dado/Tamanho mximo
CdigoProduto Integer
NomeProduto Texto de no mximo 50 caracteres.
CdigoFornecedor Integer
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
767 CURSO COMPLETO00
Agora, vamos criar esta tabela no Banco de Dados BDExemplo. Vamos utilizar, para isso, o comando
CREATE TABLE indicado a seguir:
Primeiro torno o Banco de Dados BDExemplo
o Banco de Dados atual
USE BDExemplo
Definio do nome da tabela.
CREATE TABLE Produtos
Inicio a definio dos campos.
(
CdigoProduto int,
NomeProduto char(50),
CdigoFornecedor int,
CdigoCategoria int,
PreoUnitrio money,
UnidadesEstoque int,
EstoqueMnimo int,
Descontinuado bit
)
Certifique-se de ter alternado para o Banco de Dados BDExemplo, utilizando a lista com os nomes dos Bancos de Dados na barra de
ferramentas do Query Analyzer ou o comando Use BDExemplo.
Campo Tipo de dado/Tamanho mximo
CdigoCategoria Integer
PreoUnitrio money
UnidadesEstoque Integer
EstoqueMnimo Integer
Descontinuado bit (0=sim, 1=no)
Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, a tabela Produtos
ter sido criada no Banco de Dados BDExemplo e a seguinte mensagem ser exibida no painel inferior
do Query Analyzer:
The command(s) completed successfully.
CRIAO DE NDICES EM UMA TABELA O COMANDO CREATE INDEX
Para criar um ndice em uma tabela de um Banco de Dados, utilizamos o comando CREATE INDEX.
A seguir, a sintaxe para este comando, com alguns comentrios.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
768 00CURSO COMPLETO
Sintaxe comentada para o comando CREATE INDEX:
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
ON { table | view }
( column [ ASC | DESC ] [ ,...n ] )
Vamos a um exemplo prtico.
Para criar o seguinte ndice:
Tabela Customers do Banco de Dados Northwind
Nome: CityIndex
Colunas: City
Permitir valores duplicados.
utilizaramos o seguinte comando:
CREATE INDEX CityIndex ON Customers (City)
Vamos a um exemplo um pouco mais elaborado. Qual seria o comando para criar o seguinte ndice?
Tabela Customers do Banco de Dados Northwind
Nome: PK_Customers
Colunas: CustomerID
No permitir valores duplicados.
Neste caso, utilizaramos o seguinte comando:
CREATE UNIQUE CLUSTERED
INDEX PK_Customers ON Customers (CustomerID)
WITH DROP_EXISTING
Ao utilizarmos a opo WITH DROP_EXISTING, estamos orientando o SQL Server a excluir o ndice
caso ele j exista e a recri-lo novamente. Se no utilizarmos esta opo e o ndice j existir, ser
emitida a seguinte mensagem de erro:
Server: Msg 1913, Level 16, State 1, Line 1
There is already an index on table Customers named PK_Customers.
Vamos a mais um exemplo.
Agora, vamos criar um ndice composto com as seguintes caractersticas:
Tabela Customers do Banco de Dados Northwind
Nome: EnderecoIndex.
Colunas: Address, City e Region.
No permitir valores duplicados.
Ignorar valores duplicados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
769 CURSO COMPLETO00
Neste caso utilizaramos o seguinte comando:
CREATE UNIQUE INDEX EnderecoIndex
ON Customers (Address, City, Region)
WITH IGNORE_DUP_KEY
Neste caso, utilizamos a opo UNIQUE para criar um ndice nico e a opo WITH IGNORE_DUP_KEY
para ignorar valores duplicados j existentes.
Algumas consideraes para a criao de ndices compostos por mais do que um campo:
1. Podemos criar um ndice composto por, no mximo, 16 colunas. Alm disso, a soma do tamanho
das 16 colunas no pode ultrapassar 900 bytes.
2. Todas as colunas de um ndice composto devem pertencer a mesma tabela. Como no SQL
Server 2000 podemos criar ndices em Views (consultas), e uma View pode retornar dados de
vrias colunas de diferentes tabelas, ao criarmos um ndice composto em uma View, as colunas
que formam o ndice composto devem pertencer a mesma tabela.
3. Em termos de desempenho, devemos definir a coluna que possui valores mais diferenciados
em primeiro lugar. Por exemplo, no ndice EnderecoIndex, do qual fazem parte as colunas:
Address, City e Region, a coluna que apresenta a maior variao, com certeza a coluna Ad-
dress (existem muitos endereos em uma cidade), depois a coluna City (existem muitas cidades
em uma regio) e por ltimo a coluna Region. Ao definirmos o ndice, devemos passar as
colunas nesta mesma ordem, pois isso auxilia no desempenho da consulta.
4. Desta maneira podemos concluir que a ordem das colunas importa no desempenho, alm
disso os dois comandos a seguir, definem ndices diferentes. Observe que a nica diferena
entre os dois a ordem das colunas:
CREATE UNIQUE INDEX EnderecoIndex
ON Customers (Address, City, Region)
WITH IGNORE_DUP_KEY
e
CREATE UNIQUE INDEX EnderecoIndex
ON Customers (City, Address, Region)
WITH IGNORE_DUP_KEY
5. Ao construirmos uma consulta, a clusula WHERE deve fazer referncia a todas as colunas do
ndice composto, caso contrrio o ndice no ser utilizado.
Seguindo a nossa metodologia de utilizao de exemplos, vamos criar um ndice utilizando o Query
Analyzer. O ndice ter as seguintes caractersticas:
Tabela Customers do Banco de Dados Northwind.
Nome: CountryIndex.
Colunas: Country.
Permitir valores duplicados.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
770 00CURSO COMPLETO
Exemplo:
Criando o ndice CountryIndex com o Query Analyzer:
1. Abra o Query Analyzer (Iniciar -> Programas -> Microsoft SQL Server -> Query Analyzer).
2. Na janela de conexo, selecione Windows Authentication, e no campo SQL Server digite
SERVIDOR\SRVINST01. Clique em OK para fazer a conexo.
Ser aberto o Query Analyzer com o Banco de Dados master como sendo o Banco de Dados atual.
3. Alterne para o Northwind, utilizando a lista com os nomes dos Bancos de Dados, na Barra de
Ferramentas ou executando o comando USE Northwind.
4. Digite e execute o seguinte comando:
CREATE INDEX
CountryIndex ON Customers (Country)
Dever ser emitida a seguinte mensagem:
The command(s) completed successfully.
Para maiores informaes sobre os tipos de ndices e a criao de ndices consulte o Captulo 4.
CRIAO DE VIEWS NO BANCO DE DADOS O COMANDO CREATE VIEW
Para criar uma View em um Banco de Dados, utilizamos o comando CREATE VIEW. A seguir, a sintaxe
para este comando com alguns comentrios.
CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] ) ]
[ WITH < view_attribute > [ ,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]
Simplificando a sintaxe para o comando CREATE VIEW, teramos o seguinte:
CREATE VIEW Nome_da_View
AS
Comando SQL
Por exemplo, para criar uma View chamada Pedidos_Teste, que retorna os campos OrderID, OrderDate,
ShipCountry e ShipCity, da tabela Orders do Banco de Dados Northwind, utilizamos o seguinte comando:
USE Northwind
GO
CREATE VIEW Pedidos_Teste
AS
SELECT OrderID, OrderDate, ShipCountry
FROM Orders
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
771 CURSO COMPLETO00
importante que voc coloque o comando GO, antes do comando CREATE VIEW, caso o comando CREATE VIEW no seja o primeiro
comando. Se no utilizarmos GO, ser emitida a seguinte mensagem de erro:
Server: Msg 111, Level 15, State 1, Line 2
CREATE VIEW must be the first statement in a query batch.
O mais importante para a criao de Views, utilizando o Query Analyzer, conhecer a linguagem T-
SQL. Uma View nada mais do que um comando T-SQL gravado em um Banco de Dados. Uma vez
gravada a View, podemos execut-la quantas vezes forem necessrias. Por exemplo, para executar a
view Pedidos_Teste, utilizamos o seguinte comando:
SELECT * FROM Pedidos_Teste
Quando criamos uma View, o que gravado no Banco de Dados, apenas o comando T-SQL, alm de informaes sobre permisses de
acesso. Os dados que a View retorna, so obtidos a partir das tabelas do Banco de Dados, toda vez que a View for executada.
Informaes sobre as Views, so armazenadas nas tabelas sysobjects. Informaes sobre as colunas
referenciadas em cada View, so armazenadas na tabela syscolumns. Informaes sobre os objetos das
quais a View depende so armazenadas na tabela sysdepends. O texto que define o comando T-SQL da
View armazenado na tabela syscomments.
Podemos fazer com que o texto da View, que armazenado na tabela syscomments, seja criptografado.
Isto impede que o cdigo da View seja acessado, simplesmente atravs de um SELECT na tabela
syscomments. Ou melhor, o cdigo at que pode ser acessado, s que o mesmo estar criptografado, o
que impede que seja lido, a menos que a criptografia seja quebrada.
A seguir, um exemplo de criao de uma View com a utilizao da opo WITH ENCRYPTION:
CREATE VIEW Pedidos_Criptografada
WITH ENCRYPTION
AS
SELECT OrderID, OrderDate, ShipCountry, ShipCity
FROM Orders
WHERE ShipCountry = Brazil
Vamos a um exemplo: Criar uma View chamada Mdia_Vendas_por_Ano. Esta View deve exibir um
registro para cada ano em que existem pedidos e o valor mdio de vendas para cada ano.
O detalhe nesta View que temos que utilizar dados da tabela Orders e da tabela Order Details. Os
clculos do total por pedido, que vai possibilitar o clculo da mdia anual, so realizados a partir dos
campos da tabela Order Details. Alm disso, teremos que utilizar a funo Year, para extrair apenas o
ano do campo OrderDate. Depois, agrupamos o campo ano e utilizamos a funo AVG na coluna que
calcula o valor das vendas. Ao mesmo tempo que aprendemos a criar a View tambm reforamos a
utilizao das principais clusulas do comando SELECT.
Para criar esta View, utilize o seguinte comando:
USE Northwind
GO
CREATE VIEW Mdia_Vendas_por_Ano
AS
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
772 00CURSO COMPLETO
SELECT YEAR(OrderDate) AS [Ano do Pedido],
AVG(([Quantity] * [UnitPrice])* (1 -[Discount])) AS [Mdia Anual]
FROM [Orders]
INNER JOIN
[Order Details]
ON
[Orders].[OrderID] = [Order Details].[OrderID]
GROUP BY YEAR(OrderDate)
Agora vamos testar se a View Mdia_Vendas_por_Ano est retornado os resultados desejados.
Execute o seguinte comando:
SELECT * FROM Mdia_Vendas_por_Ano
Para maiores informaes sobre a criao de Views, consulte o Captulo 9.
CRIAO DE STORED PROCEDURES NO BANCO DE DADOS O COMANDO CREATE PROCEDURE
Para criar um Stored Procedure em um Banco de Dados, utilizamos o comando CREATE PROCEDURE.
A seguir a sintaxe para este comando com alguns comentrios.
CREATE PROCEDURE nome_do_stored_procedure
[
{@nome_parmetro1 tipo_de_dados_do_parmetro} [=valor_default] [OUTPUT]
]
[,..n]
AS
comando 1
comando 2
...
comando n
Vamos a um exemplo simples.
Exemplo: Criar e testar um Store Procedure que retorna todos os registros da tabela orders, em que o
campo ShipCountry igual a London. Gravar o Stored Procedure com o nome usp_PedidosLondon. O
mesmo ser criado no Banco de Dados Northwind.
Estamos utilizando o prefixo usp_ para indicar user Stored Procedure. Porm, esta no uma conveno obrigatria, apenas uma
recomendao.
Para criar o Stored Procedure usp_PedidosLondon, utilize o seguinte comando:
USE Northwind
GO
CREATE PROCEDURE usp_PedidosLondon
AS
SELECT * FROM Orders
WHERE ShipCity = London
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
773 CURSO COMPLETO00
O comando executado e a seguinte mensagem exibida:
The command(s) completed successfully.
Agora podemos executar o Stored Procedure sempre que for necessrio. Para execut-lo, execute o
seguinte comando:
exec usp_PedidosLondon
O Stored Procedure executado, os comandos que compem-no so executados e os resultados so
retornados (somente os pedidos em que o campo ShipCity igual London).
Quando criamos um Stored Procedure, o SQL Server 2000 grava informaes sobre o mesmo em uma
srie de tabelas no prprio Banco de Dados onde o Stored Procedure criado. O nome do Stored Proce-
dure armazenado na tabela sysobjects. Os comandos do Stored Procedure so armazenados na tabela
syscomments. Podemos fazer com que estes comandos sejam criptografados. Para isso utilizamos a opo
WITH ENCRYPTION. No exemplo a seguir, temos um comando que cria um Stored Procedure chamado
usp_Customers e criptografa os comandos do Stored Procedure, armazenados na tabela syscomments:
USE Northwind
GO
CREATE PROCEDURE usp_Customers
WITH ENCRYPTION
AS
SELECT * FROM Customers
CRIANDO STORED PROCEDURES COM PARMETROS DE ENTRADA
A utilizao de parmetros de entrada permite a criao de Stored Procedures mais flexveis. Vamos
considerar o Stored Procedure usp_PedidosLondon, criado no exemplo anterior. Da maneira como
este Stored Procedure foi criado, sem parmetros de entrada, o critrio de pesquisa ser sempre o
mesmo: ShipCity = London.
Podemos criar um Stored Procedure mais genrico, o qual aceita o nome da cidade como parmetro e
retorna todos os pedidos para a cidade passada como parmetro.
Para criar um Stored Procedure, com um ou mais parmetros de entrada, utilizamos a seguinte sintaxe:
CREATE PROCEDURE nome_StorProc
@nome_parmetro tipo_parmetro
AS
comando 1
comando 2
...
comando n
Caso tenhamos mais do que um parmetro de entrada, devemos separ-los por vrgula, conforme
indicado a seguir:
CREATE PROCEDURE
@nome_parmetro1 tipo_parmetro1,
@nome_parmetro2 tipo_parmetro2,
...
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
774 00CURSO COMPLETO
@nome_parmetron tipo_parmetron
AS
comando 1
comando 2
...
comando n
Para utilizar o parmetro nos comandos do Store Procedure, basta utilizar @nome_do_parmetro.
Vamos a um exemplo.
Exemplo: Criar um Stored Procedure chamado usp_Pedidos_Cidade. Este ser criado no Banco de
Dados Northwind e deve aceitar um parmetro chamado cidade, o qual do tipo nvarchar(15). O
Stored Procedure usar o valor passado neste parmetro como critrio de pesquisa, para retornar apenas
os pedidos para a cidade passada como parmetro.
Para criar o Stored Procedure usp_Pedidos_Cidade, utilize o seguinte comando:
USE Northwind
GO
CREATE PROCEDURE usp_Pedidos_Cidade
@cidade nvarchar(15)
AS
SELECT * FROM Orders
WHERE ShipCity = @cidade
Para executar o Stored Procedure usp_Pedidos_Cidade, passando Campinas como parmetro, utilizamos
o seguinte comando:
Execute usp_Pedidos_Cidade Campinas
Sero retornados apenas os pedidos para a cidade de Campinas.
Para executar o Stored Procedure usp_Pedidos_Cidade, passando Bruxelles como parmetro, utilizamos
o seguinte comando:
Execute usp_Pedidos_Cidade Bruxelles
Sero retornados apenas os pedidos para a cidade de Bruxelles e assim por diante, ou seja, cada vez
que executarmos o Stored Procedure, podemos passar um parmetro diferente, o que o torna bem
mais flexvel.
Vamos a mais um exemplo, onde temos dois parmetros de entrada.
Exemplo 2: Criar um Stored Procedure chamado usp_Ped_Cid_Pas. Este ser criado no Banco de Dados
Northwind e deve aceitar dois parmetros: um chamado cidade, o qual do tipo nvarchar(15), e outro
chamado pas, o qual do tipo nvarchar(15). O Stored Procedure usar os valores passados nestes
parmetros como critrio de pesquisa, para retornar apenas os pedidos para a cidade e pas de destino
passados como parmetros.
Para criar o Stored Procedure usp_Ped_Cid_Pas, utilize o seguinte comando:
USE Northwind
GO
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
775 CURSO COMPLETO00
CREATE PROCEDURE usp_Ped_Cid_Pas
@cidade nvarchar(15),
@pas nvarchar(15)
AS
SELECT * FROM Orders
WHERE (ShipCity = @cidade) and (ShipCountry=@pas)
Para executar o Stored Procedure usp_Ped_Cid_Pas, passando como parmetros Buenos Aires como valor
para o parmetro cidade, e Argentina, como valor para o parmetro pas, utilizamos o seguinte comando:
Exec usp_Ped_Cid_Pas Buenos Aires, Argentina
Para executar o Stored Procedure usp_Ped_Cid_Pas, passando como parmetros Sao Paulo, como valor
para o parmetro cidade, e Alemanha como valor para o parmetro pas, utilizamos o seguinte comando:
Exec usp_Ped_Cid_Pas Sao Paulo, Alemanha
Evidentemente que esta ltima execuo no ir retornar nenhum registro, apenas a seguinte mensagem
ser exibida:
(0 row(s) affected)
Se passarmos apenas o parmetro cidade, ignorando o parmetro pas, conforme indicado no seguinte comando:
Execute usp_Ped_Cid_Pas Sao Paulo
iremos obter a seguinte mensagem de erro:
Server: Msg 201, Level 16, State 3, Procedure usp_Ped_Cid_Pas, Line 0
Procedure usp_Ped_Cid_Pas expects parameter @pas, which was not supplied.
Observe que a mensagem informa que esperado um parmetro chamado pas (@pas) e que o mesmo
no foi informado.
Se passarmos parmetros a mais, conforme indicado no seguinte comando:
Execute usp_Ped_Cid_Pas Sao Paulo, Alemanha, 12/06/2001
iremos obter a seguinte mensagem de erro:
Server: Msg 8144, Level 16, State 2, Procedure usp_Ped_Cid_Pas, Line 0
Procedure or function usp_Ped_Cid_Pas has too many arguments specified.
Para maiores informaes sobre a criao e o conceito de Stored Procedures, consulte o Captulo 10.
CRIAO DE TRIGGERS O COMANDO CREATE TRIGGER
Para criar uma Trigger em uma tabela de um Banco de Dados, utilizamos o comando CREATE TRIG-
GER. A seguir a sintaxe para este comando com alguns comentrios.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
776 00CURSO COMPLETO
CREATE TRIGGER nome_da_trigger
ON {tabela ou view}
[WITH ENCRYPTION]
{FOR | AFTER | INSTEAD OF}
{[DELETE] [,] [INSERT] [,] [UPDATE]}
[WITH APPEND]
[NOT FOR REPLICATION]
AS
comando 1
comando 2
comando 3
...
comando n
Com este comando podemos criar Triggers associadas com qualquer dos comandos bsicos de insero,
alterao ou excluso de dados DELTE, INSERT ou UPDATE e tambm Triggers do tipo INSTEAD OF
e AFTER. Uma Trigger pode ser associada com mais de uma opo, por exemplo, podemos criar uma
Trigger que dispara em resposta a um comando INSERT e tambm a um comando UPDATE.
Nos comandos que definem a Trigger (comando 1, ..., comando n), podemos incluir a maioria dos
comandos, inclusive as estruturas IF...ELSE e WHILE. No so permitidos os seguintes comandos:
ALTER DATABASE
CREATE DATABASE
DISK INIT
DISK RESIZE
DROP DATABASE
LOAD DATABASE
LOAD LOG
RECONFIGURE
RESTORE DATABASE
RESTORE LOG
Ao criarmos uma Trigger, informaes sobre a mesma so armazenadas nas tabelas de sistema, sysobjects e syscomments.
Vejamos um exemplo prtico.
Exemplo: Vamos criar uma Trigger que evita que sejam inseridos novos clientes na tabela Customers
do Banco de Dados Northwind, em que o campo Country seja igual a China ou Indonsia. Ser criada
para a ao INSERT. Vamos cham-la de tg_ExcluiChinaIndonsia. Esta trigger verifica se o campo
Country igual a China ou Indonsia. Em caso afirmativo, um ROLLBACK ser chamado para cancelar
a insero do registro, caso contrrio a transao ser concluda.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
777 CURSO COMPLETO00
Para criar a Trigger tg_ExcluiChinaIndonsia, execute o seguinte comando:
USE Northwind
GO
CREATE TRIGGER tg_ExcluiChinaIndonsia
ON Customers
FOR INSERT
AS
IF EXISTS(SELECT * FROM inserted WHERE Country IN (China,Indonsia))
PRINT PAS PROIBIDO !!!
ELSE
PRINT PAS PERMITIDO
Observe a utilizao da funo EXISTS (comando SQL). Esta funo retorna verdadeiro, caso o comando SQL retorne algum registro e
falso, caso contrrio.
Agora vamos testar o funcionamento da Trigger, utilizando um comando INSERT.
Execute o seguinte comando:
USE Northwind
GO
INSERT INTO [Customers]
( [CustomerID],[CompanyName],[ContactName],[ContactTitle],
[Address],[City],[Region],[PostalCode], [Country], [Phone], [Fax])
VALUES
(xxxxx,Empresa ABC Ltda.,Jos da Silva,Gerente,
Rua Riachuelo 80,Santa Maria,Centro,97050-010',China,220-1335',220-1314')
Ao executarmos este comando recebemos a seguinte mensagem:
PAS PROIBIDO !!!
(1 row(s) affected)
Mas, ao invs da mensagem PAS PROIBIDO !!!, ns queremos que a insero do registro seja cancelada
caso o pas seja China ou Indonsia. Para isso vamos alterar a trigger tg_ExcluiChinaIndonsia. Ao
invs da mensagem, vamos dar um ROLLBACK. Como a operao INSERT e a Trigger ocorrem no
contexto de uma transao, conforme descrito no Captulo 10, ao cancelarmos a transao estaremos
cancelando a Trigger e tambm o comando INSERT.
Para alterar uma Trigger, utilizamos o comando ALTER TRIGGER. A sintaxe bsica para este comando
a seguinte:
USE Northwind
GO
ALTER TRIGGER nome_trigger
ON nome_tabela
FOR { INSERT | UPDATE | DELETE }
AS
comando 1
comando 2
comando 3
...
comando n
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
778 00CURSO COMPLETO
Para alterar a Trigger tg_ExcluiChinaIndonsia, utilizamos o seguinte comando:
USE Northwind
GO
ALTER TRIGGER tg_ExcluiChinaIndonsia
ON Customers
FOR INSERT
AS
IF EXISTS(SELECT * FROM inserted WHERE Country IN (China,Indonsia))
BEGIN
PRINT INSERO DO REGISTRO CANCELADA !!!!!!
ROLLBACK
END
ELSE
PRINT PAS PERMITIDO
Agora vamos tentar inserir um cliente em que o campo Country igual a Indonsia. Vamos verificar
se a Trigger foi disparada e depois daremos um SELECT para verificar se a insero do registro foi
realmente cancelada.
Para inserir um registro em que o pas Indonsia, execute o seguinte comando:
USE Northwind
GO
INSERT INTO [Customers]
([CustomerID],[CompanyName],[ContactName],[ContactTitle],
[Address],[City],[Region],[PostalCode], [Country], [Phone], [Fax])
VALUES
(ABC12,Empresa 123 Ltda.,Para Pedro,Gerente,
Rua Riachuelo 444,Porto Alegre,Centro,97051-230',Indonsia,220-
4444',223-1344')
Este comando retorna a seguinte mensagem:
INSERO DO REGISTRO CANCELADA !!!!!!
Vamos conferir se o comando INSERT realmente foi cancelado.
Para verificar se o registro para a Indonsia no foi inserido, execute o seguinte comando:
USE Northwind
GO
SELECT * FROM Customers
WHERE CustomerID=ABC12'
O resultado ser:
(0 row(s) affected)
Isto comprova que o comando INSERT foi cancelado.
Veja que agora temos uma Trigger, que dispara sempre que tentarmos inserir um registro na tabela
Customers. Esta Trigger verifica se o registro que est sendo inserido possui um valor igual a China ou
Indonsia, no campo Country. Caso o registro possua um destes valores no campo Country, a insero
ser cancelada, atravs da utilizao de um comando ROLLBACK. O comando ROLLBACK cancela a
execuo da transao, da qual fazem parte a Trigger e o comando INSERT que disparou a Trigger.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
779 CURSO COMPLETO00
Como o comando INSERT faz parte da transao que est sendo cancelada, o comando INSERT tambm
cancelado e a insero do registro cancelada.
Para detalhes tericos e exemplos prticos sobre Triggers, consulte o Captulo 10.
COMANDOS PARA GERENCIAR LOGINS NO SQL SERVER 2000
Na Tabela A.7 temos alguns comandos para criao de logins.
Tabela A.7 Comandos para adicionar logins.
Sintaxe para o comando sp_grantlogin:
exec sp_grantlogin DOMNIO\nome
ou
exec sp_grantlogin [DOMNIO\nome]
Por exemplo, para adicionarmos o usurio chico, do domnio GROZA, utilizamos o seguinte comando:
exec sp_grantlogin GROZA\chico
ou
exec sp_grantlogin [GROZA\chico]
Algumas observaes sobre o comando sp_grantlogin:
sp_grantlogin no pode ser executado como parte de uma transao definida pelo usurio ou
por um aplicativo que o usurio est utilizando.
Somente membros das roles System Administrators (sysadmin) e Security Administrators
(securityadmin) tm permisso, por padro, para utilizar o comando sp_grantlogin.
Podemos remover a permisso de login para um usurio ou grupo do domnio do Windows, utilizando
o comando sp_revokelogin.
Sintaxe para o comando sp_revokelogin:
exec sp_revokelogin DOMNIO\nome
Comando Utilizado
sp_grantlogin Para adicionar logins do domnio do Windows 2000. Podemos adicionar usurios ou grupos.
Utilizamos o formato DOMNIO\nome.
sp_addlogin Para adicionar novos logins do SQL Server 2000, para o caso de estarmos utilizando o modo de
segurana SQL Server and Windows.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
780 00CURSO COMPLETO
ou
exec sp_revokelogin [DOMNIO\nome]
Por exemplo, para removermos a permisso de login do usurio chico, do domnio GROZA, adicionado
anteriormente, utilizamos o seguinte comando:
exec sp_revokelogin GROZA\chico
ou
exec sp_revokelogin [GROZA\chico]
Algumas observaes sobre o comando sp_revokelogin:
Ao removermos a permisso de login, o usurio no poder mais conectar-se com o servidor
SQL, a menos que um dos grupos aos quais o usurio pertena, tenha permisso de login.
Lembre que o usurio sempre herda as permisses do grupo. Se o usurio pertencer a vrios
grupos que possuem permisso de login e a um nico grupo que tem o login explicitamente
negado, o usurio no poder conectar-se com o servidor SQL. Lembre que negar (deny) tem
precedncia sobre permitir.
Somente membros das roles System Administrators (sysadmin) e Security Administrators
(securityadmin) tm permisso, por padro, para utilizar o comando sp_revokelogin.
Podemos negar, explicitamente, a permisso de login para um usurio ou grupo do domnio do Win-
dows, utilizando o comando sp_denylogin. Neste caso, a conta do usurio ou grupo continua na lista
de logins, porm com o direito de conexo com o servidor SQL, explicitamente negado.
Sintaxe para o comando sp_denylogin:
exec sp_denylogin DOMNIO\nome
ou
exec sp_denylogin [DOMNIO\nome]
Por exemplo, para negarmos, explicitamente, a permisso de login do usurio carlos, do domnio
GROZA, utilizamos o seguinte comando:
exec sp_denylogin GROZA\chico
ou
exec sp_denylogin [GROZA\chico]
Algumas observaes sobre o comando sp_denylogin:
sp_denylogin no pode ser executado como parte de uma transao definida pelo usurio ou
por um aplicativo que o usurio est utilizando.
Somente membros das roles System Administrators (sysadmin) e Security Administrators
(securityadmin) tm permisso, por padro, para utilizar o comando sp_denylogin.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
781 CURSO COMPLETO00
Para permitir que o usurio volte a se conectar, removendo o efeito de sp_denylogin, podemos
utilizar sp_grantlogin.
Agora vamos tratar dos comandos para a adicionar e remover logins do prprio SQL Server, para o caso
de estarmos trabalhando no modo de segurana SQL Server and Windows.
Para adicionar um login do SQL Server 2000, podemos utilizar o comando sp_addlogin.
Sintaxe para o comando sp_addlogin, conforme descrito no Books OnLine:
sp_addlogin [ @loginame = ] login
[ , [ @passwd = ] password ]
[ , [ @defdb = ] database ]
[ , [ @deflanguage = ] language ]
[ , [ @sid = ] sid ]
[ , [ @encryptopt = ] encryption_option ]
Observe que podemos definir uma srie de opes, tais como a senha (passwd), o Banco de Dados
associado com o login (defdb), a linguagem associada com o login (deflanguage), um identificador de
segurana nico (sid) e a definio se a senha deve ou no ser criptografada ao ser armazenada no
servidor SQL Server (encryptopt). Normalmente no especificamos o parmetro sid, com isso o
identificador nico de segurana ser gerado pelo prprio SQL Server 2000, no momento da criao do
login. O sid um nmero do tipo varbinary(16). Os valores possveis para o parmetro encryptopt
esto descritos na Tabela A.8.
Tabela A.8 Valores do parmetro encryptopt.
Por exemplo, para adicionarmos o usurio flavio1, com senha em branco e associado ao Banco de
Dados master, que o Banco de Dados padro quando nenhum outro for definido, utilizamos o
seguinte comando:
exec sp_addlogin flavio1
Agora vamos adicionar um usurio chamado luciano, com uma senha nene e associado ao Banco de
Dados Clientes:
exec sp_addlogin luciano, nene, Clientes
Algumas observaes sobre o comando sp_addlogin:
sp_addlogin no pode ser executado como parte de uma transao definida pelo usurio ou
por um aplicativo que o usurio est utilizando.
Valor Descrio
NULL A senha ser criptografada. Este o valor padro.
skip_encryption A senha j est criptografada. O valor ser gravado sem a necessidade de criptograf-lo novamente.
skip_encryption_old A senha deve ser criptografada de acordo com verses anteriores do SQL Server. O valor ser
gravado sem criptograf-lo novamente. Esta opo normalmente utilizada durante a fase de
migrao de verses anteriores.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
782 00CURSO COMPLETO
Somente membros das roles System Administrators (sysadmin) e Security Administrators
(securityadmin) tm permisso, por padro, para utilizar o comando sp_addlogin.
Em nosso exemplo, descrito na Tabela A.8, estaremos utilizando sp_addlogin, para adicionar os usurios:
sqluser1 e sqluser2.
Para excluirmos um login do SQL Server, podemos utilizar o comando sp_droplogin.
Sintaxe para o comando sp_droplogin:
exec sp_droplogin. nome
Por exemplo, para excluirmos o usurio luciano, anteriormente adicionado, podemos utilizar o
seguinte comando:
exec sp_droplogin. luciano
Algumas observaes sobre o comando sp_droplogin.:
Somente membros das roles System Administrators (sysadmin) e Security Administrators
(securityadmin) tm permisso, por padro, para utilizar o comando sp_droplogin.
Caso o login, que est sendo excludo esteja adicionado como usurio de algum Banco de
Dados, o mesmo no poder ser excludo. Primeiro, precisamos remover o login da lista de
usurios, utilizando o comando sp_drpouser, o qual aprenderemos a utilizar mais adiante.
Os seguintes logins no podero ser excludos:
O login de administrao sa.
Um login que seja dono de um ou mais Bancos de Dados. O dono de qualquer objeto no
SQL Server o login que o criou.
Um login que seja dono de um job no Banco de Dados msdb.
Um login que esteja atualmente conectado com o servidor SQL Server.
O comando sp_droplogin dever checar todos os Bancos de Dados para verificar se o login que
est sendo excludo, no est adicionado lista de usurios com permisso de acesso ao Banco
de Dados. Por isso, para que este comando possa ser executado com sucesso, as seguintes
condies devem ser atendidas:
O usurio logado, que est executando sp_droplogin, deve ter permisso de acesso aos
Bancos de Dados ou;
A conta guest deve estar habilitada a acessar o Banco de Dados.
Ao criarmos novos logins no SQL Server, devemos levar os seguintes fatos em considerao:
Um login no pode conter o caracter barra invertida. No confundir com a barra invertida
utilizada para separar o nome do domnio do nome do usurio.
Logins e senhas podem conter at 128 caracteres, incluindo letras, smbolos e dgitos.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
783 CURSO COMPLETO00
No podemos adicionar um login com o mesmo nome de um login reservado, como por exemplo
sa ou public.
O nome de login no pode conter o valor NULL ou ser uma string vazia .
Exemplo:
O comando a seguir cria uma srie de logins do prprio SQL Server 2000 e tambm garante direito de
login usurios do domnio GROZA, do Windows 2000.
Utilizo sp_grantlogin para adicionar
usurio do domnio do Windows 2000
exec sp_grantlogin GROZA\jose
exec sp_grantlogin GROZA\maria
exec sp_grantlogin GROZA\pedro
exec sp_grantlogin GROZA\paulo
exec sp_grantlogin GROZA\jovina
exec sp_grantlogin GROZA\grupo1
exec sp_grantlogin GROZA\grupo2
Agora utilizo sp_addlogin para adicionar
logins do SQL Server 2000
exec sp_addlogin sqluser1, senha123, pubs
exec sp_addlogin sqluser2, senha123, pubs
Pressione Ctrl+E para executar o comando.
O comando executado com sucesso e a seguinte mensagem exibida:
Granted login access to GROZA\jose.
Granted login access to GROZA\maria.
Granted login access to GROZA\pedro.
Granted login access to GROZA\paulo.
Granted login access to GROZA\jovina.
Granted login access to GROZA\grupo1.
Granted login access to GROZA\grupo2.
New login created.
New login created.
Agora vamos alterar o Banco de Dados padro para os usurios do domnio GROZA. Para alterar o
Banco de Dados padro de um usurio, utilizamos o comando sp_defautldb, com a seguinte sintaxe:
exec sp_defaultdb usurio, Banco de Dados.
Para alterar o Banco de Dados padro para os usurios do domnio GROZA, digite os seguintes comandos:
exec sp_defaultdb GROZA\jose, pubs
exec sp_defaultdb GROZA\maria, pubs
exec sp_defaultdb GROZA\pedro, pubs
exec sp_defaultdb GROZA\paulo, pubs
exec sp_defaultdb GROZA\jovina, pubs
Pressione Ctrl+E para executar o comando.
O comando executado com sucesso e a seguinte mensagem exibida:
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
784 00CURSO COMPLETO
Default database changed.
Default database changed.
Default database changed.
Default database changed.
Default database changed.
Pronto, os logins foram adicionados e o Banco de Dados padro alterado para pubs.
COMANDOS PARA A CRIAO DE ROLES
Para adicionar uma nova role a um Banco de Dados, utilizamos o comando sp_addrole.
Sintaxe para o comando sp_addrole:
exec sp_addrole nome, dono da role
Por exemplo, para adicionar uma Role chamada teste, cujo dono seja o usurio chico, utilize o seguinte
comando:
exec sp_addrole teste, chico
Se no for especificado o parmetro dono, o dono da role ser o usurio dbo database owner.
Algumas observaes sobre o comando sp_addrole:
O nome de uma role pode conter at 128 caracteres, porm no pode conter a barra invertida
e nem pode ser um valor nulo (NULL) ou uma string vazia .
Somente membros das roles sysadmin e das roles db_securityadmin e db_owner tem permisso
para utilizar o comando sp_addrole.
No podemos criar novas roles em nvel de servidor, somente de Banco de Dados.
Para excluir uma role, podemos utilizar o comando sp_droprole.
Sintaxe para o comando sp_droprole:
exec sp_droprole nome
Por exemplo, para excluir a role chamada teste, criada anteriormente, utilize o seguinte comando:
exec sp_droprole teste
Se no for especificado o parmetro dono, o dono da role ser o usurio dbo database owner.
Este material no pode ser utilizado em treinamentos e em Sala de Aula
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
785 CURSO COMPLETO00
Algumas observaes sobre o comando sp_droprole:
Somente membros das roles sysadmin e das roles db_securityadmin e db_owner tm permisso
para utilizar o comando sp_addrole.
No podemos excluir uma role que possui membros. Antes temos que excluir todos os membros
da role, para depois poder exclu-la. Aprenderemos a adicionar e a excluir membros de uma
role, no prximo item.
O comando sp_droprole no pode ser executado no contexto de uma transao definida pelo usurio.
No podemos excluir roles pr-definidas Fixed Server Roles e Fixed Database Roles.
Tambm podemos utilizar o comando sp_helprole para obter informaes sobre as diversas roles em
um Banco de Dados. Considere o exemplo a seguir:
use pubs
exec sp_helprole
Agora vamos a um exemplo prtico.
Exemplo: Utilizando o Query Analyzer, crie as roles indicadas na Tabela A.9.
Tabela A.9 Roles a serem criadas com o Query Analyzer.
Para criar as Roles da Tabela A.9, faa o seguinte:
1. Abra o Query Analyzer e faa a conexo com a instncia SERVIDOR\SRVINST01.
2. Digite os seguintes comandos:
Alterna para o Banco de Dados Exemplo1
use exemplo1
| Utilizo sp_addrole para criar as novas roles.
exec sp_addrole role1
exec sp_addrole role2
exec sp_addrole role3
3. Pressione Ctrl+E para executar estes comandos.
As roles role1, role2 e role3 so adicionadas ao Banco de Dados Exemplo1, da instncia
SERVIDOR\SRVINST01 e a seguinte mensagem exibida:
New role added.
New role added.
New role added.
Nome da role Banco de Dados/Instncia.
role1 Exemplo1 SERVIDOR\SRVINST01
role2 Exemplo1 SERVIDOR\SRVINST01
role3 Exemplo1 SERVIDOR\SRVINST01
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
786 00CURSO COMPLETO
4. Feche o Query Analyzer.
CONCLUSO
Neste anexo, apresentamos uma consolidao dos principais comandos para execuo de consultas e
manipulao de objetos em um Banco de Dados do SQL Server 2000.
Para uma referncia aos elementos para construo e execuo de consultas, acesso o item Acessing
and Changing Relational Data no Books OnLine.
Para uma referncia completa de todos os comandos e funes da linguagem T-SQL, acesse o item
Transact-SQL Reference no Books OnLine.
A seguir alguns links com informaes teis sobre o SQL Server 2000, na Internet:
http://www.microsoft.com/sql
http://support.microsoft.com/sql
http://www.swynk.com
http://www.sqlmag.com
http://msdn.microsoft.com/sqlserver
http://databases.about.com/compute/databases/cs/sqlserver/index.htm
http://www.allexperts.com/software/mssql.shtml
http://www.dblinks.net/Microsoft_Sql_Server/
http://www.sqlsecurity.com
http://www.sqlteam.com
http://www.sql-server-performance.com/
http://sqlserver.superexpert.com/
http://www.sqlwire.com/links.asp
Este material no pode ser utilizado em treinamentos e em Sala de Aula
NDICE REMISSIVO
787 CURSO COMPLETO00
ndice
Remissivo
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
788 00CURSO COMPLETO
%, 24
A
Adminpak.msi, 735
ADO, 622
definio, 647
modelo de objetos, 648
Command, 649
Connection, 649
Record, 649
Recordset, 649
Stream, 649
viso geral, 647
Agendamento de tarefas, 267
jobs, 268
SQL Server agent, 268
iniciar automaticamente, 268
tabela sysjobs, 269
Algol, 3
Alteraes no subscriber, 451
Aplicativos, 622
Armazenamento bsico, 114
drive lgico, 116
mirror Set, 117
partio de boot, 116
partio do Sistema, 116
partio estendida, 116
partio primria, 115
RAID-1, 117
RAID-5, 117
stripe set, 117
stripe set com paridade, 117
volume set, 117
Armazenamento dinmico, 114-117
RAID-0, 118
RAID-1, 118
striped volume, 118
volume do tipo RAID-5, 118
volume espelhado, 118
volume expandido, 118
volume simples, 118
volumes, 117
Arquitetura de Aplicaes, 38
Artigos, 435
filtragem horizontal, 435
filtragem vertical, 435
ASP, 622
definio, 650
exemplo, 650
funcionamento, 652
pginas, 650
Assistentes
backup wizard, 244
configure publishing and
distribution wizard, 444
create database diagram wizard, 604
create database wizard, 128
create index wizard, 203
create login wizard, 316
create procedure wizard, 589
create publication wizard, 450
create view wizard, 530
database maintenance plan
wizard, 359
dts import-export wizard, 385
pull subscription wizard, 482
push subscription wizard, 466
B
Backup devices, 231
criando
com Enterprise Manager, 233
sp_addumpdevice, 235
de disco, 231
de fita, 232
excluindo, 237
com Enterprise Manager, 237
sp_dropdevice, 237
fsicos, 232
lgicos, 232
media set, 252
o que so?, 231
tabela sysdevices, 232-234
Backup, 218
agendamento, 247
BACKUP DATABASE, 251
BACKUP LOG, 254
backup wizard, 244
de arquivos de dados, 227
de filegroups, 227
definio, 218
devices, 231
do banco de dados, 255
do log de transaes, 255
estratgias, 222
exemplos, 227-228-229
fazer com o Enterprise Manager, 239
janela de, 227
mtodos, 225
opes do, 241
append do, 241
check media, 242
eject tape, 242
overwrite, 241
remove inactive entries, 242
schedule, 241
verify backup, 242
will expire, 242
planejamento, 224
tipos de, 226
completo - full backup, 226
diferencial, 227
do log de transaes, 227
Banco de dados relacionais
campos, 6
chave estrangeira, 12
chave primria, 8
diagrama entidade x
relacionamentos, 18-155
entidades e atributos, 6
integridade referencial, 13
propagar atualizaes, 13
propagar excluses, 13
introduo, 3
linguagem SQL, 4
normalizao, 14
primeira forma normal, 14
regra de ouro, 14
segunda forma normal, 15
terceira forma normal, 16
projeto de, 17
campos de uma tabela, 17
estruturao do banco de
dados, 17
relacionamentos
conceito, 10
um para um, 10
um para vrios, 11
vrios para vrios, 12
tabelas, 6
Bancos de dados, 110
create database wizard, 128
crescimento automtico, 133
criando
Enterprise Manager, 123
guia data files, 123
guia general, 123
guia transaction log, 126
elementos do, 110
defaults, 113
diagrams, 111
full text catalogs, 114
roles, 113
stored procedures, 112
tables, 112
user defined data type, 114
user defined functions, 114
users, 113
views, 112
estrutura de armazenamento, 119
arquivos de dados, 119
arquivos de dados primrio, 119
arquivos de dados secundrio, 119
arquivos de log, 119-120
filegroups, 120
C
Cache de dados, 222
Chave primria, 8
composta, 9
conceito, 8
criando uma, 189
ADD CONSTRAINT, 192
Enterprise Manager, 189
definio, 18
exemplos, 9
Checkpoint, 222
Cliente-Servidor, 38
modelo em duas camadas, 38
Clustered index, 194
b-trees, 194
consideraes, 196
criando, 199
column, 201
index name, 201
espao em disco, 196
index node, 194
leaf node, 194
Este material no pode ser utilizado em treinamentos e em Sala de Aula
NDICE REMISSIVO
789 CURSO COMPLETO00
non-leaf-pages, 194
valor-chave, 194
Cobol, 3
Collation, 45
Code Page, 45
Sort Order, 45
Comandos DBCC, 358
DBCC HELP, 382
definio, 370
de manuteno, 371
DBCC DBREINDEX, 371
DBCC DBREPAIR, 372
DBCC INDEXDEFRAG, 372
DBCC SHRINK DATABASE, 372
DBCC SHRINKFILE, 372
DBCC UPTADEUSAGE, 375
de status, 376
DBCC SHOWCONTIG, 376
DBCC USEROPTIONS, 378
de validao, 379
DBCC CHECKDB, 379
DBCC CHECKTABLE, 381
Comandos T-SQL, 136
ADD CONSTRAINT, 192
exemplo, 192
sintaxe, 192
ALTER COLUMN, 180
ALTER DATABASE, 146
exemplo, 148-149
sintaxe, 147
ALTER PROCEDURE, 580
ALTER TABLE, 178
adicionar campos, 178
excluir campos, 179
sintaxe, 178
ALTER TRIGGER, 599
BACKUP DATABASE, 251
differential, 253
exemplo, 251
init, 252
name, 253
password, 253
restart, 253
sintaxe, 251
BACKUP LOG, 254
exemplo, 254
no_log, 255
no_truncate, 255
sintaxe, 254
truncate_only, 255
comandos avanados, 611
inner join, 613
join, 612
left outer join, 613
mltiplos, 615
right outer join, 614
Comentrios, 138-139
CREATE DATABASE, 139
exemplo com Filegroup, 143
exemplo, 141
sintaxe, 139
sintaxe simplificada, 140
CREATE INDEX, 205
exemplo, 206
sintaxe, 205
with drop existing, 206
with fillfactor, 209
with ignore_dup_key, 206
CREATE PROCEDURE, 572
CREATE TABLE, 172
exemplo, 173
sintaxe, 172
CREATE TRIGGER, 597
CREATE VIEW, 528-561
DBCC CHECKDB, 379
DBCC CHECKTABLE, 381
DBCC DBREINDEX, 371
DBCC DBREPAIR, 372
DBCC HELP, 382
DBCC INDEXDEFRAG, 372
DBCC SHOWCONTIG, 376
DBCC SHRINK DATABASE, 372
DBCC SHRINKFILE, 372
DBCC UPTADEUSAGE, 375
DBCC USEROPTIONS, 378
DELETE PROCEDURE, 586
DISABLE TRIGGER, 610
DROP COLUMN, 180
DROP DATABASE, 149
exemplo, 150
sintaxe, 150
DROP INDEX, 213
DROP PROCEDURE, 586
DROP TRIGGER, 602
DROP TABLE, 188
ENABLE TRIGGER, 610
GO, 148
GRANT, 343
RESTORE DATABASE, 261
exemplo, 262
move, 263
norecovery, 262
password, 262
recovery, 262
restart, 262
sintaxe, 261
stats, 262
RESTORE LOG, 261
exemplo, 263
sintaxe, 261
stop at, 263
REVOKE, 344
subconsultas, 616
USE, 138
Comrcio eletrnico, 33
B2B, 34
B2C, 34
complexidades, 36
CRM, 35-36
e-procurement, 37
exemplo, 36
transao, 37
Configuraes SQL Server, 101
guia active directory, 108
guia connections, 105
guia database settings, 105
guia general, 101
guia memory, 102
guia processor, 103
guia replication, 107
guia security, 104
guia server settings, 105
Constraints, 504
CHECK CONSTRAINT, 524
column constraint, 511
consideraes, 512
criando, 512
ADD CONSTRAINT, 513
ALTER TABLE, 512
CREATE TABLE, 512
DROP CONSTRAINT, 513
definio, 511
desabilitando, 524
excluir, 524
exemplos, 513
check, 515
default, 514
foreign key, 519
not null, 513
primary key, 517
unique, 519
NOCHECK CONSTRAINT, 524
table constraint, 511
tipos de, 511
CHECK, 511
DEFAULT, 511
FOREIGN KEY, 511
PRIMARY KEY, 511
UNIQUE, 511
verificao dos dados, 523
WITH NOCHECK, 523
Conta guest-convidado, 303
Covering querys, 214
CSS, 746
folha de estilo, 746
Cursores, 672
definio, 672
localizao, 673
localizao do, 674
adUseCliente, 674
adUseNone, 674
adUseServer, 674
record pointer, 672
registro corrente, 672
tipos, 673
adOpenDynamic, 673
adOpenForwardOnly, 673
adOpenKeyset, 673
adOpenStatic, 673
D
DAO, 635
Data transformation services
ver DTS, 358
DB2, 3
DBA, 43
Defaults, 504
Desastres naturais, 223
Desempenho, 407
bottlenecks, 408
memria RAM, 408
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
790 00CURSO COMPLETO
placa de rede, 408
processador, 408
sistema de I/O, 408
console Desempenho, 408
adicionando contadores, 409
apresentao do, 409
contador, 408
instncia, 408
objetos, 408
exemplo, 413
gargalo do sistema, 408
monitorando, 407
objetos do SQL Server, 412
access methods, 412
backup device, 412
buffer manager, 412
buffer partition, 412
cache manager, 412
databases, 413
general statistics, 413
latches, 413
locks, 413
memory manager, 413
replication agents, 413
replication distribution, 413
replication logreader, 413
replication merge, 413
replication snapshot, 413
SQL statistics, 413
user settable, 413
principais contadores, 411
memria, 412
processador, 411
Diagramas, 604
create database diagram wizard, 604
criando, 604
salvando, 605
Domain user accounts, 293
DTS, 358
alterando o script, 403-405
coluna Transform, 401
guia transformations, 402
transformando dados, 396
VBScript, 403
E
Enterprise Manager, 97
Iniciando, 97
Navegando, 98
Registrando servidores, 99
Exibio
Detalhes, 109
cones grandes, 109
cones pequenos, 109
Listagem, 109
Exportando dados, 391
agendamento, 393
arquivos de texto, 392
Dbase III, IV e V, 391
dts import-export wizard, 391
Fox Pro, 392
jobs de, 393
Microsoft Access, 391
Microsoft Excel, 392
ORACLE, 392
pacote DTS, 393
Paradox 3, 4 e 5, 392
para o Dbase, 394
para o Excel, 391
run immediately, 393
salvando opes de, 394
Visual Fox Pro, 392
F
Ferramentas do Cliente, 58
Filegroups, 120
Default, 121
Primary, 120
User defined, 121
FILL FACTOR, 208
valor default, 209
valores, 209
FTP, 47
Funes
Date, 650
Time, 650
Year, 22
Fundamentos, 1
Gerenciador de Tarefas, 76
global constraints, 165
Grupos globais, 298
Grupos locais, 298
Grupos universais, 298
H-I
HTML, 622
HTTP, 700
acessando dados via, 741
configurando o acesso, 736
IIS Virtual Directory Management,
736
IIS, 628
formao de endereos, 633
pastas virtuais, 630
Importando dados, 383
agendamento, 388
arquivos de texto, 386
Dbase III, IV e V, 385
dts import-export wizard, 385
Fox Pro, 386
jobs de, 388
Microsoft Access, 385
Microsoft Excel, 386
ORACLE, 386
pacote DTS, 388
Paradox 3, 4 e 5, 386
run immediately, 388
salvando opes de, 389
tabelas do Access, 385
Visual Fox Pro, 386
ndices, 193
clustered index, 194
composto, 198
conceito, 193
consideraes, 206-207
excluindo, 212
FILL FACTOR, 208
WITH FILLFACTOR, 209
index uniqueness, 198-199
inex key, 198
recomendaes, 213
table scan, 193
Integridade, 504
definio, 505
definida pelo usurio, 510
estado inconsistente, 505
tipos,
de domnio, 509
de entidade, 509
referencial, 510
Internet Explorer, 42
Internet, 223
J
Job, 250
agendamento, 250-273
criao de, 269
guia General, 271
guia Schedules, 273
guia Steps, 271
desabilitando, 274
detalhes de execuo, 275
execuo, 251
executando manualmente, 274
habilitando, 274
histrico de execuo, 275
L
Linguagem SQL
exemplos, 21-22-23-25-26-27-28
instruo DELETE, 28
instruo INSERT, 27
instruo UPDATE, 26
instruo SELECT, 20
AS, 23
BETWEEN, 23
Caracter %, 24
Clusula WHERE, 20
GROUP BY, 21
HAVING, 21
IN, 23
LIKE, 23-24
ORDER BY, 21
JOIN, 24
INNER JOIN, 25
introduo, 19
linked server, 490
Linux, 3
Local user accounts, 293
Lock de registros, 676
tipos, 676
adLockBatchOptimistic, 676
adLockOptimistic, 676
adLockPessimistic, 676
adLockReadOnly, 676
adLockUnspecified, 676
Log de transaes, 219
Este material no pode ser utilizado em treinamentos e em Sala de Aula
NDICE REMISSIVO
791 CURSO COMPLETO00
checkpoint, 222
conceito, 219
funcionamento, 222
Logins,304
banco de dados padro, 315
consideraes, 314
criando, 306
com o Enterprise Manager, 306
create login wizard, 316
negando o acesso, 307
permitindo acesso, 307
sp_addlogin, 310
sp_grantlogin, 310
Log shipping, 360
stand by server, 360
M
Mainframe, 3
Terminal Verde, 3
Microsoft Access, 490
anexando tabelas, 722
desvantagens, 722
excluindo vnculos, 726
exemplo, 722
vantagens, 722
como subscriber, 490
consultas baseadas no
SQL Server, 726
exemplo, 726
sourceconnectstr, 726
elementos bsicos, 701
consultas, 703
formulrios, 705
macros, 710
mdulos, 712
pginas, 708
relatrios, 706
tabelas, 702
file DSN, 714
importando dados, 713
desvantagens, 713
exemplo, 719
vantagens, 713
introduo, 701
machine DSN, 714
MMC, 79
Console, 82
Criando personalizados, 82
Snap-ins, 79
Modelo em duas camadas, 38
Cliente, 39
exemplo, 39
funes
apresentao, 40
banco de dados, 40
lgica do negcio, 40
problemas do, 40
servidor, 39
TCO, 40
Modelo em quatro camadas, 42
apresentao, 42
cliente, 42
dados, 43
desempenho, questes de, 43
lgica, 42
Modelo em trs camadas, 40
apresentao, 41
dados, 41
lgica, 41
problemas do, 41
servidor de aplicaes, 40
Modelos de aplicaes, 623
cliente/servidor, 623
consideraes, 628
duas camadas, 624
n camadas, 626
TCO, 625
trs camadas, 625
definio, 626
servidor de aplicaes, 625
MySQL, 3
N
Natural Adabas, 3
Net start, 91
Net stop, 91
Netscape Navigator, 42
Nonclustered index, 196
consideraes, 198
heap, 197
indicao, 197
ordem dos registros, 196
row locator, 197
Objeto connection, 653
conexes, 653
com ODBC, 653
com OLE DB ,655
exemplos, 655-658-662
consideraes, 663
definio, 653
eventos, 655
begintranscomplete, 655
committranscomplete, 655
connectcomplete, 655
disconnect, 655
executecomplete, 655
infomessge, 655
rollbacktranscomplete, 655
willconnect, 655
willexecute, 655
mtodos, 654
begintrans, 654
cancel, 654
close, 654
committrans, 654
execute, 654
open, 654
openschema, 654
rollbacktrans, 654
propriedades, 654
attributes, 654
commandtimeout, 654
connectionstring, 654
connectiontimeout, 654
cursorlocation, 654
defaultdatabase, 655
errors, 655
isolationlevel, 655
mode, 655
properties, 655
provider, 655
state, 655
version, 655
O
Objeto recordset, 671
definio, 671
mtodos, 678
addnew, 679
cancel, 679
cancelbatch, 679
cancelupdate, 679
clone, 679
close, 679
delete, 679
find, 679
getrows, 679
move, 679
movefirst, 679
movelast, 679
movenext, 679
moveprevious, 679
open, 679
requery, 679
resync, 679
save, 679
update, 679
propriedades, 677
absolutepage, 677
absoluteposition, 677
activecommand, 677
BOF, 678
bookmark, 678
cachesize, 678
cursorlocation, 678
cursortype, 678
editmode, 678
EOF, 678
filter, 678
locktype, 678
maxrecords, 678
pagecount, 678
pagesize, 678
recordcount, 678
sort, 678
source, 678
state, 678
ODBC, 622
criando fontes, 636
para Access, 636
para SQL Server, 640
descrio, 635
driver, 635
file DSN, 637
fontes ODBC, 636
gerenciador ODBC, 636
string de conexo, 728
System DSN, 637
user DSN, 637
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
792 00CURSO COMPLETO
OLAP, 431
OLE/DB, 358
consumidor de dados, 646
definio, 645
fonte de dados, 646
provider, 646
provider for SQL Server, 385
viso geral, 646
OLTP, 431
Operador set, 664
Oracle, 3
P
Permisso de acesso, 326
a objetos, 337
configurando, 326-327
com o Enterprise Manager, 327
sp_grantdbaccess, 330
dbo, 326
guest, 326
revogando permisses, 332
sp_revokedbaccess, 332
users, 326
Permisses a objetos, 347
atribuindo, 348
delete, 347
DENY, 352
execute, 347
GRANT, 350
insert, 347
recomendaes, 353
references (dri), 347
REVOKE, 351
select, 347
update, 347
Permisses de banco de dados, 339
atribuindo, 340-341
backup DB, 339
backup log, 339
consideraes, 340
create default, 339
create function, 339
create rule, 339
create SP, 339
create table, 339
create view, 339
GRANT, 343
retirando, 344
REVOKE, 344
Permisses de servidor, 337
configurando, 338
PL1, 3
Plano de execuo, 194
Plano de manuteno, 358
alterar o, 368
criando um, 360
database maintenance plan
wizard, 359
definio, 359
jobs do, 359
tarefas, 359
agendamento das, 361
histrico, 367
jobs, 361
Poltica de segurana, 223
Pool de conexes, 664
Profiler, 358
definio, 415
exemplo, 417
categorias de eventos, 418
criar trace, 417
descartar eventos, 422
filtros, 420
gerando atividades, 421
gerar script, 422
localizar evento, 422
modelo do trace, 417
observar dados, 422
reiniciar o trace, 422
salvar resultados, 422
modelos de trace, 415
SQLProfilerSP_Counts.tdf, 415
SQLProfilerStandard.tdf, 415
SQLProfilerTSQL.tdf, 416
SQLProfilerTSQL_duration.tdf, 416
SQLProfilerTSQL_grouped.tdf, 416
SQLProfilerTSQL_replay.tdf, 416
SQLProfilerTSQL_SPs.tdf, 416
SQLProfilerTunning.tdf, 416
trace, 415
utilizaes prticas, 416
Propriedades dos campos, 165
collation, 166
default value, 165
description, 165
formula, 166
identity increment, 166
identity seed, 166
identity, 166
indexed, 166
is rowguid, 166
precision, 166
scale, 166
Publicaes, 437
create publication wizard, 450
criando, 448
definindo artigos, 452
definindo filtros, 458-459
exemplo, 449
subscries annimas, 461
transformando dados, 452
PWS, 735
Q-R
Query Analyzer, 135
iniciando, 135
object browser, 136
RDS, 635
Redes locais, 223
Replicao, 426
agentes de replicao, 441
distribution agent, 442
log reader agent, 443
merge agent, 443
snapshot agent, 442
assistente de replicao, 444
benefcios da, 431
configurando, 443
excluindo elementos, 487
exemplo, 488
publicao, 487
subscrio, 487
exemplo, , 427-428, 444
autorizando subscribers, 446
fatores da, 430
autonomia, 431
conflitos de atualizao, 431
latncia, 430
velocidade dos links, 431
introduo, 426
modelo de, 432
artigos, 435
distributor, 433
publicaes, 437
publisher, 433
subscriber, 434
outros subscribers, 489
exemplo, 490
IBM DB2-6000, 489
IBM DB2-AS400, 489
IBM DB2-MVS, 489
IBM DB2-NT, 489
Microsoft Access, 489
ODBC, 490
OLE DB, 490
ORACLE, 489
replication monitor, 447
tipos de, 439
merge replication, 441
snapshot replication, 440
transactional replication, 440
utilizaes, 431
Restore, 218
com o Enterprise Manager, 257
database non operacional, 260
database operacional, 260
definio, 218
exemplo completo, 263
exemplos - estratgias, 228-229
point in time, 259
RESTORE DATABASE, 261
tempo de, 224
Roles, 285
adicionando usurios, 333
com o Enterprise Manager, 333
sp_addsrvrolemember, 335
criando, 322
com o Enterprise Manager, 322
sp_addrole, 323
definio de, 285
de servidor, 309
database creators, 309
disk administrators, 309
security administrators, 309
server administrators, 309
system administrators, 309
diskadmin, 237
excluindo, 324
excluindo usurios, 336
fixed database roles, 321
Este material no pode ser utilizado em treinamentos e em Sala de Aula
NDICE REMISSIVO
793 CURSO COMPLETO00
db_accessadmin, 321
db_backupoperator, 321
db_datareader, 321
db_datawriter, 321
db_ddladmin, 321
db_denydatareader, 321
db_denydatawriter, 321
db_owner, 321
db_securityadmin, 321
fixed server roles, 320
dbcreator, 321
diskadmin, 321
processadmin, 321
securityadmin, 321
serveradmin, 321
setupadmin, 321
sysadmin, 321
public, 322
sp_droprole, 324
sysadmin, 237
Rules, 504
S
Sala cofre, 223
Segurana, 280
elementos da, 281
logins, 281
administrador, 283
standard, 283
Windows user, 283
modos de segurana, 281
alterando o, 284
SQLS Server e Windows, 282
Windows only, 282
permisso de acesso, 286
banco de dados, 286
objetos, 287
resumo do modelo, 288
roles, 285
sa, 283
sesso, 282
Segurana fsica, 223
Servios
comando NET, 91
net start, 91
net stop, 91
configurao, 85
guia dependncias, 89
guia geral, 87
guia logon, 87
guia recuperao, 87
SQL Server 2000
bancos de dados
master, 109
model, 110
msdb, 110
northwind, 110
pubs, 110
tempdb, 110
edies, 51
developer edition, 51
enterprise edition, 51
enterprise evaluation edition, 51
personal edition, 51
standard edition, 51
Windows CE Edition, 51
ferramentas
console servios, 85
service manager, 90
instalao, 50
collation settings, 62
conta de inicializao, 59
criando outra instncia, 73
no Windows 2000
Professional, 64
no Windows 2000 Server, 53
Opo custom, 58
Opo minimum, 58
opo typical, 58
pastas de instalao, 59
requisitos de hardware, 52
requisitos de software, 52
novidades, 44
assistente de cpia, 47
backup, 46
collations, 45
consultas distribudas, 46
documentao, 48
DTS, 47
funes definidas pelo usurio,
44
ndices em views, 45
ndices, 46
integridade referencial, 45
kerberos, 46
log de transaes, 46
mltiplas instncias, 45
novos tipos de dados, 45
profiler, 46
query analyzer, 47
restore, 46
suporte a XML, 44
suporte de memria, 46
segurana, 280
servios, 75
continuar, 86
iniciar, 86
Microsoft Search, 78
MSDTC, 78
parar, 86
pausar, 86
reiniciar, 86
SQL Server Agent, 77
SQL Server, 76
Stored procedure
sp_addlogin, 310-312
sintaxe, 312
sp_addrole, 323
sp_addrolemember, 336
sp_addsrvrolemember, 335
sp_addtype, 185
sp_addumpdevice, 235
exemplo, 235
sintaxe, 235
sp_dboption, 239
sp_defaultdb, 315
sp_denylogin, 312
sp_dropdevice, 237
delfile, 237
sp_droplogin, 313
sp_droprole, 324
sp_droprolemember, 336
sp_dropsrvrolemember, 336
sp_droptype, 186
sp_grantdbaccess, 330
sp_grantlogin, 310
sp_help, 211
sp_helpconstraint, 515
sp_helpindex,
sp_helprole, 325
sp_helptext, 593
sp_revokedbaccess, 332
sp_revokelogin, 311
sp_spaceused, 211
sp_stored_procedures, 594
Stored procedures, 568
alterando, 580
ALTER PROCEDURE, 580
consideraes, 572
criando, 572
create procedure, 572
create procedure wizard, 589
exemplo, 573-589
criptografando, 573
DECLARE, 580
definio, 569
DELETE PROCEDURE, 586
DROP PROCEDURE, 586
estruturas de deciso, 578
IF...ELSE, 578
IF...ELSE...ELSE, 580
WHILE...CONTINUE, 582
excees, 572
excluindo, 586
executando, 573
parmetros de entrada, 574
parmetros de sada, 585
nmero mximo, 585
OUTPUT, 585
passando parmetros, 575
permisses, 588
renomear, 588
SET, 580
sp_helptrigger, 610
tipos de, 571
vantagens, 570
variveis locais, 580
verificando, 593
sintaxe, 571, 587
sp_help, 593
sp_helptext, 593
sp_stored_procedures, 594
Subscries, 438
agentes, 471
agendamento, 475
e-mail operator, 476
executando, 474
histrico, 473
notificaes, 476
configurando, 465
desabilitando, 464
Este material no pode ser utilizado em treinamentos e em Sala de Aula
SQL SERVER 2000 ADMINISTRAO E DESENVOLVIMENTO CURSO COMPLETO
794 00CURSO COMPLETO
habilitando, 463
pull subscriptions, 480
agendamento, 483
agente de replicao, 439
analisando a, 486
criando, 480
exemplo, 480
pull subscription wizard, 482
push subscription, 438
agente de replicao, 439
exemplo, 466
push subscription wizard, 466
Sybase, 3
Sysjobs, 269
T
Tabelas, 159
alterao, 177
excluir campos, 177
alterando a estrutura, 164
alterar propriedades, 177
incluir campos, 177
criao, 159
allow nulls, 160
column name, 160
data type, 160
length, 160
excluir, 188
exemplo, 159-164
limites, 175
propriedades dos campos, 160
salvando, 162
Tipos de dados
bigint, 45-155
binary(n), 155
bit, 155
char(n), 155
cursor, 156
datetime, 156
definidos pelo usurio, 180
criando, 181
excluindo, 186
verificando o uso, 184
dicas para definir, 157
float(n), 156
image, 156
integer ou int, 156
money, 156
nchar(n), 156
ntext, 156
nvarchar, 156
real, 156
smalldatetime, 156
smallint, 156
smallmoney, 156
sql_variant, 45-156
table, 45-156
tamanho fixo, 158
tamanho varivel, 158
text, 157
timestamp, 157
tinyint, 157
unique-identifier, 157
varbinary, 157
varchar(n), 157
Transaes distribudas, 431
Transaes, 219
ACID, 220
atomicidade, 221
commit, 220
consistncia, 221
definio, 219-220
durabilidade, 221
isolao, 221
nveis de isolamento, 221
read committed, 221
read uncommitted, 221
repeatable read, 221
serializable, 221
roll back, 220
Triggers, 568
ALTER TRIGGER, 599
atualizao em cascata, 595
conceito, 595
criando, 597
CREATE TRIGGER, 597
exemplo, 598-601-607
deleted table, 597
desabilitando, 610
DISABLE TRIGGER, 610
DROP TRIGGER, 602
ENABLE TRIGGER, 610
excluso em cascata, 595
habilitando, 610
inserted table, 597
regras de negcios, 595
sp_helptext, 609
sp_helptrigger, 610
tipos, 596
after, 596
delete, 596
insert, 596
instead of, 596
update, 596
Truncate log on checkpoint, 239-264
Two-phase commit protocol, 441
U
UDA, 622-635
Ultradev, 648
URL, 735
caracteres especiais, 743
Users,
V
Valor da informao, 224
VBScript, 403
Views, 504
alterando, 535
aninhar, 540
CREATE VIEW, 528-561
create view wizard, 530
criando, 528-530
criptografando, 561
definio, 528
diagram pane, 539
executando, 528
exemplo, 531-537-548-553
grid pane, 540
limitaes, 530
permisses, 536
por que utilizar?, 529
renomeando, 536
results pane, 540
SQL pane, 540
tipos de, 529
Visual Interdev, 648
Visualizador de objetos, 47
W
Windows 2000,
active directory, 289
rvore de domnios, 291
definio, 290
espao de nome, 291
unidades organizacionais, 292
contas de usurios, 292
built-in accounts, 303
criando, 294
definio, 292-293
nome completo, 295
nome de logon, 295
padro de nome, 293
DNS, 290
domain controler, 289
domnios, 289
grupos, 296
adicionando usurios ao, 300
built-in groups, 303
consideraes, 297
criando, 299
definio, 297
escopo de, 298
funo, 297
tipos de, 298
polticas de segurana, 289
relaes de confiana, 291
segurana no, 280-288
servidor membro, 289
workgroups, 289
Windows NT 4.0, 735
X
XML, 37
domnio, 746
histria, 744
introduo ao, 744
mais caractersticas, 746
tags, 746
Este material no pode ser utilizado em treinamentos e em Sala de Aula

Vous aimerez peut-être aussi