Sei sulla pagina 1di 1018

proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!

SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO


II0000Curso Completo
Copyright 2005 by Jlio Battisti
Copyright 2005 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 2005 Administrao e Desenvolvimento Curso Completo
Jlio Battisti
ISBN: 85-7323-249-8
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SUMRIO
Curso Completo0000III
CRDITOS
PRODUO
Alberto Baptista Garcia, Carlos Alberto S Ferreira,
Fagner Silva Henrique, Ingo Bertelli e Marcio Teixeira de Mello
REVISO
Sandro Gomes
ARTE E DIAGRAMAO
Ingo Bertelli
SUPERVISOR DE PRODUO
Carlos Alberto S Ferreira
CAPA
Ingo Bertelli
EDITORA DE PRODUO
Gisella Narcisi
EDITOR RESPONSVEL
Ricardo Reinprecht
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
uma cpia para uso pessoal. 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 as Leis 5988, 9118 e 9610. 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, O QUE CRIME, COM PENA
PREVISTA DE 2 A 5 ANOS DE CADEIA.
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

proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!

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.


proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
IV0000Curso Completo
AGRADECIMENTOS
Este livro tem um sentido bastante especial. Em pocas em que o mercado livreiro no anda dos mais
animados, lanar um livro deste porte sempre um desafio. Um desafio tanto em termos de tempo
investido pelo autor, quanto em termos do esforo de investimento e divulgao que tem que ser feito
pela Editora. Por isso que gostaria de iniciar meus agradecimentos, com uma meno especial ao
amigo Ricardo, presidente da Axcel Books, o qual, mesmo em uma poca de mercados no muito
animados, aposta em mais um trabalho deste autor.
Em seguida a equipe da Axcel que mais uma vez aposta em um trabalho de minha autoria, passando
pelos colegas de produo, edio, arte grfica, reviso, enfim, uma equipe trabalhando muito para
que mais este livro chegue s mos do amigo leitor. Eu poderia dizer, sem medo de errar, que hoje eu e
a Axcel no temos mais uma relao Autor Editora, mas sim uma relao de parceria, buscando
sempre solues satisfatrias para o autor, para a Editora mas, principalmente, para o amigo leitor.
minha esposa Lu, pelo carinho, amor, dedicao, companheirismo e tolerncia. Gostaria de deixar
registrado que aprendi muito e continuo aprendendo contigo. Tu s a pessoa que est sempre ao meu
lado, me apoiando e me ensinando. Em 2004, quando passastes por momentos delicados em relao a
tua sade, demonstrastes uma coragem inimaginvel. Mais uma vez me ensinastes como so pequenos
os desafios materiais e de trabalho do dia-a-dia, diante de problemas maiores, como os de sade. Tenho
certeza de que aps a tua cirurgia estamos ainda mais unidos, mais ligados nesta e em muitas outras
vidas. Que Deus te ilumine e ajude a realizar todos os teus sonhos. Um grande sonho j foi realizado,
com a tua formatura no dia 10-01-2005. Formatura que, em tantos momentos de incerteza, por questes
de sade, no sabamos ser iria acontecer. Mas o Grande Arquiteto dos Mundos assim o quis e, com a sua
bno e com o teu esforo, conseguistes vencer mais esta batalha. s uma guerreira de coragem mpar.
Cada vez admiro mais a tua coragem diante dos obstculos da vida. Sei que no foram e no esto sendo
fceis os momentos que passastes aps a tua cirurgia para recuperao da tua sade. Que Deus te d toda
a sade do mundo para que possamos criar nossos filhos que em breve viro a este mundo.
dona Lucy, minha me, por sempre me apoiar e ser uma grande admiradora e incentivadora de tudo
o que fao. Por ter me dado como primeiro presente um livro, despertando em mim uma paixo
ardente de leitor, daqueles que sempre compra mais livros do que realmente pode ler. Por ter muito
orgulho do meu trabalho e por entender as vezes em que fico algumas semanas sem poder visit-la em
minha terra natal, o nosso bom e velho Boqueiro do Leo.
Ao meu Pai, em memria, pelo jeito simples e pacato, que me ensinou a parar e refletir nos momentos
difceis. Aos meus irmos agradeo pelos bons momentos que juntos passamos.
Aos leitores que leram os outros livros de minha autoria e sempre entram em contato via e-mail, para solucionar
dvidas, enviar sugestes, crticas e elogios. Agradeo a todos. Este retorno muito importante, um grande
motivador. Aos leitores que enviam e-mail com dvidas e sugestes, a todos o meu mais sincero agradecimento.
A Deus por nos dar a inteligncia, a capacidade de discernimento e a determinao na busca de cada
vez fazer as coisas de uma maneira melhor e mais simples, com o objetivo de ajudar mais e mais
pessoas. E que o Grande Criador e Arquiteto de tudo o que existe permita-me ainda muitos trabalhos,
permita-me sempre ajudar mais e mais pessoas a alcanar seus objetivos e a aprender um pouco mais
sobre cada um dos assuntos sobre os quais escrevo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SUMRIO
Curso Completo0000V
SOBRE O AUTOR
Jlio Battisti profissional certificado da Microsoft, tendo sido aprovado em 31 exames da Microsoft,
com os quais obteve certificaes como: MCP, MCP+I, MCSE 2000 e 2003, MCSE+I, MCDBA 2000,
MCSA 2000 e 2003, MCSD e MVP. Tcnico da Receita Federal, na Delegacia de Santa Maria RS, e
autor de dez livros, todos publicados pela Axcel Books. Tambm autor de artigos sobre TI, Carreira,
Trabalho, Vida e Felicidade, publicados no site do autor: http://www.juliobattisti.com.br. Atua como
instrutor de cursos de informtica tanto na Secretaria da Receita Federal como para turmas em
Universidades e outros cursos. Colunista de diversos sites da Internet e da revista Developers Maga-
zine. Voc pode entrar em contato com o autor pelo e-mail: webmaster@juliobattisti.com.br.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
VI0000Curso Completo
Sumrio
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 .............................................................................................................................. 6
Entidades e Atributos ..................................................................................................................................... 6
O Conceito de Chave Primria ...................................................................................................................... 9
Relacionamentos Entre Tabelas ........................................................................................................................ 11
Relacionamento do Tipo Um para Um........................................................................................................ 12
Relacionamento do Tipo Um para Vrios .................................................................................................... 13
Relacionamento do Tipo Vrios para Vrios ................................................................................................ 15
Integridade Referencial ................................................................................................................................ 15
Normalizao de Tabelas ................................................................................................................................... 16
Primeira Forma Normal ................................................................................................................................ 17
Segunda Forma Normal ................................................................................................................................ 17
Terceira Forma Normal ................................................................................................................................. 18
Passos Para Projetar um Banco de Dados.......................................................................................................... 19
Fundamentos em: Noes Bsicas da Linguagem
SQL Structured Query Language......................................................................................................................... 22
Introduo ........................................................................................................................................................ 22
A Instruo SELECT .......................................................................................................................................... 23
A Instruo UPDATE ......................................................................................................................................... 29
A Instruo INSERT ........................................................................................................................................... 31
A Instruo DELETE .......................................................................................................................................... 31
Concluso ......................................................................................................................................................... 32
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 ....................................................................... 35
Introduo ........................................................................................................................................................ 36
Fundamentos em: Modelo de Aplicaes
Para a Era do Comrcio Eletrnico ........................................................................................................................ 37
Fundamentos em: Arquitetura de Aplicaes ....................................................................................................... 43
A Complexidade de Gerenciamento do Modelo
Cliente/Servidor e Aplicaes de Duas Camadas .............................................................................................. 43
Aplicaes em Duas Camadas ........................................................................................................................... 44
Aplicaes em Trs Camadas ............................................................................................................................ 45
Aplicaes em Quatro Camadas ....................................................................................................................... 46
Questes a Considerarmos nos
Modelos de Trs ou Mais Camadas ................................................................................................................... 48
Fundamentos em: As Principais Novidades e
Melhoramentos do Microsoft SQL Server 2005 .................................................................................................... 48
Novidades e Melhorias do Banco de Dados...................................................................................................... 49
Novidades no Desenvolvimento de Aplicaes ........................................................................................... 49
Novidades no Gerenciamento da Mquina de Banco de Dados do SQL Server 2005................................. 51
Novidades que melhoram o tempo de UpTime do SQL Server 2005 .......................................................... 52
Outras Novidades da Mquina de Banco de Dados do SQL Server 2005. ................................................... 53
Novidades e Melhorias das Ferramentas
e Utilitrios de Administrao .......................................................................................................................... 53
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SUMRIO
Curso Completo0000VII
Fundamentos em: Instalao do Microsoft SQL Server 2005 ............................................................................... 55
As Diferentes Edies do Microsft SQL Server 2005 ..................................................................................... 55
Requisitos de Hardware e Software Para a Instalao do SQL Server 2005 ...................................................... 56
Recomendaes de segurana, antes Instalao do SQL Server 2005 .............................................................. 58
Nomeando as Instncias do SQL Server 2005 .................................................................................................. 59
Instalando o SQL Server 2005 no Windows Server 2003 ................................................................................. 60
A Estrutura de Pastas e Arquivos do SQL Server 2005 ...................................................................................... 69
Criando uma Segunda Instncia do SQL Server Developer Edition................................................................. 70
Fazendo o Upgrade do SQL Server 2000 Para o SQL Server 2005 .................................................................... 75
Fundamentos em: Servios Disponveis com o SQL Server 2005 ......................................................................... 80
O Servio SQL Server ..................................................................................................................................... 81
O Servio SQL Server Agent........................................................................................................................... 83
O Servio Microsoft Distributed Transaction Cordinator MSDTC ................................................................ 83
O Servio Microsoft Search ............................................................................................................................... 84
O Servio Microsoft Report Services ................................................................................................................. 84
O Servio Analysis Services ............................................................................................................................... 84
Fundamentos em: Gerenciamento dos Servios do SQL Server 2005................................................................... 85
Um Pequeno Parnteses Para Aprender Sobre MMC e Snap-ins ...................................................................... 85
Utilizando o Snap-in Service Manager O Console Servios........................................................................... 91
Utilizando o Console SQL Computer Manager, que vem com o SQL Server 2005 ......................................... 95
Concluso ......................................................................................................................................................... 97
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 .................................... 101
Introduo ...................................................................................................................................................... 102
Fundamentos em: Utilizao do SQL Server Management Studio ..................................................................... 103
Fundamentos em: Armazenamento Bsico x Armazenamento Dinmico ......................................................... 121
Armazenamento Bsico e Armazenamento Dinmico................................................................................... 122
Fundamentos em: A Estrutura de Armazenamento dos Bancos de Dados no SQL Server 2005 ........................ 126
Entendendo o Conceito de Filegroups ........................................................................................................... 127
Fundamentos em: Criar Bancos de Dados no SQL Server 2005 com o SQL Server Management Studio .......... 130
Verificao dos Arquivos Criados Para o Exemplo1 e para o Exemplo2 ........................................................ 138
Fundamentos em: Entender e Utilizar Comandos T-SQL ................................................................................... 139
Fundamentos em: Criao de Bancos de Dados Usando Comandos T-SQL ....................................................... 143
Fundamentos em: Alterao de Bancos de Dados Usando Comandos T-SQL .................................................... 150
Fundamentos em: Excluso de Bancos de Dados com o Query Analyzer e com o Enterprise Manager ............ 153
Concluso ....................................................................................................................................................... 155
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 .................................................. 157
Introduo ...................................................................................................................................................... 158
Fundamentos em: Projeto de Banco de Dados e Tipos de Dados do SQL Server 2005....................................... 159
Algumas Dicas Para Definir os Tipos de Dados Para Uma Coluna ................................................................. 162
Fundamentos em: Criao de Tabelas com o SQL Server Management Studio.................................................. 163
Fundamentos em: Criao de Tabelas Usando Comandos T-SQL ...................................................................... 177
Fundamentos em: Alterar a Estrutura de uma Tabela com o SQL Server Management Studio .......................... 182
Fundamentos em: Alterar a Estrutura de uma Tabela com Comandos T-SQL .................................................... 183
Fundamentos em: Tipos de Dados Definidos Pelo Usurio ................................................................................ 185
Criando um Tipo de Dados Definido Pelo Usurio com o SQL Server Management Studio ........................ 186
Criando um Tipo de Dados Definido Pelo Usurio, Usando a Janela de Comandos T-SQL .......................... 191
Excluindo Tipos Definidos Pelo Usurio ........................................................................................................ 192
Fundamentos em: Excluso de Tabelas ............................................................................................................... 194
Para Excluir uma Tabela com o SQL Server Management Studio .................................................................. 194
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
VIII0000Curso Completo
Excluindo uma Tabela com o Query Analyzer ............................................................................................... 195
Fundamentos em: Definio da Chave Primria de uma Tabela ........................................................................ 195
Definindo uma Chave Primria Utilizando o SQL Server Management Studio ............................................ 196
Definindo uma Chave Primria Utilizando Comandos T-SQL ...................................................................... 198
Fundamentos em: Conceito e Criao de ndices ............................................................................................... 199
Uma Viso Geral dos ndices no SQL Server 2005 ......................................................................................... 200
Clustered Index ............................................................................................................................................... 200
Nonclustered Index ........................................................................................................................................ 203
Mais Algumas Questes Tericas Sobre ndices .............................................................................................. 205
Criando ndices no SQL Server 2005 .............................................................................................................. 207
Criando um Clustered Index Simples com o SQL Server Management Studio ............................................. 207
Criando ndices Usando Comandos T-SQL .................................................................................................... 209
Um Fator Importante: FILLFACTOR OPTION ................................................................................................ 212
Fundamentos em: Comandos Adicionais Para Trabalhar com ndices............................................................... 213
Excluindo ndices ........................................................................................................................................... 215
Excluindo um ndice com o Query Analyzer ................................................................................................. 215
Novidade do SQL Server 2005 Desativao de ndices ................................................................................ 216
Concluso ....................................................................................................................................................... 216
PARTE 2 KNOW-HOW............................................................................................................................. 219
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS ...................................... 221
Introduo ...................................................................................................................................................... 222
Know-how em: Conceito de Log de Transaes no SQL Server 2005 ................................................................. 223
Um Pouco Mais Sobre o Conceito de Transao ............................................................................................ 224
Como Funciona o Log de Transaes ............................................................................................................. 225
Know-how em: Tipos e Estratgias de Backup .................................................................................................... 226
Introduo ...................................................................................................................................................... 227
Mtodos de Backup Quanto ao Contedo do Backup ................................................................................... 229
Tipos de Backup .............................................................................................................................................. 231
Alguns Exemplos de Estratgias de Backup/Restore ....................................................................................... 232
Know-how em: O Conceito Backup Devices e Criao de Backup Devices ........................................................ 236
O que so Backup Devices? ............................................................................................................................. 236
Devices Lgicos e Devices Fsicos ................................................................................................................... 237
Criando um Backup Device Lgico com o SQL Server Management Studio ................................................. 238
Criando um Backup Device Lgico Usando Comandos T-SQL ...................................................................... 240
Excluindo Backup Devices .............................................................................................................................. 242
Know-how em: Fazer o Backup das Informaes ................................................................................................ 244
Fazendo o Backup com o SQL Server Management Studio ............................................................................ 244
Fazendo o Backup do Log de Transaes e Criando um Agendamento Para o Backup ................................. 249
Fazendo o Backup com o Query Analyzer ...................................................................................................... 254
Um Exemplo Mais Completo ......................................................................................................................... 258
Know-how em: Fazer o Restore das Informaes ................................................................................................ 258
Fazendo o Restore com o SQL Server Management Studio ............................................................................ 260
Fazendo o Restore com o Query Analyzer ...................................................................................................... 263
Know-how em: Agendamento de Tarefas no SQL Server 2005 ........................................................................... 269
Criando um Job com o SQL Server Management Studio ............................................................................... 271
Concluso ....................................................................................................................................................... 279
CAPTULO 6 SEGURANA NO SQL SERVER 2005 ......................................................................................... 281
Introduo ...................................................................................................................................................... 282
Know-how em: Segurana no SQL Server 2005 .................................................................................................. 283
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SUMRIO
Curso Completo0000IX
Primeiro Precisamos Conectar com o Servidor SQL Server 2005 ................................................................... 283
Depois de Conectados, Precisamos de Permisses Para Acessar os Objetos do Banco de Dados ................... 288
Schemas Principal Novidade de Segurana do SQL Server 2005 ................................................................. 291
Um Resumo da Teoria Sobre Segurana no SQL Server 2005 ......................................................................... 294
Know-how em: Segurana no Windows 2000 Server e Windows Server 2003................................................... 295
Domnios, Workgroups e Active Directory..................................................................................................... 295
Domnios e Grupos de Trabalho (Workgroups) ......................................................................................... 295
Active Directory ......................................................................................................................................... 297
Contas de Usurios ......................................................................................................................................... 299
Grupos de Usurios e Tipos de Grupos Existentes
no Windows 2000 Server e no Windows Server 2003.................................................................................... 303
Know-how em: Criao e Gerenciamento de Login e Roles no SQL Server 2005 .............................................. 311
Criando Logins com o SQL Server Management Studio ................................................................................ 312
Criando Logins com Comandos T-SQL .......................................................................................................... 317
Criando Roles no SQL Server 2005 ................................................................................................................. 324
Criando Novas Roles com o SQL Server Management StudioSQL Server 2005 ............................................. 326
Criando Novas Roles Usnado Comandos T-SQL ............................................................................................ 328
Know-how em: Configurao de Acesso aos Objetos de um Banco de Dados do SQL Server 2005 .................. 330
Dando Permisso de Acesso ao Banco de Dados com o SQL Server Management Studio............................. 331
Dando Permisso de Acesso ao Banco de Dados, Usando Comandos T-SQL................................................. 334
Adicionando Usurios Como Membros de uma ou Mais Roles ..................................................................... 336
Know-how em: Configurao, Planejamento e Teste de Permisses de Acesso aos Objetos
de um Banco de Dados do SQL Server 2005 ....................................................................................................... 341
Definindo Permisses em Nvel de SERVIDOR\instncia .............................................................................. 342
Dando Permisses Para Banco de Dados ........................................................................................................ 344
Dando Permisses a Objetos do Banco de Dados ........................................................................................... 352
Trabalhando com Schemas ............................................................................................................................. 360
Concluso ....................................................................................................................................................... 364
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 ......................................... 365
Introduo ...................................................................................................................................................... 366
Know-how em: Criao de um Plano de Manuteno Para um Banco de Dados do SQL SERVER 2005 ........... 367
Know-how em: Comandos DBCC Database Consistency Checker ................................................................. 376
Principais Comandos DBCC de Manuteno................................................................................................. 376
Principais Comandos DBCC de Status ........................................................................................................... 383
Principais Comandos DBCC de Validao ..................................................................................................... 386
Mais um Comando DBCC .............................................................................................................................. 388
Know-how em: Importao e Exportao de Dados com o DTS Data Transformation Services ..................... 389
Importando Dados de Outras Fontes de Dados .............................................................................................. 389
Exportando Dados do SQL Server 2005Para Outras Fontes de Dados ........................................................... 398
Know-how em: Monitorao de Desempenho no SQL SERVER 2005 ................................................................ 403
Monitorando o Processador e a Memria do seu Servidor ............................................................................. 407
Monitorando o Acesso ao Sistema de Discos .................................................................................................. 412
Contadores a Serem Monitorados em Servidores ........................................................................................... 415
Valores Indicativos de Limites de Desempenho Para Contadores ................................................................. 416
Configurando o Console Desempenho Para Capturar Dados Automaticamente.......................................... 418
Montando Grficos de Desempenho a Partir de Informaes de Arquivos de Log ....................................... 429
Utilizando Alertas Para Monitorar Situaes Limite ...................................................................................... 433
Utilizando o Console Desempenho Para Monitorar o SQL Server 2005........................................................ 436
Utilizando o Profiler ....................................................................................................................................... 438
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
X0000Curso Completo
Concluso ............................................................................................................................................................ 446
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO ........................................................... 447
Introduo ...................................................................................................................................................... 448
Know-how em: Fundamentos Bsicos sobre Replicao ..................................................................................... 449
Fatores Ligados Replicao ........................................................................................................................... 452
Benefcios da Replicao e Onde Utiliz-la..................................................................................................... 453
Know-how em: O Modelo de Replicao do SQL Server 2005 ........................................................................... 454
Publisher ..................................................................................................................................................... 455
Distributor .................................................................................................................................................. 456
Subscriber ................................................................................................................................................... 457
Artigo .......................................................................................................................................................... 457
Publicaes ................................................................................................................................................. 459
Know-how em: Subscries e Tipos de Subscries ............................................................................................ 460
Push Subscription ........................................................................................................................................... 461
Pull Subscriptions ........................................................................................................................................... 461
Know-how em: Tipos de Replicao.................................................................................................................... 462
Snapshot Replication ...................................................................................................................................... 462
Transactional Replication ............................................................................................................................... 463
Merge Replication ........................................................................................................................................... 464
Know-how em: Os Agentes de Replicao no SQL Server 2005.......................................................................... 464
Know-how em: Configurando a Replicao no SQL Server 2005 ....................................................................... 466
Know-how em: Configurao e Administrao de Publicaes .......................................................................... 480
Know-how em: Habilitao de Subscribers ......................................................................................................... 482
Os Agentes Criados Para a Replicao em SERVIDOR\SQL2005 ................................................................... 493
Know-how em: Configurar Subscries do Tipo Pull Subscriptions ................................................................... 498
Excluindo Elementos da Replicao ............................................................................................................... 505
Know-how em: Replicao Para Outros Tipos de Subscribers No SQL Server 2005 ....................................... 507
Replicando Dados Para um Subscriber do Microsoft Access .......................................................................... 509
Concluso ....................................................................................................................................................... 520
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS ................................................ 523
Introduo ...................................................................................................................................................... 524
Know-how em: Importando o Banco de Dados Pubs de uma Instncia do SQL Server 2000 ............................ 525
Know-how em: Implementao de Integridade dos Dados no SQL Server 2005 ............................................... 528
Os Tipos de Integridade de Dados Existentes no SQL Server 2005 ................................................................ 532
Know-how em: Criao e Teste de Constraints no SQL Server 2005 .................................................................. 534
Criando Constraints com Comandos T-SQL .................................................................................................. 536
NOT NULL Constraint .................................................................................................................................... 536
DEFAULT Constraints ..................................................................................................................................... 537
CHECK Constraints ........................................................................................................................................ 538
PRIMARY KEY Constraints .............................................................................................................................. 540
UNIQUE Constraints ...................................................................................................................................... 542
FOREIGN KEY Constraints ............................................................................................................................. 542
Verificao dos Dados Quando uma Constraint Adicionada ...................................................................... 546
Desabilitando e Habilitando Novamente Constraints ................................................................................... 547
Excluindo Constraints .................................................................................................................................... 547
Know-how em: Conceitos e Criao de Views no SQL Server 2005 ................................................................... 551
Introduo ...................................................................................................................................................... 551
Tipos de Views Quanto ao Conjunto de Dados Retornados .......................................................................... 552
Por que Utilizar Views? ................................................................................................................................... 553
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SUMRIO
Curso Completo0000XI
Limitaes na Criao de Views ..................................................................................................................... 553
Criando Views com o SQL Server Management Studio ................................................................................. 554
Criando Views com o SQL Server Management Studio ................................................................................. 555
Exemplo Prtico 01: Usando Views Para Criar Campos Calculados e Totalizaes ....................................... 559
Exemplo Prtico 02: Usando Views Para Criar Campos Calculados e Totalizaes ....................................... 566
Exemplo Prtico 03: Criando uma View Baseada em Outra View. ................................................................. 571
Criando Views com a Janela de Execuo de Comandos T-SQL .................................................................... 574
Concluso ....................................................................................................................................................... 577
PARTE 3 DESENVOLVIMENTO .................................................................................................................... 579
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS ............................ 581
Introduo ...................................................................................................................................................... 582
Desenvolvimento em: Teoria e Desenvolvimento de Stored Procedures no SQL Server 2005........................... 583
Criando Stored Procedures ............................................................................................................................. 586
Criando Stored Procedures com a Janela de Execuo de Comandos T-SQL ................................................. 586
Criando Stored Procedures com Parmetros de Entrada ................................................................................ 588
Utilizando Estruturas de Deciso em um Stored Procedure ........................................................................... 592
A Estrutura IF...ELSE ........................................................................................................................................ 592
A Estrutura WHILE...CONTINUE.................................................................................................................... 595
Definindo Parmetros de Sada (ou de Retorno) Para um Stored Procedure ................................................. 598
Excluindo um Stored Procedure ..................................................................................................................... 600
Criando Stored Procedures com o SQL Server Management Studio .............................................................. 600
Criando Stored Procedures com a Opo New Stored Procedures ................................................................. 600
Verificando Informaes Sobre os Stored Procedures de um Banco de Dados .............................................. 602
O Comando sp_help ....................................................................................................................................... 602
O Comando sp_helptext ................................................................................................................................. 602
O Comando sp_stored_procedures ................................................................................................................. 603
Desenvolvimento em: Teoria e Desenvolvimento de Triggers no SQL Server 2005 ........................................... 603
Criando Triggers com Comandos T-SQL ........................................................................................................ 607
Criando Triggers com o SQL Server Management Studio .............................................................................. 614
Mais Alguns Comandos Relacionados com Triggers ...................................................................................... 615
O Comando sp_helptext ................................................................................................................................. 615
O Comando sp_helptrigger ............................................................................................................................ 616
Habilitando e Desabilitando Triggers ............................................................................................................. 616
Desenvolvimento em: Comandos Avanados da Linguagem T-SQL .................................................................. 617
Pesquisando Dados em Mltiplas Tabelas ...................................................................................................... 617
Tipos de Join ................................................................................................................................................... 619
Join com Mais do que Duas Tabelas ............................................................................................................... 621
Utilizando Subconsultas ................................................................................................................................. 623
Concluso ....................................................................................................................................................... 625
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 ................................. 627
Introduo ...................................................................................................................................................... 628
Desenvolvimento em: Uma Introduo ao Desenvolvimento de Aplicaes em n Camadas ........................... 629
Modelo em Duas Camadas Cliente/Servidor Tradicional ............................................................................ 629
Aplicaes em Duas Camadas ......................................................................................................................... 630
Aplicaes em Trs Camadas .......................................................................................................................... 632
Aplicaes em Quatro Camadas ..................................................................................................................... 633
Questes a Considerarmos nos Modelos de Trs ou Mais Camadas .............................................................. 634
Desenvolvimento em: Preparao do Servidor Para Acompanhar os Exemplos Deste Captulo ....................... 635
Criando a Pasta Onde Iremos Gravar os Exemplos Deste Captulo ............................................................... 636
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
XII0000Curso Completo
Tornando a Pasta LivroSQL2005, Parte do Servidor IIS .................................................................................. 637
Desenvolvimento em: Um Pouco Sobre ODBC, OLE DB e ADO........................................................................ 642
Um Pouco Sobre ODBC Open Database Connectivity ................................................................................ 643
Criando uma Fonte ODBC Para um Banco de Dados do Microsoft Access ................................................... 644
Criando uma Fonte ODBC Para um Banco de Dados Pubs, da Instncia SERVIDOR\SQL2005 .............. 648
Um Pouco Sobre OLE DB e ADO .................................................................................................................... 653
Desenvolvimento em: O Modelo de Objetos do ADO Activex Data Objects .................................................. 655
Desenvolvimento em: Aplicaes com ASP Active Server Pages ...................................................................... 658
O Objeto Connection ..................................................................................................................................... 661
Criando Conexes ODBC .......................................................................................................................... 661
O Objeto Connection Mtodos, Propriedades e Eventos........................................................................ 662
Criando Conexes Utilizando OLE DB ...................................................................................................... 663
A Propriedade ConnectionString ............................................................................................................... 664
Configurando Conexes com Bancos de Dados do Microsoft SQL Server 2005 ........................................... 666
O Primeiro Exemplo Conectando com o Banco de Dados Northwind,
da Instncia SERVIDOR\SQL2005 .................................................................................................................. 666
Configurando Conexes OLE DB, com Bancos de Dados ORACLE .......................................................... 670
Comentrios Finais Sobre o Objeto Connection ....................................................................................... 671
O Mtodo Close ......................................................................................................................................... 672
Pool de Conexes ................................................................................................................................... 672
Um Exemplo Utilizando ODBC...................................................................................................................... 673
O Objeto RecordSet ......................................................................................................................................... 679
Um Pouco Sobre Cursores .......................................................................................................................... 680
Localizao do Cursor ................................................................................................................................ 682
Lock de Registros ........................................................................................................................................ 684
Propriedades do Objeto RecordSet ............................................................................................................. 685
Mtodos do Objeto RecordSet .................................................................................................................... 686
Uma Pgina ASP Para Inserir Informaes no Banco de Dados ..................................................................... 687
Demais Operaes Utilizando ASP ................................................................................................................. 699
Para Localizar um Registro.............................................................................................................................. 699
Utilizando o Nosso Exemplo...................................................................................................................... 703
Editando e Excluindo Registros ...................................................................................................................... 704
Concluso ....................................................................................................................................................... 705
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML .............................................. 707
Introduo ...................................................................................................................................................... 708
Desenvolvimento em: Uma Rpida Reviso Sobre a Estrutura
de um Banco de Dados do Microsoft Access ....................................................................................................... 709
Tabelas ............................................................................................................................................................. 710
Consultas ........................................................................................................................................................ 711
Formulrios ..................................................................................................................................................... 713
Relatrios ........................................................................................................................................................ 715
Pginas ............................................................................................................................................................ 716
Macros ............................................................................................................................................................. 720
Mdulos .......................................................................................................................................................... 721
Desenvolvimento em: Como Acessar Dados do Servidor SQL Server 2005 Utilizando o Microsoft Access....... 722
Importando Dados do SQL Server em Tabelas do Microsoft Access .............................................................. 722
Anexando Tabelas no Microsoft Access .......................................................................................................... 731
Criando Consultas no Microsoft Access, Baseadas em Tabelas do SQL Server 2005...................................... 736
Desenvolvimento em: Acessando Dados do Servidor SQL Server 2005 com o Navegador e o Padro XML ..... 744
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SUMRIO
Curso Completo0000XIII
Configurando o Acesso Atravs do Navegador .............................................................................................. 746
Testando o Acesso aos Dados do SQL Server 2005, Atravs do Navegador .................................................... 752
Uma Pouco Sobre Extensible Markup Language XML ................................................................................ 754
Primeiro um Pouco de Histria ...................................................................................................................... 755
O que Mais tem a Oferecer Este Tal de XML? ................................................................................................. 756
Concluso ....................................................................................................................................................... 757
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 ........................................................... 759
Introduo ...................................................................................................................................................... 760
Desenvolvimento Em: O Primeiro Contato com o Framework .NET ................................................................. 762
Apresentando o Conceito de Servios Web Services .................................................................................... 762
Apresentando o CLR Common Language Runtime ................................................................................ 764
.NET Framework Class Library ................................................................................................................... 766
Desenvolvimento em: Um Pequeno Parnteses Para falar mal dos Modelos Anteriores ................................ 767
A que saudade do MS-DOS??? ................................................................................................................... 767
Prazer. Eu sou o Windows! ......................................................................................................................... 768
Redes e Internet Mais problemas (ou solues) Vista! ......................................................................... 769
Aplicaes em 3 camadas. .......................................................................................................................... 770
Aplicaes em quatro camadas. ................................................................................................................. 771
Um Modelo Baseado em Componentes..................................................................................................... 772
Desenvolvimento em: Os elementos do Framewor .NET em Detalhes .............................................................. 773
Linguagens de programao habilitadas ao .NET ...................................................................................... 773
Common Type System............................................................................................................................... 776
Metadata ..................................................................................................................................................... 777
Assemblies .................................................................................................................................................. 778
Desenvolvimento em: Interfaces com o usurio.. ............................................................................................... 779
Windows Forms .......................................................................................................................................... 780
Web Forms .................................................................................................................................................. 781
Desenvolvimento: Os servidores .NET ................................................................................................................ 782
Desenvolvimento em: ADO.NET......................................................................................................................... 785
Desenvolvimento em: CLR Common Language Runtime ............................................................................... 787
Compilar ou no compilar, eis a questo? ................................................................................................. 788
O papel dos meta dados (Metadata). ......................................................................................................... 788
Integrao Entre Deferentes Linguagens: Promessa ou Realidade? ........................................................... 789
Desenvolvimento em: O processo de execuo de cdigo do CLR. ................................................................... 789
Mais Algumas Observaes Sobre o JIT...................................................................................................... 791
Desenvolvimento em: Assemblies ....................................................................................................................... 792
Uma definio em poucas palavras. ........................................................................................................... 792
Funes do assembly. ................................................................................................................................. 793
Componentes do assembly. ....................................................................................................................... 794
O que temos no Manifesto?.................................................................................................................... 795
Desenvolvimento em: CTS Common Type System ......................................................................................... 796
Classificao dos tipos do CTS ................................................................................................................... 796
Desenvolvimento em: .NET Framework Class Library Biblioteca de classes do Framework .NET ................. 797
Desenvolvimento em: Conceitos bsicos de orientao a objetos ..................................................................... 802
O que um objeto? .................................................................................................................................... 803
Mensagens .................................................................................................................................................. 805
Classes ........................................................................................................................................................ 805
Herana ...................................................................................................................................................... 806
Reutilizao de cdigo. ............................................................................................................................... 810
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
XIV0000Curso Completo
Desenvolvimento em: Uma Rpida Introduo Tecnologia ASP.NET.............................................................. 812
Mais uma verso de ASP??? ........................................................................................................................ 812
Novidades e melhorias do ASP.NET. ........................................................................................................... 812
Um viso geral do acesso a dados ................................................................................................................... 820
Quais as principais diferenas do ADO.NET em relao ao ADO? ............................................................ 822
Bancos de Dados Utilizados nos Exemplos ......................................................................................................... 823
O banco de dados do SQL Server pubs. .................................................................................................. 823
Uma Introduo ao ADO.NET............................................................................................................................. 824
Informando que Voc Deseja Utilizar Classes de um Determinado Namespace....................................... 825
Classe ou objeto; objeto ou classe? ............................................................................................................ 825
Estabelecendo Conexes ................................................................................................................................. 825
Estabelecendo uma Conexo com o SQL Server 2000 ou SQL Server 2005 SqlConnection .................. 826
Uma Viso Geral do Processo de Acesso a Dados ........................................................................................... 830
Criando Objetos Command ........................................................................................................................... 831
Retornando dados com DataAdapter ............................................................................................................. 832
O Objeto DataSet ............................................................................................................................................ 834
O objeto DataView.......................................................................................................................................... 835
Um pouco mais sobre o controle DataGrid. ................................................................................................... 841
Primeira maravilha do DataGrid: Paginao. ............................................................................................ 841
Segunda maravilha do DataGrid: Mais do que um conjunto de dados na mesma pgina. ...................... 842
Concluso ....................................................................................................................................................... 846
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 ................................. 849
Introduo ...................................................................................................................................................... 850
Desenvolvimento Em: Entendendo o Reporting Services .................................................................................. 851
Introduo ao Reporting Services ................................................................................................................... 851
Relatrios acessados via Web Vantagens ................................................................................................. 852
Principais componentes do Reporting Services .............................................................................................. 853
Report Designer .......................................................................................................................................... 854
Report Server .............................................................................................................................................. 854
Desenvolvimento Em: Requisitos para que o Reporting Services Funcione Corretamente. .............................. 858
Requisitos do IIS e do ASP.NET Para a Instalao do Reporting Services ....................................................... 859
Desenvolvimento Em: Importando o Northwind.mdb
e Definindo os Relacionamentos......................................................................................................................... 859
Desenvolvimento Em: Utilizando o Reporting Services ..................................................................................... 867
Exemplo prtico O primeiro relatrio. ........................................................................................................ 867
Salvando o Relatrio em Diferentes Formatos ............................................................................................... 876
Publicando o relatrio no servidor WEB ........................................................................................................ 880
Desenvolvimento Em: Criando relatrios do tipo Matrix. ................................................................................. 882
Entendendo as Referncias Cruzadas matrix ............................................................................................... 882
Criando Relatrios usando a opo Grupos. .................................................................................................. 899
Desenvolvimento Em: O console Reporting Services Configuration ................................................................. 907
Introduo ao console Reporting Services Configuration.............................................................................. 907
Concluso ...................................................................................................................................................... 910
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 ............................................... 913
Introduo ...................................................................................................................................................... 914
Desenvolvimento Em: Snapshot Databases ........................................................................................................ 915
Quando usar a opo de Snapshot ................................................................................................................. 915
Limitaes em Relao ao uso de Snapshots .................................................................................................. 916
Limitaes em Relao ao Banco de Dados Fonte ..................................................................................... 916
Limitaes Existentes nos Snapshots do Banco de Dados ......................................................................... 916
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SUMRIO
Curso Completo0000XV
Requerimentos de Espao em Disco ............................................................................................................... 917
Recomendaes Para a Criao de um Snapshot ........................................................................................... 918
Recomendaes Sobre a Nomeao dos Snapshots ................................................................................... 918
Limitar o Nmero de Snapshots a Serem Mantidos .................................................................................. 918
Criando Snapshots de um Banco de Dados .................................................................................................... 919
Desenvolvimento Em: Criao de Diagramas do Banco de Dados ..................................................................... 921
Desenvolvimento Em: Transferir Bancos de Dados Entre Instncias ................................................................. 926
O comando sp_detach_db .............................................................................................................................. 929
Desenvolvimento Em: Acessando Dados das Tabelas do Banco de Dados ......................................................... 930
Desenvolvimento Em: Usar a Opo de Gerao
de Scripts do SQL Server Management Studio .................................................................................................... 932
Desenvolvimento Em: Edies do SQL Server 2005 ........................................................................................... 938
Introduo ...................................................................................................................................................... 939
SQL Server 2005 Enterprise Edition (32-bits e 64-bits) ................................................................................... 939
SQL Server 2005 Standard Edition (32-bits e 64-bits) ..................................................................................... 939
SQL Server 2005 Workgroup Edition (somente em 32 bits) ........................................................................... 939
SQL Server 2005 Developer Edition (32-bits e 64-bits) .................................................................................. 940
Comparao Entre as Verses ......................................................................................................................... 940
Concluso ....................................................................................................................................................... 941
ANEXO .................................................................................................................................................... 943
NDICE REMISSIVO .................................................................................................................................... 943
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
XVI0000Curso Completo
INTRODUO
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 ir utilizar um sistema que
consulta um Banco de Dados. Ao consultar um CEP no site dos Correios, voc tambm ir utilizar
informaes armazenadas em um Banco de Dados. Poderamos preencher pginas e pginas com
exemplos de aplicaes baseadas em bancos de dados, pelo simples motivo de que toda e qualquer
aplicao baseada em um banco de dados. O mais difcil seria encontrar alguns exemplos de sistemas
que no dependam de um Banco de Dados.
Alm disso, os sistemas de Banco de Dados devem ser capazes de garantir a segurana da informao,
garantindo pr-requisitos bsicos de segurana, tais como: Integridade, Confidencialidade e
Disponibilidade. Afinal de contas voc quer ter certeza de que o sistema de um site de comrcio eletrnico
seguro, antes de digitar o nmero do seu carto de crdito.
neste contexto evoluo cada vez mais rpida, necessidade cada vez maior de segurana, desempenho
e disponibilidade e Bancos 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 2005.
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 2005. Voc
aprender sobre o modelo relacional de dados, entender os conceitos de chave primria, integridade
referencial e normalizao de tabela, aprender a instalar o SQL Server 2005, aprender a fazer o up-
grade do SQL Server 2000 para o SQL Server 2005, aprender a utilizar as novas ferramentas de
administrao do SQL Server 2005, aprender a criar e a configurar bancos de dados, aprender a criar,
configurar e a administrar tabelas, consultas, triggers, aprender sobre segurana, sobre replicao,
sobre importao e exportao de dados, sobre o desenvolvimento de aplicaes com o SQL Server
2005, sobre o novo service de criao de relatrios e muito mais.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SUMRIO
Curso Completo0000XVII
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 prtica dos tpicos vistos no captulo. 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.
Acesso a dados do SQL Server utilizando Visual Basic, ASP, ASP.NET e o Microsoft Access.
Introduo linguagem XML.
Utilizao de ADO e OLE DB para acesso aos dados.
Utilizao do novo servio de relatrios do SQL Server 2005-03-08.
E muitos outros tpicos, indicados para os usurios intermedirios e avanados.
Em cada um dos captulos irei apresentar 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 tpico em questo,
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, irei apresentar 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. Voc aprender 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 dos captulos 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.
INTRODUO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
XVIII0000Curso Completo
Captulo 2: Uma Viso Geral do Microsoft SQL Server 2005. Veremos quais as novidades apresentadas pela
verso 2005 do Microsoft SQL Server e uma viso geral do SQL Server. Tambm aprenderemos sobre os
diferentes ambientes onde o Microsoft SQL Server 2005 pode ser utilizado, bem como as diferentes edies
disponveis. 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 SQL Server 2005
em um nico servidor. Veremos quais os servios instalados com o SQL Server, e como fazer o gerenciamento
dos diferentes servios. Tambm mostrarei como fazer o upgrade do SQL Server 2000 para o SQL Server 2005.
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 Management Studio (que o principal console de Administrao do SQL Server 2005, o
qual substitui o SQL Server Enterprise Manager, o qual era utilizado no SQL Server 2000) e o Query
Analyzer (que a interface baseada em comandos) para criar um Bancos de Dados. Apresentarei diversos
exemplos prticos, para ilustrar os conceitos tericos 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, administrao, atualizao e monitoramento dos ndices.
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 2005. 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 2005.
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 2005 se integra com o Active Directory do Windows 2000
Server ou do Windows Server 2003 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.
Voc ver que existem mudanas conceituais e prticas, muito importantes, na maneira como a segurana
implementada no SQL Server 2005, em relao maneira como era implementada no SQL Server 2000.
Captulo 7: Neste captulo, 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. Voc tambm aprender a utilizar
os recursos do Integration Services do SQL Server 2005 (no SQL Server 2000 era a ferramenta DTS Data
Transformation Services). Os recursos do Integration Services estendem, em muito, as funcionalidades do
DTS. Voc aprender a usar os recursos do Integration Services, atravs de exemplos prticos, passo a passo.
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. Mostrarei diversos exemplos
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SUMRIO
Curso Completo0000XIX
prticos, passo a passo, com explicaes detalhadas de cada um dos componentes da replicao no
SQL Server 2005. Voc tambm aprender sobre a arquitetura de replicao implementada pelo SQL
Server 2005, sobre os diferentes componentes do sistema de replicao, aprender a implementar e a
administrar a replicao e tambm aprender sobre questes de segurana, relacionadas replicao.
Captulo 9: Veremos tpicos relacionados com o desenvolvimento de aplicaes com o Microsoft SQL
Server 2005. Vamos criar Constraints e Rules. Veremos como estes mecanismos podem ajudar a manter
a integridade dos dados. Tambm mostrarei uma das principais novidades do SQL Server 2005, que a
integrao do SQL Server com o Framework .NET. O que isso significa? Significa muito, uma verdadeira
revoluo. Por exemplo, voc poder criar stored procedures, triggers, constraint e rules usando a sua
linguagem de programao preferida, tal como VB.NET, C# ou Delphi.NET.
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. Tambm apresentarei as novidades e melhorias
da linguagem T-SQL, introduzidas no SQL Server 2005.
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 Access) da Microsoft,
dentro da qual se encaixam conceitos como ADO (Activex Data Objects) e OLE DB (sem traduo).
Captulo 12: Neste captulo, abordarei 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.
Captulo 13: Acessando dados de um Servidor SQL com o Microsoft Access e com a tecnologia ASP.NET.
O ASP.NET foi introduzido com o Framework .NET e apresenta muitas melhorias em relao ao ASP
3.0. Com ASP.NET voc tem acesso a uma riqussima biblioteca de tipos e funes do Framework .NET.
Neste captulo farei uma apresentao do Framework .NET, mostrando qual a proposta de
desenvolvimento do modelo .NET. Tambm mostrarei como criar pginas ASP.NET que fazem conexo
com bancos de dados do SQL Server 2005.
Captulo 14: Servios de Relatrios do SQL Server 2005 Reporting Services. Uma brincadeira bem
conhecida no mundo de TI que Criamos um banco de dados para jogar informaes para dentro
dele e depois ficamos ansiosos, para criar os relatrios, para extrair informaes do banco de dados.
Mas no temos como fugir desta realidade, ou seja, uma vez criado o banco e todos os seus objetos, o
objetivo final extrair informaes deste banco, quer seja via listagens em uma pgina Web criada
dinamicamente, quer seja via relatrios impressos. O Reporting Services uma das grandes novidades
do SQL Server 2005. Os desenvolvedores iro simplesmente adorar esta novidade, pois com o Report-
ing Services ficou muito mais fcil (eu diria uma verdadeira barbada) a criao, configurao,
administrao e distribuio de relatrios, a partir de bancos de dados do SQL Server.
Captulo 15: Exemplos Prticos e Mais Novidades do SQL Server 2005. Neste captulo eu apresentarei,
na forma de exemplos prticos, mais algumas novidades do SQL Server 2005. Apresentarei novidades
que, por motivos de organizao do livro, no puderam ser colocadas nos captulos anteriores. Tambm
INTRODUO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
XX0000Curso Completo
apresentarei alguns exemplos prticos sobre tarefas comuns ao dia-a-dia do DBA (Database Adminis-
trator). Este o tpico captulo do tipo Salada de Frutas. Ou seja, um tpico aqui, outro ali e assim por
diante. Julguei importante incluir este captulo, porque nele abordo tpicos prticos, que certamente
o DBA usar no seu trabalho dirio.
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 2005, na Internet.
EQUIPAMENTO E SOFTWARE NECESSRIOS
Para acompanhar todos os exemplos propostos no livro, precisamos de um computador com uma das
seguintes verses do Windows:
Windows XP Profesional
Windows 2000 Professional
Windows 2000 Server
Windows Server 2003
Tambm faz-se necessrio que o IIS (a verso do IIS depende da verso do Windows que voc estiver
usando) esteja instalado e corretamente configurado. Caso voc no tenha o IIS instalado, no se
preocupe. Mais adiante, ainda nesta introduo, mostrarei um passo-a-passo, o qual ensina a instalar o
IIS, caso o mesmo no tenha sido instalado durante a instalao do Windows 2000.
A configurao mnima de hardware necessrio 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 no servidor, nmero de usurios simultneos e recursos de hard-
ware 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, em um perodo
muito curto de tempo. 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SUMRIO
Curso Completo0000XXI
Figura i.1 Janela Adicionar ou remover programas.
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 mnima:
Processador Pentium 1 GHz ou superior.
256 MB de RAM, quanto mais melhor.
10 GB de disco rgido.
Drive de CD-ROM.
Alm de uma das verses do Windows citadas e do IIS, tambm precisaremos ter os seguintes programas
e servios instalados, para que possamos acompanhar os exemplos deste livro:
Internet Explorer 6.x ou superior.
Microsoft Access 2000 ou superior.
INSTALANDO E TESTANDO O IIS
Caso voc no tenha instalado o IIS, quando da instalao do Windows, possvel fazer a instalao
quando for necessrio. A seguir mostrarei, passo a passo, como instalar o IIS 6.0 (que a verso que
vem com o Windows Server 2003. O procedimento para instalar a verso do IIS que vem com o Win-
dows 2000 ou Windows XP praticamente o mesmo).
Para instalar o IIS 6.0, o qual faz parte do Windows Server 2003, siga os passos indicados a seguir:
1. Faa o logon no Windows com uma conta com permisses de administrador.
2. Abra o Painel de controle (Iniciar -> Painel de controle).
3. Abra a opo Adicionar ou remover programas. Surgir a janela indicada na Figura i.1.
INTRODUO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
XXII0000Curso Completo
N
O
T
A
4. No lado esquerdo da janela, d um clique na opo Adicionar/remover componentes do Windows.
5. Ser exibida, por breves instantes, uma mensagem Aguarde. Depois, surge a janela Assistente
de componentes do Windows, indicada na Figura i.2.
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. Por exemplo, atravs desta janela que voc
pode instalar servios tais como o DNS, DHCP, WINS e tantos outros disponveis no Windows Server 2003.
6. V descendo com a barra de rolagem vertical, at localizar o item Application Server (Servidor
de aplicativo) e clique neste item para marc-lo, conforme indicado na Figura i.3.
7. Clique no boto Details (Detalhes). Ser exibida uma lista com os diversos servios relacionados
ao desenvolvimento de aplicaes. Marque a opo Internet Information Services (IIS), conforme
indicado na Figura i.4.
8. Observe que ao marcar esta opo, o boto Details (Detalhes) habilitado. O IIS formado por
uma srie de componentes e funcionalidades. Existe um servidor de pginas (servidor HTTP),
um servidor de ftp, um servidor de notcias (NNTP) e assim por diante. Ao instalarmos o IIS,
podemos escolher um ou mais dos seus componentes, dependendo das necessidades do nosso
servidor Web. No necessrio que todos os componentes do IIS sejam instalados. Por exemplo,
se o servio de cpia de arquivos no for necessrio, no temos por que instalar o servio de ftp.
Na prtica, em um servidor da sua rede, 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 ataque e quebra da
segurana do servidor, por parte de um hacker, alm da maior utilizao de memria e processador no servidor.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SUMRIO
Curso Completo0000XXIII
Figura i.3 O grupo Application Server.
Figura i.4 Selecionando o IIS para instalao.
9. Clique no boto Details (Detalhes). Ser exibida uma lista com os componentes que fazem
parte do IIS.
10. Na lista de opes disponveis, exibida na Figura i.5, certifique-se de que todas as opes estejam
marcadas, conforme indicado na Figura i.5. No esquea de usar a barra de rolagem vertical, para
marcar tambm os componentes que no so exibidos na tela.
INTRODUO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
XXIV0000Curso Completo
N
O
T
A
Figura i.5 Instalando todos os componentes do IIS.
11. A opo Servidor World Wide Web Service tambm dividida em vrios componentes. Clique
nesta opo para marc-la. Em seguida clique no boto Details (Detalhes). Ser exibida a janela
com os componentes do servio World Wide Web. Certifique-se de que todas as opes estejam
marcadas, conforme indicado na Figura i.6.
Figura i.6 Opes do servidor World Wide Web.
Importante: Nunca demais repetir que a instalao de todos os componentes est sendo feita apenas para uso didtico, para que voc
aprenda a utiliz-los. Na prtica, devem ser instalados apenas os componentes realmente necessrios, por motivos j expostos anteriormente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SUMRIO
Curso Completo0000XXV
12. Clique em OK para fechar a janela da Figura i.6. Voc estar de volta janela Internet Information
Services (IIS), indicada na Figura i.5. Clique em OK para fech-la e aplicar as configuraes selecionadas.
13. Voc estar de volta janela do Assistente de componentes do Windows. Observe que, aps ter
selecionado os componentes a serem instalados, o Windows Server 2003 exibe o espao em
disco necessrio para a instalao dos novos componentes selecionados.
14. D um clique no boto Next (Avanar) para ir para a prxima etapa do assistente.
15. O Windows Server 2003 exibe uma janela indicando o progresso da instalao.
16. Caso o Windows Server 2003 no encontre os arquivos necessrios instalao do IIS, no disco
rgido, voc ser solicitado a inserir o CD de instalao do Windows Server 2003.
17. Insira o CD de instalao do Windows Server 2003 e aguarde. O Windows detecta que o CD foi
inserido e inicia, automaticamente, o processo de cpia dos arquivos.
18. Aps concluda a cpia dos arquivos, o assistente emite uma mensagem dizendo que o processo
foi concludo com sucesso.
19. D um clique no boto Finish (Concluir) para encerrar o assistente.
20. Voc estar de volta janela Adicionar ou remover programas. D um clique no boto Close
(Fechar) para sair desta janela.
21. Voc estar de volta ao Painel de controle. Feche o Painel de controle.
22. Agora o IIS est instalado e pronto para ser utilizado, pelo menos as funcionalidades bsicas do IIS.
Agora que j temos o IIS instalado vamos testar se ele est funcionando corretamente.
Figura i.7 O IIS instalado e funcionando e a pgina padro sendo exibida.
INTRODUO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
XXVI0000Curso Completo
Para testar se o IIS foi instalado com sucesso, siga os seguintes passos:
1. Abra o Internet Explorer.
2. Digite o seguinte endereo: http://localhost
3. Ser aberta uma pgina padro (iisstart.htm), que uma pgina apenas com um aviso de que o
site est em construo, conforme indicado na Figura i.7.
4. Esta a pgina inicial do IIS logo aps a instalao. A pasta padro do IIS fica gravada em
C:\Inetpub\wwwroot. Isto comprova que o IIS foi instalado com sucesso. Feche o Internet Explorer.
VAMOS AO TRABALHO
Feitas as devidas apresentaes, hora de iniciarmos nossa jornada atravs do Microsoft SQL Server 2005.
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.
No Captulo 1 voc aprender sobre os fundamentos tericos, que formaram a base para acompanhar
todos os demais captulos do livro. Eu considero este, sem dvida, o captulo mais importante do livro.
Entender bem os fundamentos do Modelo Relacional fundamental para o aprendizado do SQL Server.
Ento leia e releia o Captulo 1, at que no fique nenhuma dvida sobre os tpicos tericos que sero
apresentados no Captulo 1.
Caso voc tenha alguma sugesto sobre tpicos que gostaria de ver includa em futuras edies deste
livro, queira enviar crticas e sugestes ou relatar algum erro encontrado. Basta entrar em contato
atravs do e-mail: webmaster@juliobattisti.com.br. 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 em sua carreira profissional.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Parte 1
FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 1
INTRODUO AOS BANCOS DE DADOS
RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
40000Curso Completo
N
O
T
A
INTRODUO
correto dizer que existe um captulo que seja o mais importante de um livro?. Eu acredito que sim.
o caso deste primeiro captulo, o qual, sem nenhuma dvida, o mais importante deste livro. Este
captulo apresenta os fundamentos tericos do modelo relacional de dados e da linguagem T-SQL, os
dois pilares sobre os quais foram construdos todos os servios do SQL Server 2005.
Neste captulo voc aprender sobre os conceitos bsicos de Bancos de Dados Relacionais. Tambm
aprender sobre os comandos bsicos da linguagem SQL Structured Query Language. No SQL Server
2005 a linguagem chamada de T-SQL, sendo o T de Transact.
Durante muitos anos, no incio da informatizao das empresas, as aplicaes eram baseadas em
computadores de grande porte, conhecidos como Mainframes. Nesta poca as aplicaes,
normalmente desenvolvidas em linguagens de programao tais como Cobol, 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 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 termi-
nal. 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 main-
frames 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 clssico.
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 a interconexo destas redes
entre si, formando a WAN da empresa e a interconexo mundial das WANs, formando a Internet, e
com a expanso do modelo Cliente/Servidor em 2 ou mais camadas, a utilizao dos chamados
Bancos de Dados Relacionais cresceu exponencialmente. Hoje a grande maioria das novas aplicaes
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo00005
N
O
T
A
(para no dizermos a quase totalidade) baseada neste tipo de Bancos de Dados, ou seja: Bancos de
Dados Relacionais.
Neste captulo falarei sobre os princpios bsicos dos Bancos de Dados Relacionais, que o modelo de
Banco de Dados utilizado pelo Microsoft SQL Server 2005. Outros Bancos de Dados bastante conhecidos
e que tambm utilizam este modelo:
Microsoft Access para aplicaes de menor porte.
Oracle.
DB2 da IBM.
Sybase.
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
geogrficos, 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.
Estudaremos, 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 nos Bancos de Dados do SQL Server. So exemplos de operaes realizadas sobre os dados:
Selecionar um conjunto de registros com base em um ou mais critrios especificados.
Ordenar um conjunto de registros com base em um ou mais campos 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 Language. 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. No SQL Server 2005 a linguagem chamada de T-SQL, sendo o T de Transact.
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 sero utilizados, evidentemente, os comandos e a sintaxe da linguagem T-SQL, a qual utilizada pelo Microsoft SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
60000Curso Completo
FUNDAMENTOS EM: CONCEITOS BSICOS
DE BANCOS DE DADOS RELACIONAIS
PR-REQUISITOS
Nenhum.
METODOLOGIA
Apresentao e descrio dos elementos que fazem parte do modelo Relacional.
TCNICA
Utilizao de exemplos prticos para ilustrar a teoria apresentada.
Neste item apresentarei os principais conceitos sobre Bancos de Dados Relacionais. Estes conceitos so
importantes (eu diria at fundamentais) para a correta utilizao dos Bancos de Dados, bem como para
o projeto e criao de Bancos de Dados. O SQL Server 2005 um Banco de Dados que segue o modelo
Relacional. Conhecer os fundamentos tericos sobre bancos relacionais indispensvel. A teoria sobre o
Modelo Relacional de Dados est para o SQL Server 2005, assim como o Clculo e a Fsica esto para um
Engenheiro (e sei muito bem deste aspecto, pois a minha formao em Engenharia Eltrica).
Em muitas situaes teremos que conectar nossas aplicaes com Bancos de Dados j existentes, e
neste caso precisamos conhecer os conceitos aqui apresentados, para podermos utilizar o Banco de
Dados de uma maneira correta e 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 no projeto e
criao de um Banco de Dados melhor estruturado e otimizado, tanto em termos de espao de
armazenamento, quanto da qualidade, confiabilidade, segurana, desempenho e disponibilidade
das informaes nele contidas.
Apresentarei os seguintes tpicos tericos, sobre o Modelo Relacional de Dados:
Entidades e Atributos, os elementos bsicos 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 (o termo tcnico) de Entidades. Por exemplo, poderamos ter uma tabela Clientes.
Para cada um dos clientes poderamos armazenar informaes tais como nmero do CPF, cdigo do
cliente, nmero do RG, nome completo, endereo, bairro, cidade, estado, CEP, etc.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo00007
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 de cada atributo formam 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).
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.
Neste caso, os campos (Atributos) da tabela Clientes so: Cdigo do cliente, Nome da empresa, Nome
do contato, Cargo do contato, Endereo, etc.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
80000Curso Completo
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.
Considere o exemplo da Figura 1.2, onde temos a tabela Clientes e os dados para os primeiros registros
sendo exibidos:
Figura 1.2 Os primeiros registros da tabela Clientes, sendo exibidos.
Um dos grandes desafios em se projetar um Banco de Dados com sucesso a correta determinao das
entidades que existiro no Banco de Dados (as tabelas que faro parte do Banco de Dados, de tal
maneira que os requisitos do Banco de Dados sejam atendidos), bem como dos atributos de cada
entidade (os campos que existiro em cada tabela). 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 em cada tabela que sero necessrios
so o escopo e os objetivos 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 (permitam-me o exagero, para poder
ilustrar bem a importncia de manter o objetivo do Banco de Dados, sempre em mente). 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 para cada cliente, 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo00009
tabela. A regra nmero 1 do projeto de Banco de Dados : Assuntos diferentes em tabelas diferentes.
Ou de outra maneira: No se misturam campos de dois ou mais assuntos na mesma tabela.
Observe o exemplo da Tabela 1.1.
Tabela 1.1 Clientes e seus pedidos.
Observe que, nesta tabela, cometemos, propositalmente, o erro de misturar dois assuntos:
Dados sobre os Clientes
Dados sobre os Pedidos dos Clientes
Quando este tipo de erro cometido, 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 do cliente.
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
ou quando forem gerados relatrios com totalizaes por cliente, tais como o total anual de
vendas para cada cliente ou a mdia mensal de vendas, por cliente.
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. Por enquanto, mantenha
sempre em mente a regra nmero um do projeto de Bancos de Dados relacionais: Assuntos diferentes
em tabelas diferentes. Ou de outra maneira: No se misturam campos de dois ou mais assuntos na
mesma tabela.
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.
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
100000Curso Completo
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.
Outro exemplo de campo que ilustra bem o conceito de chave primria um campo Nmero do
pedido, na tabela Pedidos. Este campo deve ser nico, o que na prtica significa que no podem ser
cadastrados dois pedidos, com o mesmo valor no campo Nmero do Pedido. Ns veremos a parte
prtica, sobre como definir um campo para ser do tipo chave primria, no Captulo 4.
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.3, 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.
Um detalhe importante que a chave primria pode ser formada pela combinao de mais do que um
campo. Podem existir casos (embora no sejam muito comuns) em que um nico campo no capaz
de atuar como chave primria, pelo fato de 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. Outro detalhe importante que
nem todas as tabelas tm que ter, obrigatoriamente, uma chave primria (seja simples ou composta).
Dependendo de cada projeto, pode haver situaes onde uma tabela no ter nenhum campo (ou
combinao de campos), definido como do tipo chave primria.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo000011
Figura 1.3 O campo Cdigo do Cliente uma chave primria.
Na prtica, dificilmente teremos uma chave primria composta por mais do que trs ou quatro cam-
pos. Se voc se deparar com uma situao em que precise de uma chave primria composta de mais de
quatro campos, revise o projeto do Banco de Dados, porque devem existir alguns problemas.
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
anual de vendas, por funcionrio, precisarei de informaes das seguintes tabelas:
Funcionrios
Pedidos
Detalhes do Pedido.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
120000Curso Completo
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. As
informaes sobre o cabealho do pedido (Nmero do pedido, Data, Cdigo do cliente, Endereo de
entrega, Cdigo do funcionrio, etc.) so armazenadas na tabela Pedidos. J as informaes sobre os
itens do pedido (Nmero do pedido para identificar a qual pedido pertence o item, Cdigo do produto,
Quantidade, Preo unitrio, etc.) so armazenadas na tabela Detalhes do Pedido. Alm disso, cada
pedido possui um nmero nico, mas um mesmo cliente pode fazer diversos pedidos. Com esta
separao entre as informaes do cabealho do pedido (na tabela Pedidos) e dos Itens do pedido (na
tabela Detalhes do pedido), evitamos uma srie de problemas, tais como a repetio desnecessria de
informaes. Se colocssemos todas as informaes em uma nica tabela, teramos que repetir todos
os dados do cabealho do pedido, para cada um dos itens do pedido. E quem garante que estas
informaes seriam inseridas corretamente, para todos os itens de um pedido?
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 destes tipos de relacionamentos, individualmente e detalhadamente.
Procure entender bem o conceito de relacionamentos, pois este um conceito fundamental para
entender o SQL Server 2005.
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.
Vamos imaginar o seguinte exemplo: uma escola com um cadastro de alunos na tabela Alunos, e 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., estas poderiam ser recuperadas atravs do
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo000013
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.4 vemos o exemplo de um relacionamento do tipo Um para Um entre as tabelas Alunos e
Alunos da Banda.
Figura 1.4 Um relacionamento do tipo Um para Um.
RELACIONAMENTO DO TIPO UM PARA VRIOS
Este, sem nenhuma dvida, 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 na tabela Clientes (por isso o campo Cdigo do Cliente uma chave primria,
indicando que no podem ser cadastrados dois clientes com o mesmo valor no campo Cdigo do
cliente). Com isso a tabela Clientes ser o lado Um do relacionamento. Por outro lado, cada cliente
pode fazer diversos pedidos, portanto o mesmo valor para o campo Cdigo do Cliente poder
aparecer vrias vezes na tabela Pedidos tantas vezes quantos forem os pedidos que o Cliente tiver
feito. Por exemplo, se o cliente cujo cdigo for ALFKI tiver feito 10 pedidos, o cdigo deste cliente
aparecer em 10 registros diferentes, na tabela Pedidos. J na tabela Clientes, o cdigo ALFKI
aparecer em um nico registro, o qual representa o cadastro do cliente. 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. O lado um na
tabela Clientes cada cliente ser cadastrado um nica vez; o lado vrios a tabela Pedidos cada
cliente poder fazer vrios pedidos.
Na Figura 1.5, 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 o campo CdigoDoCliente no uma chave primria (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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
140000Curso Completo
N
O
T
A
Figura 1.5 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 (no podem ser cadastrados dois ou mais pedidos com o mesmo
nmero). 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.6, vemos um exemplo de um relacionamento Um para Vrios entre as tabelas Pedidos e
Detalhes do Pedido, atravs do campo NmeroDoPedido.
Figura 1.6 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.6, o campo
NmeroDoPedido, na tabela Detalhes do Pedido, seria a nossa Chave Estrangeira do relacionamento em questo. No exemplo da Figura 1.5,
o campo CdigoDoCliente, na tabela Clientes, seria a chave estrangeira.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo000015
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, e 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 traria.
Para evitar problemas, bastante comum quebrarmos um relacionamento do tipo Vrios para Vrios
em dois relacionamentos do tipo Um para Vrios. Isso feito atravs da criao de uma nova tabela, a
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.7:
Figura 1.7 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, inconsistncia de dados e
mistura de dois ou mais assuntos na mesma tabela.
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 de um Banco de Dados, 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 mecanismos importantes:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
160000Curso Completo
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 tabelas.
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. A
normalizao de tabelas utilizada para tentar detectar erros no projeto das tabelas e atributos de cada
tabela e corrigir estes erros, antes da criao e utilizao do Banco de Dados. bem mais fcil (e
barato), corrigir os erros na fase de projeto do que depois que o Banco de Dados j est em uso.
Uma Regra de Ouro que devemos observar quando do projeto de Banco de Dados a de no
misturar assuntos em uma mesma tabela, conforme j descrito anteriormente.
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 dados.
O processo de normalizao aplica uma srie de regras sobre as tabelas de um Banco de Dados, para
verificar se estas 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 nmero de tabelas
originalmente projetado. Este processo causa a simplificao dos atributos de uma tabela, colaborando
significativamente para a estabilidade do projeto do Banco de Dados, reduzindo-se as necessidades de
manuteno e alteraes, aps o banco ter sido colocado em produo.
Vamos estudar e entender o processo de normalizao atravs de exemplos prticos.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo000017
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.8:
Figura 1.8 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 nomes 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 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.9.
Figura 1.9 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 est na
Primeira Forma Normal.
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 primria composta, dependem
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
180000Curso Completo
N
O
T
A
Figura 1.10 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
(cada aluno representado por sua matrcula, tem uma nota em cada disciplina representada pelo
campo CdigoDocurso), porm o campo DescrioDoCurso depende apenas do CdigoDoCurso (a
descrio do curso no tem relao com o NmeroDaMatrcula). Com isso, temos um campo que no
faz parte da Chave Primria composta e depende apenas de um dos campos que compem a chave
primria composta. Assim podemos dizer 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.11, sendo que as duas tabelas
resultantes estaro na Segunda Forma Normal.
de todos os campos que compem a chave primria composta. Se algum campo depender somente de
parte da chave primria composta, ento este campo deve pertencer a outra tabela.
Observe o exemplo indicado na Figura 1.10:
Figura 1.11 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 tabela 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo000019
N
O
T
A
N
O
T
A
Quando isto ocorre, dizemos que a tabela no est na Terceira Forma Normal, conforme indicado pela
Figura 1.12:
Figura 1.12 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.13. As duas tabelas resultantes esto na Terceira Forma Normal.
Figura 1.13 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 do que o existente
antes do processo de normalizao, porm sem problemas de redundncia e inconsistncia dos dados, ou com estes problemas minimizados.
PASSOS PARA PROJETAR UM BANCO DE DADOS
Neste item apresentarei os passos bsicos para projetar um Banco de Dados. Mostrarei como aplicar os
conhecimentos sobre Entidades, Atributos, Relacionamentos, Chave Primria e Normalizao.
Um Banco de Dados bem projetado fornece um acesso conveniente s informaes desejadas, de tal
maneira que as informaes estejam disponveis para os usurios que dela necessitarem no momento
em que a informao for necessria.
Neste item estou falando do projeto fsico do Banco de Dados, isto , a definio de quais tabelas e do relacionamento entre as tabelas. 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
200000Curso Completo
Etapas no projeto e estruturao de um Banco de Dados:
Determinar qual o objetivo do Banco de Dados. Isto ajuda na determinao de quais 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 vm a seguir. Podem ocorrer casos onde uma tabela no
tem chave primria.
Determinar os relacionamentos entre as tabelas. 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 feito atravs do processo de normalizao de
tabelas, descrito anteriormente.
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.
Normalmente os clculos so efetuados com o uso de consultas (Views Captulo 9) ou atravs
de programao (usando Stored Procedures Captulo 10).
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 todos 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 um
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo000021
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 de que este campo (ou conjunto de campos) seja sempre diferente para
cada registro, por no serem permitidos valores duplicados em um campo de chave primria.
Figura 1.14 Um diagrama Entidade x Relacionamentos.
Ao escolher campos de chave primria, considere os seguintes detalhes:
No permitida 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, e portanto, para um melhor
desempenho, devemos utilizar o menor tamanho que acomode os valores necessrios para
armazenar no campo.
Na Figura 1.14, 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 97
e tambm como exemplo na instalao do Microsoft SQL Server 2000. Os campos que so chave
primria esto indicados em negrito.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
220000Curso Completo
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 para acesso a dados, utilizada pelo Microsoft SQL Server
2005, o T-SQL Transact - Structured Query Language. A linguagem T-SQL utilizada 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 um Banco de Dados.
Criar novas tabelas.
Excluir registros.
Criar e alterar ndices.
Definir permisses de segurana, etc.
Embora a maioria destas operaes possa ser feita atravs da interface grfica do Microsoft SQL Server
2005 (SQL Server Management Studio), existem situaes em que precisamos conhecer e utilizar a
linguagem T-SQL. Para a criao de Stored Procedures, Triggers e outros recursos avanados, iremos
utilizar a linguagem T-SQL.
Neste item eu apresentarei uma noo bsica da linguagem T-SQL. Voc aprendera os comandos para
manipulao de dados consultar, inserir, alterar e excluir. Em todos os demais captulos deste livro,
sero utilizados comandos da linguagem T-SQL, os quais sero explicados nos momentos devidos.
INTRODUO
A linguagem T-SQL foi desenvolvida para ser uma linguagem padro para operaes em Banco de
Dados. A linguagem T-SQL foi elaborada para ser independente de hardware ou software. Ao usar T-
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) T-SQL a ser utilizado, para
solicitar informaes desejadas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo000023
N
O
T
A
N
O
T
A Na prtica, existem pequenas diferenas nas implementaes da linguagem SQL de diferentes fabricantes. Desta forma, algumas rotinas
escritas utilizando o SQL Plus do Oracle podem no rodar, sem alteraes no Microsoft SQL Server e vice-versa.
Na listagem a seguir temos um exemplo de uma instruo T-SQL. Embora a instruo, em um
primeiro momento, possa parecer complexa, veremos que a linguagem T-SQL bastante simples
e de fcil aprendizado.
Exemplo de um comando T-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
Por questes de simplicidade, deste ponto em diante (e tambm nos demais captulos), farei referncia linguagem T-SQL, usando apenas
o termo linguagem SQL ou instruo SQL.
Uma instruo SQL descreve o conjunto de dados que voc deseja obter (quais campos, de quais
tabelas, quais critrios de filtragem utilizar, qual a classificao aplicada, expresses calculadas, etc.).
Todas as instrues SQL so executadas como se fossem um nico comando, o qual contm uma
descrio completa das informaes que devem ser retornadas. Ao escrever uma instruo SQL, voc
no deve se preocupar em como os dados sero recuperados, mas somente com o contedo do conjunto
de dados que voc deseja obter. Esse o principal benefcio da linguagem 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 e operaes em tabelas de um Banco de Dados.
A INSTRUO SELECT
Esta, sem dvidas, a instruo SQL mais importante e mais utilizada. 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 a seguinte:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
240000Curso Completo
N
O
T
A
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.
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, para indicar de qual tabela deve ser retornado o respectivo campo.
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 em duas tabelas: Clientes e Pedidos. Neste caso devemos especificar
o nome da tabela, antes do nome do campo.
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 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.
Tabela 1.2 Os principais elementos da instruo Select.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo000025
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 critrios de filtragem. Muitas vezes as condies so
chamadas de filtro e, 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 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 campo PasDeDestino
contenha o valor 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, o que exatamente o que desejamos, ou seja, todos os pedidos para o Brasil
ou todos os pedidos 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 extrao de dados, atravs das consultas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
260000Curso Completo
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
listagem em ordem crescente pelo nmero do pedido. A utilizao de funes junto com os comandos
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 dentro 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 vm
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:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo000027
N
O
T
A
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
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 fornecem um amplo conjunto de possibilidades. O caractere % utilizado como um caractere
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 caractere 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 caractere curinga o *, j no Microsoft SQL Server
2005 (e tambm nas verses anteriores do SQL Server), utilizamos como caractere curinga o %, o qual tambm utilizado na construo de
pginas ASP. Para maiores informaes sobre a tecnologia ASP Active Server Pages, consulte o e-book Criando Sites Dinmicos com ASP
3.0, 732 pginas, de minha autoria, disponvel no formato .PDF em: http://www.juliobattisti.com.br/ebooksdoautor
At agora trabalhamos 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 ou mais 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, e 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
280000Curso Completo
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.
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 tratarmos 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.
Com isso 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo000029
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 CdigoDoProduto.
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,
em conseqncia do aumento da complexidade das consultas. 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.
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 apresentei instrues SQL que executam consultas em Bancos de Dados. Especifiquei
quais campos sero exibidos, critrios de filtragem para estes campos e uma ordem de classificao. A
partir de agora mostrarei como utilizar instrues SQL para a construo de outros tipos de operaes,
tais como operaes que realizam alteraes nos dados e incluses de novos registros, em tabelas de
um 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 (usando uma instruo SELECT), e 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%, em todos os registros da
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
300000Curso Completo
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 seja aumentado 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.
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 registro 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, conforme j exemplificado quando dos
exemplos da instruo SELECT.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo000031
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)
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
320000Curso Completo
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 eliminar todos os registros da tabela.
Neste item apresentei uma breve introduo linguagem SQL, que no Microsoft SQL Server chamada
de Transact-SQL (T-SQL). De maneira alguma vimos todas as instrues e comandos disponveis. Ao
longo deste livro, em diversos momentos, irei utilizar comandos da linguagem 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, Access, DB2
ou de qualquer Banco de Dados relacional. 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:
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 Formas Normais.
A importncia do projeto fsico do Banco de Dados.
Na seqncia deste captulo, apresentei uma noo bsica da linguagem SQL (Transact-SQL no caso do
Microsoft SQL Server 2005).
Voc aprendeu 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
Curso Completo000033
N
O
T
A
Agora que vimos a parte terica, estamos prontos para comear a trabalhar com o Microsoft SQL Server
2005. Mas isso j assunto para o Captulo 2, onde voc aprender sobre as novidades do SQL Server
2005 e aprender a fazer a instalao do SQL Server 2005 e a fazer o upgrade do SQL Server 7.0 para o
SQL Server 2005 e do SQL Server 2000 para o SQL Server 2005.
No siga para os prximos captulos sem ter entendido, completamente, os conceitos tericos apresentados neste captulo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 2
FUNDAMENTOS DO MICROSOFT
SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
360000Curso Completo
INTRODUO
Neste captulo voc aprender 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 2005 no desenvolvimento de aplicaes de duas ou mais camadas.
As novidades do SQL Server 2005.
As diferentes edies do SQL Server 2005.
Como instalar o SQL Server 2005.
Como fazer o upgrade de verses anteriores do SQL Server.
O conceito de instncia e como criar vrias instncias do SQL Server 2005, no mesmo
servidor.
Verificar se a instalao do SQL Server 2005 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 2005.
Outra idia que vamos procurar esclarecer sobre qual o papel de um Banco de Dados como o SQL
Server 2005 nas aplicaes empresariais desenvolvidas atualmente. Muitas vezes, temos a noo de
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.
Disponibilizar mecanismos de segurana para que no sejam feitos acessos no-autorizados
aos dados.
Fornecer mecanismos de recuperao dos dados em caso de imprevistos e problemas.
Ao finalizar este captulo, voc dever estar com duas instncias do SQL Server 2005 instaladas e
funcionando. Nos exemplos dos demais captulos deste livro, ser utilizado um computador Pentium
IV 2.8 GHz, com 1 GB de RAM e com as seguintes configuraes:
Windows 2000 Server em portugus, com Service Pack 4 instalado.
O Windows 2000 est instalado como DC Domain Controler de um domnio chamado
groza.com.
O nmero IP utilizado : 10.1.1.3.
A mscara de sub-rede : 255.0.0.0.
O nome do servidor : Servidor, com o nome completo incluindo o domnio: servidor.groza.com.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000037
N
O
T
A Para maiores informaes sobre Controladores de Domnio DC, configuraes do TCP-IP e configurao de um servidor com o Windows
2000 Server, consulte o seguinte livro: Manual de Estudos Para o Exame 70-217, 752 pginas, de minha autoria, publicado pela editora
Axcel Books do RJ (http://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, sempre que necessrio, substitua o nome servidor pelo
nome que voc est utilizando.
Em alguns exemplos, como nos exemplos de instalao e upgrade deste captulo, utilizarei um segundo
computador Pentium de 1 GHz, com 512 MB de RAM e com as seguintes configuraes:
Windows Server 2003 Standard Edition, em portugus.
Instalado como DC Domain Controler de um domnio chamado xyz.com.br
O nmero IP utilizado : 10.1.1.5.
A mscara de sub-rede : 255.0.0.0.
O nome do servidor : Servidor2, com o nome completo incluindo o domnio:
servidor2.xyz.com.br
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 atuais e habilitados para a Internet.
Que estamos no meio de uma revoluo que se iniciou no meio da dcada de 90 e no tem prazo para
terminar (nem sequer sabemos aonde vai chegar), todos ns sabemos, e que esta revoluo marcada
pelo comrcio eletrnico, ou o chamado e-business, tambm todos ns sabemos. As revistas e publicaes
especializadas (e muitas que nem sequer so da rea) e os meios de comunicao apresentam matrias,
diariamente, sobre o comrcio eletrnico. As possibilidades so inmeras, tanto para as empresas,
quanto 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 crescimento sustentado de volume de vendas, ano aps ano. 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 e segurana.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
380000Curso Completo
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 e ao desenvolvimento dos sistemas informatizados, de uso interno da empresa.
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, a imagem que mostrada 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, isto , para os funcionrios, a empresa oferece sistemas obsoletos, que
no atendem s necessidades reais do trabalho 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 2005. O que vou procurar mostrar que o
papel que o Banco de Dados desempenha 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,
roupas, animais de estimao, cursos de informtica, CDs com mensagens de auto-ajuda 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 tem 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 possveis sobre os hbitos de navegao e consumo, bem como sobre as
preferncias do cliente, 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000039
Posso citar o meu caso como exemplo. H tempos que compro livros importados no site
www.amazon.com. Ao acessar o site, aps me identificar, aparece um link: Sugestes para o Jlio.
Vejam que at o link j vem personalizado, e isso atrai o cliente. como entrar no mercadinho da
esquina e o seu Manoel ir dizendo: Ol, seu Jlio, aquele queijo colonial que o senhor 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 personalizada, de acordo com os meus gostos e preferncias.
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.
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 ser baseada nos dados
dos clientes, obtidos atravs do 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 sobre os seus clientes e usurios do site (nem todo usurio cadastrado
torna-se um cliente).
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?
Obviamente que no.
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? (o que j ocorreu realmente em algumas
ocasies. O efeito foi to negativo que as empresas que tiveram seus Bancos de Dados invadidos
foram todas falncia, devido a perda de credibilidade junto ao pblico). 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 este entregue fora do prazo,
voc reclama. Se a sua reclamao no for satisfatoriamente atendida, voc simplesmente deixa de
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
400000Curso Completo
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, 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, se no 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 das solues de 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, incluindo o histrico
de compras e o histrico de reclamaes, bem como as reclamaes ainda no solucionadas. Ele descreve
o problema o qual 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 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 (olha o papel importante do Banco de Dados novamente).
Quando uma dvida comear a aparecer com uma determinada freqncia, os dados que solucionam
a dvida podem ser disponibilizados no catlogo de solues. 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:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000041
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 de peas de reposio. Cada
pea catalogada possui um nvel mnimo de unidades em estoque. Quando este nvel mnimo atingido,
automaticamente, o Banco de Dados deve lanar, via Internet, 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, automaticamente, pelo sistema de vendas. Se a pea atingir o nvel mnimo,
previamente estabelecido, um pedido deve ser 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 esta 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 utilizado para a troca de informaes em um formato padro, o qual est sendo cada vez mais
adotado na Internet e tambm nos sistemas internos das empresas.
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 deva ser 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
420000Curso Completo
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, dentro do prazo mximo estipulado pelo cliente. 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 momento temos acesso a
informaes dos Bancos de Dados, questes de segurana no acesso s informaes, alm de uma
lgica bastante complexa.
Mais uma vez reforo que o Microsoft SQL Server 2005 nos oferece uma srie de recursos interessantes
para a criao de aplicaes de alta complexidade, como as descritas nos exemplos deste captulo.
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 pedido, 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.
Uma transao, de uma maneira bastante simples, um conjunto de operaes sobre os dados, que
deve acontecer como 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
revertidas. Com isso garantimos que a transao acontea como um todo, ou que nenhuma das operaes
contidas na transao 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 a seguir:
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, sem ser creditado na conta corrente do fornecedor.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000043
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 eles.
Embora utilizemos 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 navegador. 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.
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 (estaes de trabalho dos usurios, conectadas rede), os quais, na maioria dos casos,
so microcomputadores PCs ligados em rede.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
440000Curso Completo
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 grfico, 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 em cada cliente da rede, onde o
programa ser utilizado. Este programa 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 conhecidos de desenvolvimento, conforme
citado anteriormente. Sendo a aplicao Cliente um programa para Windows (na grande maioria dos
casos), esta 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 e o custo de manuteno muito elevado.
Lgica do Negcio: As regras, que definem a maneira como os dados sero acessados e processados,
so conhecidas como Lgica do Negcio ou Regras 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 ou CNPJ, 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000045
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, principalmente considerando que, no nosso pas, a legislao
e outras normas legais mudam com uma freqncia realmente espantosa.
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, 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 2005, 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 modelo 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 servidor
de aplicaes. Ao centralizar as regras do negcio em um nico ponto, fica muito mais fcil a atualizao das
regras do negcio. A Figura 2.4 nos d uma idia geral do modelo em trs camadas:
Figura 2.4 O modelo de desenvolvimento em trs camadas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
460000Curso Completo
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 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 isso o acesso aos dados,
obrigatoriamente, feito de acordo com as regras de negcios, contidas no servidor de aplicao.
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 forem necessrias
mudanas na interface da aplicao. 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.
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.
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 Explorer,
Netscape Navigator, ou outro navegador qualquer, compatvel com as aplicaes utilizadas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000047
Figura 2.5 O modelo de desenvolvimento em quatro camadas.
Apresentao: Neste modelo, se desloca do cliente 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, sempre que houver alteraes na interface das aplicaes. 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 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 a interface
da aplicao for alterada. Neste ponto, a atualizao das aplicaes uma tarefa mais gerencivel,
muito diferente do que acontecia no caso do modelo em duas camadas. O custo de manuteno dos
sistemas muito menor.
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
480000Curso Completo
que questes de desempenho devem ser levadas em considerao e cuidadosamente projetadas, para
no prejudicar o desempenho e a segurana das aplicaes.
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 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 em 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 deslocadas 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 softwares 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 sub-
dimensionado. 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 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 s alteraes necessrias relativas segurana e manuteno do banco.
O contedo deste livro quase todo relacionado com atividades que devem ser desempenhadas pelo
DBA. A partir do Captulo 9, abordarei tpicos mais relacionados com o desenvolvimento de aplicaes
com o Microsoft SQL Server 2005 e com tecnologias de programao Web, tais como ASP e ASP.NET.
FUNDAMENTOS EM: AS PRINCIPAIS NOVIDADES E
MELHORAMENTOS DO MICROSOFT SQL SERVER 2005
PR-REQUISITOS
Conhecimentos do modelo relacional e de arquitetura de aplicaes.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000049
METODOLOGIA
Apresentao das principais novidades do SQL Server 2005.
Neste item, veremos as melhorias e novidades introduzidas no SQL Server 2005, em relao s verses
anteriores (apresentarei as principais melhorias e novidades). Voc pode utilizar esta seo como uma
referncia para analisar se vale a pena migrar os seus sistemas atuais para a nova verso do Microsoft
SQL Server. Dividirei as novidades em categorias, para que possamos analisar as novas funcionalidades
de uma maneira mais estruturada.
Evidentemente que irei apresentar as principais novidades e melhorias. Pois para apresentar todas as
novidades seria necessrio um livro separado, s com as novidades. Alis este livro j existe e uma
excelente introduo ao SQL Server 2005. O livro que apresenta todas as novidades do SQL Server
2005 o seguinte, disponvel somente em Ingls: SQL Server 2005 New Features, Editora McGraw
Hill, 275 pginas. Mais detalhes em: http://www.amazon.com/exec/obidos/tg/detail/-/0072227761/
qid=1110935474/sr=1-1/ref=sr_1_1/002-8063366-0124867?v=glance&s=books
NOVIDADES E MELHORIAS DO BANCO DE DADOS
Centenas de novos recursos e novidades foram inseridos nas capacidades do Banco de Dados do SQL
Server 2005 (o nome tcnico seria na Mquina do Banco de Dados do SQL Server 2005, ou o termo
em Ingls: SQL Server 2005 Database Engine). Como so muitas as novidades, vamos dividi-las em
subcategorias, para facilitar a apresentao das novidades.
NOVIDADES NO DESENVOLVIMENTO DE APLICAES
Esta foi, na minha opinio, uma das reas onde o SQL Server 2005 mais avanou e apresentou
melhorias, em relao s verses anteriores. Na minha opinio, s a integrao com o Framework
.NET (que descreverei em mais detalhes logo a seguir) j vale o upgrade. Com a integrao com o
Framework .NET, possvel criar objetos tais como triggers, stored procedures e tipos de dados definidos
pelo usurio, usando qualquer linguagem suportada pelo framework .Net, tais como VB.NET, C#,
Delphi.NET, etc. Este um avano considervel, ou seja, agora voc no est limitado a somente usar
o T-SQL, para a criao destes objetos. Com a integrao com o .Net, os horizontes de desenvolvimento
se ampliam, consideravelmente.
Outra excelente novidade que estes objetos podem, facilmente, ser criados, usando o Visual
Studio .NET 2005 (ainda em verso Beta, enquanto eu escrevo este livro). Com o Visual Studio
.NET, extremamente simples a criao de objetos tais como triggers e stored procedures e a
instalao destes objetos, para serem utilizados em um ou mais Bancos de Dados do SQL Server
2005. A seguir descrevo mais algumas importantes novidades, na rea de desenvolvimento de
aplicaes com o SQL Server 2005:
Acesso HTTP SOAP Nativo: Com o SQL Server 2005 possvel acessar os dados de um Banco
de Dados, diretamente, usando o protocolo SOAP. Para isso, basta configurar o SQL Server
2005 para atuar como um endpoint de acesso SOAP, o qual capaz de receber os pacotes SOAP
e retornar os dados solicitados. Isso, por exemplo, permite acessar os dados de um Banco de
Dados do SQL Server 2005, sem ter que usar um servidor Web tal com o IIS ou o Apache.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
500000Curso Completo
Um novo tipo de dados xml: Foi criado um novo tipo de dados, o qual capaz de tratar
diretamente com dados e documentos no formato XML.
Criar Funes definidas pelo usurio, usando qualquer linguagem suportada pelo Frame-
work .NET: Esta uma conseqncia da integrao com o framework .NET. Com o SQL Server
2000 foi introduzida a possibilidade de o 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. Por exemplo, voc pode criar uma funo para validao
do DV do CPF ou do CNPJ, uma outra funo para clculo do Imposto de Renda e assim por
diante. No SQL Server 2000, estas funes s podiam ser criadas usando o T-SQL. No SQL Server
2005, estas funes podem ser criadas, usando qualquer linguagem suportada pelo Framework
.NET. Estas funes podem ser facilmente criadas, usando-se o Visual Studo .NET 2005.
Novas consultas para acesso a metadados: Os metadados so informaes sobre os dados. Ou,
falando de uma maneira mais simples, so informaes sobre a estrutura do Banco de Dados e
das tabelas. Por exemplo, uma lista com o nome de todas as tabelas de um Banco de Dados uma
informao de metadados. Outro exemplo, uma lista de todos os campos de uma tabela, com
informaes sobre as propriedades de cada campo tambm so informaes de metadados. No
SQL Server 2005 foram introduzidas dezenas de novas Views (consultas), as quais podem ser
utilizadas para obter informaes detalhadas sobre a estrutura de um Banco de Dados.
Triggers associadas a alteraes na estrutura do Banco de Dados: Nas verses anteriores
do SQL Server, s era possvel criar triggers associadas com alteraes nos dados das tabelas
de um Banco de Dados. Por exemplo, voc poderia criar uma trigger associada ao campo
Quantidade em estoque, da tabela Produtos no estoque, a qual fosse disparada sempre que o
valor do campo Quantidade for alterado. Esta trigger poderia receber como parmetro o
cdigo do produto que est tendo a sua quantidade em estoque alterada e verificar se o
produto no atingiu o estoque mnimo. Se o estoque mnimo foi atingido, a trigger poder
gravar um registro, na tabela de pedidos pendentes, para que seja feito um pedido do produto.
A novidade no SQL Server 2005 que possvel criar triggers que so disparadas quando so
feitas alteraes na estrutura do Banco de Dados. Por exemplo, quando as propriedades de
um campo de uma tabela so alteradas, ou quando um novo campo criado ou excludo, ou
quando uma nova tabela criada ou excluda e assim por diante. Com triggers que podem
ser disparadas por alteraes na estrutura do Banco de Dados, o desenvolvedor pode
implementar um sistema de monitoramento bem mais eficaz, podendo inclusive criar trig-
gers que no permitam que a estrutura de tabelas e/ou campos crticos sejam alterados ou
que tabelas e/ou campos crticos, sejam excludos.
Novos recursos da linguagem T-SQL: Muitos novos recursos e melhoramentos foram inseridos
na linguagem T-SQL. Uma das novidades a possibilidade de criar consultas recursivas. Um
novo operador foi criado operador APPLY, o qual facilita a combinao entre dados de duas
ou mais tabelas, onde alguns campos so retornados a partir de uma tabela e, para cada valor
da primeira tabela, so exigidos todos os registros correspondentes, na segunda tabela. Foram
includos novos operadores PIVOT e UNPIVOT, os quais facilitam a transposio de linhas em
colunas e vice-versa, em uma consulta de referncia cruzada. O operador TOP, o qual utilizado
para retornar apenas um nmero especfico de registros ou um percentual do nmero total de
registros de uma consulta, tambm foi melhorado no SQL Server 2005. Agora, alm de nmeros,
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000051
voc pode fornecer uma varivel como valor do operador TOP, o qual utilizar o valor da
varivel. Esta mudana nos d bem mais flexibilidade na utilizao do operador TOP em rotinas
de programao.
Query Notification: Este um recurso realmente valioso, principalmente para melhorar o
desempenho das aplicaes. Com este recurso possvel criar aplicaes, as quais so capazes
de manter em cache o resultado de uma ou mais consultas. Alm disso, o SQL Server 2005
pode ser configurado, para notificar a aplicao, sempre que houver alteraes nos dados
originais, de tal forma que o resultado da consulta seja atualizado no cache, para evitar que
dados desatualizados sejam acessados. Este um recurso realmente valioso e pode ter, nas
aplicaes, o mesmo efeito de desempenho que um servidor de cache de pginas Web tem na
velocidade de acesso a Internet.
Outras novidades: Existem muitas outras novidades, no desenvolvimento de aplicaes no
SQL Server 2005, que por falta de espao no temos como descrever em detalhes neste livro.
Mas voc encontra informaes detalhadas, sobre as seguintes novidades, no Books Online, o
qual o sistema de Ajuda, instalado com o SQL Server 2005: Iniciar -> Programas -> Microsoft
SQL Server 2005 -> SQL Server Books Online. Clique em SQL Server Books Online -> Whats
New in SQL Server 2005 -> Database Engine Enhancements -> Database Engine Programmabil-
ity Enhancements.
NOVIDADES NO GERENCIAMENTO DA MQUINA DE BANCO DE DADOS DO SQL SERVER 2005
Nesta rea, encontramos as seguintes melhorias:
Separao entre Usurios e Esquemas: Nas verses anteriores do SQL Server, cada objeto
tinha um dono e este dono que, por padro, tinha permisses para fazer alteraes na estrutura
do objeto. No SQL Server 2005 todos os objetos fazem parte de um esquema (Schema) e um
usurio ou grupo (roles) pode ser dono do esquema. Com isso, fica mais fcil gerenciar as
permisses e garantir que um grupo de usurios possa atuar como dono de vrios objetos,
sendo dono do schema ao qual os objetos pertencem. Esta uma importante inovao que
tambm est relacionada rea de segurana. Eu irei detalhar esta novidade, no Captulo 6, o
qual ser completamente dedicado ao gerenciamento de segurana no SQL Server 2005.
Nova Clusula ATTACH_REBUILD_LOG: Esta nova clusula permite configurar um Banco
de Dados para ser usado em um outro servidor (chamamos isso de atachar o Banco de Dados),
sem que seja preciso carregar todos os arquivos de LOG do Banco de dados. Um exemplo
prtico onde esta clusula pode ser utilizada seria em uma situao onde estamos querendo
levar uma cpia de um Banco de Dados para um outro servidor, sendo que esta cpia ser
somente leitura. Neste caso, no preciso carregar tambm todos os arquivos de log. Esta
operao pode ser feita, usando a nova clusula ATTACH_REBUILD_LOG.
Outras novidades: Existem outras novidades, no gerenciamento da mquina de Banco de
Dados do SQL Server 2005. Voc encontra informaes detalhadas, sobre estas novidades, no
Books Online, o qual o sistema de Ajuda, instalado com o SQL Server 2005: Iniciar -> Programas
-> Microsoft SQL Server 2005 -> SQL Server Books Online. Uma vez aberto o Books online,
clique em SQL Server Books Online -> Whats New in SQL Server 2005 -> Database Engine
Enhancements -> Database Engine Manageability Enhancements.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
520000Curso Completo
NOVIDADES QUE MELHORAM O TEMPO DE UPTIME DO SQL SERVER 2005
Nesta rea, encontramos diversas melhorais, responsveis por manter o SQL Server 2005 em
funcionamento, minimizando o mximo possvel interrupes e tempos de parada, devido a erros ou
problemas de software ou hardware. A seguir apresento as principais novidades nesta rea.
Aumento no nmero de ns de cluster: Nas verses anteriores do SQL Server, eram suportados
clusters com quatro ns, para as verses de 64 bits do SQL Server e de 2 ns, para as verses de
32 bits. Com o SQL Server 2005 so suportados 8 ns para as verses de 32 bits e 4 ns para as
verses de 64 bits.
Aumento no nmero de instncias: A possibilidade de ter mais de uma instncia, do SQL
Server, no mesmo servidor, foi introduzida com o SQL Server 2000. No SQL Server 2000 o
nmero mximo de instncias, por servidor, estava limitado a 16. No SQL Server 2005, podemos
ter at 50 instncias, por servidor, para o SQL Server 2005 Enterprise Edition e at 16 instncias
para as demais edies do SQL Server 2005.
Criao de servidores espelhados (Database Mirroring): Esta uma novidade que eu
realmente aprecio, pois de grande utilidade. Com o SQL Server 2005 voc pode configurar
um servidor espelho de um servidor de produo. Quaisquer alteraes que forem feitas no
servidor de produo sero repassadas, automaticamente, para o servidor espelho. Havendo
qualquer problema com o servidor de produo, rapidamente o servidor espelho poder
ser ativado, para assumir o papel do servidor de produo. A grande vantagem do Database
Mirroring que o tempo de parada bastante reduzido e o servidor espelho sempre
mantido atualizado.
Instance Availability: Dedicated Administrator Connection (Conexo dedicada para o
Administrador): Este outro recurso de grande valor. Em determinadas situaes, pode
ocorrer de uma instncia do SQL Server simplesmente congelar, trancar. Nestas situaes,
o servidor fica instvel e pode ocorrer de voc no conseguir se conectar usando as
ferramentas de administrao tradicionais, tais como o SQL Server Management Studio.
Muitas vezes, o administrador acaba reinicializando o Windows, para tentar normalizar a
instncia do SQL Server que est com problemas. Com o SQL Server 2005, voc tem a
opo de criar uma Dedicated Administrator Connection (Conexo dedicada para o
Administrador), atravs da qual ser possvel diagnosticar e resolver problemas, mesmo em
uma instncia que esteja instvel, no respondendo aos comandos e ferramentas
tradicionais. Uma Dedicated Administrator Connection (Conexo dedicada para o
Administrador) como se fosse uma conexo de alta prioridade, para a qual o SQL Server
2005 d ateno e responde, mesmo em situaes extremas, com problemas graves. um
recurso realmente de grande utilidade.
Hot-Add Memory (Adio de memria a quente): Com o SQL Server 2005, desde que o
hardware do servidor d suporte, evidentemente, voc pode adicionar mais memria RAM,
sem desligar o servidor. O SQL Server 2005 automaticamente reconhece e passa a utilizar a
nova quantidade de memria disponvel. No possvel remover memria, sem desligar o
servidor. Somente possvel adicionar memria, sem o desligamento do servidor.
Database Snapshots: Com o SQL Server 2005 possvel criar um snapshot de um Banco de
Dados e, se necessrio, utilizar este snapshot para restaurar o Banco de Dados ao estado de
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000053
quando o snapshot foi feito. Por exemplo, s nove horas voc cria um snapshot de um Banco
de Dados. Todos os dados e configuraes do Banco de Dados e de todos os seus objetos
estaro gravados no snapshot. Agora suponhamos que em torno de 9:05 voc executou, por
engano, comandos que fizeram uma verdadeira baguna no Banco de Dados, excluindo
tabelas e configuraes vitais para o funcionamento do Banco de Dados. Voc pode
simplesmente utilizar o Snapshot criado s 9:00, para restaurar o Banco de Dados ao estado
em que ele se encontrava s 9:00 horas, ou seja, antes de terem sido executados os comandos
que bagunaram o Banco de Dados. A vantagem do snapshot, em relao ao backup/re-
store, que o snapshot bem mais fcil e rpido de ser utilizado, reduzindo com isso o
tempo de parada do Banco de Dados.
Online Restores: Nas verses anteriores do SQL Server, era preciso concluir o restore de
todo o Banco de Dados, antes que este pudesse ser colocado online e acessado pelos
usurios. Com o SQL Server 2005, o banco colocado online logo aps o incio do restore
e os dados que j foram restaurados j passam a estar disponveis para os usurios. Isso
tambm reduz o tempo de indisponibilidade do servidor, por ocasio do restore de um
Banco de Dados.
Outras novidades: Existem outras novidades, na melhoria do Uptime dos Bancos de Dados do
SQL Server 2005. Voc encontra informaes detalhadas, sobre estas novidades, no Books Online,
o qual o sistema de Ajuda, instalado com o SQL Server 2005: Iniciar -> Programas -> Microsoft
SQL Server 2005 -> SQL Server Books Online. Uma vez aberto o Books online, clique em SQL
Server Books Online -> Whats New in SQL Server 2005 -> Database Engine Enhancements ->
Database Engine Availability Enhancements.
OUTRAS NOVIDADES DA MQUINA DE BANCO DE DADOS DO SQL SERVER 2005
Voc encontra uma srie de outras novidades, sobre a mquina de Banco de Dados do SQL Server 2005,
nos seguintes caminhos, dentro do Books Online:
SQL Server Books Online -> Whats New in SQL Server 2005 -> Database Engine Enhancements
-> Database Engine XML Enhancements
SQL Server Books Online -> Whats New in SQL Server 2005 -> Database Engine Enhancements
-> Database Engine Scalability and Performance Enhancements
SQL Server Books Online -> Whats New in SQL Server 2005 -> Database Engine Enhancements
-> Database Engine International Enhancements
NOVIDADES E MELHORIAS DAS FERRAMENTAS
E UTILITRIOS DE ADMINISTRAO
Esta foi outra reas que o SQL Server 2005 deu um verdadeiro salto em relao s verses anteriores.
A seguir descrevo as principais novidades nesta rea, sendo que a maioria delas ser detalhada, no
decorrer deste livro.
Novo console de administrao SQL Server Management Studio: No SQL Server 2000, o
principal console de administrao era o SQL Server Enterprise Management. No SQL Server
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
540000Curso Completo
2005 foi criado um novo console SQL Server Management Studio. Este novo console
apresenta uma srie de novas funcionalidades e melhorias, dentre as quais cabe destacar a
integrao da interface para execuo de comandos, diretamente no SQL Server Manage-
ment Studio. Por exemplo, no SQL Server 2000 havia o SQL Server Enterprise Management
que era a interface grfica para administrao e o Query Analyzer, o qual era utilizado para
execuo de comandos T-SQL. No SQL Server 2005, estas duas funes esto integradas no
SQL Server Management Studio, conforme voc ver, atravs dos exemplos prticos, nos
demais captulos deste livro.
Melhorias na ferramenta de criao de consultas: A ferramenta grfica para a criao de
consulta foi bastante melhorada no SQL Server 2005. Voc ir utilizar esta ferramenta quando
for abordada a criao de Views (Captulo 9) e no Captulo 14 - Servios de Relatrios do SQL
Server 2005 Reporting Services.
Nova ferramenta SQL Computer Manager: Esta ferramenta concentra em uma nica
ferramenta a administrao de vrios servios do SQL Server 2005: SQL Server, SQL Server
Agent, Analysis Server, Report Server, Microsoft Search, Microsoft Distributed Transaction Co-
ordinator (MS DTC)Full-Text Search. Usando o SQL Computer Manager possvel parar, pausar
e reinicializar estes servios. Tambm possvel fazer configuraes bsicas dos protocolos de
redes, utilizados pelo SQL Server 2005, usando o SQL Computer Manager.
Melhorias na ferramenta Database Tuning Advisor: O Database Tuning Advisor um
assistente, o qual utilizado para fazer uma anlise dos ndices de uma tabela ou de todo o
Banco de Dados. Este assistente aps a anlise pode sugerir e aplicar alteraes, para melhorar
o desempenho dos ndices e do Banco de Dados como um todo. Diversas melhorias foram
introduzidas neste assistente, tais como a possibilidade de gerar os resultados da sua execuo
no formato XML, a possibilidade de fazer ajuste em triggers, etc.
Melhorias no DTS Import/Export Wizard: O DTS uma ferramenta utilizada para importao
e exportao de dados do e para o SQL Server 2005. Alm de importar e exportar dados, nos
mais variados formatos, o DTS permite que sejam feitas alteraes e depuraes nos dados,
durante a importao/exportao. Muitas melhorias foram introduzidas no DTS do SQL Server
2005. Voc aprender a utiliz-las no Captulo 7.
Voc encontra uma descrio completa de todas as novidades sobre as ferramentas e utilitrios de
administrao do SQL Server 2005 no seguinte caminho, dentro do Books Online: SQL Server Books
Online -> Whats New in SQL Server 2005 -> Tools and Utilities Enhancements.
Muitas outras melhorias e funcionalidades foram introduzidas. Conforme descrevi no incio deste
tpico, no temos aqui espao suficiente para descrever todas. A maioria delas ser descrita e
exemplificada ao longo do livro. Como por exemplo o novo servio Reporting Services, o qual ser
detalhadamente abordado no Captulo 14. Se voc quer entrar de cabea e saber logo, em detalhes,
sobre todas as novidades do SQL Server 2005, consulte uma das seguintes fontes:
Acesse o Books Online: Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Server Books
Online.
O seguinte livro: SQL Server 2005 New Features, Editora McGraw Hill, 275 pginas. Mais
detalhes em: http://www.amazon.com/exec/obidos/tg/detail/-/0072227761/qid=1110935474/
sr=1-1/ref=sr_1_1/002-8063366-0124867?v=glance&s=books
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000055
FUNDAMENTOS EM: INSTALAO DO
MICROSOFT SQL SERVER 2005
PR-REQUISITOS
Conhecimentos bsicos de instalao de programas no ambiente Windows.
METODOLOGIA
Instalao passo a passo do SQL Server 2005.
Neste item aprenderemos a instalar o Microsoft SQL Server 2005 e a fazer o Upgrade de verses anteriores
do SQL Server 2005. Tambm veremos as principais diferenas entre as funcionalidades disponveis
nas diferentes verses do SQL Server.
AS DIFERENTES EDIES DO MICROSFT SQL SERVER 2005
O termo Edio identifica as diferentes funcionalidades e capacidades do SQL Server 2005. Por
exemplo, as funcionalidades e capacidades do SQL Server 2005 Express Edition so bem diferentes das
capacidades do SQL Server 2005 Enterprise Edition.
Temos as seguintes edies:
SQL Server 2005 Enterprise Edition: Esta a verso mais completa do SQL Server 2005. a
verso a ser utilizadas em servidores, nos quais estaro Bancos de Dados a serem utilizados
pelos usurios da rede. Por exemplo, se voc precisa de um Banco de Dados, para dar suporte
a um site de Comrcio Eletrnico, ou um Banco de Dados de servios de RH, a ser consultado
por milhares de funcionrios de todas as filiais da empresa, esta a verso do SQL Server
2005 a ser utilizada.
SQL Server 2005 Developer Edition: Esta edio especialmente indicada para
desenvolvedores. Ele tem todas as funcionalidades do SQL Server 2005 Enterprise Edition,
porm licenciada apenas para uso em uma estao de desenvolvimento e testes. Voc j deve
estar pensando e seu eu comprar esta edio, que mais barata e usar ela em um servidor de
produo. Alm de ser ilegal, no ir funcionar, pois esta edio tem um nmero bem limitado
de conexes que so aceitas, simultaneamente, o que impede, na prtica, o seu uso em um
servidor da rede. Voc pode desenvolver todos os Bancos de Dados e aplicativos usando a
Developer Edition. Uma vez tendo sido tudo testado e aprovado, voc pode simplesmente
fazer o upgrade para a Enterprise Edition, para colocar o Banco de Dados e os sistema
desenvolvidos, em produo.
SQL Server 2005 Express Edition: Esta uma edio que contm um conjunto mnimo de
funcionalidades do SQL Server 2005. Esta edio utilizada no desenvolvimento de aplicaes.
Por exemplo, se voc est desenvolvendo uma aplicao, usando VB.NET, e quer armazenar os
dados desta aplicao em um Banco de Dados do SQL Server 2005. Voc pode utilizar o SQL
Server 2005 Express Edition como servidor de Banco de Dados. Voc ter acesso somente as
funcionalidades mnimas, tais como criao de tabelas, ndices e consultas. Como esta Edio
gratuita, ele barateia bastante o desenvolvimento de aplicaes que armazenam dados em
Bancos de Dados no formato do SQL Server 2005. Claro que ela tem limitaes quanto ao
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
560000Curso Completo
N
O
T
A
desempenho e capacidades, sendo indicada apenas para pequenas aplicaes. Eu diria para
aplicaes a serem utilizadas por 10 ou menos usurios.
SQL Server 2005 Mobile Edition: uma edio limitada SQL Server 2005, a qual indicada para
uso em dispositivos mveis, tais como Notebooks e Assistentes pessoais. Apresenta capacidades
de replicao de dados com servidores rodando o SQL Server 2005 Enterprise Edition.
REQUISITOS DE HARDWARE E SOFTWARE
PARA A INSTALAO DO SQL SERVER 2005
Antes de instalarmos o SQL Server 2005, existem algumas recomendaes que devemos observar,
segundo a documentao do Books OnLine, conforme descrito a seguir.
Antes de instalar o SQL Server 2005, verifique os seguintes fatores:
Certifique-se de que o computador onde ser instalado o SQL Server 2005 (verses de 32 bits)
atenda aos requisitos mnimos de hardware, que so:
1. Processador padro Intel, Pentium 600 MHz ou superior. O recomendado um mnimo de
Pentium de 1 GHz.
2. Memria RAM de, no mnimo, 256 MB, sendo 512 MB recomendado.
3. Depende dos servios que voc ir instalar. O SQL Server 2005 precisa em torno de 350 MB.
Se voc for instalar tambm o Analysis Services, precisar de algo em torno de 150 MB
adicionais. Se voc for instalar tambm o Reporting Services, precisar mais 100 MB. Ou
seja, com 1 GB d e sobra, mesmo instalando todos os servios disponveis.
4. Monitor ou superior, com resoluo de 1024 x 768 ou superior.
5. Microsoft mouse ou compatvel.
6. Drive de CD-ROM ou leitor de DVD.
Evidentemente que estas so caractersticas mnimas de hardware, para que voc possa instalar o SQL Server 2005. 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 2005 que ser instalada.
No incio deste item, temos uma descrio completa das diferentes edies do SQL Server. Na
Tabela 2.1, voc tem uma relao, contida no Books Online, a qual descreve em quais verses
do Windows cada edio do SQL Server 2005 pode ser instalada.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000057
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:
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 do domnio. 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 2005, faa o logon com uma conta que tenha permisses de
Administrador do domnio, ou Administrador local, se voc estiver instalando o SQL Server
2005 em um servidor que no faz parte de um domnio.
Verso do Windows/Edio do SQL Server 2005 Developer Edition SQL Express Edition
Windows Server 2003 Standard Edition Yes Yes
Windows Server 2003 Enterprise Edition Yes Yes
Windows Server 2003 Datacenter Edition Yes Yes
Windows 2003 Embedded Edition Yes Yes
Windows 2003 Web Edition Yes Yes
Windows Small Business Server 2003 Standard Edition Yes Yes
Windows Small Business Server 2003 Premium Edition Yes Yes
Windows XP Professional SP1 or later Yes Yes
Windows XP Media Edition, SP1 or later Yes Yes
Windows XP Tablet Edition, SP1 or later Yes Yes
Windows 2000 Professional SP41 or later Yes Yes
Windows 2000 Server SP41 or later Yes Yes
Windows 2000 Advanced Server SP41 or later Yes Yes
Windows 2000 Datacenter Server SP4
1
or later Yes Yes
Tabela 2.1 Verses do Windows x Edies do SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
580000Curso Completo
RECOMENDAES DE SEGURANA, ANTES INSTALAO DO SQL SERVER 2005
Existem alguns cuidados e recomendaes, em relao segurana, os quais devem ser observados,
antes de partirmos para a instalao SQL Server 2005. A seguir descrevo os cuidados a serem observados:
O primeiro passo garantir medidas bsicas de segurana (tanto fsicas quanto lgicas), para o
servidor onde ser instalado o SQL Server 2005. Estas medidas incluem aes tais como:
Garantir a segurana fsica e o controle de acesso sala dos servidores.
Instalao e configurao de um firewall entre a rede da sua empresa e o mundo externo. Se
clientes de fora precisarem acessar dados no servidor SQL Server 2005, as portas TCP 1433 e
UDP 1434 devero estar habilitadas, no firewall.
Sempre que possvel, instale diferentes servios em diferentes servidores. Por exemplo, instale
os servios bsicos de Banco de Dados em um servidor e os servios de gerao de relatrios
em outro servidor. Isso evita que problemas em um dos servios paralisem todos os demais
servios (o que ocorreria se todos estivessem no mesmo servidor).
Nunca instale o SQL Server 2005 em um DC do domnio, por questes de desempenho. Nos
exemplos deste livro, estou utilizando o SQL Server 2005 em um DC, apenas por questes de
falta de mais computadores, na minha rede domstica. Mas em um ambiente de produo,
voc deve, sempre que possvel, evitar de instalar o SQL Server 2005 em um DC do domnio,
por questes de desempenho e segurana.
Use somente parties formatadas com o sistema de arquivos NTFS. O uso de parties com
FAT32 deve ser completamente descartado, por questes de segurana. Se voc usar
criptografia na pasta onde forem armazenados os arquivos dos Bancos de Dados do SQL
Server 2005, os arquivos sero criptografados em nome da conta com a qual foi configurado
para rodar o Servio do SQL Server 2005. Somente esta conta ser capaz de descriptografar
os dados. Se, por algum motivo, voc precisar alterar a conta com a qual executado o
service do SQL Server 2005, voc dever primeiro descriptografar os arquivos, usando a
conta antiga e ento criptograf-los novamente, usando a nova conta.
Para garantir um melhor desempenho e redundncia, voc pode usar volumes do tipo RAID-
5, para dados crticos, os quais necessitam de melhor desempenho e maior disponibilidade.
O mais indicado (embora seja mais caro) o uso de solues da RAID implementadas em
hardware (placas de RAID). Se no for possvel o uso de solues de RAID via hardware, voc
pode usar as solues de RAID em software, disponveis no Windows 2000 Server e no
Windows Server 2003.
Outro aspecto fundamental a ser considerado, em um ambiente de produo, a segurana
fsica. A sala onde estar o computador, no qual o SQL Server 2005 ser instalado, deve estar
protegida do acesso ao pblico, tendo o acesso controlado e liberado somente para pessoas
autorizadas. De nada adiantar voc cuidar de toda a segurana lgica do acesso s informaes
do SQL Server 2005, se a segurana fsica for deixada de lado.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000059
NOMEANDO AS INSTNCIAS DO SQL SERVER 2005
Uma das novidades introduzidas no SQL Server 2000 foi a possibilidade de instalar mltiplas instncias
do SQL Server, em um mesmo servidor. No SQL Server 2000 voc poderia instalar at 16 instncias em
um mesmo servidor. No SQL Server 2005, este limite foi aumentado para at 50 instncias em um
nico servidor. Neste tpico, apresentarei algumas consideraes, sobre a nomeao de mltiplas
instncias, em um servidor com o SQL Server 2005.
Conforme descrevi no incio do captulo, o SQL Server 2005 um servidor de Banco de Dados (sua
principal funo, dentre outras). O mais comum manter os dados no SQL Server 2005, e criar aplicaes
clientes, que acessam estes dados, quer sejam aplicaes Cliente/Servidor tradicionais, at as mais
modernas aplicaes Web com quatro ou mais camadas.
As aplicaes clientes se conectam com uma instncia do SQL Server 2005, para acessar as tabelas e
demais objetos dos Bancos de Dados do SQL Server 2005. Cada instncia do SQL Server 2005 como se
fosse um servidor completamente independente, podendo oferecer um diferente conjunto de services
e configuraes.
Uma instncia pode ser de dois tipos: A instncia padro ou uma instncia nomeada. A instncia
padro gerada pelo programa de instalao do SQL Server 2005, baseada no nome do computador no
qual o SQL Server 2005 est sendo instalado e no requer que a aplicao cliente especifique o nome da
instncia, para fazer a conexo. Por exemplo, em um servidor chamado dbserv01, o nome do servidor
dbsrv01 ser tambm o nome da instncia padro, ou seja, a instncia qual os clientes iro se
conectar, a menos que seja especificado o nome de uma instncia diferente. J uma instncia nomeada
identificada pelo nome do computador, bem como pelo nome da instncia, a qual criada pelo
usurio. Por exemplo, no servidor dbsrv01, o usurio pode criar uma instncia nomeada como vendas.
Neste caso, o nome completo da instncia fica sendo: dbsrv01\vendas. Observe que o padro para as
instncias nomeadas : nome_do_servidor\nome_da_instncia.
Quando voc instala o SQL Server, pela primeira vez em um servidor, o programa de instalao ir criar
automaticamente a instncia padro. Voc pode aceitar esta opo ou alterar para criar j uma instncia
nomeada, sem que seja instalada uma instncia padro.
Considere os seguintes detalhes, em relao nomeao de instncias, no SQL Server 2005:
As instncias nomeadas no diferem maisculas de minsculas. Para o SQL Server 2005,
dbsrv01\vendas ou DBSRV01\VENDAS ou dbsrv01\Vendas, representam exatamente a
mesma instncia.
O nome de uma instncia nomeada no pode conter palavras reservadas do SQL Server 2005,
tais como SELECT, Default, MSSQLServer e assim por diante. Se voc especificar uma palavra
reservada, o processo de instalao ir apresentar um erro e no ser concludo.
O nome da instncia limitado a 16 caracteres.
O primeiro caractere do nome da instncia deve ser uma letra ou um sinal de sublinhado ( _ ). Os
caracteres subseqentes podem ser letras, nmeros decimais, o sinal de $ ou sublinhado ( _ ).
No so permitidos espaos em branco no nome da instncia e nem os seguintes caracteres: \
, : & # @
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
600000Curso Completo
N
O
T
A
Considere os seguintes detalhes, ao decidir se voc ir criar uma instncia default ou uma
instncia nomeada:
Se voc estiver fazendo o upgrade do SQL Server 7.0 para o SQL Server 2005, obrigatoriamente
ser criada uma instncia default.
Se voc for instalar uma nica instncia do SQL Server 2005, opte por usar uma instncia
default.
Se voc estiver instalando o Microsoft SQL Server 2005 Express Editionl, a opo Named In-
stance (Instncia Nomeada) vir selecionada, automaticamente, no assistente de instalao.
Para instalar uma instncia default do SQL Server Express Edition, selecione a opo Default
Instance.
Para acompanhar os exemplos deste livro, voc deve instalar o SQL Server 2005 Developers Edition ou o SQL Server 2005 Enterprise Edition. No
exemplo do prximo tpico, mostrarei como instalar, passo-a-passo, o SQL Server 2005 Developers Edition. Utilizarei a verso Beta 2 do SQL
Server 2005, a qual a verso disponvel, no momento em que escrevo este livro. Pequenas diferenas podero existir entre a verso Beta 2 e
a verso final, normalmente relacionadas a problemas e erros existentes na verso Beta 2, os quais so corrigidos para a verso final. Mas so
pequenas diferenas mesmo, sendo que a quase totalidade das telas e comandos ser exatamente a mesma, na verso final.
INSTALANDO O SQL SERVER 2005 NO WINDOWS SERVER 2003
Vamos aprender, passo a passo, a instalar o SQL Server 2005, Developer Edition. Neste exemplo usarei
um computador que est rodando o Windows Server 2003. Voc pode usar um computador rodando
qualquer uma das seguintes verses do Windows: Windows 2000 Professional, Windows 2000 Server,
Windows XP Professional ou Windows Server 2003. Iremos instalar o SQL Server 2005 em um
computador chamado SERVIDOR2. Inicialmente iremos criar uma instncia default.
Para Instalar o SQL Server 2005 Developer Edition, siga os passos indicados a seguir:
1. Faa o logon com uma conta com permisses de Administrador no servidor onde o SQL Server
2005 ser instalado.
2. Coloque o CD-ROM do SQL Server 2005 no drive de CD e aguarde alguns instantes. Deve
surgir a tela indicada na Figura 2.6. Esta tela apresenta trs grupos de opes: O primeiro grupo
Prepare. Este grupo d acesso a opes de preparao, as quais devem ser tomadas antes da
instalao do SQL Server 2005. Ao clicar na opo Review Hardware e Software Requirements,
ser aberta uma janela de ajuda, com informaes sobre o hardware e software, necessrios
instalao do SQL Server 2005. A opo Read the release notes 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 2005, 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000061
Figura 2.6 Tela inicial da instalao do SQL Server 2005.
3. Para iniciar a instalao, clique na opo Run the SQL Server Instalattion Wizard. Ser exibida
uma tela, com o contrato de licena do SQL Server 2005. Para seguir com a instalao, voc
deve marcar a opo I accept de licensing terms and conditions e clicar em Next. Faa isso.
Ser exibida a prxima tela do assistente.
4. Ser exibida uma tela, mostrando quais componentes sero instalados, para que seja possvel a
instalao do SQL Server 2005, conforme indicado na Figura 2.7. Nesta figura voc pode observar
que ser instalado o .NET Framework 2.0, o Microsoft SQL Native Client e o SQL Server 2005
(Beta 2). Clique no boto Install, para continuar com a instalao.
Figura 2.7 Lista de componentes de suporte que sero instalados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
620000Curso Completo
Figura 2.8 Instalando os componentes necessrios instalao do SQL Server 2005.
6. A instalao dos componentes que so necessrios, antes que o SQL Server 2005 possa ser
instalado, ser concluda. Quando a instalao for concluda, o boto Finish ser habilitado.
Clique no boto Finish para iniciar a instalao do SQL Server 2005 propriamente dito, j que
o que foi instalado at agora foram os componentes que do suporte execuo do SQL Server
2005, tais como o .NET Framework 2.
5. A instalao dos itens que so pr-requisitos para o SQL Server 2005, tais como o .NET Framewok,
ser iniciada. O andamento ser indicado, conforme exemplo da Figura 2.8:
Figura 2.9 A tela inicial do assistente de instalao do SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000063
7. O processo de instalao do SQL Server 2005 faz uma srie de verificaes e passa a copiar
arquivos do CD de instalao. A tela inicial do assistente de instalao do SQL Server 2005 ser
exibida, conforme indicado na Figura 2.
8. Clique em Next para seguir para a prxima etapa do assistente de instalao. O assistente de
instalao far uma verificao, para certificar-se de que est tudo OK para iniciar a instalao.
Ser exibida uma listagem dos componentes verificados. Se algum problema for detectado,
ser exibido um x ao lado do componente com problemas. Na coluna Message
disponibilizado um link. Se voc clicar neste link, exibida uma mensagem indicando o que
deve ser feito, para solucionar o problema que est impedindo a instalao do SQL Server
2005. Voc deve solucionar o problema, antes de prosseguir com a instalao. No nosso
exemplo, nenhum problema foi detectado e a instalao pode continuar, sem problemas,
conforme indicado na Figura 2.10
Figura 2.10 No foram encontrados problemas que impeam a continuao da instalao.
9. Clique no boto Continue, para continuar com a instalao do SQL Server 2005.
10. O assistente de instalao faz uma srie de preparaes e exibe uma tela, para que voc coloque
o seu nome, nome da sua empresa e o nmero de srie do SQL Server 2005, conforme indicado
na Figura 2.11:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
640000Curso Completo
Figura 2.11 Inserindo informaes do nome e nmero de srie.
11. Clique em Next, para seguir para a prxima etapa do assistente de instalao.
12. Nesta etapa voc deve marcar quais os servios que sero instalados, conforme exemplo da
Figura 2.12. Ao instalar o SQL Server 2005, diversos servios podem ser 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 log off, o servio
continua carregado na memria atendendo s requisies dos clientes. Todo servio no Win-
dows 2000 ou no Windows Server 2003 precisa ser executado 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 e como gerenciar estes servios. O SQL
Server o service bsico, o Banco de Dados em si. Voc pode instalar outros servios, tais como
o Analysis Services, Reporting Services e assim por diante. A dica aqui instalar somente os
servios que voc ir realmente utilizar. Se voc est instalando o SQL Server 2005 em um
servidor de produo, deve instalar somente os servios que sero utilizados. Se voc est
instalando o SQL Server 2005 em um servidor para estudo, deve instalar todos os servios, para
t-los disponveis para estudar, quando necessrio.
13. Marque os servios a serem instalados e clique em Next, para seguir para a prxima etapa do
assistente de instalao.
14. Nesta etapa que voc seleciona se voc deseja criar uma instncia default ou uma instncia
nomeada, conforme descrito anteriormente. Nesta primeira instalao, vamos criar uma
instncia nomeada. Certifique-se de que a opo Default instance esteja marcada e clique em
Next, para seguir para a prxima etapa do assistente de instalao.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000065
Figura 2.12 Selecione os servios a serem instalado.
15. Nesta etapa voc ir definir com qual conta cada servio do SQL Server ir rodar. Voc pode
definir a mesma conta para todos os servios, ou definir uma conta diferente para cada um
dos servios. Voc pode optar por usar a conta local System (sendo esta a opo mais
recomendada), ou informar uma conta do domnio. Se voc marcar a opo Customize for
each service account, a lista abaixo desta opo ser habilitada. A voc escolhe um servio
na lista e define a conta para o servio selecionado. Depois voc seleciona um novo servio
na lista e define a conta para este novo servio e assim por diante. Com a opo Customize
for each service account, voc pode definir configuraes personalizadas, para cada um dos
servios. No nosso exemplo, vou usar a mesma conta para todos os servios (opo Custom-
ize for each service account desmarcada) e vou informar uma conta do domnio, conforme
exemplo da Figura 2.13:
Figura 2.13 Definindo as configuraes de conta.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
660000Curso Completo
16. Defina as configuraes desejadas e clique em Next, para seguir para a prxima etapa do
assistente de instalao.
17. Nesta prxima etapa voc deve definir o modo de autenticao que ser usado, pela instncia
do SQL Server que est sendo instalada. Existe o modo Windows Authentication Mode. Com
esse modo, somente contas do domnio podero ser utilizadas para acessar o SQL Server 2005.
Usando o modo Mixed Mode, podero ser usadas contas do domnio e tambm contas do SQL
Server 2005. No Captulo 6, sobre segurana, voc aprender mais detalhes sobre os modos de
autenticao. Nesta etapa, voc tambm pode definir uma senha para a conta sa. A conta sa
a conta de administrador do SQL Server 2005, ou seja, a conta com maiores poderes no SQL
Server 2005. Por isso sempre recomendado definir uma senha forte para esta conta. Entenda-
se por senha forte uma senha que usa letras, nmeros e caracteres especiais e que tenha, no
mnimo, 10 caracteres. Defina as configuraes desejadas, conforme exemplo da Figura 2.14:
Figura 2.14 Definindo o modo de autenticao e a senha da conta sa.
18. Clique em Next, para seguir para a prxima etapa do assistente de instalao.
19. Nesta etapa voc define as configuraes de Collation (cada idioma tem configuraes prprias)
e outras caractersticas que afetam a maneira como o SQL Server 2005 ir fazer as comparaes
de dados, para filtrar os registros, ao executar uma consulta. Voc pode habilitar ou desabilitar
opes como Case sensitive (diferenciar maisculas e minsculas ou no), Accent sensitve
(diferenciar acentos ou no) e assim por diante. Defina as configuraes desejadas e clique em
Next, para seguir para a prxima etapa do assistente.
20. Nesta etapa voc deve informar se o Banco de Dados do Reporting Services ser armazenado na
instncia que est sendo instalada ou em uma instncia j existente. No nosso exemplo, como a
primeira instncia que est sendo instalada, certifique-se de que a opo Host in the current instace
of SQL Server esteja marcada e clique em Next, para seguir para a prxima etapa do assistente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000067
21. Nesta etapa voc deve informar o nome de um servidor smpt e o endereo do remetente.
Estas informaes sero utilizadas pelo Reporting Services, para o envio de relatrios por e-
mail. Voc aprender mais sobre estas funcionalidades no Captulo 14. Informe o nome do
servidor SMPT e o endereo de e-mail do remetente e clique em Next, para seguir para a
prxima etapa do assistente.
22. Nesta etapa voc pode marcar a opo para enviar relatrios diretamente para a Microsoft, em
caso de erros fatais na execuo do SQL Server 2005 ou de um dos seus componentes. No sei
se esta etapa estar disponvel na verso final ou se somente nas verses Beta. Aceite as
configuraes sugeridas e clique em Next, para seguir para a prxima etapa do assistente.
23. Ser exibida a tela final do assistente, com um resumo de todas as opes selecionadas, conforme
indicado na Figura 2.15:
Figura 2.15 Etapa final do assistente de instalao.
24. Voc pode usar o boto Back para voltar a uma das etapas anteriores e alterar alguma
configurao, caso seja necessrio. Para concluir a instalao, clique no boto Install e aguarde.
Ser exibida uma janela, com o progresso da instalao, conforme indicado na Figura 2.16:
25. Uma vez concluda a instalao ser habilitado o boto Next. Ser exibida a tela final do assistente,
indicando que a instalao foi concluda com sucesso, conforme indicado na Figura 2.17.
26. Clique em Finish para encerrar o assistente. Pronto, o SQL Server 2005 est instalado no
seu computador. Agora s precisamos aprender a utiliz-lo. Mas isso assunto para todo o
restante deste livro.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
680000Curso Completo
Figura 2.16 O progresso da instalao do SQL Server 2005.
Figura 2.17 Instalao concluda com sucesso.
A seguir descrevo alguns dados importantes sobre o SQL Server 2005, tais como a estrutura de pastas e
subpastas que criada e quais os principais arquivos relacionados a cada servio do SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000069
A ESTRUTURA DE PASTAS E ARQUIVOS DO SQL SERVER 2005
Neste item, mostrarei qual a estrutura de pastas e arquivos, que criada pelo SQL Server 2005. Uma
instalao do SQL Server 2005 formada por uma ou mais instncias, podendo ser uma instncia
padro e uma ou mais instncias nomeadas, conforme descrito anteriormente. Cada instncia tem um
conjunto de arquivos nicos, utilizados somente pela instncia. Existe tambm um conjunto de pastas
e arquivos comuns, isto , utilizados por todas as instncias. Por exemplo, para uma instncia do SQL
Server 2005, na qual foram instalados os services bsicos da mquina de Banco de Dados, alm do
Analysis Services e do Reporting Services, cada componente, de cada instncia, tem um conjunto
prprio de dados e arquivos executveis, alm de um conjunto de arquivos que compartilhado por
todos os componentes, de todas as instncias.
Por padro, o SQL Server 2005 instalado na seguinte pasta:
C:\Arquivos de programas\Microsoft SQL Server
Os arquivos comuns, isto , os arquivos que so compartilhados por todas as instncias do SQL Server
2005, so gravados na seguinte pasta: C:\Arquivos de programas\Microsoft SQL Server\90,
considerando que o SQL Server 2005 foi instalado no drive C:
Figura 2.18 Estrutura de pastas e subpastas do SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
700000Curso Completo
Na Figura 2.18, retirada do Books Online, temos uma representao que mostra, claramente, a estrutura
de pastas utilizada pelo SQL Server 2005. Nesta figura, temos a representao da estrutura onde so
gravados os arquivos compartilhados por todas as instncias e das estruturas de pastas que so utilizadas
por cada instncia, individualmente.
Na Tabela 2.2, obtida a partir do Books Online, exibido o caminho padro, para os principais arquivos
do SQL Server 2005. Este caminho pode ser alterado, durante a instalao. Systemdrive representa o
drive onde o SQL Server 2005 foi instalado; normalmente o drive C:, mas pode ser outro drive.
CRIANDO UMA SEGUNDA INSTNCIA
DO SQL SERVER DEVELOPER EDITION
Anteriormente havamos instalado uma instncia default (no nomeada) no computador chamado
SERVIDOR2. Agora vamos instalar uma segunda instncia, a qual ser obrigatoriamente uma instncia
nomeada (lembre-se de que temos uma nica instncia padro e todas as demais so instncias nomeadas)
chamada JBCURSOS, neste mesmo servidor. Com isso, teremos as seguintes instncias disponveis:
SERVIDOR2: esta a instncia default
SERVIDOR2\JBCURSOS: primeira instncia nomeada
Conforme descrito anteriormente, como se tivssemos dois servidores SQL Server completamente
separados, porm rodando no mesmo computador. Ento mos obra.
Para criar uma segunda instncia do SQL Server 2005 Developer Edition, siga os passos indicados a seguir:
1. Faa o logon com uma conta com permisses de administrador.
2. Coloque o CD do SQL Server 2005 Developer Edition no drive de CD. Ser exibida a tela inicial
do CD de instalao.
3. Na tela inicial da instalao, d um clique na opo Rum the SQL Server Installation Wizard.
Funcionalidade Caminho padro
Database Engine
Server Components \Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Binn\
Data Files \Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\
Analysis Services
Analysis Server \Program Files\Microsoft SQL Server\MSSQL.n\OLAP\Bin\
Data Files \Program Files\Microsoft SQL Server\MSSQL.n\OLAP\Data
Reporting Services
Report Server \Program Files\Microsoft SQL Server\MSSQL.n\Reporting Services\ReportServer\Bin\
Report Manager \Program Files\Microsoft SQL Server\MSSQL.n\Reporting Services\ReportManager\Bin\
Notification Services \Program Files\Microsoft SQL Server\90\NotificationServices\
Data Transformation Services \Program Files\Microsoft SQL Server\90\DTS\
Tabela 2.2 Caminho padro de instalao dos principais componentes.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000071
4. Ser exibida a tela com o contrato de licena. Marque a opo I accept the licensing terms and
conditions e clique no boto Next, para seguir para a prxima etapa.
5. Na tela inicial, d um clique no boto Next. Ser exibida a janela Computer Name.
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. Como
uma segunda instncia que est sendo instalada, os componentes que so pr-requisitos para o
SQL Server 2005 j esto instalados, tais como o .NET Framewok 2. Ser exibida uma tela,
informando que os componentes necessrios instalao do SQL Server 2005 j esto
disponveis. Clique em Finish, para fechar esta tela. O assistente de instalao ser iniciado.
Aguarde at que seja exibida a primeira tela do assistente de instalao. A primeira tela apenas
informativa. Clique em Next, para seguir para a prxima etapa do assistente.
8. O assistente de instalao far uma verificao, para certificar-se de que est tudo OK para
iniciar a instalao, ou seja, que todos os componentes que so pr-requisitos para a instalao
esto instalados e corretamente configurados. Ser exibida uma listagem dos componentes
verificados. Se algum problema for detectado, ser exibido um x ao lado do componente com
problemas. Na coluna Message disponibilizado um link. Se voc clicar neste link, exibida
uma mensagem indicando o que deve ser feito para solucionar o problema, que est impedindo
a instalao do SQL Server 2005. Voc deve solucionar o problema, antes de prosseguir com a
instalao. No nosso exemplo, nenhum problema foi detectado e a instalao pode continuar,
sem problemas, conforme indicado na Figura 2.19.
Figura 2.19 No foram encontrados problemas que impedem a continuao da instalao.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
720000Curso Completo
9. Clique no boto Continue, para continuar com a instalao da segunda instncia do SQL
Server 2005.
10. O assistente de instalao faz uma srie de preparaes e exibe uma tela, para que voc coloque o seu
nome, o nome da sua empresa e o nmero de srie do SQL Server 2005. Insira as informaes solicitadas.
11. Clique em Next, para seguir para a prxima etapa do assistente de instalao.
12. Nesta etapa voc deve marcar quais os servios que sero instalados, conforme exemplo j descrito
anteriormente, na Figura 2.12. Ao instalar o SQL Server 2005, diversos servios podem ser instalados.
No final do captulo veremos um pouco mais sobre os servios que so instalados com o SQL Server
e como gerenciar estes servios. O SQL Server o servio bsico, o Banco de Dados em si. Voc pode
instalar outros servios, tais como o Analysis Services, Reporting Services, DTS e assim por diante.
A dica aqui instalar somente os servios que voc ir realmente utilizar. Se voc est instalando o
SQL Server 2005 em um servidor de produo, deve instalar somente os servios que sero utilizados.
Se voc est instalando o SQL Server 2005 em um servidor para estudo, deve instalar todos os
servios, para t-los disponveis para estudar, quando necessrio.
13. Marque os servios a serem instalados e clique em Next, para seguir para a prxima etapa do
assistente de instalao.
14. Nesta etapa que voc seleciona se deseja criar uma instncia default ou uma instncia nomeada,
conforme descrito anteriormente. No exemplo prtico anterior, criamos uma instncia de-
fault. Agora iremos criar a instncia nomeada CURSOSJB. Marque a opo Named instance e
digite o nome da instncia, conforme indicado na Figura 2.20. Clique em Next, para seguir
para a prxima etapa do assistente de instalao.
Figura 2.20 Criando uma instncia nomeada CURSOSJB.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000073
15. Se na etapa 12 voc selecionou servios que j estavam instalados em outras instncias, o SQL
Server 2005 exibir uma tela, informando os componentes comuns, para os servios que esto
tambm em outras instncias. Clique em Next para seguir para a prxima etapa do assistente.
16. Nesta etapa voc ir definir com qual conta cada servio do SQL Server ir rodar. Voc pode
definir a mesma conta para todos os servios, ou definir uma conta diferente, para cada um dos
servios. Voc pode optar por usar a conta local System (sendo esta a opo mais recomendada),
ou informar uma conta do domnio. Se voc marcar a opo Customize for each service account,
a lista abaixo desta opo ser habilitada. A voc pode escolher um servio na lista e define a
conta para o servio selecionado. Depois voc seleciona um novo servio na lista e define a conta
para este novo servio e assim por diante. Com a opo Customize for each service account, voc
pode definir configuraes personalizadas, para cada um dos servios. No nosso exemplo, vou
usar a mesma conta para todos os servios (opo Customize for each service account desmarcada)
e vou informar uma conta do domnio. Defina as configuraes desejadas e clique em Next, para
seguir para a prxima etapa do assistente de instalao.
17. Nesta prxima etapa voc deve definir o modo de autenticao que ser usado, pela instncia
do SQL Server que est sendo instalada. Existe o modo Windows Authentication Mode. Com
esse modo, somente contas do domnio podero ser utilizadas para acessar o SQL Server 2005.
Usando o modo Mixed Mode, podero ser usadas contas do domnio e tambm contas do SQL
Server 2005. No Captulo 6, sobre segurana, voc aprender mais detalhes sobre os modos de
autenticao. Nesta etapa, voc tambm pode (ou melhor, voc deve definir uma senha) definir
uma senha para a conta sa. A conta sa a conta de Administrador do SQL Server 2005, ou seja,
a conta com maiores poderes no SQL Server 2005. Por isso sempre recomendado definir
uma senha forte para esta conta. Entenda-se por senha forte uma senha que usa letras, nmeros
e caracteres especiais e que tenha, no mnimo, 10 caracteres. Defina as configuraes desejadas
e clique em Next, para seguir para a prxima etapa do assistente de instalao.
18. Nesta etapa voc define as configuraes de Collation (cada idioma tem configuraes prprias)
e outras caractersticas que afetam a maneira como o SQL Server 2005 ir fazer as comparaes
de dados, para filtrar os registros, ao executar uma consulta. Voc pode habilitar ou desabilitar
opes como Case sensitive (diferenciar maisculas e minsculas ou no), Accent sensitve
(diferenciar acentos ou no) e assim por diante. Defina as configuraes desejadas e clique em
Next, para seguir para a prxima etapa do assistente.
19. Nesta etapa voc deve informar o nome das pastas virtuais, utilizadas pelo Reporting Ser-
vices. Informe o nome das pastas virtuais e clique em Next, para seguir para a prxima
etapa do assistente.
20. Nesta etapa voc deve informar se o Banco de Dados do Reporting Services ser armazenado na
instncia que est sendo instalada ou em uma instncia j existente. No nosso exemplo, como
estamos configurando esta segunda instncia, independente da primeira, certifique-se de que
a opo Host in the current instace of SQL Server esteja marcada e clique em Next, para seguir
para a prxima etapa do assistente.
21. Nesta etapa voc deve informar o nome de um servidor SMTP e o endereo do remetente. Estas
informaes sero utilizadas pelo Reporting Services, para o envio de relatrios por e-mail.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
740000Curso Completo
Voc aprender mais sobre estas funcionalidades no Captulo 14. Informe o nome do servidor
SMPT e o endereo de e-mail do remetente e clique em Next, para seguir para a prxima etapa
do assistente.
22. Nesta etapa voc pode marcar a opo para enviar relatrios diretamente para a Microsoft, em
caso de erros fatais na execuo do SQL Server 2005 ou de um dos seus componentes. No sei
se esta etapa estar disponvel na verso final ou se somente nas verses Beta. Aceite as
configuraes sugeridas e clique em Next, para seguir para a prxima etapa do assistente.
23. Ser exibida a tela final do assistente, com um resumo de todas as opes selecionadas, conforme
indicado na Figura 2.21:
Figura 2.21 Etapa final do assistente de instalao.
24. Voc pode usar o boto Back para voltar a uma das etapas anteriores e alterar alguma
configurao, caso seja necessrio. Para concluir a instalao, clique no boto Install e aguarde.
Ser exibida uma janela, com o progresso da instalao.
25. Uma vez concluda a instalao, ser habilitado o boto Next. Ser exibida a tela final do
assistente, indicando que a instalao foi concluda com sucesso.
26. Clique em Finish para encerrar o assistente de instalao do SQL Server 2005. Pronto, uma
segunda instncia do SQL Server 2005 est instalada no seu computador. No nosso exemplo,
foi instalada a seguinte instncia nomeada: SERVIDOR2\CURSOSJB
Conforme veremos neste e nos demais captulos, existem diversas ferramentas para administrar e
realizar as tarefas com o SQL Server 2005. Sempre que estivermos utilizando uma destas ferramentas
teremos a opo de selecionar com qual das instncias do SQL Server instaladas queremos realizar uma
determinada operao.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000075
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.
FAZENDO O UPGRADE DO SQL SERVER 2000 PARA O SQL SERVER 2005
Voc pode fazer o upgrade de verses anteriores do SQL Server para o SQL Server 2005. Na listagem
a seguir, descrevo os caminhos de upgrade possveis, de verses anteriores do SQL Server para o
SQL Server 2005:
Do SQL Server 2000 SP3/SP3a ou superior para o SQL Server 2005 Beta 2 ou Superior (Beta 3 e
verso final).
Do SQL Server 2005 Beta 2 para o Beta 3 ou verso Final.
No possvel desatachar um Banco de Dados do SQL Server 2005 Beta 1 e atachar o Banco
de Dados no SQL Server 2005 Beta 2.
No possvel fazer o upgrade diretamente para o SQL Server 2005, a partir das verses a seguir:
Do SQL Server 6.5 para o SQL Server 2005.
Do SQL Server 7.0 para o SQL Server 2005.
Atualizao de um failover cluster no suportada.
Upgrade of MSDE is not supported.
Upgrade do SQL Server 2000 (64-bit) no suportado.
Upgrade do Reporting Services 2000 no suportado.
Upgrade do Notification Services 2000 no suportado.
No existe suporte para a atualizao do MSDE para o SQL Server 2005 Beta 2 Express Edi-
tion. Talvez tenha na verso final do Express Edition.
Nesta seo, vamos fazer o upgrade do SQL Server 2000 rodando em um computador com o
Windows XP Professional, para o SQL Server 2005. Para que este upgrade seja possvel, o SP3
ou SP3a do SQL Server 2000 deve estar instalado.
Exemplo: Para fazer o upgrade do SQL Server 2000 para o SQL Server 2005, siga os passos indicados a seguir:
1. Faa o logon com uma conta com permisses de administrador.
2. Coloque o CD-ROM do SQL Server 2005 no drive de CD e aguarde alguns instantes. Deve surgir a tela
de abertura do CD, indicada anteriormente na Figura 2.6. Esta tela apresenta trs grupos de opes: O
primeiro grupo Prepare. Este grupo d acesso a opes de preparao, as quais devem ser tomadas
antes da instalao do SQL Server 2005. Ao clicar na opo Review Hardware e Software Require-
ments, ser aberta uma janela de ajuda, com informaes sobre o hardware e software, necessrios
instalao do SQL Server 2005. A opo Read the release notes abre o arquivo readme.txt, que est
gravado no diretrio raiz do CD. Este arquivo contm orientaes que foram elaboradas pela equipe
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
760000Curso Completo
do SQL Server 2005, 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. Para iniciar a instalao, clique na opo Run the SQL Server Instalattion Wizard. Ser exibida
uma tela, com o contrato de licena do SQL Server 2005. Para seguir com a instalao, voc
deve marcar a opo I accept de licensing terms and conditions e clicar em Next. Faa isso.
Ser exibida a prxima tela do assistente.
4. Ser exibida uma tela, mostrando quais componentes sero instalados, para que seja possvel a
instalao do SQL Server 2005, conforme indicado na Figura 2.22. Nesta figura voc pode
observar que ser instalado o .NET Framework 2.0, o Microsoft SQL Native Client e o SQL
Server 2005 (Beta 2). Clique no boto Install, para continuar com a instalao.
Figura 2.22 Lista de componentes de suporte que sero instalados.
5. A instalao dos itens que so pr-requisitos para o SQL Server 2005, tais como o .NET
Framewok ser iniciada. O andamento ser indicado na tela do assistente de instalao.
Esta etapa pode demorar de meia hora a uma hora, dependendo do equipamento que voc
est utilizando. Aguarde.
6. A instalao dos componentes que so necessrios, antes que o SQL Server 2005 possa ser
instalado, ser concluda. Quando a instalao concluda, o boto Finish habilitado. Clique
no boto Finish para iniciar a instalao do SQL Server 2005 propriamente dito, j que o que
foi instalado at agora foram os componentes que do suporte execuo do SQL Server 2005,
tais como o .NET Framework 2 e outros.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000077
7. O processo de instalao do SQL Server 2005 faz uma srie de verificaes e passa a copiar
arquivos do CD de instalao. A tela inicial do assistente de instalao do SQL Server
2005 ser exibida.
8. Clique em Next para seguir para a prxima etapa do assistente de instalao. O assistente de
instalao far uma verificao, para certificar-se de que est tudo OK para iniciar a instalao.
Ser exibida uma listagem dos componentes verificados. Se algum problema for detectado,
ser exibido um x ao lado do componente com problemas. Na coluna Message disponibilizado
um link. Se voc clicar neste link, exibida uma mensagem indicando o que deve ser feito,
para solucionar o problema, que est impedindo a instalao do SQL Server 2005. Voc deve
solucionar o problema, antes de prosseguir com a instalao. No nosso exemplo, nenhum
problema foi detectado e a instalao pode continuar, sem problemas.
9. Clique no boto Continue, para continuar com a instalao do SQL Server 2005.
10. O assistente de instalao faz uma srie de preparaes e exibe uma tela, para que voc
coloque o seu nome, o nome da sua empresa e o nmero de srie do SQL Server 2005. Digite
as informaes solicitadas.
11. Clique em Next, para seguir para a prxima etapa do assistente de instalao.
12. Nesta etapa voc deve marcar quais os servios que sero instalados. Ao instalar o SQL Server
2005, diversos servios podem ser instalados. No final deste captulo veremos um pouco mais
sobre os servios que so instalados com o SQL Server e como gerenciar estes servios. O SQL
Server o servio bsico, o Banco de Dados em si. Voc pode instalar outros servios, tais como
o Analysis Services, Reporting Services e assim por diante. A dica aqui instalar somente os
servios que voc ir realmente utilizar. Se voc est instalando o SQL Server 2005 em um
servidor de produo, deve instalar somente os servios que sero utilizados. Se voc est
instalando o SQL Server 2005 em um servidor para estudo, deve instalar todos os servios, para
t-los disponveis para estudar, quando necessrio.
13. Marque os servios a serem instalados e clique em Next, para seguir para a prxima etapa do
assistente de instalao.
14. IMPORTANTE: Nesta etapa, indicada na Figura 2.23 que vem o detalhe fundamental. nesta
etapa que voc ir informar que, ao invs de instalar uma nova instncia do SQL Server 2005,
quer fazer o upgrade de uma instncia j existente, do SQL Server 2000. D um clique no boto
Installed instances, em destaque na Figura 2.23.
15. Ser exibida uma lista com as instncias j instaladas. No nosso exemplo, indicado na Figura
2.24, temos um nica instncia do SQL Server 2000 instalada. Observe que a verso da instncia
selecionada 8.00.761, a qual indica o SQL Server 2000, com Service Pack 3.a instalado. Marque
a instncia a qual ser atualizada para o SQL Server 2005, conforme indicado na Figura 2.24 e
d um clique em OK.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
780000Curso Completo
Figura 2.23 O boto Installed instances.
Figura 2.24 Selecionando a instncia que ser atualizada.
16. Voc estar de volta ao assistente de instalao do SQL Server 2005. Clique em Next, para
seguir para a prxima etapa do assistente.
17. Ser exibida uma janela, com a lista de componentes j instalados no computador e que sero
atualizados. Clique em Next, para seguir para a prxima etapa do assistente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000079
18. Nesta etapa voc ir definir com qual conta cada servio do SQL Server ir rodar. Voc pode
definir a mesma conta para todos os servios, ou definir uma conta diferente, para cada um
dos servios. Voc pode optar por usar a conta local System (sendo esta a opo mais
recomendada), ou informar uma conta do domnio ou uma conta de administrador local, caso
o computador que voc esteja utilizando no pertena a um domnio. Se voc marcar a opo
Customize for each service account, a lista abaixo desta opo ser habilitada. Feito isso, voc
pode escolher um servio na lista e definir a conta para o servio selecionado. Depois voc
seleciona um novo servio na lista e define a conta para este novo servio e assim por diante.
Com a opo Customize for each service account, voc pode definir configuraes
personalizadas, para cada um dos servios. No nosso exemplo, vou usar a mesma conta para
todos os servios (opo Customize for each service account desmarcada) e vou informar uma
conta de administrador local do computador, conforme exemplo da Figura 2.25 (pois o
computador que eu estou utilizando para este exemplo no est configurado para fazer parte
de um domnio baseado no Active Directory). Observe que como nome do domnio eu coloquei
o prprio nome do computador MICROXP-01:
Figura 2.25 Definindo as configuraes de conta.
19. Defina as configuraes desejadas e clique em Next, para seguir para a prxima etapa do
assistente de instalao.
20. Nesta prxima etapa voc deve definir o modo de autenticao que ser usado, pela instncia
do SQL Server que est sendo instalada. Existe o modo Windows Authentication Mode. Com
esse modo, somente contas do domnio podero ser utilizadas para acessar o SQL Server 2005.
Usando o modo Mixed Mode, podero ser usadas contas do domnio e tambm contas do SQL
Server 2005. No Captulo 6, sobre segurana, voc aprender mais detalhes sobre os modos de
autenticao. Nesta etapa, voc tambm pode definir uma senha para a conta sa. A conta sa
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
800000Curso Completo
a conta de administrador do SQL Server 2005, ou seja, a conta com maiores poderes no SQL
Server 2005. Por isso sempre recomendado definir uma senha forte para esta conta. Entenda-
se por senha forte uma senha que usa letras, nmeros e caracteres especiais e que tenha, no
mnimo, 10 caracteres. Defina as configuraes desejadas.
21. Clique em Next, para seguir para a prxima etapa do assistente de instalao.
22. Nesta etapa voc define as configuraes de Collation (cada idioma tem configuraes prprias)
e outras caractersticas que afetam a maneira como o SQL Server 2005 ir fazer as comparaes
de dados, para filtrar os registros, ao executar uma consulta. Voc pode habilitar ou desabilitar
opes como Case sensitive (diferenciar maisculas e minsculas ou no), Accent sensitve
(diferenciar acentos ou no) e assim por diante. Defina as configuraes desejadas e clique em
Next, para seguir para a prxima etapa do assistente.
23. Nesta etapa voc pode marcar a opo para enviar relatrios diretamente para a Microsoft, em
caso de erros fatais na execuo do SQL Server 2005 ou de um dos seus componentes. No sei
se esta etapa estar disponvel na verso final ou se somente nas verses Beta. Aceite as
configuraes sugeridas e clique em Next, para seguir para a prxima etapa do assistente.
24. Ser exibida a tela final do assistente, com um resumo de todas as opes selecionadas. Voc
pode usar o boto Back para voltar a uma das etapas anteriores e alterar alguma configurao,
caso seja necessrio. Para concluir a instalao, clique no boto Install e aguarde. Ser exibida
uma janela, com o progresso da instalao/upgrade.
25. Uma vez concluda a instalao ser habilitado o boto Next. Clique em Next, para exibir a tela
final do assistente. Ser exibida a tela final do assistente, indicando que a instalao/upgrade
foi concluda com sucesso.
26. Clique em Finish para encerrar o assistente. Pronto, a instncia do SQL Server 2000 foi atualizada
para o SQL Server 2005, no seu computador. Agora s precisamos aprender a utiliz-lo. Mas
isso assunto para todo o restante deste livro.
No prximo tpico deste captulo voc aprender sobre MMC e Snap-in e sobre os servios do SQL
Server 2005. No Captulo 3 voc aprender a utilizar o console de Administrao do SQL Server 2005
SQL Server Management Studio.
FUNDAMENTOS EM: SERVIOS
DISPONVEIS COM O SQL SERVER 2005
PR-REQUISITOS
Ter instalado uma instncia nomeada do SQL Server 2005.
METODOLOGIA
Verificao dos servios instalados e inicializados.
TCNICA
Utilizar os consoles de administrao do Windows e do SQL Server 2005, para o gerenciamento de servios.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000081
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 2005 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 2005. 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 Server. como se no existisse o servidor SQL ou se este
estivesse fora da rede.
Durante a instalao das instncias do SQL Server, ser gerado um identificador para cada instncia, o
qual conhecido como Instance ID. Para cada componente do SQL Server gerado um identificador,
separadamente. Os componentes so a mquina do Banco de Dados (Database Engine), o Analysis
Services e o Reporting Services. O identificador de instncia est no formato MSSQL.n, um nmero
inteiro, iniciando em 1. Este identificador de instncia utilizado para criar a estrutura de pastas onde
esto os arquivos da instncia e tambm na Registry do Windows.
O primeiro identificador de instncia gerado ser MSSQL.1, o segundo ser MSSQL.2 e assim por diante.
Podem ocorrer falhas na seqncia de numerao; no caso em que uma instncia instalada, outras
so instaladas aps ela e depois ela desinstalada. Quando uma nova instncia for instalada, seguir a
numerao, a partir do ltimo identificador gerado, e no ser preenchido o espao, deixado pela
instncia que foi desinstalada.
Os componentes e arquivos de uma instncia sero instalados em uma estrutura de pastas, nomeada
como o mesmo identificador da instncia. Por exemplo, a primeira instncia do SQL Server 2005,
instalada como default, tendo sido instalado o SQL Server (database engine), o Analysis Services e o
Reporting Services, ter a seguinte estrutura de pastas:
Arquivos de Programas>\Microsoft SQL Server\MSSQL.1\MSSQL\ para o Banco de Dados
Arquivos de programas>\Microsoft SQL Server\MSSQL.2\OLAP\ para o Analysis Services
Arquivos de programas>\Microsoft SQL Server\MSSQL.3\RS\ para o Reporting Services
Para o Sistema Operacional, cada servio, de cada instncia, tem um nome especfico.
Por exemplo, o servio do Database Engine (a mquina de Banco de Dados, o SQL Server
propriamente dito), para a primeira instncia, ter o nome MSSQL.1. Observe que
utilizado o identificador da instncia Instance ID. Caso tenhamos mais do que uma
instncia instalada, cada uma delas ter o seu prprio servio SQL Server, o qual nomeado
de acordo com o ID da respectiva instncia. Observe que o uso de identificadores de
instncia (Instance ID) uma maneira de criar atalhos, para fazer referncia a cada servio,
de cada uma das instncias.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
820000Curso Completo
Figura 2.26 Processos para as instncias do SQL Server.
5. Feche o gerenciador de tarefas.
Por exemplo, suponha que tenhamos duas instncias do SQL Server 2005 instaladas; teremos dois
servios SQL Server carregados na memria. Estes servios, para o Windows 2000, sero identificados
pelos seguintes nomes:
MSSQL.1
MSSQL.2
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 Windows.
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.26.
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 2005 instaladas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000083
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 (Database
engine) 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 2005 instaladas. O nome do servio tambm ligado ao identificador de
instncia, conforme descrito anteriormente.
Na Figura 2.27, 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, no
Captulo 5.
Figura 2.27 Processos para as instncias do SQL Server Agent.
O SERVIO MICROSOFT DISTRIBUTED
TRANSACTION COORDINATOR 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
840000Curso Completo
fazendo clculos que alteram dados em ambas as fontes e salvam 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, caso
uma nica das operaes da transao apresente falha. Ou seja, o famoso tudo ou nada.
Diferente dos servios SQL Server e SQL Server Agent, existe somente uma instncia do servio MSDTC,
independente de quantas instncias do SQL Server 2005 estejam instaladas no servidor. Isto faz sentido,
pois o papel do MSDTC justamente facilitar o acesso a vrias fontes de dados, incluindo Bancos de
Dados, de diferentes instncias do SQL Server 2005.
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, tais como memria RAM e processador. O servio Microsoft
Search oferece a possibilidade de pesquisas avanadas para o idioma Ingls.
Diferente dos servios SQL Server e SQL Server Agent, existe somente uma instncia do servio Microsoft
Search, independente de quantas instncias do SQL Server 2005 estejam instaladas no servidor. O
nome do servio msftesql$SQL2005.
O SERVIO MICROSOFT REPORT SERVICES
Este o servio responsvel pelas funcionalidades do Reporting Services. Ele fornece uma interface de
fcil utilizao para a criao e, principalmente, para a publicao e distribuio de relatrios.
Abordaremos o Reporting Services no Captulo 14.
O SERVIO ANALYSIS SERVICES
O Microsoft SQL Server 2005 Analysis Services fornece funcionalidades para o processamento analtico
online, as chamadas consultas OLAP, baseadas em cubos de dados. Tambm fornece uma srie de
funcionalidades para o desenvolvimento de aplicaes de data mining e business intelligence. A idia
bsica do Analysis Services facilitar a criao de estruturas multidimensionais de dados, conhecidas
como cubos de dados. Os dados de um cubo podem ser obtidos a partir de fontes diversas, tais como
Bancos de Dados do SQL Server, planilhas do Excel, dados do mainframe e outras fontes relacionais e
no relacionais de dados.
Agora que j conhecemos os servios disponveis, vamos aprender a gerenci-los, utilizando duas
ferramentas: o Computer Management (console que instalado juntamente com o SQL Server 2005) e
o Snap-in Services (o qual faz parte do Windows).
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000085
FUNDAMENTOS EM: GERENCIAMENTO DOS
SERVIOS DO SQL SERVER 2005
PR-REQUISITOS
Ter instalado duas instncias do SQL Server 2005.
METODOLOGIA
Gerenciamento dos servios de cada instncia do SQL Server 2005.
TCNICA
Utilizar o gerenciador de tarefas do Windows 2000 e o console Computer Management, do SQL Server 2005.
Ns podemos configurar um determinado servio para que ele seja inicializado, automaticamente,
quando o Windows iniciado (Windows 2000, Windows Server 2003 ou Windows XP). Para servios
fundamentais, como o servio SQL Server (database engine), o qual deve estar sempre disponvel, a
opo de inicializar automaticamente a mais indicada (mais do que a mais indicada, fundamental).
Porm para servios que somente sero utilizados eventualmente, o ideal que o servio no seja
inicializado automaticamente, mas somente quando o servio for necessrio, para evitar que o servio
consuma recursos de hardware desnecessariamente. Um servio que no inicializado automaticamente
pode ser inicializado a qualquer momento, utilizando as ferramentas que apresentarei 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 2005, o SQL Server Management Studio, uma ferramenta
baseada nos conceitos de MMC e Snap-ins.
UM PEQUENO PARNTESES PARA
APRENDER SOBRE MMC E SNAP-INS
O conceito de MMC foi criado, ainda na poca do NT Server 4.0 e do SQL Server 7.0, para servir como
uma interface unificada para a administrao e gerenciamento dos mais variados recursos do Win-
dows e dos demais produtos da Microsoft, tais como o SQL Server, SMS Server, Exchange Server, IIS,
etc. Em verses anteriores criao do MMC, os produtos da Microsoft, cada tarefa possua um aplicativo
com uma interface diferente. Por exemplo, no Windows NT Server 4.0, a interface 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,
uma para cada categoria de tarefas a ser executada.
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 desde a verso 4.0 (Servidor Web da Microsoft), Proxy Server 2.0 (Firewall para proteo da rede
interna), Microsoft SQL Server desde a verso 7.0, dentre outros programas da Microsoft.
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
860000Curso Completo
por aplicaes de gerenciamento e administrao chamadas snap-ins. O MMC funciona simplesmente
como um hospedeiro para os diversos snap-ins disponveis. Em outras palavras, o MMC utilizado
para abrir um snap-in, sendo o snap-in o responsvel por fornecer as funcionalidades de administrao
dos mais diversos produtos e servios da Microsoft.
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.
Por exemplo, 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 administrao de usurios e grupos. Podemos
ter um ou mais snap-ins carregados 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, siga os passos indicados a seguir:
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 indicado na Figura 2.28. Esta janela mostra o MMC sem
nenhum snap-in carregado.
Figura 2.28 MMC sem nenhum snap-in carregado.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000087
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.
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.29. Observe que temos diversos snap-in carregados.
Nesta janela voc pode administrar Armazenamento, Pastas Compartilhadas, Analisar os logs
do sistema, etc.
Figura 2.29 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. Voc ver que esta
exatamente a maneira de navegar atravs do SQL Server Management Studio, o qual o principal
console de administrao do SQL Server 2005 (voc aprender a utiliz-lo no Captulo 3).
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
das aes que podemos realizar sobre um disco rgido. Essa mudana nos menus e na barra de ferramentas
serve para refletir quais aes so possveis sobre o elemento selecionado.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
880000Curso Completo
N
O
T
A
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 de o 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 ou o Windows Server 2003, 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 2005 nos fornece o console
SQL Server Management Studio, o qual iremos utilizar 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 prtico.
Suponhamos que voc queira um console somente para administrar contas de usurios e grupos do
Windows, 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.
4. Ser aberta uma janela sem nenhum snap-in carregado.
Para carregar apenas o snap-in para administrao de contas de usurios e grupos:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000089
N
O
T
A
Figura 2.30 Clique no boto Adicionar para adicionar um snap-in.
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 Windows Server 2003 Curso Completo, 156 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, atravs da rede, desde que voc tenha
permisso para isso. Por padro vem selecionado o computador Local. Vamos aceitar a
configurao padro. D um clique no boto Concluir.
1. Com o MMC, aberto no exerccio anterior, d um clique no menu Console e escolha a opo
Adicionar/remover snap-in. Ser exibida a janela indicada na Figura 2.30.
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, no computador que voc est utilizando. Localize na listagem
o seguinte snap-in: Usurios e grupos locais. D um clique sobre ele para selecion-lo e clique
no boto Adicionar.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
900000Curso Completo
N
O
T
A
Figura 2.31 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.
Para verificar se o Windows 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.
5. Voc estar de volta 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.31. D um clique
em OK para fechar a janela Adicionar/remover snap-in.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000091
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 2005. Vamos aprender a utilizar o Snap-in Servios e o aplicativo SQL Com-
puter Manager, o qual instalado com o SQL Server 2005.
UTILIZANDO O SNAP-IN SERVICE MANAGER O CONSOLE SERVIOS
Qualquer servio disponvel, e no somente os servios do SQL Server 2005, pode ser gerenciado pelo Snap-
in Service Manager. Atravs deste snap-in podemos efetuar diversas configuraes, como por exemplo:
Configurar um servio para que 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 SQLServer (CURSOSJB), que conforme foi visto
anteriormente o servio SQL Server para a instncia CURSOSJB, no servidor SERVIDOR2.
Para verificar as opes de configurao do servio SQLServer (CURSOSJB), siga os passos indicados a seguir:
1. Faa o logon no Servidor onde est instalada a instncia a ser gerenciada, usando uma conta
com perfil de administrador.
2. Abra o Snap-in Servios: Iniciar -> Programas -> Ferramentas administrativas -> Servios. Surge
a janela indicada na Figura 2.32.
3. Na listagem de servios, a qual por padro est ordenada ascendentemente pelo nome do
servio, localize o servio chamado SQLServer (CURSOSJB).
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 inicializado e assim por diante.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
920000Curso Completo
Figura 2.32 O console para gerenciamento de servios.
Parar: Esta opo pra o servio, descarregando-o 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.
5. D um clique duplo no nome do servio. Ser aberta a janela Propriedades SQLServer
(CURSOSJB)., a qual apresenta quatro guias de opes.
Na guia Geral, conforme indicado na Figura 2.33, exibido o nome do servio, e temos a opo de
inserir uma descrio para o servio. Na lista Tipo de inicializao, podemos escolher se o servio deve
ser inicializado automaticamente, manualmente ou se 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.
4. 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000093
Figura 2.33 A guia Geral das propriedades do servio.
Figura 2.34 A guia Logon das propriedades do servio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
940000Curso Completo
Na guia Logon, conforme indicado na Figura 2.34, 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 servidor 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.35, podemos definir qual deve ser o
comportamento do servio no caso de uma falha. Estas opes so uma das novidades do Windows
2000 e do Windows Server 2003 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.
Figura 2.35 A guia Recuperao das propriedades do servio.
Na guia Dependncias, conforme indicado na Figura 2.36, temos informaes de quais Servios o
servio em questo depende, e quais Servios dependem do servio em questo. Conforme a Figura
2.36, 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000095
N
O
T
A
Figura 2.36 A guia Dependncias das propriedades do servio.
7. 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 de 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 2005.
UTILIZANDO O CONSOLE SQL COMPUTER MANAGER,
QUE VEM COM O SQL SERVER 2005
Ao instalarmos o SQL Server 2005 instalado um console chamado SQL Computer Manager, o qual
pode ser acessado utilizando o seguinte comando: Iniciar -> Programas -> Microsoft SQL Server 2005 ->
SQL Computer Manager. Este console um utilitrio que nos permite gerenciar os servios do SQL Server
de uma maneira bastante simples, pois apresenta somente os servios do SQL Server 2005 e no todos os
demais servios, instalados no computador.
utiliza estas informaes para determinar a ordem correta de inicializao dos servios ao inicializar o
sistema operacional.
6. Clique em Cancelar para fechar a janela com as propriedades do servio SQLServer
(CURSOSJB).,.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
960000Curso Completo
Utilizando o SQL Computer Manager podemos realizar as seguintes aes com os servios do SQL
Server 2005:
Inicializar um servio.
Continuar o servio, caso ele tenha sido colocado em Pausa.
Colocar o servio em Pausa.
Configurar o servio para inicializar automaticamente quando o sistema operacional
inicializado.
Na Figura 2.37, vemos a tela inicial do SQL Computer Manager, o qual aberto usando o comando
Iniciar -> Programas -> SQL Server 2005 -> SQL Computer Manager.
Figura 2.37 SQL Computer Manager.
Se a opo Servios e aplicativos no estiver aberta, clique no sinal de +, ao lado desta opo, para abri-
la. Sero exibidas vrias opes, dentre as quais a opo SQL Computer Manager. atravs desta opo
que temos acesso a todos os servios do SQL Server 2005, instalados no computador. Clique no sinal de
+ opo SQL Computer Manager. Abaixo da opo SQL Computer Manager, d um clique no sinal de
+ ao lado da opo Services. Ser exibida uma lista de todos os servios do SQL Server 2005, instalados
no computador, conforme indicado na Figura 2.38.
Clique em um dos servios. Por exemplo, clique no servio SQL Server, que a mquina do Banco de
Dados do SQL Server 2005. No painel da direita, sero exibidas todas as instncias do SQL Server 2005,
instaladas, conforme indicado na Figura 2.39.
No painel da direita, voc pode clicar com o boto direito do mouse, no servio a ser gerenciado. Ser
exibido um menu com opes para inicializar, parar, pausar e para acessar as propriedades do servio.
A idia bsica do SQL Computer Manager servir de um ponto central para gerenciamento dos servios
do SQL Server 2005. No SQL Computer Manager so listados apenas os servios do SQL Server 2005 e
no todos os servios disponveis no computador.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000097
Figura 2.39 Instncias do SQL Server 2005 instaladas.
CONCLUSO
Iniciamos o captulo com uma introduo a uma 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 ao elevado TCO deste modelo. Apresentamos as solues propostas
pelos modelos de trs ou mais camadas, sendo que as principais so as seguintes:
Figura 2.38 Lista de servios do SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
980000Curso Completo
Facilidade de instalao e manuteno das aplicaes.
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 2005 no
desenvolvimento de aplicaes. O SQL Server 2005 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, utilizada uma srie de outras ferramentas que
do apoio ao processo de desenvolvimento de aplicaes.
O SQL Server 2005 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.
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 das aplicaes.
Voc tambm aprendeu sobre as principais novidades e melhoramentos do SQL Server 2005, em relao
s verses anteriores. Tambm mostrei onde encontrar, no Books Online, referncia completa de todas
as novidades do SQL Server 2005.
Seguindo no captulo, aprendemos a fazer a instalao do SQL Server 2005. Tambm aprendemos a
criar mltiplas instncias do SQL Server em um mesmo servidor. Fizemos, passo a passo a instalao de
uma instncia padro, a instalao de uma segunda instncia e um upgrade de uma instncia do SQL
Server 2000 para o SQL Server 2005.
Aps instalado o SQL Server, aprendemos a gerenciar os servios que compem o SQL Server e a
utilizar o console Servios e o SQL Computer Manager, que vem junto com o SQL Server 2005.
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 2005 instalado e os respectivos servios corretamente inicializados, agora hora de
comearmos a utilizar o Banco de Dados. Mas isto assunto para o prximo captulo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
Curso Completo000099
Por enquanto se voc quiser estudar um pouco mais sobre o SQL Server 2005, pode consultar um dos
seguintes endereos:
www.microsoft.com/sql
www.swyink.com
www.sqlmag.com
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000101
Captulo 3
TRABALHANDO COM BANCO DE DADOS
NO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1020000Curso 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 2005 no Captulo 2. Agora vamos comear
a trabalhar com o SQL Server 2005.
Neste captulo aprenderemos um pouco mais sobre as ferramentas de administrao que so
disponibilizadas com o SQL Server 2005. Neste captulo, trabalharemos com a seguinte ferramenta:
SQL Server Management Studio
Tambm aprenderemos a configurar alguns parmetros importantes, os quais afetam cada instncia do
SQL Server 2005, 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 SQL Server Management Studio, mostrando as principais opes
de configurao disponveis e quais as tarefas que podem ser realizadas. Conforme veremos, o SQL
Server Management Studio nada mais do que um snap-in de administrao para o SQL Server 2005.
O SQL Server Management Studio o substituto do Enterprise Manager, o qual era o principal console
de administrao do SQL Server 2000.
Ainda utilizando o SQL Server Management Studio veremos quais os Bancos de Dados que so criados,
automaticamente, quando da instalao do SQL Server 2005. Veremos qual a funo de cada um dos
Bancos de Dados criados na instalao. Tambm mostrarei como instalar os Bancos de Dados de
exemplos, os quais no so instalados por padro, quando da instalao do SQL Server 2005.
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 2005. Veremos quais os
arquivos que so criados para um Banco de Dados e para os logs de transao do 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 Banco de
Dados, atravs de um exemplo prtico, passo a passo. Na verdade, criaremos dois Bancos de Dados de
exemplo: um utilizando o SQL Server Management Studio e outro utilizando comandos T-SQL para a
criao de Banco de Dados. Aps criados os Bancos de Dados, vamos conferir se os arquivos referentes
a cada um dos Bancos de Dados 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 SQL Server Management Studio e
utilizando comandos T-SQL.
Configurar as principais opes para cada uma das instncias instaladas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000103
Entender a estrutura de armazenamento em disco de um Banco de Dados do SQL Server 2005.
Criar Bancos de Dados utilizando o SQL Server Management Studio e comandos T-SQL.
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 SQL SERVER MANAGEMENT STUDIO
PR-REQUISITOS
Noes bsicas do Windows e dos MMC Microsoft Management Console.
METODOLOGIA
Apresentao dos elementos principais do SQL Server Management Studio.
No SQL Server 2000, a principal ferramenta de administrao era o Enterprise Manager. A principal
ferramenta de administrao do SQL Server 2005 o console SQL Server Management Studio, o qual
pode ser acessado utilizando-se o seguinte caminho: Iniciar -> Programas -> Microsoft SQL Server 2005
-> SQL Server Management Studio. Este console nos d acesso maioria das tarefas necessrias criao
e manuteno de um Banco de Dados no SQL Server 2005 (na verdade difcil imaginar uma tarefa
que no seja possvel fazer usando o SQL Server Management Studio).
Vamos, atravs de exemplos prticos, aprender a utilizar algumas das funcionalidades do SQL Server
Management Studio. Ao longo deste livro, voltarei diversas vezes ao SQL Server Management Studio
para executar as tarefas propostas, tais como criao de Banco de Dados, criao e alterao de tabelas,
criao e alterao de views, criao e alterao de usurios e grupos de usurios, configuraes de
segurana, configuraes de replicao, etc.
Exemplo: Abrindo e navegando pelas opes do SQL Server Management Studio:
1. Faa o logon com uma conta com permisso de administrador e abra o SQL Server Management
Studio: Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Server Management Studio.
Ser aberta a tela inicial do SQL Server Management Studio, indicada na Figura 3.1.
Nesta tela voc informa o tipo de servidor com o qual deseja se conectar. Por padro selecionada a
opo SQL Server. Tambm esto disponveis as opes Analysis Server, Report Server, SQL Mobile e
DTS Server. Observe que possvel usar o SQL Server Management Studio para administrar todos os
servios do SQL Server 2005. Na lista Server name, voc seleciona o nome do servidor com o qual voc
deseja se conectar. Nesta lista, voc pode selecionar a opo <Browse for more>, para abrir a janela
Browse for servers. Atravs desta janela, voc pode se conectar com qualquer servidor SQL da rede (ou
de outros tipos, tais como o Analysis Server ou Report Server). Observem que possvel usar o console
SQL Server Management Studio, para administrar, remotamente, qualquer servidor SQL Server da rede,
para o qual voc tenha as devidas permisses. Na lista Authentication, voc seleciona o tipo de
autenticao. No Captulo 6 voc aprender mais sobre os tipos de autenticao disponveis no SQL
Server 2005. No Exemplo da Figura 3.2, escolhi me conectar a um servidor SQL Server, com a instncia
SERVIDOR\SQL2005, usando autenticao integrada com o Windows.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1040000Curso Completo
Figura 3.1 A tela inicial do SQL Server Management Studio.
Figura 3.2 Conectando com o servidor SERVIDOR\SQL2005.
Selecione as opes desejadas e clique em Connect. Aps alguns instantes ser feita a conexo com o
servidor selecionado e ser apresentado o ambiente de administrao fornecido pelo SQL Server Man-
agement Studio, conforme indicado na Figura 3.3.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000105
Figura 3.3 Ambiente de administrao do SQL Server Management Studio.
uma janela tradicional de um console MMC, com menus e dividida em painis, bem no estilo do
Windows Explorer. Na esquerda, tem uma janela com os servidores SQL Server j registrados, com os
quais voc j fez uma conexo. Esta parte do console est indicada na Figura 3.4, onde temos um nico
servidor registrado: SERVIDOR\SQL2005
Figura 3.4 A janela Registered Servers.
Logo abaixo temos a janela Object Explorer. Nesta janela, abaixo do nome do servidor, exibida uma
rvore, onde aparecem os diversos elementos que compem um servidor SQL Server 2005. 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.5. Os Bancos de
Dados so agrupados em Bancos de dados do sistema (System Databases), Banco de dados de snapshot
(Snapshot Databases) e os demais Bancos de Dados. Os Bancos de Dados contidos em System Data-
bases so os bancos criados e mantidos pelo prprio SQL Server 2005 e fundamentais ao funcionamento
do SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1060000Curso Completo
N
O
T
A
Figura 3.5 Bancos de Dados da instncia SERVIDOR\SQL2005
Mantenha o SQL Server Management Studio.
Falarei sobre a funo dos Bancos de Dados do sistema, ao longo dos captulos deste livro. O SQL Server Management Studio tambm tem
dezenas de outras funcionalidades, janelas e painis, as quais aprenderemos a utilizar ao longo deste livro.
Porm, voc deve estar lembrado, do Captulo 2, que podemos ter vrias instncias do SQL Server 2005
instaladas no mesmo servidor ou at mesmo em servidores diferentes. Para poder administrar e ter
acesso aos elementos de outras instncias, preciso registr-las no SQL Server Management Studio.
Lembre que, na prtica, as diversas instncias do SQL Server se comportam como se fossem servidores
completamente independentes. Vamos aprender a registrar uma outra instncia do servidor SQL Server
no SQL Server Management Studio.
Exemplo: Para registrar a instncia SERVIDOR\SRVINST02 no SQL Server Management Studio, siga os
passos indicados a seguir:
1. O SQL Server Management Studio deve ter sido mantido aberto no exemplo anterior. Caso este
tenha sido fechado, abra-o novamente.
2. Clique com o boto direito do mouse em Microsoft SQL Servers, na janela Registered
Servers, logo abaixo do menu File.
3. No menu de opes que surge, d um clique na opo New -> Server Registration.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000107
4. Ser aberta a janela New Server Registration, na qual voc deve informar os dados da instncia
a ser conectada. Observe que a opo SQL Server j vem selecionada no campo Server Type e
no pode ser alterada. No campo Server Name digite o nome do servidor com o qual voc quer
se conectar e selecione o tipo de autenticao. No Exemplo da Figura 3.6 estou me conectando
com SERVIDOR2\CURSOSJB, ou seja, a instncia CURSOSJB no servidor chamado SERVIDOR2,
usando autenticao integrada do Windows.
Figura 3.6 Bancos de Dados da instncia SERVIDOR\SQL2005.
5. No campo Registered Server Name voc pode digitar um nome que servir como um apelido,
como uma referncia ao servidor. O padro o prprio nome da instncia. No nosso exemplo,
o nome padro SERVIDOR2\CURSOSJB. Voc pode digitar um nome mais amistoso, tal como
Servidor de Cursos, ou Servidor da Matriz. Voc pode digitar uma descrio no campo Regis-
tered server description.
6. Aps fornecer as informaes necessrias, clique em Save. O novo servidor j estar disponvel
para ser utilizado. Observe que o servidor j aparece no painel Registered Servers, conforme
indicado na Figura 3.7:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1080000Curso Completo
Figura 3.7 A instncia SERVIDOR2\CURSOSJB, recm-registrada.
7. D um clique duplo em SERVIDOR2\CURSOSJB, no painel Registered Servers e este servidor j
passar a ser exibido no painel Object Explorer, conforme indicado na Figura 3.8:
Figura 3.8 Acessando todos os objetos da instncia SERVIDOR2\CURSOSJB, recm-registrada.
Observe que, aps o registro da instncia SERVIDOR2\CURSOSJB, passamos a ter acesso a todos os seus
objetos. Isso mostra como fcil usar o SQL Server Management Studio, para administrar, remotamente,
todos os servidores SQL Server 2005 da sua rede. Claro que para isso voc deve ter as devidas permisses.
Se a conta com a qual voc est acessando um determinado servidor no tiver as permisses necessrias
para uma determinada ao (como por exemplo criar um novo Banco de Dados), voc receber uma
mensagem de acesso negado, ao tentar executar a ao para a qual voc no tem permisso.
8. Mantenha SQL Server Management Studio aberto, pois continuaremos a utiliz-lo neste tpico.
Agora vamos aprender a configurar algumas opes importantes de uma instncia do SQL Server 2005.
Estas opes so facilmente acessadas e configuradas com a utilizao do SQL Server Management Studio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000109
Exemplo: Para configurar algumas opes da instncia SERVIDOR\SQL2005, siga os passos indicados
a seguir:
1. As opes de configurao de uma instncia so acessadas atravs das propriedades da instncia.
Se o SQL Server Management Studio no estiver aberto, abra-o.
2. Para acessar as propriedades da instncia SERVIDOR\SQL2005, d um clique com o boto
direito nesta instncia, na janela Object Explorer. No menu de opes que surge d um
clique em Properties. Ser aberta a janela de propriedades da instncia, na qual temos onze
grupos de opes. As guias esto do lado esquerdo. Clicando em uma das guias, sero exibidas
as respectivas opes do lado direito da janela de propriedades. As principais opes que
podem ser configuradas em cada guia sero descritas na seqncia. Por padro, vem selecionada
a guia General (Geral).
3. Na guia General, conforme indicado na Figura 3.9, exibida uma srie de informaes sobre a
instncia SERVIDOR\SQL2005. 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. Para isso, basta clicar no boto Configure, que ser aberto o
Computer Manager, com a lista de todos os servios do SQL Server 2005, conforme descrito no
Captulo 2. Clique na opo Autostart Services. Nesta opo, voc pode marcar os seguintes
servios, para que sejam ou no inicializados, automaticamente: SQL Server (MSSQLServer), SQL
Server Agent (SQLServerAgent), Microsoft Search (MSFTESQL) e o MSDTC.
Figura 3.9 A guia General.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1100000Curso Completo
4. Tambm podemos definir parmetros de inicializao para o SQL Server. Para isso clique na
guia Startup Parameters.
5. Na guia Memory, conforme indicado na Figura 3.10, 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,
mais indicada a configurao automtica pelo SQL Server (Dynamic Memory Configuration).
Figura 3.10 A guia Memory.
A seguir temos uma descrio das principais opes da guia Memory:
Dynamically Memory Configuration: Permite que o prprio SQL Server gerencie a utilizao
da memria. a opo mais indicada, para a maioria das situaes.
Minimum server memory (in MB): Esta opo define qual a quantidade mnima de memria
que deve estar disponvel, para que o SQL Server possa ser inicializado.
Maximum server memory (in MB): Esta opo determina qual a quantidade mxima de
memria que pode ser utilizada pelo SQL Server.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000111
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.
Running values: Exibe os valores atualmente em uso. Estes valores no podem ser alterados
enquanto a opo Running values estiver selecionada.
6. Clique na guia Processors. Nesta guia, conforme indicado na Figura 3.11, 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 (ou processadores)
que deve ser utilizado pela instncia do SQL Server que est sendo configurada.
Figura 3.11 A guia Processor.
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 ou Windows Server 2003. 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1120000Curso Completo
com o IIS, se elevarmos a prioridade de execuo do SQL Server, iremos penalizar o desempenho dos
demais processos, em favor do SQL Server. Ou seja, prejudicaremos o desempenho de outros servios,
para melhorar o desempenho do SQL Server 2005.
Use Windows fibers: Esta uma opo bastante tcnica, que altera a maneira como o Win-
dows executa os processos do SQL Server. Ao definirmos esta opo, solicitamos que uma
determinada instncia do SQL Server utilize fibers ao invs de threads. Esta configurao de-
fine 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 somente ter efeito aps a
reinicializao do SQL Server. Para maiores informaes sobre threads, fibers e processos, consulte
o site msdn.microsoft.com.
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.
Running values: Exibe os valores atualmente em uso. Estes valores no podem ser alterados
enquanto a opo Running values estiver selecionada.
7. Clique na guia Security. Nesta guia, conforme indicado na Figura 3.12, podemos configurar
qual o tipo de segurana que iremos utilizar Windows Authentication Mode ou SQL Server
and Windows Authentication Mode. 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, relativo instncia que est sendo configurada.
Figura 3.12 A guia Security.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000113
8. Clique na guia Connections. Nesta guia, conforme indicado na Figura 3.13, 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 pela instncia do
SQL Server, que est sendo configurada. Um valor 0 significa um nmero ilimitado de
conexes. A opo Remote query time-out define o tempo mximo que uma consulta do
usurio pode ficar rodando. Limitar este valor importante, pois impede que consultas com
problemas fiquem rodando indefinidamente e ocupando recursos do servidor, o que pode
fazer com que o desempenho do servidor como um todo seja prejudicado (incluindo o
desempenho de todas as demais instncias instaladas no mesmo servidor). Este valor definido
em segundos. Um valor 0 significa tempo ilimitado, sendo que, conforme foi dito, esta no
uma boa opo.
Figura 3.13 A guia Connections.
9. Na guia Database Settings, conforme indicado na Figura 3.14, 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1140000Curso Completo
Figura 3.14 A guia Database Settings.
10. Clique na guia Misc Server Settings. Nesta guia, conforme indicado na Figura 3.15, 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 fired other 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 Interpre a two-digit year as falling between.
11. Clique na guia Advanced. Nesta guia, conforme indicado na Figura 3.16, podemos definir
opes tais como o tempo limite para logon remoto (Remote Login Timeout), o tamanho do
pacote de rede (Network Packet Size) e assim por diante.
12. Clique na guia Permissions. Nesta guia, conforme indicado na Figura 3.17, podemos definir
uma srie de permisses tais como alterar Bancos de Dados, alterar credenciais e outras. Veremos
mais detalhes sobre permisses e segurana no Captulo 6.
13. Neste momento no iremos alterar nenhuma das configuraes padro desta instncia do SQL
Server 2005. D um clique no boto Cancelar para fechar a janela de propriedades da instncia
SERVIDOR\SQL2005.
Para completar a nossa introduo ao SQL Server Management Studio, iremos acessar a opo Data-
bases da instncia SERVIDOR\SQL2005 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000115
imprescindvel ao funcionamento do SQL Server o Banco de Dados master, o qual est dentro da
opo System Databases e outros que so Bancos de Dados 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.
Figura 3.15 A guia Misc Server Settings.
Figura 3.16 A guia Advanced.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1160000Curso Completo
Figura 3.17 A guia Permissions.
Ao encerrarmos este tpico, o amigo leitor dever ter uma viso geral do funcionamento e das possibilidades
oferecidas pelo SQL Server Management Studio. No restante deste livro, voc ir executar uma srie de
tarefas e exemplos prticos, os quais so realizados utilizando-se o SQL Server Management Studio.
Exemplo: Verificando os Bancos de Dados instalados por padro, em uma instncia do SQL Server
2005, siga os passos indicados a seguir:
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o.
2. Clique no sinal de mais ao lado da instncia SERVIDOR\SQL2005 (ou da instncia instalada
no seu computador, o qual voc est usando para acompanhar este captulo), na janela Object
Explorer, para expandi-la. Sero exibidas as diversas categorias de objetos que compem uma
instncia do SQL Server 2005.
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\SQL2005, conforme pode ser visto na Figura 3.18.
4. D um clique na opo Databases. No painel da direita, sero exibidas informaes sobre os
Bancos de Dados do usurio, tal como a ltima vez em que foram feitos o backup do Banco de
Dados e o backup do log de transaes. No SQL Server 2005, os Bancos de Dados so divididos
em categorias, tais como System Databases, Databases Snapshots e depois os Bancos de Dados
criados pelo usurio. Clique no sinal de +, ao lado da opo System Databases, para expandi-la.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000117
Figura 3.18 Os Bancos de Dados criados durante a instalao.
A seguir apresento 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. neste Banco de Dados que esto 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. Isso
demonstra bem a importncia deste Banco de Dados.
model database: utilizado como um modelo para a criao de novos Bancos de Dados, isto
, sempre que criarmos um novo Banco de Dados, este ter as definies padres 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, este
herdar todas as caractersticas do Banco de Dados model.
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
Ser exibida a lista de Bancos de Dados chamados de Bancos de Dados do sistema. Estes bancos
so fundamentais ao funcionamento do SQL Server 2005. De uma maneira mais simples, diramos
que so para uso pelo prprio SQL Server 2005. Por exemplo, o Banco de Dados master o
principal Banco de Dados de uma instncia do SQL Server 2005. Nele esto tabelas com a lista de
todos os Bancos de Dados existentes na instncia, com a lista de cada tabela de cada banco, a lista
de campos de cada tabela de cada banco e assim por diante. Se, por algum motivo, o Banco de
Dados master for corrompido, a instncia do SQL Server 2005 simplesmente deixa de funcionar.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1180000Curso Completo
do Banco de Dados msdb, no aconselhvel modificar o seu contedo diretamente. Devemos
deixar toda e qualquer modificao para o servio SQL Server Agent.
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.
AdventureWorks: Este Banco de Dados, no mais na lista de System Databases, mas sim na
lista geral de Bancos de Dados, 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 2005 podem ser estudados atravs dos exemplos
presentes neste banco. Neste livro utilizarei 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 serve como um boa fonte de estudos.
5. Mantenha o SQL Server Management Studio aberto. No prximo exemplo iremos a um nvel
adiante, verificando quais elementos podem existir em um Banco de Dados do SQL Server 2005.
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 AdventureWorks para expandi-lo e
depois d um clique em AdventureWorks para selecion-lo. Na Figura 3.19, podemos ver os
vrios elementos que fazem parte de um Banco de Dados. Ao longo deste livro, voc aprender
a criar, alterar e gerenciar estes elementos.
A seguir, uma breve descrio dos principais elementos:
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 Script Table as ->
SELECT To -> New Query Editor Window. Ser aberta uma janela do Query Editor, com o
cdigo T-SQL para retornar os registros da tabela, na qual voc clicou com o boto direito do
mouse. Esta janela a substituta do Query Analyzer, o qual era um utilitrio separado no SQL
Server 2000. No SQL Server 2005, todas as funes do Query Analyzer so executadas diretamente
dentro do SQL Server Management Studio, atravs desta janela especfica para execuo de
comandos. Para executar o comando basta clicar no boto Execute ou pressionar Ctrl+E. O
comando ser executado e os registros da tabela sero exibidos, conforme exemplo da Figura
3.20. Embora possamos acessar os dados de uma tabela atravs do SQL Server Management
Studio, este no um procedimento comum. Conforme descrito anteriormente, o SQL Server
2005 um servidor de Banco de Dados, no qual ficam armazenadas as informaes, sendo que
o SQL Server oferece uma srie de funcionalidades para gerenciar e manter em segurana estes
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000119
Figura 3.19 Os elementos de um Banco de Dados.
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 2005, chamada de T-SQL. Podemos ter acesso instruo que define uma view,
simplesmente clicando com o boto direito do mouse sobre a view e, no menu que surge,
clicando em Modifty View.
Programmability -> 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 este 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 de os comandos serem compilados e armazenados em memria, que acelera a execuo
da consulta, 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 stored proce-
dure e selecionar Modify no menu de opes que surge. Na Figura 3.21, 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.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1200000Curso Completo
Figura 3.20 Dados da tabela EmployeeDepartmentHistory.
Figura 3.21 Os comandos de um stored procedure.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000121
As opes Security -> Users e Security -> Roles: Estas opes esto relacionadas com a segurana
de acesso aos elementos de um Banco de Dados. No Captulo 6 trabalharemos com segurana
no SQL Server 2005.
Programmability -> Rules: A criao de rules foi mantida no SQL Server 2005 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 um valor entre R$ 1.500,00 e
R$ 10.000,00. No SQL Server 2005 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 aprenderemos a criar CHECK Constraints.
Programmability -> Defaults: A criao de defaults permite que seja definido um valor padro
para um campo de uma tabela, caso o campo no seja preenchido pelo usurio. No Captulo
10, aprenderemos a criar defaults.
2. SQL Server Management Studio.
Agora finalizamos o nosso passeio inicial pelo SQL Server Management Studio. 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 Bancos de Dados no SQL Server 2005, vamos revisar alguns
conceitos importantes sobre os tipos de volumes que podem ser criados no Windows 2000 Server e no
Windows Server 2003. 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 e tambm o Windows Server 2003 apresentam algumas melhorias no
gerenciamento de discos, parties e volumes, 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 tratarei 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 e o Windows Server 2003,
podemos implementar RAID em software ou em hardware. Se voc estiver tendo problemas com o
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1220000Curso Completo
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
Utilizarei 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, temos que realizar algumas operaes
sobre o disco. Um dos aspectos que temos que definir o tipo de armazenamento que iremos utilizar
neste disco. No Windows 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, Windows Server 2003
e no Windows XP, 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 2 GB, 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.
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.22, 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.
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.23, 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:).
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000123
Figura 3.22 No mximo podemos ter quatro parties primrias.
Figura 3.23 Utilizando parties estendidas.
Para o Windows 2000 Server ou Windows Server 2003 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1240000Curso Completo
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:.
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 ou
Windows Server 2003.
Partio de Boot: Contm os arquivos do Windows 2000 Server ou Windows Server 2003,
tipicamente em uma pasta Winnt.
Volume set: Neste tipo de partio, combinamos o espao de duas ou mais parties, no mesmo
disco ou em discos diferentes, de tal forma que aparecem para o Windows 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 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 2005. O volume set no oferece melhorias no desempenho
nem tolerncia a falhas.
Stripe set: Neste tipo de partio 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, automaticamente, vai duplicando os dados 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 continua
funcionando. Podemos substituir o disco defeituoso e restabelecer o espelhamento. Este tipo
de partio s est disponvel nas verses de servidor do Windows, tais como o Windows NT
Server, Windows 2000 Server e Windows Server 2003.
Stripe set com paridade RAID 5: Um stripe set com paridade um stripe set com tolerncia
a falhas. Junto com os dados, o Windows 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000125
ser substitudo, e a informao nele contida, recriada a partir das informaes de paridade,
contidas 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 2005. Este tipo de partio s est disponvel nas verses de servidor
do Windows, tais como o Windows NT Server, Windows 2000 Server e Windows Server 2003.
Armazenamento dinmico: No armazenamento dinmico, que somente suportado pelo
Windows 2000 Server, Windows XP e Windows Server 2003, 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. 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 de o 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 comea a
preencher o espao do primeiro disco e, 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 2005, principalmente porque
no oferece melhorias no desempenho.
Volume espelhado (Mirrored volume) ou RAID-1: formado por duas cpias idnticas do
mesmo volume, sendo que as cpias so mantidas em discos separados e sincronizadas, em
tempo real, pelo Windows. 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 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 2005.
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 grava informaes de paridade (obtidas
a partir de clculos matemticos) nos vrios discos que formam o RAID-5. Com isso, no
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1260000Curso Completo
N
O
T
A
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, disponvel para compra no
formato de e-book, em: http://www.juliobattisti.com.br/cursos
FUNDAMENTOS EM: A ESTRUTURA DE ARMAZENAMENTO
DOS BANCOS DE DADOS NO SQL SERVER 2005
PR-REQUISITOS
No h.
METODOLOGIA
Apresentao dos elementos que compem um Banco de Dados do SQL Server 2005.
Um Banco de Dados do SQL Server 2005 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, triggers, 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. O arquivo
primrio contm as informaes necessrias para inicializao do Banco de Dados e utilizado para armazenar
as chamadas tabelas do sistema, que so tabelas necessrias ao funcionamento do Banco de Dados. As
tabelas criadas pelos usurios podem ser armazenadas tambm no arquivo primrio ou em arquivos
secundrios. 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000127
N
O
T
A
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 Banco de Dados master, j descrito anteriormente. 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. Perder o arquivo
primrio como perder o mapa para as demais informaes do Banco de Dados.
Arquivo 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 secundrios.
medida que o Banco de Dados vai crescendo podemos utilizar arquivos de dados secundrios
para gravar a informao em diferentes volumes. Esta tcnica pode ajudar no desempenho do
Banco de Dados como um todo. A extenso destes arquivos secundrios .ndf.
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 32 TB tambm, tanto nas verses de 32 bits quanto de 64 bits do SQL Server 2005. O nmero mximo de arquivos por Banco de
Dados de 32767.
Com o SQL Server 2005 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 2005 (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 ele significa, como
pode ser utilizado e quais as vantagens em utilizar filegroups.
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 Banco de Dados (atravs dos seus diversos
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1280000Curso Completo
N
O
T
A
tabela que muito consultada para um sistema de discos de melhor desempenho. Um arquivo pode estar
associado com um nico filegroup. O uso de filegroups tambm pode ser empregado para facilitar o
gerenciamento das rotinas de backup/restore, pois ao fazer o backup de um filegroup, todos os arquivos
contidos no filegroup mesmo que estejam em discos e volumes separados sero includos no backup.
Os arquivos de log no fazem parte de nenhum filegroup, sendo que estes 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. Estas tabelas ficam gravadas no arquivo de dados primrio (.mdf) o qual, por
padro, associado com o Primary filegroup (o qual , por padro, o default filegroup).
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, onde o desempenho precisa
ser otimizado o mximo possvel, 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 hardware, 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.24. 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 para grandes Bancos de Dados, os quais sero utilizados por
um grande nmero de usurios. Um nico disco, uma nica controladora = desempenho nada
satisfatrio se o volume de dados e o nmero de usurios forem grandes.
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,
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000129
conforme indicado na Figura 3.25. Neste caso, estamos melhorando consideravelmente o desempenho
do nosso sistema.
Figura 3.24 Uma situao com possveis problemas no desempenho.
Figura 3.25 Melhorando o desempenho do nosso Banco de Dados.
Poderamos otimizar ainda mais o desempenho do nosso sistema de discos. Por exemplo, ao invs de
termos simplesmente Disco 2 e Disco 3, estes poderiam ser sistemas de RAID-5 com controladoras
diferentes, o que otimizaria ainda mais o desempenho.
A seguir, apresento alguns detalhes importantes, os quais 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1300000Curso Completo
N
O
T
A
Os arquivos de log no podem fazer parte de um filegroup e so gerenciados separadamente
pelo SQL Server 2005.
At neste momento tratamos apenas da teoria sobre a estrutura de um Banco de Dados no SQL Server 2005 e de filegroups. Aprenderemos,
no prximo tpico, 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 SQL Server Management Studio. Tambm aprenderemos a executar
estas tarefas, usando comandos T-SQL, na janela para execuo de comandos, dentro do prprio SQL Server Management Studio (a qual
substitui o Query Analyzer), o qual era um aplicativo separado, no SQL Server 2000.
FUNDAMENTOS EM: CRIAR BANCOS DE DADOS NO
SQL SERVER 2005 COM O SQL SERVER MANAGEMENT STUDIO
PR-REQUISITOS
Noes do SQL Server 2005.
Utilizao dos consoles baseados no MMC.
Conhecer os opes que fazem parte de uma instncia do SQL Server 2005.
METODOLOGIA
Apresentao dos passos utilizados para a criao de Bancos de Dados.
TCNICA
Criao de Bancos de Dados com o SQL Server Management Studio.
Antes de criarmos um novo Banco de Dados quero fazer um pequeno parnteses sobre segurana. Voc
deve ter notado que, sempre que abrimos o SQL Server Management Studio, tivemos acesso a todos os
elementos do SQL Server 2005. Nunca foi solicitado que digitssemos um nome de usurio e senha.
Isto acontece porque, ao instalarmos o SQL Server 2005 no Captulo 2, optamos pela segurana integrada
com o Windows. Como estou fazendo o logon com a conta Administrator, esta 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 prtico: Criando um novo Banco de Dados na instncia SERVIDOR\SRVINST01, usando o
SQL Server Management Studio:
1. Abra o SQL Server Management Studio e conecte-se com o servidor no qual voc deseja criar
um novo Banco de Dados. Neste exemplo, estou fazendo a conexo com o servidor
SERVIDOR\SQL2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000131
Figura 3.26 A janela New Database.
5. Na guia General, iremos definir o nome do Banco de Dados. No nosso exemplo digitaremos:
Exemplo1. 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 a qual, evidentemente, faz
parte do SQL Server 2005. Nesta guia voc tambm define quem ser o usurio dono do Banco de
Dados. O usurio dono, por padro, tem permisses completas sobre todos os objetos do Banco
de Dados. Por padro, sugerido o usurio as, que o usurio com permisses de administrador
no SQL Server 2005. Vamos aceitar a sugesto e deixar o usurio as como dono do Banco de
Dados. Nesta guia aceite a opo padro do servidor e digite Exemplo1 no campo Name.
2. No painel da esquerda, localize a janela Object Explorer. Se esta janela no estiver aberta,
pressione a tecla de funo F8 para exibi-la. Caso a janela no esteja na posio desejada, voc
pode arrast-la para qualquer posio, dentro da janela do SQL Server Management Studio.
Clique no sinal de + ao lado da instncia na qual ser criado o Banco de Dados.
3. Nas opes que surgem abaixo da instncia, d um clique em Databases para selecion-la.
4. Clique com o boto direito do mouse em Databases. No menu que surge d um clique na
opo New Database. Ser exibida a janela New Database, conforme indicado na Figura 3.26,
com a guia General, selecionada por padro.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1320000Curso Completo
6. Na parte de baixo desta 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. Voc
tambm pode definir o tamanho inicial para o arquivo. No nosso exemplo, digite 20 na coluna
Initial Size do arquivo primeiro, para criarmos um arquivo primrio com um tamanho inicial
de 10 MB. Na coluna Autogrowth (Autocrescimento), voc define de que maneira o arquivo
primrio ir crescer, medida que os dados forem sendo adicionados. O padro crescer de 10
em 10 por cento, com tamanho ilimitado (evidentemente que o tamanho mximo ser limitado
pelo espao disponvel em disco). Se voc quiser alterar a forma de crescimento, clique no
boto com as reticncias ... ao lado da opo selecionada. Ser exibida a janela Change
Autogrowht, indicada na Figura 3.27, na qual voc pode definir diferentes formas de crescimento
para o arquivo primrio exemplo1-prim, do Banco de Dados Exemplo1. Voc pode habilitar ou
desabilitar o crescimento automtico, pode fazer com que o crescimento seja em percentual ou
em MB e pode permitir um tamanho mximo ou crescimento irrestrito. Selecione as opes
desejadas, que para o nosso exemplo sero: Tamanho inicial: 10 MB, Crescimento automtico
em incrementos de 1 MB e Poder crescer at o mximo de 50 MB. Selecione estas opes e
clique em OK, para fechar a janela Change Autogrowht.
Figura 3.27 Definindo as opes de crescimento do arquivo primrio.
8. Agora vamos definir a pasta onde ser gravado o arquivo primrio. Por padro, o SQL Server 2005
sugere o seguinte caminho: C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\
DATA. Vamos alterar o caminho para: C:\livrosql\exemplo1. Voc pode digitar este caminho direta-
mente, ou clicar no boto com as reticncias, para selecionar o caminho com o mouse e deixar que
o SQL Server 2005 preencha esta coluna, com o caminho selecionado.
9. Ainda na guia General, e seguindo as orientaes passadas anteriormente, vamos configurar as opes
do arquivo secundrio C:\livrosql\exemplo1\exemplo1-sec1.ndf, com as seguintes caractersticas:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000133
Tamanho inicial: 10 MB.
Crescimento automtico em incrementos de 2 MB.
Poder crescer at o mximo de 100 MB.
10. Para adicionar um arquivo secundrio, clique no boto Add, na parte de baixo da guia General.
Uma nova linha ser criada. Na coluna File name, digite exemplo1-sec1.ndf. Na coluna File
Type selecione Data. Na coluna Filegroup selecione Primary. Na colunia Initial Size (MB), digite
10. Clique no boto de reticncias, ao lado da opo de Autocrescimento, para abrir a janela
Change Autogrowth e selecione um crescimento automtico em incrementos de 2 MB e defina
que o arquivo poder crescer at o mximo de 100 MB. Clique em OK para fechar a janela
Change Autogrowth.
11. Agora vamos definir a pasta onde ser gravado o arquivo secundrio. Por padro, o SQL Server
2005 sugere o seguinte caminho: C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\
MSSQL\DATA. Vamos alterar o caminho para: C:\livrosql\exemplo1. Voc pode digitar este
caminho diretamente, ou clicar no boto com as reticncias, para selecionar o caminho com o
mouse e deixar que o SQL Server 2005 preencha esta coluna, com o caminho selecionado. Suas
configuraes devem estar conforme indicado na Figura 3.28.
Figura 3.28 Arquivos primrio e secundrio, j configurados.
O passo final a definio do arquivo de log C:\livrosql\exemplo1\exemplo1-log.ldf. Este arquivo j
vem com definies padro, na linha logo abaixo de onde foi definido o arquivo primrio. Vamos criar
um arquivo de log com as seguintes caractersticas:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1340000Curso Completo
Tamanho inicial: 5 MB.
Crescimento automtico em incrementos de 10%.
Poder crescer at o mximo de 40 MB.
12. Observe que na coluna File Type j vem selecionado Log e na coluna Filegroup vem selecionada
a opo Not Applicabe. Na colunia Initial Size (MB), digite 5. Clique no boto de reticncias, ao
lado da opo de Autocrescimento, para abrir a janela Change Autogrowth e selecione um
Crescimento automtico em incrementos de 10% e defina que o arquivo poder crescer at o
mximo de 40 MB. Clique em OK para fechar a janela Change Autogrowth.
13. Agora vamos definir a pasta onde ser gravado o arquivo de log. Por padro, o SQL Server 2005
sugere o seguinte caminho: C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\
DATA. Vamos alterar o caminho para: C:\livrosql\exemplo1. Voc pode digitar este caminho
diretamente, ou clicar no boto com as reticncias, para selecionar o caminho com o mouse e
deixar que o SQL Server 2005 preencha esta coluna, com o caminho selecionado. Suas
configuraes devem estar conforme indicado na Figura 3.29.
Figura 3.29 Configuraes para o Banco de Dados Exemplo1.
Poderamos usar as demais guias Options, Filegroups e Extended Properties para definir opes avanadas do Banco de Dados. Para este
primeiro exemplo, estas guias no sero utilizadas.
A pasta C:\livrosql\exemplo1 j deve ter sido criada, se no ser gerado um erro na hora de criar o Banco de Dados Exemplo1.
13. D um clique no boto OK, e aps alguns segundos o Banco de Dados Exemplo1 ter sido criado.
14. Agora vamos nos certificar de que o Banco de Dados Exemplo1 foi, efetivamente, criado. Na
janela Object Explorer clique no sinal de + ao lado da opo Databases, abaixo da instncia na
N
O
T
A
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000135
N
O
T
A
qual o Banco de Dados foi criado. Na lista de Banco de Dados j dever ser exibido o Banco de
Dados Exemplo1. D um clique neste Banco de Dados, para exibir as suas propriedades, no
painel da direita, conforme indicado na Figura 3.30:
Figura 3.30 O Banco de Dados Exemplo1, recm-criado.
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).
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. Basta clicar na guia Files, para ter acesso s opes de alteraes dos arquivos
existentes e de adio de novos arquivos secundrios.
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 proposto: Acesse as propriedades do Banco de Dados Exemplo1 e crie mais um arquivo
secundrio e um arquivo de log, conforme definido a seguir. Para isso basta clicar com o boto
direito do mouse no Banco de Dados Exemplo1 e, no menu de opes que exibido, clicar em
Propriedades. Na janela de propriedades que exibida, clique na guia Files. Agora s usar o boto
Add, para adicionar novos arquivos e configurar as propriedades de cada novo arquivo, conforme
definies da Tabela 3.1:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1360000Curso Completo
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.
Tabela 3.1 Criando arquivos adicionais, no banco de dados Exemplo1.
Exerccio: Criar o Banco de Dados indicado na Tabela 3.2, utilizando os passos que voc aprendeu no
exemplo prtico anterior. O Banco de Dados ser chamado de Exemplo2 e ser criado na instncia
SERVIDOR\SQL2005 (use a instncia que voc tem disponvel, no seu computador). Os arquivos do
Banco de Dados Exemplo2 sero gravados na pasta: C:\livrosql\Exemplo2. Lembre-se de que esta
pasta j deve ter sido criada, antes que o Banco de Dados possa ser criado, se no ser gerado um erro
na hora da criao do Banco de Dados.
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.
Tabela 3.2 O banco de dados Exemplo2.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000137
Ento mos obra. Em caso de dvidas sobre a criao do Banco de Dados Exemplo2, s entrar em
contato, pelo e-mail: webmaster@juliobattisti.com.br
Observao importante sobre o crescimento automtico de arquivos.
Vamos falar um pouco mais sobre o crescimento automtico dos arquivos primrio, secundrio e de
log de um Banco de Dados. Por exemplo, vamos supor que estejamos criando um Banco de Dados
com as caractersticas indicadas na Tabela 3.3.
Vamos responder s seguintes questes:
1) Ao criarmos este Banco de Dados, quanto ele 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. Este tamanho vai aumentando, conforme definido pelas
configuraes de autocrescimento, 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
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.
Tabela 3.3 Algumas questes sobre espao em disco.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1380000Curso Completo
a vida do DBA Database Administrator, pois dispensa o administrador de ter que aumentar,
manualmente, o tamanho dos arquivos do Banco de Dados, sempre que o tamanho mximo fosse
atingido. A definio de um tamanho mximo tambm recomendada, pois evita que, devido a alguma
operao com problemas, devido a algum erro de programao, todo o espao do disco seja preenchido.
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 (os arquivos do Banco de Dados Exemplo2 somente sero criados
se voc concluiu o exerccio proposto anteriormente):
1. Abra o Windows.
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 ser exibidos os arquivos do
Banco de Dados Exemplo1, conforme indicado na Figura 3.31:
Figura 3.31 Os arquivos do Banco de Dados Exemplo1.
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 arquivos.
5. Feche o Windows Explorer.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000139
FUNDAMENTOS EM: ENTENDER E UTILIZAR COMANDOS T-SQL
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
METODOLOGIA
Apresentao dos principais elementos e funes da janela para Execuo de Comandos T-SQL, dentro do SQL Server Management Studio.
TCNICA
Aprender atravs de exemplos prticos.
J falamos algumas vezes sobre a ferramenta Query Analyzer, a qual era utilizada no SQL Server 2000.
O Query Analyzer era a ferramenta usada para a execuo de comandos T-SQL. No SQL Server 2005, o
Query Analyzer deixou de existir e, dentro do prprio SQL Server Management Studio, podemos abrir
uma janela para execuo de comandos T-SQL (na verdade esta janela, aberta dentro do SQL Server
Management Studio, muito parecida, em funcionalidade, com o que era o Query Analyzer no SQL
Server 2000). Na verdade, na opinio deste autor, no SQL Server 2005, simplesmente o Query Analyzer
deixou de ser uma ferramenta separada e teve a sua funcionalidade embutida dentro do SQL Server
Management Studio. Neste item, veremos a janela para execuo de comandos T-SQL, dentro do SQL
Server Management Studio.
possvel, literalmente, executar qualquer ao, usando comandos T-SQL. Criar Bancos de Dados,
configurar Bancos de Dados, criar tabelas, chaves primrias, relacionamentos entre tabelas, criar
consultas, etc. Qualquer ao do SQL Server 2005 possvel de ser executada, usando comandos T-
SQL. A idia bsica de execuo dos comandos que cada comando executado em relao a um
determinado objeto. Por exemplo, um comando T-SQL para criao de um novo Banco de Dados
executado em uma instncia do SQL Server 2005. Um comando T-SQL para criar uma nova tabela
executado em um Banco de Dados. Um comando T-SQL para definir permisses de acesso para um ou
mais usurios, para os dados de uma determinada tabela, executado na tabela e assim por diante.
Com isso, temos uma regra geral para abrir uma janela para execuo de comandos T-SQL, em relao
a um determinado objeto do SQL Server 2005. Por exemplo, se voc quer executar um comando em
uma instncia do SQL Server 2005, abra o SQL Server Management Studio, clique com o boto direito
do mouse na referida instncia, na janela Object Explorer e, no menu de opes que exibido, clique
em New Query. Se voc quer executar um comando T-SQL em um Banco de Dados, clique com o boto
direito do mouse no Banco de Dados, na janela Object Explorer e, no menu de opes que exibido,
clique em... adivinhe: New Query. A idia bsica essa, localize o objeto sobre o qual sero executados
os comandos T-SQL, clique com o boto direito do mouse neste objeto e, no menu de opes que
exibido, clique em New Query. Ser aberta uma janela para execuo de comandos T-SQL, no painel da
direita do SQL Server Management Studio, conforme exemplo da Figura 3.32:
Observe, no ttulo da janela de execuo de comandos, que informado com qual objeto voc est
conectado. No exemplo da Figura 3.32, com o Banco de Dados Exemplo1, da instncia
SERVIDOR\SQL2005.
Por padro, a conexo para execuo de comandos feita com a mesma conta com a qual voc se
conectou com o SQL Server Management Studio. Caso a conta que voc esteja utilizando no tenha
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1400000Curso Completo
Figura 3.32 Janela para execuo de comandos T-SQL, no Banco de Dados Exemplo1.
A janela de execuo fornece um espao, para que voc digite o comando a ser executado. Claro que
at este momento voc conhece somente o bsico dos comandos T-SQL, os quais foram apresentados
no Captulo 1. Ao longo deste livro, voc aprender uma grande quantidade de comandos. E muitos
outros ainda existem, os quais, por falta de espao (se no o livro ficaria com umas 10 mil pginas),
no tm como ser abordados em um nico livro. No Books Online, voc encontra uma referncia
completa e detalhada, com exemplos, sobre todos os comandos T-SQL disponveis no SQL Server
2005. E so, literalmente, milhares de comandos.
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 a janela de execuo de comandos em
funcionamento atravs de um exemplo prtico.
Vamos comear executando uma consulta simples, a qual retorna todos os registros da tabela
HumanResources.Employee, do Banco de Dados AdventureWorks, o qual o Banco de Dados de
exemplos, instalado com o SQL Server 2005. Para isso precisamos fazer o seguinte:
Ento vamos, passo a passo, fazer o exemplo proposto.
permisso para executar comandos no objeto selecionado, ser solicitado que voc informe uma conta
e a respectiva senha, conta esta que deve ter as permisses para execuo de comandos, no objeto
selecionado. Estas informaes so necessrias, pois no so todos os usurios que tm acesso a todos
os objetos de uma instncia do servidor SQL.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000141
Exemplo prtico: Executando uma consulta simples, usando a janela de execuo de comandos T-SQL,
do SQL Server Management Studio.
Para executar um comando, que retorna todos os registros da tabela HumanResources.Employee, do
Banco de Dados AdventureWorks, siga os passos indicados a seguir:
1. Faa o logon com uma conta com permisso de administrador.
2. Abra o SQL Server Management Studio.
3. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para
exibir as opes disponveis.
4. Clique no sinal de + ao lado da opo Databases, para exibir os Bancos de Dados disponveis
nesta instncia do SQL Server 2005.
5. Na lista de Banco de Dados, clique com o boto direito do mouse no Banco de Dados
AdventureWorks e, no menu de opes que exibido, clique em New Query. A janela para
execuo de comandos ser aberta e exibida na rea central do SQL Server Management Stu-
dio. Observe que a janela j vem conectada com o Banco de Dados AdventureWorks, pois foi
neste Banco de Dados que voc clicou com o boto direito do mouse.
6. Na janela de execuo de comandos T-SQL, digite o seguinte comando:
SELECT * FROM HumanResources.Employee
Observe que medida que voc digita, o SQL Server 2005 vai colocando os comandos e nome de
tabelas em cores diferentes. Isto significa que o comando que voc est digitando est sendo entendido.
Caso o nome de um comando no fique colorido aps a digitao, significa que o comando no foi
entendido. Provavelmente voc deve ter cometido um erro de digitao.
7. Aps ter digitado o comando, pressione F5 para execut-lo. Ao invs de F5 voc pode pressionar
Ctrl+E para executar os comandos que foram digitados.
O resultado da execuo deste comando uma listagem com todos os registros da tabela
HumanResources.Employee do Banco de Dados AdventureWorks, conforme indicado na Figura 3.33:
Observe que, na parte de baixo da janela, temos duas guias: Results, que onde so exibidos os resultados
de uma consulta; e Messages, que onde sero exibidas mensagens. No caso de a consulta ter sido
executada com sucesso, a mensagem limita-se ao nmero de linhas que foram retornadas, como por
exemplo:
(290 row(s) affected)
para o caso de termos digitado um comando com erros a mensagem descreve o tipo de erro. Por
exemplo o comando:
SELECT * FROM HumanResources.Employeexx
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1420000Curso Completo
ir retornar a seguinte mensagem de erro:
Msg 208, Level 16, State 1, Line 1
Invalid object name HumanResources.Employeexx.
Figura 3.33 Resultado da execuo do comando T-SQL.
Neste caso digitei o nome da tabela incorretamente. Como no existe uma tabela chamada
HumanResources.Employeexx, no Banco de Dados AdventureWorks, no foi possvel executar o
comando e foi emitida a mensagem de erro informando o motivo.
Mas a janela para execuo de comandos T_SQL no se limita execuo de comandos T-SQL simples,
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 AdventureWorks e voc
deseja executar uma instruo SQL no banco master. Poderamos utilizar a seguinte seqncia de comandos
para, primeiro, alternarmos para o Banco de Dados master e, depois, executarmos uma instruo SQL nele.
USE master
SELECT * FROM SYS.TABLES
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000143
Todos os comandos SQL que aprendemos no Captulo 1 podem ser executados nesta janela de execuo
de cdigo. Por exemplo, vamos executar uma consulta no Banco de Dados NorthWind (voc ainda
no tem este Banco de Dados no SQL Server 2005. Mostrarei como importar este Banco de Dados, no
captulo sobre o DTS, onde falarei sobre importao e exportao de dados com o SQL Server 2005), a
qual 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 nesta janela de execuo de comandos. Vamos trabalhar com
muitas destas funcionalidades ao longo deste livro. A janela para execuo de comandos T-SQL de
grande utilidade para que o DBA possa executar comandos diretamente nos Bancos de Dados do SQL
Server. Conforme aprenderemos ao longo deste livro, existe 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 da janela de execuo de cdigo. Para fechar esta janela, basta clicar no x no lado
direito da janela (no no x bem em cima, se no voc ir fechar o SQL Server Management Studio).
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 na janela de execuo de cdigo para futuras execues. Desta
forma no precisamos digitar o comando, ou conjunto de comandos, cada vez que estes precisarem ser executados. 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 .
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 USANDO COMANDOS T-SQL
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados relacionais.
N
O
T
A
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1440000Curso Completo
Saber utilizar a janela para execuo de comandos T-SQL.
Conhecer a estrutura de armazenamento de um Banco de Dados do SQL Server 2005.
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 e nem de fcil entendimento. 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:
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,
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000145
N
O
T
A
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 fceis.
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.
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.
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.
Tabela 3.4 Banco de dados Exemplo3.
Exemplo prtico: Criar o Banco de Dados Exemplo3, com as definies dadas pela Tabela 3.4. Criar o
Banco de Dados na instncia SERVIDOR\SQL2005 (ou utilize uma instncia disponvel no computador
que voc est usando).
1. Faa o logon com uma conta com permisso de administrador.
2. Abra o SQL Server Management Studio.
3. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para
exibir as opes disponveis.
4. Clique com o boto direito do mouse na instncia SERVIDOR\SQL2005 e, no menu de opes
que exibido, clique em New Query. Ser aberta a janela para execuo de comandos T-SQL, j
descrita anteriormente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1460000Curso Completo
N
O
T
A
5. Digite o seguinte comando, o qual ir criar o Banco de Dados Exemplo3, com as definies da
Tabela 3.4:
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
***************************************
Veja que estamos utilizando o caractere 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 na guia Messages:
Command(s) completed successfully.
Com isso o nosso Banco de Dados Exemplo3 foi criado, com as caractersticas definidas na Tabela 3.4.
Mantenha o SQL Server Management Studio aberto.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000147
Agora vamos verificar se o Banco de Dados Exemplo3 foi realmente criado.
Exemplo prtico: Verificando se o Banco de Dados Exemplo3 foi realmente criado:
1. Abra o SQL Server Management Studio (j deve estar aberto do exemplo anterior).
2. Na janela Object Explorer, clique no sinal de mais ao lado da instncia SERVIDOR\SQL2005
para expandi-la (use a instncia disponvel no computador que voc est utilizando).
3. Clique no sinal de mais ao lado de Databases para expandi-la.
4. Observe que o Exemplo3 j deve aparecer na listagem de Banco de Dados. Caso o Banco de
Dados Exemplo3 ainda no esteja sendo exibido, clique na opo Databases para selecion-la
e pressione a tecla F5 para atualizar a viso.
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.
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 ou secundrio) deveriam ser criados, estes fo-
ram criados no filegroup padro que o Primary Filegroup. 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 prtico: Utilizar o comando CREATE DATABASE para criar um Banco de Dados chamado
Exemplo4, com as caractersticas indicadas na Tabela 3.5.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1480000Curso Completo
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.
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.
Tabela 3.5 Banco de dados Exemplo4.
Observe que os arquivos sero salvos na pasta C:\livrosql\exemplo4. Criaremos o Banco de Dados
Exemplo4 na instncia SERVIDOR\SQL2005. Tambm nunca demais lembrar que a pasta
C:\livrosql\exemplo4 j deve existir, antes que o comando Create Database seja executado, se no o
comando ir falhar e ser gerada uma mensagem de erro.
Para criar o Banco de Dados Exemplo4, com as caractersticas definidas na Tabela 3.5, siga os passos
indicados a seguir:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000149
1. Faa o logon com uma conta com permisso de administrador.
2. Abra o SQL Server Management Studio.
3. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para
exibir as opes disponveis.
4. Clique com o boto direito do mouse na instncia SERVIDOR\SQL2005 e, no menu de opes
que exibido, clique em New Query. Ser aberta a janela para execuo de comandos T-SQL, j
descrita anteriormente.
5. Digite o seguinte comando:
CREATE DATABASE Exemplo4
Especifica o filegroup Primary
ON PRIMARY
( NAME = exemplo4_prim,
FILENAME = C:\livrosql\exemplo4\exemplo4_prim.mdf,
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 )
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1500000Curso Completo
Vamos repetir esta observao porque ela importante. Veja que estamos utilizando o caractere de sublinhado _ para os nomes lgicos, pois
no podemos utilizar o sinal de menos -, 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 uma mensagem de erro.
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 na guia Messages:
Command(s) completed successfully.
Esta mensagem a confirmao de que o Banco de Dados foi criado com sucesso.
Agora vamos verificar se o Banco de Dados Exemplo4 foi realmente criado.
Exemplo prtico: Verificando se o Banco de Dados Exemplo4 foi realmente criado:
1. Abra o SQL Server Management Studio (j deve estar aberto do exemplo anterior).
2. Na janela Object Explorer, clique no sinal de mais ao lado da instncia SERVIDOR\SQL2005
para expandi-la (use a instncia disponvel no computador que voc est utilizando).
3. Clique no sinal de mais ao lado de Databases para expandi-la.
4. Observe que o Banco de Dados Exemplo4 j deve aparecer na listagem de Banco de Dados.
Caso o Banco de Dados Exemplo ainda no esteja sendo exibido, clique na opo Databases
para selecion-la e pressione a tecla F5 para atualizar a viso.
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 USANDO COMANDOS T-SQL
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Saber utilizar a janela para execuo de comandos T-SQL.
Conhecer a estrutura de armazenamento de um Banco de Dados do SQL Server 2005.
METODOLOGIA
Apresentao dos comandos T-SQL para alterao de Bancos de Dados.
N
O
T
A
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000151
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:
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 e
nem de fcil entendimento, vamos aprender a utilizar este comando atravs de exemplos prticos.
Exemplo prtico: Alterar o Banco de Dados Exemplo3, criado anteriormente, adicionando um arquivo
secundrio e um arquivo de log, conforme orientaes da Tabela 3.6
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.
Tabela 3.6 Alterando o Banco de Dados Exemplo3.
Para alterar o Banco de Dados Exemplo3, siga os passos indicados a seguir:
1. Faa o logon com uma conta com permisso de administrador.
2. Abra o SQL Server Management Studio.
3. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para
exibir as opes disponveis (utilize uma instncia do SQL Server 2005, disponvel no
computador que voc est utilizando).
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1520000Curso Completo
N
O
T
A
4. Clique com o boto direito do mouse na instncia SERVIDOR\SQL2005 e, no menu de opes
que exibido, clique em New Query. Ser aberta a janela para execuo de comandos T-SQL, j
descrita anteriormente.
5. Digite o seguinte comando:
ALTER DATABASE Exemplo3
ADD FILE
(
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 na mesma seqncia de comandos 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.
6. 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 ser exibida:
Command(s) completed successfully.
Esta mensagem a confirmao de que o Banco de Dados Exemplo4 foi alterado com sucesso.
Vamos a mais um exemplo prtico:
Exemplo prtico: Como remover um arquivo de um Banco de Dados, usando comandos T-SQL:
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000153
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 prtico: Como modificar um arquivo de um Banco de Dados, usando comandos T-SQL?
No comando a seguir, eu utilizo 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 SQL Server Management Studio.
Saber utilizar a janela de execuo de comandos T-SQL.
Conhecer a estrutura de armazenamento de um Banco de Dados do SQL Server 2005.
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 Banco de Dados do
servidor SQL Server. A excluso pode ser feita utilizando-se o SQL Server Management Studio ou o
comando DROP DATABASE.
Para excluir um Banco de Dados com o SQL Server Management Studio, basta localizar o Banco de
Dados a ser excludo, clicar com o boto direito do mouse sobre o Banco de Dados e, no menu de
opes que surge, clicar na opo Delete.
Surgir uma janela pedindo confirmao, conforme indicado na Figura 3.34.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1540000Curso Completo
N
O
T
A
Figura 3.34 Confirmando a excluso de um Banco de Dados.
Para excluir um Banco de Dados usando a janela de execuo de comandos T-SQL, 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:
Command(s) completed successfully.
Ao excluir um Banco de Dados utilizando o comando DROP DATABASE, no ser pedida confirmao. Fique atento a este detalhe.
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
Este comando ir excluir os Bancos de Dados Exemplo3 e Exemplo4. Se um dos Bancos de Dados a ser
excludo no existir, ser gerada uma mensagem de erro, semelhante indicada a seguir:
Msg 3701, Level 11, State 1, Line 1
Cannot drop the database Exemplo4, because it does not exist or you do not have permission.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005
Curso Completo0000155
CONCLUSO
Neste captulo voc aprendeu uma srie de conceitos importantes e que sero utilizados no restante
deste livro.
Mostrei como utilizar as duas principais ferramentas de administrao do SQL Server 2005:
SQL Server Management Studio.
Janela para execuo do comandos T-SQL.
Utilizamos o SQL Server Management Studio para navegar pelos principais componentes de um servidor
SQL Server 2005 e de um Banco de Dados. Tambm aprendemos a configurar as diversas opes de
uma instncia do SQL Server 2005, 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 2005, o qual formado por uma
srie de arquivos do sistema operacional, arquivos estes que podem ser de um dos seguintes tipos:
Um arquivo de dados primrio (Primary File).
Um ou mais arquivos de dados secundrios (Secondary File).
Um ou mais arquivos de log (Log File).
Na seqncia, aprendemos sobre o sistema de armazenamento do Windows 2000 e do Windows Server
2003, bem como sobre as implementaes de RAID.
Na parte final deste captulo tratamos da criao e alterao de Bancos de Dados utilizando a interface
grfica do SQL Server Management Studio e tambm comandos T-SQL executados na janela de execuo
de comandos, a qual faz parte do SQL Server Management Studio.
Tambm aprendemos a alterar e excluir Bancos de Dados, utilizando o SQL Server Management Studio
e comandos T-SQL.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 4
CRIANDO TABELAS, NDICES E
VIEWS COM O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1580000Curso Completo
N
O
T
A
INTRODUO
No Captulo 3, aprendemos a criar Bancos de Dados utilizando o SQL Server Management Studio e
tambm a janela para execuo de comandos T-SQL. Porm, um Banco de Dados em si no serve para
nada. No se assuste com a afirmao, pois exatamente isso. Ou seja, s o banco de dados no serve
para absolutamente nada. Precisamos criar os diversos elementos que compem o banco de dados,
para que este possa ter alguma utilidade. Neste captulo aprenderemos sobre os seguintes elementos,
que fazem parte de um banco de dados:
Tipos de dados
Tabelas
ndices
Iniciaremos o captulo aprendendo sobre os tipos de dados predefinidos no SQL Server 2005. Conforme
explicarei 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 2005. Utilizaremos o
SQL Server Management Studio e tambm comandos T-SQL. 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 criadas as tabelas, podemos aprender a definir ndices para as tabelas. Tambm aprenderemos
a definir um campo como sendo a chave primria da tabela. Conforme ser explicado, os ndices
desempenham um papel muito importante no desempenho das consultas (views). Uma correta definio
dos ndices pode ser um auxiliar valioso para obter um desempenho otimizado. Aprenderemos a criar
ndices utilizando o SQL Server Management Studio e utilizando comandos T-SQL.
Aps ter estudado este captulo, o amigo leitor dever estar habilitado para:
Criar tabelas em um Banco de Dados do SQL Server 2005.
Definir as caractersticas dos campos de uma tabela.
Entender a importncia da criao de ndices para o desempenho de consultas.
Saber criar ndices utilizando as diversas ferramentas disponveis.
Observe que, neste captulo, iremos criar tabelas e ndices. No faremos a entrada de dados, inserindo registros nas tabelas que forem
criadas neste captulo. Conforme descrito anteriormente, o SQL Server 2005 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 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000159
FUNDAMENTOS EM: PROJETO DE BANCO DE DADOS
E TIPOS DE DADOS DO SQL SERVER 2005
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
METODOLOGIA
Apresentao dos tipos bsicos do SQL Server 2005.
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 banco de dados; quais
campos faro parte de cada tabela; quais as propriedades de cada um dos campos; qual campo ser a
chave primria 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
2005. 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/2005, a qual uma data invlida. J se, ao invs de data, o campo fosse do tipo Texto, a entrada
30/02/2005 seria aceita. Observe que, ao definir um tipo para cada campo, j temos uma maneira de
limitar os valores que so aceitos para este campo. 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 2005.
Tipo Descrio Tamanho
bigint Um inteiro de 8 bytes. Seus valores variam 8 bytes
na seguinte faixa: -2^63
(-9,223,372,036,854,775,808) at 2^63 -1
(9,223,372,036,854,775,807)
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.
Tabela 4.1 Principais tipos de dados do SQL Server 2005.
Continua
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1600000Curso Completo
Tipo Descrio Tamanho
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. O Microsoft SQL Server 2005 otimizou o
espao utilizado para armazenar valores do tipo bit. Por
exemplo, se em uma tabela houver at oito colunas com
dados do tipo bit, estas colunas sero armazenadas como
um byte; se houver entre 9 e 16 colunas do tipo com dados
do tipo bit, estas colunas sero armazenas como dois
bytes e assim por diante. Valores do tipo String, True e False
podem ser convertidos para dados do tipo Bit, sendo
True = 1 e False = 0.
char(n) Texto de tamanho fixo (n bytes), com caracteres no n bytes
Unicode. O valor mximo para n 8000.
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+38 at 4 a 8 bytes
+1.79E+38. 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 Um inteiro variando de -(2^31) (-2.147.483.648) 4 bytes
ou int 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 caractere, 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 caractere, no campo.
mas em contrapartida suportam todos os caracteres
internacionais, tais como os utilizados no alfabeto
Chins ou rabe.
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 1.18E 38 4 bytes
at 3.40E + 38. o mesmo que float(24).
Continuao
Continua
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000161
Tipo Descrio Tamanho
smalldatetime Pode conter valores de data e hora, no 4 bytes
perodo de 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 de 4 bytes
-214.748,3648 at 214.748,3647.
sql_variant Permite valores de diferentes tipos. Varivel
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.
text Utilizado para valores de texto com tamanho 16 bytes por caractere
varivel e maiores do que 8000 caracteres.
Pode conter at (2^31)-1.
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. 1 byte
unique-identifier Contm um binrio de 16 bytes, o qual um 16 bytes
globally unique identifier (GUID). No so gerados
dois valores iguais, nunca, para um campo deste
tipo.
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 caractere, no Unicode, Tamanho dos
variando n de 1 at 8000 caracteres no mximo. dados digitados
Continuao
Dois novos tipos de dados foram disponibilizados com o SQL Server 2005: varbinary(max) e XML.
Vamos apresentar estes dois tipos, logo a seguir.
Um dado do tipo varbinary(n | max) pode conter dados binrios, de tamanho varivel. O valor de n
pode variar de 1 at 8000. Max indica o tamanho mximo de armazenamento, o qual de 2^31 1
bytes. O espao de armazenamento igual ao tamanho do dado + 2 bytes. Quando o valor de n no for
especificado, ser assumido como n=1. O uso de varbinary(n | Max) indicado para colunas, cujo
tamanho dos dados varia muito de registro para registro. Quando o tamanho for mais ou menos fixo,
mais indicado o uso do tipo binary. Tambm recomendado o uso de varbinary(Max), quando o
tamanho dos dados exceder 8000 bytes.
Grande parte das melhorias do SQL Server 2005 so na rea do tratamento e trabalho de dados no formato
XML. Uma das novidades justamente a disponibilidade de um novo tipo possvel para uma coluna,
justamente o tipo XML. Este tipo de dado permite que documentos XML ou partes de documentos sejam
gravados em colunas de uma tabela e que o formato XML seja mantido (o que evidentemente o mais
importante). possvel a criao de colunas e tambm de variveis de programao do tipo XML, as quais
podero conter dados no padro XML. Este um grande avano e uma novidade muito bem vinda, para
todos que precisam trabalhar com o padro XML, no SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1620000Curso Completo
Para detalhes sobre os tipos de dados disponveis no SQL Server 2005, voc pode consultar o tpico
Transact-SQL Reference, no Books OnLine.
ALGUMAS DICAS PARA DEFINIR OS TIPOS DE DADOS PARA UMA 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 para o respectivo campo. 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, usando programao (que seja programao T-SQL ou usando as linguagens do
Framework .NET, tais como VB.NET e C#, uma vez que o SQL Server 2005 completamente integrado
com o Framework .NET). Porm este procedimento pode ocasionar processamento adicional, o que
prejudica o desempenho das aplicaes que esto acessando o Banco de Dados.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000163
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. Multiplique isso por diversas tabelas e diversos bancos de dados, e poderemos chegar a
desperdcios gigantescos em um nico servidor SQL Server 2005.
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, e estes somente
devem ser utilizados em situaes onde 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 muito desperdcio de espao em disco.
Agora vamos aprender a criar tabelas no SQL Server 2005.
FUNDAMENTOS EM: CRIAO DE TABELAS COM
O SQL SERVER MANAGEMENT STUDIO
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Conhecer os tipos bsicos de dados do SQL Server 2005.
Saber utilizar o SQL Server Management Studio.
METODOLOGIA
Utilizao do SQL Server Management Studio 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 SQL Server Management Studio. Mais uma vez a
melhor maneira de aprendermos atravs de um exemplo prtico. Vamos criar a tabela Clientes, no
banco de dados Exemplo1 (banco de dados este que foi criado no Captulo 3, na instncia
SERVIDOR\SQL2005) com os campos indicados na Tabela 4.2.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1640000Curso Completo
Vamos criar esta tabela no Banco de Dados Exemplo1, lembrando que este banco de dados foi criado
no Captulo 3, na instncia SERVIDOR\SQL2005. 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 vamos trabalhar com mais propriedades
de cada campo da tabela.
Exemplo prtico: Criando a tabela Clientes, no banco de dados Exemplo1, da instncia
SERVIDOR\SQL2005, usando o SQL Server Management Studio.
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas
-> Microsoft SQL Server 2005 -> SQL Server Management Studio).
2. Na janela Object Explorer, clique no sinal de mais ao lado da instncia SERVIDOR\SQL2005
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\SQL2005.
4. D um clique no sinal de +, ao lado da opo Databases, para expandi-la. Ser exibida uma lista
dos bancos de dados disponveis, dentre os quais devem estar o banco de dados Exemplo1,
criado no Captulo 3.
5. D um clique no sinal de + ao lado de Exemplo1, para mostrar as opes disponveis. Localize
a opo Tables. D um clique com o boto direito do mouse na opo Tables. No menu de
opes que surge, d um clique na opo New Table. Mais ou menos no centro do SQL Server
Management Studio ser exibida uma janela para a criao de uma nova tabela, conforme
indicado na Figura 4.1.
Esta janela muito parecida com a janela para a criao de novas tabelas, em um banco de dados do
Microsoft Access. Na parte de cima, em cada linha, criamos um novo campo. Aps digitar o nome do
campo, na coluna Column Name, na parte de baixo da janela, sero habilitadas as diversas
propriedades do campo. O conjunto de propriedades diferente para cada tipo de campo. Por exemplo,
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
Tabela 4.2 A tabela Clientes.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000165
campos do tipo char tero um conjunto diferente de propriedades do que campos do tipo datetime. Na
parte de cima da janela para a criao de tabelas, temos trs colunas, as quais esto descritas 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, este tambm ir aparecer nesta lista. Veremos como criar tipos personalizados
ainda neste captulo.
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 e em programao, ir retornar um erro. J valores em branco no retornam
erros ao serem utilizados como parmetros de funo ou em variveis de programao. Por
exemplo, se o 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.
Figura 4.1 A janela para criao de uma nova tabela.
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1660000Curso Completo
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
na verdade estamos querendo alterar as propriedades de um outro campo. No prximo exerccio
aprenderemos sobre estas diversas propriedades.
No lado direito da janela de criao de campos, exibida a janela Properties, nas quais so exibidas as
propriedades gerais da tabela que est sendo criada, conforme indicado na Figura 4.2:
Figura 4.2 A janela de propriedades da tabela.
Por exemplo, uma das propriedades a propriedade (Name), a qual define o nome da tabela. O SQL
Server 2005 atribui nomes, automaticamente, nos formatos Table_1, Table_2 e assim por diante. Vamos
alterar a propriedade Name e vamos coloc-la como Clientes. Com isso estou definindo o nome da
tabela. Aprenderemos sobre as demais propriedades, no decorrer deste livro.
6. Vamos comear criando o campo CdigoCliente. Para isso preencha a primeira linha com as
seguintes informaes:
Column Name -> CdigoCliente
Data Type -> int
Allow Null -> No (caixinha desmarcada).
Sua janela deve estar conforme indicado na Figura 4.3.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000167
Figura 4.3 Definindo o campo CdigoCliente.
7. Defina os demais campos, conforme as seguintes orientaes:
Column Name -> NomeEmpresa
Data Type -> char
Size -> 50 (ao definir o tipo do campo, sero exibidas as propriedades do campo, na parte de
baixo da janela. Defina a propriedade Lenght com o tamanho desejado. Que neste caso 50).
Allow Null -> No (caixinha desmarcada)
Column Name -> Rua
Data Type -> char
Size -> 50 (Defina a propriedade Lenght com o valor 50)
Allow Null -> No (caixinha desmarcada)
Column Name -> Bairro
Data Type -> char
Size -> 20 (Defina a propriedade Lenght com o valor 20)
Allow Null -> No (caixinha desmarcada)
Column Name -> Cidade
Data Type -> char
Size -> 25 (Defina a propriedade Lenght com o valor 25)
Allow Null -> No (caixinha desmarcada)
Column Name -> CEP
Data Type -> int (vamos digitar o CEP sem o tracinho, por exemplo: 97070888. Por isso
vamos usar um campo do tipo int e no do tipo char)
Allow Null -> No (caixinha desmarcada)
Column Name -> DataCadastro
Data Type -> datetime
Allow Null -> No (caixinha desmarcada)
Aps a definio destes campos, sua janela deve estar conforme indicado na Figura 4.4.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1680000Curso Completo
Figura 4.4 Definio dos campos da tabela Clientes.
Agora hora de salvarmos a tabela no Banco de Dados Exemplo1.
8. D um clique no boto Save (boto da barra de ferramentas, com o desenho de um disquete)
ou pressione Ctrl+S.
9. Caso voc ainda no tenha definido o nome da tabela, atravs da definio da propriedade Name,
surgir uma janela pedindo o nome da tabela. Digite Clientes e d um clique no boto OK.
10. Voc estar de volta janela para definio dos campos. Feche-a.
11. Voc estar de volta ao SQL Server Management Studio. D um clique no boto com o sinal de
mais ao lado do Banco de Dados Exemplo1 para expandi-lo.
12. D um clique no sinal de + ao lado da opo Tables, para expandi-la. A tabela Clientes j deve
estar aparecendo na listagem de tabelas do Banco de dados Exemplo1, conforme indicado na
Figura 4.5. Se a tabela Clientes ainda no estiver sendo exibida, clique na opo Tables, para
selecion-la e pressione a tecla F5, para atualizar a listagem.
13. Clique com o boto direito do mouse na tabela Clientes, aponte para Script Table as -> SELECT
T0 New Query Editor Window. Ser aberta a janela para execuo de comandos T-SQL, j
com o comando SELECT necessrio para exibir todos os dados da tabela Clientes. Para executar
o comando, pressione a tecla F5. Nenhum registro ser retornado. Obviamente que este o
resultado esperado, pois recentemente criamos a tabela Clientes, definindo quais campos faro
parte da tabela e as caractersticas bsicas de cada campo. Porm, nenhum registro ainda foi
inserido na tabela. Por isso que, como resultado da execuo do comando SELECT na tabela,
obtivemos um resultado em branco, simplesmente porque ainda no existem registros na tabela,
apenas a sua estrutura que foi definida.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000169
Figura 4.5 A tabela Clientes recm-criada.
14. Feche o SQL Server Management Studio.
Conforme descrito no exemplo anterior, as tabelas criadas pelo prprio SQL Server 2005 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 (alterar significa
modificar o cdigo do aplicativo, recompilar o cdigo e reinstalar, em todas as estaes de trabalho, a
nova verso do programa) 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1700000Curso Completo
Para alterar as propriedades de uma tabela basta localiz-la no SQL Server Management Studio, clicar
com o boto direito do mouse na tabela e, no menu de opes que surge, clicar na opo Modify Table.
Ser aberta a janela com a definio de todos os campos, janela esta que voc utilizou no exemplo
anterior, 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.
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
Tabela 4.3 A tabela Funcionrios.
Vamos criar esta tabela no Banco de Dados Exemplo1, criado no captulo anterior, na instncia
SERVIDOR\SQL2005. Neste exemplo, alm das propriedades bsicas de cada campo, aprenderemos a
definir uma srie de outras propriedades.
Exemplo prtico: Criando a tabela Funcionrios, no banco de dados Exemplo1, usando o SQL Server
Management Studio.
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas
-> Microsoft SQL Server 2005 -> SQL Server Management Studio).
2. Na janela Object Explorer, clique no sinal de mais ao lado da instncia SERVIDOR\SQL2005
para expandi-la.
3. D um clique no sinal de +, ao lado da opo Databases, para expandi-la. Ser exibida uma lista
dos bancos de dados disponveis, dentre os quais deve estar o banco de dados Exemplo1,
criado no Captulo 3.
4. D um clique no sinal de + ao lado de Exemplo1, para mostrar as opes disponveis. Localize
a opo Tables. D um clique com o boto direito do mouse na opo Tables. No menu de
opes que surge, d um clique na opo New Table. Mais ou menos no centro do SQL Server
Management Studio ser exibida uma janela para a criao de uma nova tabela, conforme j
indicado anteriormente na Figura 4.1.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000171
5. Vamos comear criando o campo CdigoFuncionrio. Para isso preencha a primeira linha com
as seguintes informaes:
Column Name -> CdigoFuncionrio
Data Type -> int
Allow Null -> No (caixinha desmarcada).
Na parte de baixo da janela, conforme j descrito anteriormente, temos as diversas propriedades que
podem ser configuradas, para o campo que est sendo criado. Por padro, estas propriedades so exibidas
por categoria (General, Table designer e assim por diante). Voc pode exibir as propriedades em ordem
alfabtica, clicando no segundo boto da barra de botes disponvel logo acima das propriedades (
um boto com A Z e uma seta). Clicando no primeiro boto, volta a exibio por categoria. Na parte de
baixo da janela temos as seguintes propriedades adicionais, que podem ser configuradas para os cam-
pos de uma tabela:
Description: Esta propriedade define o texto que ser exibido na coluna quando os dados da
tabela forem exibidos, usando um comando SELECT, conforme j descrito anteriormente. Se
esta propriedade no estiver definida, o texto a ser exibido o prprio nome do campo. Para o
campo CdigoFuncionrio digite o cdigo do funcionrio para esta propriedade.
Default Value or Binding: Nesta propriedade aparece uma lista com todas as global con-
straints j definidas no Banco de Dados (se a lista no estiver disponvel, porque ainda
no foi criada nenhuma global constraint). 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, pois cada funcionrio possui um cdigo diferente.
Neste caso deixe esta propriedade em branco. Aprenderemos a criar Constraints nos captulos
sobre desenvolvimento.
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. 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. 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. 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1720000Curso Completo
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), e existe ndice e ele aceita valores
repetidos, e Yes (no duplicates) existe ndice e ele no aceita valores duplicados, o qual utilizado
para campos do tipo Chave Primria. Para maiores informaes sobre campos que so chave
primria, consulte o Captulo 1.
No nosso exemplo alteramos apenas a propriedade Description, conforme indicado na Figura 4.6.
Figura 4.6 Propriedades do campo CdigoFuncionrio.
6. 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)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000173
Propriedades:
Description: Nome do Funcionrio.
Default Value: Em branco.
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).
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).
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1740000Curso Completo
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.
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 da cidade de So Paulo). Observe que, aps definirmos o valor padro, o
SQL Server coloca o valor definido entre apstrofes: So Paulo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000175
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.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1760000Curso Completo
7. D um clique no boto Save (boto com o desenho de um disquete) ou pressionne Ctrl+S.
Surge uma janela pedindo o nome da tabela. Digite Funcionrios e d um clique no boto OK.
8. Voc estar de volta janela para definio dos campos. Feche-a.
9. Voc estar de volta ao SQL Server Management Studio. D um clique no boto com o sinal de
mais ao lado do Banco de Dados Exemplo1 para expandi-lo.
10. D um clique no sinal de + ao lado da opo Tables. A tabela Funcionrios 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.
Figura 4.7 A tabela Funcionrios recm-criada.
11. Com isso criamos a tabela Funcionrios no banco de dados Exemplo1. Clique com o boto
direito do mouse na tabela Funcionrios, aponte para Script Table as -> SELECT To New
Query Editor Window. Ser aberta a janela para execuo de comandos T-SQL, j com o comando
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000177
SELECT necessrio, para exibir todos os dados da tabela Funcionrios. Para executar o comando,
pressione a tecla F5. Nenhum registro ser retornado. Obviamente que este o resultado
esperado, pois recentemente criamos a tabela Funcionrios, definindo quais campos faro parte
da estrutura da tabela e as caractersticas bsicas de cada campo. Porm, nenhum registro
ainda foi inserido na tabela. Por isso que como resultado da execuo do comando SELECT na
tabela, obtivemos um resultado em branco, simplesmente porque ainda no existem registros
na tabela, apenas a sua estrutura que foi definida.
12. Feche o SQL Server Management Studio.
Agora j estamos craques na criao de tabelas com o SQL Server Management Studio. O prximo
passo ser aprendermos a criar tabelas utilizando o comando CREATE TABLE, o qual ser executado na
janela para execuo de comandos T-SQL, que j conhecemos bem.
Mas antes disso vamos a um exerccio para que o leitor possa fixar os conceitos apresentados.
Exerccio: Crie a tabela Fornecedores, utilizando o SQL Server Management Studio, com os campos
indicados na Tabela 4.4.
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.
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.
Tabela 4.4 A tabela Fornecedores.
FUNDAMENTOS EM: CRIAO DE
TABELAS USANDO COMANDOS T-SQL
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Saber utilizar a janela para execuo de comandos T-SQL.
Noes sobre os tipos bsicos de dados do SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1780000Curso Completo
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, na janela de execuo de comandos
T-SQL, dentro do SQL Server Management Studio. 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 ]
| [ { 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 )
}
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000179
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
<LCampo5 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 Exemplo1, da instncia
SERVIDOR\SQL2005, com os campos indicados na Tabela 4.5.
Campo Tipo de dado/Tamanho mximo
CdigoProduto Integer
NomeProduto Texto de, no mximo, 50 caracteres.
CdigoFornecedor Integer
CdigoCategoria Integer
PreoUnitrio Money
UnidadesEstoque Integer
EstoqueMnimo Integer
Descontinuado bit (0=sim, 1=no)
Tabela 4.5 A tabela Produtos.
Agora vamos criar esta tabela no Banco de Dados Exemplo1 da instncia SERVIDOR\SQL2005. Vamos
utilizar, para isso, a janela de execuo de comandos do SQL Server Management Studio.
Exemplo prtico: Utilizando a janela de execuo de comandos para criar a tabela Produtos, conforme
descrito na Tabela 4.5.
1. Faa o logon com uma conta com permisso de administrador.
2. Abra o SQL Server Management Studio.
3. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para
exibir as opes disponveis (utilize uma instncia do SQL Server 2005, disponvel no
computador que voc est utilizando).
4. Clique no sinal de + ao lado da opo Databases, para exibir as opes disponveis. Localize o
banco de dados Exemplo1 e clique com o boto direito do mouse, no banco de dados Exemplo1.
No menu de opes que exibido, clique em New Query. Ser aberta a janela para execuo de
comandos T-SQL, j descrita anteriormente. Digite o seguinte comando:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1800000Curso Completo
N
O
T
A
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 clicado com o boto direito do mouse no banco de dados Exemplo1, pois, se voc tiver clicado em um outro banco de
dados, a tabela Produtos ser criada no banco de dados no qual voc clicou.
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:
The command(s) completed successfully.
Com isso, vemos que a tabela Produtos foi criada.
5. Mantenha a janela de execuo de comandos T-SQL aberta, pois vamos utiliz-la para mais
alguns exemplos neste captulo.
Agora vamos utilizar o SQL Server Management Studio para verificar se a tabela Produtos foi realmente criada.
Exemplo:
Verificando se a tabela Produtos foi realmente criada:
1. Se o SQL Server Management Studio no estiver aberto, abra-o.
2. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005.
3. Clique no sinal de mais ao lado de Databases para expandi-la.
4. Clique no sinal de mais ao lado do Banco de Dados Exemplo1 para exibir as suas opes.
5. Nas opes que surgem clique no sinal de + ao lado da opo Tables para exibir as tabelas do
Banco de Dados Exemplo1. Observe que a tabela Produtos j deve aparecer na listagem de
tabelas. 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.
6. Feche o SQL Server Management Studio.
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 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000181
N
O
T
A
O nmero mximo de tabelas que pode existir em um banco de dados limitado pelo nmero
mximo de objetos que pode existir em um banco de dados do SQL Server 2005. Este nmero
de: 2.147.483.647.
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 poder 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.
Conforme visto na seo anterior, podemos definir uma srie de propriedades para cada campo de
uma tabela, utilizando o SQL Server Management Studio. A pergunta que fica : Tambm podemos
definir estas opes utilizando o comando CREATE TABLE?. E a resposta sim. Mais uma vez vamos
aprender atravs da utilizao de um exemplo prtico.
Exemplo prtico: 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
nos campos da tabela.
Para permitir NULL em algum campo, bastaria trocar NOT NULL por NULL.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1820000Curso Completo
N
O
T
A
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 2005 podem ter um tamanho mximo de 128 caracteres. Podemos
incluir letras, dgitos e os smbolos: #, $, @ e _ nos nomes de objetos do SQL Server 2005.
Exerccio: Para fixar a sintaxe do comando CREATE TABLE, crie a tabela Produtos Especiais, com os
campos conforme descrito na Tabela 4.6.
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
UnidadesEstoque Integer No
EstoqueMnimo Integer Sim
EstoqueMximo Integer Sim
Descontinuado bit (0=sim, 1=no) No
Tabela 4.6 A tabela Produtos Especiais.
FUNDAMENTOS EM: ALTERAR A ESTRUTURA DE UMA
TABELA COM O SQL SERVER MANAGEMENT STUDIO
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Saber utilizar o SQL Server Management Studio.
METODOLOGIA
Utilizao do SQL Server Management Studio 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 decorrer deste livro), no haver necessidade de alteraes na estrutura das tabelas.
Mas caso seja necessria tal alterao, podemos faz-la utilizando o SQL Server Management Studio,
conforme aprenderemos neste item, ou comandos T-SQL, conforme aprenderemos no item seguinte.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000183
N
O
T
A
Para alterar uma tabela, basta localiz-la no SQL Server Management Studio, clicar com o boto direito
do mouse no nome da tabela e, no menu que surge, clicar na opo Modify 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 esquerda da linha, conforme
exemplo indicado na Figura 4.8.
Figura 4.8 Selecionando o campo a ser excludo.
Alterar as propriedades de um campo, simplesmente editando as informaes para este campo.
Incluir novos campos.
Feitas as alteraes s clicar no boto Save ou pressionar Ctrl+S, 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.
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 a janela para execuo de comandos T-SQL.
METODOLOGIA
Apresentao dos comandos T-SQL para alterao de tabelas.
TCNICA
Alterar tabelas, utilizando os comandos apresentados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1840000Curso Completo
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 j existente, 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
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 2005, 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 SQL Server Management Studio e verifique se a coluna Campo1 realmente foi
adicionada tabela Clientes, conforme indicado na Figura 4.9.
Figura 4.9 A coluna Campo1 recm-adicionada.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000185
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.
Exerccio: Utilize o SQL Server Management Studio 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:
Command(s) completed successfully.
FUNDAMENTOS EM: TIPOS DE DADOS DEFINIDOS PELO USURIO
PR-REQUISITOS
Noes dos conceitos bsicos sobre Bancos de Dados Relacionais.
Saber Utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL.
Conhecer os tipos bsicos de dados do SQL Server 2005.
METODOLOGIA
Utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL, para criar tipos de dados personalizados.
No incio do captulo vimos os diversos tipos de dados disponibilizados pelo SQL Server 2005. So os
chamados Tipos de dados do sistema (System data types). Com o SQL Server 2005, o usurio pode
criar seus prprios tipos de dados. Esta no nenhuma novidade do SQL Server 2005, j que linguagens
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1860000Curso Completo
N
O
T
A
N
O
T
A
bastante antigas (e ainda muito utilizadas), tais como o C e C++, permitem a criao de tipos
personalizados pelo usurio.
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 concluso de 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 o campo NomeDoFuncionrio de char(50) para char(40).
Ao criar tipos definidos pelo usurio (User-defined data types), devemos utilizar um padro de nomes
consistente, de tal forma que o nome seja um indicativo das caractersticas do tipo de dados.
Ao criarmos um tipo definido pelo usurio, este 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,
depois que o tipo foi criado no banco de dados Model.
Agora vamos aprender a criar User-defined data types. Inicialmente vamos cri-los utilizando o SQL Server Management Studio e, na
seqncia, a janela de execuo de comandos T-SQL.
CRIANDO UM TIPO DE DADOS DEFINIDO PELO USURIO
COM O SQL SERVER MANAGEMENT STUDIO
A ttulo de exemplo, vamos criar um tipo chamado nome_prprio no Banco de Dados Exemplo1, da
instncia SERVIDOR\SQL2005. 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, ou seja,
que um tipo de dados definido pelo usurio. Tambm importante lembrar que este tipo de dados s estar disponvel para o banco de
dados Exemplo1, onde o tipo foi criado.
Exemplo prtico: Criando o tipo usr_nome_prprio com o SQL Server Management Studio.
1. Faa o logon com uma conta com permisso de administrador.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000187
2. Abra o SQL Server Management Studio.
3. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para
exibir as opes disponveis (utilize uma instncia do SQL Server 2005, disponvel no
computador que voc est utilizando).
4. Clique no sinal de + ao lado da opo Databases, para exibir os bancos de dados disponveis na
instncia SERVIDOR\SQL2005.
5. Clique no sinal de + ao lado do banco de dados Exemplo1, para exibir as categorias de objetos
deste banco de dados.
6. Clique no sinal de + ao lado da opo Programmability, para exibir as opes de programao
disponveis.
7. Clique no sinal de + ao lado da opo Types, abaixo de Programmability, para exibir as opes
disponveis. Observe que existe uma opo User-defined Data Types.
8. 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.10:
Figura 4.10 No existe ainda nenhum tipo definido pelo usurio.
9. 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.
10. 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.11. D um clique em OK para criar este novo tipo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1880000Curso Completo
N
O
T
A
Figura 4.11 Criando o tipo usr_nome_prprio.
As opes Rule e Default sero vistas no Captulo 9.
11. Voc estar de volta ao SQL Server Management Studio e o tipo usr_nome_prprio j ter sido criado.
12. Vamos criar mais um tipo chamado usr_money_real, com as seguintes caractersticas:
Nome do tipo: usr_money_real
Tipo: money
Aceita valores nulos.
13. 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.
14. Para criar o tipo usr_money_real, defina as caractersticas do tipo conforme indicado na Figura
4.12. D um clique em OK para criar este tipo.
15. Voc estar de volta ao SQL Server Management Studio e o tipo usr_money_real j ter sido
criado.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000189
Figura 4.12 Criando o tipo usr_money_real.
Agora que criamos tipos definidos pelo usurio, podemos utiliz-los na definio de colunas em nossas
tabelas, dentro do banco de dados Exemplo1. Vou repetir, mais uma vez, para voc no esquecer: os
tipos de dados foram criados dentro do banco de dados Exemplo1 e s podero ser utilizados dentro
do banco de dados onde foram criados. 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
)
Execute este comando na janela de execuo de comandos T-SQL, estando conectado instncia
SERVIDOR\SQL2005 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:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1900000Curso Completo
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 na janela de execuo de comandos T-SQL, estando conectado instncia
SERVIDOR\SQL2005 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 SQL Server Management Studio, 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, no painel da
esquerda, d um clique na opo Dependencies. Ser exibida uma janela com a lista de tabelas onde o
tipo usr_nome_prprio utilizado, conforme indicado pela Figura 4.13.
Figura 4.13 Tabelas que utilizam o tipo usr_nome_prprio.
D um clique em OK para fechar a janela da Figura 4.13.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000191
N
O
T
A
CRIANDO UM TIPO DE DADO DEFINIDO PELO USURIO,
USANDO A JANELA DE COMANDOS T-SQL
A ttulo de exemplo, vamos criar um tipo chamado usr_nome_rua, no Banco de Dados Exemplo1, da
instncia SERVIDOR\SQL2005. 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 prtico: Criando o tipo usr_nome_rua, usando comandos T-SQL:
1. Se o SQL Server Management Studio no estiver aberto, abra-o.
2. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005.
3. Clique no sinal de mais ao lado de Databases para expandi-la.
4. Clique com o boto direito do mouse no banco de dados Exemplo1 e, no menu de opes que
exibido, clique na opo New Query. Ser aberta a janela para execuo de comandos T-SQL.
5. 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 2005: sp_addtype. Existe uma
infinidade de Stored Procedures que fazem parte do SQL Server 2005, os quais fazem parte do Banco de
Dados master, conforme indicado na Figura 4.14. Estes stored procedures iniciam com sp e executam
uma srie de funes. Utilizaremos vrios destes stored procedures nos exemplos dos demais captulos
deste livro.
A sintaxe simplificada para o stored procedure sp_addtype a seguinte:
exec sp_addtype nome_tipo, tipo_bsico, NULL ou NOT NULL
6. Aps executar o comando indicado no passo anterior, o tipo usr_nome_rua ter sido criado.
Podemos conferir se o tipo foi realmente criado, utilizando o SQL Server Management Studio.
A seguir apresentamos algumas dicas a serem consideradas para a criao de tipos definidos pelo usurio
User-defined Data Types:
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1920000Curso Completo
Figura 4.14 Stored procedures que fazem parte do SQL Server 2005.
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 estes tipos 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 estes no estejam sendo utilizados em
alguma tabela.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000193
Vamos tentar excluir o tipo usr_nome_prprio, o qual est sendo utilizado pelas tabelas Produtos2 e
Produtos3. Tentaremos exclu-lo com o SQL Server Management Studio 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 SQL Server Management Studio, basta localizar o
tipo a ser excludo, clicar com o boto direito sobre o tipo a ser excludo e, no menu que surge, clicar
na opo Delete. Surge uma janela exibindo o tipo a ser excludo, conforme indicado na Figura 4.15.
Figura 4.15 Excluindo o tipo usr_nome_prprio.
Clique em OK para confirmar a excluso do tipo usr_nome_prprio. No nosso exemplo surge uma
mensagem de advertncia. Esta mensagem informa que o tipo usr_nome_prprio no pode ser excludo
pois ele est sendo utilizado em uma ou mais tabelas.
Clique em OK e voc estar de volta ao SQL Server Management Studio. Feche-o.
Agora vamos excluir o tipo usr_nome_rua utilizando o stored procedure sp_droptype.
Exemplo prtico: Excluindo o tipo usr_nome_rua, usando comandos T-SQL:
1. Se o SQL Server Management Studio no estiver aberto, abra-o.
2. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005.
3. Clique no sinal de mais ao lado de Databases para expandi-la.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1940000Curso Completo
N
O
T
A
4. Clique com o boto direito do mouse no banco de dados Exemplo1 e, no menu de opes que
exibido, clique na opo New Query. Ser aberta a janela para execuo de comandos T-SQL.
5. 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
6. 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:
Command(s) completed successfully.
Podemos conferir se o tipo usr_nome_rua foi realmente excludo, utilizando o SQL Server Manage-
ment Studio.
Se voc tentar excluir um tipo que est sendo utilizado por alguma tabela, o Query Analyzer emite a seguinte mensagem de erro:
Msg 3732, Level 16, State 1, Line 1
Cannot drop type dbo.usr_nome_prprio because it is currently in use.
FUNDAMENTOS EM: EXCLUSO DE TABELAS
PR-REQUISITOS
Saber utilizar a janela para execuo de comandos T-SQL.
METODOLOGIA
Utilizao do SQL Server Management Studio e da janela de execuo de comandos T-SQL, para a excluso de tabelas.
No uma situao comum, mas pode existir a necessidade de excluirmos uma tabela de um
Banco de Dados. importante salientar que, ao excluirmos uma tabela, todos os seus dados sero
tambm excludos.
PARA EXCLUIR UMA TABELA COM O SQL SERVER MANAGEMENT STUDIO
Abra o SQL Server Management Studio 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 Delete. Surge a janela indicada
na Figura 4.16.
D um clique no boto OK e pronto, a tabela foi excluda.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000195
Figura 4.16 Excluindo a tabela Produtos2.
EXCLUINDO UMA TABELA COM O QUERY ANALYZER
Para excluir uma tabela podemos utilizar o seguinte comando T-SQL:
DROP TABLE nome_da_tabela
Exemplo:
Para excluir a tabela Produtos3 do Banco de Dados Exemplo1, poderamos utilizar o seguinte comando:
DROP TABLE Produtos3
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 SQL Server Management Studio e a janela de execuo de comandos T-SQL.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1960000Curso Completo
METODOLOGIA
Utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL para definir um campo como chave primria de uma tabela.
Conforme vimos na teoria sobre o modelo relacional de dados, 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 ou CPF na tabela Clientes.
CdigoFuncionrio ou Matrcula na tabela Funcionrios.
CPF na tabela Contribuintes Pessoa Fsica.
CNPJ (antigo CGC) na tabela Contribuintes Pessoa Jurdica.
CdigoDoProduto na tabela Produtos.
Podemos definir um determinado campo como sendo chave primria, tanto usando a interface grfica
do SQL Server Management Studio quanto usando comandos T-SQL. Vamos mais uma vez utilizar
exemplos para aprender a definir um campo como sendo chave primria.
DEFININDO UMA CHAVE PRIMRIA UTILIZANDO
O SQL SERVER MANAGEMENT STUDIO
Exemplo: Definir o campo CdigoFuncionrio da tabela Funcionrios, do banco de dados
Exemplo1, da instncia SERVIDOR\SQL2005, como sendo uma chave primria. Para isso siga os
passos indicados a seguir:
1. Faa o logon com uma conta com permisso de administrador.
2. Abra o SQL Server Management Studio.
3. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para
exibir as opes disponveis (utilize uma instncia do SQL Server 2005, disponvel no
computador que voc est utilizando).
4. Nas opes que surgem abaixo desta instncia, clique no sinal de + ao lado da opo Databases
para expandi-la. Abaixo de Databases exibida uma lista com os Bancos de Dados disponveis
na instncia SERVIDOR\SQL2005.
5. D um clique no sinal de + ao lado do Banco de Dados Exemplo1 para exibir seus objetos.
6. D um clique no sinal de + ao lado da opo Tables, para exibir 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 Modify 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.17.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000197
N
O
T
A
Figura 4.17 Selecionando o campo CdigoFuncionrio.
9. Clique com o boto direito do mouse em qualquer parte da linha selecionada. No menu de
opes que exibido clique em Set primary key (voc tambm pode clicar 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 ou pressione Ctrl+S 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, informando que o campo
no pode ser definido como chave primria, pois existem valores duplicados no campo.
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.
Observe que a parte mais significativa da mensagem a seguinte:
because a duplicate key was found for index ID 1
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
1980000Curso Completo
N
O
T
A
N
O
T
A
Esta parte est informando que foi encontrado um valor duplicado para o campo CdigoFuncionrio
e, portanto, este campo 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 SQL Server Management Studio. 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. Voc tambm tem a opo de clicar com o boto direito do mouse no campo
selecionado e, no menu que exibido, clicar em em Remove Primary Key.
Conforme veremos a seguir, no posso fazer com que um campo deixe de ser chave primria se o campo fizer parte de algum relacionamento.
DEFININDO UMA CHAVE PRIMRIA UTILIZANDO COMANDOS T-SQL
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, do banco de dados Exemplo1, da instncia
SERVIDOR\SQL2005 como sendo uma chave primria.
Para isso faa o seguinte:
1. Se o SQL Server Management Studio no estiver aberto, abra-o.
2. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005.
3. Clique no sinal de + ao lado de Databases para expandi-la.
4. Clique com o boto direito do mouse no banco de dados Exemplo1 e, no menu de opes que
exibido, clique na opo New Query. Ser aberta a janela para execuo de comandos T-SQL.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000199
5. 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 campo foi realmente definido como chave primria, utilizando o SQL Server Management Studio. Acesse a tabela
Produtos, clique com o boto direito do mouse na tabela Produtos e, no menu de opes que exibido, clique em Modify Table. Verifique se
h o desenho de uma pequena chave amarela, ao lado do campo CdigoProduto. Este desenho comprova que o campo CdigoProduto foi
definido como chave primria da tabela Produtos.
6. Feche a janela de execuo de comandos T-SQL. Se o SQL Server 2005 perguntar se voc deseja
salvar a Query, clique em No.
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:
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 a janela de execuo de comandos T-SQL e o SQL Server Management Studio.
METODOLOGIA
Apresentao dos conceitos e dos comandos T-SQL para criao de ndices.
TCNICA
Criao de ndices utilizando os comandos apresentados.
N
O
T
A
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
2000000Curso Completo
UMA VISO GERAL DOS NDICES NO SQL SERVER 2005
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 (Input/Output) no disco) necessrias para localizar os
dados solicitados pela consulta. Ao utilizar ndices, ajudamos o SQL Server 2005 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 (O sumrio do incio do livro ou mais
precisamente o ndice remissivo, que vem no final do livro. Estas duas so tambm estruturas auxiliares,
cujo objetivo facilitar a localizao de um contedo, dentro do livro). Voc procura o tpico desejado
no ndice e abre o livro diretamente na pgina relacionada, ao invs de folhear 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 foi uma das novidades do SQL Server 2000, a qual, evidentemente, tambm faz parte
do SQL Server 2005). 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 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.
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 (no h como armazenar o mesmo conjunto de dados em duas ou mais ordens diferentes. Por
isso que s podemos ter um clustered index, por tabela). Observe que, embora o ndice melhore o
desempenho das consultas, existe um pequeno overhead para operaes de atualizao, insero e
excluso de registros, pois estas operaes podem fazer com que a ordem dos registros seja alterada, e
que estes tenham que ser reposicionados para manter a ordem definida pelo ndice.
Os ndices no SQL Server 2005 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 2005
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000201
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.
Figura 4.18 A estrutura em forma de B-tree de um clustered index.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
2020000Curso Completo
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.
Figura 4.19 Acessando dados com um clustered index.
Vamos supor que voc queira localizar o registro para o cliente Raul. O SQL Server 2005 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 (esta deciso sobre a
utilizao ou no do ndice e se esse uso ir melhorar o desempenho da consulta tomada
internamente, pelo mecanismo de banco de dados do SQL Server 2005). Este plano procura
determinar qual a maneira mais rpida de executar a consulta. Neste caso, o SQL Server 2005
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.
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 (o que teria que ser feito, caso
no existisse o ndice).
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000203
Este exemplo ilustra o quanto os ndices podem melhorar o desempenho das consultas. Como regra
geral devemos criar clustered indexes em colunas que so freqentemente utilizadas como critrio
para pesquisas. Por exemplo a coluna NomeCliente de uma tabela de clientes ou campo
NmeroDoPedido da tabela Pedidos e assim por diante.
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 isso 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 SE-
LECT, 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, os quais contm informaes do ndice e no os dados, pois os dados
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 dados
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 Funcionrios. Este ponteiro chamado de Localizador de registro Row Locator.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
2040000Curso Completo
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000205
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.
Mais algumas observaes sobre nonclustered indexes:
1. Nonclustered index o default para a criao de ndices no SQL Server 2005.
2. Podemos ter um mximo de 249 nonclustered indexes por tabela.
3. mais indicada 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.
4. No SQL Server 2005 temos uma importante novidade em relao aos nonclustered index. No
SQL Server 2005 possvel ampliar a funcionalidade de um nonclustered index, atravs da
incluso de colunas que no so chaves, como parte das pginas Leaf do ndice. Esta opo
pode melhorar consideravelmente o desempenho das consultas, principalmente em casos onde
todas as colunas do comando T-SQL fazem parte do nonclustered index, sejam estas colunas
do tipo Chave ou no. Isso ocorre porque, sendo todas as colunas de uma consulta parte do
ndice, bastar ao SQL Server 2005 pesquisar diretamente no ndice, o que muito mais rpido,
do que, aps localizar um registro no ndice, ainda ter que percorrer a pgina de dados para a
qual aponta o valor encontrado no ndice.
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
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 estes pertencem somente a trs estados: SP, RJ ou MG. Criar um ndice
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
2060000Curso Completo
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 2005, 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 (estes j eram os valores limites no SQL Server 2000 e no foram
alterados no SQL Server 2005). Esta limitao tem a ver com a questo de desempenho, pois de nada
adiantaria criar ndices muito grandes, pois, dependendo do tamanho dos ndices, estes 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.
Index Uniqueness: No SQL Server 2005 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 nico.
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 2005. Este o assunto do prximo item.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000207
CRIANDO NDICES NO SQL SERVER 2005
Podemos criar ndices utilizando diferentes ferramentas, como por exemplo:
SQL Server Management Studio
Janela para executar Comandos T-SQL
Iremos criar diferentes tipos de ndices utilizando estas ferramentas.
CRIANDO UM CLUSTERED INDEX SIMPLES
COM O SQL SERVER MANAGEMENT STUDIO
Neste exemplo, vamos criar um clustered index na coluna CdigoCliente da tabela Clientes do Banco
de Dados Exemplo1, da instncia SERVIDOR\SQL2005, criada anteriormente. Vamos fazer com que
este ndice no admita valores duplicados; desta maneira vamos criar um ndice nico, ou seja, uma
chave primria para a tabela Clientes. Vamos chamar este ndice de CodCliIndex.
Exemplo prtico: Para criar o clustered index CodCliIndex, na coluna CdigoCliente, da tabela Clientes,
do Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio (Iniciar -> Programas -> Microsoft SQL Server -> SQL
Server Management Studio).
2. Na Janela Object Browser, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005 para
expandi-la.
3. Nas opes que surgem abaixo desta instncia, clique no sinal de + ao lado da opo Databases
para expandi-la. Abaixo de Databases exibida uma lista com os Bancos de Dados disponveis
nesta instncia.
4. Clique no sinal de + ao lado do banco de dados Exemplo1.
5. Clique no sinal de + ao lado da opo Tables.
6. Nas tabelas que so exibidas, clique no sinal de + ao lado da tabela Clientes (na verdade
dbo.Clientes. Voc aprender o porqu do dbo, no Captulo 6, quando falarei sobre Segurana
no SQL Server 2005).
7. Nas opes que so exibidas, abaixo da tabela Clientes, clique na opo Indexes, para selecion-la.
8. Clique com o boto direito do mouse na opo Indexes e, no menu de opes que exibido,
clique em New Index. Ser aberta a janela New Index, com a categoria General selecionada
por padro, conforme indicado na Figura 4.21.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
2080000Curso Completo
N
O
T
A
Figura 4.21 Janela para a criao de um ndice.
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 2005.
9. No campo Index name digite: CodCliIndex.
10. Na lista Index Type selecione a opo Clustered.
11. Marque a opo Unidque.
12. Agora temos que informar qual o campo para o qual ser criado o ndice, que no nosso caso ser
o campo Cdigo Cliente. D um clique no boto Add. Ser aberta a janela Select Columns, com
a lista de campos da tabela Clientes. Marque o campo CdigoCliente e clique em OK.
13. Voc estar de volta janela New Index. Observe que o campo CdigoCliente, selecionado no
Passo 12, j aparece na lista Index Key Columns, conforme indicado na Figura 4.22.
No painel da esquerda, clique na opo Storage. Observe que 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 filegroups sejam criados. Para definir um filegroup diferente, basta marcar a opo
Filegroup e selecionar um nome na lista ao lado.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000209
Figura 4.22 Criando o ndice CodCliIndex.
14. D um clique no boto OK.
15. Pronto. O ndice CodCliIndex foi criado e j deve aparecer na opo Indexes, da tabela Clientes, do
banco de dados Exemplo1. Se o ndice CodCliIndex ainda no estiver sendo exibido, clique na
opo Indexes, abaixo da tabela Clientes e pressione a tecla F5 para atualizar a listagem de ndices.
CRIANDO NDICES USANDO COMANDOS T-SQL
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 2005, 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
}
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
2100000Curso Completo
Mais uma vez vamos simplificar a sintaxe para este comando. No formato simplificado teramos o
seguinte:
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
ON { table | view }
( column [ ASC | DESC ] [ ,...n ] )
No banco de dados NorthWind era um banco de dados fornecido como banco de dados de Exemplo,
com o SQL Server 2000. O Northwind no mais instalado com o SQL Server 2005. Mas possvel
importar o Northwind de uma instncia do SQL Server 2000, para uma com o SQL Server 2005. Foi
exatamente o que eu fiz, para ter o banco de dados Northwind disponvel no SQL Server 2005, banco
este que ser utilizado em vrios exemplos deste livro. Para todos os detalhes sobre como importar o
banco de dados Northwind, de uma instncia do SQL Server 2000 para uma instncia do SQL Server
2005, consulte o anexo, no final deste livro.
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:
Msg 1913, Level 16, State 1, Line 1
The operation failed because an index or statistics with name PK_Customers already exists
on table dbo.Customers.
Vamos a mais um exemplo. Agora vamos criar um ndice composto com as seguintes caractersticas:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000211
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.
2. Todas as colunas de um ndice composto devem pertencer mesma tabela. Como no SQL
Server 2005 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 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
Address (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 melhora o desempenho das consultas.
4. Desta maneira podemos concluir que a ordem das colunas importa no desempenho, e 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
2120000Curso Completo
N
O
T
A
UM FATOR IMPORTANTE: FILLFACTOR OPTION
Esta opo igualmente importante e pouco utilizada. Talvez seja pouco utilizada pelo no
conhecimento da aplicabilidade desta opo. 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, estes precisam
ser inseridos na ordem definida pelo campo que compe o 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 (clique na opo
Options, no painel da esquerda, da janela de criao do ndice, quando usando o SQL Server Manage-
ment Studio ou a clusula FILLFACTOR = %, quando usando comandos T-SQL). 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 instante. Nestas
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 percentual de
espao em branco, 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 de 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.
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 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 2005 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000213
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.23:
Figura 4.23 Valor default para o FILL FACTOR.
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
FUNDAMENTOS EM: COMANDOS ADICIONAIS
PARA TRABALHAR COM NDICES
PR-REQUISITOS
Noes bsicas sobre o conceito de ndices.
Saber utilizar a janela para execuo de comandos T-SQL.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
2140000Curso Completo
N
O
T
A
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.24.
Figura 4.24 Informaes retornadas por sp_helpindex.
Uma coluna indexada em ordem descendente ser listada com um sinal de menos aps o nome.
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.25.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000215
Figura 4.25 Informaes retornadas por sp_spaceused.
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
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 SQL Server Management
Studio ou atravs de comandos T-SQL. Com o SQL Server Management Studio, basta localizar o ndice
a ser excludo, clicar com o boto direito do mouse no ndice e, no menu de opes que exibido,
clicar em Delete. Ser exibida uma janela de confirmao. Clique em OK e pronto, o ndice ser excludo.
EXCLUINDO UM NDICE COM O QUERY ANALYZER
Para excluir um ndice utilizando comandos T-SQL, utilizamos 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
2160000Curso Completo
NOVIDADE DO SQL SERVER 2005 DESATIVAO DE NDICES
Uma das novidades do SQL Server 2005, em relao aos ndices, a possibilidade de desativar um
ndice. Ao desabilitar um nonclustered index, este no poder ser acessado pelos usurios, porm o
acesso aos dados da tabela continua liberado. Ao desabilitar um clustered index, os usurios no tero
acesso nem ao ndice e nem aos dados da respectiva tabela. As definies do ndice sero mantidas,
porm suas estatsticas sero perdidas. J, se o ndice que estiver sendo desabilitado for um ndice de
uma view, os dados do ndice sero perdidos. Ao desabilitar um clustered index, o acesso aos dados da
tabela no estar disponvel, porm os dados no sero excludos. Uma vez habilitado novamente o
clustered index, o acesso aos dados ser liberado.
Durante um upgrade de verses anteriores do SQL Server para o SQL Server 2005, automaticamente o
Setup desabilita os ndices existentes. Ou o prprio administrador poder desabilitar um ndice, usando
o comando ALTER INDEX. Voc tambm pode desabilitar um ndice, localizando o ndice com o SQL
Server Management Studio, clicando com o boto direito do mouse no ndice e, no menu que exibido,
clicar em Disable. Ser exibida uma janela para voc confirmar a desabilitao do ndice. Clique em
OK e pronto, o ndice foi desabilitado. Para habilitar novamente o ndice, usando o SQL Server Man-
agement Studio, localize o ndice a ser reabilitado, clique com o boto direito do mouse no ndice e, no
menu de opes que exibido, clique em Rebuild. Para habilitar novamente um ndice so utilizados
os comandos ALTER INDEX REBUILD ou CREATE INDEX WITH DROP_EXISTING.
Como exemplo, considere o comando: ALTER INDEX IX_Employee_ManagerID ON HumanResources.
Employee DISABLE. Este comando desabilita o ndice IX_Employee_ManagerID, na tabela
HumanResources.Employee.
CONCLUSO
Iniciamos o captulo com a apresentao dos tipos de dados existentes no SQL Server 2005. Depois
aprendemos a criar tipos de dados definidos pelo usurios User-defined data types.
Em seguida aprendemos a criar tabelas, tanto utilizando o SQL Server Management Studio quanto
utilizando comandos T-SQL.
Finalmente fizemos um estudo detalhado sobre a aplicao e criao de ndices.
Para finalizar o captulo gostaria de colocar algumas recomendaes quanto 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005
Curso Completo0000217
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, pois o efeito obtido pode ser uma reduo no desempenho das consultas ao invs de um
aumento de desempenho, devido 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.
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 tabela 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000219
Parte 2
KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
N
O
T
A
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 5
APRENDENDO SOBRE TRANSAES,
BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2220000Curso Completo
INTRODUO
Os dados armazenados nos bancos 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 eles, a fim de evitar perdas (garantindo a disponibilidade), adulterao e acesso indevido
aos dados (garantindo a integridade e autenticidade dos 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 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 (infelizmente, por incrvel que possa parecer, as atividades de
backup/restore, os planos de contingncia e de recuperao a desastres, continuam no tendo a devida
ateno, cuidado e planejamento necessrios).
Iniciaremos o captulo falando sobre transaes e o Log de Transaes (Transaction Log) em Bancos de
Dados do SQL Server 2005. 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 ou uma pasta no HD, 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 Ad-
ministrator) 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/restore, 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 SQL Server Management Studio e tambm comandos T-SQL, usando a janela de execuo de comandos
do SQL Server Management Studio, a qual voc j aprendeu a utilizar nos Captulos 3 e 4.
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? Ou se tiver que iniciar s 2:00 hs da
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000223
manh, para que possa ser concludo antes das 8:00 hs, que quando inicia o expediente? Iremos
contratar um DBA especialmente para esta tarefa? Conforme veremos, possvel Agendar Tarefas no
SQL Server 2005. E um timo exemplo de tarefa que se presta a ser agendada a execuo de rotinas de
backup, fora do horrio de expediente. 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 -podem ser agendados e os demais recursos para agendamento de tarefas.
KNOW-HOW EM: CONCEITO DE LOG DE
TRANSAES NO SQL SERVER 2005
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, defini uma transao da seguinte maneira:
Uma transao, de uma maneira bastante simples, um conjunto de operaes sobre os dados, que
deve acontecer como 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, contidas 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 2005, 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 do SQL Server 2005 deve possuir pelo
menos um arquivo de log, sendo que no possvel desativar o mecanismo de log no SQL Server 2005.
De agora em diante iremos utilizar o termo: Log de Transaes do Banco de Dados.
No Captulo 3 escrevi o seguinte pargrafo:
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 esta tenha sido executada com sucesso, ou o
registro da reverso (Roll Back) da transao, caso uma ou mais das operaes que compem a transao
venha a falhar. Este mecanismo fundamental para garantir a integridade dos dados, garantindo que
estes estejam em um estado sempre consistente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2240000Curso Completo
Agora vamos detalhar um pouco mais estes conceitos.
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 antes do 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 apresentado no 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 no teria
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000225
Estas quatro caractersticas so resumidas pela sigla ACID. Vamos ver o que significa cada uma destas
caractersticas.
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 2005, 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 foi
cadastrado 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 2005, 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 sero executadas
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 estes 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 2005 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, C#, etc. , que acessa dados em um servidor SQL Server 2005, devemos
definir o incio e o fim de uma transao no prprio aplicativo, e desta maneira controlamos quais
operaes devem acontecer no contexto de uma transao. Por exemplo, podemos criar uma pgina
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2260000Curso Completo
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 2005, ocorrero no contexto de uma transao: ou
todas so executadas com sucesso (Commit) ou todas falham (Roll Back).
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 2005:
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 2005 verifica se a pgina
j est no cache de dados. Se a pgina no estiver no cache, ela 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, no disco.
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
Transactions) no log do Banco de Dados, as quais ainda no foram executadas no arquivo de
dados, no disco. Caso acontea alguma falha que interrompa o servidor SQL Server 2005, 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
2005, 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/restore na prtica, precisamos aprender sobre os tipos de backup
disponveis e sobre as estratgias de backup/restore mais utilizadas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000227
INTRODUO
Sendo as informaes o bem mais valioso da sua empresa e estando estas informaes armazenadas
nos bancos de dados da empresa, 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 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 uma 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 aos dados do Servidor SQL
Server, ter uma boa estratgia de backup/restore se qualquer um puder entrar na sala onde esto as fitas
de backup 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 ou
mais 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 voc aprender 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2280000Curso Completo
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 este tipo de falha. Aquele disco de 300
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 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. No SQL Server 2005 temos novidades que facilitam a criao de
servidores e bancos de dados duplicados. So os novos recursos de: Databases Snapshots e Mirroring,
os quais sero vistos no Captulo 15, onde apresentarei uma srie de exemplos prticos, relacionados
com as novidades do SQL Server 2005.
Um fator que devemos levar em considerao, na hora de montarmos a nossa estratgia de backup/
restore 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 2005 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 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?
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000229
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.
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, na parte prtica deste captulo. 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:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2300000Curso Completo
N
O
T
A
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:00h
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.
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 tenha sido 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 banco foi corrompido, digamos um
minuto antes de o banco 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 desde o
ltimo backup do banco de dados. 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. A restaurao tem que ser feita em seqncia. Alm disso, ao restaurarmos os
logs de transao, estes devem ser restaurados na ordem cronolgica em que foram feitos. como se
estivssemos aplicando novamente todos os comandos que foram executados no Banco de Dados,
uma vez que o llog de transaes um registro dos comandos executados no Banco de Dados,
principalmente comandos que inserem, alteram ou excluem dados.
Temas uma novidade importante do SQL Server 2005, em relao ao backup/restaurao do banco de
dados. Com o SQL Server 2000, o banco de dados permanece indisponvel para uso, durante todo o
processo de restaurao, o que aumenta o tempo de indisponibildiade do banco de dados. J o SQL
Server 2005 suporta um recurso conhecido como Partil Restore. No SQL Server 2005, o banco de dados
passa a estar disponvel para uso, assim que for concluda a restaurao do filegroup Primary. O filegroup
Primary contm as informaes da estrutura do banco de dados, sem as quais no possvel colocar um
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000231
banco de dados on line. Uma vez restaurado o filegroup Primary, o banco de dados passa a estar online
e disponvel para o uso e o processo de restaurao continua. Se um usurio tentar acessar um conjunto
de dados que ainda no foi restaurado (por exemplo, dados que esto em filegroups que ainda no foram
restaurados), o usurio receber uma mensagem de que os dados esto off-line e que ele deve tentar
novamente mais tarde. Se o usurio tentar acessar dados de um filegroup que j foi restaurado, os dados
sero acessados, normalmente, e o usurio nem fica sabendo que o processo de restaurao dos demais
filegroups ainda est em andamento (a no ser por uma queda no desempenho, queda esta que ser
perfeitamente normal, para o caso de uma restaurao de backup estar em andamento).
Outra novidade do SQL Server 2005, na rea de backup/restore, conhecida como Concurrente Data-
base and Log backups, ou seja, a possibilidade de fazer o backup, ao mesmo tempo, tanto do banco de
dados quando do log de transaes do banco de dados. No SQL Server 2000 voc primeiro tinha que
aguardar o backup do banco de dados ser completado, para depois poder fazer o backup do log de
transaes. No SQL Server 2005 no existe mais esta limitao, sendo possvel fazer o backup do banco
de dados e do log de transaes, simultaneamente. Pode parecer que no seja de grande importncia
esta nova funcionalidade, mas . Em grandes bancos de dados, um dos principais problemas a chamada
janela de backup ou, em palavras mais simples, o tempo que o backup demora para ser completado.
Com a possibilidade de fazer o backup do banco de dados e do log de transaes, simultaneamente,
voc pode instalar duas ou mais unidades de fita e fazer o backup de ambos ao mesmo tempo, o que
pode diminuir, consideravelmetne, a janela de backup. Porm ainda existe uma limitao, que a de
somente poder fazer o backup de um dos arquivos de dados de um banco de dados (arquivos .mdf ou
.ndf), por vez. Quem sabe no SQL Server 2005 esta limitao seja superada?
TIPOS DE BACKUP
Com o SQL Server 2005 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 de backup 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 a cpia de todo o Banco de Dados, independente das alteraes que tenham sido
feitas desde o ltimo backup. Para grandes Bancos de Dados pode no ser vivel a utilizao de
uma estratgia baseada somente neste tipo de backup, devido ao tempo que o backup 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2320000Curso Completo
N
O
T
A
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. Entenda-se informaes como sendo pginas de dados, sendo que
em uma pgina de dados pode haver diversos registros.) copiado. Copiando menos
informaes, o backup finalizado 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. Usando uma estratgia que mescla back-
ups completos com backups diferenciais, 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 janela de 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 (podendo ser arquivos de um ou mais bancos de dados).
Apenas para recordar, os arquivos de log so armazenados separadamente, sendo que estes 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.
Exemplo 01: 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000233
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 na
situao em que estes estavam na quarta-feira, s 23 horas, que foi o horrio do ltimo backup
completo. Todas as alteraes realizadas, entre as 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.
Exemplo 02: 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.
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
Tabela 5.1 Backup completo do Banco de Dados.
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
Tabela 5.2 Backup completo do Banco de Dados mais backup do Log de transaes.
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 estes 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2340000Curso Completo
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 perda de alteraes bem menor do que no caso da utilizao de
somente backup completo. Em caso de perdas, estas so em menor nmero do que no caso do backup
somente do Banco de Dados.
Exemplo 03: 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.
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 18h
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
Tabela 5.3 Utilizando backups completos, diferenciais e do log de transaes.
Continua
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000235
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 estes
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, em relao a uma estratgia que usa somente backups completos e do log de transaes.
Com o SQL Server 2005 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 2005, podemos aprender a fazer o backup dos dados e a restaurar os dados, quando
necessrio. Mas antes um pouco sobre backup devices.
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
Continua
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2360000Curso Completo
N
O
T
A
Estou utilizando um computador que no possui drive de fita instalado, por isso, nos exemplos deste captulo, farei o backup em uma pasta
do disco rgido. Na prtica um servidor com o SQL Server 2005, usado em um ambiente de produo na empresa, certamente ter um drive
de fita para efetuar o backup, sendo esta a estratgia recomendada. No recomendada 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 situao em que as fitas de backup so
guardadas na mesma sala do servidor. 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 do Livro.
Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL.
METODOLOGIA
Apresentao terica sobre backup Devices.
TCNICA
Utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL 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. O objetivo bsico do
backup device facilitar a identificao dos dispositivos fsicos de backup.
Vamos aprender um pouco mais sobre backup devices.
O QUE SO BACKUP DEVICES?
Com o SQL Server 2005 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000237
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.
N
O
T
A
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, onde ser efetuado o backup, 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.
Backup devices de fita: So backup devices associados com um drive de fita. O drive de fita deve
estar instalado no servidor SQL Server 2005, 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 2005 solicita que uma nova fita seja inserida e continua o backup nesta nova fita.
DEVICES LGICOS E DEVICES FSICOS
Podemos fazer referncia a um backup device tanto utilizando o seu nome lgico quanto 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2380000Curso Completo
N
O
T
A
CRIANDO UM BACKUP DEVICE LGICO COM O SQL SERVER MANAGEMENT STUDIO
Agora vamos aprender a criar um backup device lgico, com as seguintes caractersticas:
Nome: backup_clientes
Localizao fsica: D:\backups\backup_clientes.bak.
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 prtico: Para criar o backup device backup_clientes, usando o SQL Server Management Stu-
dio, siga os passos indicados a seguir:
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas
-> Microsoft SQL Server -> SQL Server Management Studio).
Figura 5.3 Criando um novo bakcup device.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000239
2. Na janela Object Browser, d um clique no sinal de + ao lado da instncia na qual voc ir criar
o backup device.
3. 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 Devices, a qual
utilizaremos para criar o backup device backup_clientes.
4. D um clique com o boto direito do mouse na opo backup Devices. 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.
5. No campo Device Name digite: backup_clientes.
6. 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 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2400000Curso Completo
N
O
T
A
7. D um clique no boto OK e pronto; o backup device backup_clientes foi criado e est associado
com a pasta D:\backups\backup_clientes.bak.
Para conferir se o device foi criado com sucesso verifique se j aparece, abaixo da opo backup De-
vices, o device backup_clientes. Caso esta opo ainda no esteja sendo exibida, clique na opo Backup
Devices para selecion-la e pressione a tecla F5, para atualizar a listagem. O backup device backup_clientes
j deve estar sendo exibido, conforme indicado na Figura 5.5.
Figura 5.5 backup device backup_clientes criado com sucesso.
Exerccio 1: Utilizando o SQL Server Management Studio, crie os seguintes backup devices:
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.
CRIANDO UM BACKUP DEVICE LGICO USANDO COMANDOS T-SQL
Para criarmos um backup device utilizamos o comando sp_addumpdevice na janela de execuo de
comandos T-SQL do SQL Server Management Studio. Na verdade, este um stored procedure que faz
parte do Banco de Dados master. Conforme descrevemos anteriormente, existe uma srie de stored
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000241
N
O
T
A
N
O
T
A
procedures no banco master, as quais so utilizadas para vrias tarefas administrativas no SQL Server
2005, 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
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 a janela de execuo de comandos T-SQL para criar um backup device lgico,
com as seguintes caractersticas:
Nome: backup_Exemplo1
Localizao fsica: D:\backups\backup_exemplo1.bak.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2420000Curso Completo
N
O
T
A
N
O
T
A
Este dispositivo ser utilizado, mais adiante, para fazer um backup do Banco de Dados Exemplo 1 que criamos no Captulo 3.
Exemplo prtico: Para criar o backup device backup_exemplo1, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio.
2. Na janela Object Explorer, clique com o boto direito do mouse na instncia na qual voc
deseja criar o backup device. No menu de opes que exibido, clique em New Query.
3. Ser aberta a janela de execuo de comandos T-SQL, com a qual voc j trabalhou diversas vezes.
4. Para criar o backup device backup_exemplo1 proposto, digite o seguinte comando:
exec sp_addumpdevice disk, backup_exemplo1, D:\backups\exemplo1.bak
5. Pressione Ctrl+E (ou tecle F5) para executar o comando.
O comando executado com sucesso e a seguinte mensagem exibida:
Command(s) completed successfully.
Caso voc especifique o nome de um backup device que j existe, receber a seguinte mensagem
de erro:
Msg 15026, Level 16, State 1, Procedure sp_addumpdevice, Line 72
Logical device backup_exemplo1 already exists..
6. Mantenha a janela de execuo de comandos T-SQL aberta, pois iremos utiliz-la nos
prximos exemplos.
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, Windows 2000
Server e no Windows Server 2003.
EXCLUINDO BACKUP DEVICES
Quando no for mais necessrio, um backup device pode ser excludo. Podemos excluir um backup
device com o SQL Server Management Studio ou com o comando sp_dropdevice.
Para excluir um backup device utilizando o SQL Server Management Studio, basta navegar at o backup
device a ser excludo, clicar com o boto direito do mouse no backup device e, no menu de opes que
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000243
N
O
T
A
N
O
T
A
exibido, clicar em Delete. Ser exibida uma janela solicitando confirmao. Clique em OK e pronto,
o backup device ser excludo.
Para excluir um backup device usando comandos T-SQL, 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.
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
4. Device 4:
Tipo: Disk
Nome: backup_adventureworks
Localizao fsica: D:\backups\backup_adventureworks
importante que voc complete este exerccio pois utilizaremos 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 da instncia, 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2440000Curso Completo
KNOW-HOW EM: FAZER O BACKUP DAS INFORMAES
PR-REQUISITOS
Noes sobre estratgias de backup e restore.
Fundamentos apresentados na Parte I.
Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL.
METODOLOGIA
Exerccios: Fazer o backup de Bancos de Dados.
TCNICA
Apresentao dos procedimentos necessrios para a realizao do backup com o SQL Server Management Studio e tambm usando
comandos T-SQL.
Podemos fazer o backup utilizando qualquer uma das seguintes ferramentas:
SQL Server Management Studio
Comandos T-SQL
FAZENDO O BACKUP COM O SQL SERVER MANAGEMENT STUDIO
Para aprender a fazer o backup com o SQL Server Management Studio vamos comear fazendo um
backup completo do Banco de Dados AdventureWorks. Faremos o backup no backup device
backup_adventureworks que voc criou no Exerccio 3.
Exemplo prtico: Para criar um backup completo do Banco de Dados AdventureWorks, siga os passos
indicados a seguir:
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas
-> Microsoft SQL Server -> SQL Server Management Studio).
2. Na janela Object Explorer, navegue at o banco de dados para o qual voc deseja fazer um
backup completo. No nosso exemplo, navegue at o banco de dados AdventureWorks, dentro
da opo Databases, da instncia SERVIDOR\SQL2005.
3. D um clique com o boto direito do mouse no Banco de Dados AdventureWorks, e no menu
de opes que surge clique na opo Tasks -> Back up.
Surge a janela para que voc possa configurar as definies do backup a ser criado, conforme indicado
na Figura 5.6.
Na guia Geral (General) 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 o AdventureWorks est selecionado nesta lista. Por padro,
j vem selecionado o banco de dados, no qual voc clicou com o boto direito do mouse.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000245
Figura 5.6 Janela para definio do backup.
Recovery model: O conceito de Recovery Model um conceito que foi introduzido no SQL
Server 2000 e que tambm faz parte do SQL Server 2005. Vamos fazer um parnteses um pouco
maior, para falar mais sobre o conceito de Recovery Model. No SQL Server 2000 e SQL Server
2005, as operaes de backup e restore ocorrem no contexto de um modelo de recuperao
recovery models. O modelo de recuperao uma propriedade do banco de dados, a qual afeta
a maneira como so executadas as operaes de backup e restore de um banco de dados. As
operaes de backup e restore sero executadas de diferentes maneiras, dependendo do recov-
ery model configurado para o banco de dados. O recovery model configurado para um banco
de dados determina de que maneira as transaes so gravadas no log, se necessrio ou no
fazer o backup do log de transaes e quais opes de restore estaro disponveis para o banco
de dados. O uso do conceito de recovery models traz diversos benefcios, dentre os quais
possvel destacar os seguintes: simplifica os procedimentos de backup e restore, ao agregar um
conjunto predefinido de aes e opes em cada recovery model, simplifica o planejamento
das aes de recuperao a desastres e, por fim, simplifica os procedimentos de backup e re-
store. Esto disponveis trs diferentes modelos de recuperao:
Full recovery model: Um banco de dados configurado para utilizar este modelo mantm no
log de transaes o registro de todas as operes de dados, executadas no banco de dados, at
mesmo depois de ser feito o backup do banco de dados. Usando este modelo, possvel recuperar
um banco de dados, exatamente ao ponto em que ele se encontrava, no momento da falha,
desde que tenha sido feito o backup dos logs das transaes executadas aps o ltimo backup.
Para garantir este grau de recuperabilidade, em um banco de dados que est configurado
para utilizar este modelo, todas as operaes, incluindo operaes em massa de dados (bulk
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2460000Curso Completo
operations), tais como SELECT INGO, CREATE INDEXT, bem como operaes de importao
em massa de dados, so gravadas no log de transaes. Todas as opes de recovery esto
disponveis, quando utilizado o modelo Full Recovery Model. Para proteger o banco de
dados, contra perdas no log de transaes, quando o banco de dados usa o modelo Full Recov-
ery Model, fundamental que os arquivos do log de transaes estejam em um sistema de
discos tolerante a falhas, sendo recomendado um RAID-5. Tambm poderia ser um RAID-1
(espelhamento), porm o desempenho de um sistema RAID-1 bem inferior ao do RAID-5.
Logged recovery model: Um banco de dados configurado para utilizar este modelo grava uma
quantidiade mnima de operaes em massa, tais como criao de ndices e importao em
massa de dados. As demais operaes so todas gravadas no log de transaes. Este modelo
melhora bastante o desempenho para operaes de massa, tais como a criao e atualizao de
ndices, uma vez que estas aes no so gravadas no log de transaes. Este modelo, normalmente,
utilizado em situaes especficas. Por exemplo, suponhamos que voc tem uma grande
quantidade de dados para importar ou um grande nmero de ndices para criar. Voc pode
colocar o banco de dados, temporariamente, no modelo Logged Recovery Model, para melhorar
o desempenho e reduzir o tempo de execuo destas operaes e, uma vez concludas estas
operaes, colocar o banco de dados novamente no modelo Full Recovery Model.
Simple recovery model: Um banco de dados configurado para utilizar este modelo grava
apenas uma quantidade mnima de informaes no log de transaes, quantidade esta somente
suficiente para garantir a consistncia do banco de dados aps um problema no servidor, tal
como uma queda de energia ou para garantir a consistncia, aps a restaurao de um backup.
Este modelo simplifica bastante as operaes de backup e restore, por eliminar o trabalho
adicional de fazer o backup e restaurar os logs de transaes. Porm, em contra-partida a esta
simplificao, com a utilizao deste modelo, as probabilidades de perda de dados so bem
maiores do que nos outros modelos. Devido falta do backup do log de transaes, fica
impossvel restaurar o banco de dados ao estado em que ele se encontrava no momento da
falha, somente sendo possvel restaur-lo ao ponto do ltimo backup disponvel.
Observe que para o backup do banco de dados, na lista Recovery Model, est disponvel
somente a opo Simple. Isso acontece porque, nas propriedades do banco de dados
AdventureWorks, est configurada a propriedade Recovery Model como Simple.
backup type: Nesta lista esto disponveis as opes: Full: Define que ser feito um backup
completo do Banco de Dados ou Differential: Define que ser feito um backup diferencial do
Banco de Dados.
backup component: Voc pode marcar a opo Database, para fazer o backup do banco de
dados ou a opo Files e filegroups (a qual no est disponvel para o modelo Simple), para
fazer o backup somente de arquivos ou filegroups especficos.
Name: Um nome simplificado para o backup.
Description: Uma descrio mais detalhada sobre o backup que est sendo criado.
backup set will expire: Voc pode definir uma data de expirao para o backup. Passada a
data de expirao, o backup no poder mais ser utilizado, para restaurao dos dados.
Destination -> backup to: Nesta opo devemos selecionar um ou mais backup devices, os
quais utilizaremos para o backup.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000247
N
O
T
A
4. Voc pode marcar a opo Disk, para usar um backup device em disco ou a opo Type, para
fazer um backup em fita. No nosso exemplo, a opo Type no est habilitada, pois no est
instalado um drive de fita de backup, no servidor que eu estou utilizando. Para selecionar um
novo device clique no boto Add, ir surgir a janela indicada na Figura 5.7.
Figura 5.7 Selecionando backup devices.
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.
5. D um clique na opo backup device e, na lista de backup devices previamente criados, selecione
backup_adventureworks.
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, feche o SQL Server Management Studio e abra-o novamente. Com isso a listagem ser atualizada.
6. Aps selecionar o backup device a ser utilizado, basta dar um clique em OK e pronto; voc
estar de volta janela de backup com o backup device backup_adventureworks adicionado,
conforme indicado na Figura 5.8. Se houver algum outro backup device na lista, alm do
backup device backup_adventureworks, clique no backup device que est a mais e depois clique
no boto Remove.
D um clique na guia Options. As principais opes desta guia esto descritas a seguir:
Append to existing backup set: 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 all existing backup sets: Esta opo elimina quaisquer backups que j tenham sido
criados no backup device selecionado.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2480000Curso Completo
Figura 5.8 O backup device backup_northwind j adicionado.
Boto Schedule, na barra de botes: Esta opo permite que seja feito um agendamento para
o backup. Veremos mais sobre agendamento de tarefas, mais adiante, neste captulo.
Verify backup when finished: Define que a integridade da mdia de backup deve ser verificada
aps o trmino do backup.
Truncate the transaction log by removing inactive entries: 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, uma
vez que o banco de dados AdventureWorks usa o modelo Simple Recovery Model.
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.
7. 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 2005 emite uma mensagem avisando que o backup foi finalizado
com sucesso.
8. Voc estar de volta ao SQL Server Management Studio.
Podemos conferir que o backup realmente foi feito, acessando a pasta D:\backups. Nesta pasta podemos
verificar que o arquivo backup_adventureworks possui o tamanho de cerca de 67 MB, conforme indicado
na Figura 5.9.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000249
Figura 5.9 Arquivo backup_adventureworks com cerca de 67 MB.
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 qual foi criado no Captulo 3). O backup ser feito no backup device
backup_exemplo1 criado anteriormente. Para criar o backup e o agendamento utilizaremos o SQL
Server Management Studio. Siga os passos indicados no prximo exemplo.
Exemplo prtico: Fazer o backup do log de transaes do Banco de Dados Exemplo1. Agendar este
backup para que seja realizado todos os dias, s 9h, 12h, 15h e 18h.
Para criar o backup e o agendamento do exemplo, siga os passos indicados a seguir:
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas
-> Microsoft SQL Server -> SQL Server Management Studio).
2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo.
3. Na janela Object Browser, d um clique no sinal de + ao lado da instncia SERVIDOR\SQL2005,
que foi a instncia onde criamos o banco de dados Exemplo1, no Captulo 3.
4. Nas opes que surgem, abaixo desta instncia, clique no sinal de + ao lado da opo Data-
bases para expandi-la. Abaixo de Databases surge uma lista com os Bancos de Dados da instncia
SERVIDOR\SQL2005.
5. D um clique com o boto direito do mouse no Banco de Dados Exemplo1. No menu de opes
que surge, selecione o comando Tasks -> Back Up. Ser aberta a janela para definio das opes
de backup, a qual voc j aprendeu a utilizar anteriormente, com a guia General selecionada.
6. Para o campo Name digite AgendLogExemplo1, e para o campo Description, digite backup do
log de transaes.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2500000Curso Completo
7. Na lista backup type, selecione a opo Transaction Log.
Agora vamos selecionar o device backup_exemplo1, no qual faremos o backup do log de transaes.
8. Na parte de baixo da janela, abaixo de Destination, d um clique no boto Add.
9. Na janela Select backup Destination, clique na opo backup device e na lista de backup de-
vices selecione backup_exemplo1.
10. D um clique no boto OK para fechar a janela Select backup Destination.
11. Voc estar de volta janela para definio do backup. Se houver outro backup device na
lista, alm de backup_exemplo1, elimine estes outros devices. Para isso, basta clicar no
device a ser retirado da lista e depois clicar no boto Remove. Certifique-se de que somente
o device backup_exemplo1 esteja na lista. Clique na guia Options. Certifique-se de que a
opo Append to existing backup set esteja selecionada. Sua janela deve estar conforme
indicado na Figura 5.10 (configuraes da guia General). Mantenha a janela de configuraes
do backup aberta.
Figura 5.10 Definies do backup do log de transaes.
Agora vamos definir o agendamento do backup.
12. Clique na boto Schedule.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000251
Figura 5.11 A janela para definio do agendamento (Schedule).
Na lista Schedule type, vem selecionado, por padro, o tipo de agendamento Recurring. Nesta lista,
podemos definir os seguintes tipos de agendamentos:
Recurring: Agenda o backup para ser executado periodicamente, em determinados dias e
horrios configurados no agendamento. o nosso caso, onde queremos que o backup seja
executado diariamente, s 9h, 12h, 15h e 18h.
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 (entenda-se CPUs como sendo os
processadores). O tempo de inatividade para definir se a CPU est ociosa definido na guia
Advanced das propriedades do SQL Server Agent.
One Time: Executa o backup uma nica vez em uma data e horrio especificados.
14. Mantenha a opo Recurring selecionada e defina que o backup deve ocorrer, diariamente, s
9h, 12h, 15h e 18h. Para isso, configure as opes indicadas na Figura 5.12.
13. Surge a janela Job Schedule, conforme indicado na Figura 5.11. Nesta janela voc pode definir
um nome para o job e um nome para o agendamento (conforme voc ver no final deste
captulo, um mesmo job pode ter mais de um agendamento).
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2520000Curso Completo
Figura 5.12 Definindo o agendamento do backup.
15. 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.
16. Digite o nome AgendLogExemplo1 no campo Job name, e clique em OK para criar o
agendamento. O agendamento ser criado e ser exibida uma janela, informando que o
agendamento foi criado com sucesso. Clique em OK para fechar esta janela.
17. Voc estar de volta janela para definio do backup. D um clique na guia Options. Certifique-
se de que a opo Truncate the transaction log by removing inactive entries 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.
18. Clique em OK.
Com isso o agendamento para o backup do log de transaes ter sido criado. Se voc no tiver criado,
anteriormente, um backup do banco de dados, ser emitida uma mensagem de erro, informando que
o backup do log de transaes no poder ser efetuado, pois no existe um backup do banco de dados.
importante lembrar (veja estratgias de backup/restore no incio do captulo) que de nada serve um
backup do log de transaes, se voc no tiver um backup do banco de dados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000253
Figura 5.13 O job AgendLogExemplo1.
Podemos fazer com que um job seja executado a qualquer momento, sem ter que esperar pelo
prximo horrio de execuo, definido no agendamento. 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
AgendLogExemplo1, este ser imediatamente 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.
19. Agora o nosso backup est agendado e ir rodar diariamente, nos horrios por ns definidos.
20. Feche o SQL Server Management Studio.
Agora vamos aprender a fazer backup utilizando comandos T-SQL, na janela de execuo de comandos.
O agendamento de uma tarefa de backup como se fosse o agendamento de qualquer outra tarefa do
SQL Server 2005. Quando criamos uma tarefa agendada, na linguagem do SQL Server 2005, estamos
criando um job. No nosso exemplo, demos o nome de AgendLogExemplo1 para a tarefa, ou melhor,
para o job que executa o backup do log de transaes do banco de dados Exemplo1. Podemos conferir
se este job foi realmente criado, expandindo a opo SQL Server Agent. Abaixo de SQL Server Agent, d
um clique no sinal de + ao lado da opo Jobs. Abaixo de Jobs, deve ser exibido o job AgendLogExemplo1,
conforme indicado na Figura 5.13.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2540000Curso Completo
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 utilizaramos os seguintes comandos:
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:
Processed 560 pages for database northwind, file Northwind_Data on file 1.
Processed 1 pages for database northwind, file Northwind_Log on file 1.
BACKUP DATABASE successfully processed 561 pages in 0.833 seconds (5.509 MB/sec).
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000255
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 vrgula.
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 2005 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.
Os comandos a seguir fazem o backup usando a opo WITH EXPIREDATE:
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 = 20050415
BACKUP DATABASE northwind TO device_exemplo
WITH INIT
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2560000Curso Completo
Ser emitida a seguinte mensagem de erro:
Processed 560 pages for database northwind, file Northwind_Data on file 2.
Processed 1 pages for database northwind, file Northwind_Log on file 2.
BACKUP DATABASE successfully processed 561 pages in 0.916 seconds (5.017 MB/sec).
Msg 4030, Level 16, State 1, Line 17
The medium on device device_exemplo(D:\backups\device_exemplo.bak) expires on Apr 15 2005
12:00:00:000AM and cannot be overwritten.
Msg 3013, Level 16, State 1, Line 17
BACKUP DATABASE is terminating abnormally.
Observe que a mensagem informa que o backup somente ir expirar em 15 de abril de 2005 e no
poder ser sobrescrito: The medium on device device_exemplo (D:\backups\device_exemplo.bak)
expires on Apr 15 2005 12:00:00:000AM and cannot be overwritten.
A opo RESTART: Utilizamos esta opo para que o SQL Server 2005 reinicialize um backup
que tenha sido interrompido, exatamente do ponto onde o backup 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 nome ser assumido como uma string em branco.
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 }
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000257
| 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 o 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 LOG:
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:
A opo NO_LOG ou TRUNCATE_ONLY: Estas duas opes so sinnimas. 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2580000Curso Completo
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 2005, 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: batisti@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 2005.
BACKUP DATABASE Exemplo1 TO device_real
WITH EXPIREDATE = 20051231, 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 uma mensagem, semelhante indicada a seguir:
(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.
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 e restore.
Fundamentos apresentados na Parte I.
Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000259
N
O
T
A
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 SQL Server Management Studio e com comandos T-SQL.
Ao fazermos o backup copiamos 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 do tipo de backup que voc est utilizando: backups completos,
diferenciais ou combinando estes backups com backups do log de transaes.
No item Estratgias de backup, no incio deste captulo, 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 2005. Agora aprenderemos a fazer o restore.
Nesta seo aprenderemos a fazer o restore utilizando as seguintes ferramentas:
SQL Server Management Studio
Janela de Execuo de Comandos T-SQL
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 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2600000Curso Completo
FAZENDO O RESTORE COM O SQL SERVER MANAGEMENT STUDIO
Podemos fazer o restore utilizando o SQL Server Management Studio, 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 prtico: Fazer o restore de um backup completo do Banco de Dados Northwind (substitua
Northwind pelo nome do banco de dados para o qual voc dispe de um backup completo, backup
este que voc deseja restaurar). 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, siga os passos indicados a
seguir:
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas
-> Microsoft SQL Server -> SQL Server Management Studio).
2. Na janela Object Explorer, d um clique no sinal de + ao lado da instncia na qual est o banco
de dados que voc deseja restaurar a partir do backup completo.
3. Nas opes que surgem abaixo desta instncia, clique no sinal de + ao lado da opo Data-
bases para expandi-la. Abaixo de Databases surge uma lista com os Bancos de Dados da
instncia SERVIDOR\SQL2005 (instncia onde est o banco de dados Northwind, que eu
estou utilizando neste exemplo).
Figura 5.14 A janela Restore database.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000261
4. D um clique com o boto direito do mouse no Banco de Dados Northwind, e no menu de
opes que surge selecione Tasks -> Restore -> Database. Surge a janela Restore Database, onde
podemos selecionar os backups a serem restaurados (backups que j foram efetuados,
anteriormente), conforme exemplo da Figura 5.14, onde temos um nico backup disponvel
para restaurao, sendo este um backup do tipo Full.
Na guia General temos as seguintes opes:
To database: Nesta lista podemos selecionar para qual Banco de Dados o backup ser restaurado.
From Database: Permite que selecionemos um banco de dados, para que sejam exibidos os
backups disponveis para o banco de dados que for selecionado.
From device: Este opo permite que seja selecionado um device a partir do qual queremos
fazer o restore.
Estando a opo From database selecionada, na parte de baixo da janela, ser exibida a lista de backups
disponveis para o banco de dados selecionado. Voc clica no backup para selecion-lo. Os dados do
backup selecionado sero utilizados para fazer a restaurao do banco de dados. Voc poder selecionar
mais de um backup. Por exemplo, se voc tem um backup completo e um backup diferencial, feito
aps o backup completo, voc poder selecionar os dois backups para serem restaurados, conforme
exemplo da Figura 5.15:
Figura 5.15 Restaurando o backup completo mais o diferencial.
To apoint in time: Nesta guia tambm importante observar a opo To a point in time, a qual
permite que voc faa o restore at um determinado horrio, desde que voc tenha acesso aos
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2620000Curso Completo
backups do log de transaes e ao log do banco de dados. Por exemplo, se voc detectou um
problema s 9:15, pode usar esta opo, para tentar restaurar o banco de dados at a situao em
que ele se encontrava s 9:00, perdendo apenas as alteraes efetuadas entre 9:00 e 9:15. No SQL
Server 2000, esta opo somente estava disponvel quando fosse selecionada a opo From data-
base, j no SQL Server 2005 esta opo est sempre disponvel, independentemente de selecionar-
se a opo From database ou From device. 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.
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 as 15;00 horas. Observe que restauramos o log somente
at as 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.
5. Certifique-se de que o(s) backup(s) a ser(em) restaurado(s) esteja(m) selecionado(s). D um
clique na guia Options. As principais opes desta guia so as seguintes:
Leave database ready for use by rolling back the uncommitted transactions: 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 and do not roll back the uncommitted transactions: 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.
Leave database in read-only mode for inspection: 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.
6. Certifique-se de que a opo Leave database ready for use by rolling back the uncommitted
transactions 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000263
7. Clique no boto OK para fechar esta mensagem.
8. Voc estar de volta ao SQL Server Management Studio. Mantenha-o aberto, pois iremos utiliz-
lo no prximo tpico.
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 ]
[ [ , ] { 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 ]
]
]
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2640000Curso Completo
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 backup_geral
Este comando executado com sucesso e a seguinte mensagem exibida:
Processed 192 pages for database Exemplo1, file exemplo1-prim on file 1.
Processed 8 pages for database Exemplo1, file exemplo1-sec1.ndf on file 1.
Processed 8 pages for database Exemplo1, file exemplo1-sec2.ndf on file 1.
Processed 1 pages for database Exemplo1, file exemplo1-log.ldf on file 1.
Processed 0 pages for database Exemplo1, file exemplo1-log2.ldf on file 1.
RESTORE DATABASE successfully processed 209 pages in 0.400 seconds (4.280 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 non operational and do not roll back the uncommitted
transactions, no SQL Server Management Studio.
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.
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000265
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 (STATS = 5).
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, 2005 12:00 AM
Para fixar melhor estes comandos vamos fazer um exerccio completo.
Exerccio: Neste exerccio apresentarei os comandos necessrios para executar a seguinte seqncia de tarefas:
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.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2660000Curso 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.
As diversas etapas deste exerccio sero executadas, utilizando comandos T-SQL, na janela de execuo de comandos do SQL Server Manage-
ment Studio. Os backups sero feitos em um device chamado exercicio_capitulo5, o qual est associado ao arquivo
D:\backups\exercicio_capitulo5.bak. O objetivo principal deste exerccio fazer uma reviso dos comandos relacionados criao de
backup devices, criao de backups e de restore, j vistos anteriormente, neste captulo.
Vamos abrir a janela de execuo de comandos do SQL Server Management Studio e criar o device
exercicio_capitulo5.
1. 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.
Fazer um backup completo do Banco de Dados Northwind.
2. Para fazer o backup solicitado, execute 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.
3. 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 irei alterar a tabela Customers s 21h30. Nesta alterao farei com que o
campo Country de todos os registros seja alterado para Brasil. s 21h35 irei alterar o campo Country para
EUA, e s 21h40 alterarei o campo Country de todos os registros da tabela Customers para Alemanha.
4. 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.
N
O
T
A
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000267
Figura 5.16 Country = Brasil para todos os registros da tabela Customers.
5. 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.17 podemos ver o resultado deste comando.
Na Figura 5.16 podemos ver o resultado deste comando. Para ver os dados de uma tabela no SQL Server
2005, basta executar um SELECT * FROM NOME_DA_TABELA.
Figura 5.17 Country = EUA para todos os registros da tabela Customers.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2680000Curso Completo
N
O
T
A
6. 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 s 21h40.
Na Figura 5.18 podemos ver o resultado deste comando.
Figura 5.18 Country = Alemanha para todos os registros da tabela Customers.
7. 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
8. 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.
Agora restauraremos o backup do log de transaes utilizando a opo STOPAT.
9. Para restaurar o log de transaes at as 21h35, execute o seguinte comando:
RESTORE LOG Northwind
FROM exercicio_capitulo5
WITH RECOVERY, STOPAT = 20010308 21:35
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000269
N
O
T
A
Neste caso deveremos estar de volta situao de 21h35 (substitua a data indicada no comando pela
data e hora que voc est utilizando, para acompanhar o exemplo).
Faremos, ento, um restore do backup completo para restaurar o Banco de Dados Northwind a sua
condio inicial.
10. Para restaurar o Banco de Dados Northwind a sua condio inicial, execute o seguinte comando:
RESTORE DATABASE Northwind FROM exercicio_capitulo5
Na Figura 5.19 podemos conferir que os dados originais foram restaurados.
Figura 5.19 Dados originais restaurados.
11. Feche o SQL Server Management Studio.
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 2005
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Saber utilizar o SQL Server Management.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2700000Curso Completo
METODOLOGIA
Definir agendamentos de jobs no SQL Server 2005.
TCNICA
Apresentao dos procedimentos necessrios para o agendamento de tarefas/jobs no SQL Server 2005.
Podemos automatizar uma srie de tarefas administrativas no SQL Server 2005 atravs da criao de
jobs. Um job uma tarefa administrativa, composta de um ou mais passos, a qual agendada para
executar automaticamente, em datas e horrios determinados, nas configuraes do job. Por exemplo,
poderamos criar um job que executa um backup completo do Banco de Dados Northwind aos domingos
noite, s 22:00 horas e um backup diferencial ao final de cada dia, de segunda a 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 possibilidades 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 liberamos 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 este servio seja configurado para inicializar automaticamente. Podemos fazer esta configurao
utilizando o SQL Computer Manager, conforme descrito no Captulo 2. A Figura 5.20 mostra o servio
SQL Server Agent configurado para iniciar automaticamente, usando o SQL Computer Manager.
Figura 5.20 O Servio SQL Server Agent.
Cabe ainda lembrar que cada instncia do SQL Server 2005 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 configurado para no iniciar
automaticamente na outra instncia.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000271
N
O
T
A
Alm do servio SQL Server Agent, precisamos do Banco de Dados msdb (o qual est dentro da opo
System Databases). neste Banco de Dados que ficam armazenadas as informaes e os agendamentos
dos jobs. Observe a Figura 5.21, onde temos 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.21 A tabela sysjobs, do Banco de Dados msdb.
Neste item aprenderemos a criar e a gerenciar jobs.
CRIANDO UM JOB COM O SQL SERVER MANAGEMENT STUDIO
A ttulo de exemplo, vamos criar um job que faz o backup completo dos Bancos de Dados Exemplo1 e
AdventureWorks, 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. Este backup device foi criado em um
dos exemplos anteriores, neste captulo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2720000Curso Completo
Exemplo prtico: Para criar um job que faz o backup completo dos Bancos de Dados Exemplo1 e
AdventureWorks, para o backup device exercicio_capitulo5, siga os passos indicados a seguir:
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas
-> Microsoft SQL Server -> SQL Server Management Studio).
2. D um clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, onde esto os bancos de
dados Exemplo1 e AdventureWorks, os quais faro parte do backup a ser executado
automaticamente, pelo job que estamos criando.
3. Nas opes que surgem abaixo desta instncia, clique no sinal de + ao lado da opo SQL
Server Agent para expandi-la.
4. Observe que, abaixo da opo jobs, sero exibidos os Jobs j existentes.
5. 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.22, com a guia General selecionada por padro:
Figura 5.22 Criao de um novo job.
6. Para o nome do job digite backupExemplo1AdventureWorks, no campo Name.
7. Na lista Category, selecione Databasa Maintenance. Este campo apenas atribui uma determinada
categoria ao job, o que ajuda na identificao das funes do mesmo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000273
8. 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 do
prprio SQL Server utiliza conta as de logon do prprio SQL Server. Com isso vou selecionar a
conta as, que a conta de administrador do SQL Server 2005. No prximo captulo estudaremos
a segurana no SQL Server 2005 em detalhes.
9. No campo Description, digite o seguinte:
Faz o backup de Exemplo1 e AdventureWorks, diariamente, s 23:00 h.
Sua janela deve estar conforme indicado na Figura 5.23:
Figura 5.23 A guia General da janela de criao do job.
10. 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 Exemplo1 e outro
que faz o backup do Banco de Dados AdventureWorks.
11. Para criar um novo passo, d um clique no boto New. Surge a janela indicada na Figura 5.24:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2740000Curso Completo
Figura 5.24 Criando um novo passo para o Job.
12. Preencha os campos da seguinte maneira:
Step Name: backupExemplo1.
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 2005.
Database: Selecione Exemplo1.
Command: Digite o seguinte comando:
BACKUP DATABASE Exemplo1 to exercicio_capitulo5
13. Para verificar se o comando digitado est correto clique no boto Parse. Se o comando estiver
correto, surge uma janela com a mensagem The command has suces parsed. Clique em OK
para fechar esta mensagem. D um clique em OK e pronto, o primeiro passo ter sido criado.
14. Para criar o segundo passo, d um clique no boto New.
15 Preencha os campos da seguinte maneira:
Step Name: backupAdventureWorks.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000275
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 AdventureWorks.
Command: Digite o seguinte comando:
BACKUP DATABASE AdventureWorks to exercicio_capitulo5
16. D um clique em OK e pronto, o segundo passo do job ter sido criado, conforme indicado na
Figura 5.25:
Figura 5.25 Dois passos j adicionados ao job.
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.
17. D um clique na guia Schedules.
18. Para criar um novo agendamento, d um clique no boto New. Surge a janela indicada na
Figura 5.26, na qual voc poder definir o agendamento para o job.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2760000Curso Completo
N
O
T
A
Figura 5.26 Criando um novo agendamento.
19. Para o nome do agendamento digite DiarioAs23horas.
As opes para agendamento foram descritas no item sobre o backup do log de transaes, neste captulo.
20. Certifique-se de que a opo Recurring esteja marcada. Agora vamos configurar o horrio de
execuo do job.
21. Configure as opes conforme indicado na Figura 5.27.
22. D um clique no boto OK para fechar a janela da Figura 5.27.
23. 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 as 20h, executando de duas em duas horas, teramos que criar dois agendamentos
distintos. Para criar mais um agendamento, bastaria clicar novamente no boto New. e definir as configuraes para o novo agendamento.
Agora j temos todas as definies necessrias para a criao do job proposto.
24. D um clique no boto OK e o job backupExemplo1AdventureWorks ser criado e ser executado
diariamente s 23h.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000277
Figura 5.27 Definindo o agendamento do job.
No precisamos esperar at as 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.28. Para iniciar a execuo do job, basta clicar no boto Start.
Figura 5.28 Lista de passos do job.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2780000Curso Completo
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.
Surge uma janela com uma mensagem. Clique em Close para fech-la. Enquanto o job estiver
desabilitado, este 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.
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 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.29:
Figura 5.29 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
Curso Completo0000279
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.
CONCLUSO
Neste captulo aprendemos conceitos fundamentais para a manuteno de um Banco de Dados no
SQL Server 2005.
Iniciamos o captulo aprendendo sobre transaes e o log de transaes no SQL Server 2005. Conforme
vimos, o log de transaes tem um papel fundamental na recuperao de um Banco de Dados em caso
de falhas e tambm na manuteno da consistncia e da integridade dos dados.
Ainda na parte terica, aprendemos sobre os tipos de backup disponveis no SQL Server 2005, 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 usando comandos T-SQL. Em seguida, aprendemos a criar e a restaurar backups,
utilizando o SQL Server Management Studio e comandos T-SQL.
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:
Tempo mximo de parada para backup (janela de 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 banco de dados 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 2005. Mas isso assunto para o prximo
captulo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 6
SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2820000Curso Completo
N
O
T
A
INTRODUO
O SQL Server 2005 pode ser utilizado como Banco de Dados em uma srie de situaes, como por
exemplo:
Para sites de comrcio eletrnico.
Para armazenar os dados do 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 (e no mais do que suficiente), para que o usurio realize o
seu trabalho. Se um usurio trabalha no atendimento ao pblico, fornecendo informaes aos clientes,
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
2005, garantiremos que somente podem acessar os dados de um 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 Server ou Windows
Server 2003 e do SQL Server 2005, dificultaremos, enormemente, a vida de quem quer invadir nossos
sistemas. Muitas das invases conhecidas acontecem por m configurao dos mecanismos de segurana
disponveis (uma das situaes mais conhecidas, com o SQL Server 2000, era o caso de servidores com
a senha da conta sa em branco. Este era o padro para o SQL Server 2000, ou seja, a menos que voc
definisse uma senha para a conta sa, a senha padro seria em branco. E para piorar um pouco mais, a
conta a conta com poderes mximos no SQL Server. Ou seja, deixar um servidor com a conta sa
com senha em branco equivalente a deixar a chave embaixo do tapete, na porta da frente e pendurar
um luminoso com letras bem grandes com a frase A chave est embaixo do tapete. Este era um
exemplo tpico de problema de segurana, devido m configurao do SQL Server, ou seja, o
administrador deixava a senha da conta em branco).
Por que essa conversa toda sobre segurana?
Porque este justamente o assunto deste captulo. Veremos quais os mecanismos de segurana
disponveis no SQL Server 2005, 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 Server ou Windows
Server 2003.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000283
Neste captulo apresentaremos:
Uma viso geral da segurana no SQL Server 2005.
As novidades do SQL Server 2005, na rea de segurana.
Tipos de segurana disponveis no SQL Server 2005.
O papel, criao e administrao de Schemas e User Logins contas de usurios para logon no
servidor SQL Server 2005.
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.
Utilizarei a mesma metodologia dos captulos anteriores. Sempre que for cabvel, voc aprender a
executar as operaes propostas utilizando tanto o SQL Server Management StudioSQL Server 2005,
quanto comandos T-SQL, na janela de execuo de comandos do SQL Server Management Studio.
KNOW-HOW EM: SEGURANA NO SQL SERVER 2005
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Saber utilizar o SQL Server Management Studio SQL Server 2005 e o Query Analyzer.
METODOLOGIA
Apresentao terica sobre o modelo de segurana do SQL Server 2005.
A segurana no SQL Server 2005 baseada nos seguintes conceitos:
Logins
User Accounts
Schemas
Roles
Permissions
PRIMEIRO PRECISAMOS CONECTAR COM O SERVIDOR SQL SERVER 2005
O primeiro passo para que o usurio possa acessar o servidor SQL Server estabelecer uma conexo
com uma instncia do servidor SQL Server 2005. 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 ou, melhor, permisso para conectar com a instncia do SQL Server 2005. Em caso afirmativo,
a conexo com o servidor SQL Server 2005 estabelecida. A Figura 6.1 ilustra este conceito.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2840000Curso Completo
Figura 6.1 Usurio conectando com o servidor SQL Server 2005.
Nesta situao, descrita na Figura 6.1, 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000285
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 2005. Dentro da prpria aplicao, o usurio deve digitar o seu login e senha de acesso. Pode ser
que a aplicao seja uma pgina ASP ou uma aplicao Cliente/Servidor, desenvolvida em Delphi ou
em Visual Basic. 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, cada vez que for usar cada diferente aplicao, que faz conexo com uma ou mais instncias
do SQL Server 2005. Vamos supor que o usurio tenha feito o logon em um domnio do Windows
2000 Server ou do Windows Server 2003. No poderamos utilizar as informaes de logon do
usurio no domnio Windows 2000 Server ou do Windows Server 2003, como credenciais para
acessar o servidor SQL Server? Em outras palavras, no poderamos autorizar o acesso ao servidor
SQL Server diretamente para usurios ou grupos do domnio do Windows 2000 Server ou do Win-
dows Server 2003?
A resposta a ambas as perguntas sim. Essas duas possibilidades, ou seja, usar contas de usurios
criadas no prprio SQL Server 2005 ou usar contas de um domnio do Windows 2000 Server ou Win-
dows Server 2003 que caracterizam os dois diferentes modos de autenticao que podemos utilizar
no SQL Server 2005. Os modos de autenticao possveis so os seguintes:
Windows Authentication mode.
SQL Server and Windows Authentication mode.
No modo SQL Server and Windows Authentication mode podemos dar autorizao de acesso para
as contas de um domnio do Windows 2000 Server ou Windows Server 2003. Com este modo no
necessria a criao de logins (contas de usurio) no prprio SQL Server 2005. 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 (nome de usurio e senha) diretamente para o SQL Server 2005, 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 2005. As contas criadas no SQL
Server 2005 ficam armazenadas no Banco de Dados master de cada instncia. 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 instncia do SQL Server. Ao invs de criar contas no SQL Server 2005,
podemos dar permisso de acesso para as contas do domnio. Por padro, a conta Administrador
do domnio recebe permisses completas de acesso 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 2005. 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 todos os objetos de uma instncia do SQL Server 2005. Na Figura 6.3,
podemos observar que a conta Administrador do domnio SERVIDOR j foi includa na lista de
contas com permisso de acesso ao servidor.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2860000Curso Completo
N
O
T
A
Figura 6.3 Conta SERVIDOR\Administrador com permisso de login.
Mais adiante aprenderemos a acessar a opo Logins, indicada na Figura 6.3. Utilizarei os termos login e conta com o mesmo significado.
Para maiores informaes sobre Domnios do Windows 2000 Server e do Active Directory consulte o livro Manual de Estudos Para o Exame
70-217, 752 pginas, de minha autoria e publicado pela Editora Axcel Books. Para maiores informaes sobre Domnios do Windows Server
2003 e sobre o Active Directory no Windows Server 2003, consulte o livro Windows Server 2003 Curso Completo de minha autoria,
tambm publicado pela Editora Axcel Books (www.axcel.com.br).
No modo de segurana Windows Authentication mode, somente sero aceitas contas do domnio do
Windows. Ou seja, para que o usurio tenha acesso ao SQL Server, este deve ter uma conta cadastrada
no domnio e a sua conta deve ter recebido permisso de acesso ao servidor SQL. Neste modo no
poderemos criar contas no prprio SQL Server. importante salientar que, mesmo no modo Win-
dows Authentication mode, a conta sa continua vlida e pode ser utilizada. A conta sa, por ser uma
conta de administrador do SQL Server 2005, uma exceo e pode ser utilizada em qualquer modo.
Outro detalhe importante a ser salientado que, para usar o modo Windows Authentication mode,
no obrigatrio (embora seja recomendado) que exista um domnio baseado no Active Directory.
Se no houver um domnio, podero ser utilizadas as contas locais, da base de usurios locais, do
servidor Windows 2000 Server ou Windows Server 2003, onde est instalada a instncia do SQL
Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000287
Podemos alterar entre os modos Windows Authentication Mode e SQL Server and Windows Authenti-
cation Mode facilmente, utilizando o SQL Server Management Studio. Veja o exemplo prtico a seguir.
Para alterar o modo de segurana do SQL Server 2005, faa o seguinte:
1. Abra o SQL Server Management StudioSQL Server 2005 (Iniciar -> Programas -> Microsoft SQL
Server 2005 -> SQL Server Management Studio).
2. No janela Object Explorer, clique com o boto direito do mouse na instncia a ser configurada
e, no menu que surge, d um clique em Properties.
3. Na janela que surge d um clique na opo Security, no painel da esquerda. Surge a janela
indicada na Figura 6.4. Nesta janela, no grupo Server authentication, voc seleciona a forma
de autenticao a ser utilizada, pela instncia do SQL Server 2005, que est sendo configurada.
Figura 6.4 Alterando o modo de segurana do SQL Server 2005.
4. Se voc alterar o modo e clicar em OK, o SQL Server 2005 emite uma mensagem dizendo que
as alteraes somente tero efeito depois que o servio SQL Server for parado e reinicializado.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2880000Curso Completo
N
O
T
A
N
O
T
A
5. Para reinicializar o servio do SQL Server 2005, clique com o boto direito do mouse na instncia
que est sendo configurada e, no menu de opes que exibido, clique na opo Restart.
6. Surge uma janela indicando o progresso da reinicializao do servio. Aps reinicializado o
servio, j estar valendo o modo e autenticao selecionados.
O modo de segurana configurado de maneira independente para as diversas instncias do servidor SQL Server 2005 instaladas em um
mesmo servidor. Por exemplo, se tivermos duas instncias instaladas, uma pode estar no modo Windows Authentication mode e a outra estar
no modo SQL Server and Windows Authentication mode.
DEPOIS DE CONECTADOS, PRECISAMOS DE PERMISSES
PARA ACESSAR OS OBJETOS DO BANCO DE DADOS
Ter permisso de login, quer seja um login do prprio SQL Server 2005 ou um login do domnio,
apenas a primeira etapa do processo. Muito bem, voc conseguiu fazer o logon no SQL Server 2005, e
agora? Uma vez conectado ao servidor SQL Server, o usurio precisa de permisses de acesso a um ou
mais Bancos de Dados e para acessar os objetos (tabelas, views, stored procedures, etc.) de 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, dentre outros:
Tables
Views
Stored Procedures
Extended Stored Procedures
Users
Roles
Rules
Defaults
User Defined Data Types
User Defined Functions
Full-Text Catalogs.
J aprendemos a criar alguns destes elementos e iremos aprender a criar outros no decorrer deste livro.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000289
No item anterior vimos que o usurio precisa de um login para conectar-se com uma instncia do 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 qual se conectou. Conforme
veremos na parte prtica, possvel definir com qual Banco de Dados o login ser automaticamente
associado. Mas isso no significa que o usurio somente poder acessar dados do Banco de Dados com o
qual ele automaticamente associado, durante a 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), nos quais esto as informaes que o usurio precisa acessar. 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 2005, exatamente igual ao conceito de Grupos de Usurios no Windows 2000 Server ou
no Windows Server 2003. 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, Linux, Novell, etc.? Mas, enfim, quem
sou eu para criticar a criatividade do pessoal que inventa os nomes para os objetos do SQL Server 2005?
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2900000Curso Completo
Nesta situao, o usurio jsilva tem permisso para fazer a conexo com uma instncia do servidor SQL
Server, porm no tem permisso para acessar o Banco de Dados Clientes, que est no servidor SQL.
Neste caso se jsilva tentar acessar algum 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 (voc ver no prximo tpico que, na verdade, as permisses so dadas no
diretamente aos objetos do Banco de Dados, tais como tabelas e views, mas sim ao schema ao qual
pertence o objeto. No prximo tpico farei uma explicao detalhada sobre schemas, pois esta uma
das novidades de segurana, mais importantes do SQL Server 2005). Exemplos de permisses para
Bancos de Dados so as seguintes:
Criar tabelas
Excluir tabelas
Alterar tabelas
Criar roles
Criar views
Conectei com o servidor SQL, tenho permisso de acesso ao Banco de Dados e ainda no consigo
executar uma consulta. O que est acontecendo?
Figura 6.6 Usurio com permisso de conexo, permisso no Banco de Dados,
porm sem permisso na tabela Pagamentos.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000291
Alm das permisses para acessar o Banco de Dados, podemos e devemos definir permisses de acesso
para cada objeto de um Banco de Dados. 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., para cada objeto de um Banco de Dados. Portanto, podemos
definir permisses de acesso para cada objeto que faz parte de um Banco de Dados.
O fato de podermos 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 e necessrio 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.
Neste exemplo, temos os seguintes passos:
1. O usurio jsilva consegue fazer a conexo com a instncia do servidor SQL Server 2005.
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: 1) permisso de logon; 2) permisso no Banco de Dados; 3) permisso no objeto que ele
precisa acessar.
SCHEMAS PRINCIPAL NOVIDADE DE SEGURANA DO SQL SERVER 2005
O SQL Server 2005 introduziu uma importante mudana no modelo de segurana, em relao ao SQL
Server 2000: A separao entre usurios e o schema. Para que o amigo leitor no fique perdido e possa
entender bem o que um schema e qual foi a mudana introduzida pelo SQL Server 2005, vamos,
inicialmente, definir alguns conceitos importantes e, depois, mostrar como estes conceitos se relacionam
com a segurana e com a definio de schema.
O primeiro conceito que temos que conhecer o conceito de Principal. Um principal considerado
qualquer objeto que possa solicitar acesso a recursos do SQL Server 2005. Sob este ponto de vista,
usurios, grupos de usurios e processos podem ser considerados como Principals. Uma outra definio,
mais voltada para Banco de Dados, seria que um principal qualquer objeto, para o qual possa se
definir permisses de acesso (ou neg-las) para os objetos de um Banco de Dados. Sob este ponto de
vista, seriam principals objetos tais como usurios e grupos do Windows, logins e roles do SQL Server
2005, e applications roles. Como eu gosto de simplificar ainda mais, em termos desta discusso, vou
considerar como principals usurios ou grupos do Windows ou do SQL Server 2005.
Muito bem. Conhecido o conceito de principals hora de conhecermos um pouco mais sobre outro
importante conceito: Schema. No SQL Server 2000 o conceito de schema era praticamente ignorado;
j para o modelo de segurana do SQL Server 2005, este conceito de fundamental importncia. Ento
vamos a ele.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2920000Curso Completo
Pelos padres de definio do Ansi SQL-92, um schema um conjunto de objetos, sendo que todos os
objetos pertencentes a um schema tm como dono o mesmo principal. Em outras palavras, dentro de
um schema, todos os objetos pertencentes ao schema tm como dono do objeto o mesmo usurio ou
grupo (roles se for um grupo do SQL Server 2005). De uma maneira ainda mais simples, podemos
definir um schema, como sendo um container para outros objetos, de tal maneira que todos os objetos
contidos em um schema tm o mesmo dono. Outra caracterstica importante do schema que ele deve
formar um espao de nomes. O que significa formar um espao de nomes? Significa que o nome de
cada objeto, dentro do espao de nomes, deve ser nico. Ou traduzindo: no pode haver dois objetos,
com o mesmo nome, dentro do mesmo schema. Por exemplo, duas tabelas somente podero ter o
mesmo nome, se pertencerem a schemas diferentes.
No SQL Server 2000 no havia uma separao entre os conceitos de Usurio e schema. No SQL Server
2000, todo usurio o dono de um schema, o qual tem o mesmo nome do usurio. Por exemplo, o
usurio jsilva, automaticamente, configurado como dono de um schema chamado jsilva. O mesmo
vlido para todos os usurios do SQL Server 2000. Com esta ligao, o dono de um objeto exatamente
o mesmo dono do schema que contm o objeto. Por isso que, no SQL Server 2000, antes de poder
excluir um usurio, voc tinha que excluir todos os objetos dos quais o usurio era o dono, ou teria que
alterar o dono de todos estes objetos. Por exemplo, considere o objeto a seguir (l-se de trs para frente:
tabela clientes, cujo dono o usurio jsilva, tabela esta pertencente ao Banco de Dados vendas, do
servidor servidor), pertencente a um Banco de Dados do SQL Server 2000:
servidor.vendas.jsilva.clientes
Neste exemplo, o dono da tabela Clientes o usurio jsilva. Se o administrador do Banco de Dados
precisar excluir o usurio jsilva, ele ter que, primeiro, excluir este e todos os demais objetos quais o
usurio jsilva o dono ou ter que alterar o dono destes objetos. Um trabalho e tanto, convenhamos. Por
exemplo, o administrador poderia alterar o dono da tabela clientes, para que, ao invs do usurio jsilva,
o novo dono fosse o usurio pedro. Com isso, o nome completo do nosso objeto ficaria assim:
servidor.vendas.pedro.clientes
Observe que, ao alterar o dono do objeto, o nome completo do objeto tambm se altera, passando de
servidor.vendas.jsilva.clientes para servidor.vendas.pedro.clientes. Este era um problemo que existia no
SQL Server 2000. Pois, ao alterar o nome completo de um objeto, qualquer programa cujo cdigo faa
referncia ao nome completo do objeto ter que ser alterado. Vejam que uma simples renomeao de
objeto pode gerar uma grande carga de trabalho, com a necessidade de reviso do cdigo das aplicaes,
gerao de novas verses atualizadas e instalao destas verses nos clientes. Um senhor trabalho!
Bem, felizmente isso tudo mudou no SQL Server 2005. No SQL Server 2005 todos os objetos de um
Banco de Dados tm como dono um schema. Nenhum objeto de Banco de Dados pode ter como dono
um usurio ou grupo (Principal seria o nome tcnico, mas estou utilizando o termo usurio ou grupo).
Os usurios so donos de schemas e no mais diretamente de objetos do Banco de Dados, tais como
tabelas ou views. Lembrando tambm que todos os objetos esto dentro de um schema, ou seja, o
schema um container para objetos. Com isso podemos ver que existe uma separao, explcita, entre
usurios e schemas, muito diferente do que ocorria no SQL Server 2000. No SQL Server 2005, temos a
seguinte sintaxe, para o nome completo de um objeto:
Nome_do_Servidor.Nome_do_Banco_de_Dados.Nome_do_Schema.Nome_do_Objeto
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000293
Mas onde est a vantagem desta mudana? Bem simples. No SQL Server 2005 os objetos do Banco de
Dados esto contidos dentro de um schema, e no existe nenhuma relao entre o schema e os usurios.
Com isso, posso alterar o dono de um schema, sem problemas, pois s ir alterar o dono do schema,
mas no ser alterado o nome do schema. Por exemplo, considere o seguinte objeto:
SRVDB.Vendas.Dados.Clientes
No SQL Server 2005 este objeto a tabela Clientes, a qual pertence ao schema Dados, do Banco de
Dados Vendas, do servidor SRVDB. Se precisarmos alterar o dono do schema Dados, no tem problema,
pois isso s ir alterar o dono do schema e no o seu nome. Isso s ocorre porque houve esta separao
entre schema e usurios, no SQL Server 2005. Com isso, o nome do schema pode permanecer sempre
o mesmo e podemos alterar o seu dono, quando necessrio. Com isso, o nome completo do objeto no
muda, o que evita a reviso freqente no cdigo das aplicaes, o que ocorria no SQL Server 2000.
Podemos resumir estas mudanas, da seguinte maneira:
Um schema um container para objetos.
Todo objeto pertence a um schema.
Todos os objetos de um schema tm o mesmo dono, que o dono do schema.
As permisses podem ser atribudas para o schema tambm para os objetos dentro de um schema.
Principais benefcios da separao entre usurios e schemas:
Mltiplos usurios podem ser donos de um schema, atravs da definio de uma role ou um
grupo do Windows, como dono do schema. Com isso, todos os usurios que forem membros
da role ou do grupo do Windows sero donos do schema. Ou seja, defino uma role ou grupo
do Windows como sendo o dono de um schema e todos os seus membros passam a ser
donos do schema.
O processo de excluso de um usurio ficou bem mais simplificado, conforme descrito
anteriormente. Para excluir um usurio, no mais necessrio alterar o dono de todos os
objetos cujo usurio era dono, uma vez que no SQL Server 2005 o usurio no mais dono de
objetos e sim de schema. Isso evita uma srie de problemas, conforme descrito anteriormente.
Com a possibilidade de definio de permisses diretamente em um schema e tambm nos
objetos contidos no schema, podemos definir um nvel de permisses muito mais granular do
que no SQL Server 2000.
Outro importante conceito introduzido pelo SQL Server 2005 o conceito de Default Schema
(Esquema padro). Este conceito utilizado para definir que nome deve ser utilizado, quando feita
referncia a um objeto, sem utilizar o nome completo. Por exemplo, considere o objeto
DBSRV01.vendas.aplicacoes.clientes. Este o nome completo (Full Qualified Name), da tabela Clientes,
do schema aplicaes, do Banco de Dados Vendas, do servidor DBSRV01. No SQL Server 2000, se no
for especificado o nome completo, inicialmente ser procurado por um nome que inclui um schema
com o mesmo nome do usurio que o dono do objeto. Por exemplo, se o dono da tabela clientes
for o usurio jsilva e voc especificar apenas o nome da tabela clientes, o SQL Server 2000 ir procurar,
inicialmente, por um objeto chamado jsilva.clientes. Se ele no encontrar, ele procura por um schema
chamado dbo, ou seja, ir procurar por dbo.clientes. J no SQL Server 2005, com a separao entre os
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2940000Curso Completo
usurios e os schemas, o schema definido como default schema define qual ser o primeiro nome de
schema a ser utilizado para tentar localizar um objeto, quando no especificado o nome completo
do objeto. Por exemplo, suponha que o schema default para o usurio seja um schema chamado
dados. Se o usurio especificar apenas o nome da tabela Clientes, o SQL Server 2005 ir, primeiramente,
procurar por um objeto chamado dados.clientes, porque dados o schema default para o usurio. O
schema default pode ser definido e/ou alterado, usando a opo DEFAULT_SCHEMA, do comando
CREATE USER ou do comando ALTER USER, comandos estes que voc aprender a utilizar neste
captulo. Se, por acaso, no for definido um schema padro, o Banco de Dados utilizar, como schema
padro, o schema dbo. O conceito e uso de default schema traz uma srie de vantagens, dentre as
quais podemos destacar.
Diversos usurios podem compartilhar o mesmo default schema, o que facilita a uniformidade
e a padronizao, na resoluo de nomes.
O fato de um schema padro poder ser compartilhado por vrios usurios permite aos
desenvolvedores de aplicao armazenarem os objetos utilizados pela aplicao, em um schema
especificamente criado para a aplicao, ao invs de usar o schema DBO.
UM RESUMO DA TEORIA SOBRE SEGURANA NO SQL SERVER 2005
Conforme descrevemos neste item, existem dois modos de segurana no SQL Server 2005. O modo
Windows Authentication mode, onde somente so aceitos login de usurios do domnio, quer seja de
um domnio Windows NT 2000 Server ou Windows Server 2003 ou usurios locais de um servidor
baseado no Windows 2000 Server ou Windows Server 2003. O modo SQL Server and Windows Au-
thentication mode admite as contas do domnio e tambm contas criadas no prprio SQL Server 2005.
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 para os schemas onde
esto os objetos a serem acessados e, dentro dos schemas, diretamente para acesso 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, dentro do mesmo schema.
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 este 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 2005. Nos prximos itens voc aprender
a implementar a segurana na prtica. Aprenderemos a criar Login Accounts, a autorizar usurios a
acessar Bancos de Dados, schemas 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. Estes conceitos so integralmente vlidos para
o Windows Server 2003.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000295
N
O
T
A
N
O
T
A 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.
Por padro, quando usamos o modo de autenticao Windows Authentication mode, as contas pertencentes ao grupo Administradores tm
poderes totais no SQL Server 2005.
KNOW-HOW EM: SEGURANA NO
WINDOWS 2000 SERVER E WINDOWS SERVER 2003
PR-REQUISITOS
Noes bsicas do Windows 2000 Server e Windows Server 2003.
METODOLOGIA
Apresentao terica sobre o modelo de segurana do Windows 2000 Server e Windows Server 2003.
Para um curso completo sobre os recursos de segurana no Windows Server 2003, consulte o seguinte livro de minha autoria, publicado pela
editora Axcel Books www.axcel.com.br : Windows Server 2003 Curso Completo, 1568 pginas.
Vimos que, no modelo de segurana do SQL Server 2005, podemos dar autorizao para usurios e
grupos de usurios de um domnio do Windows 2000 Server ou Windows Server 2003, para conexo
com o servidor SQL Server. Neste item vamos fazer um pequeno parnteses para falar sobre alguns
conceitos de segurana do Windows 2000 Server e tambm do Windows Server 2003. Estes conceitos
ajudaro o amigo leitor a entender melhor o modelo de segurana do SQL Server 2005.
Neste item tratarei dos seguintes tpicos:
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 encaixa-
se neste conceito.
DOMNIOS E GRUPOS DE TRABALHO (WORKGROUPS)
Um rede com Windows 2000 Server ou com o Windows Server 2003 pode ser criada utilizando-se dois
conceitos diferentes, dependendo da maneira como os servidores Windows so configurados. Os
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2960000Curso Completo
servidores podem ser configurados para fazerem parte de um domnio ou de um grupo de trabalho,
mais comumente chamado de workgroup, termo que utilizarei 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
Windows: Controladores de Domnio (DC Domain Controlers) e Servidores Membro (Member Serv-
ers). 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 estas alteraes sero automaticamente repassadas (o termo
tcnico utilizado replicadas) para os demais DCs do domnio. Por isso se voc cria uma conta para
o usurio jsilva e cadastra uma senha para este usurio, 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,
a mesma lista de Grupos e as mesmas polticas de segurana. A criao de domnios facilita enormemente
a administrao de uma rede baseada no Windows 2000 Server ou no Windows Server 2003, 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. Estas contas e grupos so conhecidas como contas locais e
grupos locais, respectivamente. Embora isso seja possvel, essa prtica no recomendada, uma vez que
isso dificulta enormemente a administrao quando o nmero de usurios e grupos for grande. Voc
pode atribuir permisses, para os recursos (pastas compartilhadas, impressoras compartilhadas, aplicativos,
etc.) de um servidor membro, a 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 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, entre controladores de domnio de redes remotas.
Como os servidores membro no possuem uma cpia da lista de usurios e grupos do domnio, estes
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 GPOs Group Policy Objects.
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 ou Windows Server 2003 e no mais do
que dez estaes clientes.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000297
ACTIVE DIRECTORY
O Active Directory , talvez, a mudana mais significativa includa com o Windows 2000 Server e
tambm presente no Windows Server 2003. 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 e do Windows Server 2003. 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 conhecido 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 lgica da sua empresa. Para que um usurio cadastrado em um domnio possa receber
permisses para acessar recursos em outros domnios, o Windows cria e mantm, automaticamente,
relaes de confiana entre os diversos domnios. As relaes de confiana so bidirecionais e transitivas.
Isso significa que, 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, tais como o NT Server 4.0, pois nas verses antigas 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
2980000Curso Completo
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 domnios deste tipo forma um espao de nomes contnuo, onde
o nome do objeto filho sempre contm o nome do objeto pai.
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, em qualquer servidor do domnio),
ele poderia tomar qualquer ao em qualquer servidor do domnio. Com a utilizao de unidades
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000299
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.7, exibida anteriormente, 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 dentro de cada domnio, 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 e tambm para o Windows Server 2003.
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 2005, do
departamento de Recursos Humanos.
No Windows 2000 Server e tambm no Windows Server 2003, 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 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 cada usurio. Com uma conta, o usurio pode efetuar o logon e receber permisses para acessar os
mais variados recursos disponibilizados na rede.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3000000Curso Completo
N
O
T
A
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 item, trabalharemos e criaremos 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 2005, caso voc esteja
utilizando o modo de segurana SQL Server and Windows Authentication mode.
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
definida 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, acrescentam-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 do domnio.
Podem ter no mximo 20 caracteres.
Os seguintes caracteres no podem ser utilizados como parte do nome: / \: ; [ ] | = , + * ? < >
Sempre que voc for cadastrar um usurio tambm deve ser cadastrada uma senha para o usurio. O
nmero mximo de caracteres da senha 128, sendo recomendado usar senhas de, no mnimo, 8 caracteres.
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. Vamos utilizar estas contas para
atribuir permisses de acesso no SQL Server 2005, mais adiante, neste captulo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000301
N
O
T
A
Exemplo prtico: Criar as seguintes contas de usurios com as respectivas senhas:
Para criar a conta para o usurio user1, siga os passos indicados a seguir:
1. Efetue o logon com uma conta com permisso de administrador.
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 Active Directory.
3. D um clique no sinal de ao lado de groza.com (provavelmente o nome do seu domnio seja
diferente, d um clique no sinal de ao lado do nome do seu domnio). Abaixo de groza.com
surgem diversas opes.
Se voc no tiver acesso a um servidor com o Active Directory, voc pode criar contas locais. Para isso use o console Gerenciamento do
Computador, o qual acessado atravs da opo Ferramentas Administrativas, do Painel de controle.
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 j cadastrados,
conforme indicado na Figura 6.8.
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
Tabela 6.1 Contas de usurios do domnio GROZA.
Figura 6.8 Listagem com todos os usurios j cadastrados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3020000Curso Completo
N
O
T
A
5. D um clique com o boto direito do mouse, na opo Users.
6. No menu que surge, aponte para a opo Novo -> Usurio (New User).
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.
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, Windows
XP ou Windows Server 2003. 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 ou Windows 98. 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 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.
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, medida que voc digita a
senha, o Windows 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 usurio 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000303
N
O
T
A
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: Se esta opo estiver marcada, a senha somente poder
ser alterada pelo administrador. Normalmente utilizada para empregados temporrios e para
estagirios.
A senha nunca expira: Independente das polticas de segurana do domnio, se esta opo estiver
marcada, o usurio nunca precisar 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, conseqentemente,
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 estejam 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 E NO WINDOWS SERVER 2003
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.
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3040000Curso Completo
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 inclu-lo no grupo que tem permisso de acesso ao recurso, 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 tem o grupo Marketing. Veja o quanto a utilizao de grupos pode facilitar a atribuio
e o gerenciamento 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 gerenciar 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.
Agora vamos dar uma olhada nos tipos de grupos existentes no Windows 2000 Server e tambm no
Windows Server 2003.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000305
Podemos ter dois tipos de grupos: 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 Active Directory.
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 grupo,
permisses estas que sero herdadas por todos os membros do grupo. 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 recursos do 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.
Pode ser membro de: Grupos locais no domnio do mesmo domnio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3060000Curso Completo
N
O
T
A
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.
Nome da conta Membros do grupo
Grupo1 user1, user2 e user3
Grupo2 user3, user4 e user5
Tabela 6.2 Grupos de Usurios.
Exemplo prtico: Para criar os grupos Grupo1 e Grupo2, indicados na Tabela 6.2, faa o seguinte:
1. Efetue o logon como administrador ou com uma conta com permisso de administrador.
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 + ao lado de groza.com (provavelmente o nome do seu domnio seja
diferente; d um clique no sinal de + 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.
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 (New > Group).
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.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000307
Figura 6.11 Criando o grupo Grupo1.
9. Repita os passos de 5 a 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 prtico: Para adicionar os usurios aos respectivos grupos, conforme indicado na Tabela 6.2,
siga os passos indicados a seguir:
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 grupo.
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.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3080000Curso Completo
Figura 6.12 Alterando as propriedades do Grupo1.
Figura 6.13 Lista de usurios, contatos e computadores do domnio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000309
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, pois este 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.
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.
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 membros deste grupo. No nosso exemplo, pelos usurios user1, user2 e user3.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3100000Curso Completo
N
O
T
A
Existem algumas contas de usurio que so criadas no momento em que o Windows instalado. Essas contas so conhecidas como Built-in
Accounts. A mais importante delas a conta Administrador (Administrator na verso em ingls). Essa conta tem poderes totais sobre o domnio,
no tendo 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 usurio no grupo (ou grupos), que tem
permisso para acessar os recursos necessrios.
Existem tambm alguns grupos criados durante a instalao do Windows, 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. 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. Utilizaremos estes usurios e grupos nos demais itens deste captulo.
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
Tabela 6.3 Criando mais contas de usurios no domnio groza.com.
Nome do grupo Membros do grupo
Consulta user3, user6, jose, maria
Alterao user3, user7, pedro e paulo
Dbas paulo, user8 e jovina
Excluso user3, jose
Tabela 6.4 Criando mais grupos de usurios no domnio groza.com.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000311
Com isso tivemos uma noo geral sobre usurios e grupos no Windows. Agora podemos fechar o
nosso parnteses sobre segurana no Windows 2000 Server e Windows Server 2003 e voltar segurana
no SQL Server 2005.
KNOW-HOW EM: CRIAO E GERENCIAMENTO
DE LOGIN E ROLES NO SQL SERVER 2005
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Noes bsicas sobre o modelo de segurana do SQL Server 2005.
Noes bsicas sobre o modelo de segurana do Windows 2000 Server e Windows Server 2003.
Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL.
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 SQL Server Management Studio e a janela de
execuo de comandos T-SQL.
A partir de agora aprenderemos a adicionar logins e roles em instncias do SQL Server 2005. No me
canso de repetir e salientar: role apenas um novo nome que inventaram para grupos de usurios.
Uma role um grupo de usurios no SQL Server 2005.
Vamos fazer uma rpida apresentao do servidor e das configuraes que vou utilizar para os exemplos
deste tpico e do restante do captulo. Estou trabalhando em um servidor com o Windows 2000 Server
instalado. Este servidor no tem o Active Directory instalado. O nome deste servidor SERVIDOR.
Nele temos duas instncias do SQL Server 2005 instaladas, que so as seguintes:
SERVIDOR\SQL2005
SERVIDOR\CURSOSJB
Utilizando as instrues do incio do captulo, certifique-se de que as instncias esto utilizando os
modos de segurana indicados na Tabela 6.5.
Instncia Modo de segurana
SERVIDOR\SQL2005 Windows Authentication mode
SERVIDOR\CURSOSJB SQL Server and Windows Authentication mode
Tabela 6.5 Cada instncia em um modo de segurana diferente.
Na instncia SERVIDOR\SQL2005 somente poderemos adicionar logins do Windows, pois esta instncia
est no modo de segurana Windows Authentication mode. J na instncia SERVIDOR\CURSOSJB,
poderemos adicionar logins do Windows e tambm do SQL Server 2005, pois estamos no modo de
segurana SQL Server and Windows Authentication mode.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3120000Curso Completo
N
O
T
A
Utilizarei os termos logins e users com significados diferentes. Adicionar um login significa dar permisso a um usurio para que o usurio
faa a conexo com o Servidor SQL Server 2005. 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 schema ou a um Banco de Dados. Ento resumidamente: um login d
permisso de conexo com o servidor SQL Server 2005, e user d permisso de acesso a um ou mais Bancos de Dados. Na prtica estes so
os termos utilizados pelo SQL Server 2005. No SQL Server Management Studio, nas opes de cada instncia, 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 cada Banco
de Dados temos uma opo Security -> Users, que onde adicionaremos os usurios com permisso de acesso ao Banco de Dados. Na Figura
6.15 podemos ver estas duas opes.
Figura 6.15 Logins para a instncia, users para o Banco de Dados.
Seguindo a nossa metodologia, vamos aprender a adicionar usurios utilizando SQL Server Manage-
ment Studio e comandos T-SQL.
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 SQL SERVER MANAGEMENT STUDIO
Vamos aprender a criar logins utilizando o SQL Server Management Studio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000313
Utilizaremos o SQL Server Management Studio para adicionar os logins da Tabela 6.6. Adicionaremos
estes logins instncia SERVIDOR\SQL2005, a qual est no modo Windows Authentication mode.
Neste exemplo, as contas user1, user2, user3, user4, user5, grupo1 e o grupo grupo2 j devem existir no
Windows. Caso estas contas no existam, voc dever cri-las, previamente. Isso vlido tanto para
contas de um domnio baseado no Active Directory, quanto para contas locais, criadas em um servidor
que no faz parte de um domnio, ou que faz parte de um domnio mas no um DC.
Exemplo prtico: Para adicionar os logins da Tabela 6.6, faa o seguinte:
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas
-> Microsoft SQL Server 2005 -> SQL Server Management Studio).
2. Na janela Object Explorer, d um clique no sinal de + ao lado da instncia SERVIDOR\SQL2005
para expandi-la.
3. Nas opes que surgem abaixo desta instncia, clique no sinal de + ao lado da opo Security,
para expandi-la.
Abaixo de Security existe uma opo Logins, a qual utilizaremos para adicionar logins instncia
SERVIDOR\SQL2005. Neste caso, como a instncia SERVIDOR\SQL2005 est no modo de segurana
Windows Authentication mode, somente poderemos adicionar como logins desta instncia contas de
usurios ou grupos do Windows, quer sejam contas do Active Directory (se voc tiver uma rede baseada
no Active Directory, com um domnio criado), quer sejam contas locais. Adicionaremos as contas
indicadas na Tabela 6.6.
4. Clique no sinal de + ao lado da opo Logins. Observa que, por padro, j so adicionados
alguns logins. A conta sa, que a conta de administrador do prprio SQL Server 2005, a conta
administrador do domnio ou Administrador local (para computadores que no fazem parte
do domnio), o grupo Administradores e assim por diante.
5. 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, com a guia General
selecionada, por padro. Observe que a opo Windows authentication j vem selecionada.
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
Tabela 6.6 Logins a serem adicionados a SERVIDOR\SQL2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3140000Curso Completo
6. No campo Login name, podemos digitar o nome do login. Quando estamos adicionando
usurios ou grupos de um domnio, devemos utilizar a nomenclatura DOMINIO\nome_usurio.
Por exemplo, para adicionar o usurio jsilva do domnio ABC, digite ABC\jsilva para adicionar
o grupo Contabilidade, do domnio XYZ, digite XYZ\Contabilidade. Para adicionar usurios e
grupos locais, para o caso de servidores que no faam parte de um domnio, voc usa uma
nomenclatura semelhante. Neste caso voc usa: NOME_DO_SERVIDOR\Nome_do_usurio ou
NOME_DO_SERVIDOR\Nome_do_grupo. Para este exemplo, estou utilizando as contas locais
de um servidor cujo nome SERVIDOR. Por exemplo, a conta jsilva ser SERVIDOR\jsilva, o
grupo grupo1 ser SERVIDOR\grupo1 e assim por diante. Voc tambm pode clicar no boto
Search. para abrir uma janela que exibe a lista de usurios e grupos disponveis e selecionar os
usurios e/ou grupos, clicando diretamente neles.
7. Para adicionar o usurio user1 do servidor chamado SERVIDOR, digite SERVIDOR\user1. Voc
tambm pode utilizar o boto Search. para obter uma lista de usurios e grupos, conforme
exemplo indicado na Figura 6.16.
Figura 6.16 Lista de usurios e grupos do servidor.
8. Clique no boto Search. para exibir a listagem de usuros e grupos. Na listagem de usurios e
grupos, localize o usurio user1 e d um clique duplo para adicion-lo parte de baixo da
janela. D um clique no boto OK e voc estar de volta janela Login - New, com o campo
Login Name j preenchido com SERVIDOT\user1, conforme indicado na Figura 6.17.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000315
N
O
T
A
Figura 6.17 Adicionando o usurio SERVIDOR\user1.
Uma limitao que somente podemos adicionar um login por vez. No podemos selecionar diversos usurios ou grupos e adicionar todos
de uma s vez.
9. Observe que podemos permitir o acesso ao servidor (Grant Server access) ou negar o acesso
para o usurio e/ou grupo que est sendo adicionado (Deny Server access). Certifique-se de que
a opo Grant server access esteja selecionada.
Na lista Database (na parte de baixo da janela) podemos selecionar qual Banco de Dados ser, por
padro, associado ao usurio que est recebendo permisso de login no SQL Server 2005:
SERVIDOR\user1, quando o usurio conectar-se com a instncia SERVIDOR\SQL2005. O Banco de
Dados padro aquele em que os comandos do usurio tero efeito, a menos que seja utilizado um
comando USE nome_de_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 deste Banco de Dados para
isso o login que est sendo adicionado ter que ser inserido na lista de usurios autorizados do Banco
de Dados. Aprenderemos a fazer isso mais adiante, em um dos prximos itens.
10. No nosso exemplo, vamos associar todos os usurios com o Banco de Dados AdventureWorks.
Na lista Database, selecione o Banco de Dados AdventureWorks.
Na guia Server Roles, podemos fazer com que o login que est sendo adicionado pertena a uma ou
mais roles predefinidas no servidor SQL Server 2005. Uma role tem funo semelhante funo de um
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3160000Curso Completo
grupo de usurios do Windows e, no SQL Server 2005, pode conter um ou mais logins. As roles
predefinidas 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 sysadmin, daremos poderes totais sobre todos os objetos de todos os Bancos de Dados da instncia,
a este login. Isto porque a role sysadmin tem poderes totais e, ao ser adicionada a role, o login herda
estes poderes. Na Tabela 6.7, descrevo as permisses associadas com as principais roles predefinidas no
SQL Server 2005.
Nome da role Permisses
sysadmin Poderes totais sobre todos os objetos da instncia.
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.
Tabela 6.7 Permisses associadas com as principais roles predefinidas.
11. Como nosso usurio no precisa de permisses to avanadas, no iremos adicion-lo a
nenhuma role predefinida.
12. 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. Na guia Permissions, poderamos definir
permisses de acesso para o login que est sendo adicionado, a um ou mais objetos dos Bancos
de Dados da instncia. Aprenderemos a fazer isso nos prximos itens. Vamos nos manter no
foco deste exemplo, que mostrar como adicionar logins a uma instncia do SQL Server 2005.
13. D um clique no boto OK e pronto, o login SERVIDOR\user1 ser adicionado instncia
SERVIDOR\SQL2005. Ser exibida uma mensagem informando que o login que est sendo
adicionado SERVIDOR\user1 no possui permisso de acesso ao Banco de Dados definido
como padro que o Banco de Dados AdventureWorks. Isso ocorre porque ainda no demos
permisses de acesso para o login SERVIDOR\user1, aos objetos do Banco de Dados
AdventureWorks. Aprenderemos a fazer isso nos prximos tpicos deste captulo. Clique em
OK para fechar a mensagem com o aviso e adicionar o login assim mesmo.
14. 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.
Conforme podemos constatar, adicionar logins a uma instncia do SQL Server 2005 uma tarefa
bastante simples. Alis como simples a maioria das tarefas administrativas com o SQL Server 2005,
desde que a teoria seja bem conhecida e entendida.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000317
Figura 6.18 Diversos logins j adicionados.
CRIANDO LOGINS COM COMANDOS T-SQL
Vamos aprender a criar logins utilizando comandos T-SQL, na janela de execuo de comandos do SQL
Server Management Studio.
Utilizaremos comandos T-SQL para adicionar os logins da Tabela 6.8. Adicionaremos estes logins
instncia SERVIDOR\SQL2005, a qual est no modo de autenticao SQL Server and Windows Au-
thentication mode (caso voc no lembre como alterar o modo de autenticao de uma instncia do
SQL Server 2005, volte ao incio do captulo e revise o tpico sobre alterao do modo de autenticao.
Depois, altere o modo de autenticao da instncia SERVIDOR\SQL2005, para SQL Server and Win-
dows Authentication mode). Para senha dos usurios do prprio SQL Server, isto , usurios que no
so de um domnio do Windows ou contas locais de um servidor Windows, utilizaremos a senha
senha123 e como Banco de Dados padro o Banco de Dados AdventureWorks.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3180000Curso Completo
Ao adicionarmos logins, temos que considerar os dois modos de segurana: Windows Authentication
mode e SQL Server and Windows Authentication mode. No caso de estarmos adicionando permisso
de login a um usurio ou grupo do Windows, utilizamos o comando sp_grantlogin. Com este comando
garantimos a um usurio ou grupo j existente no Windows o direito de login no servidor SQL Server
2005. Para o modo de autenticao SQL Server and Windows Authentication mode, em que podemos
criar novos logins no prprio SQL Server, utilizamos o comando sp_addlogin. Na Tabela 6.9 temos um
resumo destes comandos.
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
Tabela 6.8 Logins a serem adicionados instncia SERVIDOR\SQL2005.
Sintaxe para o comando sp_grantlogin:
exec sp_grantlogin DOMNIO\nome
ou
exec sp_grantlogin [DOMNIO\nome]
ou
exec sp_grantlogin NOME_DO_SERVIDOR\nome
Por exemplo, para adicionarmos o usurio chico, do domnio GROZA, utilizamos o seguinte comando:
exec sp_grantlogin GROZA\chico
Comando Utilizado
sp_grantlogin Para adicionar logins do domnio do Windows 2000. Podemos adicionar usurios ou grupos. Utilizamos
o formato DOMNIO\nome ou SERVIDOR\nome.
sp_addlogin Para adicionar novos logins do SQL Server 2005, para o caso de estarmos utilizando o modo de
segurana SQL Server and Windows Authentication mode.
Tabela 6.9 Comandos para adicionar logins.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000319
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, utilizaremos o comando 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 Windows, utilizando o comando
sp_revokelogin.
Sintaxe para o comando sp_revokelogin:
exec sp_revokelogin DOMNIO\nome
ou
exec sp_revokelogin [DOMNIO\nome]
ou
exec sp_revokelogin Nome_Do_Servidor\nome
Por exemplo, para removermos a permisso de login do usurio chico, do domnio GROZA, 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) sempre
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 Windows, 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3200000Curso Completo
Sintaxe para o comando sp_denylogin:
exec sp_denylogin DOMNIO\nome
ou
exec sp_denylogin [DOMNIO\nome]
ou
exec sp_denylogin Nome_Do_Servidor\nome
Por exemplo, para negarmos, explicitamente, a permisso de login do usurio chico, 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 adicionar e remover logins do prprio SQL Server, os quais
podem ser utilizados, quando a instncia do SQL Server 2005 estiver configurada para o modo de
autenticao SQL Server and Windows Authentication mode.
Para adicionar um login do SQL Server 2005, 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, e com isso o
identificador nico de segurana ser gerado pelo prprio SQL Server 2005, 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000321
N
O
T
A
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
Ao executar o comando anterior, voc receber uma mensagem de erro, informando que a senha no atende os requisitos de complexidade.
Aqui temos uma demonstrao de como o SQL Server 2005 foi projetado, tendo a segurana como uma das principais diretivas. Por padro,
no possvel adicionar um login com senha em branco (o que era possvel nas verses anteriores do SQL Server, inclusive para a conta sa,
a qual podia ter uma senha em branco). Como no usei a opo @passwd, a senha definida como em branco, o que no aceito pelas
polticas padro de segurana do SQL Server 2005.
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, utilizaremos o comando 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, podemos utilizar o seguinte comando:
exec sp_droplogin. luciano
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.
Tabela 6.10 Valores do parmetro encryptopt.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3220000Curso Completo
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 login 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:
1. O login de administrao sa.
2. 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 caractere de barra invertida \ como parte do nome. 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\SQL2005.
Exemplo prtico: Para criar os logins indicados na Tabela 6.8, siga os passos indicados a seguir (no
exemplo a seguir, criarei os logins na instncia SERVIDOR\SQL2005. Substitua este nome pelo nome
da instncia que voc estiver utilizando, para acompanhar este exemplo):
1. Se voc no estiver com o SQL Server Management Studio, abra-o.
2. Na janela Object Explorer, localize a instncia SERVIDOR\SQL2005 e d um clique no sinal de
+, ao lado da instncia, para exibir as opes disponveis.
3. Clique com o boto direito do mouse na instncia SERVIDOR\SQL2005 e, no menu de opes
que exibido, clique em New Query.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000323
Ser aberta a janela para execuo de comandos T-SQL, a qual voc j utilizou diversas vezes neste livro.
4. Para criar os logins indicados na Tabela 6.8, digite os seguintes comandos:
Utilizo sp_grantlogin para adicionar
usurios do Windows
exec sp_grantlogin SERVIDOR\jose
exec sp_grantlogin SERVIDOR \maria
exec sp_grantlogin SERVIDOR \pedro
exec sp_grantlogin SERVIDOR \paulo
exec sp_grantlogin SERVIDOR \jovina
exec sp_grantlogin SERVIDOR \grupo1
exec sp_grantlogin SERVIDOR \grupo2
Agora utilizo sp_addlogin para adicionar
logins do SQL Server 2005
exec sp_addlogin sqluser1, senha123, AdventureWorks
exec sp_addlogin sqluser2, senha123, AdventureWorks
5. Pressione Ctrl+E para executar o comando.
6. O comando executado com sucesso e a seguinte mensagem exibida:
Command(s) completed successfully.
7. Agora vamos alterar o Banco de Dados padro para os usurios do Windows. Lembrando que,
como no foi definido o Banco de Dados padro, utilizado como padro o Banco de Dados
master. Para alter-lo, utilizamos o comando sp_defautldb, com a seguinte sintaxe:
exec sp_defaultdb usurio, Banco de Dados
8. Para alterar o Banco de Dados padro para os usurios do Windows, utilize os seguintes
comandos:
exec sp_defaultdb SERVIDOR\jose, AdventureWorks
exec sp_defaultdb SERVIDOR\maria, AdventureWorks
exec sp_defaultdb SERVIDOR\pedro, AdventureWorks
exec sp_defaultdb SERVIDOR\paulo, AdventureWorks
exec sp_defaultdb SERVIDOR\jovina, AdventureWorks
9. Pressione Ctrl+E para executar o comando.
10.O comando executado com sucesso e a seguinte mensagem exibida:
Command(s) completed successfully.
11. Pronto, os logins da Tabela 6.8 foram adicionados e o Banco de Dados padro alterado para o
Banco de Dados AdventureWorks.
12. Feche a janela de execuo de comandos T-SQL. Surge uma mensagem perguntando se voc
deseja salvar os comandos digitados. D um clique em No.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3240000Curso Completo
Exerccio: Usando os conhecimentos apresentados neste tpico, crie os logins indicados na Tabela
6.11. importante que voc faa este exerccio, pois utilizaremos estes logins nos demais exemplos
deste captulo.
CRIANDO ROLES NO SQL SERVER 2005
Conforme j descrevemos, podemos utilizar roles para simplificar a atribuio de permisses de acesso
aos objetos do SQL Server 2005. Tambm nunca demais salientar que role semelhante, para no
dizer idntico, ao conceito de grupos de usurios do Windows.
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 2005
fica bastante simplificada.
tambm importante salientar as mudanas e novidades do SQL Server 2005, na rea de segurana, j
descritas anteriormente. A principal mudana a separao entre usurios e schemas. No SQL Server
2005, todos os objetos de um Banco de Dados, tais como tabelas e views, pertencem a um schema.
Agora, um usurio ou rule o dono de um schema e no existe mais o dono de um determinado
objeto. Conforme descrito anteriormente, esta separao entre usurios e schemas facilita, bastante, a
administrao, principalmente em casos onde temos que alterar o dono de um determinado objeto ou
excluir um usurio, o que era bem complicado de se fazer no SQL Server 2000. Para mais detalhes sobre
schemas e a questo do dono dos objetos, consulte o tpico terico, no incio do captulo, sobre o
modelo de segurana do SQL Server 2005.
Existem algumas roles que j so criadas no momento de instalao de uma determinada instncia do
SQL Server 2005. Temos as chamadas Server Roles e as Databases Roles. A seguir, temos as permisses
associadas com cada uma destas roles.
As 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, e este usurio herdar as permisses da role securityadmin. Isto evita que voc tenha
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
Tabela 6.11 Logins a serem adicionados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000325
N
O
T
A
No possvel criar novas roles de servidor. Ou seja, voc est limitado a utilizar as server roles que so criadas quando o SQL Server 2005
instalado.
Tambm temos algumas roles predefinidas para Banco de Dados. Na Tabela 6.13, temos a descrio
destas roles.
que adicion-lo role Sysadmin, dando-lhe mais permisses do que realmente necessita para realizar
o seu trabalho. Na Tabela 6.12, temos a descrio destas roles.
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 extender store procedures.
Tabela 6.12 Permisses associadas com as principais server roles.
Nome da role Permisses para os membros desta role.
db_owner Tem poderes totais sobre o Banco de Dados.
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.
Tabela 6.13 Permisses associadas com as principais Fixed Database Roles.
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. Por outro lado, a role public, se corretamente utilizada, pode simplificar a
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3260000Curso Completo
administrao, em determinadas situaes. Por exemplo, se todos os usurios de um Banco de Dados
devem ter acesso de leitura, basta dar a permisso de leitura para a role public. Como todos os usurios
pertencem role public, eles iro herdar a permisso de leitura, atribuda role public.
Agora precisamos aprender a criar roles no SQL Server 2005 e a adicionar usurios a roles. Vamos seguir
a nossa metodologia. Aprenderemos a criar roles utilizando o SQL Server Management Studio e tambm
comandos T-SQL, na janela de execuo de comandos. Lembrando que somente possvel criar novas
roles em nvel de Banco de Dados, isto , no poderemos adicionar novas roles em nvel de servidor.
CRIANDO NOVAS ROLES COM O SQL SERVER
MANAGEMENT STUDIO E SQL SERVER 2005
Exemplo prtico: Utilizando o SQL Server Management Studio, crie as roles indicadas na Tabela 6.14.
Para criar as roles da Tabela 6.14, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio e, na janela Object Explorer, clique no sinal de + ao
lado da instncia SERVIDOR\SQL2005.
2. D um clique no sinal de + ao lado do Banco de Dados Exemplo1, para exibir as suas opes.
Nas opes que so exibidas, abaixo do Banco de Dados Exemplo1, clique no sinal de + ao lado
da opo Security.
3. Nas opes que surgem, d um clique na opo Roles para selecion-la.
4. Clique com o boto direito do mouse na opo Roles. No menu que surge d um clique na opo
New -> New Database Role... Surge a janela para a criao de uma nova role de Banco de Dados.
5. No campo Name digite Consulta. No campo Owner voc pode especificar qual schema ser o
dono da role que est sendo criada.
6. Na lista Schemas owned by this role, voc pode marcar um ou mais dos schemas disponveis
no Banco de Dados, sendo que a role que est sendo criada passar a ser o novo dono das
roles selecionadas. No nosso exemplo, a role Consutla no ser dono de nenhum dos
schemas disponveis.
Nome da role Banco de Dados Instncia
consulta Exemplo1 SERVIDOR\SQL2005
gerentes Exemplo1 SERVIDOR\SQL2005
fazbackup Exemplo1 SERVIDOR\SQL2005
consulta AdventureWorks SERVIDOR\SQL2005
gerentes AdventureWorks SERVIDOR\SQL2005
fazbackup AdventureWorks SERVIDOR\SQL2005
Tabela 6.14 Roles a serem criadas usando o SQL Server Management Studio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000327
7. Na parte de baixo da janela, voc poderia adicionar um ou mais usurios ou at mesmo outras roles,
como membro da role que voc est criando. Por enquanto ainda no temos Users adicionados ao
Banco de Dados Exemplo1. Por isso, neste momento, no temos como adicionar usurios role
Consulta, que est sendo criada. Vou insistir novamente, porque muito importante que voc tenha
em mente o modelo de segurana do SQL Server 2005. No item anterior, ns adicionamos logins,
sendo que um login pode ser uma conta do Windows ou um login criado no prprio SQL Server 2005
(desde que a instncia esteja configurada para o modo de autenticao SQL Server and Windows
Authentication mode). O login s d direito de fazer um logon na instncia. Mas, na prtica, o que os
usurios precisam, alm do logon, ter permisso aos dados de um ou mais Bancos de Dados. Para
que um usurio possa ter permisso de acesso, o login do usurio tem que ser adicionado como um
user, nos Bancos de Dados que ele precisa acessar. Alm de adicionar o login do usurio como user do
Banco de Dados, o user deve receber permisses de acesso. As permisses podem ser dadas diretamente
para o user ou, o que mais indicado, podemos adicionar o user como membro de uma role que
possui a permisso. Ao ser adicionada a role, o usurio herda as permisses da role. Para fixar bem este
modelo, vamos considerar o que preciso para que o usurio jsilva de um domnio chamado ABC
(portanto ABC\jsilva) possa ter acesso de leitura a tabela Clientes, do Banco de Dados Exemplo1, da
instncia SERVIDOR\SQL2005. Para isso, teramos que executar os seguintes passos:
Adicionar a conta ABC\jsilva como um login na instncia SERVIDOR\SQL2005.
Adicionar o login ABC\jsilva como um user no Banco de Dados Exemplo1.
Dar permisso de leitura na tabela Clientes, para o User ABC\jsilva, ou adicionar o User
ABC\jsilva a uma role que tenha permisso de leitura na tabela Clientes.
Clique em OK. A nova role consulta foi criada, conforme indicado na Figura 6.19:
Figura 6.19 Role consulta j criada no Banco de Dados Exemplo1.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3280000Curso Completo
N
O
T
A
8. Repita os passos descritos anteriormente para criar as roles gerentes e fazbackup no Banco de
Dados Exemplo1 da instncia SERVIDOR\SQL2005.
9. Utilize as informaes que voc aprendeu neste exemplo, para criar as roles consulta, gerentes
e fazbackup no Banco de Dados AdventureWorks da instncia SERVIDOR\SQL2005.
CRIANDO NOVAS ROLES USANDO COMANDOS T-SQL
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 schema Clientes, utilize o
seguinte comando:
exec sp_addrole teste, Clientes
Se no for especificado o parmetro dono, o dono da role ser o Schema 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, db_securityadmin e db_owner tm permisso para utilizar
o comando sp_addrole.
No podemos criar novas roles nvel de servidor, somente 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
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 retirar todos os membros
da role, para depois poder excluir a role. Aprenderemos a adicionar e a excluir membros de
uma role, no prximo item.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000329
O comando sp_droprole no pode ser executado no contexto de uma transao definida pelo
usurio.
No podemos excluir roles predefinidas Server Roles e 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 AdventureWorks
exec sp_helprole
Na Figura 6.20 temos o resultado da execuo deste comando. Observe que as roles Consulta, Gerentes
e Fazbackup, que criamos anteriormente, j aparecem na listagem.
Figura 6.20 Resultado do comando sp_helprole, no Banco de Dados AdventureWorks.
Agora vamos a um exemplo prtico.
Exemplo prtico: Utilizando a janela de execuo de comandos T-SQL, crie as roles indicadas na Tabela 6.15.
Nome da role Banco de Dados Instncia
role1 Exemplo1 SERVIDOR\SQL2005
role2 Exemplo1 SERVIDOR\SQL2005
role3 Exemplo1 SERVIDOR\SQL2005
Tabela 6.15 Roles a serem criadas com comandos T-SQL.
Para criar as roles da Tabela 6.15, siga os passos indicados a seguir:
1. Se voc no estiver com o SQL Server Management Studio, abra-o.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3300000Curso Completo
2. Na janela Object Explorer, localize a instncia SERVIDOR\SQL2005 e d um clique no sinal de
+, ao lado da instncia, para exibir as opes disponveis.
3. Clique com o boto direito do mouse na instncia SERVIDOR\SQL2005 e, no menu de opes
que exibido, clique em New Query.
Ser aberta a janela para execuo de comandos T-SQL, a qual voc j utilizou diversas vezes neste livro.
4. Para criar as roles indicadas na Tabela 6.15, 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
5. Pressione Ctrl+E para executar estes comandos.
6. As roles role1, role2 e role3 so adicionadas ao Banco de Dados Exemplo1, da instncia
SERVIDOR\SRVINST01, e a seguinte mensagem exibida:
Command(s) completed successfully.
7. Feche a janela de execuo de comandos T-SQL.
Muito bem, agora temos uma srie de logins e roles adicionados instncia SERVIDOR\SQL2005, do
SQL Server 2005. O prximo passo aprendermos a adicionar logins como users de um Banco de
Dados e a dar permisses de acesso aos Bancos de Dados e seus objetos, para users e roles. Tambm
vamos aprender como se comporta a segurana quando um usurio pertence a uma ou mais roles, e
quando, alm das permisses permitidas, 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 2005
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Noes bsicas sobre o modelo de segurana do SQL Server 2005.
Noes bsicas sobre o modelo de segurana do Windows 2000 Server e Windows Server 2003.
Ter criados os logins de exemplo e roles, dos exemplos dos itens anteriores.
Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL.
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 2005, utilizando os comandos apresentados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000331
N
O
T
A
Agora que j adicionamos vrios logins, precisamos dar autorizao para que estes logins possam acessar os
Bancos de Dados de uma instncia do servidor SQL Server. Em cada Banco de Dados, temos uma opo
chamada Users, dentro das opes Security. Nesta opo, por padro, esto adicionados os logins dbo, guest,
INFORMATION_SCHEMA e sys. Para darmos permisso de acesso, por exemplo ao usurio SERVIDOR\user1,
precisamos adicion-lo a esta lista de usurios. Na hora em que estamos adicionando um usurio, podemos j
adicion-lo a uma ou mais roles do Banco de Dados. Aps ter adicionado o usurio, ainda ser possvel inclu-
lo e exclu-lo de uma ou mais roles, conforme as necessidades de acesso do usurio.
Apenas para manter o foco, vamos recapitular os passos que fizemos at agora:
1. Adicionamos usurios do Windows como logins para a instncia SERVIDOR\SQL2005 do SQL Server.
2. Criamos novos logins no prprio SQL Server 2005, na instncia SERVIDOR\SQL2005, a qual
est no modo de autenticao SQL Server and Windows Authentication mode.
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 do Banco de Dados (opo Security -
> Users do Banco de Dados).
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 2005, consulte o item Uma viso geral da segurana no SQL Server
2005, no incio deste captulo.
DANDO PERMISSO DE ACESSO AO BANCO DE DADOS
COM O SQL SERVER MANAGEMENT STUDIO
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.
Login Banco de Dados Instncia
user1 e user2 Exemplo1 SERVIDOR\SQL2005
grupo1 e grupo2 Exemplo1 SERVIDOR\SQL2005
user3, user4 e user5 AdventureWorks SERVIDOR\SQL2005
grupo1 e grupo2 AdventureWorks SERVIDOR\SQL2005
Tabela 6.16 Dando permisso de acesso ao Banco de Dados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3320000Curso Completo
Exemplo prtico: Para adicionar os users indicados na Tabela 6.16, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio.
2. Na janela Object Explorer, d um clique no sinal de + ao lado da instncia SERVIDOR\SQL2005,
para expandi-la.
3. Nas opes que surgem, d um clique no sinal de + ao lado de Databases para exibir os Bancos
de Dados disponveis.
4. D um clique no sinal de + ao lado do Banco de Dados Exemplo1, para exibir os objetos deste
Banco de Dados.
5. D um clique no sinal de + ao lado da opo Security, para exibir as opes de segurana,
disponveis para o Banco de Dados Exemplo1.
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 User. Surge a janela Database User - New,
para adio de um novo usurio ao Banco de Dados.
8. No campo User name voc informa o nome que o usurio ter no Banco de Dados. Todo
usurio associado a um login e recomendado que voc use para nome de usurio o mesmo
nome de login. 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. No
campo User name e tambm no campo Login name, digite SERVIDOR\user1. Ou seja, estou
adicionando o login SERVIDOR\user1, como sendo o usurio SERVIDOR\user1, do Banco de
Dados Exemplo1. Com isso, o user SERVIDOR\user1 poder receber permisses de acesso aos
objetos do Banco de Dados Exemplo1 e tambm poder ser includo como membro de uma ou
mais roles, do Banco de Dados Exemplo1.
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 ir herdar todas as permisses da role. Tambm
lembre que todo usurio, automaticamente, pertence a role public e voc no pode retir-lo desta role.
Observe que a role public nem aparece na lista de roles, pois voc no pode configurar para que o user
no pertena role public.
Outro detalhe importante que nesta tela voc pode definir qual o schema default, associado ao User
que est sendo adiconado. Para isso, basta selecionar o schema na lista Default Schema. Para todos os
detalhes sobre schema e default schema, consulte o tpico Modelo de Segurana do SQL Server 2005,
no incio do captulo.
Vamos incluir o usurio na role consulta. Para isso, na lista Database role membership, marque a role
Consulta. Sua tela deve estar conforme indicado na Figura 6.21:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000333
N
O
T
A
Figura 6.21 Adicionando o user SERVIDOR\user1.
9. D um clique no boto OK e pronto, o usurio SERVIDOR\user1 adicionado lista de usurios
com permisso de acesso ao Banco de Dados Exemplo1.
10. Seguindo as orientaes deste exemplo, adicione a permisso de acesso para os usurios e grupos,
aos respectivos Bancos de Dados, 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 AdventureWorks, mantenha os usurios apenas como membros da role public.
Na Figura 6.22, temos a lista dos users do Banco de Dados Exemplo1.
11. Feche o SQL Server Management Studio.
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 a ser excludo. No menu que surge, d um clique na opo Delete. Ao excluir um usurio da
opo Users, ele deixa de ter permisso de acesso ao Banco de Dados, porm o seu login continua na
lista de logins do servidor SQL Server.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3340000Curso Completo
Figura 6.22 Usurios com permisso de acesso ao Banco de Dados Exemplo1.
DANDO PERMISSO DE ACESSO AO BANCO DE DADOS, USANDO COMANDOS T-SQL
Neste item aprenderemos a adicionar logins lista de usurios com permisso de acesso a um Banco de
Dados, utilizando comandos T-SQL, na janela de execuo de comandos.
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:
use database
exec sp_grantdbaccess nome de login
Por exemplo, para adicionar o usurio user1, do domnio SERVIDOR ao Banco de Dados
AdventureWorks, podemos utilizar os seguintes comandos:
use AdventureWorks
exec sp_grantdbaccess SERVIDOR\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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000335
Exemplo prtico: Vamos dar permisso de acesso para os usurios nos respectivos Bancos de Dados
indicados na Tabela 6.17.
Para dar permisso de acesso, conforme indicado na Tabela 6.17, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio e, na janela Object Explorer, navegue at a instncia
SERVIDOR\SQL2005. Clique com o boto direito do mouse na instncia SERVIDOR\SQL2005
e, no menu de opes que exibido, clique em New Query. Ser aberta a janela para execuo
de comandos T-SQL.
2. Digite os seguintes comandos:
Tornando o Banco de Dados AdventureWorks o banco atual
use AdventureWorks
Adiciono as permisses de acesso ao Banco de Dados AdventureWorks
para isso utilizo o comando sp_grantdbaccess
exec sp_grantdbaccess SERVIDOR\jose
exec sp_grantdbaccess SERVIDOR\paulo
exec sp_grantdbaccess SERVIDOR\jovina
exec sp_grantdbaccess SERVIDOR\maria
exec sp_grantdbaccess SERVIDOR\pedro
Agora adiciono os logins do prprio SQL Server,
isto , logins que no so do Windows
exec sp_grantdbaccess sqluser1
exec sp_grantdbaccess sqluser2
e por ltimo os grupos do WINDOWS
exec sp_grantdbaccess SERVIDOR\grupo1
exec sp_grantdbaccess SERVIDOR\grupo2
3. Pressione Ctrl+E para executar estes comandos. Os usurios da Tabela 6.17 sero adicionados
lista Users do Banco de Dados AdventureWorks da instncia SERVIDOR\SQL2005.
4. A seguinte mensagem ser emitida:
Command(s) completed successfully.
5. Feche a janela de execuo de comandos T-SQL.
Para retirar a permisso de acesso do usurio a um Banco de Dados, podemos utilizar o comando
sp_revokedbaccess.
Login Permisso no Banco de Dados Instncia
jose e paulo AdventureWorks SERVIDOR\SQL2005
jovina e maria AdventureWorks SERVIDOR\SQL2005
pedro, sqluser1 e sqluser2 AdventureWorks SERVIDOR\SQL2005
grupo1 e grupo2 AdventureWorks SERVIDOR\SQL2005
Tabela 6.17 Dando permisso de acesso ao Banco de Dados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3360000Curso Completo
N
O
T
A
Para compatibilidade com verses anteriores, tambm poderamos utilizar o comando sp_dropuser, mas recomendada a utilizao de
sp_revokedbaccess sempre que possvel. O comando sp_dropuser no dever mais estar disponvel, nas prximas verses do SQL Server.
Por exemplo, para remover o usurio SERVIDOR\user1, do Banco de Dados AdventureWorks,
poderamos utilizar os seguintes comandos:
use AdventureWorks
exec sp_revokedbaccess SERVIDOR\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 usurios 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.
Nome da role Banco de Dados Instncia
leitores Exemplo1 SERVIDOR\SQL2005
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
Tabela 6.18 Roles criadas pelo usurio.
Vamos utilizar o SQL Server Management Studio para adicionar alguns usurios a algumas das roles
anteriormente criadas, conforme indicado na Tabela 6.19.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000337
Exemplo prtico: Para adicionar os usurios indicados na Tabela 6.19, faa o seguinte:
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o.
2. Na janela Object Explorer, localize a instncia SERVIDOR\SQL2005 e d um clique no sinal de
+, ao lado da instncia, para exibir as opes disponveis.
3. Clique no sinal de + ao lado da opo Databases.
4. D um clique no sinal de + ao lado do Banco de Dados Exemplo1 para exibir os objetos deste
Banco de Dados.
5. Clique no sinal de + ao lado da opo Security. Nas opes que so exibidas, clique no sinal de
+ ao lado da opo Roles. Devem aparecer, na listagem de roles, dentre outras, as roles role1 e
role2 criadas anteriormente, conforme indicado na Figura 6.23:
Nome da role Usurios a serem adicionados
role1 user1 e user2
role2 grupo1 e grupo2
Tabela 6.19 Adicionando usurios a roles.
Figura 6.23 Roles role1 e role2 criadas anteriormente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3380000Curso Completo
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, na parte de baixo da janela.
8. Ser exibida a janela Select Database User or Role. Voc pode digitar o nome de um ou mais users
ou roles, separados por ponto-e-vrgula. Uma opo mais prtica fazer com que seja exibida
uma listagem dos users e roles disponveis. Para isso, clique no boto Browse. Ser exibida a
janela Browse for Objects, na qual so exibidos os users e roles do Banco de Dados Exemplo1.
Marque os usurios SERVIDOR\user1 e SERVIDOR\user2, conforme indicado na Figura 6.24:
Figura 6.24 Adicionando usurios.
9. D um clique no boto OK. Voc estar de volta janela Select Database User or role, com os
usurios j adicionados: [SERVIDOR\user1]; [SERVIDOR\user2]. Clique em OK.
Voc estar de volta janela de propriedades da role1 e os usurios SERVIDOR\user1 e SERVIDOR
\user2 j estaro na lista de usurios da role, conforme indicado na Figura 6.25:
10. D um clique em OK e feito: os usurios [SERVIDOR\user1] e [SERVIDOR\user2] tero sido
adicionados a role role1. Voc estar de volta ao SQL Server Management Studio com a listagem
das roles do Banco de Dados Exemplo1 sendo exibida.
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. Clique no boto Browse para exibir a lista de usurios. Na lista de usurios selecione
SERVIDOR\grupo1 e SERVIDOR\grupo2. D um clique em OK. Voc estar de volta janela
Select Database User or role, com os usurios j adicionados: [SERVIDOR\grupo1];
[SERVIDOR\grupo2]. Clique em OK.
14. Voc estar de volta janela de propriedades da role2 e os usurios SERVIDOR\grupo1 e
SERVIDOR\grupo2 j estaro na lista de usurios da role role2.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000339
Figura 6.25 Usurios j aparecem na lista de users da role.
15. D um clique em OK e feito, os usurios tero si
do adicionados role. Voc estar de volta ao SQL Server Management Studio.
16. Feche o SQL Server Management Studio.
Exemplo prtico: Para adicionar usurios a uma role de servidor (sysadmin, securityadmin, etc.):
1. Abra o SQL Server Management Studio e na janela Object Explorer clique no sinal de + ao lado
da instncia com a qual voc ir trabalhar.
2. Nas opes que surgem, d um clique no sinal de + ao lado da opo Security.
3. Nas opes que surgem, d um clique no sinal de + ao lado da opo Server Roles. Ser exibida
a listagem com as roles de servidor.
4. Clique com o boto direito do mouse na role a ser alterada e, no menu de opes que exibido,
clique em Manage Members. Surge a janela com as propriedades da role.
5. Para adicionar usurios d um clique no boto Add. Ser exibida a janela Select logins. Para
exibir a lista de logins disponvies, clique no boto Browse. Ser exibida a lista de logins
disponveis na instncia, conforme exemplo da Figura 6.26:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3400000Curso Completo
Figura 6.26 Logins disponveis na instncia SERVIDOR\SQL2005.
6. Selecione os logins a serem adicionados e d um clique em OK. Voc estar de votla janela
Select logins. Clique em OK. Voc estar de volta janela de propriedades da role, com os
usurios selecionados j adicionados como membros da role.
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 SERVIDOR\user1 e SERVIDOR\user2 role sysadmin, podemos
utilizar os seguintes comandos:
exec sp_addsrvrolemember SERVIDOR\user1, sysadmin
exec sp_addsrvrolemember SERVIDOR\user2, sysadmin
Para excluir um usurio de uma role do servidor, utilizamos o seguinte comando:
exec sp_dropsrvrolemember login, role
Por exemplo, para excluir os usurios SERVIDOR \user1 e SERVIDOR \user2 da role sysadmin, podemos
utilizar os seguintes comandos:
exec sp_dropsrvrolemember SERVIDOR\user1, sysadmin
exec sp_dropsrvrolemember SERVIDOR\user2, sysadmin
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000341
N
O
T
A
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 SERVIDOR \user1 e SERVIDOR \user2, como membros da role
Consulta, do Banco de Dados Exemplo1, utilizamos os seguintes comandos:
use exemplo1
exec sp_addrolemember consulta, SERVIDOR\user1
exec sp_addrolemember consulta, SERVIDOR\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 SERVIDOR\user1 e SERVIDOR\user2, da role Consulta, do Banco
de Dados Exemplo1, utilizamos os seguintes comandos:
use exemplo1
exec sp_droprolemember consulta, SERVIDOR\user1
exec sp_droprolemember consulta, SERVIDOR\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 2005
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Noes bsicas sobre o modelo de segurana do SQL Server 2005.
Noes bsicas sobre o modelo de segurana do Windows 2000 Server e do Windows Server 2003.
Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL.
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 a roles do Banco de Dados e logins a roles do servidor. O passo final das
configuraes de segurana configurar as permisses de acesso aos diversos objetos dos Bancos
de Dados, para usurios e roles.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3420000Curso Completo
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, de tal forma que esta tenha
permisso somente de leitura. E se tivermos dez usurios que pertencem 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 de acesso.
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 dados, criar novas
tabelas, excluir as existentes, criar novas consultas, criar novas triggers, adicionar usurios, etc.
Vamos simplificar: Permisses definem quem pode fazer o que e onde.
Isto o que aprenderemos neste item, ou seja, configurar permisses. Veremos os seguintes tpicos:
Dando permisses no 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, tais 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 um determinado 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 role securityadmin; se queremos dar a um login permisses totais na instncia, basta adicionar este
login como membro da role sysadmin.
Para adicionar um login a uma role, temos duas opes. Abrir as propriedades da role, clicar no boto
Add e adicionar um ou mais usurios. Este procedimento foi descrito no item anterior.
Outra maneira acessarmos as propriedades do login. Para isso abra o SQL Server Management Studio,
clique no sinal de + ao lado da instncia que voc est trabalhando (por exemplo SERVIDOR\SQL2005).
Nas opes que surgem, d um clique no sinal de + ao lado da opo Security para expandi-la. Abaixo
de Security d um clique no sinal de + ao lado da opo Logins. Ser exibida uma lista com todos os
logins da instncia em questo. Para acessar as propriedades de um determinado login, basta dar um
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000343
clique duplo sobre o login a ser configurado. Na janela de propriedades, temos diversas guias, dentre as
quais podemos destacar as seguintes:
General: Nesta guia podemos definir se permitimos (Grant server access) ou negamos (Deny
server access) o acesso ao login em questo. Tambm podemos definir o Banco de Dados e a
linguagem padro para quando o login fizer a conexo com a instncia do 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 login ir herdar todas as permisses atribudas role. Quer ser
demitido? Adicione todo mundo 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 2005. Para adicionar
o login a uma ou mais roles, basta marcar as roles desejadas, conforme exemplo indicado na Figura
6.27, onde estou adicionando o login SERVIDOR\user1 e as roles diskadmin e securityadmin.
Figura 6.27 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, da instncia que est sendo configurada. Ao selecionarmos um Banco
de Dados nesta janela, na parte inferior da janela surge uma listagem com as roles do Banco de
Dados selecionado. 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 usurio. Na Figura 6.28 o usurio SERVIDOR\user1 tem permisso
de acesso ao Banco de Dados Exemplo1 e est sendo adicionado s roles public, db_accessadmin
e db_securityadmin.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3440000Curso Completo
N
O
T
A
Figura 6.28 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
Para um Banco de Dados, podemos definir, dentre outras, 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).
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000345
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 s 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 tem negadas as permisses para criar tabelas e consultas. Como negar tem
precedncia sobre permitir, e o usurio pertence s trs roles, o usurio ter negadas as permisses
para criar tabela e consultas. A permisso efetiva deste usurio ser: Negadas as permisses para
criar tabelas e consultas.
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 e da administrao das permisses de acesso
no SQL Server 2005.
Agora vamos aprender a atribuir permisses para usurios e roles. Depois vamos testar as permisses.
Exemplo prtico: Utilizando o SQL Server Management Studio, atribua as seguintes permisses para o
Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005:
Usurio: SERVIDOR\user1.
Permitir: Create Table, Create View.
Negar: Backup database, Backup log.
Role: role1
Permitir: Create View, Backup database, Backup Log e Create rule.
Lembre que o usurio SERVIDOR\user1 membro da role role1. Outro detalhe que esta role ainda
no foi adicionada como um user com permisso de acesso ao Banco de Dados Exemplo1. Faremos isso
tambm, no decorrer do exemplo prtico a seguir.
Para configurar as permisses sugeridas, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio.
2. Na janela Object Explorer, navegue at o Banco de Dados Exemplo1, da instncia
SERVIDOR\SQL2005.
3. D um clique com o boto direito no Banco de Dados Exemplo1 e, no menu de opes que
surge, d um clique em Properties.
4. Na janela de propriedades do Banco de Dados Exemplo1, d um clique na opo Permissions.
Surge a janela indicada na Figura 6.29.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3460000Curso Completo
Figura 6.29 Definindo permisses para o Banco de Dados Exemplo1.
Nesta janela podemos configurar as permisses para o Banco de Dados. Na parte de cima temos uma lista com
todos os usurios do Banco de Dados (observe que a Role role1 no faz parte desta lista). Na parte de baixo da
janela podemos configurar as diversas permisses disponveis, para o user selecionado na parte de cima. Por
padro a permisso vem desmarcada, o que significa que o usurio no tem esta permisso. Antes de
configurarmos as permisses, vamos adicionar a role role1 lista de users do Banco de Dados. Para isso, clique
no boto Add. Ser aberta a janela Select Users or Roles. No campo Enter the object names, digite role1 e
clique em OK. Pronto, agora a role role1 faz parte da lista de users do Banco de Dados Exemplo1.
5. Vamos comear definindo as permisses para o User SERVIDOR\user1. Na parte de cima da
janela, clique no User SERVIDOR\user1, para selecion-lo e, na parte de baixo da janela, defina
as permisses conforme indicado na Figura 6.30. Observe que a lista de permisses bastante
extensa. Voc ter que usar a barra de rolagem, at localizar as permisses Create table e Create
view, as quais sero permitidas (Allow), para o usurio SERVIDOR\user1. Observe que esta
mesma janela pode ser utilizada para, explicitamente, negar uma ou mais permisses coluna
Deny. Localize as permisses Backup database e Backup log e marque a coluna Deny, para
negar estas permisses para o usurio SERVIDOR\user1, conforme proposto no nosso exemplo.
6. Agora vamos definir as permisses para a role role1. Clique em role1, na parte de cima da
janela, para selecion-la. Na parte de baixo da janela, localize as permisses Create view, Backup
database, Backup log e Create rule e marque a coluna Allow, para permitir estas permisses
para a role role1, no Banco de Dados Exemplo1. Com estas configuraes, na prtica, todos os
membros da role role1, herdaro as permisses que esto sendo atribudas a role role1, ou seja:
Create view, Backup database, Backup log e Create rule.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000347
Figura 6.30 Definindo as permisses para o usurio SERVIDOR\user1.
7. D um clique em OK e pronto, as permisses tero sido definidas.
8. A pergunta agora : Qual a permisso efetiva para o usurio SERVIDOR\user1.
Vamos analisar com calma.
Primeiro: O usurio SERVIDOR\user1 pertence role role1, portanto herdar as permisses
desta role.
Segundo: Ao analisar as permisses efetivas, gosto de analisar para cada permisso,
separadamente. Ento vamos l:
Permisso Create table: O usurio tem esta permisso, e 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 permisso 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 database: 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3480000Curso Completo
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, claramente, uma falta de permisses para efetuar a operao.
Permisso Backup log: So vlidos os mesmos comentrios feitos para a permisso Backup
database. Lembrar sempre que negar tem precedncia sobre permitir. Se o usurio tentar fazer
um backup do log, a seguinte mensagem ser exibida:
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.
Tambm podemos definir as permisses, utilizando comandos T-SQL.
Para atribu-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 SERVIDOR\user1 a permisso de criar novos Bancos de Dados:
USE Master
GRANT CREATE DATABASE TO [GROZA\user1]
Usei, primeiro, o comando USE Master, para tornar o Banco de Dados Master o banco atual. Isso
necessrio porque a permisso de criar novos Bancos de Dados s pode ser dada, sendo o Banco de
Dados Master o banco atual. Na prtica, ao criar um Banco de Dados, o usurio precisa gravar dados
nas tabelas do Banco de Dados master, que onde ficam as informaes sobre tudo o que existe em
uma instncia do SQL Server 2005.
Quando o login for um usurio do domnio do Windows, o nome deve vir entre colchetes, como no
exemplo: [SERVIDOR\user1]
Podemos atribuir mais do que uma permisso ao mesmo tempo, para um ou mais logins ou usurios.
Exemplo 2: Atribuir as permisses CREATE TABLE, CREATE RULE e CREATE VIEW, para o usurio
SERVIDOR\user1 no Banco de Dados Exemplo1.
USE Exemplo1
GRANT CREATE TABLE, CREATE RULE, CREATE VIEW
TO [SERVIDOR\user1]
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000349
N
O
T
A
Exemplo 3: Atribuir as permisses CREATE TABLE, CREATE RULE e CREATE VIEW, para os usurios
SERVIDOR\grupo1 e SERVIDOR\grupo2, no Banco de Dados Exemplo1.
SE Exemplo1
GRANT CREATE TABLE, CREATE RULE, CREATE VIEW
TO [SERVIDOR\grupo1], [SERVIDOR\grupo2]
As principais permisses de Banco de Dados, possveis de serem atribudas com este comando, so
descritas nas Tabelas 6.20 e 6.21.
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 SERVIDOR\user2, no Banco de Dados Exemplo1.
USE Exemplo1
GRANT ALL
TO [SERVIDOR\user2]
Permisso Se aplica a:
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.
Tabela 6.20 Principais permisses de Banco de Dados.
Permisso Se aplica a:
SELECT Tabelas, views e colunas.
INSERT Tabelas e views.
DELETE Tabelas e views.
UPDATE Tabelas, views e colunas.
EXECUTE Stored Procedures.
Tabela 6.21 Principais permisses de objetos do Banco de Dados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3500000Curso Completo
N
O
T
A
Observe que utilizamos a palavra ALL, para significar todas as permisses.
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 ]
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 SERVIDOR\user1,
anteriormente.
USE MASTER
REVOKE CREATE DATABASE TO [SERVIDOR\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 SERVIDOR\user1 no Banco de Dados Exemplo1.
USE Exemplo1
REVOKE CREATE TABLE, CREATE RULE, CREATE VIEW
TO [SERVIDOR\user1]
Exemplo 3: Retirar as permisses CREATE TABLE, CREATE RULE e CREATE VIEW, atribudas para os
usurios SERVIDOR\grupo1 e SERVIDOR\grupo2, no Banco de Dados Exemplo1.
USE Exemplo1
REVOKE CREATE TABLE, CREATE RULE, CREATE VIEW
TO [SERVIDOR\grupo1], [SERVIDOR\grupo2]
Exemplo 4: Retirar todas as permisses atribudas ao usurio SERVIDOR\user2, no Banco de Dados
Exemplo1.
USE Exemplo1
REVOKE ALL
TO [SERVIDOR\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.31:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000351
Figura 6.31 Permisses no Banco de Dados Exemplo1.
Para definir a permisso efetiva de um usurio devemos lembrar que o usurio herda as permisses das
roles s quais ele pertence. Tambm devemos lembrar que estas permisses so cumulativas, isto , se
uma das roles s quais o usurio pertence tiver permisso CREATE TABLE e a outra role qual o usurio
pertence 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
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 role1.
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 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 role2, 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.32, determine as permisses efetivas para os
usurio user1, user2, user3, user4 e user5.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3520000Curso Completo
Figura 6.32 Determine as permisses efetivas para cada usurio.
Observe que medida que novas permisses vo sendo atribudas pode ser difcil determinar 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 a 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 2005.
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000353
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.
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.
Tabela 6.22 Principais permisses de objetos do Banco de Dados.
Podemos atribuir estas permisses para usurios e roles do Banco de Dados. As consideraes que
podemos fazer em relao 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 prtico: Utilizando o SQL Server Management Studio, atribua as seguintes permisses indicadas
na lista a seguir, para a tabela Clientes, do Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005:
SERVIDOR\user1: SELECT E INSERT
SERVIDOR\user2: INSERT E DELETE
role1: UPDATE e DELETE
Para configurar as permisses sugeridas, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio, e navegue at o Banco de Dados Exemplo1, da instncia
SERVIDOR\SQL2005.
2. D um clique no sinal de + ao lado de Exemplo1, para exibir as classes de objetos deste Banco
de Dados.
3. D um clique no sinal de + ao lado da opo Tables, para exibir as tabelas do Banco de Dados.
4. D um clique com o boto direito do mouse na tabela Clientes e, no menu que surge, d um
clique em Properties. Ser exibida a janela de propriedades da tabela Clientes.
5. Nesta janela d um clique na opo Permissions, no painel da esquerda. Surge a janela para
definio de permisses da tabela Clientes.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3540000Curso Completo
6. A lista de users, com permisses, est em branco. Ento, o primeiro passo adicionar os users
SERVIDOR\user1, SERVIDOR\user2 e a role role1. Para fazer isso, clique no boto Add. Ser
aberta a janela Select User or Roles. Clique no boto Browse., para exibir a lista de User e Roles
disponveis. Ser aberta a janela Browse for Objects. Marque os users SERVIDOR\user1,
SERVIDOR\user2 e a role role1, conforme exemplo da Figura 6.33. Clique em OK para fechar a
janela Browse for Objects. Voc estar de volta janela Select Users and Roles. Clique em OK
para fechar esta janela. Voc estar de volta guia Permissions, da janela de propriedades da
tabela Clientes, do Banco de Dados Exemplo1.
Figura 6.33 Adiconando users e roles que recebero permisses.
7. Para definir as permisses para cada usurio/role, s selecionar o respectivo usurio na lista
User or roles e, na parte de baixo da janela, definir as permisses para o usurio/role selecionado.
A exemplo do que ocorre com as permisses de Banco de Dados, as permisses para objetos de
um Banco de Dados tambm podem ser permitidas (Allow) ou negadas (Denny).
8. Clique no user SERVIDOR\user1, para selecion-lo. Marque as permisses SELECT e INSERT,
na coluna Allow, para dar estas permisses para o usurio SERVIDOR\user1.
9. Clique no user SERVIDOR\user2, para selecion-lo. Marque as permisses INSERT e DELETE,
na coluna Allow, para dar estas permisses para o usurio SERVIDOR\user2.
10. Clique na role role1, para selecion-la. Marque as permisses UPDATE e DELETE, na coluna
Allow, para dar estas permisses para a role role1, conforme indicado na Figura 6.34.
11. Definidas as permisses propostas no nosso exemplo, d um clique em OK para fechar a janela
de propriedades da tabela Clientes.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000355
Figura 6.34 Definindo as permisses para a role role1.
12. A pergunta : Qual a permisso efetiva para os usurios SERVIDOR\user1 e SERVIDOR\user2,
na tabela Clientes, do Banco de Dados Exemplo1, com base nas permisses atribudas no nosso
ltimo exemplo?
Vamos analisar com calma.
Primeiro: O usurio SERVIDOR\user1 pertence a role role1, portanto o usurio user1 herdar as
permisses desta role. Portanto o usurio SERVIDOR\user1 acumular as permisses explicitamente
atribudas para ele SELECT e INSERT e as herdadas da role role1 UPDATE e DELETE. Com isso a
permisso efetiva do usurio SERVIDOR\user1 ser:
SELECT
INSERT
UPDATE
DELETE
ou seja, o usurio poder selecionar, inserir, alterar e excluir registros.
Exerccio: Determine as permisses efetivas do usurio SERVIDOR\user2 na tabela Clientes.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3560000Curso Completo
N
O
T
A
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 SERVIDOR\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 [SERVIDOR\user1]
Quando o login for um usurio do Windows, o nome deve vir entre colchetes, como no exemplo:
[SERVIDOR\user1]
Podemos atribuir mais do que uma permisso ao mesmo tempo, para um ou mais logins ou usurios.
Exemplo 2: Garantir para os usurios SERVIDOR\user1 e SERVIDOR\user2 a permisso de selecionar
novos registros, atualiz-los e exclu-los, na tabela Clientes do Banco de Dados Exemplo1:
Use Exemplo1
GRANT SELECT, UPDATE, DELETE ON Clientes
TO [SERVIDOR\user1], [SERVIDOR\user2]
Exemplo 3: Atribuir todas as permisses para o usurio SERVIDOR\user2, na tabela Clientes do Banco
de Dados Exemplo1.
USE Exemplo1
GRANT ALL ON Clientes
TO [SERVIDOR\user2]
Observe que utilizamos a palavra ALL, para significar todas as permisses.
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 objetos do Banco de Dados utilize o comando REVOKE.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000357
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 SERVIDOR\user1, anteriormente.
USE Exemplo1
REVOKE UPDATE ON Clientes
TO [SERVIDOR\user1]
Podemos retirar mais do que uma permisso ao mesmo tempo, para um ou mais usurios.
Exemplo 2: Retirar as permisses SELECT, UPDATE E DELETE, atribudas para o usurio SERVIDOR\user1
na tabela Clientes do Banco de Dados Exemplo1.
USE Exemplo1
REVOKE SELECT, UPDATE, DELETE ON Clientes
TO [SERVIDOR\user1]
Exemplo 3: Retirar todas as permisses atribudas ao usurio SERVIDOR\user2, na tabela Clientes do
Banco de Dados Exemplo1.
USE Exemplo1
REVOKE ALL ON Clientes
TO [SERVIDOR\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 ]
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3580000Curso Completo
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 SERVIDOR\user1, na tabela Clientes, do Banco
de Dados Exemplo1.
USE Exemplo1
DENY UPDATE ON Clientes
TO [SERVIDOR\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 SERVIDOR\user1, na
tabela Clientes do Banco de Dados Exemplo1.
USE Exemplo1
DENY SELECT, UPDATE, DELETE ON Clientes
TO [SERVIDOR\user1]
Exemplo 3: Negar todas as permisses atribudas ao usurio SERVIDOR\user2, na tabela Clientes do
Banco de Dados Exemplo1.
USE Exemplo1
DENY ALL ON Clientes
TO [SERVIDOR\user2]
Observe que utilizamos a palavra ALL, para significar todas as permisses. Na Figura 6.35, temos a
janela com as permisses da tabela Clientes, aps a execuo do comando do Exemplo 3:
Figura 6.35 Todas as permisses negadas para SERVIDOR\user2.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000359
Observe que todas as permisses foram negadas para o usurio SERVIDOR\user2, com exceo de
permisses tais como Alter, Control, Take Ownership e outras, as quais no se aplicam a tabelas, e sim
a outros objetos de um Banco de Dados, tais como views e stored procedures.
E para finalizar, mais um pequeno exerccio.
Exerccio: Considerando a situao descrita na Figura 6.36, determine as permisses efetivas para os
usurio user1, user2, user3, user4 e user5, na tabela Produtos do Banco de Dados Exemplo1.
Figura 6.36 Determine as permisses efetivas para cada usurio.
Observe que, medida que novas permisses vo sendo atribudas, pode ser difcil determinar o real
nvel de acesso de cada usurio, a cada objeto, de cada um dos Bancos de Dados. 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 a roles e no aos usurios individualmente. Isto facilita
bastante a administrao das permisses.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3600000Curso Completo
TRABALHANDO COM SCHEMAS
No incio do captulo, onde eu falei sobre as novidades na parte de segurana do SQL Server 2005, em
relao s verses anteriores do SQL Server, eu salientei que uma das principais mudanas era a separao
que foi feita entre usurios e schemas. Tambm mostrei as vantagens desta separao, onde no existe
mais o conceito de dono dos objetos de um Banco de Dados, tais como tabelas, views e stored proce-
dures. No SQL Server 2005, todos os objetos pertencem a um schema e temos o dono do schema e no
mais o dono dos objetos.
Neste tpico, mostrarei as aes prticas para trabalhar com schemas, usando o SQL Server Manage-
ment Studio. Voc aprender a executar as seguintes aes:
Criar novos schemas
Atribuir objetos a um schema
Alterar o dono de um schema
Exemplo1: Os schemas so criados dentro de um Banco de Dados. Neste exemplo, vamos criar um
schema chamado Produo, dentro do Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005.
Para criar o schema Produo, no Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005, siga
os passos indicados a seguir:
1. Abra o SQL Server Management Studio.
2. Na janela Object Explorer, navegue at o Banco de Dados Exemplo1, da instncia
SERVIDOR\SQL2005.
3. Clique no sinal de + ao lado de Exemplo1, para exibir as opes disponveis. Os schemas fazem
parte da opo Security.
4. Clique no sinal de + ao lado da opo Security, para exibir as opes disponveis. Observe que
uma das opes disponveis Schemas.
5. Clique no sinal de + ao lado da opo schemas e observe a lista de schemas j definidos, no
Banco de Dados Exemplo1, conforme indicado na Figura 6.37.
6. Clique com o boto direito do mouse na opo schemas e, no menu de opes que exibido,
clique em New schema.
7. Ser aberta a janela schema New. No campo Name digite Produo e, para dono deste schema,
vamos selecionar a role Gerentes. No campo schema Owner digite Gerentes. Sua tela deve estar
conforme indicado na Figura 6.38.
8. Clique em OK e pronto, o novo schema Produo ter sido criado no Banco de Dados Exemplo1,
sendo o dono deste schema a role Gerentes.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000361
Figura 6.37 schemas existentes no Banco de Dados Exemplo1.
Figura 6.38 Criando o novo schema Produo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3620000Curso Completo
Aps criar um schema voc poder criar novos objetos e adicion-los a este schema, poder alterar as
propriedades dos objetos j existentes, para que passem a fazer parte deste schema e poder atribuir
permisses de acesso, diretamente ao schema.
Ao criar um novo objeto, como por exemplo uma nova tabela, voc pode definir a qual schema a tabela
ir pertencer. O SQL Server 2005 atribuir o novo objeto que est sendo criado, ao schema definido como
Default schema, para o usurio logado. Na maioria dos casos, o Default schema o schema dbo. Mas, na
hora da criao de um objeto, voc pode definir a qual schema o objeto ir pertencer.
Por exemplo, para criar uma nova tabela, voc navega at a opo Tabelas, do Banco de Dados onde a
tabela ser criada, clica com o boto direito do mouse na opo Tables e, no menu de opes que exibido,
clica na opo New Table. Ser aberta a janela para criao de novas tabelas, janela esta que voc aprendeu
a utilizar no Captulo 4. A definio de a qual schema ir pertencer a tabela feita na janela Propriedades.
Se a janela Propriedades no estiver sendo exibida, tecle F4 para exibir a janela propriedades. Na janela de
propriedades, na lista schema, voc seleciona o schema ao qual ir pertencer a tabela que est sendo criada,
conforme exemplo da Figura 6.39, onde estou selecionando o schema Produo.
Figura 6.39 Selecionando o schema ao qual ir pertencer a tabela Vendas.
Aps salvar e fechar a janela de criao da tabela, ela ser exibida, na lista de tabelas do Banco de
Dados, com o nome Produo.Vendas, ou seja, seguindo o padro: Nome_do_Schema.Nome_da_Tabela,
conforme exemplo da Figura 6.40:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 6 SEGURANA NO SQL SERVER 2005
Curso Completo0000363
Figura 6.40 A tabela Vendas do schema Produo.
No incio do captulo, quando falei sobre as vantagens da separao entre schemas e users, falei que
uma das principais vantagens que podamos alterar o dono de um schema e isso no mudaria o
nome completo para acessar os objetos que pertencem ao schema, pois o que estava mudando era
apenas o dono e no o nome do schema. Isso no ocorria nas verses anteriores do SQL Server, porque
no havia esta separao entre usurios e schemas. Ao mudar o dono de um schema, mudava tambm
o seu nome, o que poderia causar enormes transtornos, tais como aplicaes tendo que ser alteradas,
com alterao no cdigo das aplicaes, para atualizar o nome dos objetos que mudaram devido a
mudana no dono de um ou mais schemas.
Alterar o dono de um schema um processo muito simples, no SQL Server 2005. Basta abrir o SQL
Server Management Studio e localizar o schema a ser alterado. D um clique duplo no schema, para
abrir a janela de Propreidades do schema. Na janela de propriedades, na guia Geral, no camo schema
Owner, basta digitar o nome do novo dono (que pode ser um usurio ou uma role) e clicar em OK.
Pronto, o dono do schema foi alterado, sem causar nenhuma alterao no nome completo dos objetos
pertencentes ao schema. Todas as aplicaes que utilizavam os objetos do schema continuam
funcionando, normalmente, sem nenhuma necessidade de alterao. Bem mais simples e prtico do
que nas verses anteriores do SQL Server.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3640000Curso Completo
CONCLUSO
Neste captulo tratamos, extensivamente, sobre a configurao de segurana no acesso ao servidor e
aos dados de um servidor SQL Server 2005. Tambm apresentamos os conceitos bsicos sobre usurios
e grupos no Windows 2000 Server e Windows Server 2003.
Aprendemos que existem dois modos de autenticao:
Windows Authentication mode.
SQL Server and Windows Authentication mode.
Em seguida ns 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, em cada instncia.
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
Security -> Users, do Banco de Dados.
O estgio final dar as devidas permisses de acesso, tanto em nvel do Banco de Dados, quanto em
nvel dos objetos do Banco de Dados. As permisses em nvel de Banco de Dados definem quem pode
criar novos objetos, alterar os objetos existentes ou at mesmo excluir objetos. J as permisses em
nvel 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 Server 2003.
Aprendemos a realizar as tarefas utilizando as seguintes ferramentas:
SQL Server Management Studio.
Comandos T-SQL, na janela de execuo de comandos.
Sei que o captulo foi longo, mas no poderia ser diferente, devido grande importncia do assunto
segurana.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 7
ADMINISTRANDO, MONITORANDO E
OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3660000Curso Completo
N
O
T
A
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 2005 e a integrao com a segurana do Windows. Agora, j temos um Banco de
Dados configurado e razoavelmente seguro. Porm existe 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 uma ou mais instncias do servidor SQL Server 2005.
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 que possam existir nas tabelas e ndices do
banco de dados. Com isso, trabalhamos de maneira proativa, procurando nos antecipar aos problemas,
antes mesmo que eles aconteam.
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
Transformation Services. Na verdade, DTS o nome da ferramenta que coordena o acesso a diversas
fontes de dados no SQL Server 2000. No SQL Server 2005 esta ferramenta bem mais poderosa e
mais fcil de utilizar.
Esta uma ferramenta que permite a integrao entre fontes de dados nos mais diversos formatos,
atravs da tecnologia OLE-DB. Por exemplo, podemos consolidar nas tabelas de um Banco de Dados
do SQL Server 2005 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 Business Intelligence Development Studio, que como conhecido todo o ambiente do
DTS, no SQL Server 2005. 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/Windows Server 2003: o console Desempenho. Atravs deste console
podemos medir o desempenho de uma srie de objetos/contadores relacionados com o SQL Server
2005. 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 con-
sole. 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 2005. Assim,
podemos, por exemplo, monitorar o uso de recursos crticos para o servidor Windows, 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 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000367
N
O
T
A
Explicarei em detalhes o conceito de objetos/contadores na seo sobre desempenho.
A prxima e ltima ferramenta a ser analisada neste captulo o Profiler. Esta ferramenta permite a
monitorao das atividades de cada instncia do servidor SQL Server 2005, separadamente. Tambm
podemos monitorar as atividades de Banco de Dados. Alm de monitorar, a atividade pode ser salva e
depois executada novamente contra o Banco de Dados. Tambm podemos salvar os dados capturados
em uma tabela, em um arquivo ou em um Script SQL.
KNOW-HOW EM: CRIAO DE UM PLANO DE MANUTENO
PARA UM BANCO DE DADOS DO SQL SERVER 2005
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Fundamentos sobre segurana no SQL Server 2005.
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 SQL Server Management Studio.
Um plano de manuteno define uma srie de tarefas que devem ser executadas no Banco de Dados
para garantir o bom funcionamento do banco, com bom desempenho e garantia de disponibilidade
dos dados, atravs de uma estratgia adequada de backup/restore. 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 dos objetos 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).
Voc pode criar um plano de manuteno manualmente, mas a maneira mais fcil e prtica criarmos
um plano de manuteno do Banco de Dados, utilizando o assistente 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 Maintenance 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 compactao do Banco de Dados, removendo pginas de dados que esto vazias.
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 2005 tem condio
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3680000Curso Completo
N
O
T
A
de tomar melhores decises na hora de executar uma consulta. O resultado final um
desempenho bem melhor.
Fazem uma verificao interna na consistncia dos dados, para certificar-se de que os dados
no esto corrompidos ou em um estado inconsistente.
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.
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. No Captulo 14 aprenderemos sobre novos recursos do SQL Server 2005, os quais tambm podem ser utilizados
para duplicao de dados, tais como Database Snapshot e Database Mirror.
Para que voc possa criar um plano de manuteno, usando o Maintenance Plan Wizard, o login que
voc est utilizando deve ser um membro da seguinte role: MaintenanceUserRole. Evidentemente que,
por padro, a conta sa tem estas permisses, bem como todas as contas pertencentes ao grupo
Administradores, do Windows. Voc pode atribuir a permisso de criar planos de manuteno para
qualquer login. Para isso, basta navegar at a opo Security, da instncia a ser configurada, expandir
a opo Logins, clicar com o boto direito do mouse no login a ser configurado e, no menu de opes
que exibido, clicar em Propriedades. Ser aberta a janela de propriedades do login, com a guia Gen-
eral selecionada por padro. Clique na guia Database Access. Na lista Databases acessible by this login,
marque o banco de dados msdb. Na lista Database roles for: msdb, na parte de baixo da janela, marque
a role MaintenanceUserRole e clique em OK. Pronto, o login foi configurado, com permisso de criar
um plano de manuteno, usando o assistente.
Agora vamos aprender a criar um plano de manuteno, utilizando o Maintenance Plan Wizard, ou
melhor, o Assistente de Plano de Manuteno.
Exemplo prtico: Para criar um plano de manuteno para o Banco de Dados AdventureWorks, da
instncia SERVIDOR\SQL2005, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio (Iniciar -> Programas -> Microsoft SQL Server 2005 ->
SQL Server Management Studio).
2. Na janela Object Explorer, localize a instncia SERVIDOR\SQL2005 e d um clique no sinal de
+, ao lado desta instncia, para exibir as opes disponveis.
3. Nas opes que surgem, d um clique no sinal de + ao lado da opo Management, para exibir
as opes disponveis.
4. Dentre as opes que so exibidas, clique com o boto direito do mouse na opo Mainte-
nance Plans. No menu que surge, clique na opo Maintenance Plan Wizard.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000369
Figura 7.1 Definindo a instncia do SQL Server 2005, na qual ser criado o plano.
6. Nesta etapa voc define em qual instncia do SQL Server 2005 ser criado o plano de
manuteno. Por padro, vem selecionada a instncia dentro da qual estava a opo Manage-
ment -> Maintenance Plans, na qual voc clicou com o boto direito do mouse. Vamos aceitar
a instncia sugerida, pois exatamente nesta que queremos criar um plano de manuteno.
D um clique no boto Next, seguindo para a prxima etapa do assistente.
7. Nesta etapa voc define quais tarefas faro parte do plano de manuteno. Por padro, vm
selecionadas todas as tarefas: Chek database integrity, Shrink database, Defragment index(es),
Re-index, Update statistics, History cleanup, Launxh SQL Server agent job, Backup database
(full), Backup database (Differential) e Backup database (Transaction Log). Deixe todas as opes
marcadas, com exceo da opo Backup database (Differential). D um clique no boto Next,
seguindo para a prxima etapa do assistente.
8. Nesta etapa voc define a ordem em que as tarefas sero executadas. Para alterar a ordem, voc
marca uma determinada tarefa e clica no boto Move up, para mov-la para cima na lista, ou
Move down, para mov-la para baixo na lista. No vamos alterar a ordem sugerida. D um
clique no boto Next, seguindo para a prxima etapa do assistente.
9. Abra a lista Select one or more. Ao abrir esta lista, sero disponibilizadas diversas opes. Nesta
etapa podemos definir se o plano de manuteno incluir todos os Bancos de Dados da instncia
5. Ser exibida a tela inicial do assistente, com uma mensagem informando sobre o que pode ser
feito com o assistente. D um clique no boto Next, seguindo para a prxima etapa. Surgir a
tela indicada na Figura 7.1.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3700000Curso Completo
(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 specific databases). A opo These
specific databases j vem selecionada por padro. Na lista de Bancos de Dados podemos
selecionar aqueles que queremos incluir no plano de manuteno.
No nosso exemplo iremos incluir apenas o Banco de Dados AdventureWorks.
Certifique-se de que o Banco de dados AdventureWorks esteja selecionado na lista de Bancos de Dados.
Sua janela deve estar semelhante indicada na Figura 7.2:
Figura 7.2 Selecionando o banco de dados AdventureWorks.
10. Clique em OK para fechar a lista de opes e certifique-se de que a opo Include indexes,
esteja selecionada, para garantir que a otimizao dos ndices do banco de dados AdventureWorks
seja includa no plano de manuteno. D um clique no boto Avanar para ir para a prxima
etapa do assistente.
11. Nesta etapa, definiremos para quais bancos de dados sero criadas tarefas de otimizao. Abra
a lista Select one or more. Ao abrir esta lista, sero disponibilizadas diversas opes, j descritas
anteriormente. A opo These specific databases j vem selecionada por padro. Na lista de
Bancos de Dados podemos selecionar aqueles que queremos incluir no plano de manuteno.
No nosso exemplo iremos incluir apenas o Banco de Dados AdventureWorks. Certifique-se de
que o Banco de dados AdventureWorks esteja selecionado na lista de Bancos de Dados. Clique
em OK para fechar a lista de opes. Ao selecionar um banco de dados, sero habilitadas as
pores de otimizao e recuperao de espao. Aceite as configuraes sugeridas e d um
clique no boto Next para ir para a prxima etapa do assistente.
12. Nesta etapa podemos definir uma srie de configuraes a respeito da otimizao dos ndices e
das pginas de dados do Banco de Dados. Nesta etapa voc tem trs listas de opes. Na primeira
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000371
lista voc pode ver quais bancos de dados sero includos no plano de manuteno, para terem
os ndices de suas tabelas e views desfragmentados. Abra a primeira lista (Database(s):) e selecione
somente o banco de dados AdventureWorks. Na segunda lista (Object), voc seleciona a opo
Table para otimizar somente os ndices das tabelas, ou a opo View, para otimizar somente
os ndices das views, ou a opo Tables and Views, para otimizar os ndices tanto das tabelas
quanto das views. Selecione a opo Tables and Views. Ao selecionar a opo Table and Views,
automaticamente, sero selecionadas todas as tabelas e views. Se voc selecionar uma opo
individual, como por exemplo Table, na terceira lista, voc poder marcar somente determinadas
tabelas, para ter os ndices otimizados. Com as opes selecionadas, sua janela deve estar
semelhante indicada na Figura 7.3.
Figura 7.3 Definindo otimizaes dos ndices.
13. D um clique no boto Next para ir para a prxima etapa do assistente.
14. Nesta etapa voc seleciona para quais bancos de dados sero criadas tarefas, que iro recriar os
ndices, quando as tarefas forem executadas. As trs primeiras listas tm funcionamento idntico
s trs listas da Figura 7.3. Na primeira lista voc marca um ou mais bancos de dados, na
segunda lista voc seleciona as opes Table, Views ou Tables and Views e, na terceira lista, os
objetos, individualmente, dependendo de qual opo foi selecionada na segunda lista. Esta
tela tem uma srie de opes avanadas, que somente um DBA experiente dever alterar, ou
seja, somente altere estas opes se voc conhecer exatamente o que est fazendo. Para o nosso
exemplo, na primeira lista, selecione o banco de dados AdventureWorks e, na segunda lista,
selecione a opo Tables and Views. Mantenha as demais opes desta etapa inalteradas. D
um clique no boto Next para ir para a prxima etapa do assistente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3720000Curso Completo
15. Nesta etapa voc seleciona para quais bancos de dados sero criadas tarefas, para atualizar as
estatsticas das tabelas e views, quando as tarefas forem executadas. As trs primeiras listas tm
funcionamento idntico s trs listas da Figura 7.3. Na primeira lista voc marca um ou mais
bancos de dados, na segunda lista voc seleciona as opes Table, Views ou Tables and Views e,
na terceira lista, os objetos, individualmente, dependendo de qual opo foi selecionada na
segunda lista. Para o nosso exemplo, na primeira lista, selecione o banco de dados AdventureWorks
e, na segunda lista, selecione a opo Tables and Views. Mantenha as demais opes desta etapa
inalteradas. D um clique no boto Next para ir para a prxima etapa do assistente.
16. Nesta etapa voc seleciona quais opes de histricos sero limpas, quando as tarefas do
plano de manuteno forem executadas e a periodicidade com que estas tarefas (especficas
para limpeza dos histricos) devem ser executadas. Nesta etapa, voc pode marcar as opes
Backup and Restory history, SQL Server Agent Job history e Database Maintenance Plan
History. Por padro, estas trs opes vm selecionadas. Na parte de baixo da janela, voc
define quais dados devem ser excludos do histrico. Por padro, vem selecionada a opo 4
Week(s), significando que sero criadas tarefas, no plano de manuteno, para excluir dados
que tenham sido gravados a mais de quatro semanas, nos histricos selecionados. Nesta
etapa vamos aceitar as configuraes padro, indicadas na Figura 7.4. D um clique no boto
Next para ir para a prxima etapa do assistente.
Figura 7.4 Definindo opes para limpar dados dos histricos.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000373
17. Nesta etapa so exibidos os jobs j existentes, criados anteriormente. Voc pode marcar um ou
mais jobs para serem executados, tambm como parte do plano de manuteno. No nosso
exemplo, incluiremos todos os jobs j existentes, como parte do plano de manuteno.
Certifique-se de que todos os jobs estejam selecionados. D um clique no boto Next para ir
para a prxima etapa do assistente.
18. Nesta etapa voc ir definir para quais bancos de dados sero criadas tarefas de backup, como
parte do plano de execuo. Abra a lista Databases e, abaixo da opo These specific databases,
marque o banco de dados AdventureWorks e clique em OK. As demais opes sero habilitadas.
Voc pode definir se o backup ser feito em disco ou em fita, em qual pasta ser feito o backup
(no caso de um backup em disco), se os backups j existentes devem ser sobrescritos ou no e
assim por diante. Defina as opes desejadas e clique em Next, para seguir para a prxima
etapa do assistente.
19. Nesta etapa voc pode criar tarefas que faro o backup diferencial de um ou mais bancos de
dados. Vamos incluir um backup diferencial do banco de dados AdventureWorks, como
parte do plano de manuteno. Na lista Database(s):, selecione o banco de dados
AdventureWorks e clique em OK. Aceite as demais opes e clique em Next, para seguir
para a prxima etapa do assistente.
20. Nesta etapa voc pode criar tarefas que faro o backup do log de transaes de um ou mais
bancos de dados. Vamos incluir um backup do log do banco de dados AdventureWorks, como
parte do plano de manuteno. Na lista Database(s):, selecione o banco de dados
AdventureWorks e clique em OK. Aceite as demais opes e clique em Next, para seguir para a
prxima etapa do assistente.
21. Nesta etapa voc pode definir uma conta conhecida como Proxy Account. Se for
configurada uma conta como Proxy Account, as tarefas sero executadas no contexto
desta conta, ou seja, a conta configurada como Proxy Account dever ter todas as
permisses necessrias para executar as tarefas do plano de manuteno. Para o nosso
exemplo, no irei configurar uma conta como Proxy Account. Clique em Next, para seguir
para a prxima etapa do assistente.
22. Nesta etapa voc define em qual pasta ser gravado um relatrio sobre o plano de manuteno.
Por padro vem selecionado C:\. Vamos aceitar as configuraes sugeridas. Clique em Next,
para seguir para a prxima etapa do assistente.
23. Ser exibida a tela final do assistente. Se voc precisar alterar alguma opo, utilize o boto
Back. Para finalizar o assistente e criar o plano de manuteno, clique em Finish. O SQL
Server 2005 mostrar o progresso da criao do plano de manuteno, conforme indicado
na Figura 7.5.
24. Uma vez concluda a criao do plano de manuteno, ser exibida a janela com o resultado da
criao. Clique em Close para fechar esta janela. Pronto, o plano de manuteno foi criado.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3740000Curso Completo
Figura 7.5 Progresso da criao do plano de manuteno.
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, clicar em Modify.
Na Figura 7.6 temos a janela de propriedades do plano de manuteno criado neste exemplo. Observe
que, bem no lado esquerdo da tela, exibido o painel Maintenance Tasks. Neste painel, exibida a lista
de tarefas que compem o plano de manuteno.
No lado direito da tela, so exibidas as guias que do acesso s propriedades do plano de manuteno.
D um clique na guia Subplan Editor. Observe que as diversas tarefas que compem o plano de
manuteno so representadas na forma de um diagrama de blocos seqencial, onde uma tarefa
executada aps a outra, conforme indicado na Figura 7.7.
Voc pode, facilmente, acessar os comandos T-SQL associados a cada uma das tarefas. Por exemplo,
clique na primeira tarefa Check database, para selecion-la. Estando o retngulo da primeira tarefa
selecionado, clique com o boto direito do mouse nele e, no menu de opes que exibido, clique em
Edit. Ser aberta a janela de propriedades da tarefa. Clique no boto View T-SQL. Sero exibidos os
comandos T-SQL que sero executados, quando a tarefa for executada. Clique em Close para fechar a
janela de comandos T-SQL. Clique em OK para fechar a janela de propriedades do job.
Para fazer com que todas as tarefas do plano de manuteno sejam executadas, imediatamente, basta
clicar no plano de execuo com o boto direito do mouse e, no menu de opes que exibido, clicar
em Execute. Para acessar o histrico de execuo, clique com o boto direito do mouse e, no menu de
opes que exibido, clique em View History.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000375
Figura 7.6 Propriedades do plano de manuteno.
Figura 7.7 Podemos ver os diversos jobs criados pelo plano de manuteno.
25. Feche o SQL Server Management Studio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3760000Curso Completo
O assistente para criao de um plano de manuteno um bom auxiliar para ajudar na criao de
planos de manuteno bsicos. Claro que, depois que voc j for um DBA mais experiente, mais rodado,
voc, provavelmente, utilizar o assistente apenas como um ponto de partida. Depois, com base na sua
experincia, ir personalizar as tarefas criadas pelo assistente e, at mesmo, criar novas tarefas.
KNOW-HOW EM: COMANDOS DBCC DATABASE CONSISTENCY CHECKER
PR-REQUISITOS
Noes sobre o log de transaes.
Fundamentos apresentados na Parte I.
Saber utilizar a janela para execuo de comandos T-SQL.
METODOLOGIA
Apresentao dos principais comandos DBCC.
No SQL Server 2005, atravs da linguagem T-SQL, temos uma srie de comandos para manuteno e
otimizao de tabelas e ndices, comandos estes conhecidos como 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 e de seus elementos, tais como tabelas e ndices. Em muitas situaes, o comando, alm de fazer
a verificao, capaz de corrigir os problemas encontrados.
Podemos dividir os comandos DBCC em quatro categorias, conforme descrito na Tabela 7.1.
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.
Tabela 7.1 Categorias para os comandos DBCC.
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:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000377
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)
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 apstrofos, 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)
Importante: O comando DBCC DBREINDEX ser descontinuado nas futuras verses do SQL Server.
importante que voc conhea este comando, para poder entender cdigos e scripts j existentes, porm
no recomendado que voc utilize o comando DBCC DBREINDEX, na criao de novos scripts e
cdigos. Ao invs do comando DBCC DBREINDEX, voc deve utilizar o comando ALTER INDEX, o
qual descreverei logo a seguir.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3780000Curso Completo
COMANDO ALTER INDEX
Utilizamos este comando para alterar os ndices de uma tabela ou view (quer seja de dados relacionais
ou no padro XML). O comando ALTER INDEX pode ser utilizado para desabilitar um ndice, reorganizar
ou recriar um ndice. Este comando tambm pode ser utilizado para configurar opes de um ndice.
Para poder executar o comando ALTER INDEX voc deve ter, no mnimo, permisso de alterao
ALTER, na tabela ou view qual pertence o ndice que est sendo alterado. Esta permisso garantida,
por padro, para a role de servidor sysadmin e para as roles de banco de dados db_ddladmin e db_owner.
O comando ALTER INDEX no pode ser utilizado para particionar um ndice ou para mover um ndice
de um filegroup para outro. Este comando tambm no pode ser utilizado para alterar a definio de
um ndice, tal como adicionar ou excluir colunas do ndice ou alterar a ordem das colunas, no ndice.
Para executar estas operaes voc deve executar o comando CREATE INDEX, com a opo DROP
EXISTING.
A seguir apresento alguns exemplos de uso do comando ALTER INDEX.
No exemplo a seguir, utilizo o comando ALTER INDEX, para recriar o ndice NmeroPedido_PK, da
tabela dbo.Pedidos, do banco de dados NorthWind.
USE NorthWind;
GO
ALTER INDEX NmeroPedido_PK ON dbo.Pedidos
REBUILD;
GO
A seguir apresento um exemplo do Books Online, onde o comando ALTER INDEX utilizado para
alterar diversas opes de um ndice. Este comando define as opes STATISTICS_NORECOMPUTE,
IGNORE_DUP_KEY e ALLOW_PAGE_LOCKS, do ndice:
USE AdventureWorks;
GO
ALTER INDEX AK_SalesOrderHeader_SalesOrderNumber ON
Sales.SalesOrderHeader
SET (
STATISTICS_NORECOMPUTE = ON,
IGNORE_DUP_KEY = ON,
ALLOW_PAGE_LOCKS = ON
) ;
GO
Daria para escrever um captulo inteiro s sobre o comando ALTER INDEX. Mas nada do que eu possa
escrever aqui acrescentarei em relao ao que j tem no Books Online. Por isso, para uma referncia
completa sobre todas as opes do comando ALTER INDEX e dezenas de outros exemplos de uso deste
comando, consulte o BOOKS ONLINE. Voc ver que, na prtica, todos os comandos DBCC que eram
utilizados para alterar ndices podem ser substitudos pelas opes do comando ALTER INDEX.
COMANDO DBCC DBREPAIR
Este comando era utilizado, nas verses anteriores do SQL Server, para excluir um Banco de Dados
danificado. Este comando somente era fornecido para compatibilidade com verses anteriores do SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000379
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 2002. No SQL Server 2005 no existe mais
suporte para este comando. Ao invs do comando DBCC DBREPAIR, voc utiliza o comando DROP
DATABASE, j descrito no Captulo 3.
COMANDO DBCC INDEXDEFRAG
Utilizamos este comando para desfragmentar Clustered e Secondary indexes de uma tabela. Este
comando tambm ser descontinuado em futuras verses do SQL Server. Ao invs do comando DBCC
INDEXDEFRAG, voc pode utilizar o comando ALTER INDEX, conforme mostrarei mais adiante.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3800000Curso Completo
Sintaxe conforme Books OnLine:
DBCC SHRINKDATABASE
( database_name [ , target_percent ]
[ , { 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)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000381
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:
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)
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
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3820000Curso Completo
COMANDO DBCC UPDATEUSAGE
Este comando informa e corrige erros nas informaes e estatsticas sobre o espao utilizado em disco.
Estes erros 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 nas informaes e estatsticas de uso de espao em disco, 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.
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):
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000383
N
O
T
A
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 correes 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.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3840000Curso Completo
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.8 so exibidas as primeiras linhas retornadas como resultado do comando anterior.
Figura 7.8 Execuo do comando DBCC SHOWCONTIG com a opo ALL_INDEXES.
Tambm poderamos retornar as informaes sobre a fragmentao em uma nica tabela, conforme o
exemplo a seguir, onde retornamos informaes sobre a fragmentao na tabela Orders do Banco de
Dados Northwind:
USE Northwind
DBCC SHOWCONTIG (Orders)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000385
N
O
T
A
N
O
T
A
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 por este comando, 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 a janela de execuo de comandos T-SQL ou o SQL Server
Management Studio, estamos estabelecendo uma conexo com uma instncia do servidor SQL Server
2005. O comando DBCC USEROPTIONS retorna uma srie de informaes sobre esta conexo.
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3860000Curso Completo
PRINCIPAIS COMANDOS DBCC DE VALIDAO
COMANDO DBCC CHECKDB
Faz a verificao da alocao do espao nas pginas de dados 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 ] ]
}
]
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 AdventureWorks.
Use AdventureWorks
DBCC CHECKDB
Ao ser executado com sucesso, este comando emite uma longa mensagem. As primeiras linhas desta
mensagem esto indicadas a seguir:
DBCC results for AdventureWorks.
Service Broker Msg 9675, Level 10, State 1: Message Types analyzed: 13.
Service Broker Msg 9676, Level 10, State 1: Service Contracts analyzed: 5.
Service Broker Msg 9667, Level 10, State 1: Services analyzed: 3.
Service Broker Msg 9668, Level 10, State 1: Service Queues analyzed: 3.
Service Broker Msg 9669, Level 10, State 1: Conversation Endpoints analyzed: 0.
Service Broker Msg 9674, Level 10, State 1: Conversation Groups analyzed: 0.
Service Broker Msg 9670, Level 10, State 1: Remote Service Bindings analyzed: 0.
DBCC results for sys.sysrowsetcolumns.
There are 1257 rows in 10 pages for object sys.sysrowsetcolumns.
DBCC results for sys.sysrowsets.
There are 239 rows in 2 pages for object sys.sysrowsets.
DBCC results for sysallocunits.
There are 493 rows in 6 pages for object sysallocunits.
DBCC results for sys.sysfiles1.
There are 2 rows in 1 pages for object sys.sysfiles1.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000387
N
O
T
A
N
O
T
A
DBCC results for sys.syshobtcolumns.
There are 1257 rows in 11 pages for object sys.syshobtcolumns.
DBCC results for sys.syshobts.
There are 239 rows in 2 pages for object sys.syshobts.
DBCC results for sys.sysftinds.
There are 0 rows in 0 pages for object sys.sysftinds.
DBCC results for sys.sysserefs.
There are 493 rows in 3 pages for object sys.sysserefs.
DBCC results for sys.sysowners.
There are 29 rows in 1 pages for object sys.sysowners.
DBCC results for sys.sysprivs.
There are 13 rows in 1 pages for object sys.sysprivs.
DBCC results for sys.sysschobjs.
There are 536 rows in 10 pages for object sys.sysschobjs.
DBCC results for sys.syscolpars.
There are 1052 rows in 19 pages for object sys.syscolpars.
DBCC results for sys.sysnsobjs.
There are 7 rows in 1 pages for object sys.sysnsobjs.
DBCC results for sys.syscerts.
There are 0 rows in 0 pages for object sys.syscerts.
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 (AdventureWorks, 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 ] ]
}
]
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3880000Curso Completo
N
O
T
A
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.
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 (?)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000389
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.
KNOW-HOW EM: IMPORTAO E EXPORTAO DE DADOS
COM O DTS DATA TRANSFORMATION SERVICES
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Saber utilizar o SQL Server Management Studio.
METODOLOGIA
Aprender a utilizar o DTS Import and Export Wizard.
TCNICA
Importar e exportar dados utilizando o DTS.
Com o SQL Server 2005 podemos, facilmente, importar e exportar dados que esto em outros formatos,
como por exemplo:
Dados do Microsoft Access.
Dados no formato Dbase (.dbf).
Dados no formato de planilhas do Excel (.xls).
Dados no formato de arquivos de texto delimitado ou largura fixa (.txt).
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. As instncias podem ser todas do SQL Server 2005, ou de diferentes verses do SQL Server
2005. Por exemplo, voc pode importar dados de um banco de dados de uma instncia do SQL Server
2000 ( um dos exemplos que faremos neste captulo) para uma instncia do SQL Server 2005.
Para ilustrar estas capacidades faremos alguns exemplos prticos, onde importaremos e exportaremos
dados. Para situaes em que seja necessria a integrao com fontes mais complexas, como por exemplo
dados armazenados no Mainframe, devemos utilizar o Business Intelligence Development Studio. Neste
item, trataremos 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3900000Curso Completo
N
O
T
A
Exemplo prtico: Neste exemplo vamos criar um novo Banco de Dados chamado ImportAccess, na
instncia SERVIDOR\SQL2005. Depois vamos importar algumas tabelas de um banco de dados do
Access, para dentro deste Banco de Dados.
Procedimento 1 Criar na instncia SERVIDOR\SQL2005 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.
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 o Banco de Dados ImportAccess, na instncia SERVIDOR\SQL2005, siga os passos indicados
a seguir:
1. Abra o SQL Server Management Studio.
2. Na janela Object Explorer, clique com o boto direito do mouse na instncia SERVIDOR\SQL2005
e, no menu de opes que exibido, clique em New Query. Ser aberta a janela para execuo de
comandos T-SQL, com a qual voc j trabalhou diversas vezes neste livro.
Importante: Antes de executar os comandos indicados a seguir, a pasta C:\Livrosql\ImportAccess j deve ter sido criada, se no os comandos
no sero executados e ser gerada uma mensagem de erro. Verifique se a pasta C:\Livrosql\ImportAccess j existe. Caso esta pasta ainda
no exista, crie a pasta, antes de executar os comandos indicados no prximo passo.
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
***************************
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000391
N
O
T
A
(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:
Command(s) completed successfully.
4. Feche a janela de execuo de comandos e feche o SQL Server Management Studio.
Procedimento 2: Importar as tabelas do Banco de Dados C:\Meus Documentos\Northwind.mdb,
no formato do Microsoft Access XP, para o Banco de Dados ImportAccess, recm-criado na instncia
SERVIDOR\SQL2005 do SQL Server 2005. Voc pode utilizar qualquer banco de dados do Access
disponvel no seu computador. Eu estou utilizando, por questes de facilidade, o banco de dados
NorthWind.mdb, que um banco de dados de exemplos, que automaticamente instalado
junto com o Microsoft Access.
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 estes nomes aparecerem nos procedimentos prticos deste exerccio.
Para importar as tabelas do Banco de Dados C:\Meus documentos\NorthWind.mdb, para o banco de
dados ImportAccess, da instncia SERVIDOR\SQL2005, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio.
2. Navegue at a opo Databases da instncia SERVIDOR\SQL2005.
3. D um clique no sinal de + ao lado da opo Databases, para exibir os bancos de dados
disponveis. O banco de dados ImportAccess j deve estar sendo exibido, conforme
exemplificado na Figura 7.9. Se o banco de dados ainda no estiver sendo exibido, pressione a
tecla F5 para atualizar a listagem.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3920000Curso Completo
Figura 7.9 O banco de dados ImportAccess, recm-criado.
4. D um clique no sinal de + ao lado de ImportAccess e depois d um clique no sinal de + ao lado
da opo Tables. Observe que somente existem as chamadas tabelas do sistema System Tables,
aquelas criadas automaticamente pelo SQL Server 2005, 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.10 podemos ver as tabelas que sero importadas.
Figura 7.10 Tabelas do arquivo Northwind.mdb.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000393
N
O
T
A
5. D um clique com o boto direito do mouse no Banco de Dados ImportAccess. Nas opes que
surgem, clique no comando Tasks -> Impor Data. Ser aberto o Data Transformation Services
Import/Export Wizard.
6. A primeira tela do assistente apenas informativa. D um clique no boto Next, seguindo para
a prxima etapa do assistente.
Na segunda etapa devemos selecionar qual o formato dos dados a serem importados. Por padro vem
selecionado, na lista Data Source, o drive para Microsoft OLE DB Provider for SQL Server. Mas existe a
possibilidade de se importar dados de vrias outras fontes, como por exemplo:
Dbase III, IV e V.
Microsoft Access.
Microsoft Excel 3, 4, 5, 97 e 2000.
Paradox 3, 4 e 5.
Fox Pro.
Visual Fox Pro.
ORACLE.
Arquivos de texto.
7. Nesta lista Data source selecione a opo Microsoft Access, pois vamos importar dados de um
arquivo .mdb, que um Banco de Dados do Access. Observe que as demais opes desta etapa
se modificam, para que voc possa informar onde est o banco de dados do Access, a partir do
qual sero importados os dados.
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.
8. No campo File Name, digite C:\Meus documentos\Northwind.mdb. Deixe os campos Username
e Password em branco, pois este Banco de Dados no est protegido. Voc tambm pode utilizar
o boto Browse, 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.11.
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.
9. D um clique no boto Next, para ir prxima etapa do assistente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3940000Curso Completo
Figura 7.11 Definindo a origem dos dados.
10. 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
(da instncia SERVIDOR\SQL2005) e selecionando o comando Tasks -> Import data, o banco
de dados ImportAccess e a instncia SERVIDOR\SQL2005 j vm selecionados,
automaticamente. Aceite esta seleo, pois justamente o que queremos: importar as tabelas
do Banco de Dados Northwind.mdb do Access, para o Banco de Dados ImportAccess da instncia
SERVIDOR\SQL2005 do SQL Server 2005. Nesta tela, poderamos definir um outro Banco de
Dados como o destino, caso fosse necessrio.
O mais interessante que o Banco de Dados de destino no precisa, obrigatoriamente, ser um Banco de
Dados do SQL Server 2005. 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. Nesta etapa voc tambm define qual o tipo de autenticao
que est sendo utilizado, pela instncia onde est o banco de dados de destino.
Na lista Server podemos selecionar a instncia do SQL Server, na qual est o Banco de Dados de destino.
11. Certifique-se de que na lista Server esteja selecionada a opo SERVIDOR\SQL2005, e na lista
Database esteja selecionada a opo ImportAccess, conforme indicado na Figura 7.12.
12. D um clique no boto Next, para ir para a prxima etapa do assistente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000395
Figura 7.12 Definindo o banco de dados de destino.
Nesta etapa, com base nos formatos de origem e destino selecionados, temos duas opes:
Copy data from one or more tables or views: Esta opo exibir, na prxima etapa, uma
listagem das tabelas e consultas (views), do arquivo de origem (no nosso exemplo C:\Meus
documentos\NorthWind.mdb). Salientando o que foi dito anteriormente, somente podemos
importar tabelas e consultas, no sendo possvel importar os demais objetos de um banco de
dados do Access, tais como formulrios, relatrios e pginas de 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. A grade a ser exibida praticamente igual grade para criao de consultas no Access,
onde voc arrasta tabelas, campos e define critrios de filtragem.
13. Certifique-se de que a opo Copy data from one or more tables or views esteja selecionada.
14. D um clique no boto 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 uma pequena
tabela, j para consultas o cone a figura de um pequeno quadrado com setas para fora, sobrepondo
a figura de uma pequena tabela. Ao selecionar uma tabela ou consulta, voc pode clicar no boto
Preview, que ser exibida uma listagem dos dados do objeto selecionado.
15. Certifique-se de que todas as tabelas estejam selecionadas, conforme indicado na Figura 7.13.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3960000Curso Completo
Figura 7.13 Selecionando todas as tabelas do Banco de Dados de origem NorthWind.mdb.
16. D um clique no boto Next, para ir para a prxima etapa do assistente.
Nesta etapa, temos as seguintes opes:
Run Immediately: Esta opo faz com que a importao seja executada imediatamente aps
finalizarmos o assistente.
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
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, ele ser programado para execuo
diria meia-noite (00:00:00 h).
Tambm podemos salvar as definies de importao, selecionando a opo Save DTS Package. Temos dois
formatos possveis para salvar as configuraes do pacote DTS: SQL Server storage e DTSX File storage.
17. Certifique-se de que apenas a opo Run Immediately esteja selecionada, e d um clique no
boto Next, para seguir para a prxima etapa do assistente.
Voc estar na tela final do assistente, onde apresentado um resumo das opes selecionadas durante
as etapas anteriores do assistente. Caso voc queira alterar alguma opo s utilizar o boto Back.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000397
Figura 7.14 A importao em andamento.
19. Ao final do processo de importao, voc estar de volta janela de progresso indicada na
Figura 7.14. D um clique no boto Close para fech-la.
20. Voc estar de volta ao SQL Server Management Studio. D um clique no sinal de + ao lado do
Banco de Dados ImportAccess para exibir as opes deste banco de dados.
21. D um clique no sinal de + ao lado da opo Tables, para exibir uma listagem das tabelas do
Banco de Dados ImportAccess. Observe, na Figura 7.14, as sete tabelas que foram importadas
do Banco de Dados Northwind.mdb. Se as tabelas no estiverem sendo exibidas, clique na
opo Tables, para selecion-la e pressione a tecla F5, para atualizar a listagem de tabelas, do
banco de dados ImportAccess.
22. Feche o SQL Server Management Studio.
18. Para encerrar o assistente e fazer a importao, d um clique no boto Finish.
O SQL Server 2005 exibe uma janela com o progresso da importao, conforme mostra a Figura 7.14.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
3980000Curso Completo
Figura 7.15 Tabelas importadas do Banco de Dados NorthWind.mdb.
EXPORTANDO DADOS DO SQL SERVER 2005 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 uma 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; no segundo exemplo, para o formato de um arquivo de dados do Dbase III.
Exemplo prtico: Exportar as tabelas Pedidos, Detalhes do pedido e Clientes, do Banco de Dados
ImportAccess, da instncia SERVIDOR\SQL2005, para uma planilha do Excel. A planilha ser gravada
na pasta C:\Meus documentos, com o nome de ExportadoDoSQLServer.xls.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000399
Importante: Quando exportamos dados para uma planilha do Excel necessrio que o arquivo j tenha sido criado previamente. Caso o
arquivo C:\Meus documentos\ ExportadoDoSQLServer.xls no exista, crie este arquivo, pois se no ser gerado um erro, durante a execuo
do assistente de exportao.
Procedimento: Para exportar as tabelas Pedidos, Detalhes do pedido e Clientes, do Banco de Dados ImportAccess,
da instncia SERVIDOR\SQL2005, para uma planilha do Excel, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio.
2. Navegue at a opo Databases da instncia SERVIDOR\SQL2005.
3. D um clique no sinal de + ao lado da opo Databases, para exibir os bancos de dados
disponveis. O banco de dados ImportAccess deve estar sendo exibido na listagem.
4. D um clique com o boto direito do mouse no Banco de Dados ImportAccess. Nas opes que
surgem, clique no comando Tasks -> Export Data. Ser aberto o Data Transformation Services
Import/Export Wizard.
5. A primeira tela do assistente apenas informativa. D um clique no boto Next, seguindo para
a prxima etapa do assistente.
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: 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.
Microsoft Excel 3, 4, 5, 97 e 2000.
Paradox 3, 4 e 5.
Fox Pro.
Visual Fox Pro.
ORACLE.
Arquivos de texto.
6. Como estamos exportando dados do SQL Server 2005, 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, de acordo com a fonte de dados escolhida. No caso de uma
fonte do Microsoft OLE DB Provider for SQL Server, devemos definir a instncia e 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 ImportAccess, da instncia SERVIDOR\SQL2005, estas informaes j vm
selecionadas, automaticamente.
N
O
T
A
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4000000Curso Completo
7. Para autenticao marque a opo Use Windows Authentication. D um clique no boto Next,
para ir prxima etapa do assistente.
8. Nesta etapa devemos definir para qual formato e para qual arquivo, se for o caso, os dados
sero exportados. Na lista Destination selecione: Microsoft Excel 97-2000. No campo File Name
digite: C:\Meus documentos\ ExportadoDoSQLServer.xls. Sua tela deve estar conforme indicado
na Figura 7.16.
Figura 7.16 Definindo o formato e o arquivo de destino dos dados.
9. D um clique no boto Next, para ir para a prxima etapa do assistente.
Nesta etapa, com base nos formatos de origem e destino selecionados, temos duas opes:
Copy data from on or more tables or views: Esta opo exibir, na prxima etapa, uma listagem
das tabelas e consultas (views) do banco de dados de origem.
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.
10. Certifique-se de que a opo Copy data from on or more tables or views esteja selecionada,
e clique em Next para seguir para a prxima etapa do assistente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000401
Nesta etapa devemos selecionar as tabelas e consultas a serem exportadas. No nosso exemplo
selecionaremos apenas as tabelas Pedidos, Detalhes do Pedido e Clientes. tambm importante observar
que o banco de dados no tem views, somente tabelas. 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\
ExportadoDoSQLServer.xls. Na coluna Destination voc pode alterar o nome que ser atribudo a cada
planilha. Por padro, atribudo o nome da tabela de origem.
11. Certifique-se de que as tabelas Pedidos, Detalhes do Pedido e Clientes estejam selecionadas.
Clique no boto Next, para ir para a prxima etapa do assistente.
Nesta etapa, temos as seguintes opes:
Run Immediately: Esta opo faz com que a exportao seja executada imediatamente aps
finalizarmos o assistente.
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 opes. Por exemplo, podemos executar a
importao imediatamente (Run Immediately) e tambm agendar a importao para ocorrer em
perodos determinados. Se selecionarmos esta opo, podemos utilizar o boto Edit Schedule
para alterar o agendamento. Se o agendamento no for alterado, ele ser programado para execuo
diria meia-noite (00:00:00 h).
Tambm podemos salvar as definies de exportao, selecionando a opo Save DTS Package.
12. Certifique-se de que apenas a opo Run Immediately esteja selecionada, e d um clique no
boto Next, seguindo para a prxima etapa do assistente.
13. Voc estar na tela final do assistente, onde apresentado um resumo das opes selecionadas.
Caso voc queira alterar alguma opo, s utilizar o boto Back. Para iniciar a exportao, d
um clique no boto Finish.
O SQL Server 2005 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.17.
14. D um clique no boto Close para fechar esta janela.
15. Voc estar de volta ao SQL Server Management Studio. Feche-o.
Abra o Excel e abra o arquivo C:\Meus documentos\ExportadoDoSQLServer.xls. Na Figura 7.18,
podemos ver que as tabelas Pedidos, Detalhes do Pedido e Clientes foram exportadas para o arquivo do
Excel e que cada tabela foi exportada para uma planilha com o nome da tabela.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4020000Curso Completo
Figura 7.17 Exportao concluda com sucesso.
Figura 7.18 Dados na planilha do Excel.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000403
KNOW-HOW EM: MONITORAO DE DESEMPENHO
NO SQL SERVER 2005
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Noes bsicas de hardware.
Noes bsicas do Windows 2000 Server ou Windows Server 2003.
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
um sistema de discos lentos. Neste caso, o sistema de discos ir limitar o desempenho do seu servidor.
Chamamos o elemento limitador de gargalo do sistema, porm o termo mais conhecido o termo
em ingls: Bottleneck. 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 se 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 2005, em busca de
informaes que nos ajudem a mant-lo com um desempenho satisfatrio.
A monitorao uma maneira de o administrador acompanhar o aumento de carga em um ou mais
servidores da rede, acompanhando qual a ocupao/utilizao dos principais elementos de hardware,
tais como memria, processadores, interfaces de rede e sistemas de disco. Com o acompanhamento da
carga de trabalho em cada um destes elementos, o administrador pode fazer uma estimativa, com
antecedncia, de quando ser necessrio o upgrade de um ou mais destes elementos de hardware, como
por exemplo adicionar mais memria RAM, trocar a placa controladora de discos por uma mais rpida e
assim por diante. Se o administrador no tem este acompanhamento, o que acontece que chega-se a
um ponto onde os servios e o acesso aos sistemas tornam-se lentos e os usurios comeam a reclamar.
Neste ponto o administrador no sabe exatamente o que est acontecendo (apenas suspeita que pode ser
sobrecarga em um ou mais dos itens de hardware do servidor). Como o administrador no fez a lio de
casa, isto , no fez um monitoramento preventivo, ter que tentar descobrir quais os elementos de
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4040000Curso Completo
hardware que esto sobrecarregados, apresentar um relatrio solicitando recursos, encomendar o hard-
ware necessrio para finalmente providenciar a troca. Ou seja, tudo na base do improviso, da pressa.
Definitivamente esta no uma boa maneira de trabalhar e administrar a sua rede.
O monitoramento sistemtico, isto , com regras bem definidas e com uma metodologia de
monitoramento, faz com que o administrador trabalhe de uma maneira proativa (um amigo meu diria
que este termo chique), sempre prevendo com boa antecedncia as necessidades de upgrade de
hardware, evitando com isso que se chegue ao ponto em que o desempenho caia exponencialmente e
os usurios comecem a reclamar. Outro fator que tem que ser considerado que se chega a um ponto
onde o limite do servidor atingido, ou seja, no mais possvel expandir a memria, no possvel
adicionar novos processadores e assim por diante. Nestas situaes faz-se necessria a troca do servidor
por outro com maiores capacidades. Mais uma vez fica clara a importncia do monitoramento para
prever, com uma boa antecedncia, uma necessidade de troca de servidor. Principalmente porque
servidor e hardware de servidor no como hardware de PC, que voc encontra a pronta entrega no
mercado. Normalmente hardware de servidor feito sob encomenda e demora alguns dias (ou at
semanas) para estar disponvel. Se o administrador no prever com uma boa antecedncia a necessidade
de troca, corre o risco de ter que conviver durante semanas com um ou mais servidores que no
atendem as demandas dos usurios, com um desempenho sofrvel e, o que o pior, com um telefone
que no pra de tocar, com usurios reclamando (e com toda a razo) do desempenho do sistema.
Neste tpico voc aprender a utilizar o console para monitorao de desempenho, de forma a
acompanhar a taxa de utilizao dos principais elementos do sistema. Mostrarei uma srie de assuntos
relacionados com o monitoramento, otimizao e manuteno do Windows Server 2003 (os exemplos
sero baseados no Windows Server 2003, porm se aplicam, praticamente sem modificaes, ao Win-
dows 2000 Server). Com os conceitos e exemplos prticos vistos neste tpico, voc ter condies de
fazer um monitoramento dos servidores, atuando de maneira proativa.
Monitorar a utilizao dos principais recursos de um servidor uma tarefa importante para o
administrador do servidor, principalmente em servidores que esto sendo utilizados para o
compartilhamento de recursos (por ex. arquivos e impressoras, bancos de dados do SQL Server, sites
baseados no IIS e assim por diante) na rede. O desempenho de um servidor fica seriamente comprometido
se um dos seguintes elementos estiver sobrecarregado:
Memria RAM.
Processador.
Interface de rede.
Sistema de discos.
Neste tpico mostrarei como utilizar o console Desempenho, para acompanhar a taxa de ocupao de
cada um destes elementos. Tambm mostrarei como configurar o Windows Server 2003 para que faa
a coleta automtica, em perodos definidos, da taxa de ocupao de determinados elementos, de tal
maneira que voc possa ter uma idia da utilizao destes elementos em condies normais de trabalho.
Com este acompanhamento voc tambm ter condies de verificar a evoluo nas taxas de utilizao
de cada um dos elementos que esto sendo monitorados. Assim, quando um determinado elemento
tiver a sua taxa de utilizao constantemente aumentada, possvel agir preventivamente, normalmente
providenciando a substituio do elemento, como por exemplo a instalao de um processador mais
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000405
rpido ou de uma quantidade adicional de memria RAM ou a substituio de discos IDE por um
sistema de discos SCSI.
Em alguns livros e na documentao oficial do Windows Server 2003, o console Performance tambm
chamado de System Monitor (Monitor do Sistema). Neste captulo utilizarei os termos System Moni-
tor ou console Performance como sinnimos.
Para monitorar estes elementos, utilizamos o console Desempenho: Iniciar -> Todos os 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%.
Alm da memria RAM, Interface de rede, Sistema de discos e Processador, existem diversos outros
elementos que podem prejudicar o desempenho de um servidor, como um todo, porm estes quatro
so os mais importantes. Podem existir situaes, por exemplo, em que a utilizao da memria RAM
e do Processador esteja baixa, porm o Sistema de discos esteja sobrecarregado e, neste caso, o
desempenho do sistema como um todo fica bastante prejudicado. Dependendo do tipo de funo que
o servidor est exercendo, um recurso de hardware pode ter mais ou menos influncia no desempenho
como um todo. Por exemplo, servidores de banco de dados, como o caso de um servidor com uma ou
mais instncias do SQL Server 2005, so muito dependentes de bons processadores e de uma boa
quantidade de memria RAM; j servidores de arquivos dependem mais de um bom sistema de disco e
de uma conexo rpida com a rede.
Dependendo do papel que o servidor esteja desempenhando na rede, a utilizao de cada um
destes componentes ser maior ou menor. Por exemplo, computadores que atuam como servidores
de Banco de dados (com o Microsoft SQL Server, por exemplo) ou servidores de aplicao (como o
Microsoft Transaction Server, por exemplo) fazem um uso muito intensivo dos processadores. Neste
caso pode ser recomendvel, dependendo do nmero de usurios, a utilizao de servidores
multiprocessados. J no caso de servidores de arquivos, a utilizao da interface de rede e do sistema
de discos pode ser bastante elevada; neste caso a utilizao de placas mais velozes ou at mesmo de
mais de uma placa de rede e de sistemas de discos mais rpidos pode ser uma soluo para melhorar
o desempenho.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4060000Curso Completo
A monitorao do desempenho ajuda a determinar qual o componente que est sendo o principal
limitador do desempenho do sistema (o gargalo do sistema), alm de permitir a anlise da carga de
trabalho qual o respectivo componente est submetido (por exemplo, o processador est com 80%
de utilizao, o sistema de discos est constantemente com dados na fila de espera para leitura e
gravao e assim por diante). O administrador tambm pode utilizar a monitorao do desempenho
para fazer uma estimativa do crescimento na utilizao dos componentes do sistema. Com isso fica
mais fcil fazer uma previso sobre as necessidades futuras de atualizaes de hardware. Alm disso, de
posse de dados de monitorao consistentes, fica mais fcil justificar o gasto envolvido na aquisio e
atualizao de componentes de hardware.
Conforme mostrarei nos prximos itens, a monitorao feita atravs do console Desempenho, tambm
conhecido como System Monitor. Este console acessado atravs da opo Desempenho, no menu
Ferramentas administrativas. No console de desempenho voc adiciona Objetos a serem monitorados.
Um exemplo de objeto pode ser um Processador, Memria, Disco fsico, Fila de impresso, etc. Um
objeto representa um elemento que pode ser monitorado pelo Windows. Para cada objeto, esto
disponveis vrios contadores que so indicativos da utilizao dos recursos do respectivo objeto. Por
exemplo para o objeto Processador, dentre outros, existem os seguintes contadores: Porcentagem de
tempo do processador, Interrupes por segundo e assim por diante. Para o objeto Fila de impresso,
existem os contadores Total de pginas impressas, Trabalhos no spool, e assim por diante.
Vrios objetos e seus respectivos contadores so instalados durante a instalao do Windows. medida
que novos servios ou aplicativos so instalados, novos objetos e contadores so adicionados. Por
exemplo, ao instalar o Microsoft SQL Server, novos objetos so adicionados. Outro exemplo, quando
instalado o servidor Web IIS, novos objetos so adicionados e assim por diante.
Saber exatamente quais objetos e quais contadores utilizar um processo que envolve testes e muita
pacincia. Somente com a experincia que o administrador saber quais contadores observar para
verificar a existncia de problemas de desempenho.
A otimizao do desempenho um processo contnuo. Muitas vezes em uma primeira anlise, o
administrador descobre que um dos componentes est sendo o gargalo do sistema, por exemplo, a memria
RAM. A mais memria RAM acrescentada ao servidor. Pode ser que outro componente passe a ser o
gargalo, por exemplo a placa de rede ou o processador. Monitorar e otimizar o desempenho um desafio
bastante grande, porm uma necessidade. No possvel simplesmente trocar de equipamento toda
vez que houver problemas de desempenho, pois isso seria um desperdcio de dinheiro.
Tambm possvel configurar o console Desempenho para que seja feita a captura de dados
automaticamente. O administrador pode configurar a captura de dados para que seja feita a captura
apenas de determinados contadores de determinados objetos, ou seja, somente aqueles contadores
que interessam ao administrador. Com base nesta captura possvel verificar os limites normais de
operao para componentes como o processador, memria RAM e assim por diante. Entenda-se por
limites normais de operao as taxas de utilizao dos diversos componentes de hardware e software,
durante o horrio normal de expediente. Depois faz-se o agendamento de um monitoramento contnuo
e compara-se os resultados obtidos com os limites de operao obtidos durante a primeira captura.
Quando um determinado componente comear a apresentar aumento na sua taxa de utilizao deve
ser verificado o motivo para este aumento e, se for o caso, providenciar a substituio do dispositivo
antes que a sua taxa de utilizao atinja limites que possam comprometer o desempenho do servidor.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000407
N
O
T
A
No prximo tpico voc aprender a utilizar o console Performance (Desempenho), atravs de
exemplos prticos.
MONITORANDO O PROCESSADOR E A MEMRIA DO SEU SERVIDOR
Neste item voc aprender a utilizar o console Desempenho. Tambm ver como monitorar alguns
contadores dos objetos Memria e Processador. Apresentarei diversos detalhes sobre a utilizao da
interface e das funcionalidades do console Desempenho. O console Desempenho j vem configurado
para carregar o snap-in para medio de desempenho.
No Windows NT Server 4.0 existe um programa chamado Performance Monitor, o qual utilizado para a monitorao de desempenho. A partir
do Windows 2000 est disponvel o console Desempenho, o qual tambm est disponvel no Windows XP e no Windows Server 2003.
Exemplo: Monitorando o uso da memria e do processador Windows Server 2003.
Para utilizar o console Desempenho, para monitorar a memria e o processador, siga os seguintes passos:
1. Faa o logon como administrador, ou com uma conta com permisso de administrador.
2. Abra o console Desempenho: Iniciar -> Ferramentas administrativas -> Desempenho.
3. Ser aberto o console Desempenho, conforme indicado na Figura 7.19:
Figura 7.19 O console para monitorao do desempenho.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4080000Curso Completo
N
O
T
A
Observe que, por padro, os seguintes contadores j esto adicionados e sendo monitorados:
O contador Pages/sec do objeto Memory.
Comprimento mdio de fila de disco (Avg. Disk Queue Length) do objeto Physical Disk.
O objeto %Tempo do processador (%Processor Time) do objeto Processor.
Os grficos que vo sendo desenhados na tela do console indicam os valores associados com cada um dos contadores. No exemplo da
Figura 7.19 a taxa de ocupao do processador chegou a picos de 100% mas, na mdia, estava abaixo dos 20%.
Para o exemplo proposto voc ir excluir os contadores que foram adicionados automaticamente pelo
Windows e ir adicionar outros contadores.
4. Clique no contador Pginas/sec (na parte de baixo do painel, abaixo do grfico, onde aparece a
lista de contadores) e pressione a tecla Delete. Repita a operao para excluir os demais contadores.
5. Neste console, no painel da esquerda, exibida a opo Monitor do sistema, que a opo
utilizada para adicionar novos contadores para os objetos a serem monitorados, no nosso
exemplo a memria e o processador. A opo Logs e alertas de desempenho ser vista nos
prximos itens.
6. D um clique na opo Monitor do Sistema, para selecion-la.
Figura 7.20 Janela para adicionar os contadores a serem monitorados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000409
N
O
T
A
N
O
T
A
7. D um clique no boto Adicionar na barra de ferramentas boto com um sinal de + na
barra de ferramentas ou pressione Ctrl+I. Ser exibida a janela Adicionar contadores, na
qual voc pode selecionar objetos e adicionar os contadores a serem monitorados, conforme
indicado na Figura 7.20.
Na lista Objeto de desempenho, por padro j vem selecionado o objeto Processador. Nesta lista voc
pode selecionar um objeto para o qual sero adicionados contadores a serem monitorados. Ao selecionar
um objeto na lista de objetos, na lista Selecionar contadores na lista, sero exibidos os contadores
relacionados ao objeto selecionado. Um mesmo contador pode ter uma ou mais instncias. Por exemplo,
ao selecionar o contador % tempo de processador, em um computador com dois processadores, na
lista Selecionar instncias na lista, sero exibidas as duas instncias do referido contador, uma para
cada processador. Voc pode monitorar somente uma das instncias ou ambas.
Um detalhe interessante que, no mesmo console, voc pode monitorar contadores de um ou mais servidores. Por exemplo, voc pode
monitorar a utilizao do processador de dois ou mais servidores da rede, utilizando um nico console Desempenho. Para isso, na janela da
Figura 7.20, digite o nome do computador no campo Selecionar contadores do computador. Digite o nome do computador no formato
\\NomeDoComputador. Ao digitar o nome e pressionar Enter sero exibidos os objetos do referido servidor. Selecione um ou mais contadores.
Voc pode fazer isso para os diversos servidores que sero monitorados simultaneamente. Com isso, em um mesmo console, voc poder
monitorar contadores de diferentes servidores da sua rede.
8. Certifique-se de que o objeto Processador esteja selecionado na lista de Objetos. Na caixa de listagem
Selecionar contadores na lista, marque o contador % tempo de processador. Para ver uma explicao
detalhada sobre o que significa este contador, d um clique no boto Explicar. Ser exibida uma
janela com a descrio do contador selecionado, conforme indicado na Figura 7.21. Voc pode
utilizar o boto Explicar para obter um texto explicativo sobre qualquer contador selecionado.
Figura 7.21 Janela que exibida com a explicao sobre o contador selecionado.
Veja que no campo Selecionar contadores do computador j vem, por padro, o nome do computador local, onde foi aberto o console de
desempenho. Podemos monitorar o desempenho de outros computadores da rede. Por exemplo, para acessar contadores de um computador
chamado SERVER2, basta digitar \\SERVER2, neste campo e pressionar Enter. Em poucos instantes o Windows Server 2003 exibe uma
listagem com os contadores do computador a ser monitorado. Voc pode adicionar, para monitorao, contadores de diferentes computadores,
conforme j descrito anteriormente. Por exemplo, voc pode adicionar o percentual de ocupao do processador para os diversos servidores
da rede, para determinar qual ou quais esto com utilizao excessiva do processador.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4100000Curso Completo
9. D um clique no boto Adicionar, para adicionar o contador % tempo de processador.
10. Agora hora de adicionar um contador para a memria. Primeiro, na lista Objeto de
desempenho, selecione o objeto Memria. Na caixa de listagem Selecionar contadores na lista,
so exibidos os contadores disponveis para o objeto Memria.
11. D um clique no contador % de bytes confirmados em uso. Clique no boto Adicionar e depois
d um clique no boto Fechar. Voc estar de volta ao console de desempenho, sendo que
agora os dois contadores que voc adicionou j esto sendo monitorados, conforme mostrado
pelo grfico da Figura 7.22.
Figura 7.22 Um contador do processador e outro da memria, sendo monitorados.
12. Observe que o processador teve picos de quase 100% de utilizao. J a memria tem se mantido
em torno de 25% de utilizao. Existem alguns indicadores que podem nos levar a certas
concluses interessantes. Por exemplo, se a taxa de utilizao do processador permanecer por
longos perodos de tempo, sempre prxima ou acima de 80%, pode ser um indicativo de que o
processador um gargalo para o sistema. O processador deve ser substitudo por um outro
mais rpido, ou a utilizao de mais do que um processador deve ser considerada. Por outro
lado picos de 100% so perfeitamente normais. Quando voc abre um aplicativo normal que
a utilizao do processador chegue prxima dos 100%. O que no pode acontecer uma alta
taxa de utilizao permanente, prxima ou superior a 80%.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000411
13. No nosso exemplo a utilizao da memria (em torno de 25%) est em uma patamar timo.
At 60% seria um valor bastante razovel. Lembrando que picos podem acontecer e, o que
um indicativo de sobrecarga em um dos componentes de hardware, uma taxa de utilizao
constante em patamares elevados.
14. O console de desempenho exibe uma srie de informaes para cada um dos contadores que esto
sendo monitorados. Observe que cada um dos contadores possui um grfico com cor diferente. Na
parte de baixo do console, ao clicar em um contador, voc ir selecion-lo. Observe que logo
abaixo do grfico so exibidas diversas informaes, dependendo do contador selecionado.
15. Ao selecionarmos o contador % tempo de processador, por exemplo, so exibidas diversas
informaes, tais como: valor mdio, valor mnimo, valor mximo e assim por diante.
16. Para adicionar novos contadores, basta utilizar novamente o boto (Adicionar - boto com um
sinal de +) ou pressionar Ctrl+I.
17. Quando voc est monitorando diversos contadores, pode ser til pr em destaque o contador
selecionado. Para isso basta pressionar Ctrl+H, que o contador selecionado ser posto em
destaque, isto , ficar com a linha do grfico mais espessa e destacada.
18. Para retirar o destaque do contador, basta pressionar Ctrl+H novamente.
Figura 7.23 Alterando as propriedades do grfico e incluindo grades de referncia.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4120000Curso Completo
I
M
P
O
R
T
A
N
T
E
P
R
A
T
I
Q
U
E
19. Voc pode excluir um contador, simplesmente clicando no contador, na parte de baixo do
console Desempenho, abaixo do grfico e teclando Delete.
20. Voc pode alterar diversas propriedades do grfico que exibido no console desempenho,
como por exemplo: cor da linha, cor de fundo, exibir ou no uma grade de referncia, etc. Para
acessar estas propriedades, d um clique com o boto direito do mouse em qualquer parte do
grfico. No menu que surge clique em Propriedades.
21. Ser exibida a janela Propriedades de Monitor do sistema, onde, atravs das guias Geral, Fonte,
Dados, Grfico e Aparncia, voc pode alterar diversas propriedades da exibio do grfico de
desempenho. No exemplo da Figura 7.23, foram includas grades de referncia. Esta configurao
feita atravs da guia Grfico, da janela de propriedades.
22. Feche o console de desempenho.
Pratique um pouco: Abra novamente o console Desempenho e adicione alguns contadores do processador e da memria. Para o objeto
Processador adicione os contadores Interrupes por segundo e % Tempo privilegiado. Utilize o boto Explicao para exibir a descrio
destes contadores. Altere algumas propriedades do grfico. Altere o campo atualizar automaticamente a cada 1 segundo para 2 segundos.
Este campo acessvel atravs da guia Geral das propriedades do grfico. Para acessar as propriedades clique com o boto direito do mouse
em qualquer local do grfico, e no menu que surge d um clique na opo Propriedades.
MONITORANDO O ACESSO AO SISTEMA DE DISCOS
Neste item mostrarei como monitorar alguns contadores dos objetos Disco fsico e Disco lgico.
importante lembrar que o objeto Disco fsico se refere a um disco como um todo, independente
de o disco estar dividido em parties (disco bsico) ou volumes (disco dinmico). J o objeto
Disco lgico, refere-se s parties ou volumes, independente de estarem localizadas em um
nico disco, ou distribudas ao longo de vrios discos, como no caso de um volume RAID-5 ou
de um volume set.
Nunca demais lembrar que no Windows NT 4.0 os contadores para os objetos Disco fsico e Disco lgico esto desabilitados, por padro. O
objeto Disco Lgico nem sequer aparecia na listagem de objetos. O objeto Disco fsico aparecia na listagem, mas se voc adicionasse alguns
dos seus contadores, estes ficariam sempre em zero, uma vez que estavam desabilitados. Para habilitar os contadores para os objetos Disco
fsico e Disco lgico, no NT 4.0, era necessrio executar o seguinte comando: diskperf y e reinicializar o computador para que os contadores
sejam habilitados. NO WINDOWS SERVER 2003 NO NECESSRIO ESTE PROCEDIMENTO, POIS OS CONTADORES, TANTO PARA DISCO FSCIO
QUANTO PARA DISCO LGICO, ESTO HABILITADOS, AUTOMATICAMENTE.
Agora hora de monitorar alguns contadores dos contadores dos objetos Disco fsico e Disco lgico.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000413
N
O
T
A Para o exemplo proposto estou utilizando um computador com dois discos fsicos, os quais esto divididos em um ou mais volumes. Para este
exemplo estou utilizando um servidor com o Windows Server 2003, em ingls, o que pode ser comprovado pelas telas em ingls. Conforme
visto no Captulo 5 do livro Windows Server 2003 Curso Completo, 1568 pginas, de minha autoria, possvel criar mais de um volume
(disco lgico) em um mesmo disco fsico. Por exemplo, possvel dividir um disco de 40 GB em dois volumes de 20 GB. A cada volume estaria
associada uma letra, como por exemplo: C: e E: Cada volume representa um disco lgico, isto , uma unidade.
Exemplo prtico: Monitorando a atividade de discos, usando o console de desempenho.
Para monitorar a atividade do sistema de discos, siga os passos indicados a seguir:
1. Faa o logon como administrador, ou com uma conta com permisso de administrador.
2. Abra o console Desempenho: Iniciar -> Ferramentas administrativas -> Desempenho.
3. No painel da esquerda, clique na opo Monitor do sistema, para marc-la.
4. D um clique no boto Adicionar, na barra de ferramentas boto com um sinal de + ou
pressione Ctrl+I. Ser exibida a janela Adicionar contadores, na qual podemos adicionar os
objetos e respectivos contadores que sero monitorados.
Figura 7.24 Monitorando o objeto Disco fsico.
5. No campo Objeto de desempenho, selecione o objeto Disco fsico. Ser exibida uma listagem
com os discos instalados no seu computador e as parties (ou volumes no caso de discos de
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4140000Curso Completo
N
O
T
A
Armazenamento dinmico) criadas em cada um dos discos. No exemplo da Figura 7.24, so
exibidos dois discos: Disco 0 e Disco 1. O espao do disco 0 todo ocupado pelo volume C: J
o espao do disco 1 ocupado pelos volumes D:, E: e F: Observe que tambm exibida uma
instncia denominada _Total. A instncia _Total utilizada para monitorar a atividade somada
de todos os discos do sistema. Por exemplo, se voc selecionar o contador Gravaes em disco
por segundo e selecionar a instncia total, estar sendo monitorada a atividade total combinada
de escrita em todos os discos do servidor.
6. Na caixa de listagem Selecionar contadores na lista, selecione o contador Gravaes em disco
por segundo. Este contador uma medida da freqncia das operaes de gravao em disco.
Ele ir indicar a atividade de gravao de informaes no disco.
7. Na caixa de listagem Selecionar instncias na lista, voc tem a opo de definir se quer monitorar
todos os discos fsicos (_Total), ou somente alguns deles. Esta caixa exibe todas as ocorrncias
do objeto Disco fsico, isto , exibe todos os discos instalados no computador. Por exemplo,
para monitor apenas o Disco 0, clique na opo 0 C: para selecionar esta instncia do contador
Gravaes em disco por segundo.
Caso existam vrios discos e voc queira monitorar apenas alguns deles, voc deve selecionar apenas os discos a serem monitorados antes
de clicar no boto Adicionar. Para selecionar os diversos discos a serem monitorados, pressione a tecla Ctrl e v clicando nos discos a serem
monitorados. medida que voc for clicando, os discos sero selecionados.
8. D um clique no boto Adicionar, para incluir este contador para monitorao.
9. Agora voc ir monitorar a freqncia de gravao somente do volume E:. Para isto, na lista
Objeto de desempenho, selecione o objeto Disco lgico.
10. Na caixa de listagem Selecionar contadores na lista, selecione o contador Disk Gravaes em
disco por segundo.
11. Observe que, na caixa de listagem da direita, exibida uma lista com todos os volumes
disponveis. D um clique no volume E: (ou em um volume disponvel no servidor que voc
est utilizando) para marc-lo.
12. D um clique no boto Adicionar, para incluir este contador para monitorao.
13. D um clique no boto Fechar.
14. Voc estar de volta ao console Desempenho, com contadores para monitorar a atividade de
gravao do Disco 0 e da partio E:, conforme indicado pela Figura 7.25.
15. A monitorao da atividade dos discos, atravs dos diversos contadores disponveis, de grande
importncia, principalmente para servidores que atuam como servidores de disco (basicamente
com compartilhamento de pastas e arquivos) ou servidores Web para a Internet ou para uma
intranet. Normalmente o sistema de discos a parte mais lenta do sistema, a parte que pode
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000415
Figura 7.25 Grfico indicativo da atividade de gravao.
16. Feche o console Desempenho.
Exerccio: Abra novamente o console Desempenho e monitore os seguintes contadores para o Disco
fsico, para o disco 0: Leituras de disco por segundo e Transferncia de disco por segundo. Utilize o
boto Explicar para ver o que representa cada um destes contadores. Feche o console Desempenho.
CONTADORES A SEREM MONITORADOS EM SERVIDORES
Na tabela a seguir, da ajuda do Windows Server 2003, apresento uma lista de contadores que a Microsoft
recomenda que sejam monitorados permanentemente nos servidores da rede.
causar os maiores problemas em relao ao desempenho. Muitas vezes pode ser necessria a
atualizao para discos mais rpidos ou para a implementao de nveis de RAID-5 ou RAID-10
baseados em hardware. Porm estas utilizaes somente se justificam em servidores com um
volume de acesso elevado.
Componente Aspecto do desempenho sendo monitorado Contadores a monitorar
Disco Uso PhysicalDisk\Leituras de disco/s
PhysicalDisk\Gravaes de disco/s
LogicalDisk\% de espao livre
Interprete cuidadosamente o contador % tempo de disco. Como
a instncia _Total desse contador pode no refletir com
preciso o uso em sistemas de vrios discos, importante usar
tambm o contador % Tempo ocioso. Observe que esses
contadores no podem exibir um valor acima de 100%.
Tabela 7.2 Contadores recomendados pela Microsoft
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4160000Curso Completo
VALORES INDICATIVOS DE LIMITES DE DESEMPENHO PARA CONTADORES
Definir exatamente qual o limite aceitvel para o valor de um ou mais contadores no uma cincia
exata. Por exemplo, afirmar que sempre que a taxa de utilizao do processador se mantiver em torno
de 80%, por longos perodos, um indicativo de queda no desempenho ou um indicativo de que o
processador deve ser substitudo no algo preciso. Claro que existem valores para determinados
contadores que servem para disparar o alarme, isto , servem para alertar o administrador a que uma
parte do sistema pode estar sendo responsvel pela queda de desempenho, ou seja, pode estar sendo o
que chamamos de gargalo do sistema.
Na tabela a seguir, da Ajuda do Windows Server 2003, apresento alguns valores para determinados
contadores, valores estes que, pelas recomendaes da Microsoft, devem servir de alerta ao administrador.
Componente Aspecto do desempenho sendo monitorado Contadores a monitorar
Disco Gargalos Disco fsico\ Comprimento mdio da fila de disco (todas as
instncias)
Memria Uso Memria\Bytes disponveis
Memria\Bytes de cache
Memria Gargalos ou vazamentos Memria\Pginas/s
Memria\Leituras de pgina/s
Memria\Falhas de transio/s
Memria\Bytes de pool paginvel
Memria\Bytes de memria no-paginvel
Embora no sejam especificamente contadores do objeto Memria,
as opes a seguir tambm so teis para anlise de memria:
Arquivo de paginao\% uso (todas as instncias)
Cache\Acertos de mapa de dados %
Servidor\Bytes de pool paginvel e Servidor\Bytes de memria
no-paginvel
Rede Taxa de transferncia Contadores de transmisso de protocolo (varia de acordo com o
protocolo de rede); para TCP/IP:
Interface de rede\Total de bytes/s
Interface de rede\Pacotes/s
Servidor\Total de bytes/s ou Servidor\Bytes transmitidos/s e
Servidor\Bytes recebidos/s
Processador Uso Processador\% tempo de processador (todas as instncias)
Processador Gargalos Sistema\Comprimento da fila de processador (todas as instncias)
Processador\Interrupes/s
Sistema\Alternncias de contexto/s
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000417
Recurso Objeto\Contador Limite sugerido Comentrios
Disco Disco fsico\% de espao livre
Disco lgico\% de espao livre 15%
Disco Disco fsico\% tempo de disco
Disco lgico\% tempo de disco 90%
Disco Disco fsico\Leituras de disco/s, Depende das especificaes Verifique a taxa de transferncia especificada
Disco fsico\Gravaes de disco/s do fabricante para seus discos, para ter certeza de que
ela no ultrapassa as especificaes. Em
geral, os discos Ultra Wide SCSI podem
gerenciar de 50 a 70 operaes de E/S
por segundo. Observe que o fato de a E/S
ser seqencial ou aleatria pode ter um
forte efeito sobre os valores de leituras de
disco/s e gravaes de disco/s.
Disco Disco fsico\Comprimento da Nmero de eixos mais 2 Esse contador instantneo. Observe seu
fila de disco atual valor durante vrios intervalos. Para obter
uma mdia ao longo do tempo, use Disco
fsico\ Comprimento mdio da fila de disco.
Memria Memria\Bytes disponveis Para computadores com Pesquise o uso da memria e adicione
mais memria, mais de 4 MB memria se necessrio.
Memria Memria\Pginas/s n pginas/s por arquivo Pesquise a atividade de paginao.
de paginao Observe o volume de E/S transferido para
os discos com arquivos de paginao.
Arquivo de paginao Arquivo de paginao\% uso Acima de 70% Revise este valor juntamente com Bytes
disponveis e Pginas/s para entender a
atividade de paginao do computador.
Processador Processador\% tempo de processador 85% Descubra o processo que est usando uma
alta porcentagem do tempo do processador.
Atualize para um processador mais
rpido ou instale um processador adicional.
Processador Processador\Interrupes/s Depende do processador; Um aumento brusco no valor desse
um bom ponto de partida contador, sem um aumento
1.000 interrupes correspondente na atividade do sistema,
por segundo indica um problema de hardware.
Identifique o adaptador de rede, o disco
ou outro tipo de hardware que est
causando as interrupes.
Servidor Servidor\Total de bytes/s Se a soma de Total de bytes/s para todos
os servidores for aproximadamente igual
s taxas de transferncia mximas de sua
rede, convm segmentar a rede.
Servidor Servidor\Falta de itens de trabalho 3 Se o valor atingir este limite, considere
adicionar as entradas DWORD
InitWorkItems (o nmero de itens de
trabalho alocados para um processador
durante a inicializao) ou MaxWorkItems
(o nmero mximo de buffers de
recebimento que um servidor pode alocar)
ao Registro (em HKEY_LOCAL_MACHINE\
SYSTEM\CurrentControlSet\Services\
LanmanServer\Parameters). A entrada
InitWorkItems pode variar de 1 a 512,
enquanto MaxWorkItems pode variar de 1
a 65.535. Comece por qualquer valor para
InitWorkItems e um valor igual a 4.096
para MaxWorkItems e dobre esses valores
at que o limite de Servidor\Falta de itens
de trabalho fique abaixo de 3.
Tabela 7.3 Valores limites recomendados pela Microsoft.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4180000Curso Completo
Recurso Objeto\Contador Limite sugerido Comentrios
Servidor Servidor\Pico de pool paginvel Quantidade de RAM fsica Esse valor um indicador do tamanho
mximo do arquivo de paginao e da
quantidade de memria fsica.
Servidor Filas de trabalho do 4 Se o valor atingir esse limite, poder
servidor\Comprimento da fila haver um gargalo no processador. Esse
contador instantneo. Observe seu valor
durante vrios intervalos.
Vrios processadores Sistema\Comprimento da fila 2 Esse contador instantneo. Observe seu
de processador valor durante vrios intervalos.
Claro que estes so apenas valores sugeridos, os quais servem como alerta para o administrador.
Conforme descrito anteriormente, o processo de monitorao um processo contnuo, de
acompanhamento na evoluo dos principais contadores, sugeridos anteriormente.
A seguir apresento, de uma forma resumida, os principais contadores e respectivos limites, ou seja,
valores que podem indicar que o problema com o respectivo componente:
Processador\% tempo de processador: No deve estar por longos perodos acima dos 80%.
Sistema\Comprimento da fila de processador: No deve ser maior do que 2.
LogicalDisk\Comprimento da fila de disco atual: Se este valor estiver constantemente acima
de 2, o sistema de discos deve ser substitudo por um sistema mais rpido. Por exemplo, se os
discos forem IDE, voc pode substituir por um sistema SCSI. Outra alternativa implementar
um volume Set sem paridade.
LogicalDisk\Comprimento da fila de disco atual: Valem os mesmos comentrios do item
anterior.
Memria\Pginas/s: Um valor maior do que 20 pode indicar a necessidade de um upgrade de
memria, normalmente com a adio de mais memria RAM.
Memria\Bytes confirmados: Deve ser sempre menor do que a quantidade total de memria
instalada.
CONFIGURANDO O CONSOLE DESEMPENHO
PARA CAPTURAR DADOS AUTOMATICAMENTE
Na introduo sobre a monitorao de desempenho, falei sobre a possibilidade de configurar o console
Desempenho para efetuar a captura automtica de dados, conforme destacado no trecho a seguir:
Tambm possvel configurar o console Desempenho para que seja feita a captura de dados
automaticamente. O administrador pode configurar o console desempenho para que sejam capturados
dados sobre os objetos/contadores a serem monitorados. Com base nesta captura, o administrador
pode verificar os limites normais de operao para componentes como o processador, memria RAM
e assim por diante. Depois faz-se um monitoramento contnuo e compara-se os resultados obtidos
com os limites de operao obtidos em outras medies. Quando um determinado componente
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000419
N
O
T
A
comear a apresentar aumento na sua taxa de utilizao o administrador deve verificar o motivo
para este aumento e, se for o caso, providenciar a substituio do elemento que est apresentando
elevao em suas taxas de utilizao, antes que a sua taxa de utilizao atinja limites que possam
comprometer o desempenho do servidor.
Conforme pode ser concludo pelo pargrafo anterior, o principal objetivo em configurar a coleta
automtica de dados para determinar quais as taxas normais de utilizao dos componentes a serem
monitoradas, em situao normal de uso. Depois so feitas novas observaes para acompanhar a
evoluo destas taxas de ocupao, para poder agir preventivamente quando um determinado
componente estiver atingindo nveis elevados de utilizao.
A captura automtica de dados feita utilizando a opo Logs e alertas de desempenho, do console
Desempenho. Com esta opo, voc pode coletar automaticamente dados de desempenho de
computadores locais ou remotos. Voc pode visualizar os dados que foram gravados no log usando o
console Desempenho ou exportar os dados para programas de planilha ou banco de dados, para fins de
anlise e gerao de relatrios. Por exemplo, voc pode importar os dados gravados em um log de
desempenho, para um banco de dados do Microsoft Access e utilizar estes dados para a criao de
relatrios personalizados.
Com a opo Logs e alertas de desempenho, esto disponveis os seguintes recursos:
Coleta de dados em formato separado por vrgulas ou por tabulaes para facilitar a importao
por programas de planilha ou programas de banco de dados. fornecido tambm um formato
de arquivo de log binrio para registro em log circular ou para registro em log de instncias,
como segmentos ou processos, que podem comear depois do incio da coleta de dados. (O
registro em log circular o processo de registro contnuo de dados em um nico arquivo,
sobrescrevendo os dados anteriores com novos dados.)
Voc tambm pode coletar dados em formato de banco de dados SQL. Essa opo define o
nome de um banco de dados SQL e conjunto de logs existentes dentro do banco de dados em
que os dados de desempenho sero lidos ou gravados. Esse formato de arquivo til ao coletar
e analisar dados de desempenho de toda a empresa, em vez de servidor por servidor. Por exemplo,
a partir de um nico console Desempenho, voc pode obter dados sobre diversos servidores da
rede e armazenar estes dados centralizadamente em um nico banco de dados do SQL Server.
Importante: Lembre-se que, quando houver a necessidade de capturar dados de desempenho de diversos servidores e consolidar estas dados em um
nico banco de dados, a opo mais indicada fazer com que os dados obtidos sejam gravados em um banco de dados do SQL Server.
Os dados coletados podem ser visualizados durante a coleta ou aps seu trmino. Como o log
funciona da mesma maneira que um servio do Windows Server 2003, a coleta de dados ocorre
independentemente de haver um usurio logado ou no, no servidor que est sendo monitorado.
Voc pode definir os momentos de incio e parada, nomes de arquivos, tamanho mximo de
arquivo e outros parmetros para a gerao automtica do log.
Voc pode gerenciar vrias sesses de log em uma nica janela de console.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4200000Curso Completo
N
O
T
A
Voc pode definir um alerta em um contador, especificando que uma mensagem seja
enviada, um programa seja executado e uma entrada seja feita no log de eventos do Win-
dows Server 2003 ou um log seja iniciado quando o valor do contador selecionado for
superior ou inferior a uma configurao especificada. Por exemplo, voc pode monitorar a
taxa de utilizao do processador e solicitar que o administrador seja avisado quando esta
taxa ultrapassar um determinado patamar, digamos 85%, ou voc pode monitorar o espao
livre em todas as unidades de disco ou em todos os volumes, de todos os servidores da rede
e pedir que seja disparado um alerta para o administrador, sempre que uma unidade
apresentar espao livre inferior a 20%.
Para que a coleta de dados possa funcionar corretamente, o servio Logs e alertas de desempenho deve ter sido inicializado corretamente.
Antes de prosseguir voc ir verificar (no exemplo logo a seguir) se este servio est configurado para inicializao automtica. Caso no
esteja, ir configur-lo para que seja inicializado automaticamente.
Exemplo: Verificando as opes de configurao e inicializao do servio Logs e alertas de
desempenho.
1. Faa o logon como administrador ou com uma conta com permisso de administrador.
2. Abra o console Servios que est disponvel no menu Ferramentas administrativas.
Figura 7.26 Configurando o servio Logs e alertas de desempenho para iniciar automaticamente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000421
3. Localize o servio Logs e alertas de desempenho e verifique o valor indicado na coluna Tipo de
inicializao. Se o valor desta coluna estiver em Manual, significa que o servio no est sendo
inicializado automaticamente. Se for este o caso, d um clique duplo no servio para exibir a
janela com as propriedades do servio.
4. Na janela de propriedades do servio, na guia Geral, altere o tipo de inicializao para
Automtico, conforme indicado na Figura 7.26.
5. Clique no boto Iniciar para fazer com que o servio seja inicializado imediatamente.
6. Surge a mensagem indicada na Figura 7.27.
Figura 7.27 Mensagem sobre o servio Logs e alertas de desempenho.
Esta mensagem informa que o servio foi inicializado e encerrado, pois no momento no existe nenhuma
coleta de dados em andamento. Porm o Windows Server 2003 ir iniciar o servio automaticamente,
quando uma coleta de dados for configurada. O Windows Server 2003 detecta que o servio deve estar
ativo para que a coleta de dados possa ser feita e inicializa o servio automaticamente.
7. Clique em OK para fechar a mensagem de aviso. Voc estar de volta janela de propriedades
do servio. Clique em OK para fech-la.
8. Feche o console Servios.
Uma vez estando configurado corretamente o servio Logs e alertas de desempenho, temos disposio
as seguintes funcionalidades:
Iniciar e parar o log manualmente, por demanda ou automaticamente, com base em um
agendamento definido pelo usurio.
Definir configuraes adicionais para log automtico, como renomear o arquivo
automaticamente e definir parmetros para parar ou iniciar um log com base no tempo decorrido
ou no tamanho do arquivo.
Criar logs de rastreamento. Usando o provedor de dados do sistema padro do Windows Server
2003 ou outro provedor de aplicativos, os logs de rastreamento registram detalhadamente os
eventos de aplicativos do sistema, quando ocorrem certas atividades, como uma operao de
entrada/sada (E/S) de disco ou uma falha de pgina. Quando o evento ocorre, o Windows
Server 2003 registra os dados em um arquivo de log especificado pelo servio de logs e alertas
de desempenho. Isso difere da operao dos logs de contadores. Quando eles esto em uso, o
servio obtm dados do sistema no fim do intervalo de atualizao, em vez de esperar por um
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4220000Curso Completo
N
O
T
A
evento especfico. Uma ferramenta de anlise necessria para interpretar o resultado do log
de rastreamento.
Definir um programa que seja executado quando um log for parado. Por exemplo, voc pode
configurar que seja executado um script que copia os arquivos com os dados para um drive da
rede, onde o arquivo ser importado em um banco de dados. O script tambm pode ser
configurado para enviar uma mensagem para o administrador.
Se voc desejar exportar dados do log para o Microsoft Excel, o servio de logs e alertas de desempenho dever ser parado, porque o
Microsoft Excel exige acesso exclusivo ao arquivo de log. No h informaes sobre outros programas que exijam esse acesso exclusivo.
Portanto, voc geralmente pode trabalhar com dados de um arquivo de log enquanto o servio estiver coletando dados para esse arquivo.
Para parar o servio de logs e alertas utilize o console Servios, conforme descrito no exemplo anterior.
Agora voc acompanhar alguns exemplos prticos de coleta de dados.
Exemplo 1: Configurar o servio de logs e alertas para monitorar a taxa de ocupao do processador.
Sero monitorados os seguintes contadores:
% tempo de processador
Interrupes/s
Os dados devero ser obtidos em intervalos de 5 segundos e salvos em um arquivo do tipo texto. Os
dados devero ser gravados no arquivo C:\Monitora o processador_000001.csv.
Para fazer o acompanhamento proposto e gerar o arquivo de log, siga os passos indicados a seguir:
1. Faa o logon como administrador, ou com uma conta com permisso de administrador.
2. Abra o console Desempenho: Iniciar -> Ferramentas administrativas -> Desempenho.
3. No painel da esquerda, clique no sinal de + ao lado da opo Logs e alertas de desempenho.
Sero exibidas as opes indicadas na Figura 7.28:
Figura 7.28 Opes de configurao para logs e alertas de desempenho.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000423
N
O
T
A
4. Clique na opo Logs do contador. Observe que, por padro, j existe um log configurado. Este
log, chamado Viso geral do sistema, coleta dados de um conjunto de objetos/contadores, os
quais fornecem uma viso geral do desempenho do servidor. Voc pode iniciar a coleta de dados
para este log, clicando nele para marc-lo e depois selecionando o comando Ao -> Iniciar ou
clicando no boto Iniciar (boto com o desenho de um pequeno tringulo para a direita).
5. Neste exemplo voc ir criar um novo log. Para criar um novo log clique na opo Logs do
contador e selecione o comando Ao -> Novas configuraes de log. Surge uma janela
solicitando o nome do novo log. Digite Monitora o processador, conforme indicado na Figura
7.29 e clique em OK.
Figura 7.29 Definindo um nome para o novo log.
No pode haver nenhum log selecionado, se no a opo Novas configuraes de log no ser exibida no menu Ao. Se esta opo no
estiver sendo exibida, clique novamente na opo Logs do contador, no painel da esquerda. Isso far com que qualquer log que esteja
marcado seja desmarcado.
Surge a janela Monitora o processador, na qual ns temos as seguintes guias:
Geral: Esta guia utilizada para definir quais objetos/contadores faro parte do log, definir
uma descrio para o log, definir o intervalo de coleta dos dados e definir se o log executar no
contexto do usurio padro do sistema ou no contexto de uma conta de usurio especfica.
Arquivos de log: Nesta guia voc define o formato para o arquivo de log, a forma de nomeao
dos arquivos, um comentrio e se os arquivos existentes devem ser sobrescritos ou mantidos.
Voc somente poder acessar esta guia se tiver adicionado pelo menos um objeto ou contador,
usando a guia Geral.
Agendar: Nesta guia o administrador pode definir um agendamento para a coleta. Por exemplo,
de segunda a sexta-feira, das 8:00 s 18:00.
Agora voc adicionar os contadores % tempo de processador e Interrupes/s, do objeto Processador.
6. Clique na guia Geral. Clique no boto Adicionar contadores. Ser exibida a janela Adicionar
contadores, a qual j utilizamos nos exemplos anteriores. Adicione os contadores % tempo de
processador e Interrupes/s, do objeto Processador e clique em Fechar.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4240000Curso Completo
7. No campo Intervalo, defina um intervalo de 5 segundos para a coleta dos dados. A guia Geral
deve estar conforme indicado na Figura 7.30:
Figura 7.30 Configuraes da guia Geral, para o exemplo proposto.
8. Clique na guia Arquivos de log. Para o formato selecione Arquivo de texto (delimitado por
vrgulas). Clique no boto Configurar para definir o local onde ser criado o arquvio de log e
um tamanho mximo.
Figura 7.31 Definindo configuraes para o arquivo de log.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000425
N
O
T
A
9. Ao clicar no boto Configurar ser exibida a janela Configurar Arquivos de log. Defina as
configuraes indicadas na Figura 7.31.
10. Clique em OK para fechar a janela Configurar arquivos de log.
11. Voc estar de volta guia Arquivos de log. Clique na guia Agendar.
12. Defina um agendamento para que a coleta seja iniciada e encerrada. Por exemplo, configure o
log para iniciar em uma data e horrio especficos, conforme exemplo indicado na Figura 7.32.
Nesta guia voc tambm pode definir o que deve ser feito, caso o arquivo de log atinja o seu
tamanho mximo. Esto disponveis as seguintes opes: Iniciar um novo arquivo de log ou
Executar este comando.
Figura 7.32 Definindo um agendamento para a coleta de dados.
13. Clique em OK. Voc estar de volta ao console Desempenho. O log Monitora o processador foi
criado e iniciar a coleta de dados no horrio determinado, conforme configuraes definidas
na guia Agendar. Observe que o log Monitora o processador j aparece na lista de logs,
juntamente com o log Viso geral do sistema, sendo que este ltimo automaticamente criado
pelo Windows Server 2003, conforme descrito anteriormente.
Se voc precisar alterar alguma configurao de um log, basta dar um clique duplo no respectivo log que ser exibida a janela com as
propriedades do log, onde voc ter acesso s guias Geral, Arquivos de log e Agendar.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4260000Curso Completo
N
O
T
A
14. O administrador pode fazer com que o log inicie a coleta de dados imediatamente, independente
do agendamento definido. Para isso clique no log Monitora o processador, para marc-lo e
selecione o comando Ao -> Iniciar.
15. O log ser inicializado e os dados comearo a ser capturados e salvos no arquivo C:\Monitora o
processador_000001.csv. Aguarde uma meia hora para que o Windows Server 2003 possa coletar
uma boa quantidade de dados. Observe que, aps ser inicializado, o pequeno cone, ao lado do
nome do log, alterna para a cor verde. Este um indicativo de que o log est em execuo.
16. Para suspender a execuo do log e a coleta dos dados, basta clicar no log a ser suspenso e
depois selecionar o comando Ao -> Parar. Voc tambm pode clicar com o boto direito do
mouse no log e, no menu que exibido, clicar na opo Parar.
Alm do menu Ao, voc tambm pode utilizar o boto direito do mouse, clicando no respectivo log, para ter acesso aos comandos Iniciar
e Parar. Na barra de ferramentas do console Desempenho, existem o boto Iniciar - boto com o desenho de um pequeno tringulo e o
boto Parar - boto com o desenho de um pequeno quadrado.
17. Aps meia hora de coleta, suspenda a execuo do log.
Agora vamos analisar os dados obtidos, os quais foram gravados no arquivo C:\Monitora o
processador_000001.csv.
18. Feche o console Desempenho.
Exemplo 2: Analisando os dados obtidos com o log Monitora o processador, criado no exemplo anterior.
Para abrir o arquivo com os dados obtidos, faa o seguinte:
1. Faa o logon como administrador ou com uma conta do tipo administrador do computador.
2. Abra o bloco de notas.
3. Abra o arquivo C:\Monitora o processador_000001.csv.
4. Na listagem a seguir temos uma amostra dos dados de monitorao que foram salvos:
05/01/2002 16:31:04.511,99.99991106930112",237.43538236310363",Monitora o processador
05/01/2002 16:31:09.518,3.0029057285789862",281.7091259002674",Monitora o processador
05/01/2002 16:31:14.526,2.2029296933507747",250.63934155863382",Monitora o processador
05/01/2002 16:31:19.533,2.6029177109648804",240.65353587347821",Monitora o processador
05/01/2002 16:31:24.540,2.0029356845437163",233.86324638545705",Monitora o processador
05/01/2002 16:31:29.548,1.0029656405084575",230.06868469153261",Monitora o processador
05/01/2002 16:31:34.555,2.6029177109648804",236.65902223849881",Monitora o processador
05/01/2002 16:31:39.562,3.0029057285789862",245.64630670524917",Monitora o processador
05/01/2002 16:31:44.570,1.0029656405084575",232.46519458083583",Monitora o processador
05/01/2002 16:31:49.577,18.602438415529178",298.36987599426584",Monitora o processador
05/01/2002 16:31:54.584,31.602048987987665",277.20116678260399",Monitora o processador
05/01/2002 16:31:59.592,3.0029057285789862",237.8575213706925",Monitora o processador
05/01/2002 16:32:04.599,3.4028937461930919",238.45647244632733",Monitora o processador
05/01/2002 16:32:09.607,2.0029356845437163",232.46529833970988",Monitora o processador
05/01/2002 16:32:14.614,2.4029237021578331",233.66353396326622",Monitora o processador
05/01/2002 16:32:19.621,2.4029237021578331",235.86035744808296",Monitora o processador
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000427
05/01/2002 16:32:24.629,1.2029596493155048",229.66911893931493",Monitora o processador
05/01/2002 16:32:29.636,2.8029117197719389",237.45805673646964",Monitora o processador
05/01/2002 16:32:34.643,1.802941675736669",235.46093262598629",Monitora o processador
05/01/2002 16:32:39.651,2.6029177109648804",235.26065580456452",Monitora o processador
05/01/2002 16:32:44.658,2.8029117197719389",240.25447283770185",Monitora o processador
05/01/2002 16:32:49.665,6.6027978871059485",330.12472597415723",Monitora o processador
05/01/2002 16:32:54.673,4.4028637902283618",238.25672027892747",Monitora o processador
05/01/2002 16:32:59.680,3.6028877550001503",239.85475287258555",Monitora o processador
05/01/2002 16:33:04.687,2.2029296933507747",235.26124646664911",Monitora o processador
05/01/2002 16:33:09.695,3.0029057285789862",248.0428006830586",Monitora o processador
05/01/2002 16:33:14.702,1.6029476669296105",234.86158573592209",Monitora o processador
05/01/2002 16:33:19.709,1.802941675736669",240.8528989677138",Monitora o processador
05/01/2002 16:33:24.717,1.6029476669296105",237.05892288973411",Monitora o processador
05/01/2002 16:33:29.724,3.0029057285789862",237.25834432542132",Monitora o processador
05/01/2002 16:33:34.731,2.6029177109648804",241.45210288853528",Monitora o processador
05/01/2002 16:33:39.739,2.8029117197719389",242.45101580959104",Monitora o processador
05/01/2002 16:33:44.746,2.2029296933507747",243.8488266800569",Monitora o processador
05/01/2002 16:33:49.754,0.80297163170139907",238.05704786936531",Monitora o processador
05/01/2002 16:33:54.761,2.4029237021578331",237.05864514051027",Monitora o processador
05/01/2002 16:33:59.768,3.2028997373860446",238.65630457220965",Monitora o processador
05/01/2002 16:34:04.776,2.0029356845437163",234.06288045367026",Monitora o processador
05/01/2002 16:34:09.783,2.8029117197719389",236.06013571127014",Monitora o processador
05/01/2002 16:34:14.790,3.6028877550001503",240.25373559434755",Monitora o processador
05/01/2002 16:34:19.798,3.6028877550001503",239.45538124481718",Monitora o processador
05/01/2002 16:34:24.805,1.802941675736669",234.46240981460366",Monitora o processador
05/01/2002 16:34:29.812,2.8029117197719389",235.86018637754623",Monitora o processador
05/01/2002 16:34:34.820,3.8028817638072088",291.58010386253267",Monitora o processador
05/01/2002 16:34:39.827,2.0029356845437163",234.66201751967793",Monitora o processador
05/01/2002 16:34:44.834,2.4029237021578331",236.85895914831343",Monitora o processador
05/01/2002 16:34:49.842,3.2028997373860446",239.8546458154506",Monitora o processador
05/01/2002 16:34:54.849,3.0029057285789862",238.85597698173174",Monitora o processador
05/01/2002 16:34:59.856,3.2028997373860446",242.65053880935429",Monitora o processador
05/01/2002 16:35:04.864,2.6029177109648804",241.85174327309008",Monitora o processador
***************************************************************************
A listagem apresenta dados para cerca de 4 minutos, com incio em 16:31:04.511 e trmino em
16:35:04.864. A primeira coluna representa o horrio da coleta do dado, a segunda coluna o valor
correspondente ao contador % tempo do processador, a terceira coluna o valor correspondente ao
contador Interrupes/s. A quarta e ltima coluna o nome do log, nome este que definido pelo
usurio quando da criao do log, conforme visto anteriormente.
Observe que existe um intervalo de 5 segundos entre uma linha e outra, que exatamente o intervalo
que voc configurou no exemplo de criao do log.
5. Feche o bloco de notas.
Com os dados no formato .csv, voc pode import-los facilmente para o Excel ou para o Access, para
fazer uma srie de anlises, usando as ferramentas destes programas. Por exemplo, voc pode utilizar
os dados para calcular a taxa mdia de ocupao do processador, ou o nmero mdio de interrupes
por segundo. O formato .csv pode ser aberto diretamente no Excel e facilmente importado pelo
Microsoft Access.
A seguir coloco uma lista resumida (em relao lista apresentada anteriormente) dos contadores mais
comumente utilizados para verificao do desempenho do computador como um todo e que so
candidatos a serem configurados para coleta automtica, utilizando logs de desempenho. Esta lista
obtida na documentao oficial do Windows Server 2003.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4280000Curso Completo
N
O
T
A
I
M
P
O
R
T
A
N
T
E
Contadores para identificar gargalos em recursos de memria:
Memria\Bytes disponveis
Memria\Pginas/s
Contadores para identificar gargalos em recursos de disco:
PhysicalDisk -> % tempo de disco e % Tempo ocioso
PhysicalDisk -> Leituras de disco/seg e Gravaes de disco/seg
PhysicalDisk -> Comprimento mdio da fila de disco
LogicalDisk -> % de espao livre
Monitore contadores de memria para determinar se a paginao excessiva est sobrecarregando o disco. Quando o computador tem pouca
memria, o Windows Server 2003 obrigado a utilizar intensivamente os arquivos de paginao (Swap). O arquivo de trocas, por padro,
fica na raiz do disco C:, com o nome de pagefile.sys ou pode tambm ficar em outros discos e at mesmo distribudo em dois ou mais discos,
conforme configuraes efetuadas pelo administrador. Com o uso intensivo do arquivo de trocas, as taxas de utilizao do disco rgido
aumentam significativamente, porm o problema no com o sistema de discos e sim devido falta de memria (que a causa da
paginao excessiva). Ao acrescentar mais memria RAM, voc ir reduzir a utilizao do arquivo pagefile.sys e, conseqentemente, reduzir
as taxas de utilizao do disco rgido.
Contadores para identificar gargalos em recursos do processador:
Processador -> Interrupes por segundo
Processador -> % tempo de processador
Processo (processo) -> % tempo de processador
Sistema -> Comprimento da fila de processador
Um nmero muito elevado de interrupes por segundo pode ser causado por problemas em um dispositivo de hardware, ou em um driver
de hardware, conforme descrito anteriormente.
Contadores para identificar gargalos em recursos de rede:
Interface de rede ->Total de bytes/segundo, Bytes enviados/s e Bytes recebidos/s
Objeto_de_camada_de_protocolo -> Segmentos recebidos/s, Segmentos enviados/s, Quadros
enviados/s e Quadros recebidos/s
Servidor -> Total de bytes/segundo, Bytes recebidos/s e Bytes enviados/s
Contadores para identificar gargalos em recursos de impressora:
Fila de impresso -> Bytes impressos/s
Fila de impresso -> Erros de trabalhos
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000429
MONTANDO GRFICOS DE DESEMPENHO A PARTIR DE INFORMAES DE ARQUIVOS DE LOG
possvel utilizar o console Desempenho para acessar as informaes gravadas em um arquivo de log,
como o que criamos no exemplo anterior. Ao abrir o arquivo podemos especificar para quais contadores
queremos montar o grfico. Quando abrimos um arquivo de log, evidentemente, somente estaro
disponveis os contadores para os quais foram salvas informaes no arquivo.
Vamos a um exemplo prtico, onde acessaremos informaes do arquivo C:\Monitora o
processador_000001.csv, criado no exemplo anterior.
Exemplo: Acessando os dados de um arquivo de log j existente.
Para acessar os dados do arquivo C:\Monitora o processador_000001.csv, siga os passos indicados a
seguir:
1. Faa o logon como administrador, ou com uma conta com permisso de administrador.
2. Abra o console Desempenho: Iniciar -> Ferramentas administrativas -> Desempenho.
3. Ser aberto o console de monitorao de desempenho, com alguns indicadores j adicionados,
conforme descrito anteriormente.
4. Para limpar as configuraes atuais clique no boto Novo conjunto de contadores, que o primeiro
boto da barra de ferramentas ou pressione Ctrl+E. Todos os contadores sero excludos. Agora
voc ir carregar o arquivo de log C:\Monitora o processador_000001.csv, criado anteriormente.
5. Clique no boto Exibir dados de logs, que o quarto boto da esquerda para a direita, na barra de
ferramentas, ou pressione Ctrl+L. Ser exibida a janela Propriedades do Monitor do sistema, com
a guia Fonte j selecionada. Voc utiliza a guia Fonte para informar o arquivo de log a ser carregado.
Figura 7.33 Selecionando o arquivo de log a ser carregado.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4300000Curso Completo
6. Na guia Fonte clique na opo Arquivos de log e depois clique no boto Adicionar. Ser aberta
a janela Selecionar arquivo de log. Selecione o arquivo C:\Monitora o processador_000001.csv,
conforme indicado na Figura 7.33.
7. Clique no boto Abrir. Voc estar de volta guia Fonte, com o arquivo C:\Monitora o
processador_000001.csv j selecionado.
8. Clique em OK e o arquivo de log ser carregado. Por padro ainda no esto sendo exibidas
informaes sobre os contadores do arquivo de log. Esta a prxima etapa, dentre os contadores
que existem no arquivo de log, para qual ou quais queremos exibir informaes.
9. Clique no boto Adicionar, boto com um sinal de +, ou pressione Ctrl+I. Ser exibida a janela
Adicionar contadores. Abra a lista objeto de desempenho. Observe que somente aparece o
objeto Processador. Isto acontece porque, no arquivo de log que abrimos, somente existem
informaes sobre os contadores % tempo do processador e Interrupes/s do objeto Processador.
10. Na lista Selecione contadores da lista, selecione o contador % tempo do processador e clique
no boto Adicionar.
11. Clique em Fechar.
12. Voc estar de volta ao console Desempenho. Observe que foi montado um grfico com os
valores do contador % tempo do processador Time, para o perodo contido no arquivo de log,
que conforme podemos observar na Figura 7.34 de 20 minutos e 1 segundo.
Figura 7.34 Grfico montado com informaes do arquivo de log.
Voc pode fazer com que o grfico seja baseado apenas em um determinado perodo e no em toda a
janela de tempo do arquivo de log. Agora voc aprender a limitar o perodo de tempo no qual o
grfico baseado.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000431
Figura 7.35 Definindo uma janela de tempo.
16. Defina uma janela de tempo e clique em OK.
17. Voc estar de volta ao console Desempenho.
18. Observe que o perodo dos dados j foi limitado, conforme pode ser conferido no campo
Durao, nos campos logo abaixo do grfico.
19. Agora voc ir configurar algumas propriedades do grfico.
20. Clique com o boto direito do mouse em qualquer parte do grfico. No menu de opes que
exibido clique em Propriedades.
21. Na janela de propriedades que exibida, d um clique na guia Grfico. Nesta guia voc pode
definir um ttulo para o grfico, se sero exibidas grades verticais e horizontais, bem como
definir a escala do eixo vertical. Defina as opes conforme indicado na Figura 7.36:
13. Clique com o boto direito do mouse em qualquer parte do grfico. No menu de opes que
exibido clique em Propriedades.
14. Na janela de propriedades que exibida, d um clique na guia Fonte.
15. Na parte de baixo da janela existem dois controles deslizantes, que voc pode deslocar para
definir uma janela de tempo na qual o grfico ser baseado, conforme exemplo da Figura 7.35:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4320000Curso Completo
Figura 7.36 Configurando opes do grfico.
22. Clique em OK e observe que as alteraes j so aplicadas ao grfico.
23. Veja que o grfico fica com um aspecto bem melhor, conforme indicado na Figura 7.37:
Figura 7.37 O grfico aps as formataes.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000433
N
O
T
A
24. Feche o console Desempenho.
UTILIZANDO ALERTAS PARA MONITORAR SITUAES LIMITE
O administrador pode configurar alertas com base em contadores de desempenho. Por exemplo, posso
configurar um alerta que disparado sempre que um determinado contador atinge um valor limite.
Podem ser configuradas diferentes aes como resposta a um alerta: Enviar uma mensagem para um
usurio, normalmente o administrador, gravar um evento no log de eventos do Windows Server 2003,
executar um programa ou iniciar a captura de dados de desempenho, com base nas configuraes de
um log predefinido.
A seguir apresento um exemplo prtico de criao de um alerta com base no valor limite de um contador.
Exemplo: Criar um alerta que ser disparado sempre que o contador % tempo do processador ultrapassar
5%. Como resposta ao alerta, uma mensagem deve ser enviada para o usurio Administrador.
Evidentemente que 5% um valor muito baixo. Estou utilizando este valor apenas para forar que o alerta seja disparado e com isso voc
possa conferir se a mensagem est realmente sendo enviada para o administrador.
Para criar o alerta proposto siga os passos indicados a seguir:
1. Faa o logon como administrador, ou com uma conta com permisso de administrador.
2. Abra o console Desempenho: Iniciar -> Ferramentas administrativas -> Desempenho.
3. No painel da esquerda, clique no sinal de + ao lado da opo Logs e alertas de desempenho.
4. Clique na opo Alertas. Observe que, por padro, nenhum alerta criado.
5. Vou criar um novo alerta para monitorar o contador % tempo de processador.
6. Para criar um novo alerta selecione o comando Ao -> Novas configuraes de alerta.
7. Surge uma janela solicitando que voc digite um nome para o alerta que est sendo criado.
Digite Alerta-Teste, conforme indicado na Figura 7.38 e clique em OK.
8. Ser exibida a janela Alerta-Teste com as guias Geral, Ao e Agendar, na qual voc define as
caractersticas do alerta que est sendo criado.
9. O primeiro passo adicionar o contador ou os contadores, que sero monitorados. Na guia
Geral d um clique no boto Adicionar. Ser exibida a janela Adicionar contadores, a qual j
foi utilizada em exemplos anteriores. Na lista de objetos selecione Processador e na lista de
contadores selecione % tempo de processador. Clique no boto Adicionar e depois clique no
boto Fechar. Voc estar de volta guia Geral da janela do alerta.
10. Na guia Geral voc tambm pode definir um comentrio e o valor limite para o contador que
foi adicionado. No nosso exemplo digite 5, no campo Limite e certifique-se de que na lista
Alertar quando o valor for esteja selecionado Superior a. Com isso estou configurando o
alerta para ser disparado quando o contador % tempo de processador atingir um valor superior
a 5%. Suas configuraes devem estar conforme indicado na Figura 7.39.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4340000Curso Completo
Figura 7.38 Definindo o nome do alerta que est sendo criado.
Figura 7.39 Configuraes da guia Geral.
11. D um clique na guia Ao. Nesta guia voc define uma ou mais aes que sero executadas quando
o alerta for disparado. Para o nosso exemplo quero apenas que uma mensagem seja enviada para o
usurio Administrador. Defina as configuraes conforme indicado na Figura 7.40.
12. Clique em OK e o alerta ser criado e j ser inicializado. Alertas podem ser iniciados e parados,
assim como logs para a captura automtica de dados que tambm podem ser iniciados e parados.
Para parar um alerta que est em andamento, clique no boto Parar boto com o desenho de
um quadradinho ou clique com o boto direito do mouse no alerta e, no menu de opes que
exibido, clique em Parar. A ao associada ao alerta somente ser disparada enquanto o alerta
estiver em execuo.
13. Na Figura 7.41 mostro o exemplo da mensagem que enviada para o usurio Administrador
quando o alerta deste exemplo disparado, ou seja, quando o contador % tempo de processador
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000435
Figura 7.40 Configuraes da guia Ao.
atingir mais do que 5%. Esta mensagem foi enviada na estao de trabalho onde o administrador
estava logado, que no exemplo era uma estao de trabalho com o Windows XP Professional.
Ou seja, a mensagem enviada para onde o administrador estiver logado, independente do
servidor onde est configurado o alerta.
Figura 7.41 Mensagem enviada em resposta ao alerta.
14. Feche o console Desempenho.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4360000Curso Completo
N
O
T
A
UTILIZANDO O CONSOLE DESEMPENHO
PARA MONITORAR O SQL SERVER 2005
Agora vamos praticar um pouco. Neste item vamos monitorar alguns dos objetos de desempenho
disponibilizados pelo SQL Server 2005. So muitos os objetos e respectivos contadores do SQL Server
2005. 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.4 temos uma relao entre o nome dos objetos e a respectiva instncia do SQL Server.
Instncia Nome do objeto inicia com...
SERVIDOR\SQL2005 MSSQL$SQL2005
SERVIDOR\SRVINST02 MSSQL$SRVINST02
Tabela 7.4 Relao Objeto x Instncia.
Para cada instncia do SQL Server, so disponibilizados, dentre dezenas de outros, os seguintes objetos:
Access Methods
Backup Device
Buffer Manager
Buffer Partition
Cache Manager
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, acesse o Books.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000437
Agora vamos a um exemplo prtico, onde iremos monitorar alguns contadores relacionados instncia
SERVIDOR\SQL2005. Tambm iremos monitorar contadores do objeto Processador e do objeto Memria.
Exemplo: Utilizar o console Desempenho para monitorar os contadores indicados na Tabela 7.5.
A seguir temos uma descrio dos contadores do SQL Server para o objeto MSSQL$SQL2005: 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.
Para adicionar os contadores indicados na Tabela 7.5, siga os passos indicados a seguir:
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$SQL2005: 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.
Objeto Contadores
MSSQL$SQL2005: General Statistics Logins/sec
MSSQL$SQL2005: General Statistics Logouts/sec
MSSQL$SQL2005: General Statistics User Connections
Processador Porcentagem de tempo do processador.
Processador % Tempo de usurio
Memria Mbytes disponveis.
Tabela 7.5 Contadores a serem monitorados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4380000Curso Completo
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.42 temos um exemplo da medio dos contadores adicionados neste exemplo.
Figura 7.42 Monitorando diversos contadores.
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.
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, com erros de lgica no cdigo T-SQL e que estejam
demorando muito para executar. Enfim, uma ferramenta em que o DBA pode ter um acompanhamento
do que est sendo executado em uma ou mais instncias do servidor SQL Server.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000439
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 define o que chamamos de um Trace. Podemos criar um
trace novo, onde vamos definir quais os eventos 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. Estes modelos de trace encontram-se na seguinte pasta:
C:\Arquivos de programas\Microsoft SQL Server\90\Tools\Profiler\Templates\Microsoft SQL Server\90
Os templates que eram disponibilizados com o SQL Server 2000, esto disponveis em: C:\Arquivos de
programas\Microsoft SQL Server\90\Tools\Profiler\Templates\Microsoft SQL Server\80. Os templates
de trace do SQL Server 7.0 esto disponveis na pasta: C:\Arquivos de programas\Microsoft SQL
Server\90\Tools\Profiler\Templates\Microsoft SQL Server\70
Para os caminhos indicados anteriormente, considerei que o SQL Server 2005 foi instalado no drive C:
A seguir a descio dos principais modelos de trace disponveis.
SP_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.
Standard.tdf: Captura informaes sobre conexes (login e logout), execuo de stored proce-
dures e a execuo de comandos SQL em batch, na ordem em que os comandos vo sendo
executados.
TSQL.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.
TSQL_Duration.tdf: Coleta o comando T-SQL e o tempo de durao para a execuo dos
comandos.
TSQL_Grouped.tdf: Coleta informaes semelhantes s coletadas pelo modelo TSQL.tdf, porm
agrupa as informaes pelo nome do usurio que enviou o comando.
TSQL_Replay.tdf: Fornece uma srie de informaes detalhadas sobre os comandos que foram
executados no servidor e permite que os comandos sejam reexecutados no servidor.
TSQL_SPs.tdf: Informa o stored procedure que foi executado, alm de informar os comandos
que foram executados dentro do stored procedure. Exibe os comandos na ordem em que fo-
ram executados.
Tuning.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. Ao executarmos novamente os mesmos
comandos, podemos observar se o tempo de execuo melhorou aps as alteraes efetuadas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4400000Curso Completo
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, muito acima do esperado.
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 estes 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 (embora eu conhea muita gente que trabalha
exatamente desta maneira, ou seja, sem planejar).
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 prtico.
Exemplo: Vamos utilizar o profiler para fazer o acompanhamento das atividades da instncia
SERVIDOR\SQL2005. Utilizaremos o modelo Standard.TDF. Nosso exemplo ser constitudo dos
seguintes procedimentos:
Procedimento 1: Abrir o profiler e criar um novo trace baseado no modelo Standard.TDF.
Procedimento 2: Gerar atividades na instncia SERVIDOR\SQL2005. Iremos gerar atividades
utilizando o SQL Server Management Studio.
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 Exemplo1
(banco de dados este criado no Captulo 4). Esta tabela ser criada pelo prprio profiler, na
hora de salvar a atividade capturada.
Ento, mos obra.
Procedimento 1: Para abrir o profiler e criar um novo trace baseado no modelo Standard.tdf,
siga os passos indicados a seguir:
1. Abra o profiler (Iniciar -> Programas -> Microsoft SQL Server 2005 -> Profiler). Surge a janela do
profiler, indicada na Figura 7.43.
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\SQL2005. Para autenticao certifique-se de que a opo
Windows authentication esteja selecionada. D um clique em Connect, para efetuar a conexo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000441
Figura 7.43 A janela principal do profiler.
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.44.
Figura 7.44 Configurando as propriedades do trace.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4420000Curso Completo
4. A guia General j vem selecionada, por padro. No campo Trace name digite: Trace de teste.
5. Observe que no campo Trace SQL Server j aparece SERVIDOR\SQL2005. Na lista Template
name, certifique-se de que esteja selecionado o modelo Standard (default).
A guia Events Selection: 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. 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, marcando o evento, ou removidos, simplesmente desmarcando o evento. Para cada evento que
seleciona, voc pode marcar uma ou mais colunas, para definir quais informaes sero capturadas
para cada evento. No vamos alterar nada nesta guia.
6. D um clique no boto Run para iniciar a captura de eventos pelo profiler.
Sua janela deve estar conforme indicado na Figura 7.45.
Figura 7.45 A captura foi iniciada.
Agora vamos gerar atividades na instncia SERVIDOR\SQL2005, para que sejam capturados eventos
no profiler.
7. Minimize o profiler e vamos para o prximo procedimento.
Procedimento 2: Gerar atividades na instncia SERVIDOR\SQL2005. Iremos gerar atividades
utilizando o Enterprise Manager e a janela de execuo de comandos T-SQL. Faremos algumas
tentativas de logon com a senha incorreta, para gerar um evento de falha de logon.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000443
1. SQL Server Management Studio.
2. Navegue at a instncia SERVIDOR\SQL2005 e, depois, at o Banco de Dados Northwind.
Clique com o boto direito do mouse na instncia e, no menu de opes que exibido, clique
em New Query. Ser aberta a janela de execuo de comandos T-SQL.
3. Execute os seguintes comandos:
USE NorthWind
SELECT * FROM DBO.ORDERS
4. Restaure o profiler e observe que uma srie de eventos j foi capturada, conforme indicado na
Figura 7.46.
Figura 7.46 O profiler capturando atividades na instncia SERVIDOR\SQL2005.
5. Observe que na figura aparece em destaque o comando executado quando abrimos a tabela
Orders: SELECT * FROM Orders.
6. Minimize o profiler.
7. Feche o SQL Server Management Studio.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4440000Curso Completo
Figura 7.47 O evento de parada do trace: Trace Stop.
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 2002 ou SQL Server 2005. Para isso utilizamos os comandos File -> Export -> Script Trace
Definition -> For SQL Server 2005 ou File -> Export -> Script Trace Definition -> For SQL Server 2000,
respectivamente.
4. Agora vamos salvar o trace em uma tabela do Banco de Dados Exemplo1, 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\SQL2005, e marque Windows authentication.
7. D um clique no boto Connect para conectar com a instncia selecionada.
8. Na janela Destination Table, que exibida, devemos selecionar o nome do Banco de Dados e o
nome da tabela onde sero salvos os dados capturados.
9. Na lista Database selecione Exemplo1.
10. No campo Table, digite TraceEx1, conforme indicado na Figura 7.48.
2. Para parar a captura selecione o comando File -> Stop Trace.
3. No meu caso foram capturados 8261 eventos, sendo que o ltimo evento justamente a parada
do trace: TraceStop, conforme indicado na Figura 7.47.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
Curso Completo0000445
Figura 7.48 Salvando os eventos capturados.
11. D um clique no boto OK e pronto. A tabela TraceEx1 ser criada no Banco de Dados
Exemplo1, da instncia SERVIDOR\SQL2005 e os dados capturados pelo profiler sero
gravados nesta tabela.
12. Voc estar de volta ao profiler. Feche-o.
Voc pode abrir o SQL Server Management Studio e acessar a tabela TraceEx1 criada anteriormente. Na
Figura 7.49 podemos ver os dados que foram salvos nesta tabela.
Figura 7.49 A tabela TraceEx1.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4460000Curso Completo
CONCLUSO
Neste captulo aprendemos a utilizar uma srie de ferramentas e comandos para administrao,
monitoramento e otimizao do SQL Server 2005.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 8
REPLICAO: CONCEITO,
IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4480000Curso Completo
N
O
T
A
N
O
T
A
INTRODUO
Replicao o processo de manter duas ou mais rplicas (cpias) dos dados em diferentes instncias
do SQL Server 2005 (podendo at mesmo ser diferentes instncias de diferentes servidores). Podemos
replicar desde um conjunto de linhas ou colunas de uma tabela at um Banco de Dados inteiro. Com
o SQL Server 2005, temos uma srie de funes e assistentes que nos permitem configurar o processo
de replicao. Uma vez estabelecida a replicao, o SQL Server 2005 encarrega-se de manter
sincronizadas as diversas rplicas. No contexto deste captulo, chamaremos de rplica uma cpia de
um conjunto de dados, mantida automaticamente sincronizada pelo SQL Server, em duas ou mais
instncias do SQL Server 2005.
A necessidade de replicao no exclusiva de ambientes de Bancos de Dados. Podemos citar o caso do
Active Directory do Windows 2000 Server ou Windows Server 2003. 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 DCs (Domain Controlers), os quais tm uma cpia
completa do Banco de Dados do Active Directory. Alteraes podem ser feitas em qualquer DC do
domnio. Como que o Windows 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 controlado pelo prprio Windows, e no tem nenhuma relao com os mecanismos de replicao
do SQL Server 2005, os quais 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 este capaz de reiniciar do ponto onde foi
interrompido, em caso de falhas de comunicao ou outra falha qualquer. Com isso o SQL Server 2005
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 2005 para viabilizar o processo de
replicao. Veremos a definio dos principais termos utilizados quando tratarmos com replicao no
SQL Server 2005.
Na seqncia, veremos os tipos de replicao existentes no SQL Server 2005. 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, atravs
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000449
de exemplos prticos, passo a passo. Como temos duas instncias do SQL Server 2005 instaladas,
vamos configurar a replicao entre as duas instncias e entre dois Bancos de Dados da mesma instncia.
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 2005 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4500000Curso Completo
Situao 1: Em cada um dos escritrios da empresa ABC Ltda. temos uma rede local. Em cada rede local
temos um servidor SQL Server 2005 com diversos Bancos de Dados. Na Tabela 8.1, temos o nome dos
servidores SQL Server 2005 de cada localidade.
Os pedidos dos clientes de cada regio so digitados em um aplicativo de vendas, desenvolvido usando
VB.NET, o qual armazena as informaes no Banco de Dados Vendas do servidor SQL Server 2005 da
respectiva 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 2005 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 para o problema proposto.
Localidade SERVIDOR\instncia
So Paulo SQLSRVSP\PRODUO
Rio de Janeiro SQLSRVRJ\PRODUO
Porto Alegre SQLSRVPA\PRODUO
Belo Horizonte SQLSRVBH\PRODUO
Tabela 8.1 Servidores de cada localidade.
Figura 8.2 Pedidos digitados em diferentes servidores SQL Server 2005.
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000451
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, esta continua
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 e as velocidades dos links de
comunicao disponveis. Na Figura 8.3, temos uma viso deste processo de replicao.
Figura 8.3 Escritrios replicando dados para a base consolidada.
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?
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.
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 em So Paulo, cada um enviando os pedidos do dia. Aps o ltimo escritrio ter
replicado, a base 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4520000Curso Completo
Na Figura 8.4, temos uma visualizao deste processo de replicao, em que a sincronizao dos dados
ocorre em dois sentidos.
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.
Tabela 8.2 Agendamento das replicaes.
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 2005 e as caractersticas de cada um.
FATORES LIGADOS REPLICAO
Quando formos planejar um esquema de replicao, como forma de manter sincronizadas duas ou
mais cpias de um determinado conjunto de dados, devemos levar em considerao diversos fatores.
A seguir descrevemos quais so estes fatores.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000453
N
O
T
A
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 uma 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.
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, quando o servidor voltar a estar disponvel,
precisamos utilizar uma outra tcnica para sincroniz-lo com os demais, antes que ele volte a ser colocado online, em produo.
Autonomia da rplica: Este fator tem a ver com a possibilidade de o servidor em que est uma
rplica poder continuar em funcionamento, caso o servidor 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 de comunicao 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
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4540000Curso Completo
com dados atualizados, pois as alteraes feitas no Banco de Dados original da matriz (conhecido
como Banco de Dados mestre) so replicadas automaticamente 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 entradad de dados ou consultas simples, como por
exemplo localizar o cadastro de um cliente para consulta ou atualizao. 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 centralizado. 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, em regies especficas. Neste caso, so elaboradas consultas
bastante complexas que exigem bastante do Banco de Dados, em termos de recursos e de
desempenho. 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 2005
PR-REQUISITOS
Noes sobre replicao.
Fundamentos apresentados na Parte I.
METODOLOGIA
Apresentao do modelo de replicao do SQL Server 2005 e dos tipos de replicao existentes.
O SQL Server 2005 utiliza um modelo de replicao, muitas vezes chamado de metfora de replicao,
baseado nos seguintes elementos:
Publisher
Distributor
Subscribers
Publicao
Article
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000455
N
O
T
A Este praticamente o mesmo modelo de replicao utilizado pelo SQL Server 2000. A replicao foi uma rea onde no houve grandes
novidades no SQL Server 2005, em relao ao SQL Server 2000. Foram feitas pequenas melhorias, mas a estrutura bsica e conceitual da
replicao permaneceu a mesma do SQL Server 2000.
Com uma viso geral, podemos dizer que o publisher quem publica informaes a serem replicadas
para um ou mais dubscribers. 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 2005. Para melhor explicarmos estes elementos, vamos nos basear na Figura 8.5.
Figura 8.5 O modelo de replicao do SQL Server 2005.
Um servidor SQL Server 2005 pode representar um ou mais dos papis indicados na Figura 8.5: Pub-
lisher, 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 subscriber. 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 2005 que est disponibilizando dados
para serem replicados para outros servidores. O publisher mantm a cpia original dos dados e envia o
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4560000Curso Completo
N
O
T
A
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, definir quais dados
devem ser includos no conjunto de dados a ser replicado. Por padro, esta funo no est habilitada
em um servidor SQL Server 2005. Esta funo 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 2005, queremos fazer referncia a uma instncia
do SQL Server 2005. Se existirem, por exemplo, duas instncias do SQL Server 2005 instaladas no mesmo computador, como se fossem
dois servidores completamente independentes, sendo que um deles pode disponibilizar 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
replicao que estamos implementando. No prximo item trataremos dos diferentes tipos de replicao
do SQL Server 2005.
Figura 8.6 Um distributor com vrios publishers.
Podemos ter um distributor local, situao em que o distributor o mesmo servidor que publica os
dados (publisher), isto , as duas funes esto configuradas na mesma instncia do mesmo servidor
SQL Server 2005. Tambm podemos ter um distributor remoto, onde o servidor que desempenha a
funo de distributor no o mesmo que desempenha a funo de publisher. Tambm podemos ter
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000457
N
O
T
A
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.
SUBSCRIBER
Um subscriber um servidor SQL Server que armazena uma rplica dos dados e recebe atualizaes
peridicas dos dados. Os dados recebidos pelo subscriber podem ser alterados em determinadas
configuraes. O subscriber pode inclusive publicar 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 ou mais 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.
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 precisa ser replicado.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4580000Curso Completo
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 so replicados os
comandos que alteraram os dados, para que estes mesmos comandos sejam executados em outras
rplicas, nos servidores de destinos (subscribers).
Na Figura 8.7, temos um exemplo onde aplicamos um filtro vertical para criar um artigo que inclui
apenas algumas colunas da tabela Orders. Incluimos as seguintes colunas: OrderID, CustomerID,
OrderDate e ShipCountry.
Figura 8.7 Um artigo com filtro vertical.
Figura 8.8 Um artigo com filtro horizontal.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000459
N
O
T
A
Na Figura 8.8, temos um exemplo onde aplicamos um filtro horizontal, para criar um artigo que inclui
apenas alguns registros da tabela Orders. Incluimos apenas os registros para o PasDeDestino = Brazil.
Na Figura 8.9, temos um exemplo onde aplicamos um filtro vertical e um filtro horizontal para criar
um artigo que inclui apenas alguns registros da tabela Orders. Incluimos apenas as colunas OrderID,
CustomerID, OrderDate e ShipCountry, para os registros em que PasDeDestino = Brazil.
Na parte prtica deste captulo aprenderemos a criar artigos e a aplicar os diferentes tipos de filtros.
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 nico 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 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4600000Curso Completo
Figura 8.10 Publisher, distributors, subscribers, artigos e publicaes.
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 foram apresentados na parte inicial deste captulo, para que
possamos fazer um planejamento cuidadoso da replicao.
Um pouco mais de pacincia e teoria e logo partiremos para implementar a replicao na prtica.
KNOW-HOW EM: SUBSCRIES E TIPOS DE SUBSCRIES
PR-REQUISITOS
Noes sobre replicao.
Conhecer o modelo de replicao do SQL Server 2005.
Fundamentos apresentados na Parte I.
Saber utilizar o SQL Server Management Studio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000461
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 subscrio criada e administrada e tambm de que maneira os dados sero replicados.
PUSH SUBSCRIPTION
Este tipo de subscrio feito durante a criao ou administrao de uma publicao. Neste tipo de
subscrio, o distributor responsvel por enviar (push = empurrar) 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
distributor, do que ter que configurar a subscrio em diversos servidores, no caso os diversos subscrib-
ers. Neste caso, do distributor a iniciativa de enviar as alteraes para os subscribers ( o distributor
que empurra 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 ir consumir recursos como memria e processador no distributor ou no publisher.
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 feito 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 atualizados 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 tempos 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 2005 instalado no seu notebook.
Para Pull subscriptions o agente de replicao roda no subscriber, consumindo memria e processador
deste equipamento.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4620000Curso Completo
N
O
T
A
KNOW-HOW EM: TIPOS DE REPLICAO
PR-REQUISITOS
Noes sobre replicao.
Conhecer o modelo de replicao do SQL Server 2005.
Fundamentos apresentados na Parte I.
METODOLOGIA
Apresentao dos tipos de replicao existentes no SQL Server 2005.
Temos trs tipos de replicao no SQL Server 2005: 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.
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.
Mesmo dados que no foram alterados sero tambm replicados. 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 ela 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 servios
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. Falarei mais sobre agentes ao longo deste captulo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000463
N
O
T
A
N
O
T
A
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 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 rplica
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 de baixa velocidade (links de 128 KB ainda so
bastante comuns em cidades do interior).
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 possvel, com o menor nvel de
latncia em relao aos demais tipos de replicao do SQL Server 2005.
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.
A seguir descrevo as situaes, onde indicado o uso da replicao do tipo Transactional Replication:
Para fazer com que as alteraes sejam repassadas para os subscribers, com a menor latncia possvel.
Os dados replicados sero utilizados por aplicaes que precisam de um tempo de latncia
muito baixo, o menor possvel.
Em situaes onde existe um grande nmero de operaes de insero, atualizao e excluso
no publisher.
Quando o publisher ou o subscriber no for um Banco de Dados do SQL Server, tais como o
ORACLE ou o DB2 da IBM.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4640000Curso Completo
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 rplicas.
O SQL Server 2005 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 2005 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 2005
PR-REQUISITOS
Noes sobre replicao.
Conhecer o modelo de replicao do SQL Server 2005.
Conhecer os tipos de replicao existentes no SQL Server 2005.
Fundamentos apresentados na Parte I.
METODOLOGIA
Apresentao dos agentes de replicao existentes no SQL Server 2005.
O suporte replicao no SQL Server 2005 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. Um agente nada mais
do que um servio rodando no Windows. A seguir, vamos ver um pouco sobre os agentes existentes
no SQL Server 2005.
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 (metadados), 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.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000465
N
O
T
A
Figura 8.11 Snapshot agent em ao.
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
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 distribu-
tor 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 distribu-
tor. 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4660000Curso Completo
N
O
T
A
Agora que j conhecemos a teoria bsica sobre replicao no SQL Server 2005, estamos preparados
para comear a implementar a replicao na prtica.
KNOW-HOW EM: CONFIGURANDO A
REPLICAO NO SQL SERVER 2005
PR-REQUISITOS
Conceitos tericos sobre replicao apresentados nos itens iniciais deste captulo.
Conhecer o modelo de replicao do SQL Server 2005.
Fundamentos apresentados na Parte I.
Saber utilizar o SQL Server Management Studio.
METODOLOGIA
Apresentao dos comandos e assistentes para implementao da replicao.
TCNICA
Implementar a replicao no SQL Server 2005.
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\SQL2005
SERVIDOR\CURSOSJB
Iremos configurar a instncia SERVIDOR\SQL2005 como publisher e distributor. Depois, vamos
configurar a instncia SERVIDOR\CURSOSJB 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 2005.
Na configurao de um servidor SQL Server para replicao, o primeiro passo a criao do publisher
e do distributor. Estes dois passos so executados com a utilizao dos assistentes de replicao do SQL
Server 2005. Vamos, finalmente, prtica. Uma diferena importante do SQL Server 2005 em relao
ao SQL Server 2000 que no SQL Server 2005 o mesmo assistente que configura a instncia como
publisher tambm oferece opes para criar um ou mais artigos. Na verdade no tem um assistente
especfico s para configurar a instncia como publisher. O assistente para criar uma publicao, j
definindo os artigos que faro parte da publicao (faremos um exemplo, logo a seguir, onde criaremos
uma publicao e adicionaremos trs artigos). Ao criar uma publicao, voc j configura a instncia
como um publisher. A seguir um exemplo prtico, passo a passo.
Exemplo prtico: Configurar a instncia SERVIDOR\SQL2005 como publisher e distributor:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000467
Para configurar a instncia SERVIDOR\SQL2005 como publisher e distributor, siga os seguintes passos:
1. Abra o SQL Server Management Studio (Iniciar -> Programas -> Microsoft SQL Server 2005 ->
SQL Server Management Studio).
2. Na janela Object Explorer, d um clique no sinal de + ao lado da instncia SERVIDOR\SQL2005
para expandir esta opo.
3. Nas opes que so exibidas, d um clique no sinal de + ao lado da opo Replication, para
exibir as opes disponveis. Sero exibidas as opes Publications e Subscriptions at This Server.
4. Para criar uma nova publicao clique com o boto direito do mouse na opo Publications e, no
menu de opes que exibido, clique em New Publication para iniciar o assistente de publicao.
5. Surgir a tela inicial do assistente, na qual so informadas as aes que o assistente ir ajud-lo
a executar.
6. A primeira tela apenas informativa. D um clique no boto Next, seguindo para a prxima
etapa do assistente.
Na segunda etapa devemos selecionar qual servidor\instncia atuar como distributor. Podemos utilizar
a instncia SERVIDOR\SQL2005 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, este j deve ter sido
previamente configurado como um distributor e tambm deve estar registrado no SQL Server Manage-
ment Studio.
Figura 8.12 Definindo um novo distributor.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4680000Curso Completo
7. No nosso exemplo, vamos utilizar a instncia SERVIDOR\SQL2005 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.
8. D um clique no boto Next, para seguir para a prxima etapa do assistente.
9. Nesta etapa ser definida a pasta onde sero armazenadas cpias dos dados (Snapshots) recebidas
do publisher. Por padro, sugerida a seguinte localizao:
C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\ReplData
Aqui temos uma questo importante a considerar. Se voc usar um caminho do tipo C:\, D:\, etc., no
sero suportadas subscries do tipo Pull Subscriptions, que so Subscries onde a iniciativa de
transferncia dos dados feita pelo subscriber (Pull = Puxar, o subscriber quem puxa as alteraes
a partir do distributor). Usando uma caminho local, do tipo C:\ , D:\ , etc, somente sero suportadas
Subscries do tipo Push Subscriptions, que so subscries onde a iniciativa de transferncia dos
dados feita pelo distributor (Push = Empurrar, ou seja, o distributor que empurra os dados para o
subscriber). Para que sejam aceitas subscries tanto do tipo Pull Subsciptions quanto Push Subscrip-
tions, deve ser utilizado um caminho de rede, como no exemplo a seguir:
\\servidor\C$\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\ReplData
Figura 8.13 Aviso quando utilizamos um compartilhamento administrativo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000469
N
O
T
A
Observe que utilizamos o caminho de rede e no um drive do tipo C:\. No exemplo, temos o SQL
Server instalado no drive C:, o qual acessado atravs do compartilhamento administrativo C$. Por
padro, o Windows 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. 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 C$.
Para maiores informaes sobre permisses NTFS e permisses de compartilhamento no Windows 2000, consulte o livro Manual de Estudos
Para o Exame 70-217, 752 pginas, de minha autoria, publicado pela Axcel Books (www.axcel.com.br). Para maiores informaes sobre
segurana no SQL Server 2005 consulte o Captulo 6 do presente livro. Para maiores informaes sobre permisses NTFS e permisses de
compartilhamento no Windows Server 2003, consulte o livro Windows Server 2003 Curso Completo, 1568 pginas, de minha autoria,
publicado pela editora Axcel Books (www.axcel.com.br).
O restante do caminho a pasta onde o SQL Server 2005 instalado por padro: Arquivos de
programas\Microsoft SQL Server\MSSQL.1\MSSQL\ReplData. Observe que temos a pasta MSSQL.1.
Cada instncia do SQL Server 2005 instalada em uma pasta separada.
No vamos alterar o caminho sugerido.
10. Altere o caminho para usar um caminho de servidor. \\servidor\C$\Arquivos de
programas\Microsoft SQL Server\MSSQL.1\MSSQL\ReplData
11. D um clique no boto Next, seguindo para a prxima etapa do assistente.
12. Nesta etapa voc deve selecionar o Banco de Dados no qual esto as informaes que sero
publicadas. Para o nosso exemplo, vamos selecionar o Banco de Dados AdventureWorks.
Selecione o Banco de Dados AdventureWorks e clique em Avanar, para seguir para a prxima
etapa do assistente.
13. Nesta etapa voc deve selecionar o tipo de publicao que ser utilizado. Para o nosso exemplo,
vamos selecionar Snapshot Publication, conforme indicado na Figura 8.14.
14. D um clique no boto Next, seguindo para a prxima etapa do assistente.
15. Agora voc deve selecionar uma conta de logon que ser utilizada pelo agente de replicao.
fundamental que a conta tenha as devidas permisses na pasta de replicao e de acesso aos dados
que esto sendo replicados. Se a conta selecionada no tiver as permisses necessrias, o processo
de replicao ir falhar. Para selecionar uma conta clique no boto Security Settings. Ser exibida a
janela Snapshot Agent Security. Nesta janela voc informa a conta e respectiva senha a ser utilizada
pelo Snapshot Agent. Dependendo do modo de autenticao que est configurado para a instncia
do SQL Server 2005, voc poder usar somente contas do Windows ou tanto contas do Windows
quanto do SQL Server 2005. Para usar uma conta do SQL Server 2005, voc deve marcar a opo
Use the following SQL Server login. No nosso exemplo vamos usar uma conta de logon do Win-
dows, conforme exemplo indicado na Figura 8.15.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4700000Curso Completo
Figura 8.14 Selecionando o tipo Snapshot Replication.
Figura 8.15 Informando a conta de logon para o Snapshot Agent.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000471
16. Informe os dados da conta a ser utilizada e clique em OK, para fechar a janela Snapshot
Agent Security.
17. Voc estar de volta ao Assistente de publicao. D um clique no boto Next, seguindo para a
prxima etapa do assistente.
18. nesta etapa que voc ir definir quais dados sero publicados, ou seja, nesta etapa que voc
ir criar um ou mais artigos, os quais faro parte da publicao e sero replicados. No incio
deste captulo, voc viu que um artigo pode ser uma tabela inteira, pode ser uma view, um
stored procedure (o que ser publicado o resultado da execuo do stored procedure), pode
ser apenas algumas linhas de uma tabela (filtro horizontal), pode ser apenas algumas colunas
de uma tabela (filtro vertical) e pode ser somente algumas linhas com algumas colunas (filtros
horizontal e vertical). Para o nosso exemplo, iremos criar os artigos indicados a seguir:
Art_Produtos: Este artigo conter todos os registros da tabela Product.
Art_Employee: Este artigo conter apenas algumas das colunas da tabela Employee, ou seja,
aplicaremos um filtro Vertical. Este artigo ir replicar somente os seguintes campos da tabela
Employee: EmployeeID, NationalIDNumber, DepartmentID, ManagerID e EmergencyContactID.
Art_Redmond: Este artigo ser baseado na tabela Person.Address e ir replicar somente os
registros onde o campo City=Redmond. Ou seja, vamos aplicar um filtro horizontal, para
replicar somente as linhas que atendam a um determinado conjunto de critrios, no nosso
exemplo: City=Redmond.
Vamos ento tarefa de criar os trs artigos propostos. Para isso vamos usar a tela do assistente,
indicada na Figura 8.16:
Figura 8.16 Tela para criao dos artigos que faro parte da publicao.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4720000Curso Completo
19. Vamos iniciar pelo artigo Art_Produtos, o qual o mais simples de ser criado. Clique no sinal
de + ao lado da opo Tables, para exibir a lista de tabelas do Banco de Dados AdventureWorks.
Clique na caixa de seleo ao lado da tabela Product, para selecion-la. Ao selecionar uma
tabela, automaticamente, todos os seus campos so selecionados. Isso pode ser comprovado,
clicando no sinal de + ao lado da tabela Product. Observe que todos os seus campos foram
selecionados. Clique no sinal de ao lado da tabela Product, para ocultar a lista de campos.
Pronto, est criado o artigo Art_Produtos. Como no temos nenhum filtro nem horizontal
e nem vertical a ser aplicado, est OK o artigo Art_Produtos, o qual ir publicar a tabela
Product completa, ou seja, todos os seus campos e todos os seus registros. Vamos para a
criao do prximo artigo.
20. Vamos iniciar pelo artigo Art_Employee. Este artigo ir publicar apenas algumas das colunas da
tabela Employee, ou seja, vamos aplicar um filtro vertical. Voc deve estar com a opo Tables
expandida, com a lista de tabelas sendo exibida. Se no estiver sendo exibida a lista de tabelas,
clique no sinal de + ao lado da opo Tables. Clique na caixa de seleo ao lado da tabela
Employee, para selecion-la. Ao selecionar uma tabela, automaticamente, todos os seus cam-
pos so selecionados. Isso pode ser comprovado, clicando no sinal de + ao lado da tabela
Employee. Observe que todos os seus campos foram selecionados. Para o nosso exemplo,
somente os seguintes campos devem ficar marcados: EmployeeID, NationalIDNumber,
DepartmentID, ManagerID e EmergencyContactID. Certifique-se de que somente estes cam-
pos da tabela Employee estejam marcados e desmarque os demais campos. Sua janela deve
estar semelhante indicada na Figura 8.17:
Figura 8.17 Aplicando um filtro vertical tabela Employee.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000473
21. Agora vamos criar o nosso ltimo artigo: Art_Redmond: Este artigo ser baseado na tabela
Person.Address e ir replicar somente os registros onde o campo City=Redmond. Ou seja,
vamos aplicar um filtro horizontal, para replicar somente as linhas que atendam a um
determinado conjunto de critrios, no nosso exemplo: City=Redmond. Clique na caixa de
seleo ao lado da tabela Address, para selecion-la. Ao selecionar uma tabela, automaticamente,
todos os seus campos so selecionados. Isso pode ser comprovado, clicando no sinal de + ao
lado da tabela Address. Observe que todos os seus campos foram selecionados. Clique no sinal
de ao lado da tabela Address, para ocultar a lista de campos. Nesta etapa no temos mais o
que fazer. O critrio City=Redmond ser aplicado em uma das prximas etapas do assistente.
22. D um clique no boto Next, seguindo para a prxima etapa do assistente.
23. Eu fui, propositalmente, para a prxima etapa, para que surgisse a mensagem indicada na
Figura 8.18:
Figura 8.18 Mensagem informando sobre a replicao dos schemas.
Esta mensagem informa que um ou mais dos objetos que esto sendo publicados tm como donos
schemas que no o schema padro dbo. A messagem continua informando que estes schemas j devero
existir nos subscribers, caso contrrio a replicao no ir funcionar. No nosso exemplo prtico criamos
trs artigos. O artigo Art_Produtos publica dados da tabela Production.Product, ou seja, da tabela Prod-
uct, cujo dono o schema Production. Para garantir que a replicao ir funcionar, sem problemas, o
schema dever existir em qualquer subscriber que seja configurado para receber a replicao ou voc
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4740000Curso Completo
deve alterar o dono, durante a replicao, para ser o schema dbo, o qual j existe, automaticamente,
em toda instncia do SQL Server 2005 (veremos como fazer isso logo em seguida). O artigo Art_Employee,
o qual publica dados da tabela Humanresources.Employee, ou seja, da tabela Employee, cujo dono o
schema HumanResources. Para garantir que a replicao ir funcionar, sem problemas, este Schema
dever existir em qualquer subscriber que seja configurado para receber a replicao ou voc deve
alterar o dono, durante a replicao, para ser o Schema dbo, o qual j existe, automaticamente, em
toda instncia do SQL Server 2005 (veremos como fazer isso logo em seguida). E, finalmente, o artigo
Art_Redmond, o qual publica dados da tabela Person.Address, ou seja, da tabela Address, cujo dono
o schema Person. As mesmas consideraes anteriores so vlidas em relao ao schema Person.
Muito bem, agora vou mostrar como configurar o schema dbo para ser o dono, no destino, de todos os
objetos replicados. Ou seja, no destino, o dono ser o schema dbo, o qual j existe, automaticamente,
em toda instncia do SQL Server 2005.
24. D um clique no boto Back, para voltar para a etapa anterior do assistente. isso mesmo,
vamos voltar etapa anterior do assistente.
Figura 8.19 Definindo o schema dbo como dono no destino nos subscribers.
25. Clique na opo Tables para selecion-la. Clique no boto Article Properties. Dentre as opes
que so exibidas clique em Set Properties of all Tables Articles. Ou seja, vamos fazer alteraes
que se aplicam a todos os artigos de tabelas, que fazem parte da publicao. Ser aberta a janela
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000475
Properties for all Tables Articles. Clique no campo Destination Object Owner, apague o valor
atual e digite o novo valor: dbo, conforme indicado na Figura 8.19. Ou seja, estamos definindo
o schema dbo como sendo o dono de todos os objetos replicados, no destino, ou seja, nos
subscribers. Como o schema dbo existe, automaticamente, em toda instncia do SQL Server
2005, com isso garantimos que a replicao ir funcionar, sem problemas, independentemente
de os schemas que so os donos no publisher existirem ou no nos subscribers.
26. Clique em OK para fechar a janela de propriedades dos artigos. Voc estar de volta ao assistente
de publicao.
27. D um clique no boto Next, seguindo para a prxima etapa do assistente. Observe que agora o
aviso da Figura 8.18 no mais exibido e o assistente j vai diretamente para a etapa onde voc
pode definir filtros horizontais (critrios de filtragem), para os artigos que esto sendo publicados.
28. Agora temos que criar um filtro para o artigo Art_Redmond, no qual colocaremos o seguinte
critrio: City=Redmond. D um clique no boto Add. Ser aberta a janela Add Filter. Na lista
Select the table to filter, selecione a tabela Address (Person). Observe que no campo Filter state-
ment aparece o comando T-SQL adaptado para a publicao: SELECT <published_columns> FROM
[Person].[Address] WHERE. Observe a clusula WHER j includa, pronta para receber um ou
mais critrios. Na lista Columns clique no campo City, para marc-lo. Clique no boto >, para
incluir o campo City no comando T-SQL. Neste momento, o comando T-SQL deve estar assim:
SELECT <published_columns> FROM [Person].[Address] WHERE [City]. Agora s falta definirmos
o valor do critrio para o campo City. Isso feito digitando diretamente no comando T-SQL. O
comando completo deve ficar assim: SELECT <published_columns> FROM [Person].[Address]
WHERE [City] = Redmond. A sua janela deve estar conforme indicado na Figura 8.20.
Figura 8.20 Definindo um filtro horizontal para um dos artigos.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4760000Curso Completo
29. Clique em OK para fechar a janela Add Filter. Voc estar de volta ao assistente de publicao.
Observe que a tabela Address j aparece na lista Filtered Tables, conforme indicado na Figura 8.21:
Figura 8.21 Lista de tabelas com filtros definidos.
30. D um clique no boto Next, seguindo para a prxima etapa do assistente.
31. Nesta etapa voc define se deve ser criado um snapshot imediatamente (uma cpia integral
dos dados que sero replicados). Feita a publicao dos dados, estes estaro disponveis para
um ou mais subscribers. Quando um servidor se inscreve para receber os dados, ele recebe,
inicialmente, um snapshot, ou seja, uma cpia completa dos dados. Depois, o subscriber passa
a receber somente as alteraes efetuadas no publisher. Lembrando que a replicao Snapshot
unidirecional, ou seja, no podero ser feitas alteraes nos dados, nos subscribers, somente
no publisher. Voc tambm pode criar um agendamento para fazer com que um snapshot seja
recriado, de acordo com um agendamento determinado, como por exemplo todos os dias, s
2:00 da madrugada. Para criar um agendamento, marque a opo Schedule the Snapshot Agent
to run at the following times e clique no boto Change, para definir um ou mais agendamentos.
No nosso exemplo no vamos definir agendamentos. Certifique-se de que somente a opo
Create a snapshot immediately esteja marcada e clique em Next, seguindo para a prxima
etapa do assistente.
32. Nesta etapa voc pode marcar a opo Create the publication immediately, para que a publicao
seja criada imediatamente e tambm pode marcar a opo Generate a script, caso voc queira
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000477
Figura 8.22 Criar a publicao e gerar um arquivo com os comandos T-SQL.
33. D um clique no boto Next, seguindo para a prxima etapa do assistente.
34. Nesta etapa (que s exibida se voc marcar a opo para gerar o script, na etapa anterior),
voc definie onde ser gravado o script, o nome do arquivo e as propriedades do arquivo.
Selecione as opes indicadas na Figura 8.23.
35. D um clique no boto Next, seguindo para a prxima etapa do assistente.
36. Ser exibida a tela final do assistente, onde apresentado um resumo de todas as opes
selecionadas. Caso voc tenha que alterar alguma opo, s utilizar o boto Back. Nesta etapa
voc deve digitar um nome para publicao. Digite Minha Publicao, no campo Publication
Name e clique em Finish para encerrar o assistente e criar a publicao.
que seja criado um arquivo, contendo todos os comandos, necessrios para gerar a publicao,
de acordo com as opes que voc selecionou no assistente. Este script pode ser til, por exemplo,
para rapidamente recriar a publicao, em caso de problemas. Voc pode gravar estes comandos
em um arquivo e, quando for necessrio recriar a publicao, s copiar estes comandos e
execut-los na janela de execuo de comandos T-SQL. Marque as duas opes desta etapa,
conforme indicado na Figura 8.22:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4780000Curso Completo
Figura 8.23 Configuraes do arquivo com os comandos.
37. O SQL Server 2005 comear a criar a publicao e exibir uma janela, indicando o progresso
do trabalho, conforme exemplo da Figura 8.24:
Figura 8.24 Progresso da criao da publicao.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000479
38. Concludas as diversas etapas de criao da publicao, clique em Close para fechar a janela
New Publication Wizard. Muito bem, a publicao foi criada, com os trs artigos que criamos
neste exemplo. A seguir veremos como conferir se a publicao foi realmente criada e como
podemos fazer configuraes em uma publicao j existente. Antes, apenas a ttulo de
curiosidade, coloco a seguir o script gerado pelo assistente (lembre que, em uma das etapas
finais, marcamos a opo para gerar um arquivo com todos os comandos T-SQL, necessrios
para criao da publicao):
*********************************************************************************************************
- Enabling the replication database
use master
exec sp_replicationdboption @dbname = NAdventureWorks, @optname = Npublish, @value =
Ntrue
GO
Adding the snapshot publication
use [AdventureWorks]
exec sp_addpublication @publication = NMinha Publicao, @description = NSnapshot
publication of database AdventureWorks from Publisher SERVIDOR\SQL2005'.,
@sync_method = Nnative, @retention = 0, @allow_push = Ntrue, @allow_pull = Ntrue,
@allow_anonymous = Ntrue, @enabled_for_internet = Nfalse, @snapshot_in_defaultfolder =
Ntrue, @compress_snapshot = Nfalse, @ftp_port = 21, @ftp_login = Nanonymous,
@allow_subscription_copy = Nfalse, @add_to_active_directory = Nfalse, @repl_freq =
Nsnapshot, @status = Nactive, @independent_agent = Ntrue, @immediate_sync = Ntrue,
@allow_sync_tran = Nfalse, @autogen_sync_procs = Nfalse, @allow_queued_tran =
Nfalse, @allow_dts = Nfalse, @replicate_ddl = 1
exec sp_addpublication_snapshot @publication = NMinha Publicao, @frequency_type = 1,
@frequency_interval = 0, @frequency_relative_interval = 0, @frequency_recurrence_factor =
0, @frequency_subday = 0, @frequency_subday_interval = 0, @active_start_time_of_day = 0,
@active_end_time_of_day = 235959, @active_start_date = 0, @active_end_date = 0, @job_login
= NSERVIDOR\Administrador, @job_password = null, @publisher_security_mode = 1
GO
use [AdventureWorks]
exec sp_addarticle @publication = NMinha Publicao, @article = NAddress,
@source_owner = NPerson, @source_object = NAddress, @type = Nlogbased, @description
= null, @creation_script = null, @pre_creation_cmd = Ndrop, @schema_option =
0x00000000000044F1, @identityrangemanagementoption = Nmanual, @destination_table =
NAddress, @destination_owner = Ndbo, @status = 0, @vertical_partition = Nfalse,
@filter_clause = N[City] = Redmond
Adding the article filter
exec sp_articlefilter @publication = NMinha Publicao, @article = NAddress,
@filter_name = NFLTR_Address_1__58', @filter_clause = N[City] = Redmond,
@force_invalidate_snapshot = 1, @force_reinit_subscription = 1
Adding the article synchronization object
exec sp_articleview @publication = NMinha Publicao, @article = NAddress, @view_name
= NSYNC_Address_1__58', @filter_clause = N[City] = Redmond,
@force_invalidate_snapshot = 1, @force_reinit_subscription = 1
GO
use [AdventureWorks]
exec sp_addarticle @publication = NMinha Publicao, @article = NEmployee,
@source_owner = NHumanResources, @source_object = NEmployee, @type = Nlogbased,
@description = null, @creation_script = null, @pre_creation_cmd = Ndrop, @schema_option
= 0x00000000000044F1, @identityrangemanagementoption = Nmanual, @destination_table =
NEmployee, @destination_owner = Ndbo, @status = 0, @vertical_partition = Ntrue
Adding the articles partition column(s)
exec sp_articlecolumn @publication = NMinha Publicao, @article = NEmployee, @column
= NEmployeeID, @operation = Nadd, @force_invalidate_snapshot = 1,
@force_reinit_subscription = 1
exec sp_articlecolumn @publication = NMinha Publicao, @article = NEmployee, @column
= NNationalIDNumber, @operation = Nadd, @force_invalidate_snapshot = 1,
@force_reinit_subscription = 1
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4800000Curso Completo
exec sp_articlecolumn @publication = NMinha Publicao, @article = NEmployee, @column
= NDepartmentID, @operation = Nadd, @force_invalidate_snapshot = 1,
@force_reinit_subscription = 1
exec sp_articlecolumn @publication = NMinha Publicao, @article = NEmployee, @column
= NManagerID, @operation = Nadd, @force_invalidate_snapshot = 1,
@force_reinit_subscription = 1
exec sp_articlecolumn @publication = NMinha Publicao, @article = NEmployee, @column
= NEmergencyContactID, @operation = Nadd, @force_invalidate_snapshot = 1,
@force_reinit_subscription = 1
Adding the article synchronization object
exec sp_articleview @publication = NMinha Publicao, @article = NEmployee, @view_name
= NSYNC_Employee_1__58', @filter_clause = null, @force_invalidate_snapshot = 1,
@force_reinit_subscription = 1
GO
use [AdventureWorks]
exec sp_addarticle @publication = NMinha Publicao, @article = NProduct,
@source_owner = NProduction, @source_object = NProduct, @type = Nlogbased,
@description = null, @creation_script = null, @pre_creation_cmd = Ndrop, @schema_option
= 0x00000000000044F1, @identityrangemanagementoption = Nmanual, @destination_table =
NProduct, @destination_owner = Ndbo, @status = 0, @vertical_partition = Nfalse
GO
********************************************************************************************************
Sem dvidas, podemos dizer que temos aqui comandos T-SQL bem avanados. Ainda bem que temos
os assistentes para nos ajudar. bem mais fcil usar o assistente do que aprender todos estes comandos
e as respectivas sintaxes.
KNOW-HOW EM: CONFIGURAO E ADMINISTRAO DE PUBLICAES
Aps ter criado uma publicao, voc poder alter-la, conforme for necessrio. Aps ter criado uma
publicao, ela passa a ser exibida na opo Replication -> Publications, dentro da instncia onde a
publicao foi criada. No exemplo da Figura 8.25, temos a publicao Minha Publicao, do Banco de
Dados AdventureWorks, da instncia SERVIDOR\SQL2005, j sendo exibida na lista de publicaes.
Para acessar as propriedades de uma publicao, clique com o boto direito do mouse na publicao e,
no menu de opes que exibido, clique em Properties. Ser aberta a janela de propriedades da
publicao, com a guia General automaticamente selecionada. Na guia General, voc pode alterar a
descrio da publicao, mas no pode alterar o nome da publicao. Nesta guia, voc tambm pode
definir se as subscries iro expirar ou no. O padro que as subscries no expirem. Na guia
General voc pode marcar a opo Subscriptions expire and may be dropped if not synchronized in
the following number of hours:, para definir por quantas horas os dados estaro disponveis para
serem replicados para os subscribers. Se no houver uma replicao no tempo definido no campo
Hours, os dados no sero mais replicados e sero excludos. Somente quando um novo conjunto de
dados for gerado, ser feita uma nova replicao.
D um clique na guia Articles. As opes desta guia so idnticas s opes da etapa do assistente, onde
voc definiu quais artigos fariam parte da publicao. Voc pode usar a guia Articles para alterar os
arquivos existentes, excluir artigos e incluir novos artigos na publicao. Voc tambm pode usar o
boto Article Properties, para definir as propriedades para um artigo em particular ou para todos os
artigos, ao mesmo tempo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000481
Figura 8.25 A publicao Minha Publicao, criada no exemplo anterior.
D um clique na guia Filter Rows. Nesta guia voc define os filtros horizontais, definindo critrios de
filtragem para um ou mais dos artigos. Apenas para lembrar, no exemplo anterior, ns definimos um
filtro para o artigo Art_Redmond. Definimos o seguinte filtro: City=Redmond. Nesta guia voc pode
alterar os filtros existentes, adicionar novos filtros ou excluir filtros.
D um clique na guia Snapshot. Nesta guia voc define vrias opes, que afetam a maneira como o
snapshot dos dados ser efetuado. Inicialmente, voc pode definir o formato dos dados. A opo
Native SQL Server deve ser utilizada se os subscribers forem tambm instncias do SQL Server. J a
opo Character deve ser utilizada se o publisher ou um ou mais dos subscribers no so uma instncia
do SQL Server. Nesta guia voc tambm pode definir se os arquivos, contendo os dados a serem
replicados, sero colocados no caminho padro sugerido pelo SQL Server 2005, ou em uma pasta que
voc selecionar. Por fim, voc tambm pode configurar scripts que sero executados antes e/ou depois
da criao do snapshot. Por exemplo, se voc est replicando dados no formato Character, para serem
importados por um outro Banco de Dados que no o SQL Server, voc pode rodar um script aps a
criao do snapshot, para adaptar os dados para o formato esperado pelos subscribers.
D um clique na guia FTP Snapshot. Nesta guia voc define se o protocolo FTP dever ou no ser
utilizado pelos subscribers, para fazer download dos arquivos de dados a serem replicados. Por padro,
est desabilitada a opo de usar FTP. Eu recomendo que voc mantenha esta opo desabilitada e
deixe os agentes de replicao do SQL Server se encarregarem da transferncia dos dados a serem
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4820000Curso Completo
replicados. bem mais seguro do que o uso do FTP, o qual um protocolo bastante frgil, em termos
de segurana.
D um clique na guia Subscriptions Options. Nesta guia voc pode configurar uma srie de opes que
iro definir como sero aceitas as subscries para esta publicao. Por exemplo, voc usa a opo
Allow pull subscriptions, para definir se sero ou no aceitas subscries do tipo Pull, nas quais o
subscriber que inicia o processo de solicitar a cpia dos dados que esto no distributor, ou seja, na
subscrio do tipo Pull o subscriber que puxa os dados (Pull = puxar).
D um clique na guia Subscriptions Options. Nesta guia voc pode configurar uns grupos, com permisso
para fazerem Subscries nesta publicao. Voc pode usar o boto Add para adicionar novos usurios
e/ou grupos; o boto Remove para remover um usurio e/ou grupo e o boto Remove All, para remover
todos os usurios/grupos da lista. Se um usurio no estiver nesta lista, ele no conseguir se inscrever
para receber os dados desta publicao. Esta lista uma maneira de limitar quais usurios podero
receber rplicas dos dados.
D um clique na guia Agent Security. Nesta guia voc define a conta e respectiva senha, com a qual ser
executado o Agente de Replicao. Para alterar a conta e/ou senha, clique no boto Security Settings.
Definidas as configuraes desejadas para a publicao s clicar em OK e pronto, as modificaes
sero aplicadas.
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 2005.
Ter criado uma publicao no item anterior.
Fundamentos apresentados na Parte I.
Saber utilizar o SQL Server Management Studio.
METODOLOGIA
Apresentao dos comandos e assistentes para configurao de um subscriber.
TCNICA
Configurar um subscriber utilizando o SQL Server Management Studio.
Criamos uma publicao no item anterior. O objetivo da criao de uma publicao para que esta
possa ser replicada para um ou mais subscribers. Aprenderemos neste item como habilitar subscribers
e configurar subscries.
Conforme j descrito anteriormente, podemos configurar dois tipos de subscries:
Pull subscriptions
Push subscriptions
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000483
Iremos usar o assistente de subscrio, para configurar uma subscrio do tipo Push subscription (push
= empurrar, ou seja, o distributor quem empurra os dados para um ou mais subscribers). Este tipo
de subscrio configurado no publisher, conforme descrito anteriormente. indicado 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.
Vamos configurar uma subscrio do tipo Push subscription. Conforme descrito na parte terica, no
incio deste captulo, este tipo de Subscrio 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 publicao Minha Publicao, vamos excluir o Banco de
Dados AdventureWorks, da instncia SERVIDOR2\CURSOSJB. Vamos fazer isso para verificar se realmente
s esto sendo replicados os dados definidos pelos trs artigos da publicao Minha Publicao.
Para excluir o Banco de Dados AdventureWorks da instncia SERVIDOR2\CURSOSJB: abra o SQL Server
Management Studio; navegue at o Banco de Dados AdventureWorks da instncia
SERVIDOR2\CURSOSJB; clique com o boto direito do mouse em AdventureWorks e, no menu de
opes que exibido; d um clique em Delete. Surge uma mensagem pedindo confirmao d um
clique no boto OK para confirmar a excluso.
Agora vamos a um exemplo prtico.
Exemplo prtico: Configurar a instncia SERVIDOR2\CURSOSJB como subscriber da publicao Minha
Publicao, criada no item anterior. Criar uma subscrio do tipo Push subscription, ou seja, configurada
a partir do publisher, que no nosso caso a instncia SERVIDOR\SQL2005.
Para criar a subscrio solicitada, siga os passos indicados a seguir:
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o.
2. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para
exibir as opes disponveis.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4840000Curso Completo
3. Clique no sinal + ao lado da opo Replication, abaixo da instncia SERVIDOR\SQL2005, para
exibir as opes disponveis.
4. Clique no sinal de + ao lado da opo Publications, para exibir as publicaes disponveis nesta
instncia. No momento, deve estar disponvel somente a publicao Minha Publicao, criada
anteriormente.
5. Clique com o boto direito do mouse na publicao Minha publicao e, no menu de opes
que exibido, clique em New Subscriptions.
6. Ser aberto o assistente para criao de novas subscries New Subscription Wizard. A
primeira tela do assistente somente informativa. Clique em Next, para seguir para a
prxima etapa do assistente.
7. Nesta etapa voc deve selecionar a publicao para a qual ser criada uma nova subscrio. Na
lista publisher, j deve ter vindo selecionada a instncia SERVIDOR\SQL2005. Se no veio
selecionada esta instncia, selecione-a. Na parte de baixo da janela sero exibidas as publicaes
disponveis (no nosso exemplo somente ser exibida a publicao Minha Publicao). Clique
na publicao Minha Publicao, para selecion-la, conforme indicado na Figura 8.26:
Figura 8.26 A publicao Minha Publicao, criada no exemplo anterior.
8. Clique em Next, para seguir para a prxima etapa do assistente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000485
9. Nesta etapa voc ir definir se o assistente ir criar uma ou mais subscries do tipo Push
subscriptions (onde os agentes de replicao rodam no distributor), ou se sero subscries do
tipo Pull subscriptions (onde os agentes de replicao rodam nos subscribers). Usando o assistente
voc pode criar vrias subscries, de uma s vez, mas todas do mesmo tipo, ou seja, ou todas
Pull subscriptions ou todas Push subscriptions. Se voc precisar criar subscries de diferentes
tipos, ter que rodar o assistente mais de uma vez. Certifique-se de que a opo (push subscrip-
tions) esteja selecionada, conforme indicado na Figura 8.27:
Figura 8.27 Definindo o tipo de subscrio.
10. Clique em Next, para seguir para a prxima etapa do assistente.
11. Nesta etapa voc pode adicionar uma ou mais instncias do SQL Server 2005, as quais sero
subscribers da publicao Minha Publicao. Por padro, somente a prpria instncia, onde foi
criada a publicao, exibida na lista. No nosso exemplo, por padro somente a instncia
SERVIDOR\SQL2005, que onde foi criada a publicao Minha Publicao, est sendo exibida.
Vamos adicionar a instncia SERVIDOR2\CURSOSJB. Para isso, clique no boto Add SQL Server.
Ser exibida a janela Connect to server. Na lista Server name, selecione o nome da instncia
que ser o subscriber; no nosso exemplo, selecione SERVIDOR2\CURSOSJB. importante
salientar que, nesta lista, somente sero exibidos os nomes das instncias registradas no SQL
Server Management Studio. Caso a instncia desejada no esteja sendo exibida nesta lista,
voc pode cancelar o assistente e, no SQL Server Management Studio, clicar com o boto
direito do mouse em Microsoft SQL Servers (na janela Registered Servers) e usar o comando
New -> Server Registration, para registrar uma ou mais instncias do SQL Server. Depois s
voltar e executar o assistente novamente. Na lista Authentication selecione Windows Authen-
tication. Sua janela deve estar conforme indicado na Figura 8.28:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4860000Curso Completo
Figura 8.28 Adicionando um novo subscriber.
12 . D um clique no boto Connect.
13 . Voc estar de volta ao assistente e a instncia SERVIDOR2\CURSOSJB j ter sido adicionada
lista. Certifique-se de que somente esta instncia esteja selecionada. Na coluna Subscription
database, voc deve informar se os dados sero replicados para um Banco de Dados j existente
ou para um novo Banco de Dados. Para o nosso exemplo, selecione a opo New database,
conforme indicado na Figura 8.29. nesta etapa que voc pode adicionar quantos subscribers
forem necessrios. Para adicion-los, basta que eles j tenham sido registrados no SQL Server
Management Studio, conforme descrito anteriormente.
Figura 8.29 Selecionando o subscriber e o Banco de Dados de destino.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000487
N
O
T
A
14. Ser aberta a janela para criao de um novo Banco de Dados, janela esta que voc aprendeu a
utilizar no Captulo 3. Utilizando os conhecimentos do Captulo 3, crie um Banco de Dados
com as seguintes caractersticas ( importante salientar que, antes de criar este Banco de Dados,
a pasta C:\livrosql\ExReplicacao j deve ter sido criada, caso contrrio ser gerado um erro. Se
esta pasta ainda no existe, abra o Windows Explorer e crie a pasta C:\livrosql\ExReplicacao):
Arquivo Definies
Primrio C:\livrosql\ExReplicacao\ExReplicacao-prim.mdf
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5%.
Tamanho mximo de 10 MB.
Secundrio C:\livrosql\ExReplicacao\ExReplicacao-sec1.ndf
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5%.
Tamanho mximo de 100 MB.
Secundrio C:\livrosql\ExReplicacao\ExReplicacao-sec2.ndf
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5%.
Tamanho mximo de 10 MB.
Arquivo de log C:\livrosql\ExReplicacao\ExReplicacao-log1.ldf
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5%.
Tamanho mximo de 10 MB.
Arquivo de log C:\livrosql\ExReplicacao\ExReplicacao-log2.ldf
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5%.
Tamanho mximo de 10 MB.
Arquivo de log C:\livrosql\ExReplicacao\ExReplicacao-log3.ldf
Crescimento automtico habilitado.
Tamanho inicial: 2 MB.
Crescimento em incrementos de 5%.
Tamanho mximo de 10 MB.
Tabela 8.3 O Banco de Dados ExReplicacao.
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.
15. A tela de criao do novo Banco de Dados dever estar conforme indicado na Figura 8.30:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4880000Curso Completo
Figura 8.30 Definies para criao do Banco de Dados ExReplicacao.
16. Clique em OK para criar o Banco de Dados ExReplicacao. Voc estar de volta ao assistente de subscrio.
17. Clique em Next, para seguir para a prxima etapa do assistente.
Figura 8.31 Configuraes de segurana, para o agente de distribuio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000489
18. Nesta etapa voc ir definir as configuraes de segurana (conta de conexo e opes de conexo),
para cada agente de distribuio que for utilizado. No nosso exemplo, tem um nico agente de
Distribuio, pois configuramos um nico subscriber. Se voc tivesse configurado vrios sub-
scribers, seriam listados tantos agentes de distribuio quantos fossem os subscribers configurados.
Clique no boto OK, para fazer as configuraes de segurana. Ser aberta a janela Distribution
Agent Security. Informe a conta a ser utilizada e a respectiva senha, conforme indicado na Figura
8.31. No altere as demais opes. Clique em OK. Voc estar de volta ao assistente.
19. Clique em Next, para seguir para a prxima etapa do assistente.
20. Nesta etapa voc deve definir um agendamento para cada um dos subscribers que esto sendo
configurados. Por exemplo, voc poderia definir uma replicao de duas em duas horas para
subscribers remotos, porm ligados por links de alta velocidade, uma replicao de 15 em 15
minutos para subscribers da mesma rede local e uma replicao uma vez por dia, de madrugada,
para subscribers remotos, ligados por links de WAN de baixa velocidade. No nosso exemplo,
temos um nico subscriber. Vamos configurar uma replicao diariamente, de duas em duas
horas. Clique na coluna Agent Schedule, abra a lista e seleicone a opo Define Schedule.
21. Ser aberta a janela para definio do agendamento, janela esta que voc j aprendeu a utilizar no
captulo sobre Jobs e Agendamento de tarefas. Para definir uma replicao diria, de duas em duas
horas, configure as opes indicadas na Figura 8.32 e clique em OK para criar o agendamento.
Figura 8.32 Definindo o agendamento da replicao.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4900000Curso Completo
22. Voc estar de volta ao assistente para criao de novas subscries. Clique em Next, para
seguir para a prxima etapa do assistente.
23. Nesta etapa o assistente informa que cada subscrio tem que ser inicializada com uma replicao
completa, do tipo snapshot dos dados e do schema. Nesta etapa voc informa, para cada
subscrio (no nosso exemplo uma nica subscrio), quando que este snapshot inicial deve
ser criado. Voc tem a opo de cri-lo imediatamente opo Immediately na coluna Initial-
ize When ou no prximo agendamento opo At firs synchronization. Por padro, vem
selecionada a opo Immediately. Vamos manter esta opo selecionada.
24. Clique em Next, para seguir para a prxima etapa do assistente.
25. Nesta etapa voc pode marcar a opo Create the subscription(s) immediately, para que a
subscrio seja criada imediatamente e tambm pode marcar a opo Generate a script, caso
voc queira que seja criado um arquivo, contendo todos os comandos, necessrios para criar a
subscrio, de acordo com as opes que voc selecionou no assistente. Este script pode ser
til, por exemplo, para rapidamente recriar a subscrio, em caso de problemas. Voc pode
gravar estes comandos em um arquivo de texto e, quando for necessrio recriar a publicao,
s copiar estes comandos do arquivo de texto e execut-los na janela de execuo de comandos
T-SQL. Marque as duas opes desta etapa, conforme indicado na Figura 8.33:
Figura 8.33 Criar a subscrio e gerar um arquivo com os comandos T-SQL.
26. D um clique no boto Next, seguindo para a prxima etapa do assistente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000491
Figura 8.34 Configuraes do arquivo com os comandos.
28. Clique em Next, para seguir para a prxima etapa do assistente.
29. Ser exibida a tela final do assistente, onde apresentado um resumo de todas as opes selecionadas.
Caso voc tenha que alterar alguma opo, s utilizar o boto Back. Clique em Finish para encerrar
o assistente e criar a subscrio (ou subscries, caso voc tenha configurado mais de uma subscrio).
30. O SQL Server 2005 comear a criar a subscrio e exibir uma janela, indicando o progresso
do trabalho, conforme exemplo da Figura 8.35.
31. Concludas as diversas etapas de criao da subscrio, clique em Close para fechar a janela
New Subscription Wizard. Muito bem, a subscrio foi criada. A partir deste momento, a instncia
SERVIDOR2\CURSOSJB passar a receber os dados da publicao Minha Publicao, da instncia
SERVIDOR\SQL2005. Esta replicao ser feita de duas em duas horas e os dados sero gravados
no Banco de Dados ExReplicacao. A seguir veremos como conferir se a subscrio foi realmente
criada e vamos verificar se os dados esto sendo copiados para o Banco de Dados ExReplicacao,
da instncia SERVIDOR\SQL2005. Tambm veremos como forar uma replicao.
27. Nesta etapa (que s exibida se voc marcar a opo para gerar o script, na etapa anterior),
voc definie onde ser gravado o script, o nome do arquivo e as propriedades do arquivo.
Selecione as opes indicadas na Figura 8.34:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4920000Curso Completo
Figura 8.35 Progresso da criao da subscrio.
Antes, apenas a ttulo de curiosidade, coloco a seguir o script gerado pelo assistente (lembre que, em
uma das etapas finais, marcamos a opo para gerar um arquivo com todos os comandos T-SQL,
necessrios para criao da subscrio):
*********************************************************************************************************
BEGIN: Script to be run at Publisher SERVIDOR\SQL2005-
use [AdventureWorks]
exec sp_addsubscription @publication = NMinha Publicao, @subscriber =
NSERVIDOR2\CURSOSJB, @destination_db = NExReplicacao, @subscription_type = NPush,
@sync_type = Nautomatic, @article = Nall, @update_mode = Nread only
exec sys.sp_addpushsubscription_agent @publication = NMinha Publicao, @subscriber =
NSERVIDOR2\CURSOSJB, @subscriber_db = NExReplicacao, @job_login =
NSERVIDOR\Administrador, @job_password = N, @subscriber_security_mode = 1, @frequency_type
= 4, @frequency_interval = 1, @frequency_relative_interval = 0, @frequency_recurrence_factor =
1, @frequency_subday = 8, @frequency_subday_interval = 2, @active_start_time_of_day = 0,
@active_end_time_of_day = 235900, @active_start_date = 20050509, @active_end_date = 99991231,
@enabled_for_syncmgr = NFalse, @dts_package_location = NDistributor
GO
END: Script to be run at Publisher SERVIDOR\SQL2005-
*********************************************************************************************************
Agora vamos verificar quais modificaes foram introduzidas na instncia SERVIDOR\SQL2005 aps
termos configurado a replicao. Veremos quais agentes foram implementados, o histrico de replicao
dos agentes. Depois verificaremos se os dados foram realmente replicados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000493
OS AGENTES CRIADOS PARA A REPLICAO EM SERVIDOR\SQL2005
Vamos conferir quais os jobs que foram criados na instncia SERVIDOR\SQL2005, para dar suporte
replicao do tipo Snapshot que configuramos nos exerccios anteriores. Para isso utilizaremos a opo
SQL Server Agent -> Jobs, da instncia SERVIDOR\SQL2005. Tambm iremos verificar o histrico de
execuo destes agentes, para sabermos se a replicao j est sendo efetuada com sucesso.
Exemplo prtico: Para verificar quais jobs foram criados e verificar o histrico de execuo dos jobs
relacionados com a replicao, siga os passos indicados a seguir:
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o.
2. Na janela Object Explorer, d um clique no sinal de + ao lado da instncia SERVIDOR\SQL2005
para expandir esta opo.
3. D um clique no sinal de + ao lado da opo SQL Server agent, para expandir esta opo.
4. D um clique no sinal de + ao lado da opo Jobs, abaixo de SQL Server Agent, para exibir a
lista de jobs disponveis.
5. Observe que temos uma srie de jobs relacioandos com a replicao, conforme pode ser indicado
pelo nome dos Jobs. Observe que vrios jobs tm, em alguma parte do nome, termos relacionados
replicao, tais como Subscription, Replication, Distribution e assim por diante.
6. Na Figura 8.36 voc pode conferir a lista de jobs da instncia SERVIDOR\SQL2005:
Figura 8.36 Lista de jobs criados para dar suporte replicao.
Agora vamos verificar o histrico de execuo de um dos jobs Replication agents checkup.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4940000Curso Completo
7. D um clique com o boto direito do mouse no job Replication agents checkup. No menu que
surge, d um clique na opo View History.
exibida a janela com informaes detalhadas, sobre todo o histrico de execues do job, conforme
indicado na Figura 8.37. No nosso exemplo, observe que o job j foi executado diversas vezes. Para
cada execuo so informadas a data e a hora de incio da execuo do job (lembrando que um mesmo
Job pode conter mais de um comando, para execuo).
Figura 8.37 A janela com o histrico de execuo do job.
Para ver mais detalhes sobre uma execuo do job, d um clique no sinal de +, ao lado da data e hora
de execuo do job.
Voc pode filtrar o histrico de execuo, para exibir apenas as ocorrncias que atendam a determinados
critrios, tais como uma data inicial e uma data final. Para isso, clique no boto Filter. Ser aberta a
janela Filter Settings. Defina os critrios de filtragem desejados, como no exemplo da Figura 8.38, onde
estou definindo que sejam exibidas apenas as execues para o perodo de 09/05/2005 a 10/05/2005.
Marque a opo Apply Filter e clique em OK. Pronto, o histrico de execuo ser filtrado, para exibir
somente as execues que atendam os critrios especificados.
8. D um clique no boto Close para fechar a janela do histrico de execuo do job.
9. Voc estar de volta ao SQL Server Management Studio. Mantenha-o aberto.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000495
Figura 8.38 Opes para filtrar o histrico de execuo do job.
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 Minha publicao do publisher (que no
nosso exemplo a instncia SERVIDOR\SQL2005) para o distributor (que no nosso exemplo tambm
a instncia SERVIDOR\SQL2005). Devemos observar que transmitida toda a publicao e no
somente os dados que foram alterados, pois estamos utilizando uma replicao do tipo Snapshot rep-
lication. Ou seja, a cada replicao, o conjunto completo de dados replicado e no somente o que foi
alterado, adicionado ou excludo entre uma replicao e outra. Esta a principal caracterstica da
replicao Snapshot Replication.
Podemos fazer com que um ou mais dos jobs sejam executados imediatamente, antes mesmo do
agendamento programado. Para isso basta clicar com o boto direito do mouse no job e, no menu de
opes que exibido, clicar em Start Job. Tambm convm lembrar que, para a replicao do tipo
Snapshot replication, o Snapshot agent roda no distributor. Quando o agente executado, ele se conecta
com o publisher e copia os dados do publisher para o distributor.
J vimos que, ao habilitarmos a replicao, uma srie de modificaes foi feita em SERVIDOR\SQL2005.
Agora vamos verificar se os dados foram realmente replicados para o Banco de Dados ExReplicacao da
instncia SERVIDOR2\CURSOSJB. Os dados j devem ter sido replicados, pois, conforme conferimos
no histrico de replicao, os jobs responsveis pela replicao executaram com sucesso. Mas nunca
demais dar uma conferida.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4960000Curso Completo
Tambm cabe lembrar que, na publicao Minha Publicao, que foi criada para a replicao, temos
apenas trs artigos. Somente os dados dos artigos que fazem parte da publicao que so replicados e
no todo o Banco de Dados AdventureWorks. Apenas para recordar, os artigos da Publicao1 esto
definidos conforme indicado a seguir:
Art_Produtos: Este artigo conter todos os registros da tabela Product.
Art_Employee: Este artigo conter apenas algumas das colunas da tabela Employee, ou seja,
aplicaremos um filtro Vertical. Este artigo ir replicar somente os seguintes campos da tabela Em-
ployee: EmployeeID, NationalIDNumber, DepartmentID, ManagerID e EmergencyContactID.
Art_Redmond: Este artigo ser baseado na tabela Person.Address e ir replicar somente os registros
onde o campo City=Redmond. Ou seja, vamos aplicar um filtro horizontal, para replicar somente
as linhas que atendam a um determinado conjunto de critrios, no nosso exemplo: City=Redmond.
Exemplo prtico: Para verificar se os dados esto sendo replicados com sucesso, para o Banco de Dados
ExReplicacao, da instncia SERVIDOR2\CURSOSJB, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio.
2. Verifique se a instncia SERVIDOR2\CURSOSJB aparece na lista de instncias registradas, na
janela Registered Servers. Esta instncia certamente j deve aparecer, se no voc no teria
conseguido criar a subscrio, em um dos exemplos anteriores. Se, por algum motivo, esta
instncia no estiver aparecendo, clique com o boto direito do mouse em Microsoft SQL
Servers, na janela Registered Servers e, no menu de opes que exibido, clique em New ->
Server Registration, para registrar a instncia SERVIDOR2\CURSOSJB.
3. Na janela Object Explorer, d um clique no sinal de + ao lado da instncia SERVIDOR2\CURSOSJB,
para exibir as opes disponveis.
4. Abaixo de SERVIDOR2\CURSOSJB, d um clique no sinal de +, ao lado da opo Databases.
5. Nas opes que so exibidas, observe que o Banco de Dados ExReplicao j exibido na lista
de Banco de Dados, conforme indicado na Figura 8.39. Este um indicativo de que a replicao
j foi executada, pelo menos uma vez, com sucesso.
Figura 8.39 O Banco de Dados ExReplicacao.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000497
N
O
T
A
6. D um clique no sinal de + ao lado de ExReplicacao, para exibir os objetos deste Banco de Dados.
7. D um clique no sinal de + ao lado da opo Tables, para exibir as tabelas do Banco de Dados
ExReplicacao. Observe que, alm da opo System Tables, so exibidas trs outras tabelas,
justamente as tabelas criadas pela replicao:
dbo.Address
dbo.Employee
dbo.Product
O nome das tabelas no Banco de Dados de destino no precisa ser igual ao nome no Banco de Dados de origem. Lembre que esta opo configurada
quando criamos a publicao. Para maiores detalhes, consulte o exerccio, neste captulo, onde criamos a publicao Minha Publicao.
8. Clique com o boto direito do mouse no Banco de Dados ExReplicao e, no menu de opes
que exibido, clique em New Query. Ser exibida a janela de execuo de comandos T-SQL.
Execute o seguinte comando:
SELECT * FROM dbo.Address
Observe que somente temos endereos para a cidade de Redmond. Isso confirma que o filtro que
colocamos no artigo Art_Redmond est funcionando corretamente. Apenas para lembrar, durante a
criao da publicao Minha Publicao, definimos o seguinte filtro, para o artigo que publica a tabela
Address: City = Redmond. Observe que o filtro est sendo aplicado, pois somente esto sendo replicados
os registros da tabela Address, onde City=Redmond. Pelo jeito funciona mesmo.
9. Mantenha a janela de execuo de comandos T-SQL aberta. Vamos utiliz-la logo em seguida.
Vamos tambm conferir se a replicao da tabela Employee est funcionando corretamente. Lembre que,
para esta tabela, definimos um filtro vertical, onde somente devem ser replicados os seguintes campos:
EmployeeID
NationalIDNumber
DepartmentID
ManagerID
EmergencyContactID
10. Execute o seguinte comando:
SELECT * FROM dbo.Employee
Observe que somente foram replicados os campos EmployeeID, NationalIDNumber, DepartmentID,
ManagerID e EmergencyContactID, conforme indicado na Figura 8.40:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
4980000Curso Completo
Figura 8.40 Filtro vertical para a tabela Employee.
Isto comprova que o nosso filtro vertical est funcionando corretamente.
11. Feche a janela de execuo de comandos T-SQL. Se for emitida uma mensagem, perguntando
se voc deseja salvar os comandos, clique em No.
12. Feche o SQL Server Management Studio.
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 2005.
Ter criado publicaes no item anterior.
Fundamentos apresentados na Parte I.
Saber utilizar o SQL Server Management Studio.
METODOLOGIA
Apresentao dos comandos e assistentes para configurao de subscrio do tipo Pull subscription.
TCNICA
Configurar uma subscrio do tipo Pull subsciption utilizando o SQL Server Management Studio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000499
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. Outro fato importante que os agentes de replicao rodam no subscriber, o que alivia
a carga no distributor. 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 indicado 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 ou um catlogo de produtos e promoes.
Para Pull subscriptions o agente de replicao roda no subscriber, consumindo memria e processador
deste equipamento. Vamos a um exemplo prtico.
Exemplo prtico: Vamos criar uma subscrio do tipo Pull subscription em SERVIDOR2\CURSOSJB.
Esta subscrio ser baseada na publicao Minha Publicao, criada anteriormente, no publisher
SERVIDOR\SQL2005. Os dados replicados sero armazenados no Banco de Dados ExPullReplication, 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 a instncia SERVIDOR\SQL2005 e
o subscriber a instncia SERVIDOR2\CURSOSJB. Quem iniciar a replicao a instncia
SERVIDOR2\CURSOSJB, pois uma Pull subscription. Dizemos que a instncia SERVIDOR2\CURSOSJB
puxa os dados do distributor.
Para criar a subscrio do tipo Pull subscription solicitada, siga os passos indicados a seguir:
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o.
2. Certifique-se de que a instncia SERVIDOR2\CURSOSJB esteja registrada no SQL Server Man-
agement Studio. Se esta instncia ainda no estiver registrada, registre-a, seguindo os passos j
descritos nos exemplos anteriores.
3. Na janela Object Explorer, d um clique no sinal de + ao lado da instncia
SERVIDOR2\CURSOSJB, para exibir as opes disponveis nesta instncia.
4. Clique com o boto direito do mouse na opo Replication e, no menu de opes que aberto,
clique em New -> Subscriptions.
5. Ser aberto o assistente para criao de novas subscries New Subscription Wizard. A
primeira tela do assistente somente informativa. Clique em Next, para seguir para a prxima
etapa do assistente.
6. Nesta etapa voc deve selecionar a publicao para a qual ser criada uma nova subscrio. Na
lista publisher, selecione a instncia SERVIDOR\SQL2005 (pois nesta instncia que est a
publicao Minha Publicao, para a qual estamos criando uma Subscrio). Se no veio
selecionada esta instncia, selecione-a. Na parte de baixo da janela sero exibidas as publicaes
disponveis (no nosso exemplo somente ser exibida a publicao Minha Publicao). Clique
na publicao Minha Publicao, para selecion-la, conforme indicado na Figura 8.41:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5000000Curso Completo
Figura 8.41 A publicao Minha Publicao, criada anteriormente.
7. Clique em Next, para seguir para a prxima etapa do assistente.
8. Nesta etapa voc ir definir se o assistente ir criar uma ou mais subscries do tipo Push
subscriptions (onde os agentes de replicao rodam no distributor), ou se sero subscries do
tipo Pull subscriptions (onde os agentes de replicao rodam nos subscribers). Usando o assistente
voc pode criar vrias subscries, de uma s vez, mas todas do mesmo tipo, ou seja, ou todas
Pull subscriptions ou todas Push subscriptions. Se voc precisar criar subscries de diferentes
tipos, ter que rodar o assistente mais de uma vez. Certifique-se de que a opo (pull subscrip-
tions) esteja selecionada.
9. Clique em Next, para seguir para a prxima etapa do assistente.
10. Nesta etapa voc pode adicionar uma ou mais instncias do SQL Server 2005, as quais sero
subscribers da publicao Minha Publicao. Por padro, somente a prpria instncia, na
qual estamos trabalhando, exibida na lista. No nosso exemplo, por padro somente a
instncia SERVIDOR2\CURSOSJB, que onde estamos trabalhando, est sendo exibida.
Certifique-se de que somente esta instncia esteja selecionada. Na coluna Subscription data-
base, voc deve informar se os dados sero replicados para um Banco de Dados j existente
ou para um novo Banco de Dados. Para o nosso exemplo, na coluna Subscription Database,
selecione a opo New database.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000501
N
O
T
A
11. Ser aberta a janela para criao de um novo Banco de Dados, janela esta que voc aprendeu a
utilizar no Captulo 3. Utilizando os conhecimentos do Captulo 3, crie um Banco de Dados
com as seguintes caractersticas ( importante salientar que, antes de criar este Banco de Dados,
a pasta C:\livrosql\Ex2Replicacao j deve ter sido criada, caso contrrio ser gerado um erro,
quando o SQL Server 2005 tentar criar o Banco de Dados. Se esta pasta ainda no existe, abra o
Windows Explorer e crie a pasta C:\livrosql\Ex2Replicacao):
A criao de um novo Banco de Dados para receber os dados replicados no , de maneira alguma, obrigatria. Poderamos utilizar um
Banco de Dados j existente. Optamos por criar um novo Banco de Dados para salientar a execuo deste procedimento.
12. A tela de criao do novo banco de dados dever estar conforme indicado na Figura 8.42.
13. Clique em OK para criar o Banco de Dados ExReplicacao. Voc estar de volta ao assistente de
subscrio.
14 . Clique em Next, para seguir para a prxima etapa do assistente.
15 . Nesta etapa voc ir definir as configuraes de segurana (conta de conexo e opes de
conexo), para cada agente de distribuio que for utilizado. No nosso exemplo, h um nico
agente de Distribuio, pois configuramos um nico subscriber. Se voc tivesse configurado
vrios subscribers, seriam listados tantos agentes de distribuio quantos fossem os subscribers
Arquivo Definies
Primrio C:\livrosql\Ex2Replicacao\Ex2Replicacao-rim.mdf
Crescimento automtico habilitado.
Tamanho inicial: 5 MB.
Crescimento em incrementos de 5%.
Tamanho mximo de 10 MB.
Secundrio C:\livrosql\Ex2Replicacao\Ex2Replicacao-sec1.ndf
Crescimento automtico habilitado.
Tamanho inicial: 5 MB.
Crescimento em incrementos de 5%.
Tamanho mximo de 100 MB.
Arquivo de log C:\livrosql\Ex2Replicacao\Ex2Replicacao-log1.ldf
Crescimento automtico habilitado.
Tamanho inicial: 5 MB.
Crescimento em incrementos de 5%.
Tamanho mximo de 10 MB.
Arquivo de log C:\livrosql\Ex2Replicacao\Ex2Replicacao-log2.ldf
crescimento automtico habilitado.
Tamanho inicial: 5 MB.
Crescimento em incrementos de 5%.
Tamanho mximo de 10 MB.
Tabela 8.4 O Banco de Dados NorthwindPull.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5020000Curso Completo
configurados. Clique no boto OK, para fazer as configuraes de segurana. Ser aberta a
janela Distribution Agent Security. Informe a conta a ser utilizada e a respectiva senha, conforme
indicado na Figura 8.43. As contas devem ser informadas no formato NOME-DO-
SERVIDOR\NOME-DACONTA ou NOME-DO-DOMNIO\NOME-DA-CONTA. No altere as
demais opes. Clique em OK. Voc estar de volta ao assistente.
Figura 8.42 Definies para criao do Banco de Dados Ex2Replicacao.
Figura 8.43 Configuraes de segurana, para o agente de distribuio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000503
16. Clique em Next, para seguir para a prxima etapa do assistente.
17. Nesta etapa voc deve definir um agendamento para cada um dos subscribers que esto sendo
configurados. Por exemplo, voc poderia definir uma replicao de duas em duas horas para
subscribers remotos, porm ligados por links de alta velocidade, uma replicao de 15 em 15
minutos para subscribers da mesma rede local e uma replicao uma vez por dia, de madrugada,
para subscribers remotos, ligados por links de WAN de baixa velocidade. No nosso exemplo,
temos um nico subscriber. Vamos configurar uma replicao diariamente, de seis em seis
horas. Clique na coluna Agent Schedule, abra a lista e selecione a opo Define Schedule.
18. Ser aberta a janela para definio do agendamento, janela esta que voc j aprendeu a utilizar
no captulo sobre jobs e agendamento de tarefas. Para definir uma replicao diria, de seis em
seis horas, configure as opes indicadas na Figura 8.44 e clique em OK para criar o agendamento.
Figura 8.44 Definindo o agendamento da replicao.
19. Voc estar de volta ao assistente para criao de novas subscries. Clique em Next, para
seguir para a prxima etapa do assistente.
20. Nesta etapa o assistente informa que cada subscrio tem que ser inicializada com uma replicao
completa, do tipo Snapshot dos dados e do schema. Nesta etapa voc informa, para cada
subscrio (no nosso exemplo uma nica subscrio), quando que este snapshot inicial dever
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5040000Curso Completo
ser criado. Voc tem a opo de cri-lo imediatamente opo Immediately na coluna Initial-
ize When, ou no prximo agendamento opo At first synchronization. Por padro, vem
selecionada a opo Immediately. Vamos manter esta opo selecionada.
21. Clique em Next, para seguir para a prxima etapa do assistente.
22. Nesta etapa voc pode marcar a opo Create the subscription(s) immediately, para que a
subscrio seja criada imediatamente e tambm pode marcar a opo Generate a script, caso
voc queira que seja criado um arquivo, contendo todos os comandos, necessrios para criar a
subscrio, de acordo com as opes que voc selecionou no assistente. Este script pode ser
til, por exemplo, para rapidamente recriar a subscrio, em caso de problemas. Voc pode
gravar estes comandos em um arquivo de texto e, quando for necessrio recriar a publicao,
s copiar estes comandos do arquivo de texto e execut-los na janela de execuo de comandos
T-SQL. Marque as duas opes desta etapa.
23. Clique em Next, para seguir para a prxima etapa do assistente.
24. Nesta etapa (que s exibida se voc marcar a opo para gerar o script, na etapa anterior),
voc definie onde ser gravado o script, o nome do arquivo e as propriedades do arquivo.
Selecione as opes indicadas na Figura 8.45:
Figura 8.45 Configuraes do arquivo com os comandos.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000505
25. Clique em Next, para seguir para a prxima etapa do assistente.
26. Ser exibida a tela final do assistente, onde apresentado um resumo de todas as opes
selecionadas. Caso voc tenha que alterar alguma opo, s utilizar o boto Back. Clique em
Finish para encerrar o assistente e criar a subscrio (ou subscries, caso voc tenha configurado
mais de uma subscrio).
27. O SQL Server 2005 comear a criar a subscrio e exibir uma janela, indicando o progresso
do trabalho. Concludas as diversas etapas de criao da subscrio, clique no boto Close para
fechar a janela New Subscription Wizard. Muito bem, a subscrio foi criada. A partir deste
momento, a instncia SERVIDOR2\CURSOSJB passar a receber os dados da publicao Minha
Publicao, da instncia SERVIDOR\SQL2005. Esta replicao ser feita de seis em seis horas e
os dados sero gravados no Banco de Dados Ex2Replicacao.
Apenas a ttulo de curiosidade, coloco a seguir o script gerado pelo assistente (lembre que, em uma das
etapas finais, marcamos a opo para gerar um arquivo com todos os comandos T-SQL, necessrios
para criao da subscrio):
*********************************************************************************************************
BEGIN: Script to be run at Publisher SERVIDOR\SQL2005-
use [AdventureWorks]
exec sp_addsubscription @publication = NMinha Publicao, @subscriber =
NSERVIDOR2\CURSOSJB, @destination_db = NEx2Replicacao, @sync_type = NAutomatic,
@subscription_type = Npull, @update_mode = Nread only
GO
END: Script to be run at Publisher SERVIDOR\SQL2005-
BEGIN: Script to be run at Subscriber SERVIDOR2\CURSOSJB-
use [Ex2Replicacao]
exec sp_addpullsubscription @publisher = NSERVIDOR\SQL2005', @publication = NMinha
Publicao, @publisher_db = NAdventureWorks, @independent_agent = NTrue,
@subscription_type = Npull, @description = N, @update_mode = Nread only, @immediate_sync
= 1
exec sp_addpullsubscription_agent @publisher = NSERVIDOR\SQL2005', @publisher_db =
NAdventureWorks, @publication = NMinha Publicao, @subscriber = NSERVIDOR2\CURSOSJB,
@subscriber_db = NEx2Replicacao, @distributor = NSERVIDOR\SQL2005',
@distributor_security_mode = 1, @distributor_login = null, @distributor_password = null,
@enabled_for_syncmgr = NFalse, @frequency_type = 4, @frequency_interval = 1,
@frequency_relative_interval = 0, @frequency_recurrence_factor = 1, @frequency_subday = 8,
@frequency_subday_interval = 6, @active_start_time_of_day = 0, @active_end_time_of_day =
235900, @active_start_date = 20050510, @active_end_date = 99991231, @alt_snapshot_folder =
N, @working_directory = N, @use_ftp = NFalse, @job_login = NXYZ\Administrador,
@job_password = N, @publication_type = 0
GO
END: Script to be run at Subscriber SERVIDOR2\CURSOSJB
*********************************************************************************************************
EXCLUINDO ELEMENTOS DA REPLICAO
Podemos facilmente remover subscries e publicaes.
Para remover uma Publicao, basta abrir o SQL Server Management Studio e navegar at a publicao
a ser excluda. Uma vez localizada a publicao, d um clique com o boto direito do mouse na publicao
e, no menu de opes que exibido, d um clique na opo Delete.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5060000Curso Completo
N
O
T
A
Para remover uma subscrio, voc deve navegar at a publicao, na qual est a subscrio a ser removida.
Clique no sinal de + ao lado da publicao. Sero exibidas todas as subscries para a publicao, conforme
indicado na Figura 8.46, onde esto sendo exibidas as duas subscries da publicao Minha publicao
(uma do tipo Pull e outra do tipo Push), que criamos nos exemplos deste captulo.
Figura 8.46 As subscries da publicao Minha Publicao.
Para excluir uma subscrio, basta clicar com o boto direito do mouse na subscrio a ser excluda e, no menu de opes que exibido, clicar
em Delete. Vamos a um exemplo prtico.
Vamos remover a subscrio do tipo Pull subscription, que criamos anteriormente. Identificamos esta
replicao, facilmente, porque ela faz a replicao com o Banco de Dados Ex2Replicao. O nome dela
aparece como: SERVIDOR2\CURSOSJB: Ex2Replicao. O cone, ao lado dela, de uma folha inteira,
sem o canto dobrado. Para isso, siga os seguintes passos:
1. Abra o SQL Server Management Studio e navegue at a instncia SERVIDOR\SQL2005.
2. No Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005.
3. Na lista de opes que exibida clique no sinal de + ao lado da opo Replication, para exibir
as opes disponveis.
4. Clique no sinal de + ao lado da opo Publications. Sero exibidas as publicaes disponveis,
que no nosso exemplo somente a publicao Minha Publicao: AdventureWorks.
5. Clique no sinal ao lado de Minha Publicao: AdventureWorks, para exibir a lista de subscries
desta publicao.
6. Na lista de subscries que exibida, clique com o boto direito do mouse em
SERVIDOR2\CURSOSJB: Ex2Replicao. No menu de opes que exibido, clique em Delete.
7. Surge uma janela pedindo confirmao da excluso. Nesta janela, indicada na Figura 8.47,
voc tambm pode marcar a opo Connect to subscriber and delete Record of this subscrip-
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000507
tion at subscriber also. Se esta opo for marcada, as informaes sobre a subscrio tambm
sero excludas na instncia SERVIDOR2\CURSOSJB. importante salientar que somente as
informaes e configuraes da subscrio sero excludas. Os dados que j foram replicados
no sero excludos. Voc pode confirmar isso, acessando a instncia SERVIDOR2\CURSOSJB
e verificando que o Banco de Dados Ex2Replicacao e todas as suas tabelas, bem como os dados
que haviam sido replicados, so mantidos, mesmo aps a excluso da subscrio. Ao excluir
uma subscrio, apenas deixaro de ser feitas novas replicaes. Porm os dados j replicados
sero mantidos. D um clique em Yes para confirmar.
Figura 8.47 Confirmando a excluso da subscrio.
8. Ser exibida a janela para voc informar os dados para conexo com a instncia
SERVIDOR2\CURSOSJB. Informe os dados de conexo e clique no boto Connect.
9. Muito bem, a subscrio foi excluda. Voc pode confirmar este fato, pois a subscrio
SERVIDOR2\CURSOSJB: Ex2Replicao no mais exibida abaixo da publicao Minha Publicao.
Ao excluirmos uma subscrio, o Banco de Dados de destino no ser excludo. No nosso exemplo, o
Banco de Dados de destino era Ex2Replicaca, no subscriber que, no nosso exemplo, era a instncia
SERVIDOR2\CURSOSJB.
10. Feche o SQL Server Management Studio.
KNOW-HOW EM: REPLICAO PARA OUTROS
TIPOS DE SUBSCRIBERS NO SQL SERVER 2005
PR-REQUISITOS
Conceitos tericos sobre replicao apresentados nos itens iniciais deste captulo.
Conhecer o modelo de replicao do SQL Server 2005.
Configuraes de replicao no SQL Server 2005 apresentadas nos itens anteriores.
Fundamentos apresentados na Parte I.
Saber utilizar o SQL Server Management Studio.
METODOLOGIA
Apresentao dos comandos e assistentes para configurao de um subscriber que no seja um SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5080000Curso Completo
N
O
T
A
TCNICA
Configurar um subscriber, que no seja o SQL Server 2005, utilizando o SQL Server Management Studio.
Podemos replicar dados para um subscriber que no seja uma instncia do SQL Server 2005. Por exemplo,
podemos ter dados em um publisher SQL Server 2005, 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
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.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000509
N
O
T
A
N
O
T
A
REPLICANDO DADOS PARA UM SUBSCRIBER DO MICROSOFT ACCESS
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. Utilizaremos o Banco de
Dados C:\livrosql\ExReplicacao.mdb, o qual j deve ter sido criado previamente usando o Access. Use
o Access para criar o Banco de Dados ExReplicacao.mdb na pasta C:\livrosql. O passo seguinte ser
adicionarmos este Banco de Dados, via configuraes de ODBC, como um subscriber autorizado. Ao
adicionarmos um subscriber do Microsoft Access, este passar a aparecer como se fosse mais um servidor
registrado no SQL Server Management Studio, quando executamos o assistente para adio de novas
Subscries. Depois iremos criar uma subscrio para este Banco de Dados para a publicao Minha
Publicao, a qual criamos nos exemplos anteriores. 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 2005 SERVIDOR\SQL2005) para o subscriber (Microsoft Access
C:\livrosql\ExReplicacao.mdb). Aps criada a subscrio iremos conferir se os dados foram realmente
replicados para o Banco de Dados do Microsoft Access. Vamos aos exemplos prticos.
Para que possamos criar subscries para outros tipos de subscribers, que no o SQL Server 2005, devemos adicionar estes subscribers
previamente, conforme veremos no exemplo prtico, logo a seguir.
Voc pode acompanhar este exemplo utilizando tanto o Microsoft Access 97 quanto o Microsoft Access 2000.
Exemplo prtico: Criar o Banco de Dados c:\livrosql\ExReplicacao.mdb configurar este Banco de Dados
como um subscriber da publicao Minha Publicao.
Para criar a subscrio solicitada, executaremos os seguintes procedimentos:
Procedimento 1: Criar o Banco de Dados C:\livrosql\ExReplicacao.mdb.
Procedimento 2: Registrar o Banco de Dados C:\livrosql\ExReplicacao.mdb. como um sub-
scriber autorizado.
Procedimento 3: Criar uma subscrio do Banco de Dados do Microsoft Access, para a publicao
Minha Publicao da instncia SERVIDOR\SQL2005, do SQL Server.
Procedimento 4: Verificar se os dados esto sendo 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\ExReplicacao.mdb, siga os passos indicados
a seguir (estou usando o Microsoft Access 2000):
1. Abra o Microsoft Access (Iniciar -> Programas -> Microsoft Access).
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5100000Curso Completo
Figura 8.48 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 ExReplicacao.mdb, e clique no boto Criar.
Ser criado o Banco de Dados ExReplicacao.mdb e este ser carregado no Microsoft Access. Observe
que criado um Banco de Dados vazio, sem nenhuma tabela. Aps a replicao, ns vamos abrir este
Banco de Dados novamente e vamos verificar que os artigos da publicao Minha Publicao foram
replicados como tabelas no Banco de Dados ExReplicacao.mdb.
7. Feche o Microsoft Access.
Agora vamos registrar este Banco de Dados como um subscriber autorizado no publisher
SERVIDOR\SQL2005.
Procedimento 2: Para registrar o Banco de Dados C:\livrosql\ ExReplicacao.mdb como um subscriber
autorizado no publisher SERVIDOR\SQL2005, siga os passos indicados a seguir:
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o.
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.48. Clique no boto OK.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000511
2. No Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005.
3. Clique com o boto direito do mouse na opo Replication. No menu de opes que exibido
clique em Publisher Properties.
4. Ser aberta a janela de propriedades do publisher, com a guia General selecionada por padro.
Para habilitar um subscriber que no seja SQL Server, vamos utilizar a guia subscribers. D um
clique na guia Subscriptions para selecion-la. Sero exibidas as opes indicadas na Figura 8.49:
Figura 8.49 A guia subscribers.
5. Clique no boto Add. Nas opes que so exibidas, clique em Add OLE DB subscriber.
6. Ser aberta a janela Propriedades de Vinculao de dados, com a guia Conexo selecionada, por
padro. D um clique na guia Provedor. Sero exibidas as opes indicadas na Figura 8.50. Na guia
Provedor, voc ir informar o formato dos dados do subscriber, que no nosso exemplo ser Microsoft
Access (Microsoft Jet 4.0 OLE DB Provider). Selecione a opo indicada na Figura 8.50.
7. Clique na guia Conexo. No campo Selecione ou insira o nome de um Banco de Dados, digite
o seguinte: C:\livrosql\ExReplicacao.mdb. Se o Banco de Dados tiver um usurio e senha, digite
o nome do usurio, a respectiva senha e marque a opo Permitir salvamento de senha. No
nosso exemplo, no temos usurio e senha. Com isso sero usados os valores padro, que
Admin para o usurio, senha em branco, marcar a opo Senha em branco e deixar desmarcada
a opo Permitir salvamento de senha. Sua janela deve estar conforme indicado na Figura 8.51.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5120000Curso Completo
Figura 8.50 Definindo o formato dos dados do subscriber.
Figura 8.51 Definindo o Banco de Dados que ser o subscriber.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000513
Figura 8.52 A conexo com o subscriber est OK.
9. Clique em OK para fechar o aviso.
10. Voc estar de volta janela Propriedades de vinculao de dados. Clique em OK para concluir
as configuraes.
11. Voc estar de volta janela Publisher Properites. Obseve que agora j aparece na lista o sub-
scriber ExReplicao (o qual est associado ao Banco de Dados C:\livrosql\ExReplicacao.mdb),
conforme indicado na Figura 8.53:
8. Para verificar se as configuraes esto OK e o SQL server consegue se comunicar com o Banco
de Dados do Access, d um clique no boto Testar conexo. Se estiver tudo OK, ser exibida a
janela indicada na Figura 8.52:
Figura 8.53 O subscriber do Access j aparece na lista.
12. Clique no boto de reticncias ..., ao lado de ExReplicao e certifique-se de que o nome do
usurio esteja como Admin e senha em branco, conforme indicado na Figura 8.54. Esta
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5140000Curso Completo
Figura 8.54 Confirmando usurio e senha.
13. Voc estar de volta ao SQL Server Management Studio e o subscriber do ExReplicao j estar
habilitado para ser um subscriber. Com isso j vencemos as etapas 1 e 2 do nosso exerccio.
Agora s faltam as etapas 3 e 4, as quais repito a seguir:
Procedimento 3: Criar uma subscrio do Banco de Dados do Microsoft Access, para a
publicao Minha publicao da instncia SERVIDOR\SQL2005, do SQL Server.
Procedimento 4: Verificar se os dados esto sendo realmente replicados.
Vamos ento executar os procedimentos que esto faltando.
Procedimento 3: Para criar uma Subscrio do tipo Push subscription, do Banco de Dados do Microsoft
Access, para a publicao Minha Publicao, da instncia SERVIDOR\SQL2005 do SQL Server 2005,
siga os passos indicados a seguir:
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o.
2. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para
exibir as opes disponveis.
confirmao necessria, porque s vezes o campo Login fica em branco e isso ir gerar um
erro na hora de criar o subscriber. Clique em OK para fechar esta janela. Voc estar de volta
janela Publisher Properties. Clique em OK para fech-la.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000515
3. Clique no sinal + ao lado da opo Replication, abaixo da instncia SERVIDOR\SQL2005, para
exibir as opes disponveis.
4. Clique no sinal de + ao lado da opo Publications, para exibir as publicaes disponveis
nesta instncia. No momento, deve estar disponvel somente a publicao Minha Publicao,
criada anteriormente.
5. Clique com o boto direito do mouse na publicao Minha Publicao e, no menu de opes
que exibido, clique em New Subscriptions.
6. Ser aberto o assistente para criao de novas subscries New Subscription Wizard. A primeira tela
do assistente somente informativa. Clique em Next, para seguir para a prxima etapa do assistente.
7. Nesta etapa voc deve selecionar a publicao para a qual ser criada uma nova subscrio. Na
lista publisher, j deve ter vindo selecionada a instncia SERVIDOR\SQL2005. Se no veio
selecionada esta instncia, selecione-a. Na parte de baixo da janela sero exibidas as publicaes
disponveis (no nosso exemplo somente ser exibida a publicao Minha Publicao, pois a
nica disponvel). Clique na publicao Minha Publicao, para selecion-la.
8. Clique em Next, para seguir para a prxima etapa do assistente.
9. Nesta etapa voc ir definir se o assistente ir criar uma ou mais subscries do tipo Push
subscriptions (onde os agentes de replicao rodam no distributor), ou se sero subscries do
tipo Pull subscriptions (onde os agentes de replicao rodam nos subscribers). Usando o assistente
voc pode criar vrias subscries, de uma s vez, mas todas do mesmo tipo, ou seja, ou todas
Pull subscriptions ou todas Push subscriptions. Se voc precisar criar subscries de diferentes
tipos, ter que rodar o assistente mais de uma vez. Certifique-se de que a opo (push subscrip-
tions) esteja selecionada. Como o subscriber ser um Banco de Dados do Microsoft Access,
vamos usar um subscrio do tipo Push Subscription, ou seja, os agentes vo rodar no distribu-
tor (que ser o SQL Server 2005), empurrando (push = empurrar) os dados para as tabelas do
Banco de Dados do Access.
10. Clique em Next, para seguir para a prxima etapa do assistente.
11. Nesta etapa voc pode adicionar uma ou mais instncias do SQL Server 2005, as quais sero
subscribers da publicao Minha Publicao. Observe que, na lista de possveis subscribers, j
aparece o subscriber ExReplicao, que justamente o subscriber que configuramos na Etapa
2. Este subscriber est associado ao arquivo C:\livrosql\ExReplicacao.mdb. Selecione o sub-
scriber ExReplicacao. Sua janela deve estar conforme indicado na Figura 8.55. A replicao ser
feita com o Banco de Dados ExReplicacao.mdb, e cada artigo da pubilcao ser uma tabela no
Banco de Dados de destino.
12 . Clique em Next, para seguir para a prxima etapa do assistente.
13. Nesta etapa voc ir definir as configuraes de segurana (conta de conexo e opes de
conexo), para cada agente de distribuio que for utilizado. No nosso exemplo, tem um
nico agente de Distribuio, pois configuramos um nico subscriber. Se voc tivesse
configurado vrios subscribers, seriam listados tantos agentes de distribuio quantos fossem
os subscribers configurados. Clique no boto ..., para fazer as configuraes de segurana.
Ser aberta a janela Distribution Agent Security. Informe a conta a ser utilizada e a respectiva
senha, conforme indicado na Figura 8.56. No altere as demais opes. Clique em OK. Voc
estar de volta ao assistente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5160000Curso Completo
Figura 8.55 O subscriber ExReplicacao.
Figura 8.56 Configuraes de segurana, para o agente de distribuio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000517
14. Clique em Next, para seguir para a prxima etapa do assistente.
15. Nesta etapa voc deve definir um agendamento para cada um dos subscribers que esto sendo
configurados. Por exemplo, voc poderia definir uma replicao de duas em duas horas para
subscribers remotos, porm ligados por links de alta velocidade, uma replicao de 15 em 15
minutos para subscribers da mesma rede local e uma replicao uma vez por dia, de madrugada,
para subscribers remotos, ligados por links de WAN de baixa velocidade. No nosso exemplo,
temos um nico subscriber. Vamos configurar uma replicao diariamente, de duas em duas
horas. Clique na coluna Agent Schedule, abra a lista e seleicone a opo Define Schedule.
16. Ser aberta a janela para definio do agendamento, janela esta que voc j aprendeu a
utilizar no captulo sobre jobs e agendamento de tarefas. Para definir uma replicao diria,
de duas em duas horas, configure as opes indicadas na Figura 8.57 e clique em OK para
criar o agendamento.
Figura 8.57 Definindo o agendamento da replicao.
17. Voc estar de volta ao assistente para criao de novas subscries. Clique em Next, para
seguir para a prxima etapa do assistente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5180000Curso Completo
18. Nesta etapa o assistente informa que cada subscrio tem que ser inicializada com uma replicao
completa, do tipo Snapshot dos dados e do schema. Nesta etapa voc informa, para cada
subscrio (no nosso exemplo uma nica subscrio), quando que este snapshot inicial deve
ser criado. Voc tem a opo de cri-lo imediatamente opo Immediately na coluna Initial-
ize When, ou no prximo agendamento opo At first synchronization. Por padro, vem
selecionada a opo Immediately. Vamos manter esta opo selecionada.
19. Clique em Next, para seguir para a prxima etapa do assistente.
20. Nesta etapa voc pode marcar a opo Create the subscription(s) immediately, para que a
subscrio seja criada imediatamente e tambm pode marcar a opo Generate a script, caso
voc queira que seja criado um arquivo, contendo todos os comandos, necessrios para criar a
subscrio, de acordo com as opes que voc selecionou no assistente. Este script pode ser
til, por exemplo, para rapidamente recriar a subscrio, em caso de problemas. Voc pode
gravar estes comandos em um arquivo de texto e, quando for necessrio recriar a publicao,
s copiar estes comandos do arquivo de texto e execut-los na janela de execuo de comandos
T-SQL. Marque as duas opes desta etapa.
21. D um clique no boto Next, seguindo para a prxima etapa do assistente.
22. Nesta etapa (que s exibida se voc marcar a opo para gerar o script, na etapa anterior),
voc definie onde ser gravado o script, o nome do arquivo e as propriedades do arquivo.
Selecione as opes indicadas na Figura 8.58:
Figura 8.58 Configuraes do arquivo com os comandos.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000519
23. Clique em Next, para seguir para a prxima etapa do assistente.
24. Ser exibida a tela final do assistente, onde apresentado um resumo de todas as opes
selecionadas. Caso voc tenha que alterar alguma opo, s utilizar o boto Back. Clique em
Finish para encerrar o assistente e criar a subscrio.
25. O SQL Server 2005 comear a criar a subscrio e exibir uma janela, indicando o progresso
do trabalho.
26. Concludas as diversas etapas de criao da subscrio, clique em Close para fechar a janela
New Subscription Wizard. Muito bem, a subscrio foi criada. A partir deste momento, o Banco
de Dados C:\livrosql\ExReplicacao.mdb passar a receber os dados da publicao Minha
Publicao, da instncia SERVIDOR\SQL2005. Esta replicao ser feita de duas em duas horas
e os dados sero gravados no Banco de Dados ExReplicacao.mdb. Cada artigo da publicao
ser uma tabela no Banco de Dados ExReplicacao.mdb. A seguir veremos como conferir se a
subscrio foi realmente criada e vamos verificar se os dados esto sendo copiados para o
Banco de Dados ExReplicacao.mdb.
Antes, apenas a ttulo de curiosidade, coloco a seguir o script gerado pelo assistente (lembre que, em
uma das etapas finais, marcamos a opo para gerar um arquivo com todos os comandos T-SQL,
necessrios para criao da subscrio):
*********************************************************************************************************
BEGIN: Script to be run at Publisher servidor\sql2005-
use [AdventureWorks]
exec sp_addsubscription @publication = NMinha Publicao, @subscriber = NExReplicacao,
@destination_db = N(default destination), @subscription_type = NPush, @sync_type =
Nautomatic, @article = Nall, @update_mode = Nread only
exec sys.sp_addpushsubscription_agent @publication = NMinha Publicao, @subscriber =
NExReplicacao, @subscriber_db = N(default destination), @job_login =
NSERVIDOR\Administrador, @job_password = N, @subscriber_security_mode = 0,
@subscriber_login = NAdmin, @frequency_type = 4, @frequency_interval = 1,
@frequency_relative_interval = 0, @frequency_recurrence_factor = 1, @frequency_subday = 8,
@frequency_subday_interval = 2, @active_start_time_of_day = 0, @active_end_time_of_day =
235900, @active_start_date = 20050512, @active_end_date = 99991231, @enabled_for_syncmgr =
NFalse, @dts_package_location = NDistributor
GO
END: Script to be run at Publisher servidor\sql2005-
*********************************************************************************************************
Muito bem. J criamos o Banco de Dados C:\livrosql\ExReplicacao.mdb Procedimento 1. Depois
habilitamos um subscriber que aponta para este Banco de Dados, com o nome de ExReplicacao
Procedimento 2. Na seqncia, criamos uma subscrio do tipo Push subscription para o subscriber
ExReplicacao Procedimento 3.
Agora vamos abrir o Banco de Dados C:\livrosql\ExReplicacao.mdb, para verificar se os dados foram
realmente replicados.
Procedimento 4: 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5200000Curso Completo
2. D um clique duplo no arquivo ExReplicacao.mdb para abri-lo no Microsoft Access. J devem
aparecer as tabelas: Orders, Products e Customers.
3. Feche o 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 diferentes 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 2005.
Iniciamos o captulo apresentando uma srie de conceitos sobre a replicao no SQL Server 2005.
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.
Iniciamos o nosso estudo prtico pela criao de uma publicao Minha Publicao. Utilizamos
um assistente passo a passo para a criao de uma nova publicao. Vimos que uma publicao
composta de um ou mais artigos. Um artigo pode ser uma tabela inteira, somente algumas colunas
de uma tabela (filtro horizontal), ou somente as linhas que atendam determinados critrios (filtro
vertical). Um artigo tambm pode ser uma view ou outros elementos, cuja execuo gere um
conjunto de dados a ser replicado.
Aps a criao da publicao, voc aprendeu a criar uma ou mais subscries para esta publicao.
Mostrei como criar subscries do tipo Pull Subscriptions, onde o agente de replicao roda no sub-
scriber, puxando os dados a partir do distributor. Tambm mostrei como criar uma subscrio do tipo
Push Subscription, onde o agente de replicao executado no distributor, empurrando os dados para
um ou mais subscribers.
O assunto Replicao bastante extenso. Sem nenhuma dvida, daria para escrever um livro inteiro,
com 500 ou 600 pginas, s sobre Replicao no SQL Server 2005. A Microsoft fez um bom trabalho de
documentao, especialmente neste tpico de Replicao. A parte sobre Replicao, no Books Online,
est realmente muito boa. Com os fundamentos apresentados neste captulo, voc ter condies de
acompanhar, sem problemas, a documentao sobre Replicao do Books Online. Para acessar esta
documentao, abra o Books Online: Iniciar -> Programas -> Microsoft SQL Server 2005 -> Books
Online. Clique no sinal de + ao lado de SQL Server Books Online. Dentre as opes que so exibidas,
clique no sinal de + ao lado de Replication. Voc ter acesso a centenas de pginas, com excelentes
informaes sobre a Replicao no SQL Server 2005. No site http://www.microsoft.com/sql, voc tambm
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
Curso Completo0000521
encontra artigos detalhados e sempre atualizados sobre a Replicao e sobre as demais funcionalidades
do SQL Server 2005. um site de visita obrigatria para quem trabalha com o SQL Server 2005 ou com
as verses anteriores do SQL Server.
Muto bem, a partir do prximo captulo, comearei a tratar de assuntos relacionados com o
desenvolvimento de aplicaes que utilizam o SQL Server 2005 como Banco de Dados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 9
DESENVOLVIMENTO NO SQL
SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5240000Curso Completo
N
O
T
A
INTRODUO
Neste captulo aprenderemos tpicos relacionados ao desenvolvimento de aplicaes no SQL Server
2005. Tratarei de elementos que so criados em um Banco de Dados do SQL Server 2005 e podem ser
acessados por aplicaes desenvolvidas em Visual Basic, Delphi, ASP, ASP.NET, etc.
Iniciaremos o captulo falando sobre integridade de dados. No Captulo 1 apresentei os conceitos de
chave primria, Chave Estrangeira, relacionamentos e tipos de relacionamentos e integridade referencial.
No SQL Server 2005, 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 2005.
Aps implementada a integridade de dados, vamos testar o funcionamento, atravs de tentativas de
inseres e alteraes que no respeitem as regras impostas, para verificar se o SQL Server ir aplicar
as regras que ns definimos. 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. O banco de dados Pubs no fornecido com
o SQL Server 2005. Ele era um banco de dados de exemplos, que era instalado com o SQL Server 2000.
Vamos importar o banco de dados Pubs de uma instncia do SQL Server 2000 para a instncia
SERVIDOR\SQL2005, do SQL Server 2005.
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, em um Banco de Dados de vendas, corretamente modelado, de acordo com as
regras do Modelo Relacional de Dados, as informaes sobre o cabealho do pedido esto na tabela
Pedidos e as informaes sobre os itens de cada pedido esto na tabela Detalhes do pedido. 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 Pedidos e Detalhes do Pedido.
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 Pedidos (lado Um no campo NmeroDoPedido)
e a tabela Detalhes do Pedido (lado Vrios no campo NmeroDoPedido), 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. Voc tambm deve ter acesso a uma instncia do SQL Server 2000, para poder importar o banco de dados Pubs. Caso voc no tenha
acesso a uma instncia do banco de dados Pubs, utilize qualquer outro banco de dados disponvel. No exemplo, altere as referncias ao banco de
dados Pubs, por referncias ao banco de dados que voc est utilizando. O mesmo deve ser feito em relao s tabelas e campos referenciados
nos exemplos, os quais devero ser substitudos pelos nomes de tabelas e campos do banco de dados que voc estiver utilizando.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000525
KNOW-HOW EM: IMPORTANDO O BANCO DE DADOS PUBS,
DE UMA INSTNCIA DO SQL SERVER 2000
PR-REQUISITOS
Fundamentos apresentados na Parte I.
METODOLOGIA
Utilizao do DTS Import/Export Wizard, apresentada nos captulos anteriores.
Neste tpico, mostrarei, passo a passo, como usar o DTS Import/Export Wizard, para importar o
banco de dados Pubs, de uma instncia do SQL Server 2000, para a instncia SERVIDOR\SQL2005,
do SQL Server 2005.
Exemplo prtico: Para importar o banco de dados Pubs, de uma instncia do SQL Server 2000 para a
instncia SERVIDOR\SQL2005, do SQL Server 2005, siga os passos indicados a seguir:
1. Faa o logon com uma conta de administrador, no servidor onde est instalada a instncia
SERVIDOR\SQL2005.
2. Abra o assistente de Importao/Exportao: Iniciar -> Programas -> Microsoft SQL Server 2004
-> DTS Import and Export Wizard.
3. Ser aberto o assistente de importao e exportao de dados.
4. A primeira tela do assistente apenas informativa. Clique em Next, para seguir para a prxima
etapa do assistente.
5. Nesta etapa voc deve informar a fonte dos dados, ou seja, de onde sero copiados os dados.
No meu exemplo, irei copiar os dados da instncia padro do SQL Server 2000, instalada em
um servidor chamado microxp-01. No campo Server name, digite microxp-01 e pressione Tab.
Aguarde alguns instantes at que o assistente conecte com o servidor microxp-01 e consiga
trazer a lista de tabelas da instncia padro. Aps aguardar alguns instantes, abra a lista Data-
base e selecione o banco de dados Pubs.
6. Clique em Next, para seguir para a prxima etapa do assistente.
7. Nesta etapa voc deve informar o destino dos dados. O nosso objetivo copiar o banco de
dados Pubs, de uma instncia do SQL Server 2000 para a instncia SERVIDOR\SQL2005. Ou
seja, o destino um banco de dados do SQL Server 2005, na instncia SERVIDOR\SQL2005.
Selecione as opes indicadas na Figura 9.1.
8. J definimos para qual instncia o banco de dados Pubs ser importado. Agora temos que
definir o nome do banco de dados. Poderamos importar os objetos do banco de dados Pubs
para dentro de um banco de dados j existente. Para isso, bastaria selecionar o banco de dados
na lista Database. No nosso exemplo, queremos criar um novo banco de dados, que ser chamado
Pubs e, dentro deste novo banco de dados, importar todos os objetos do banco de dados Pubs,
de uma instncia do SQL Server 2000. D um clique no boto New. Ser exibida a janela Create
Database. Defina as configuraes indicadas na Figura 9.2.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5260000Curso Completo
Figura 9.1 Definindo o destino dos dados.
Figura 9.2 Criando um novo banco de dados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000527
9. D um clique em OK. Voc estar de volta ao assistente de importao, com o banco de dados
Pubs j selecionado, na lista Database.
10. Clique em Next, para seguir para a prxima etapa do assistente.
11. Nesta etapa marque a opo Copy data from one or more tables or views e clique em Next,
para seguir para a prxima etapa do assistente.
12. Clique em Next, para seguir para a prxima etapa do assistente.
13. Nesta etapa ser exibida a lista de todos os objetos do banco de dados Pubs, os quais podem ser
importados. Clique no boto Select All, para selecionar todos os objetos.
14. Clique em Next, para seguir para a prxima etapa do assistente.
15. Nesta etapa, certifique-se de que a opo Run immediately esteja selecionada e clique em Next,
para seguir para a prxima etapa do assistente.
Figura 9.3 Confirmando a importao do banco de dados Pubs.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5280000Curso Completo
16. Ser exibida a tela final do assistente, com um resumo das opes selecionadas. Caso voc
precise alterar alguma opo s clicar em Back, para voltar para as etapas anteriores. Clique
em Finish para iniciar a importao dos dados.
17. O assistente inicia a importao e, uma vez concluda, o boto Close ser habilitado. Clique
em Close para encerrar o assistente.
18. Pronto, o banco de dados Pubs foi importado para a nossa instncia SERVIDOR\SQL2005.
Agora poderemos utilizar este banco de dados em nossos exemplos, deste captulo. Voc pode
abrir o SQL Server Management Studio e navegar at a opo Databases, da instncia
SERVIDOR\SQL2005, para confirmar que o banco de dados Pubs e seus objetos foram realmente
importados, conforme indicado na Figura 9.3.
KNOW-HOW EM: IMPLEMENTAO DE
INTEGRIDADE DOS DADOS NO SQL SERVER 2005
PR-REQUISITOS
Fundamentos apresentados na Parte I.
METODOLOGIA
Apresentao terica sobre a implementao da integridade dos dados no SQL Server 2005.
Apresentao dos tipos de integridade existentes no SQL Server 2005.
Implementar a 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 Detalhes do pedido, porm o cabealho do pedido no
existe na tabela Pedidos. 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 de R$
25.000. Se for digitado um valor superior a R$25.000, o SQL Server 2005 no deve aceitar e o
registro no deve ser gravado.
Neste item, voc aprender a definir diversos elementos que ajudam a manter a integridade e a
confiabilidade dos dados, no SQL Server 2005. Conforme descrito na introduo deste captulo,
iniciaremos fazendo uma cpia do Banco de Dados Pubs (o qual foi importado no exemplo do
item anterior), da instncia SERVIDOR\SQL2005. Os exemplos sero feitos na cpia do banco de
dados Pubs. Criaremos esta cpia em um Banco de Dados chamado PubsIntF, o qual ser criado
neste item.
Exemplo prtico: Criar o Banco de Dados PubsIntF, na instncia SERVIDOR\SQL2005, e copiar as
tabelas e views do Banco de Dados Pubs para o BANCO DE DADOS PubsIntF, o qual deve ser criado
conforme indicado na Tabela 9.1.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000529
N
O
T
A
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.
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. Crie esta pasta.
Procedimento 1: Para criar o Banco de Dados PubsIntF, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio.
2. Na janela Object Explorer, clique com o boto direito do mouse na instncia
SERVIDOR\SQL2005 e, no menu de opes que exibido, clique em New Query.
Ser aberta a janela de execuo de comandos T-SQL.
3. Digite o seguinte conjunto de comandos:
CREATE DATABASE PubsIntF
ON
*************************
Definio do Arquivo Primrio
*************************
(NAME= PubsIntF_prim,
FILENAME = C:\livrosql\PubsIntF\PubsIntF-prim.mdf ,
SIZE= 10MB,
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5300000Curso Completo
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
***************************************
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:
Command(s) completed successfully.
Com isso o nosso Banco de Dados PubsIntF foi criado, na instncia SERVIDOR\SQL2005.
4. Feche a janela de execuo de comandos T-SQL.
Agora vamos ao segundo procedimento, onde iremos copiar as tabelas e dados do Banco de Dados
Pubs da instncia SERVIDOR\SQL2005, para o Banco de Dados PubsIntF, desta mesma instncia, criado
no Procedimento 1.
Procedimento 2: Para copiar as tabelas e views do Banco de Dados Pubs da instncia SERVIDOR\SQL2005,
para o Banco de Dados PubsIntF, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000531
2. Navegue at o banco de dados Pubs, da instncia SERVIDOR\SQL2005.
3. D um clique com o boto direito do mouse no Banco de Dados Pubs. No menu de opes que
surge, selecione o comando Tasks -> Export Data.
Ser iniciado o assistente DTS Import/Export Wizard. Na tela inicial exibida uma mensagem com um
resumo das funcionalidades do assistente.
4. D um clique no boto Next para ir para a prxima etapa do assistente.
5. 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 Tasks -> Export Data, o
Banco de Dados Pubs j vem definido como origem dos dados a serem exportados.
6. D um clique no boto Next, seguindo para a prxima etapa do assistente.
7. Nesta etapa, devemos definir o destino dos dados. No nosso caso o destino o Banco de Dados
PubsIntF, da instncia SERVIDOR\SQL2005. Na lista Server selecione SERVIDOR\SQL2005, e
na lista Database selecione PubsIntF, conforme indicado na Figura 9.4:
Figura 9.4 Definindo o destino dos dados.
8. D um clique no boto Next para ir para a prxima etapa do assistente.
9. Nesta etapa, certifique-se de que a opo Copy data from one or more tables or views esteja
selecionada, e clique em Next, para seguir para a prxima etapa do assistente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5320000Curso Completo
10. 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 Next, para seguir para a prxima etapa do assistente.
11. 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 immediately esteja selecionada e que as demais opes estejam
desmarcadas. D um clique no boto 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 Back.
12. D um clique no boto Finish.
exibida uma tela com o progresso da cpia dos diversos objetos tabelas e views.
13. No final, exibida uma mensagem indicando que a cpia foi efetuada com sucesso. D um
clique em Close para fechar esta mensagem.
Voc estar de volta ao SQL Server Management Studio; e todas as tabelas e views do Banco de Dados
Pubs foram copiadas para o PubsIntF.
14. Feche o SQL Server Management Studio.
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 2005
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 banco de dados
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
1.000.000.000 em um campo valor da hora extra.
Para garantir que estes tipos de incorrees no aconteam que o SQL Server 2005 disponibiliza uma
srie de elementos que nos ajudam a garantir a integridade dos dados.
No SQL Server 2005, temos os seguintes tipos de integridade de dados:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000533
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 relacionado 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
sendo a chave primria da tabela Clientes, no podemos cadastrar dois clientes com o mesmo
nmero de 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.5.
Figura 9.5 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:
Que 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
que ainda no foi cadastrado na tabela Clientes.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5340000Curso Completo
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
implementadas com o uso de constraints, stored procedures e triggers. Aprenderemos sobre constraints
e triggers neste captulo e sobre stored procedures no prximo captulo.
KNOW-HOW EM: CRIAO E TESTE DE
CONSTRAINTS NO SQL SERVER 2005
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Saber utilizar a janela de execuo de comandos T-SQL.
Noes sobre integridade de dados e os tipos de integridade de dados existentes no SQL Server 2005.
METODOLOGIA
Apresentao do conceito de Constraint e dos procedimentos para a criao e teste de constraints.
TCNICA
Utilizao da janela de execuo de comandos T-SQL 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 constraint que atua sobre duas ou mais colunas; conhecida como table Constraint.
Na Tabela 9.2, temos um resumo dos diversos tipos de constraints.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000535
N
O
T
A
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 2005 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 constraint
no ser adicionada e uma mensagem de erro ser emitida.
Ao criar uma constraint, devemos definir um nome para a constraint, pois caso contrrio o SQL Server 2005 ir gerar um nome. O problema
que o nome gerado, automaticamente, pelo SQL Server 2005, no nada amistoso e, tampouco, indicativo da funo da constraint.
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. A diferena entre a constraint UNIQUE e a PRIMARY KEY que a UNIQUE aceita
valores nulos e a PRIMARY KEY no.
Tabela 9.2 Tipos de constraints e utilizao de cada uma delas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5360000Curso Completo
CRIANDO CONSTRAINTS COM COMANDOS T-SQL
Para criar constraints com a janela de execuo de comandos T-SQL, utilizamos os comandos CREATE
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 ]
)
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 2005 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,,)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000537
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 PubsIntF.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 DE-
FAULT associada, ser atribudo o valor NULL para o campo associado coluna. Caso tenha sido definida
uma constraint 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 valor ser definido
para uma determinada coluna, em caso de no ter sido definido, explicitamente, um valor para a coluna.
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 coluna 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 2005.
DEFAULT constraints so aplicadas quando utilizamos um comando INSERT. No so aplicadas para
comandos UPDATE. Podemos utilizar funes internas do SQL Server 2005 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 dbo.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 dbo.Clientes (CPF,Nome,Endereo,fone)
VALUES (222.222.222-22, Jos da Silva, Rua abc - 20, 2222222)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5380000Curso Completo
No informamos um valor para o campo Cidade. Como existe uma DEFAUTL Constraint definida para
este campo, ele 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.
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.6, temos o resultado da execuo deste comando.
Figura 9.6 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.
No podemos definir CHECK constraints para colunas que contenham o seguinte tipo de dados:
timestamp
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000539
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 pode 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:
Msg 547, Level 16, State 0, Line 1
INSERT statement conflicted with CHECK constraint FaixaFinanciamento.
The conflict occurred in database PubsIntF, table Clientes, column Financiamento.
The statement has been terminated.
Agora vamos alterar o nosso comando, reduzindo o financiamento a 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:
ALTER TABLE Clientes
ADD CONSTRAINT ValoresBairro
CHECK (Bairro=Centro or Bairro=Itarar or Bairro=Camobi)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5400000Curso Completo
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,financiamento,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:
Msg 547, Level 16, State 0, Line 1
INSERT statement conflicted with CHECK constraint ValoresBairro.
The conflict occurred in database PubsIntF, 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,financiamento,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 este 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 no 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,financiamento,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:
Msg 547, Level 16, State 0, Line 1
INSERT statement conflicted with CHECK constraint FormatCPF.
The conflict occurred in database PubsIntF, 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 campo ou campos formam a chave primria de
uma tabela. Este campo no poder conter valores repetidos ou NULL. O valor da chave primria,
identifica de maneira nica cada registro de uma tabela, conforme j descrevemos no Captulo 1, onde
falei sobre o Modelo Relacional de Dados. Ao definirmos uma chave primria automaticamente
criado um ndice associado ao campo chave primria. Por padro, criado um clustered index, desde
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000541
que 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, conforme j descrito anteriormente.
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 2005 atribua, automaticamente, um nome nada intuitivo. O
ideal que, ao criar a chave primria, tambm seja definido um nome para a chave. 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 uma tabela j existente, desde que esta tabela
ainda no tenha uma chave primria, j 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 chave primria 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5420000Curso Completo
N
O
T
A
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 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000543
N
O
T
A
definindo esta coluna como uma chave estrangeira. A chave estrangeira representa o lado vrios de um
relacionamento do tipo Um para Vrios.
muito importante, eu diria at indispensvel, que voc tenha entendido todos os conceitos sobre o Modelo Relacional de dados, apresentados
no Captulo 1. Se voc tiver qualquer dvida sobre um destes conceitos chave primria, Chave estrangeira, relacionamentos, tipos de
relacionamentos e integridade referencial, por favor volte ao Captulo 1 e revise estes conceitos, antes de seguir adiante.
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. O campo
CdigoDoFornecedor o lado vrios, na tabela Produtos, pois um mesmo fornecedor pode fornecer
vrios produtos. Por exemplo, se um fornecedor fornecer 50 produtos diferentes, haver 50 registros
na tabela Produtos, onde o campo CdigoDoFornecedor ter o cdigo do respectivo fornecedor, nos
50 registros. Observe que, neste exemplo, o campo ir aparecer 50 vezes, ou genericamente vrias
vezes. 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.7.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5440000Curso Completo
Figura 9.7 Tabelas Clientes e Pedidos, criadas nos exemplos anteriores.
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.8.
Figura 9.8 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000545
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
(
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.9 mostra as tabelas Clientes, Pedidos e Dependentes e os respectivos
relacionamentos.
Figura 9.9 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 2005 no deve deixar que seja adicionado um registro na
tabela Dependentes, para um cliente que ainda no tenha sido cadastrado na tabela Clientes. Vamos
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5460000Curso Completo
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:
Msg 547, Level 16, State 0, Line 1
INSERT statement conflicted with FOREIGN KEY constraint Rel_Cli_Dep.
The conflict occurred in database PubsIntF, 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 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 ainda
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 2005, 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, ou melhor, com muitos problemas. Muitas
vezes, estes problemas somente aparecem quando colocamos uma ou mais aplicaes em produo.
Surgem desde consultas com desempenho sofrvel at inconsistncia e falta de integridade dos dados.
VERIFICAO DOS DADOS QUANDO UMA CONSTRAINT ADICIONADA
Por padro, o SQL Server 2005 verifica os dados existentes em uma tabela, quando uma constraint
adicionada. Caso os dados no se enquadrem nas definies da constraint, esta 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 dos tipos CHECK e FOR-
EIGN KEY. A verificao sempre ser feita para constraints dos tipos 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)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000547
N
O
T
A
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 estes 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.
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 dos tipos 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5480000Curso Completo
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, importado a partir de uma instncia do SQL
Server 2000. 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.
Figura 9.10 Algumas tabelas do Banco de Dados PubsIntF.
Primeiro, vamos fazer uma anlise sobre os relacionamentos que devem ser definidos para as tabelas
apresentadas, e depois partimos para a definio das constraints a serem implementadas em cada tabela.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000549
1. Abra o SQL Server Management Studio, navegue at o banco de dados PubsInf. Clique com o
boto direito do mouse no banco de dados PubsInf e, no menu de opes que exibido, clique
em New Query. Ser aberta a janela de execuo de comandos T-SQL.
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)
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.11, na qual o campo chave primria indicado pela pequena chave amarela.
Figura 9.11 Chaves primrias j definidas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5500000Curso Completo
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:
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.12:
Figura 9.12 Relacionamentos propostos j definidos.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000551
Muito bem, com isso conclumos o exerccio proposto.
KNOW-HOW EM: CONCEITOS E CRIAO DE
VIEWS NO SQL SERVER 2005
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Conhecer os comandos bsicos da linguagem T-SQL.
Saber utilizar a janela de execuo de Comandos T-SQL e o SQL Server Management Studio.
Conhecimento sobre relacionamentos e o modelo relacional de dados.
METODOLOGIA
Apresentao dos procedimentos necessrios para a criao de views com comandos T-SQL e usando o SQL Server Management Studio.
TCNICA
Criao e teste de views, utilizando comandos T-SQL e o SQL Server Management Studio.
INTRODUO
Quando executamos um comando T-SQL na janela de execuo de comandos, este processado 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 a janela de execuo de comandos T-SQL e
abrirmos novamente, teremos que digitar o comando mais um vez para execut-lo. Este tipo de consulta
conhecido com Consulta 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 a janela de execuo de comando T-SQL, os comandos e o
resultado 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 2005, temos a opo de salvar uma
instruo SQL que retorna dados. A instruo salva e um nome atribudo instruo (ou ao conjunto
de instrues). 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, esta retorna
um conjunto de dados no formato de uma tabela. Uma view pode retornar dados de uma ou
mais tabelas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5520000Curso Completo
N
O
T
A
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
GO
CREATE VIEW Ped_USA
AS
SELECT * FROM ORDERS WHERE ShipCountry = USA
Este exemplo baseado no banco de dados Northwind. Este banco de dados fornecido como exemplo, no SQL Server 2000. Ele no
instalado com o SQL Server 2005. Mas voc pode utilizar o DTS Import/Export Wizard, para importar o banco de dados Northwind, de uma
instncia do SQL Server 2000, para uma instncia do SQL Server 2005. Para um passo-a-passo sobre como importar o banco de dados
Northwind, consulte o Anexo, no final deste livro.
Agora, ao executarmos a view, basta darmos um SELECT * Nome_da_view. A view ser 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.13.
Figura 9.13 Resultado da 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 Sub-set of table columns. Podemos
utilizar este tipo de view para fazer com que o usurio somente receba o conjunto de dados que lhe
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000553
N
O
T
A
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 produto, bem como o
nvel mnimo de estoque aceitvel.
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 clusula 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. Quando trabalhamos com subconsultas, devemos considerar, seriamente, questes
relacionadas ao desempenho.
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 de acesso a um conjunto de dados, o qual obtido a partir de vrias tabelas, podemos
simplificar este acesso, criando uma view que consolida e retorna os dados necessrios. Depois s
fazer com que o usurio ou aplicao acesse e execute esta view.
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 e
permisses. 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 grandes vantagens, com a criao de views.
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:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5540000Curso Completo
Somente podemos criar uma view no Banco de Dados atual, embora esta possa acessar dados
de tabelas de outros Bancos 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 usurio 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:
Janela de execuo de comandos T-SQL.
SQL Server Management Studio.
CRIANDO VIEWS COM O SQL SERVER MANAGEMENT STUDIO
Este um ponto em que tenho que ser sincero com o amigo leitor. Na minha modesta opinio, era
bem mais simples criar uma view no SQL Server 2000 do que no SQL Server 2005. No SQL Server 2000,
tnhamos um assistente, que nos conduzia, passo a passo, na criao de views. Era extremamente
simples de usar e muito semelhante interface de criao de consultas do Access. Uma verdadeira
barbada. J com o SQL Server 2005 simplesmente no tem esta opo. Para criar um view em um
banco de dados do SQL Server 2005, temos que digitar, na mo, o comando T-SQL para a criao da
view. Sinceramente, no consegui entender o que a Microsoft tentou fazer nesta rea, pois no ajudou
e nem facilitou, em nada. Bem pelo contrrio, atrapalha bastante para quem est iniciando seus estudos
sobre o SQL Server.
Figura 9.14 O Diagrama Entidade x Relacionamentos do banco de dados NorthWind.mdb.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000555
N
O
T
A
Como no temos mais o bom e velho assistente, no formato parecido com o que tnhamos no Access,
no adianta chorar. O que temos que fazer procurar algo de bom nesta mudana. O que eu encontrei
de bom, para passar para os amigos leitores, fazermos um estudo mais detalhado dos comandos da
linguagem T-SQL, comandos utilizados para a criao de views, de tal forma que possamos aprimorar
mais ainda os nossos conhecimentos da linguagem T-SQL. Depois, aplicaremos estes conhecimentos
para a criao de views. Basicamente isso.
No Captulo 1 voc aprendeu os fundamentos bsicos da linguagem T-SQL. Seria importante que,
neste momento, voc voltasse ao Captulo 1 e revisasse os pontos onde voc tem dvidas sobre os
tpicos que foram apresentados. Neste tpico sobre a criao de views, eu utilizarei o que foi apresentado
no Captulo 1 e adicionarei tpicos novos. Os novos tpicos sero apresentados atravs de exemplos.
Nos exemplos eu irei propor uma consulta, apresentarei os comandos para a criao da view e depois
irei explicar, detalhadamente, os comandos utilizados.
Para os exemplos deste tpico, voc deve criar um banco de dados chamado NwindAccess. Este banco de dados ser criado na instncia
SERVIDOR\SQL2005 e ter um nico arquivo primrio, com tamanho inicial de 100 MB e autocrescimento permitido em incrementos de 10%.
Este banco de dados ter um nico arquivo de log, com tamanho inicial de 50 MB e com autocrescimento permitido em incrementos de 10%. Em
caso de dvidas sobre como criar um banco de dados, consulte o Captulo 3, onde apresentei exemplos prticos, passo a passo, sobre a criao de
banco de dados. Aps criar o banco de dados NwindAccess, utlize o DTS Import/Export Wizard, para importar todas as tabelas do banco de dados
Northwind.mdb, do Access, para dentro do banco de dados NwindAccess, do SQL Server 2005. O banco de dados NorthWind.mdb instalado
juntamente com o Microsoft Access, desde as verses antigas at a verso mais atual. Os exemplos de views, que criaremos, sero baseadas neste
banco de dados. Na Figura 9.14, apresento o diagrama Entidades x Relacionamentos, do banco de dados Northwind.mdb.
CRIANDO VIEWS COM O SQL SERVER MANAGEMENT STUDIO
Neste item vamos fazer um exemplo prtico, de criao de view com o SQL Server Management Stu-
dio. Vamos iniciar com uma view bem simples, apenas para ilustrar os passos para a criao de uma
view, usando o SQL Server Management Studio. Logo em seguida, mostrarei como acessar as propriedades
de uma view, para alter-la. Tambm mostrarei como executar uma view, para conferir se esta est
retornando os resultados esperados. O nosso primeiro exemplo ser a criao de uma view, que lista
alguns campos da tabela Clientes. Feito este primeiro exemplo, bastante simples, iremos apresentar
uma srie de situaes prticas, e mostraremos como resolv-las, atravs da utilizao de views. Farei
diversos exemplos, porque este um tpico muito importante, tanto para o administrador do banco
de dados, quanto para a equipe de desenvolvimento.
Exemplo prtico 01: Criar uma view chamada ListaContatos, no banco de dados NwindAccess, da
instncia SERVIDOR\SQL2005. Esta view dever listar somente os campos NomeDaEmpresa,
NomeDoContato, Pas, Cidade e Telefone, da tabela Clientes. Classificar a listagem em ordem alfabtica
do campo Nome da Empresa. Executar a view para observar se os resultados retornados so os esperados.
Para resolver o exemplo proposto, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio, navegue at o banco de dados PubsInf.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5560000Curso Completo
2. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005.
3. Clique no sinal de + ao lado da opo Databases.
4. Clique no sinal de + ao lado do banco de dados NwindAccess (veja as orientaes anteriores,
para criao deste banco de dados e importao das tabelas do banco de dados
NorthWind.mdb, do Access).
5. Dentre as opes que so exibidas, observe que temos uma opo chamada views. Esta a
opo que utilizaremos para criar novas views. Clique com o boto direito do mouse em views
e, no menu de opes que exibido, clique em New view. Ser exibida a janela view New,
indicada na Figura 9.15.
Figura 9.15 A janela para criao de uma nova view.
6. No campo view name voc informa o nome da view. Digite ListaContatos. O campo Data-
base name j vem preenchido com NwindAccess, que o banco de dados onde a view ser
criada. Na lista Schema, voc define qual schema ser o dono da view. Por padro
selecionado o schema dbo. Para mais detalhes sobre segurana no SQL Server 2005 e schemas,
consulte o Captulo 6.
7. Abaixo da lista Schemas, est disponvel uma srie de opes que podem ser habilitadas para a
view que est sendo criada. A principal opo deste grupo a opo Encrypt text. Se esta opo
for marcada, os comandos que formam a view sero gravados no banco de dados, na forma
criptografada. importante no fazer confuso neste ponto. O que ser criptografado so os
comandos que formam a view e no os dados, por ela retornados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000557
8. A view criada na parte de baixo. Criar a view , basicamente, digitar o comando T-SQL que ser
executado, quando a view for executada. Observe que a parte inicial do comando, que a parte
que cria a view, j automaticamente criada. No nosso exemplo, temos o seguinte comando:
CREATE VIEW [dbo].[ListaContatos] AS
9. O nosso trabalho, agora, digitar, na linha abaixo do AS, o restante do comando. No nosso
exemplo, ser uma instruo SELECT, que retorna somente os campos NomeDaEmpresa,
NomeDoContato, Pas, Cidade e Telefone, da tabela Clientes. E classifica a listagem em ordem
alfabtica do campo Nome da Empresa.
10. Complete o comando com a seguinte instruo SELECT:
SELECT Clientes.NomeDaEmpresa, Clientes.NomeDoContato, Clientes.Pas, Clientes.Cidade,
Clientes.Telefone FROM Clientes
11. Voc deve estar se perguntando se eu no esqueci a clusula ORDER BY NomeDaEmpresa, para fazer
a ordenao pelo nome da empresa. Acontece que no permitido o uso da clusula Order By em
views. Por isso, para fazer a ordenao, teremos que usar a clusula Order By, na hora de executar a
view, mais adiante A janela de criao da view deve estar conforme indicado na Figura 9.16.
Figura 9.16 Comando para a criao da view.
12. Antes de salvar a view, voc pode verificar se existe algum erro de sintaxe. Clique com o boto
direito do mouse na rea em branco, abaixo da ltima linha da instruo SELECT. No menu de
opes que exibido, d um clique em Check Sintax. Se a instruo SQL estiver correta, ser
exibida uma mensagem informando que tudo est OK. Clique em OK para fechar esta mensagem.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5580000Curso Completo
13. Pressione Ctrl+S para salvar a view.
14. Para fechar a janela de criao da view, clique com o boto direito do mouse na rea em
branco, abaixo da ltima linha da instruo SELECT. No menu de opes que exibido, d um
clique em Close.
15. Agora a view ListaContatos foi criada.
16. Clique no sinal de +, ao lado da opo views, abaixo do banco de dados NwindAccess. Clique na
opo views. Se a view ListaContatos ainda no estiver sendo exibida, pressione a tecla F5 para
atualizar a listagem. A view Lista contatos j dever estar sendo exibida, abaixo da opo views.
17. Caso voc precise alterar a view, futuramente, s clicar com o boto direito do mouse na view
e, no menu de opes que exibido, clique em Modify view. A janela com as configuraes da
view ser exibida e voc poder alter-las. Faa as alteraes desejadas, salve pressionando
Ctrl+S e feche a janela de configuraes da view.
18. Agora vamos a etapa final do exemplo proposto. Vamos executar a view ListaContatos e ordenar
os resultados em ordem alfabtica do campo NomeDaEmpresa.
19. Clique com o boto direito do mouse no banco de dados NwindAccess e, no menu de opes
que exibido, clique em New Query. Ser aberta a janela de execuo de comandos T-SQL. Para
executar a view ListaContatos e ordenar os resultados em ordem alfabtica do campo
NomeDaEmpresa, execute o seguinte comando:
SELECT * FROM ListaContatos Order By NomedaEmpresa
20. A view ListaContatos ser executada e os resultados ordenados pelo campo NomeDaEmpresa,
conforme exemplificado na Figura 9.17.
Figura 9.17 Executando a view ListaContatos.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000559
Muito bem, com isso conclumos o nosso primeiro exemplo. Agora j sabemos como criar uma view,
como alter-la e como executar uma view. Agora vamos estudar mais alguns exemplos prticos, os
quais sero solucionados com o uso de views.
Nos prximos exemplos, no irei repetir, cada vez, todos os passos necessrios para criar, alterar e executar
uma view, uma vez que todos estes passos j foram descritos neste primeiro exemplo. Nos prximos
exemplos, vou me concentrar em exemplos prticos, os quais so resolvidos atravs de views. Farei os
exemplos passo a passo, mostrando quais os comandos T-SQL a serem utilizados em cada etapa, at
chegarmos soluo pretendida. Estude com bastante ateno estes exemplos, pois eles sero de grande
utilidade na sua vida prtica, como administrador e desenvolvedor do SQL Server 2005.
EXEMPLO PRTICO 01: USANDO VIEWS PARA CRIAR CAMPOS CALCULADOS E TOTALIZAES
No Captulo 1, eu apresentei os fundamentos do Modelo Relacional de Dados, que o modelo utilizado
pelo SQL Server 2005. Dentre outras, apresentei duas regras fundamentais:
Cada assunto em uma tabela. No se misturam assuntos, na mesma tabela.
No se armazenam valores calculados, a no ser em casos especficos, de bancos de dados
utilizados para dados consolidados, para suporte a sistemas de deciso ou Data Mining.
Neste nosso primeiro exemplo, vamos analisar um caso que se encaixa bem com estas duas regras
bsicas. Vamos continuar trabalhando com o banco de dados NwindAccess, o qual voc importou para
o SQL Server 2005, no incio deste captulo. Neste banco de dados, temos uma tabela Pedidos, na qual
esto armazenadas as informaes do cabealho do pedido, tais como: Nmero do Pedido, Cdigo do
Cliente, Cdigo do Funcionrio, Data do Pedido, Valor do frete e assim por diante. Neste banco de
dados, foi criada uma segunda tabela, chamada Detalhes do Pedido.
Figura 9.18 As tabelas Pedidos e Detalhes do Pedido.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5600000Curso Completo
Esta tabela contm os itens individuais, de cada pedido. Esta separao foi necessria, porque um
mesmo pedido pode ter vrios itens. Se no tivesse sido feita esta separao, as informaes do cabealho
do pedido teriam que ser repetidas tantas vezes quantos fossem os itens do pedido. Vimos que esta
repetio vai contra todos os princpios do Modelo Relacional e s causaria problemas. Por isso a
separao em duas tabelas. Na Figura 9.18, temos uma viso geral das tabelas Pedidos e Detalhes do
Pedido, os campos de cada tabela e o relacionamento que existe entre elas, atravs do campo
NmeroDoPedido.
Muito bem, o nosso primeiro problema prtico diretamente relacionado com as tabelas Pedidos e
Detalhes do Pedido. Note que no temos um campo que calcula o valor total para cada pedido. Este
ser justamente o nosso trabalho, neste exemplo. Vamos criar uma view que nos d o resultado indicado
na Figura 9.19.
Figura 9.19 O resultado que deve ser retornado pela nossa view.
Neste exemplo, ser exibido o nmero do pedido, a data do pedido, o nome do cliente e o valor total
para o pedido. Observe que no temos armazenado, nas tabelas, o valor total para o pedido. Mas, por
outro lado, temos todas as informaes necessrias para calcular este total. Se fssemos calcular,
manualmente, o total do pedido, o que teramos que fazer?
Muito simples. Primeiro devemos calcular o valor individual de cada item do pedido. Depois, somar
os valores de todos os itens do pedido. Para o clculo do valor de cada item, vamos usar uma frmula
bem simples, na qual utilizaremos o PreoUnitrio do item, a quantidade e o percentual de desconto.
A frmula que utilizaremos, para o total de cada item, individualmente, ser a seguinte:
([Quantidade]*[PreoUnitrio])*(1-[Desconto])
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000561
N
O
T
A
Bem, a questo que fica : Como chegar a este resultado, usando uma view, no SQL Server 2005? A
resposta est logo a seguir. Continue acompanhando.
Exemplo prtico: Criar uma view que retorne os resultados indicados na Figura 9.19. Para criar esta
view, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio e navegue at o banco de dados NwindAccess.
2. Clique no sinal de + ao lado do banco de dados NwindAccess.
3. Clique com o boto direito do mouse na opo views, abaixo de NwindAccess e, no menu de
opes que exibido, clique em New View.
4. Ser exibida a janela para criao de uma nova view, a qual voc aprendeu a utilizar no exemplo
anterior. No campo view name, digite Con - Total por Pedido.
5. Na parte do comando da view, aps o AS que vem o comando T-SQL para a criao da view.
Vamos iniciar bem light, onde criaremos um comando que exibe os campos NmeroDoPedido
da tabela Pedidos, DataDoPedido da tabela Pedidos e NomeDoDestinatrio da tabela Pedidos.
Para criar esta view inicial, digite o seguinte comando, na linha abaixo do AS:
SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.NomeDoDestinatrio FROM
Pedidos
6. Pressione Ctrl+S para salvar a view e feche a janela de criao da view.
7. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando:
SELECT * FROM [Con - Total por Pedido]
Observe que o nome da view vem entre colchetes. Isso necessrio porque existem espaos em branco no nome da view.
8. Voc dever obter os resultados indicados na Figura 9.20.
9. Muito bem. Agora vamos comear a alterar nossa view. O primeiro passo ser adicionar tambm
campos da tabela Detalhes do Pedido. Com isso, veremos como fica o comando para criar uma
view que retorna dados de duas ou mais tabelas relacionadas.
10. Localize a view Con - Total por Pedido, clique com o boto direito do mouse na view e, no
menu de opes que exibido, clique em Delete. Ser exibida uma janela solicitando
confirmao. Clique em OK para confirmar a excluso da view. preciso excluir a view e cri-
la novamente, pois vamos adicionar novas colunas na view.
11. Clique com o boto direito do mouse na opo views, abaixo de NwindAccess e, no menu de
opes que exibido, clique em New View.
12. Ser exibida a janela para criao de uma nova view. No campo view name, digite Con - Total
por Pedido.
13. Na parte do comando da view, aps o AS que vem o comando T-SQL para a criao da view.
Vamos agora usar um comando que, alm dos campos que j existiam na verso anterior da
view, ir adicionar tambm os campos PreoUnitrio, Quantidade e Desconto, da tabela detalhes
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5620000Curso Completo
N
O
T
A
do pedido. O objetivo desta etapa mostrar como representar, atravs de comandos T-SQL, o
relacionamento entre duas ou mais tabelas. Para criar esta view, digite o seguinte comando, na
linha abaixo do AS:
SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.NomeDoDestinatrio,
[Detalhes do Pedido].PreoUnitrio, [Detalhes do Pedido].Quantidade,
[Detalhes do Pedido].Desconto FROM Pedidos
INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do Pedido].NmeroDoPedido
O detalhe realmente importante, nesta verso da view, o seguinte trecho do comando:
INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do
Pedido].NmeroDoPedido
Este o trecho que faz o relacionamento entre as tabelas Pedidos e Detalhes do pedido, atravs do
campo NmeroDoPedido. O nome da tabela Detalhes do Pedido vem sempre entre colchetes, porque
h espaos no nome da tabela.
14. Pressione Ctrl+S para salvar a view e feche a janela de criao da view.
15. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando:
SELECT * FROM [Con - Total por Pedido]
Observe que o nome da view vem entre colchetes. Isso necessrio porque existem espaos em branco no nome da view.
16. Voc dever obter os resultados indicados na Figura 9.20:
Figura 9.20 Resultados da verso 2.0 da nossa view.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000563
Observe que j so exibidos os campos PreoUnitrio, Quantidade e Desconto, da tabela Detalhes do
Pedido. Ainda estamos longe do resultado final desejado, mas estamos caminhando na direo certa.
Um detalhe interessante a observar que, na listagem, so exibidas vrias linhas para cada um dos
pedidos. Por exemplo, para o primeiro pedido 10248 so exibidas trs linhas. Isso ocorre porque
este pedido tem trs itens. Cada linha tem informao de um dos itens do pedido.
Muito bem. Qual o prximo passo?
Agora vamos alterar novamente o comando T-SQL. Vamos retirar os campos PreoUnitrio, Quantidade
e Desconto. No lugar destes trs campos, vamos criar um nico campo calculado, o qual nos fornecer
o total por item de cada pedido. Vamos ao trabalho ento.
17. Localize a view Con Total por Pedido, clique com o boto direito do mouse na view e, no
menu de opes que exibido, clique em Delete. Ser exibida uma janela solicitando
confirmao. Clique em OK para confirmar a excluso da view. preciso excluir a view e cri-
la novamente, pois vamos retirar colunas e adicionar uma nova coluna (calculada) na view.
18. Clique com o boto direito do mouse na opo Views abaixo de NwindAccess e, no menu de
opes que exibido, clique em New View.
19. Ser exibida a janela para criao de uma nova view. No campo view name, digite Con - Total
por Pedido.
20. Na parte do comando da view, aps o AS que vem o comando T-SQL para a criao da view.
Vamos agora usar um comando que, alm dos campos NmeroDoPedido, DataDoPedido e
NomeDoDestinatrio, da tabela Pedidos, exiba tambm um campo calculado, que chamaremos
de TotalDoPedido. O valor deste campo ser calculado na frmula que indicamos anteriormente:
([Quantidade]*[PreoUnitrio])*(1-[Desconto]). Para criar a verso 3.0 da nossa view, digite o
seguinte comando, na linha abaixo do AS:
SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.NomeDoDestinatrio,
([Quantidade]*[PreoUnitrio])*(1-[Desconto]) AS TotalDoPedido
FROM Pedidos INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do
Pedido].NmeroDoPedido
A novidade, nesta verso da view, o seguinte trecho do comando:
([Quantidade]*[PreoUnitrio])*(1-[Desconto]) AS TotalDoPedido
Este o trecho onde criamos um campo calculado. O campo calculado vem junto com os demais
campos. Observe que, logo aps o campo NomeDoDestinatrio, coloco a frmula de clculo e depois
da frmula, uma clusula AS para dar nome ao campo calculado. Neste exemplo, a frmula
([Quantidade]*[PreoUnitrio])*(1-[Desconto]) e o nome atribudo a esta coluna TotalDoPedido.
21. Pressione Ctrl+S para salvar a view e feche a janela de criao da view.
22. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando:
SELECT * FROM [Con - Total por Pedido]
23. Voc dever obter os resultados indicados na Figura 9.21.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5640000Curso Completo
Figura 9.21 Resultados da verso 3.0 da nossa view.
Observe que agora, com a verso 3.0 da nossa view, j estamos bem mais prximos do resultado final
proposto. Ainda no estamos l, mas falta muito pouco. Observe que j exibido o total de cada item
de cada pedido. Porm, ainda no est sendo totalizado por pedido. Por exemplo, o pedido 10248 tem
trs itens. Esto sendo exibidas trs linhas para este pedido, uma para cada item. Em cada linha
exibido o total do item. Ns temos que fazer com que o SQL Server 2005 junte todos os itens do
mesmo pedido em uma nica linha e, ao invs do total por item, some os valores dos itens do pedido,
exibindo o total do pedido. Conforme voc ver, logo a seguir, bastante simples fazer esta totalizao.
Vamos continuar modificando a nossa view. Agora iremos criar a verso 4.0, que ser a nossa verso
final. Ento mos obra.
24. Localize a view Con - Total por Pedido, clique com o boto direito do mouse na view e, no
menu de opes que exibido, clique em Delete. Ser exibida uma janela solicitando
confirmao. Clique em OK para confirmar a excluso da view. preciso excluir a view e cri-
la novamente, pois vamos fazer alteraes.
25. Clique com o boto direito do mouse na opo Views abaixo de NwindAccess e, no menu de
opes que exibido, clique em New view.
26. Ser exibida a janela para criao de uma nova view. No campo view name, digite Con - Total
por Pedido.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000565
27. Na parte do comando da view, aps o AS que vem o comando T-SQL para a criao da view.
Vamos criar um comando que, alm de retornar os resultados da verso 3.0 da nossa view, faa
tambm a totalizao por pedido. Para criar a verso 4.0 da nossa view, digite o seguinte
comando, na linha abaixo do AS:
SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.NomeDoDestinatrio,
Sum(([Quantidade]*[PreoUnitrio])*(1-[Desconto])) AS TotalDoPedido
FROM Pedidos INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do
Pedido].NmeroDoPedido
GROUP BY Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.NomeDoDestinatrio;
Aqui temos diversas novidades a serem consideradas. Vamos coment-las por partes. A primeira novidade
o uso da funo SUM, para fazer a soma do campo Calculado TotalDoPedido:
Sum(([Quantidade]*[PreoUnitrio])*(1-[Desconto])) AS TotalDoPedido
Porm temos que orientar o SQL Server em como agrupar as linhas. Pois dentro de cada agrupamento
que a soma ser efetuada. No nosso exemplo, vamos agrupar por pedidos. Dentro de um mesmo
pedido, os campos NmeroDoPedido, DataDoPedido e NomeDoDestinatrio so iguais, para todos os
itens de um pedido. Com isso, vamos pedir que estes itens sejam agrupados em um nico e que os
diferentes valores de cada item sejam somados. Ou seja, o resultado prtico obter cada pedido listado
uma nica vez com o respectivo total. Para fazer este agrupamento, utilizamos a clusula GROUP BY,
conforme trecho de cdigo a seguir:
GROUP BY Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.NomeDoDestinatrio
Observe que utilizamos a clusula GROUP BY nos trs campos da tabela Pedidos, ou seja, justamente
os campos que so iguais, para todos os itens de um mesmo pedido.
28. Pressione Ctrl+S para salvar a view e feche a janela de criao da view.
29. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando:
SELECT * FROM [Con - Total por Pedido] ORDER BY NmeroDoPedido
30. Voc dever obter os resultados indicados na Figura 9.22.
Observe que agora cada pedido aparece uma nica vez e, na ltima coluna, exibido o total para o
pedido, total este que nada mais do que a soma dos itens do pedido.
31. Muito bem, com isso conclumos o exerccio proposto, ou seja, criar uma view que retornasse
o total por pedido. Vimos que, basicamente, criar um view, saber criar o comando T-SQL para
retornar o resultado desejado. Por isso que venho insistindo, ao longo de todo o captulo, na
importncia de conhecer os comandos T-SQL. Pois tudo no SQL Server 2005 se resume a
comandos T-SQL. Mesmo quando voc est usando a interface grfica, apenas uma interface
mais amigvel, que o est ajudando a criar um comando T-SQL o qual ser executado. Com
comandos T-SQL voc cria e modifica bancos de dados, cria tabelas, views, triggers, stored
procedures, configura a segurana e a replicao, enfim, faz tudo no SQL Server 2005.
A seguir voc aprender um pouco mais sobre as views chamadas de Referncia Cruzada, as quais usam
as clusulas TRANSFORM e PIVOT. Voc ver que possvel fazer pequenas maravilhas com estas
clusulas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5660000Curso Completo
Figura 9.22 Resultados da verso 4.0 da nossa view verso final.
Muito bem. Para no perdermos o ritmo, vamos a mais alguns exemplos.
EXEMPLO PRTICO 02: USANDO VIEWS
PARA CRIAR CAMPOS CALCULADOS E TOTALIZAES
Neste nosso segundo exemplo, vamos analisar um caso que se encaixa bem no uso das diversas opes
da linguagem T-SQL, para a criao de listagens personalizadas, com valores calculados. Vamos continuar
trabalhando com o banco de dados NwindAccess, o qual voc importou para o SQL Server 2005, no
incio deste captulo. Neste banco de dados, temos uma tabela Pedidos, na qual esto armazenadas as
informaes do cabealho do pedido, tais como: Nmero do Pedido, Cdigo do Cliente, Cdigo do
Funcionrio, Data do Pedido, Valor do frete e assim por diante. Neste banco de dados, foi criada uma
segunda tabela, chamada Detalhes do Pedido. Esta tabela contm os itens individuais, de cada pedido,
conforme j descrito anteriormente. Para este segundo exemplo, tambm vamos utilizar dados da
tabela Funcionrios. Na Figura 9.23, temos uma viso geral das tabelas Pedidos, Detalhes do Pedido e
Funcionrios, os campos de cada tabela e o relacionamento que existe entre elas.
Muito bem, o nosso segundo problema prtico diretamente relacionado com as tabelas Pedidos,
Detalhes do pedido e Funcionrios. O nosso objetivo listar o total de vendas por PasDeDestino e,
dentro de cada PasDeDestino, por funcionrio. Novamente teremos que criar um campo calculado,
para ter o total por cada item de cada pedido. Depois teremos que agrupar por PasDeDestino e, dentro
do pas, agrupar por Funcionrio. Este ser justamente o nosso trabalho, neste exemplo. Vamos criar
uma view que nos d o resultado indicado na Figura 9.24.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000567
Figura 9.23 As tabelas Pedidos, Detalhes do Pedido e Funcionrios.
Figura 9.24 O resultado que deve ser retornado pela nossa view.
Neste exemplo, sero exibidos os totais por pas e, dentro do pas, por funcionrio. Por exemplo, a
primeira linha exibe o total de vendas feitas para clientes da Alemanha, pelo funcionrio Andrew; a
segunda linha apresenta o total de vendas para clientes da Alemanha, feitas pelo funcionrio Anne e
assim por diante.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5680000Curso Completo
Bem, a questo que fica : Como chegar a este resultado, usando uma view, no SQL Server 2005? A
resposta est logo a seguir. Continue acompanhando.
Exemplo prtico: Criar uma view que retorne os resultados indicados na Figura 9.25. Para criar esta
view, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio e navegue at o banco de dados NwindAccess.
2. Clique no sinal de + ao lado do banco de dados NwindAccess.
3. Clique com o boto direito do mouse na opo Views abaixo de NwindAccess e, no menu de
opes que exibido, clique em New View.
4. Ser exibida a janela para criao de uma nova view, a qual voc aprendeu a utilizar no exemplo
anterior. No campo view name, digite Con - Total por Pas e Funcionario.
5. Na parte do comando da view, aps o AS, que vem o comando T-SQL para a criao da Para
esta view. Digite o seguinte comando, na linha abaixo do AS:
SELECT Pedidos.PasDeDestino, Funcionrios.Nome, Sum(([Quantidade]*[PreoUnitrio])*(1-
[Desconto])) AS TotalDeVendas
FROM
(Funcionrios INNER JOIN Pedidos ON Funcionrios.CdigoDoFuncionrio =
Pedidos.CdigoDoFuncionrio) INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido =
[Detalhes do Pedido].NmeroDoPedido
GROUP BY Pedidos.PasDeDestino, Funcionrios.Nome
Este comando no tem grandes novidades em relao ao que j aprendemos. Mas vale a pena comentar
os trechos utilizados neste cdigo.
O primeiro trecho a ser analisado o seguinte:
SELECT Pedidos.PasDeDestino, Funcionrios.Nome, Sum(([Quantidade]*[PreoUnitrio])*(1-
[Desconto])) AS TotalDeVendas
Este trecho define os campos que sero retornados. No nosso exemplo so retornados os campos
PasDeDestino da tabela Pedidos, Nome da tabela Funcionrios e um campo calculado, o qual chamamos
de total de vendas. A frmula de clculo a seguinte: (([Quantidade]*[PreoUnitrio])*(1-[Desconto]). Voc
pode estar se perguntando: Mas e a funo SUM, o que est fazendo neste comando?. Muito bem, para
entender o que a funo SUM est fazendo, temos que nos deslocar para a parte final da instruo SQL:
GROUP BY Pedidos.PasDeDestino, Funcionrios.Nome
Esta parte orienta o SQL Server a agrupar os resultados por pas e, dentro do pas, por Nome do funcionrio.
A ordem definida pela posio dos campos. Como primeiro vem o campo PasDeDestino, primeiro
feito o agrupamento por pas e, dentro do pas, por funcionrios. Se invertssemos esta ordem, seria feito
primeiro o agrupamento por puncionrio e, dentro das vendas de um mesmo funcionrio, por pas.
Bem, agrupamos por pas e, dentro do pas, por funcionrio. E o que devemos fazer para obter os totais de
vendas, dentro destes agrupamentos? Somar os valores do campo TotalDeVendas. exatamente por isso
que foi utilizada a funo SUM. Agora voc j sabe o porqu de utilizar o SUM.
Um detalhe importante que voc deve ter observado (ou talvez no) que no fizemos a ordenao
dos resultados, no comando de criao da view. Ou seja, no usamos uma clusula ORDER BY para
ordenar por pas e depois pelo nome. Isso porque no permitido o uso desta clusula, dentro da view.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000569
N
O
T
A
A pergunta natural que surge : Ento, como faremos para ordenar os resultados? Muito simples. Na
hora de executar a view (conforme mostrarei logo a seguir), utilizaremos a clusula ORDER BY, para
ordenar os resultados retornados pela view.
O restante do comando onde feito o relacionamento entre as tabelas Pedidos e Detalhes do Pedido,
atravs do campo NmeroDoPedido e entre as tabelas Pedidos e Funcionrios, atravs do campo
CdigoDoFuncionrio. Basicamente so duas clusulas INNER JOIN, conforme indicado no trecho de
cdigo a seguir.
FROM
(Funcionrios INNER JOIN Pedidos ON Funcionrios.CdigoDoFuncionrio =
Pedidos.CdigoDoFuncionrio) INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido =
[Detalhes do Pedido].NmeroDoPedido
Muito bem, vamos salvar e testar a nossa view.
6. Pressione Ctrl+S para salvar a view e feche a janela de criao da view.
7. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando:
SELECT * FROM [Con - Total por Pas e Funcionario] ORDER BY PasDeDestino, Nome
Observe que o nome da view vem entre colchetes. Isso necessrio porque existem espaos em branco no nome da view.
8. Voc dever obter os resultados indicados na Figura 9.25:
Figura 9.25 Resultados da execuo da nossa view em conjunto com ORDER BY.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5700000Curso Completo
Eu estou insistindo, bastante, no entendimento dos comandos T-SQL, pois eles so o que h de mais
importante no SQL Server 2005. Para salientar o poder e flexibilidade destes comandos, vamos fazer
uma pequena alterao na nossa view.
9. Muito bem. Agora vamos comear a alterar nossa view. Vamos alterar o comando SQL da view
para que, ao invs da soma das vendas por pas e por funcionrio, seja exibido o nmero de
pedidos por pas de destino e por funcionrio. Para isso, vamos substituir o campo calculado
TotalDeVendas pelo campo NmeroDoPedido, pois esse o campo que nico para cada
pedido. Por isso indicado para ser utilizado em uma contagem. Alm disso, vamos trocar a
funo SUM pela funo COUNT. Mos obra.
10. Localize a view Con - Total por Pas e Funcionario, clique com o boto direito do mouse na
view e, no menu de opes que exibido, clique em Delete. Ser exibida uma janela solicitando
confirmao. Clique em OK para confirmar a excluso da view. preciso excluir a view e cri-
la novamente, pois vamos adicionar novas colunas na view e retirar colunas.
11. Clique com o boto direito do mouse na opo views, abaixo de NwindAccess, e, no menu de
opes que exibido, clique em New view.
12. Ser exibida a janela para criao de uma nova view. No campo view name, digite Con - Total
por Pas e Funcionario.
13. Na parte do comando da view, aps o AS, que vem o comando T-SQL para a criao da view.
Vamos agora alterar o comando, em relao ao que foi utilizado anteriormente. Vamos retirar
a coluna calculada TotalDeVendas. No seu lugar, vamos inserir o campo NmeroDoPedido, da
tabela Pedidos e, neste campo, vamos usar a funo COUNT. Para criar esta view, digite o
seguinte comando, na linha abaixo do AS:
SELECT Pedidos.PasDeDestino, Funcionrios.Nome, Count(Pedidos.NmeroDoPedido) AS
ContarDeNmeroDoPedido
FROM (Funcionrios INNER JOIN Pedidos ON Funcionrios.CdigoDoFuncionrio =
Pedidos.CdigoDoFuncionrio) INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido =
[Detalhes do Pedido].NmeroDoPedido
GROUP BY Pedidos.PasDeDestino, Funcionrios.Nome
14. Pressione Ctrl+S para salvar a view e feche a janela de criao da view.
15. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando:
SELECT * FROM [Con - Total por Pas e Funcionario] ORDER BY PasDeDestino, Nome
16. Voc dever obter os resultados indicados na Figura 9.26.
Observe que, agora, ao invs do total de vendas por pas e por funcionrio, temos o nmero de pedidos
por pas e por funcionrio. Observe como o conhecimento dos comandos T-SQL nos d uma vantagem
muito grande, permitindo a criao de views, para a obteno dos resultados desejados. Conhecer bem
os comandos T-SQL mais do que uma obrigao do administrador e do desenvolvedor que trabalha
com o SQL Server 2005: INDISPENSVEL.
Vamos continuar analisando casos de usos dos comandos T-SQL para a criao de views.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000571
Figura 9.26 Resultados da execuo da nossa view, aps as alteraes.
EXEMPLO PRTICO 03: CRIANDO UMA VIEW BASEADA EM OUTRA VIEW
Neste nosso terceiro exemplo, vamos usar um conceito de grande importncia, o qual muito pouco
utilizado, talvez por falta de conhecimento ou por falta de hbito: a criao de uma view baseada em
outra view. Este um recurso realmente muito poderoso. Muitas vezes, no conseguimos obter os
resultados desejados, com uma nica view. Nestas situaes, podemos dividir o nosso problema em
partes, onde cada parte solucionada com a criao de uma view. Criamos uma view para solucionar
uma parte do problema. Depois criamos uma segunda view, baseada na primeira, para solucionar a
segunda parte do problema. Depois, criamos uma terceira view, baseada na segunda, para solucionar
mais uma parte do problema. E assim por diante, at chegarmos ao resultado final.
Vamos imaginar que estamos criando uma view chamada view2, a qual ser baseada em uma view j
existente, chamada view1. Quando a view2 for executada, primeiro o SQL Server 2005 executa a view1.
O conjunto de dados retornados pela view1 ser utilizado para a execuo da view2. Todo esse processo
transparente para o usurio.
Neste nosso exemplo, apenas para ilustrar, didaticamente, este conceito, vamos criar uma seqncia
de trs views (na verdade a primeira que utilizaremos j foi criada no Exemplo Prtico 01). A segunda
view ser baseada na primeira e a terceira ser baseada na segunda.
Nota: Poderamos solucionar este exemplo usando uma nica view. Mas para salientar o conceito de
view baseada em view, vamos dividir o problema em trs views.
Neste exemplo, o nosso objetivo listar o total de vendas por ano. Vamos criar uma view, que nos d
o resultado indicado na Figura 9.27.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5720000Curso Completo
Figura 9.27 O resultado que deve ser retornado pela nossa view.
Bem, a questo que fica : Como chegar a este resultado, usando views, no SQL Server 2005? A resposta
esta logo a seguir. Continue acompanhando.
Exemplo prtico: Criar uma view que retorne os resultados indicados na Figura 9.28. Para criar esta
view, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio e navegue at o banco de dados NwindAccess.
2. Clique no sinal de + ao lado do banco de dados NwindAccess.
3. Clique com o boto direito do mouse na opo Views, abaixo de NwindAccess, e, no menu de
opes que exibido, clique em New View.
4. Ser exibida a janela para criao de uma nova view, a qual voc aprendeu a utilizar no exemplo
anterior. A primeira view que ns precisamos j existe. a view Con - Total por Pedido, a qual
calcula o total por pedido. Nos criaremos a segunda view, a qual ser baseada nesta primeira
view e que exibir duas colunas calculadas adicionais. Uma que exibe somente o ano do campo
DataDoPedido e outra que exibe somente o ms, do campo DataDoPedido. No campo view
name, digite Con Totais com Ano e Ms.
5. Na parte do comando da view, aps o AS que vem o comando T-SQL para a criao da Para
desta view. Digite o seguinte comando, na linha abaixo do AS:
SELECT [Con - Total por Pedido].NmeroDoPedido, [Con - Total por Pedido].DataDoPedido,
Year([DataDoPedido]) AS AnoPedido, Month([DataDoPedido]) AS MsPedido,
[Con - Total por Pedido].TotalDoPedido
FROM [Con - Total por Pedido];
Este comando tem algumas novidades em relao ao que j aprendemos. Vamos comentar estas
novidades.
O primeiro trecho a ser analisado o seguinte:
Year([DataDoPedido]) AS AnoPedido, Month([DataDoPedido]) AS MsPedido
Neste trecho, utilizei a funo Year, para criar um campo que retorna apenas o ano do campo
DataDoPedido. Chamei este campo de AnoPedido. Tambm utilizei a funo Month, para criar um
campo que retorna apenas o ms do campo DataDoPedido.
Observe tambm que estamos selecionando o campo TotalDoPedido, o qual um campo calculado da
view Con - Total por Pedido.
Muito bem, vamos salvar e testar a nossa view.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000573
N
O
T
A
6. Pressione Ctrl+S para salvar a view e feche a janela de criao da view.
7. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando:
SELECT * FROM [Con Totais com Ano e Ms] ORDER BY AnoPedido, MsPedido
Observe que o nome da view vem entre colchetes. Isso necessrio porque existem espaos em branco no nome da view.
8. Voc dever obter os resultados indicados na Figura 9.28:
Figura 9.28 Resultados da execuo da nossa view, com campos para o ano e ms.
Observe que agora temos uma view, baseada em outra view. Ou seja, criamos a view Con Totais com
Ano e Ms, a qual por sua vez baseada na view Con Total por Pedido. Quando a view Con Totais
com Ano e Ms executada, primeiro ser executada a view Con Total por Pedido. Os resultados
retornados pela view Con - Total por Pedido que sero utilizados como base para a view Con Totais
com Ano e Ms.
9. Muito bem. Agora vamos criar uma terceira view. Vamos cham-la de Com Totais Anuais de
Venda. Esta view ser baseada na view Con Totais com Ano e Ms. Ento mos obra.
10. Clique com o boto direito do mouse na opo views, abaixo de NwindAccess, e, no menu de
opes que exibido, clique em New view.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5740000Curso Completo
11. Ser exibida a janela para criao de uma nova view, a qual voc aprendeu a utilizar no exemplo
anterior. No campo view name, digite Con Totais Anuais de Venda.
12. Na parte do comando da view, aps o AS que vem o comando T-SQL para a criao desta
view. Digite o seguinte comando, na linha abaixo do AS:
SELECT [Con Totais com Ano e Ms].AnoPedido,
Sum([Con Totais com Ano e Ms].TotalDoPedido) AS TotalAnualDeVendas
FROM [Con Totais com Ano e Ms]
GROUP BY [Con Totais com Ano e Ms].AnoPedido
Observe que, basicamente, estamos selecionando os campos AnoPedido e TotalDoPedido, da view
Con Totais com Ano e Ms. No campo TotalDoPedido estamos fazendo uma soma e chamando esta
soma de TotalAnualDeVendas. Por ltimo, agrupamos pelo campo AnoPedido. Mais uma vez s o
uso do bom e velho T-SQL, nada de mais.
Muito bem, vamos salvar e testar a nossa view.
13. Pressione Ctrl+S para salvar a view e feche a janela de criao da view.
14. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando:
SELECT * FROM [Con Totais Anuais de Venda] ORDER BY AnoPedido
15. Pronto, solucionado o exemplo proposto. Voc dever obter os resultados indicados na Figura 9.29:
Figura 9.29 Totais anuais de vendas.
Muito bem, com estes exemplos, podemos ver o valor dos comandos T-SQL. Ao dominarmos estes
comandos, poderemos criar views que atendam demandas reais, por listagens com totalizaes, filtragens
e uma srie de outros requisitos.
CRIANDO VIEWS COM A JANELA DE EXECUO DE COMANDOS T-SQL
Criar views com janela de execuo de comandos T-SQL simplesmente uma questo de utilizar o
comando CREATE VIEW. Vamos estudar este comando neste item.
A sintaxe para o comando CRETE VIEW a seguinte:
CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] ) ]
[ WITH < view_attribute > [ ,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000575
N
O
T
A
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 a janela de execuo de comandos T-SQL,
conhecer a linguagem T-SQL. Pois uma view nada mais do que um comando T-SQL gravado em um
Banco de Dados. Isso s refora o que eu insisti, exaustivamente, nos exemplos anteriores, ou seja, a
importncia de conhecer e dominar os comandos T-SQL.
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 retornar so obtidos a partir das tabelas
do Banco de Dados, toda vez que a view for executada.
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 texto 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
Vamos a um exemplo: criar uma view chamada Mdia_Vendas_por_Ano. Esta view ser criada no
banco de dados NwindAccess. Esta view deve exibir um registro para cada ano em que existem pedidos
e o valor mdio de vendas para cada ano.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5760000Curso Completo
N
O
T
A
O detalhe nesta view que temos que utilizar dados da tabela Pedidos e da tabela Detalhes do Pedido.
Pois os clculos do total por pedido, os quais vo possibilitar o clculo da mdia anual, so realizados
a partir dos campos da tabela Detalhes do pedido. Alm disso, teremos que utilizar a funo Year, para
extrair apenas o ano do campo DataDoPedido. Depois, agrupamos o campo ano e utilizamos a funo
AVG na coluna que calcula o valor das vendas.
Para criar esta view, siga os passos indicados a seguir:
1. Abra a janela de execuo de comandos T-SQL.
2. Digite e execute o seguinte comando:
USE NwindAccess
GO
CREATE VIEW Mdia_Vendas_por_Ano
AS
SELECT YEAR(DataDoPedido) AS [Ano do Pedido],
AVG(([Quantidade] * [PreoUnitrio])* (1 -[Desconto])) AS [Mdia Anual]
FROM [Pedidos]
INNER JOIN
[Detalhes do Pedido] ON [Pedidos].[NmeroDoPedido] =
[Detalhes do Pedido].[NmeroDoPedido]
GROUP BY YEAR(DataDoPedido)
Agora vamos testar se a view Mdia_Vendas_por_Ano est retornando os resultados desejados.
3. Execute o seguinte comando:
SELECT * FROM Mdia_Vendas_por_Ano
Voc deve obter os resultados indicados na Figura 9.30.
Figura 9.30 Mdia anual de vendas.
J que estamos com a janela de execuo de comandos T-SQL aberta, 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
Curso Completo0000577
No Captulo 6, havamos dado permisso para os usurios SERVIDOR\user1 e SERVIDOR\user2 acessar
a instncia SERVIDOR\SQL2005. Agora, vamos adicion-los como usurios com permisso de acesso
ao Banco de Dados NwindAccess, da instncia SERVIDOR\SQL2005.
1. Voc ainda deve estar com a janela de execuo de comandos T-SQL aberta e logado na instncia
SERVIDOR\SQL2005. Execute o seguinte comando:
USE NwindAccess
GO
exec sp_grantdbaccess SERVIDOR\user1
exec sp_grantdbaccess SERVIDOR\user2
Agora vamos dar permisso de acesso para o usurio SERVIDOR\user1 para a view Mdia_Vendas_por_Ano,
e vamos negar permisso de acesso a esta view, para o usurio SERVIDOR\user2.
2. Para dar permisso de acesso ao usurio SERVIDOR\user1, execute o seguinte comando:
GRANT SELECT ON Mdia_Vendas_por_Ano
TO [SERVIDOR\user1]
3. Para negar permisso de acesso ao usurio SERVIDOR\user2, execute o seguinte comando:
DENY SELECT ON Mdia_Vendas_por_Ano
TO [SERVIDOR\user2]
Se o usurio SERVIDOR\user2 tentar executar o seguinte comando:
SELECT * FROM Mdia_Vendas_por_Ano
ele 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 NwindAccess,
A mensagem nos informa que o usurio no tem permisso de acesso. Isto confere com as configuraes
de permisses que fizemos.
4. Feche a janela de execuo de comandos T-SQL e feche o SQL Server Management Studio.
No prximo captulo e no Apndice, falarei ainda 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.
CONCLUSO
Neste captulo apresentamos os elementos bsicos para o desenvolvimento de aplicaes que se baseiam
no SQL Server 2005.
Iniciamos o captulo tratando sobre integridade de dados e como o SQL Server 2005 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
5780000Curso Completo
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 2005. Nos captulos seguintes Captulo 11 e Captulo 12 , passaremos a tratar do
desenvolvimento de aplicaes que acessam os Bancos de Dados do SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Parte 3
DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
5800000Curso Completo
N
O
T
A
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000581
Captulo 10
DESENVOLVIMENTO NO SQL SERVER 2005
STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
5820000Curso Completo
INTRODUO
Neste captulo aprenderemos tpicos avanados de desenvolvimento de aplicaes no SQL SERVER
2005. Tratarei de elementos que so criados em um Banco de Dados do SQL SERVER 2005 e podem ser
acessados por aplicaes desenvolvidas em Visual Basic, Delphi, ASP, ASP.NET, VB.NET, C#, 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 2005, a
linguagem T-SQL.
Stored procedures so semelhantes a procedimentos e sub-rotinas em outras linguagens. Por exemplo:
Podem ser chamados por outro stored procedures ou por programas desenvolvidos em ASP,
Visual Basic, Delphi, ASP.NET, C#, VB.NET, 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$ 50.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 para o gerente, o novo emprstimo
no ser aprovado. Podemos inclusive fazer com que o chefe imediato do gerente 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 pgina.
Na parte final do captulo, tratarei 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 2005 ou baseadas no SQL Server 2005. Nos prximos captulos, falaremos
um pouco mais sobre aplicaes, principalmente utilizando pginas ASP para acessar um Banco de
Dados no SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000583
DESENVOLVIMENTO EM: TEORIA E DESENVOLVIMENTO DE STORED
PROCEDURES NO SQL SERVER 2005
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Saber utilizar o SQL Server Management Studio e o Query Analyzer.
Noes sobre Integridade de Dados e os tipos de integridade existentes no SQL Server 2005.
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 da janela de execuo de comandos T-SQL e do SQL Server Management Studio 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, qual atribudo 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 a ele. 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, o que evita que tenhamos que digitar o conjunto de
comandos repetidamente, cada vez que ele tiver que ser utilizado. A utilizao de stored procedures
uma tcnica eficiente quanto temos que executar o mesmo conjunto de comandos, repetidas vezes. Ao
invs de digitar os comandos cada vez que a operao precisa ser executada, criamos um stored proce-
dure e executamos o stored procedure, sempre que for necessrio. 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-lo 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 aplicao acessa dados de
um Banco de Dados do SQL Server 2005. Sem a utilizao de stored procedures, a aplicao precisa
enviar o conjunto de comandos T-SQL necessrios 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 comandos so necessrios. Qualquer
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
5840000Curso Completo
N
O
T
A
alterao 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 uma 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 e dispendiosa
em termos de custos e tempo.
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 no servidor
SQL Server 2005 e pronto, a aplicao j passaria a ter acesso a verso modificada, evitando uma
reinstalao da aplicao cliente em milhares de estaes de trabalho.
Existem solues ainda 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, dentre as quais destacamos as seguintes:
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 dados 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
de a 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 somente 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000585
Melhoria na velocidade de execuo: O SQL Server 2005 compila os comandos do stored
procedure, na primeira vez que este executado, e mantm estes comandos na memria 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 destas tarefas.
Temporary stored procedures: So criados e mantidos pelo prprio SQL Server 2005, no Banco
de Dados tempdb. Normalmente, esto associados a tarefas de manuteno e gerenciamento
de conexes de usurios com o servidor SQL Server 2005. Podemos ter dois tipos:
stored procedures temporrios locais: O nome inicia com o sinal # e somente a conexo
que criou um stored procedure temporrio poder 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 proce-
dure seja encerrada, quando ento o stored procedure excludo.
System stored procedures: J falamos e utilizamos bastante este tipo de stored procedures.
So criados no momento da instalao do SQL Server 2005 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 2005.
Extended stored procedures: Executam funes externas ao servidor SQL Server 2005,
normalmente funes tpicas do sistema operacional. So criados no momento da instalao
do SQL Server 2005 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 stored procedure 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
5860000Curso Completo
Agora que j conhecemos o que e quais as vantagens, podemos partir para a criao de stored procedures.
CRIANDO STORED PROCEDURES
Criar um stored procedure consiste, basicamente, em definir o conjunto de comandos do stored proce-
dure e salvar este conjunto com um nome, no Banco de Dados.
A exemplo de outros objetos de Banco de Dados, podemos criar um stored procedure, utilizando duas
maneiras diferentes:
A janela de execuo de comandos T-SQL
SQL Server Management Studio
Vamos comear pela janela de execuo de comandos T-SQL, para que possamos aprender os diversos
comandos que podem ser includos em um stored procedure.
CRIANDO STORED PROCEDURES COM
A JANELA DE EXECUO DE COMANDOS T-SQL
Para criar um stored procedure, utilizamos o comando CREATE PROCEDURE. Ao criarmos stored pro-
cedures 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 este 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.
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
comando 2
...
comando n
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000587
N
O
T
A
Vamos a um exemplo simples.
Exemplo prtico: Criar e testar um stored procedure que retorna todos os registros da tabela Pedidos,
do Banco de Dados NwindAccess (para detalhes sobre a criao e importao de dados para este Banco
de Dados, consulte o Captulo 9), em que o campo PasDeDestino igual a Brasil. Gravar o stored
procedure com o nome usp_PedidosDoBrasil. Este stored procedure ser criado no Banco de Dados
NwindAccess da instncia SERVIDOR\SQL2005.
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_PedidosDoBrasil, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio e navegue at o Banco de Dados NwindAccess, da
instncia SERVIDOR\SQL2005.
2. Clique com o boto direito do mouse no Banco de Dados NwindAccess e, no menu de opes
que exibido, clique em New Query.
3. Ser aberta a janela de execuo de comandos T-SQL, sendo o Banco de Dados NwindAccess, o
Banco de Dados atual. Execute o seguinte comando:
USE NwindAccess
GO
CREATE PROCEDURE usp_PedidosDoBrasil
AS
SELECT * FROM Pedidos
WHERE PasDeDestino = Brasil
O comando executado e a seguinte mensagem exibida:
Command(s) completed successfully.
Figura 10.2 A execuo do stored procedure usp_PedidosDoBrasil.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
5880000Curso Completo
4. Agora podemos executar o stored procedure sempre que for necessrio. Para execut-lo, exe-
cute o seguinte comando:
exec usp_PedidosDoBrasil
O stored procedure executado, os comandos que o compem so executados e os resultados, retornados
(somente os pedidos para o Brasil), conforme indicado na Figura 10.2.
Muito bem, acabamos de criar e de executar o nosso primeiro stored procedures. Vamos continuar
avanando no nosso estudo. No prximo tpico, tratarei sobre a criao de stored procedures que
aceitam parmetros de entrada.
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_PedidosDoBrasil, criado no exemplo anterior. Da maneira como foi
criado, sem parmetros de entrada, o critrio de pesquisa ser sempre o mesmo: PasDeDestino = Brasil.
Podemos criar um stored procedure mais genrico, o qual aceita o nome do Pas de Destino como
parmetro de entrada e retorna somente os pedidos para o pas passado como parmetro de entrada.
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 stored procedure, basta utilizar @nome_do_parmetro.
Vamos a alguns exemplos prticos, os quais facilitaro o entendimento desta sintaxe.
Exemplo 1: Criar um stored procedure chamado usp_Pedidos_PaisParametro. Este store procedure ser
criado no Banco de Dados NwindAccess, da instncia SERVIDOR\SQL2005. O stored procedure deve
aceitar um parmetro de entrada chamado Pais, o qual do tipo nvarchar(25), e usar o valor passado
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000589
neste parmetro como critrio de pesquisa, para retornar apenas os pedidos para o pas passado como
parmetro de entrada.
Para criar o stored procedure usp_Pedidos_PaisParametro, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio e navegue at o Banco de Dados NwindAccess, da
instncia SERVIDOR\SQL2005.
2. Clique com o boto direito do mouse no Banco de Dados NwindAccess e, no menu de opes
que exibido, clique em New Query.
3. Ser aberta a janela de execuo de comandos T-SQL, sendo o Banco de Dados NwindAccess o
Banco de Dados atual. Execute o seguinte comando:
4. Digite o seguinte comando:
USE NwindAccess
GO
CREATE PROCEDURE usp_Pedidos_PaisParametro
@Pais nvarchar(25)
AS
SELECT * FROM Pedidos
WHERE PasDeDestino = @Pais
5. Para executar o stored procedure usp_Pedidos_PaisParametro, passando Campinas como
parmetro, utilizamos o seguinte comando:
Execute usp_Pedidos_PaisParametro EUA
Na Figura 10.3, temos os resultados da execuo do stored procedure, com EUA sendo passado como
parmetro de entrada.
Figura 10.3 Execuo de um stored procedure com valor do parmetro de entrada = EUA.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
5900000Curso Completo
6. Para executar o stored procedure usp_Pedidos_PaisParametro, passando Frana como parmetro,
utilizamos o seguinte comando:
Execute usp_Pedidos_PaisParametro Frana
Na Figura 10.4, temos os resultados da execuo do stored procedure, com Frana sendo passado como
parmetro de entrada.
Figura 10.4 Execuo de um ptored procedure com valor do parmetro de entrada = Frana.
Observe que agora temos um stored procedure bem mais flexvel, onde podemos informar o critrio de
pesquisa para o campo PasDeDestino, simplesmente passando um valor para o parmetro de entrada.
7. Mantenha a janela de execuo de comandos T-SQL aberta, pois vamos continuar a utiliz-la,
no prximo exemplo.
Exemplo prtico 02: Criar um stored procedure chamado usp_Ped_Cid_Pas. Este ser criado no
Banco de Dados NwindAccess, da instncia SERVIDOR\QL2005. O stored procedure deve aceitar
dois parmetros de entrada: 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 critrios 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, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio e navegue at o Banco de Dados NwindAccess, da
instncia SERVIDOR\SQL2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000591
2. Clique com o boto direito do mouse no Banco de Dados NwindAccess e, no menu de opes
que exibido, clique em New Query.
3. Ser aberta a janela de execuo de comandos T-SQL, sendo o Banco de Dados NwindAccess o
Banco de Dados atual. Execute o seguinte comando:
4. Digite o seguinte comando:
USE NwindAccess
GO
CREATE PROCEDURE usp_Ped_Cid_Pas
@cidade nvarchar(15),
@pas nvarchar(15)
AS
SELECT * FROM Orders
WHERE (CidadeDeDestino = @cidade) and (PaisDeDestino=@pas)
5. 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
6. 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:
Msg 201, Level 16, State 4, Procedure usp_Ped_Cid_Pas, Line 0
Procedure or Function 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 este
parmetro no foi informado, ao ser feita a execuo do stored procedure.
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:
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.
7. Feche a janela de execuo de comandos T-SQL.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
5920000Curso Completo
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 existe 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 prtico: 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 de o teste ser verdadeiro ou falso. O
stored procedure ser criado como o nome usp_ExIF e ser gravado no Banco de Dados NwindAccess. As
pesquisas sero feitas na tabela Pedidos do Banco de Dados NwindAccess, da instncia SERVIDOR\SQL2005.
O comando para criar o stored procedure proposto o seguinte:
USE NwindAccess
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(NmeroDoPedido) FROM Pedidos WHERE PasDeDestino=@pas1)
SET @TotPed2 = (SELECT Count(NmeroDoPedido) FROM Pedidos WHERE PasDeDestino=@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
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 Brasil,EUA
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000593
O stored procedure usp_ExIF executado e a seguinte mensagem emitida:
O Nmero de pedidos do segundo 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,Brasil
O stored procedure usp_ExIF executado e a seguinte mensagem emitida:
O Nmero de pedidos do primeiro 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
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 de entrada , 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 prtico: 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:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
5940000Curso Completo
N
O
T
A
USE NwindAccess
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(NmeroDoPedido) FROM Pedidos WHERE PasDeDestino=@pas1)
SET @TotPed2 = (SELECT Count(NmeroDoPedido) FROM Pedidos WHERE PasDeDestino=@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 stored 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.
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 segundo pas maior
OK. Este o resultado esperado. Vamos continuar nossos testes. Execute o seguinte comando:
exec usp_ExIF EUA,Brasil
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000595
O stored procedure usp_ExIF executado e a seguinte mensagem emitida:
O Nmero de pedidos do primeiro 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(NmeroDoPedido) FROM Pedidos WHERE PasDeDestino=@pas1)
SET @TotPed2 = (SELECT Count(NmeroDoPedido) FROM Pedidos WHERE PasDeDestino=@pas2)
Agora vamos aprender mais uma estrutura de controle.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
5960000Curso Completo
N
O
T
A
Os comandos dentro do bloco BEGIN...END devem modificar o valor da varivel (ou variveis) que est sendo testada 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
NwindAccess e ter a seguinte estrutura:
Campo Tipo
Nmero float
SomaAcumulada float
Tabela 10.1 Estrutira da tabela SomaNaturais.
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:
Nmero Soma Acumulada
1 1
2 3
3 6
4 10
5 15
Tabela 10.2 Valores da Soma no campo Soma Acumulada.
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 NwindAccess
GO
CREATE TABLE SomaNaturais
(
Nmero float,
SomaAcumulada float
)
Agora vamos criao do stored procedure:
USE NwindAccess
GO
CREATE PROCEDURE usp_CalculaSoma
@numero int
AS
Cria uma varivel para controle do lao
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000597
N
O
T
A
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. A criao de laos infinitos uma
das causas mais comuns para o travamento de programas.
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
Voc obter o seguinte resultado:
Nmero SomaAcumulada
1.0 1.0
2.0 3.0
3.0 6.0
Tabela 10.3 Resultado da execuo do Stored Procedure.
Continua
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
5980000Curso Completo
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 NwindAccess
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
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
Nmero SomaAcumulada
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
Continuao
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000599
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 prtico.
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 NwindAccess, com o nome
de usp_MdiaPedidosPas.
Para criar o stored procedure usp_MdiaPedidosPas, utilizamos o seguinte comando:
USE NwindAccess
GO
CREATE PROCEDURE usp_MdiaPedidosPas
@pas varchar(15),
@mdia float OUTPUT
AS
SET @mdia= (SELECT AVG(([Quantidade]*[PreoUnitrio]) * (1-[Desconto])) AS Media
FROM [Pedidos]INNER JOIN [Detalhes do Pedido]
ON [Pedidos].[NmeroDoPedido] = [Detalhes do Pedido].[NmeroDoPedido]
WHERE ([PasDeDestino]=@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
execuo deste stored procedure:
DECLARE @Resultado float
EXEC usp_MdiaPedidosPas Brasil, @Resultado OUTPUT
PRINT (@Resultado)
Ser retornado o seguinte resultado:
526.728
Algumas observaes importantes, sobre este exemplo:
Temos que especificar o parmetro de sada tanto na criao como na execuo do stored
procedure, conforme indicado no exemplo:
EXEC usp_MdiaPedidosPas Brasil, @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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6000000Curso Completo
Agora execute o seguinte comando:
DECLARE @Resultado float
EXEC usp_MdiaPedidosPas EUA, @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 SQL SERVER MANAGEMENT STUDIO
Podemos utilizar o SQL Server Management Studio para criar stored procedures.
CRIANDO STORED PROCEDURES COM A OPO NEW STORED PROCEDURES
O menu New stored procedure acessado clicando com o boto direito do mouse na opo Program-
mability -> stored procedures, do Banco de Dados onde ser criado o stored procedure.
Ao clicarmos na opo New stored procedure, surge a janela indicada na Figura 10.5.
Nesta janela definimos o nome do stored procedure, no campo Stored procedure name.
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, no tem outro jeito.
Por exemplo, para criar um stored procedure chamado usp_PedidosBrAlAr, definiramos os comandos
de criao, conforme indicado na Figura 10.6.
Para verificar se a sintaxe dos comandos est correta, clique com o boto direito do mouse em qualquer
uma das linhas de comando e, no menu de opes que exibido, clique em Check Sintax. Se os
comandos estiverem corretos, ser emitida a mensagem indicada na Figura 10.7.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000601
Figura 10.5 Janela para criao de um novo stored procedure.
Figura 10.6 Criando o stored procedure usp_PedidosBrAlAr.
Figura 10.7 Syntax dos comandos OK.
Uma vez definidos os comandos que faro parte do stored procedure, pressione Ctrl+S para salv-lo e
feche a janela de criao do stored procedure (clique no boto x mais de baixo). 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6020000Curso Completo
N
O
T
A
No temos como executar o stored procedure utilizando a interface do Enterprise Manager. Para testar
o usp_PedidosBrAlAr, abra a janela de execuo de comandos T-SQL e execute o seguinte comando:
USE NwindAccess
EXEC usp_PedidosBrAlAr
Sero retornados apenas os pedidos para o Brasil, Alemanha e Argentina.
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 em Rename. 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 atualizados, caso contrrio
deixaro de funcionar corretamente.
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 NwindAccess
exec sp_help usp_PedidosBrAlAr
Sero retornadas as seguintes informaes:
Name Owner Type Created_datetime
usp_PedidosBrAlAr dbo stored procedure 2005-05-28 19:48:32.123
O COMANDO SP_HELPTEXT
Podemos utilizar o stored procedure sp_helptext, para exibir os comandos do stored procedure, desde que
este no tenha sido criado com a opo WITH ENCRYPTION. A sintaxe para este comando a seguinte:
exec sp_helptext nome_do_stored_procedure
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000603
Por exemplo, para obter informaes sobre os comandos do stored procedure usp_PedidosBrAlAr,
utilizamos o seguinte comando:
USE NwindAccess
exec sp_helptext usp_PedidosBrAlAr
Sero retornadas as seguintes informaes:
Text
CREATE PROCEDURE [usp_PedidosBrAlAr] AS
SELECT * From Pedidos
WHERE PasDeDestino IN (Brasil,Argentina,Alemanha)
ORDER BY PasDeDestino
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 NwindAccess,
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: SQL Server Language Reference -> Transact-SQL Reference.
Agora vamos ao estudo de triggers.
DESENVOLVIMENTO EM: TEORIA E DESENVOLVIMENTO
DE TRIGGERS NO SQL SERVER 2005
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL.
Noes sobre integridade de dados e os tipos de integridade de dados existentes no SQL Server 2005.
Noes sobre os comandos bsicos da linguagem T-SQL.
METODOLOGIA
Apresentao do conceito de triggers e dos principais comandos para a criao e utilizao de triggers.
TCNICA
Utilizao da janela de execuo de comandos T-SQL e do SQL Server Management Studio para a criao e execuo de triggers.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6040000Curso Completo
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 ter 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 do mesmo Banco de Dados. Por exemplo, podemos criar
uma trigger para a operao INSERT na tabela Detalhes do Pedido. 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
constraint 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, para este gerente. 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 j feitos pelo gerente, durante o ms corrente, j incluindo
o valor do emprstimo que est sendo inserido. Se o somatrio estiver abaixo do limite definido pelo
gerente, o novo emprstimo inserido, caso contrrio o novo emprstimo ser rejeitado e uma ao
ser 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 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 ao DELETE, que exclui todos os itens, na tabela Detalhes do Pedido, do pedido que est
sendo excludo da tabela Pedidos. 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000605
N
O
T
A 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.8.
Figura 10.8 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 e no recomendada,
pois torna difcil o acompanhamento e o gerenciamento da lgica associada ao Banco de Dados.
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 trigger. 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 trigger ir falhar e um roll
back ser utilizado para reverter as alteraes feitas pela trigger e pelo comando que disparou.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6060000Curso Completo
No SQL Server 2005, temos cinco tipos de triggers, conforme o comando com a qual a mesma
associada:
DELETE.
INSERT.
UPDATE.
INSTEAD OF.
AFTER.
.NET (novidade no SQL Server 2005).
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,
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.
Uma novidade introduzida com o SQL Server 2000 que podemos especificar triggers em views que
alteram dados. J o SQL Server 2005 introduziu as chamadas .NET Triggers. Este tipo de trigger pode ser
tanto do tipo INSTEAD OF quanto do tipo AFTER. A novidade que um .NET Trigger, ao invs de
executar comandos T-SQL, capaz de chamar cdigo de um mdulo .NET, o qual foi instalado no SQL
Server 2005. A integrao do SQL Server 2006 com o Framework .NET , sem dvidas, a principal novidade
de programao do SQL Server 2005. Foge ao escopo deste livro abordar todas as possibilidades de
desenvolvimento da integrao entre o SQL Server 2005 e o .NET. Existem livros inteiros, s sobre esta
integrao. Para comear a estudar esta integrao, eu sugiro o seguinte livro: A First Look at SQL Server
2005 for Developers, Editora Addison Wesley, autores: Bob Beauchemin, Niels Berglund e Dan Sullivan.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000607
N
O
T
A
CRIANDO TRIGGERS COM COMANDOS T-SQL
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.
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 trigger 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6080000Curso Completo
N
O
T
A
Exemplo prtico 1: Vamos iniciar com um exemplo simples. Vamos criar uma trigger que evita que
sejam inseridos novos clientes na tabela Clientes, do Banco de Dados NwindAccess, em que o campo
Pas 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 Pas 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, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio e navegue at o Banco de Dados NwindAccess, da
instncia SERVIDOR\SQL2005.
2. Clique com o boto direito do mouse no Banco de Dados NwindAccess e, no menu de opes
que exibido, clique em New Query.
3. Ser aberta a janela de execuo de comandos T-SQL, sendo o Banco de Dados NwindAccess o
Banco de Dados atual.
4. Execute o seguinte comando:
USE NwindAccess
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.
5. Execute o seguinte comando:
USE NwindAccess
GO
INSERT INTO [Clientes]
( [CdigoDoCliente],[NomeDaEmpresa],[NomeDoContato],[CargoDoContato],
[Endereo],[Cidade],[Regio],[CEP], [Pas], [Telefone], [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)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000609
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 iremos tambm cancelar
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 NwindAccess
GO
ALTER TRIGGER nome_trigger
ON nome_tabela
FOR { INSERT | UPDATE | DELETE }
AS
comando 1
comando 2
comando 3
...
comando n
6. Para alterar a trigger tg_ExcluiChinaIndonsia, utilizamos o seguinte comando:
USE NwindAccess
GO
ALTER TRIGGER tg_ExcluiChinaIndonsia
ON Clientes
FOR INSERT
AS
IF EXISTS(SELECT * FROM inserted WHERE Pas 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 NwindAccess
GO
INSERT INTO [Clientes]
( [CdigoDoCliente],[NomeDaEmpresa],[NomeDoContato],[CargoDoContato],
[Endereo],[Cidade],[Regio],[CEP], [Pas], [Telefone], [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 !!!!!!
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6100000Curso Completo
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, para o cliente ABC12, foi realmente cancelado.
Veja que agora temos uma trigger, que dispara sempre que tentarmos inserir um registro na tabela
Clientes. Esta trigger verifica se o registro que est sendo inserido possui um valor igual a China ou
Indonsia, no campo Pas. Caso o registro tenha um destes valores no campo Pas, a insero do novo
registro 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. Mantenha aberta a janela de execuo de comandos T-SQL.
Com este exemplo vimos, na prtica, a ao de uma trigger. Agora, vamos a mais alguns exemplos,
para ilustrar outros tipos de triggers.
Exemplo prtico 2: Vamos supor que, por ordem da administrao, no devem ser feitas alteraes
nem inseres na tabela Clientes. Para garantir que esta norma seja respeitada, voc deve implementar
uma trigger, que dispare em resposta aos comandos INSERT e UPDATE na tabela Clientes. Esta trigger
deve emitir um aviso de que as alteraes e inseres de clientes esto suspensas e registrar em uma
tabela, chamada TentouAlterar, o nome do cliente que se tentou 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.4.
Campo Tipo
Cliente nvarchar(50)
Usurio char(30)
Tabela 10.4 Estrutura da tabela TentouAlterar.
Para criar a trigger tg_NoAlteraInsereCliente, siga os passos indicados a seguir:
1. Voc j deve estar com a janela de execuo de comandos T-SQL aberta. O primeiro passo
criar a tabela TentouAlterar. Para isso, execute o seguinte comando:
USE NwindAccess
CREATE TABLE TentouAlterar
(
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000611
N
O
T
A
Cliente nvarchar(50) NOT NULL,
Usurio char(30) NOT NULL
)
2. Para criar a trigger tg_NoAlteraInsereCliente, utilize o seguinte comando:
USE NwindAccess
GO
CREATE TRIGGER tg_NoAlteraInsereCliente
ON Clientes
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 NomeDaEmpresa 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 NomeDaEmpresa 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 trigger 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.
3. Execute o seguinte comando:
USE NwindAccess
GO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6120000Curso Completo
INSERT INTO [Clientes]
( [CdigoDoCliente],[NomeDaEmpresa],[NomeDoContato],[CargoDoContato],
[Endereo],[Cidade],[Regio],[CEP], [Pas], [Telefone], [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!!!!
4. 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 NwindAccess
GO
DROP TRIGGER tg_ExcluiChinaIndonsia
5. Agora execute novamente o seguinte comando INSERT:
USE NwindAccess
GO
INSERT INTO [Clientes]
( [CdigoDoCliente],[NomeDaEmpresa],[NomeDoContato],[CargoDoContato],
[Endereo],[Cidade],[Regio],[CEP], [Pas], [Telefone], [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, na tabela Clientes e impediu que a operao fosse executada.
6. Vamos conferir se a operao realmente foi cancelada. Execute o seguinte comando:
USE NwindAccess
GO
SELECT * FROM Clientes
WHERE NomeDaEmpresa=123hh
O resultado deve ser:
(0 row(s) affected)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000613
Isto comprova que o registro no foi inserido.
Agora vamos testar se a trigger est realmente funcionando para alteraes UPDATE.
7. Execute o seguinte comando:
USE NwindAccess
GO
Executo o UPDATE para disparar a trigger.
UPDATE [Clientes]
SET [CdigoDoCliente] = XXX12,
[NomeDaEmpresa] = XXX Ltda.,
[NomeDoContato] = Jos Costa,
[CargoDoContato] = Gerente,
[Endereo] = Rua ABC 123,
[Cidade] = Lajeado,
[Regio] = Central,
[CEP] = 11111-111,
[Pas] = Brazil,
[Telefone] = 111-1111,
[Fax] = 111-1111
WHERE [CdigoDoCliente]=RICAR
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 operao fosse executada.
8. Vamos conferir se a operao realmente foi cancelada. Execute o seguinte commando:
USE NwindAccess
GO
SELECT * FROM Clientes
WHERE CdigoDoCliente=XXX12
O resultado deve ser:
(0 row(s) affected)
9. Isto comprova que o registro no foi alterado. Neste caso inclusive as alteraes em cascata, feitas
na tabela Pedidos, foram canceladas. Para comprovar este fato, execute o seguinte comando:
USE NwindAccess
GO
SELECT * FROM Pedidos
WHERE CdigoDoCliente=XXX12'
O resultado deve ser:
(0 row(s) affected)
10. Mantenha a janela de execuo de commandos T-SQL aberta.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6140000Curso Completo
Com estes exemplos, podemos ver como uma trigger disparada e como a trigger 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 resultados prticos
poderemos obter com a utilizao de triggers. Para uma referncia completa da linguagem T-SQL,
consulte o tpico SQL Server Language Reference -> Transact-SQL Reference, no Books OnLine.
Agora vamos aprender a criar triggers utilizando o SQL Server Management Studio.
CRIANDO TRIGGERS COM O SQL SERVER MANAGEMENT STUDIO
Podemos criar, alterar e excluir triggers, utilizando o SQL Server Management Studio. Por exemplo,
para gerenciar as triggers da tabela Clientes, do Banco de Dados NwindAccess, da instncia
SERVIDOR\SQL2005, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio.
2. Na janela Object Explorer, navegue at a tabela Clientes, do Banco de Dados NwindAccess, da
instncia SERVIDOR\SQL2005.
3. D um clique no sinal de + lado da tabela Clientes, para exibir as opes disponveis. Observe
que uma das opes Triggers.
4. Clique no sinal de + ao lado da opo Triggers, para exibir as triggers da tabela Clientes.
Figura 10.9 Janela para a criao de uma nova trigger.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000615
5. Para criar uma nova trigger, clique com o boto direito do mouse na opo Triggers. No menu
de opes que exibido clique em New Trigger. Ser aberta a janela para a criao de uma nova
trigger, conforme indicado na Figura 10.9. Nesta janela voc informa o nome da Trigger, o tipo
After ou Instead of, e a qual ou quais eventos ela ir responder: INSERT, UPDATE ou DELETE.
Voc tambm define algumas outras opes da trigger, tais como se ela ser habilitada ou no,
se os comandos sero criptografados ou no e se ela deve ser replicada ou no. Alm destas
opes, na parte de baixo, voc define os comandos da trigger.
6. Aps definir as opes e os comandos da trigger, pressione Ctrl+S para salvar a trigger e feche a
janela de criao (clique no boto x mais de baixo).
7. Voc tambm pode excluir uma trigger usando o SQL Server Management Studio. Para isso
basta clicar na trigger e, no menu de opes que exibido, clicar em Delete. Ser exibida uma
janela de confirmao. Clique em OK para confirmar a excluso.
8. Voc tambm pode modificar uma trigger usando o SQL Server Management Studio. Para isso
basta clicar na trigger e, no menu de opes que exibido, clicar em Modify. Ser aberta a
janela com as configuraes e os comandos da trigger. Faa as modificaes desejadas, pressione
Ctrl+S para salvar e feche a janela da trigger.
Conforme podemos constatar, a criao, excluso e modificao de triggers com o SQL Server Manage-
ment Studio no difere muito da criao com a janela de comandos T-SQL. Em resumo, temos que
conhecer a linguagem T-SQL para que possamos criar ou modificar uma trigger.
MAIS ALGUNS COMANDOS RELACIONADOS COM TRIGGERS
Vamos ver mais alguns comandos relacionados com triggers. Podemos executar estes comandos na
janela de execuo de comandos T-SQL.
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 NwindAccess
GO
exec sp_helptext tg_NoAlteraInsereCliente
obteremos o seguinte resultado:
CREATE TRIGGER tg_NoAlteraInsereCliente
ON Clientes
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)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6160000Curso Completo
BEGIN
Defino o valor da varivel @NomeCliente
SET @NomeCliente = (SELECT NomeDaEmpresa 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 NomeDaEmpresa 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
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 NwindAccess
GO
exec sp_helptrigger Clientes
obteremos o seguinte resultado:
trigger_name trigger_owner isupdate isdelete isinsert isafter isinsteadof
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:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000617
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 NwindAccess
GO
ALTER TABLE Clientes
DISABLE TRIGGER tg_NoAlteraInsereCliente
Para habilitar novamente a trigger tg_NoAlteraInsereCliente, utilizamos o seguinte comando:
USE NwindAccess
GO
ALTER TABLE Clientes
ENABLE TRIGGER tg_NoAlteraInsereCliente
Poderamos desabilitar uma trigger, por exemplo, quando estamos fazendo uma importao de um
grande volume de dados para uma determinada tabela. Se estivermos certos de que os dados atendem
s regras do negcio, podemos desabilitar a trigger durante a importao, para evitar que a trigger seja
disparada a cada novo registro que importado, o que pode agilizar, bastante, a importao. Uma vez
finalizada a importao, voltamos a habilitar a trigger.
Com isso encerramos o nosso estudo de triggers. Vamos agora estudar alguns comandos avanados da
linguagem T-SQL.
DESENVOLVIMENTO EM: COMANDOS AVANADOS DA LINGUAGEM T-SQL
PR-REQUISITOS
Fundamentos apresentados na Parte I.
Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL.
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6180000Curso Completo
N
O
T
A
pedido, a data do pedido e o pas de destino, teremos que acessar dados das seguintes tabelas do Banco
de Dados NwindAccess.
Clientes
Pedidos
Detalhes do Pedido
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 Pedidos e Detalhes do Pedido, o join ser efetuado atravs do campo
NmeroDoPedido, que o campo que relaciona estas duas tabelas. Na tabela Detalhes do Pedido, o
campo NmeroDoPedido utilizado para indicar a qual pedido pertence cada um dos itens.
Vamos a um exemplo de utilizao de uso da clusula JOIN.
Exemplo: Escrever um comando SQL que retorne os campos indicados na Tabela 10.5.
Campo Tabela
NmeroDoPedido Pedidos
DataDoPedido Pedidos
CdigoDoProduto Detalhes do Pedido
PreoUnitrio Detalhes do Pedido
Quantidade Detalhes do Pedido
Tabela 10.5 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 os campos NmeroDoPedido e DataDoPedido (que so as informaes do cabealho do
pedido), e diferentes valores para os demais campos (que so as informaes dos itens do pedido). Para
construir a listagem solicitada, utilizamos o seguinte comando:
SELECT [Pedidos].[NmeroDoPedido], [Pedidos].[DataDopedido], [Detalhes do
Pedido].[CdigoDoproduto],
[Detalhes do Pedido].[PreoUnitrio],[Detalhes do Pedido].[Quantidade]
FROM [Detalhes do Pedido]
JOIN
[Pedidos]
ON
[Detalhes do Pedido].[NmeroDoPedido] = [Pedidos].[NmeroDoPedido]
Observe que estamos utilizando a sintaxe [NomeDaTabela].[NomeDoCampo].
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000619
O resultado parcial, da execuo deste comando, indicado na listagem a seguir:
NmeroDoPedido DataDoPedido CdigoDoProduto PreoUnitrio 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]
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, relacionadas atravs de uma
ou mais clusulas JOIN. Por exemplo, se tivermos um INNER JOIN ligando as tabelas Clientes
e Pedidos, somente sero retornados os registros para os clientes que tm algum pedido na
tabela Pedidos. Clientes que no efetuaram pedidos (portanto, no tm registros coincidentes
na tabela Pedidos) no faro parte do resultado da operao INNER JOIN. A seguir, um exemplo
de utilizao de um INNER JOIN, entre as tabelas Clientes e Pedidos:
SELECT [Clientes].[CdigoDoCliente], [Clientes].[NomeDaEmpresa],
[Clientes].[Cidade],[Pedidos].[NmeroDoPedido], [Pedidos].[DataDoPedido]
FROM [Clientes] INNER JOIN [Pedidos]
ON [Clientes].[CdigoDoCliente]= [Pedidos].[CdigoDoCliente]
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 tm
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 NmeroDoPedido e DataDoPedido tero o valor Null. A seguir, temos o comando
que utiliza um LEFT OUTER JOIN:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6200000Curso Completo
N
O
T
A
SELECT [Clientes].[CdigoDoCliente], [Clientes].[NomeDaEmpresa],
[Clientes].[Cidade],[Pedidos].[NmeroDoPedido], [Pedidos].[DataDoPedido]
FROM [Clientes] INNER JOIN [Pedidos]
ON [Clientes].[CdigoDoCliente]= [Pedidos].[CdigoDoCliente]
ORDER BY [Clientes].[CdigoDoCliente]
Na Figura 10.21, podemos observar que foram retornados inclusive os clientes que no possuem pedidos,
o que indicado pelos valores NULL nos campos NmeroDoPedido e DataDoPedido.
Se voc utilizar o Banco de Dados NwindAccess, o qual importamos para o SQL SERVER 2005 em um exemplo anterior, 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
Figura 10.10 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 [Clientes].[CdigoDoCliente], [Clientes].[NomeDaEmpresa],
[Clientes].[Cidade],[Pedidos].[NmeroDoPedido], [Pedidos].[DataDoPedido]
FROM [Clientes] RIGHT OUTER JOIN [Pedidos]
ON [Clientes].[CdigoDoCliente]= [Pedidos].[CdigoDoCliente]
ORDER BY [Clientes].[CdigoDoCliente]
Na Figura 10.11, 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 (Pedidos) e apenas os
registros relacionados da primeira tabela (Clientes).
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000621
Figura 10.11 Utilizando RIGHT OUTER JOIN.
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.6.
Campo Tabela
CdigoDoCliente Clientes
NomeDaEmpresa Clientes
NmeroDoPedido Pedidos
DataDoPedido Pedidos
TotalPedido ([Quantidade]*[PreoUnitrio])*(1-[Desconto]) da tabela Detalhes do pedido.
Tabela 10.6 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 Detalhes do Pedido. Com isso estamos acessando
campos de trs tabelas: Clientes, Pedidos e Detalhes do Pedido. Trs tabelas = dois joins.
A seguir temos o comando que retorna a listagem solicitada:
SELECT [Clientes].[CdigoDoCliente], [Clientes].[NomeDaEmpresa],
[Pedidos].[NmeroDoPedido],[Pedidos].[DataDoPedido],
SUM(([Detalhes do Pedido].[Quantidade] * [Detalhes do Pedido].[PreoUnitrio])
* (1 - [Detalhes do Pedido].Desconto)) AS TotalPedido
FROM [Detalhes do Pedido]
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6220000Curso Completo
INNER JOIN
[Pedidos] ON [Detalhes do Pedido].[NmeroDoPedido] =
[Pedidos].[NmeroDoPedido]
INNER JOIN
[Clientes] ON [Pedidos].[CdigoDoCliente] = [Clientes].[CdigoDoCliente]
GROUP BY
[Clientes].[CdigoDoCliente], [Clientes].[NomeDaEmpresa],
[Pedidos].[NmeroDoPedido],[Pedidos].[DataDoPedido]
ORDER BY
[Clientes].[CdigoDoCliente]
Na Figura 10.12, temos a parte inicial do resultado retornado:
Figura 10.12 Utilizando dois Joins no mesmo comando.
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 a duas, conforme indicado no trecho a seguir:
FROM [Detalhes do Pedido]
INNER JOIN
[Pedidos] ON [Detalhes do Pedido].[NmeroDoPedido] =
[Pedidos].[NmeroDoPedido]
INNER JOIN
[Clientes] ON [Pedidos].[CdigoDoCliente] = [Clientes].[CdigoDoCliente]
Fizemos o join entre as tabelas [Detalhes do Pedido] e [Pedidos], atravs do campo [NmeroDoPedido].
Depois feito o join entre as tabelas [Pedidos] e [Clientes], atravs do campo CdigoDoCliente.
Tambm utilizamos GROUP BY, para agrupar os diversos itens de cada pedido e a funo SUM, para calcular
a soma de todos os itens de um mesmo pedido. No final, ordenamos pelo cdigo do cliente [CdigoDoCliente].
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000623
N
O
T
A
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 a 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
e assim por diante. Porm, mais uma vez quero chamar ateno para a questo do desempenho.
Para vermos as subconsultas em ao, vamos a um exemplo prtico.
Exemplo: Criar uma listagem onde so exibidos os campos NmeroDoPedido da tabela Pedidos, o
campo DataDoPedido da tabela Pedidos e o maior preo unitrio dentre os itens que fazem parte do
pedido. Para criar esta consulta, utilizamos o seguinte comando:
SELECT [Pedidos].[NmeroDoPedido], [Pedidos].[DataDoPedido],
(SELECT MAX([Detalhes do Pedido].[PreoUnitrio]) FROM [Detalhes do Pedido]
WHERE [Pedidos].[NmeroDoPedido] = [Detalhes do Pedido].[NmeroDoPedido]) AS
MaiorPreoUnitrio
FROM [Pedidos]
Na Figura 10.13, temos a parte inicial do resultado retornado.
Observe a subconsulta:
(SELECT MAX([Detalhes do Pedido].[PreoUnitrio]) FROM [Detalhes do Pedido]
WHERE [Pedidos].[NmeroDoPedido] = [Detalhes do Pedido].[NmeroDoPedido]) 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 principal. Considere
o comando a seguir:
SELECT NmeroDoPedido, CdigoDoCliente,DataDoPedido As MaisRecente
FROM Pedidos
WHERE DataDoPedido=(Select MAX(DataDoPedido) FROM Pedidos)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6240000Curso Completo
Figura 10.13 O primeiro exemplo com subconsultas.
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:
NmeroDoPedido CdigoDoCliente MaisRecente
11074 SIMOB 1998-05-06 00:00:00.000
11075 RICSU 1998-05-06 00:00:00.000
11076 BONAP 1998-05-06 00:00:00.000
11077 RATTC 1998-05-06 00:00:00.000
A subconsulta determina a data mais recente, data esta que utilizada como critrio para a clusula
WHERE. Em resumo, o resultado retornado pela subconsulta passado como critrio de filtragem para
a clusula WHERE.
Se trocarmos o MAX por MIN, teremos uma listagem dos pedidos mais antigos. Execute o seguinte
comando:
SELECT NmeroDoPedido, CdigoDoCliente,DataDoPedido As MaisAntigo
FROM Pedidos
WHERE DataDoPedido=(Select MIN(DataDoPedido) FROM Pedidos)
Com este comando obtemos o seguinte resultado:
NmeroDoPedido CdigoDoCliente MaisAntigo
10248 VINET 1996-07-04 00:00:00.000
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
Curso Completo0000625
Exemplo: Criar uma consulta que liste o nome de todos os funcionrios que fizeram pedidos para o
Brasil, em que o campo DataDoPedido para o ano de 1997. Para obter esta listagem, utilizamos o
seguinte comando:
SELECT
[Funcionrios].[Nome]+ +[Funcionrios].[Sobrenome] As NomeCompleto, CdigoDoFuncionrio
FROM Funcionrios
WHERE EXISTS
( SELECT * FROM [Pedidos]
WHERE
[Funcionrios].[CdigoDoFuncionrio]=[Pedidos].[CdigoDoFuncionrio]
AND Year([DataDoPedido])=1997)
ORDER BY [Funcionrios].[Nome]
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 interna.
3. Aps a execuo, a subconsulta interna retorna o seu resultado para a consulta principal.
4. Com base no valor retornado pela subconsulta, em conjunto com a funo EXITS, 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 CdigoDoFuncionrio
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 2005. Tratamos de elementos que so criados no prprio Banco de Dados, como por exemplo:
Stored procedures
Triggers
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6260000Curso Completo
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
Uma das grandes vantagens dos stored procedures que estes 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 11
DESENVOLVENDO APLICAES QUE
ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6280000Curso Completo
N
O
T
A
INTRODUO
Desenvolver aplicativos que acessam dados em um servidor SQL Server 2005 bastante simples. Com
as tecnologias para acesso de dados, ficou mais fcil criar aplicaes que acessam dados de variadas
fontes: SQL Server 2005, 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. Neste captulo abordarei as
tecnologias clssicas, tais como ODBC, ADO e a linguagem de programao ASP. No Captulo 13
abordarei o .NET e a criao de pginas ASP.NET que acessam banco de dados do SQL Server 2005. A
integrao com o .NET (assunto do Captulo 15) , sem dvidas, a grande novidade do SQL Server
2005 para o desenvolvimento de aplicaes, em relao s verses anteriores do SQL Server.
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++,
VB.NET, C#, C++.NET, 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 (uma tecnologia mais antiga, mas ainda presente em muitas aplicaes) 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 mais antigas, 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 darei nfase em como acessar os dados do servidor SQL Server 2005, dentro de uma
aplicao. Apresentarei 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
2005, atravs de pginas ASP. No Captulo 12 tratarei do acesso aos dados de um servidor SQL Server
2005, utilizando o Microsoft Access.
Para maiores informaes sobre a criao de aplicaes utilizando ASP, consulte o e-book Criando Sites Dinmicos com ASP 3.0, de minha
autoria, o qual pode ser adquirido em http://www.juliobattisti.com.br/ebooksdoautor
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 2005 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 (Captulo 11), ou um Banco de Dados do Microsoft Access (Captulo 12) ou uma pgina
ASP.NET (Captulo 13).
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000629
N
O
T
A
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 criao de formulrios com HTML e da linguagem VBScript da Microsoft. Maiores informaes sobre estes tpicos podem ser
encontradas no e-book sobre ASP 3.0, de minha autoria, citado anteriormente http://www.juliobattisti.com.br/ebooksdoautor
DESENVOLVIMENTO EM: UMA INTRODUO AO
DESENVOLVIMENTO DE APLICAES EM N CAMADAS
PR-REQUISITOS
No h.
METODOLOGIA
Apresentao dos principais modelos de desenvolvimento de aplicaes e sua evoluo.
As aplicaes atuais so, sem nenhuma dvida, muito mais complexas de projetar, 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 Relationship Management (Gerenciamento das Relaes com o cliente), ERP Enterprise
Resource Planning, etc. So muitas siglas, muitas necessidades e, conseqentemente, muita
complexidade no desenvolvimento e, principalmente, na manuteno e atualizao das 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, farei
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.
Conforme pode ser visto na Figura 11.1, temos servidores de arquivos, servidores de Banco de Dados e
outras funes, tais como: servidores de impresso, servidores de segurana (Firewall, Proxy, Sistemas
de Deteco de Invases), servidores Web, servidores FTP, etc. Estas redes, tipicamente, so formadas
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6300000Curso Completo
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.
Figura 11.1 O modelo Cliente/Servidor tradicional.
APLICAES EM DUAS CAMADAS
No incio da utilizao do modelo Cliente/Servidor (na primeira metade da dcada de 90), 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000631
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 2005). 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 aplicao 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, de interao com o usurio
final, 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 antiga 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.
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 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 das regras de negcio. Por exemplo, um programa para gerncia de
recursos humanos, desenvolvido para a legislao dos EUA, evidentemente, 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6320000Curso Completo
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 destas regras. A Figura 11.3 nos d uma idia geral do
modelo em trs camadas.
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 direto 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
continuam gerando a necessidade de atualizar a aplicao em todos os computadores, onde a
aplicao 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 de
negcio for alterada, basta atualiz-la no servidor de aplicaes. Aps a atualizao, a qual s
precisa ser feita no servidor de aplicaes, todos os usurios passaro a ter acesso nova verso,
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000633
sem que seja necessrio reinstalar o programa cliente em cada um dos computadores da rede.
Vejam que, ao centralizar as regras do negcio em um servidor de aplicaes, estamos facilitando,
enormemente, 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
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.br/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
direto ao Banco de Dados, sem antes passar pelo servidor de aplicaes. Com isso, as quatro camadas
so as seguintes:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6340000Curso Completo
Cliente: Neste caso, o cliente o navegador utilizado pelo usurio, quer seja o Internet Ex-
plorer, quer seja o Netscape Navigator, FireFox ou outro navegador qualquer.
Apresentao: Passa para o servidor Web. A interface pode ser composta de pginas HTML,
ASP, ASP.NET, PHP ou qualquer outra tecnologia capaz de gerar contedo para o navegador,
dinamicamente a partir do contedo contido em um banco de dados. Com isso, alteraes na
interface da aplicao so feitas diretamente no servidor Web, sendo que estas alteraes estaro,
automaticamente, disponveis para todos os clientes. Atualizar uma aplicao , basicamente,
atualizar as pginas da aplicao, no servidor Web. 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 faz e gerencia todas as conexes 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 de 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.
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, ser 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 facilidade de
gerenciamento, reduo de custos, facilidade de implementao 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 em 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 deslocadas para os servidores, com isso
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000635
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
cada 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 sub-
dimensionado. Quando o servidor no est corretamente dimensionado, a tendncia que o acesso
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 (assunto deste captulo). 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 vamos utilizar a tecnologia ASP para acessar dados no servidor SQL Server 2005.
DESENVOLVIMENTO EM: PREPARAO DO SERVIDOR
PARA ACOMPANHAR OS EXEMPLOS DESTE CAPTULO
PR-REQUISITOS
Noes bsicas do Windows.
Noes bsicas de aplicaes Web.
Noes bsicas do Windows 2000 Server ou Windows Server 2003.
METODOLOGIA
Preparao de um 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.
Caracterstica Descrio
Sistema Operacional Windows 2000 Server em portugus.
Nome Servidor
SQL Server SQL Server 2005
Instncias SERVIDOR\SQL2005
SERVIDOR\CURSOSJB
Endereo Web http://servidor (*) ou www.groza.com
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6360000Curso Completo
N
O
T
A
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 LivroSQL2005, no drive C:. Dentro da pasta
LivroSQL2005, crie uma subpasta chamada Capitulo11 (Capitulo sem acento), conforme indicado na
Figura 11.5.
Figura 11.5 Criando a pasta C:\LivroSQL2000\Capitulo11.
Agora vamos fazer com que a pasta LivroSQL2005 (e, conseqentemente, todas as suas subpastas; no
nosso exemplo temos somente a subpasta Capitulo 11) passe a fazer parte do servidor Web que estou
utilizando para os exemplos deste captulo -> 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. Para
associar o nome www.groza.com com o seu servidor (este tipo de associao s pode ser feito para um servidor interno, o qual no esteja como
servidor na Internet. Voc no pode usar um nome na Internet, sem antes t-lo registrado no site http://www.registro.br), vamos configurar o
arquivo hosts. O arquivo hosts fica na pasta C:\Winnt\system32\drivers\etc. Substitua C: pela pasta onde o Windows est instalado e Winnt, pela
pasta onde o Windows est instalado. Voc deve editar o arquivo hosts ( hosts mesmo, sem nenhuma extenso) e acrescentar a seguinte linha,
no final do arquivo: 127.0.0.1 www.groza.com Muito cuidado ao salvar o arquivo, pois se ele for salvo com uma extenso, como por exemplo
hosts.txt, esta configurao no ir funcionar. O nome do arquivo tem que ser somente hosts, sem nenhuma extenso.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000637
TORNANDO A PASTA LIVROSQL2005, PARTE DO SERVIDOR IIS
Agora vamos aprender, passo a passo, como tornar a pasta LivroSQL2005 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 seguinte e-
book de minha autoria: Microsoft Windows 2000 Server Curso Bsico & Rpido, o qual pode ser
adquirido atravs do endereo http://www.juliobattisti.com.br/cursos
Para tornar a pasta LivroSQL2005 parte do servidor IIS http://servidor (tornar parte significa que a
pasta LivroSQL2005 passar a ser uma pasta virtual do servidor IIS), siga os passos indicados a seguir:
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,
dentre outras opes disponveis, trs opes padro, conforme indicado pela Figura 11.6.
Figura 11.6 Opes de gerenciamento para o IIS 5.0.
4. D um clique no sinal de +, ao lado da opo Site da Web padro, para expandir esta opo. As
opes que aparecem so as pastas virtuais que j fazem parte do site padro.
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 pasta LivroSQL2005, criada anteriormente. Ser exibida a
primeira tela do assistente para a criao de pasta virtual. A primeira etapa apenas informativa.
D um clique no boto Avanar, seguindo para a prxima etapa do assistente.
Nesta segunda etapa, voc precisa definir um nome (Alias) para esta pasta virtual. Utilizaremos o
mesmo nome da pasta: LivroSQL2005. Porm no obrigatrio que seja utilizado o mesmo nome. Por
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6380000Curso Completo
questo de facilidade de administrao e gerenciamento, sempre utilizo nomes iguais para o nome da
pasta no disco rgido e o nome/apelido a ser utilizado no IIS.
Figura 11.7 Criando uma nova pasta virtual no servidor IIS.
7. Digite LivroSQL2005, conforme indicado pela Figura 11.8. D um clique no boto Avanar.
Figura 11.8 Digitando um nome para a pasta no IIS.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000639
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:\LivroSQL2005. Com isso estamos associando a
pasta C:\LivroSQL2005, com a pasta virtual LivroSQL2005, do servidor IIS.
8. Digite C:\LivroSQL2005, conforme indicado na Figura 11.9, e d um clique no boto Avanar,
para ir para a prxima etapa do assistente.
Figura 11.9 Informando o caminho da pasta C:\LivroSQL2005.
Nesta etapa do assistente, podemos configurar as permisses de acesso pasta LivroSQL2005. 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.
Voc estar de volta ao gerenciador do Internet Services.
Observe que um novo diretrio virtual chamado LivroSQL2005 j aparece como parte integrante Site
da Web Padro.
11. Feche o gerenciador do Internet Services.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6400000Curso Completo
N
O
T
A
Figura 11.10 Configurando as opes de segurana.
Uma vez criado o diretrio virtual LivroSQL2005, o qual est associado pasta C:\LivroSQL2005, como posso acessar, atravs do navegador,
o contedo que for colocado dentro da pasta C:\LivroSQL2005, 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 LivroSQL2005 (associada com a pasta C:\LivroSQL2005) 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/LivroSQL2005/index.asp.
A Figura 11.11 descreve em detalhes a formao deste endereo.
Figura 11.11 A formao de endereos no servidor IIS.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000641
N
O
T
A
Observe que, primeiro, vem o nome do servidor (http://servidor), depois o nome do diretrio virtual
(LivroSQL2005) 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 LivroSQL2005?
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
LivroSQL2005. 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 diretrio 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 LivroSQL2005? Resposta: http://servidor/LivroSQL2005/Tes-
tes/teste.htm
Qual o endereo de uma pgina chamada cadastro.asp, gravada no diretrio Capitulo10?
Resposta: http://servidor/LivroSQL2005/Capitulo10/cadastro.asp
importante que voc entenda bem a maneira como o servidor IIS constri os endereos de acesso
para as pginas gravadas em suas pastas virtuais. Observe que a pasta virtual simplesmente um nome
que nos leva at o diretrio real, gravado no HD. Podemos criar diversos diretrios virtuais, em um
nico servidor IIS.
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 2005, a
partir de pginas ASP. Ento, mos obra.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6420000Curso Completo
DESENVOLVIMENTO EM: UM POUCO SOBRE ODBC, OLE DB E ADO
PR-REQUISITOS
Noes sobre os modelos de desenvolvimento de aplicaes.
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. A 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 Activex Data Object.
ODBC Open Database Connectivity.
OLE DB prefiro no traduzir.
ADO.NET A tecnologia de acesso a dados do .NET. Veremos no Captulo 13.
normal que o desenvolvedor fique um pouco confuso com esta sopa de letrinhas (na verdade
bem confuso). 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 (escrevi o texto entre aspas no ano 2000,
quando eu estava escrevendo o livro SQL Server 2000 Curso Completo. Porm como toda boa
previso, errei feio, ou seja, hoje, cinco anos depois, continuamos tendo que trabalhar com aplicaes
baseadas em ODBC. No vou arriscar uma nova previso; s sei que todo profissional de banco de
dados continua tendo que conhecer sobre ODBC. Por isso que veremos esta tecnologia tambm
neste livro de SQL Server 2005). Por isso, analisaremos estas duas opes neste captulo ODBC e
ADO/OLE-DB , sendo que muitas vezes utilizaremos as duas ao mesmo tempo. Agora vamos procurar
entender um pouco melhor estas tecnologias.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000643
N
O
T
A
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 (veja o Captulo 1 para um estudo detalhado sobre o
Modelo Relacional de Dados), onde temos tabelas e relacionamentos entre tabelas. So exemplos de
Bancos de Dados relacionais: MS SQL Server, ORACLE, MS Access, Sybase, DB2 da IBM, etc.
Para uma reviso dos fundamentos 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.
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 2005.
Sem problemas. Basta alterar nossa fonte de dados ODBC para que a fonte passe a referenciar o Banco
de Dados no Microsoft SQL Server 2005 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 fonte precisa ser previamente criada, utilizando-se o
gerenciador ODBC, o qual acessvel atravs da opo Ferramentas administrativas do menu Iniciar -
> Programas -> Ferramentas Administrativas -> Fontes de dados (ODBC). Agora aprenderemos a criar
fontes de dados ODBC, na prtica.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6440000Curso Completo
N
O
T
A
N
O
T
A
Ao desenvolver um aplicativo, o desenvolvedor far referncia fonte ODBC criada. A ttulo de exemplo,
iremos criar duas fontes, uma para um Banco de Dados Microsoft Access e outra para um Banco de
Dados Microsoft SQL Server 2005. A fonte ODBC para o SQL Server 2005 ser utilizada neste captulo
e a fonte para o Microsoft Access, no Captulo 12.
CRIANDO UMA FONTE ODBC PARA UM BANCO DE DADOS DO MICROSOFT ACCESS
Vamos criar uma fonte para um Banco de Dados do Microsoft Access. Utilizaremos uma base de exemplo
que j vem com o Microsoft Access Northwind.mdb. No nosso exemplo, o banco de dados
Northwind.mdb estar localizado em C:\Meus documentos.
A estrutura (tabelas e relacionamentos) deste Banco de Dados praticamente igual ao Northwind instalado com o SQL Server 2000, o qual
pode ser importado para o SQL Server 2005, usando o DTS Import/Export Wizard, o qual j foi exemplificado, anteriormente, neste livro.
Para criar uma fonte ODBC chamada nwind, associada com o banco de dados Northwind.mdb, siga os
passos indicados a seguir:
Dependendo da verso do ODBC instalada 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 de dados (ODBC). Surge a janela indicada na Figura 11.14.
Figura 11.14 O gerenciador de fontes ODBC.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000645
N
O
T
A
Uma fonte de dados chamada de DSN (Data Source Name), a qual pode ser de trs tipos:
DSN de Usurio (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 fonte foi criada. um tipo pouco utilizado.
DSN de Sistema (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.
DSN de Arquivo (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 exemplo, vamos trabalhar, 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.
2. D um clique na guia DNS de Sistema. Surge a janela indicada na Figura 11.15.
Figura 11.15 Criando uma fonte do tipo System DSN.
3. D um clique no boto Adicionar 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6460000Curso Completo
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.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000647
6. No campo Nome da fonte de dados, digite nwind.
7. No campo Descrio, digite Dados do Microsoft Access.
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.
9. 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6480000Curso Completo
N
O
T
A
N
O
T
A
N
O
T
A
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 janela do gerenciador de fontes ODBC, com a fonte ODBC nwind j
criada. Feche o gerenciador.
Vamos utilizar esta fonte ODBC em diversos exemplos do Captulo 12.
CRIANDO UMA FONTE ODBC PARA UM BANCO DE DADOS PUBS, DA INSTNCIA SERVIDOR\SQL2005
Vamos criar uma fonte para um Banco de Dados do Microsoft SQL Server 2005. Utilizaremos o banco
de dados Pubs, o qual era instalado automaticamente com o SQL Server 2000. No SQL Server 2005 no
est disponvel este banco de dados. Para os exemplos deste captulo, eu utilizei o DTS Import/Export
Wizard, para importar o banco de dados Pubs de uma instncia do SQL Server 2000 para a instncia
SERVIDOR\SQL2005, do SQL Server 2005. Voc aprendeu a utilizar o DTS Import/Export Wizard nos
Captulos 7 e 9. Nestes Captulos voc encontra exemplos prticos, passo a passo, de como usar o DTS
Import/Export Wizard. No nosso exemplo, o nome do Servidor SQL SERVIDOR e a instncia
SERVIDOR\SQL2005. 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. Existe tabela para cadastro de autores, ttulos de livro, etc.
Para criar uma fonte ODBC chamada ST1_pubs, fonte esta associada ao banco de dados Pubs, da
instncia SERVIDOR\SQL2005, siga os passos indicados a seguir:
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 de dados ODBC).
2. D um clique na guia DSN de Sistema.
3. D um clique no boto Adicionar, 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.
5. D um clique no boto Concluir. aberta a janela Criar uma nova fonte de dados para o SQL Server.
6. No campo Nome, digite ST1_pubs.
7. No campo Descrio, digite Banco pubs no SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000649
Figura 11.20 Selecionando o Banco de Dados a ser usado.
8. Na lista Servidor, selecione o nome do Servidor SQL a ser utilizado. No nosso exemplo
SERVIDOR\SQL2005.
A janela Criar uma nova fonte de dados para o SQL Server deve estar conforme indicado na
Figura 11.21.
Figura 11.21 Definies para a fonte ODBC.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6500000Curso Completo
9. D um clique no boto Avanar para ir para a prxima etapa.
10. Nesta etapa, definimos o tipo de autenticao a ser utilizado. Como estamos nos conectando
com SERVIDOR\SQL2005, certifique-se de que a opo Com a identificao do Windows NT
usando ident. de logon na rede esteja selecionada, conforme indicado na Figura 11.22.
Figura 11.22 Definindo o tipo de autenticao.
11. D um clique no boto Avanar, seguindo para a prxima etapa do assistente. Nesta tela,
vamos definir com qual Banco de Dados nos conectamos por padro, ao estabelecer a conexo
com SERVIDOR\SQL2005, usando a fonte ODBC que est sendo crida. Clique na opo Alterar
o banco de dados padro para. A lista abaixo desta opo habilitada. Nesta lista, selecione
Pubs, conforme indicado na Figura 11.23.
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.
13. Selecione as opes conforme indicado na Figura 11.24.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000651
Figura 11.23 Definindo a qual Banco de Dados a fonte ODBC se conecta.
Figura 11.24 Finalizando a configurao da fonte ODBC.
14. D um clique no boto Concluir para finalizar a criao da fonte ODBC.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6520000Curso Completo
Figura 11.25 Resumo das opes selecionadas para a fonte ODBC.
15. D um clique no boto Testar fonte de dados. Deve surgir uma janela indicando que o teste foi
realizado com sucesso, conforme indicado na Figura 11.26.
Surge a janela Instalao do ODBC para Microsoft SQL Server, a qual informa as diversas opes
selecionadas, conforme indicado na Figura 11.25. Nesta janela, podemos clicar no boto Testar fonte
de dados, para verificar se a conexo com o Banco de Dados est OK.
Figura 11.26 Teste indicando que a conexo est OK.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000653
N
O
T
A
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.
Utilizaremos esta fonte ODBC nos 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 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.
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 OLE DB Provider para Microsoft SQL Server, um para mensagens
de correio do Microsoft Exchange, um para Bancos de Dados Oracle e assim por diante.
Figura 11.27 Acessando fontes de dados com OLE DB.
Jet
Provider
SQL Server
Provider
OLE DB
Gerenciador ODBC
OLE DB Providers
Drivers ODBC
Fontes de dados: Estruturadas e No estruturadas.
Driver ODBC
SQL Server
Driver ODBC
Microsoft Access
Driver ODBC
Oracle
ORACLE Microsoft
Access
Microsoft
Access
Microsoft
SQL Server
Microsoft
SQL Server
Microsoft
Exchange
Server
Exchange
Server
Provider
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6540000Curso Completo
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 do OLE DB Provider para ODBC), mais as fontes
de dados no estruturadas para as quais existem OLE DB Provider disponveis.
Na Figura 11.27, temos uma viso geral do acesso a fontes de dados, utilizando 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. Quando 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 2005. 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.
ADO
Jet
Provider
SQL Server
Provider
OLE DB
Gerenciador ODBC
OLE DB Providers
Drivers ODBC
Fontes de dados: Estruturadas e No estruturadas.
Driver ODBC
SQL Server
Driver ODBC
Microsoft Access
Driver ODBC
Oracle
ORACLE
Microsoft
Access
Microsoft
Access
Microsoft
SQL Server
Microsoft
SQL Server
Microsoft
Exchange
Server
Exchange
Server
Provider
Figura 11.28 Acessando fontes de dados com ADO/OLE DB.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000655
N
O
T
A
N
O
T
A
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 captulos sempre que formos fazer acesso a bases de dados, vamos utilizar objetos ADO.
Por exemplo, para estabelecer uma conexo com um Banco de Dados, estaremos utilizando o objeto Connec-
tion; para acessar registros de uma ou mais tabelas do Banco de Dados, utilizaremos um objeto chamado
RecordSet e assim por diante. No Captulo 13, passaremos a utilizar o ADO.NET, que a tecnologia de acesso
a dados do .NET. Por exemplo, para criar uma pgina ASP.NET que consulta dados em um banco de dados do
SQL Server 2005, utilizaremos objetos do ADO.NET. Bem, mas este j assunto para o Captulo 13.
Na Figura 11.28, representamos o acesso a dados atravs de ADO, o qual se comunica com a API 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 aprenderemos, 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, para as tecnologias anteriores ao .NET, tais como ASP e Visual Basic 6.0. No site http://
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 ou trs
camadas desenvolvidas em Visual Basic ou qualquer outra linguagem com suporte a ADO/OLE DB.
Neste captulo, criaremos as pginas ASP utilizando um editor de textos padro, como o Bloco de Notas. Existem ambientes de desenvolvimento
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 Dreamweaver, 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6560000Curso Completo
METODOLOGIA
Apresentao dos principais objetos do ADO, para acesso aos dados do servidor SQL Server 2005.
Neste item, teremos uma viso geral do Modelo de Objetos do ADO. Nos demais itens deste captulo,
vamos utilizar, na prtica, alguns destes objetos. Para um estudo detalhado dos objetos do modelo
ADO, consulte o e-book Criando Sites Dinmicos com ASP 3.0, de minha autoria, disponvel para
venda no meu site, em http://www.juliobattisti.com.br/ebooksdoautor
Na Figura 11.29, temos uma viso geral dos principais objetos do Modelo de Objetos ADO.
Figura 11.29 O Modelo de Objetos ADO.
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 devam ter permisso somente para leitura dos dados, j outros usurios
podem necessitar de permisso para leitura e alterao e assim por diante.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000657
N
O
T
A
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 prtica 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
com o banco de dados. Cada conexo consome recursos, principalmente memria RAM, no servidor.
Se criarmos um objeto Connection e os demais objetos utilizarem esta conexo, teremos um nmero
reduzido de conexes, o que melhora bastante 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
uma ou mais tabelas de 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.
Na maioria das situaes utilizamos os objetos Connection e RecordSet juntos em uma mesma pgina ASP. No prximo item vamos 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6580000Curso Completo
N
O
T
A
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 2005, atravs de pginas ASP.
TCNICA
Utilizao dos objetos, mtodos e propriedades do modelo ADO para a criao de pginas ASP que acessam aos dados do servidor SQL
Server 2005.
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, retornam resultados e executam 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 A primeira pgina ASP!!
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>
No digite o nmero das linhas. A numerao apenas aparece na listagem, para servir como referncia na hora de explicarmos o cdigo ASP.
Ao abrir esta pgina no navegador, obtemos o resultado indicado na Figura 11.30.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000659
N
O
T
A
N
O
T
A
Figura 11.30 Nossa primeira 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/LivroSQL2005/Capitulo11/Exemplo11-1.asp
Se voc pressionar F5 para recarregar a pgina, ser exibida a data e hora, j atualizadas. 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 de script, 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 e-book 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.31.
Vamos fazer alguns comentrios sobre esta figura.
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 pgina com a 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6600000Curso Completo
Figura 11.31 Como funciona o ASP.
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 do cdigo ASP da pgina. Este fato pode ser comprovado,
pedindo para que o navegador exiba o cdigo-fonte da pgina. No caso do Internet Explorer, basta
selecionar a opo Cdigo-fonte, do menu Exibir. O fato de o retorno ser HTML puro traz diversos
benefcios, dentre 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.
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,
Servidor Web
www.abc.com
Internet
http://www.abc.com/cep.asp
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000661
N
O
T
A
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 2005.
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 ODBC e tambm OLE DB. Tambm veremos alguns exemplos prticos,
onde criaremos pginas .asp que fazem conexo com Bancos de Dados no servidor SQL Server 2005.
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.
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, a qual est
associada ao banco de dados Pubs, da instncia SERVIDOR\SQL2005:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6620000Curso Completo
Set conn = Server.CreateObject(ADODB.Connection)
conn.Open ST1_pubs
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\SQL2005, do servidor SQL Server 2005.
O OBJETO CONNECTION MTODOS, PROPRIEDADES E EVENTOS
Ao estabelecermos uma conexo, estamos informando para a nossa pgina ASP uma srie de detalhes
que a pgina 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.
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.
Tabela 11.2 Os principais mtodos do objeto Connection.
Na Tabela 11.3, temos uma breve descrio das principais propriedades do objeto Connection.
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.
Tabela 11.3 As principais propriedades do objeto Connection.
continua
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000663
Na Tabela 11.4, temos uma breve descrio dos 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.
continuao
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.27, 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 ou do SQL Server 2005, sem a utilizao de um driver ODBC?
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 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.
Tabela 11.4 Os principais eventos do objeto Connection.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6640000Curso Completo
N
O
T
A
A resposta sim; perfeitamente possvel, e 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\instncia (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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000665
N
O
T
A
N
O
T
A
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.
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, este verifica
se a propriedade ConnectionString j est definida e utiliza esta propriedade. 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, esta
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 senha ser definida
como .
Tabela 11.5 Definindo a propriedade ConnectionString para uma fonte do Microsoft Access.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6660000Curso Completo
N
O
T
A
N
O
T
A
A linha 2 aparece quebrada em duas linhas por questes de espao para exibio, mas os comandos devem ser digitados 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 o curso
Access Avanado e VBA 550 pginas, de minha autoria. Maiores detalhes no meu site, em
http://www.juliobattisti.com.br
CONFIGURANDO CONEXES COM BANCOS DE DADOS
DO MICROSOFT SQL SERVER 2005
Para configurar a propriedade ConnectionString para estabelecer uma conexo com um Banco
de Dados de uma instncia do Microsoft SQL Server 2005, configuramos os parmetros indicados
na Tabela 11.6.
Tabela 11.6 Definindo a propriedade ConnectionString para uma fonte do Microsoft SQL Server 2005.
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\SQL2005 ou
SERVIDOR\CURSOSJB
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 o qual a conexo ser estabelecida.
Password ou pwd Informa a senha para o usurio que far a conexo. Caso esta propriedade no seja informada, a senha ser
definida como .
O PRIMEIRO EXEMPLO CONECTANDO COM O BANCO DE DADOS NORTHWIND,
DA INSTNCIA SERVIDOR\SQL2005
importante lembrar que o banco de dados Northwind no instalado juntamente com o SQL Server 2005. Ns importamos o banco de
dados Northwind, de uma instncia do SQL Server 2000, para a instncia SERVIDOR\SQL2005, do SQL Server 2005. Fizemos isso usando o
DTS Import/Export Wizard, o qual voc aprendeu a utilizar, na prtica, nos Captulos 7 e 9.
No Exemplo 11.2, temos um exemplo de uma conexo com um Banco de Dados do Microsoft SQL
Server, utilizando a propriedade ConnectionString.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000667
N
O
T
A
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:\LivroSQL2005\Capitulo11, com o nome de Exemplo11-2.asp.
Exemplo 11.2 Conectando com um Banco de Dados do Microsoft SQL Server 2005 Exemplo11-2.asp.
1 <%@ Language=VBScript %>
2 <HTML>
3 <HEAD>
4 <TITLE>Conectando com o SQL Server 2005</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\SQL2005 ;Initial Catalog=Northwind;
User ID=sa;Password=abc123"
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>
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6680000Curso Completo
N
O
T
A
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>
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.32.
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 Authentication Mode. Para informaes sobre como alterar o modo de segurana de uma instncia do servidor
SQL Server 2005, consulte o Captulo 6 Segurana no SQL Server 2005.
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\SQL2005 ;Initial Catalog=Northwind;
User ID=sa;Password=abc123
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000669
Figura 11.32 Registros da tabela Orders do Banco de Dados Northwind
da instncia SERVIDOR\SQL2005 do servidor SQL Server 2005.
Segundo, vamos considerar a string de conexo:
PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SQL2005;
Initial Catalog=Northwind;
User ID=sa;Password=abc123
Observe que estamos informando os parmetros indicados na Tabela 11.7.
Parmetro Valor fornecido
Provider SQLOLEDB
Data Source ou Server SERVIDOR\SRVINST01
Initial Catalog/Database Northwind
User ID ou uid sa
Password ou pwd senha123
Tabela 11.7 Parmetros para a string de conexo com o servidor SQL Server 2005.
Temos dois parmetros que merecem comentrios.
O parmetro Data Source ou Server foi informado da seguinte maneira:
SERVIDOR\SQL2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6700000Curso Completo
Este formato, conforme descrito nos captulos iniciais do livro, uma novidade que foi introduzida no
SQL Server 2000 e que tambm faz parte do Microsoft SQL Server 2005. 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 2005, posso ter vrias instncias do servidor SQL em um nico servidor, isto ,
como se eu tivesse vrios servidores SQL Server 2005 diferentes no mesmo servidor, sendo que cada
um deles deve possuir um nome diferente. Neste livro estamos utilizando um servidor com duas
instncias, conforme indicado a seguir:
SERVIDOR\SQL2005
SERVIDOR\CURSOSJB
Quando vou definir a string de conexo, preciso definir qual a instncia que quero conectar pgina ASP.
Se voc estiver utilizando o Microsoft SQL Server 7.0 ou verso inferior, 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=abc123
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.32.
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.
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 o qual a conexo ser estabelecida.
Password Informa a senha para o usurio que far a conexo.
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:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000671
N
O
T
A
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, este
verifica se a propriedade ConnectionString j est definida e utiliza o valor definido nesta propriedade.
Nosso exemplo ficaria assim:
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.
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.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6720000Curso 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 objeto utilizava no
servidor, tais como memria e processador. Porm, o objeto continua na memria, e com isso podemos
utilizar o mtodo Open para abrir novamente a conexo e voltar a utiliz-lo. 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 este 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
que o usurio est solicitando. Se for encontrada, esta conexo 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, economizaremos preciosos recursos do servidor.
As conexes inativas no permanecem indefinidamente no pool de conexes. Aps um perodo padro
sem utilizao, estas so removidas, de tal forma a no onerar os recursos do servidor Web, sem que as
conexes estejam sendo utilizadas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000673
N
O
T
A
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 de hardware do servidor, tais
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.mdb do Access e mostra uma listagem de clientes com as seguintes
informaes da tabela clientes:
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, o qual o banco
associado fonte ODBC nwind.mdb. Caso voc esteja utilizando outro Banco de Dados ou outra tabela, utilize os nomes de campo adequados.
Na Figura 11.33, podemos ver a estrutura da tabela clientes que est sendo utilizada no nosso exemplo.
Figura 11.33 A tabela clientes do Banco de Dados Northwind.
No Exemplo 11.3 apresentamos uma pgina ASP que faz a conexo com o Banco de Dados Northwind.mdb
e exibe uma listagem de clientes. Aps a listagem explicaremos cada um dos comandos utilizados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6740000Curso Completo
N
O
T
A
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:\LivroSQL2005\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.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000675
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.34.
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 atualizada 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, cabem aqui alguns esclarecimentos. Vamos detalhar diversos trechos de cdigo
deste exemplo.
Trecho 1: Considere o seguinte trecho de cdigo:
14 Set conn = Server.CreateObject(ADODB.Connection)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6760000Curso Completo
Figura 11.34 A listagem de clientes do Banco de Dados Northwind.mdb
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 objeto 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
adequado. Esta associao feita atravs do mtodo Open, do objeto Connection. A partir deste
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000677
momento, a minha conexo conn est associada ao Banco de Dados Northwind.mdb, conforme definido
pela 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.mdb. 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.mdb.
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 quarto 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
campos, conforme foi definido pela nossa instruo SQL, que somente retorna os campos
CdigoDoCliente, CargoDoContato, Endereo e Telefone.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6780000Curso Completo
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, ou seja, aps ter sido atingido o ltimo registro do objeto RecordSet. 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>
Observe o fragmento de cdigo:
<%=Clientes.Fields(CdigoDoCliente)%>
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000679
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
Com este comando selecionamos 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:
O acesso deve ser somente para leitura dos dados ou devem ser permitidas alteraes e inseres
de novos registros?
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6800000Curso Completo
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.
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 stored 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 este
argumento for algo diferente de um objeto Command ou quando o RecordSet deve ser recuperado a partir de um
arquivo salvo previamente.
Tabela 11.9 Parmetros do mtodo Open do objeto RecordSet.
UM POUCO SOBRE CURSORES
Um cursor o mecanismo utilizado pela tecnologia 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
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000681
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.
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 objeto.
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 s 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 de 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 objeto 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.
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 de
hardware no servidor. 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.
Este exemplo cria um RecordSet chamado Clientes e define um cursor do tipo Static.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6820000Curso Completo
<%
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, e 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.
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.
Tabela 11.11 Valores para a propriedade CursorLocation.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000683
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 objeto 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,
dependendo 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
%>
N
O
T
A
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6840000Curso Completo
Ao invs de utilizarmos o valor 2, podemos utilizar a constante correspondente adUseServer , conforme
o exemplo:
<%
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 Bancos 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.
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
registro 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.
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, e com isso evita-se que
seja exibido um registro que est sendo alterado.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000685
N
O
T
A
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 LockType, 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 o tipo de lock) 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, o que
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.
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.
Tabela 11.13 Principais propriedades do objeto RecordSet.
continua
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6860000Curso Completo
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.
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.
continuao
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000687
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.
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.
Tabela 11.14 Principais mtodos do objeto RecordSet.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6880000Curso Completo
N
O
T
A
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 e-book Criando Sites Dinmicos com ASP 3.0, j citado anteriormente.
Neste e-book, voc tambm encontrar informaes sobre a criao de formulrios utilizando HTML.
No Exemplo 11.4, 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\SQL2005. O exemplo da Listagem 11.4 tem apenas
o cdigo HTML para a criao do formulrio, com os campos para digitao dos dados. Ao clicar no
boto Enviar dados, os dados digitados sero enviados para a pgina cadastro.asp. O nome da pgina
ASP que ir processar os dados definido na propriedade ACTION, do boto de comando Enviar
dados. Aps o cdigo, apresentarei mais explicaes sobre este exemplo. Este exemplo deve ser salvo
com o nome Cadastro.htm, na pgina C:\LivroSQL2005\Capitulo11
Exemplo 11.4 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>
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000689
26 <TD><INPUT id=CustomerID maxLength=50 name=CustomerID size=35>&nbsp;
27 <FONT color=red><B>(*)</B></FONT></TD>
28 </TR>
29 <TR>
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.>
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6900000Curso Completo
71 </TD>
72 </TR>
73 </TABLE>
74 </FORM>
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.4, obteremos o resultado indicado na Figura 11.35.
Figura 11.35 O formulrio cadastro.htm, 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 de volta para o usurio, solicitando que o
usurio preencha os campos que esto faltando.
Para armazenar os dados, utilizaremos a tabela Customers, do Banco de Dados Northwind, da instncia
SERVIDOR\SQL2005. A estrutura da tabela Customers est indicada na Figura 11.36.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000691
Figura 11.36 Tabela Customers do Banco Northwind no SQL Server 2005.
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.
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.5, temos o cdigo para a pgina Cadastro.asp.
Exemplo 11.5 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)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6920000Curso Completo
12 Agora abro uma conexo com o Banco de Dados Northwind
13 da instncia SERVIDOR\SQL2005, utilizando OLE DB.
14 conn.ConnectionString = PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SQL2005;Initial Catalog=Northwind;
User ID=sa;Password=abc123
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
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 a 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000693
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
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6940000Curso Completo
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>
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>
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000695
N
O
T
A
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>
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 linhas esto exibidas em duas ou mais linhas apenas por questo de espao.
Algumas observaes sobre o Exemplo 11.5:
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6960000Curso Completo
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.
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 ele 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.37, o usurio preencheu alguns campos, porm no preencheu os campos obrigatrios
Contato e Cargo.
Figura 11.37 Os campos obrigatrios Contato e Cargo no foram preenchidos.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000697
Figura 11.38 O usurio informado quais campos obrigatrios no foram preenchidos.
Agora o usurio preenche os campos obrigatrios que esto faltando, conforme indicado na
Figura 11.39.
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.40.
Na Figura 11.41, acessamos a tabela Customers e podemos constatar que o cliente foi realmente
cadastrado.
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.38.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
6980000Curso Completo
Figura 11.39 O usurio preenche os campos que esto faltando.
Figura 11.40 O cliente foi cadastrado com sucesso.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000699
Figura 11.41 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
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
criada com cdigo HTML.
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\SQL2005.
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7000000Curso Completo
com os campos OrderID, OrderDate, ShipCity e ShipCountry para todos os pedidos do pas selecionado
na pgina ListaPaises.asp.
No Exemplo 11.6, temos a listagem que cria a pgina ListaPaises.asp.
Exemplo 11.6 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\SQL2005;Initial Catalog=Northwind;
User ID=sa;Password=abc123
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>
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>
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000701
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.42.
Figura 11.42 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>
A pgina PaisesObtidos.asp tambm exibir os resultados obtidos.
Na Listagem 11.7, temos o cdigo que cria a pgina PaisesObtidos.asp.
Exemplo 11.7 Utilizando o pas selecionado como critrio de pesquisa PaisesObtidos.asp.
1 <%@ Language=VBScript %>
2 <HTML>
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7020000Curso Completo
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\SQL2005;Initial Catalog=Northwind;
User ID=sa;Password=abc123
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
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000703
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>
UTILIZANDO O NOSSO EXEMPLO
Agora vamos utilizar o nosso exemplo para comprovar o correto funcionamento do mesmo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7040000Curso Completo
Figura 11.43 Exibindo os pedidos para a Norway.
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:
Ao carregar a pgina ListaPaises.asp, obtemos o resultado indicado na Figura 11.42, indicada
anteriormente.
Vamos supor que o usurio selecionou Norway, na lista de pases. Ao clicar no boto Pesquisar, sero
exibidos apenas os pedidos para o pas selecionado, conforme indicado na Figura 11.43.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
Curso Completo0000705
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 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 objeto
RecordSet Clientes.
CONCLUSO
Neste captulo, tratamos de uma srie de assuntos relacionados com o acesso aos dados de um servidor
SQL Server 2005, utilizando a dobradinha ADO/OLE DB. Tambm falamos sobre a utilizao de ODBC,
porm salientando que esta uma tecnologia mais antiga (porm ainda utilizada em muitas aplicaes;
at mesmo novas aplicaes tm sido desenvolvidas usando ODBC, por falta de conhecimentos sobre
as novas tecnologias, por parte dos projetistas e programadores).
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 este modelo se prope a minimizar ou at eliminar a maioria dos
problemas relacionados 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7060000Curso Completo
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
2005. 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 2005 utilizando o
Microsoft Access 2000. Tambm apresentaremos uma noo bsica sobre XML e como o SQL Server
2005 d suporte ao padro XML.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 12
ACESSANDO DADOS COM O MICROSOFT
ACCESS E O PADRO XML
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7080000Curso 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 2005.
Uma Introduo ao padro XML.
Na primeira parte do captulo, tratarei sobre a utilizao do Microsoft Access para acessar os dados do
SQL Server 2005. 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 iremos
analisar 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. Tratarei, 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 2005.
Sempre focaremos a conexo dos elementos de um Banco de Dados do Microsoft Access com dados do
SQL Server 2005. De maneira alguma este captulo um tratado completo sobre o desenvolvimento de
aplicaes utilizando o Microsoft Access e o SQL Server 2005. Tambm aconselhvel que o leitor j
tenha alguma experincia com o Microsoft Access e com a linguagem de programao VBA.
Em seguida, veremos como acessar dados do SQL Server 2005 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 2002 em
relao s verses anteriores, a qual tambm faz parte do SQL Server 2005.
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 2005 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 2005. Sem dvida que a capacidade de trabalhar de forma nativa com o XML
uma grande vantagem do SQL Server 2005. S o uso do XML no SQL Server 2005 daria, certamente,
um livro. Est fora do escopo deste livro abordar o uso do XML no SQL Server 2005. No Books Online
voc encontra informaes detalhadas sobre o uso do XML no SQL Server 2005.
Para maiores informaes sobre XML, consulte os seguintes endereos:
www.xml.org.
www.wdvl.com/Software/XML.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000709
N
O
T
A
www.w3.org/xml.
www.internet.com.
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.
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: como armazenado e do que composto.
O Microsoft Access 2000, XP e 2003, a exemplo das verses anteriores, armazena todos os elementos
de um Banco de Dados, em um nico 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 separado, 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 2005, 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 2005 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 2005.
Um Banco de Dados do Microsoft Access 2000 pode conter diversos elementos. Os principais so:
Tabelas
Consultas
Formulrios
Relatrios
Pginas de Dados (novidade a partir do Microsoft Access 2000)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7100000Curso Completo
Macros
Mdulos
Na Figura 12.1, vemos o arquivo de exemplo Northwind.mdb carregado no Microsoft Access. 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 objeto.
Figura 12.1 Elementos bsicos de um Banco de Dados do Microsoft Access.
A seguir, vamos a uma descrio bsica dos diversos elementos que compem um Banco de Dados do
Microsoft Access.
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, clientes, pedidos ou fornecedores.
Utilizar uma tabela separada para cada tpico significa armazenar os dados somente uma 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 de dados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000711
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 modo
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.
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. Na
verdade views so consultas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7120000Curso Completo
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 no banco de dados o comando SQL que define a consulta. Quando for
executada, a consulta 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.
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.
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000713
Figura 12.4 Modo SQL da consulta Consulta Pedidos.
FORMULRIOS
Um 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, dentre as quais podemos destacar as seguintes:
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 uma consulta. No caso de um
formulrio baseado em uma consulta, quando o formulrio 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 dados 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 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, do banco de dados Northwind.mdb.
Observe que temos uma Caixa de Ferramentas, a partir da qual podemos arrastar elementos para
a construo do formulrio.
filtragem e ordenao e assim por diante. Ao fazermos alteraes neste modo, o Microsoft Access altera
o comando SQL para refletir as mudanas efetuadas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7140000Curso Completo
Figura 12.5 Modo estrutura do formulrio Pedidos.
Na Figura 12.6, temos o formulrio carregado, j no modo Formulrio, para ser utilizado pelo usurio.
Este modo conhecido como 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000715
RELATRIOS
Com a utilizao de consultas podemos obter diversas listagens, inclusive com a especificao de um
ou mais critrios de pesquisa/filtragem. 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 bem mais profissional.
Quero salientar novamente que os dados somente ficam armazenados nas tabelas. O relatrio baseado
na consulta, e esta por sua vez executada ao abrirmos o relatrio. A consulta busca os dados em uma
ou mais tabelas e retorna a listagem obtida, 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, este vai
buscar dados diretamente na tabela associada.
Figura 12.7 Modo estrutura do relatrio Resumo de Vendas por Ano.
O relatrio tem um modo estrutura que onde construmos e definimos a formatao do relatrio. A
criao de um relatrio semelhante criao de relatrios 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7160000Curso Completo
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.
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 relatrio para a impressora.
Figura 12.8 Modo visualizar impresso do relatrio Resumo de Vendas por Ano.
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. Este exemplo demonstra bem o inter-
relacionamento entre os diversos objetos que compem um banco de dados do Access.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000717
N
O
T
A
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.
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 disponveis para qualquer pessoa
que exiba a pgina de acesso a dados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7180000Curso Completo
N
O
T
A
Figura 12.9 Modo estrutura da pgina Analisar Vendas.
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 ou Superior.
Na Figura 12.10, temos a pgina de dados Analisar Vendas, carregada no Internet Explorer.
Observe o sinal de + ao lado do nome do cliente. Se dermos um clique no sinal de + ao lado do nome
do cliente, sero exibidos detalhes sobre as vendas para este cliente.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000719
Figura 12.10 Pgina Analisar Vendas no Internet Explorer.
Figura 12.11 Pgina Analisar Vendas no Microsoft Access.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7200000Curso Completo
MACROS
Macros so utilizadas 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 automatizada.
Existem diversas aes de macros predefinidas que podem ser utilizadas no Microsoft Access. 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, estas sero
executadas na ordem em que foram definidas, na estrutura da macro.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000721
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 dos tipos 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, e assim por diante.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7220000Curso Completo
Com isso encerramos a nossa breve viso sobre os principais elementos de um Banco de Dados do
Microsoft Access. Maiores informaes sobre o Microsoft Access 2000 podem ser encontradas com a
documentao do produto.
DESENVOLVIMENTO EM: COMO ACESSAR DADOS DO SERVIDOR
SQL SERVER 2005 UTILIZANDO O MICROSOFT ACCESS
PR-REQUISITOS
Noes sobre os elementos que compem um Banco de Dados do Microsoft Access.
Noes sobre os modelos de desenvolvimento.
Conhecimento bsico de ODBC.
METODOLOGIA
Apresentao de diferentes maneiras, para acessar os dados do SQL Server 2005, a partir do Microsoft Access.
TCNICA
Utilizao dos comandos apresentados para acessar os dados no Servidor SQL Server 2005.
Temos vrias opes para, a partir do Microsoft Access, ter acesso aos dados do SQL Server 2005.
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 2005.
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 2005, para
tabelas em um Banco de Dados do Microsoft Access. 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. 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 2005 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 e no
SQL Server 2005. Em outras palavras, se os dados no SQL Server 2005 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 fazer a importao novamente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000723
Por isso no muito comum a utilizao de importao. Uma situao especfica em que pode ser
aconselhada 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.
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 notebook 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, a qual ser gravada em um arquivo e envia este arquivo, 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 importao dos dados. Uma fonte ODBC do tipo File DSN gravada em um arquivo, o que
facilita a distribuio da fonte 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 2005 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\SQL2005
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, siga os passos indicados a seguir:
1. Abra o gerenciador de fontes ODBC (Iniciar -> Programas -> Ferramentas administrativas ->
Fontes de dados (ODBC)).
2. D um clique na guia DSN de arquivo. 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.
3. D um clique no boto Adicionar, 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7240000Curso Completo
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 Criar uma nova fonte de dados para o SQL Server, conforme
indicado na Figura 12.16.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000725
Figura 12.16 Definies para a fonte ODBC para o SQL Server.
Nesta janela, devemos fornecer diversas informaes, tais como um comentrio para a fonte que est
sendo criada e a instncia qual queremos que a mesma faa conexo.
7. No campo Descrio, digite Conexo ODBC com a instncia SQL2005.
8. Na lista Server, selecione o nome do Servidor SQL a ser utilizado. No nosso exemplo,
SERVIDOR\SQL2005-06-11.
A janela deve estar conforme indicado na Figura 12.17.
Figura 12.17 Definies para a fonte ODBC.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7260000Curso Completo
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\SQL2005, certifique-se de que Com autenticao do SQL Server usando ident.
de logon e senha inseridos pelo usurio esteja selecionada; 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\SQL2005. Clique na opo Alterar banco de dados padro para. 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000727
14. D um clique no boto Concluir para finalizar a criao da fonte ODBC.
Surge a janela Instalao do ODBC para Microsoft SQL Server, a qual informa as diversas opes
selecionadas.
Nesta janela, podemos clicar no boto Testar fonte de dados, para verificar se a conexo com o Banco
de Dados est OK.
15. D um clique no boto Testar fonte de dados. 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 janela do gerenciador de fontes ODBC. D um clique em OK para fech-lo.
Agora que temos a nossa fonte DSN de Arquvio Instancia2.dsn, vamos criar um novo Banco de Dados
do Microsoft Access, 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\SQL2005, para tabelas do Banco de Dados pubs.mdb do Microsoft Access.
Exerccio: Importar os dados do Banco de Dados pubs da instncia SERVIDOR\SQL2005, do servidor
SQL Server 2005, para o pubs.mdb do Microsoft Access, 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 e clique em OK.
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 Criar.
O Banco de Dados pubs.mdb criado e aberto no Microsoft Access. 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, vazio.
4. Mantenha o Microsoft Access aberto.
Procedimento 2: Importar as tabelas do Banco de Dados pubs, da instncia SERVIDOR\SQL2005, do
SQL Server 2005.
Para importar as tabelas do Banco de Dados pubs, de SERVIDOR\SQL2005, siga os passos indicados a seguir.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7280000Curso Completo
Figura 12.19 Criando um novo Banco de Dados no Microsoft Access.
1. Estando com o Microsoft Access 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000729
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 Selecione a fonte de dados. Nesta janela, podemos selecionar uma fonte ODBC do tipo
DSN de arquivo ou fonte de dados de mquina.
3. D um clique na guia DSN de Arquivo e, no campo Nome da fonte, 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 Logon do SQL Server. Nesta janela, devemos fornecer o nome de usurio e senha para
fazer a conexo com o servidor SQL Server 2005.
5. Digite sa para usurio e a senha para este usurio, conforme indicado na Figura 12.22.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7300000Curso Completo
N
O
T
A
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.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000731
N
O
T
A
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
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 pressione Enter.
Ao importar as tabelas no definido nenhum tipo de relacionamento entre as tabelas. 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.
ANEXANDO TABELAS NO MICROSOFT ACCESS
Anexar diferente de importar. Ao anexarmos uma tabela, os dados no sero copiados para o Banco
de Dados .mdb, do Microsoft Access. Ao anexarmos uma tabela do SQL Server 2005, o Microsoft Access
cria uma referncia tabela que est sendo anexada, ao invs de copiar os dados da tabela. A referncia
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7320000Curso Completo
contm as informaes necessrias para que o Banco de Dados do Microsoft Access possa acessar os
dados da tabela do SQL Server 2005. 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 tornam-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 contrapartida, 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 de baixa velocidade.
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\SQL2005. Para que possamos anexar tabelas,
precisamos de uma fonte ODBC que faa a conexo com o Banco de Dados do SQL Server 2005, 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, este ser,
automaticamente, carregado no Microsoft Access. Mantenha aberto o Banco de Dados pubs_anexado.mdb.
Para anexar tabelas do Banco de Dados pubs, da instncia SERVIDOR\SQL2005, ao banco de dados
pubs_anexado.mdb do Microsoft Access, siga os passos indicados a seguir:
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.
Surge a janela Vincular, indicada na Figura 12.25.
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 Selecione a fonte de dados. Nesta janela, podemos selecionar uma fonte ODBC do tipo
Fonte de dados de Arquivo ou Fonte de dados de mquina.
3. D um clique na guia Fonte de dados de arquivo e, no campo Nome da fonte, digite C:\Meus
documentos\Instancia2.dsn, conforme indicado na Figura 12.26.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000733
Figura 12.25 A janela Vincular.
Figura 12.26 Utilizando a fonte Instancia2.dsn criada anteriormente.
4. D um clique no boto OK.
Surge a janela Logon do SQL Server. Nesta janela, devemos fornecer o nome de usurio e senha para
fazer a conexo com o servidor SQL Server 2005.
5. Digite sa para usurio e a senha para este usurio, conforme indicado na Figura 12.27.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7340000Curso Completo
N
O
T
A
Figura 12.27 Informaes de login.
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.
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.
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.
9. Caso o Microsoft Access no consiga definir qual o relacionamento entre as tabelas, ser exibida
uma janela solicitando 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000735
N
O
T
A
N
O
T
A
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 do Access.
Agora voc pode utilizar as tabelas anexadas como se estas 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.
Ao clicar com o boto direito do mouse em uma tabela anexada e selecionar o comando Excluir, voc no ir excluir a tabela no Banco de
Dados do Microsoft SQL Server 2005; voc ir apenas excluir as informaes de vinculao com a tabela. A tabela no SQL Server 2005 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7360000Curso Completo
CRIANDO CONSULTAS NO MICROSOFT ACCESS,
BASEADAS EM TABELAS DO SQL SERVER 2005
Vamos iniciar o nosso estudo, aprendendo a criar consultas baseadas em tabelas do SQL Server 2005,
ou seja, criamos uma consulta normalmente no Microsoft Access, porm a consulta acessa dados
diretamente em tabelas de um banco de dados do SQL Server 2005. importante diferenciar que, neste
caso, no estamos acessando dados de uma tabela anexada, mas sim diretamente do SQL Server 2005.
Para que uma consulta do Microsoft Access possa acessar tabelas no SQL Server 2005, 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 2005. Outro
detalhe que devemos observar que, uma vez estabelecida a conexo, as tabelas do SQL Server sero
acessadas com o nome no formato NomeDoSchemaDonoDaTabela.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 da instncia SERVIDOR\SQL2005, do SQL Server 2005. 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.
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, siga os passos indicados a seguir:
1. D um clique na guia Consultas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000737
N
O
T
A
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 2005.
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.
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.
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.
5. Nesta propriedade temos que definir uma string de conexo ODBC para o Banco de Dados
Nortwhind, da instncia SERVIDOR\SQL2005. Digite a seguinte string:
ODBC;DRIVER=SQL Server;UID=sa;PWD=abc123 LANGUAGE=Portugus
(Brasil);DATABASE=Northwind;WSID=SERVIDOR;APP=Microsoft Open Database
Connectivity;SERVER=SERVIDOR\SQL2005;
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7380000Curso Completo
Figura 12.32 A janela de propriedades da consulta.
Na Tabela 12.1, temos a descrio dos parmetros informados na string anterior.
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. No nosso exemplo o
usurio as.
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 2005.
APP Informa que estamos utilizando ODBC.
Connectivity Define a qual instncia iremos nos conectar. No nosso exemplo, estamos conectando com SERVIDOR\SQL2005.
Tabela 12.1 Parmetros para a string de conexo ODBC.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000739
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 + amarelo).
exibida a janela Mostrar tabela, porm agora com a listagem das tabelas disponveis no Banco de
Dados Northwind da instncia SERVIDOR\SQL2005, conforme indicado na Figura 12.33.
Figura 12.33 Consulta no Microsoft Access acessando tabelas do SQL Server 2005.
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.
Figura 12.34 Mensagem de erro devido ao ponto (.) no nome das consultas.
No podemos renomear as tabelas no SQL Server 2005, 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7400000Curso Completo
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.
Figura 12.36 J foram definidos aliases para as duas tabelas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000741
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
relacionamento somente vlido na consulta, ou seja, no estaremos definindo um relacionamento
no Banco de Dados Northwind da instncia SERVIDOR\SQL2005. Na verdade, ao criarmos um
relacionamento, estamos utilizando uma clusula Join, no comando T-SQL que define a consulta.
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.
Figura 12.37 Relacionamento definido na consulta.
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.
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 Orders. A consulta deve estar conforme
indicado na Figura 12.38.
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 frmula para o clculo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7420000Curso Completo
Figura 12.38 Adicionando campos consulta.
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.
23. Clique no boto Fechar (x) da janela de propriedades para voltar estrutura da consulta.
Classifique o campo OrderId em ordem crescente.
Agora estamos em condies de executar a consulta e observar os resultados obtidos.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000743
Figura 12.39 Definindo as propriedades do campo calculado.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7440000Curso Completo
N
O
T
A
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]
ON
Orders.OrderID = [Orde Details].OrderID
IN

[ODBC;DRIVER=SQL
Server;UID=sa;PWD=abc123;LANGUAGE=Portugus
(Brasil);DATABASE=Northwind;WSID=SERVIDOR;APP=Microsoft Open
Database Connectivity;SERVER=SERVIDOR\SQL2005;]
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 segundo 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 da instncia SERVIDOR\SQL2005 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.
Neste tpico procurei mostrar algumas maneiras de acessar os dados do SQL Server 2005 de dentro do Microsoft Access. Falar sobre o
desenvolvimento de aplicaes, utilizando o Microsoft Access como Front End e o SQL Server 2005 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 2005 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 SQL Server Management Studio.
METODOLOGIA
Apresentao dos passos necessrios para a configurao e acesso aos dados do servidor SQL Server 2005 atravs do navegador.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000745
N
O
T
A
TCNICA
Utilizao do SQL Server Management Studio para configurar o acesso via navegador, aos dados do SQL Server 2005 e utilizao do
navegador para testar o acesso.
Uma das grandes novidades do SQL Server 2000 e que tambm est disponvel no SQL Server 2005 a
possibilidade de acessarmos dados do SQL Server 2005, 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.
Para configurar o acesso a um Banco de Dados do SQL Server 2005, atravs do navegador, empregamos
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, Windows 2000 Server ou Windows Server 2003.
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 2005.
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 arquivo 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 2005. Para acessar este utilitrio
empregamos o seguinte caminho: Iniciar -> Programas -> SQLXML 4.0 -> Configure IIS Support.
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 2005 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7460000Curso Completo
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.
CONFIGURANDO O ACESSO ATRAVS DO NAVEGADOR
Agora chega de conversa e vamos ver este acesso via navegador funcionar na prtica. O primeiro passo
criar um diretrio virtual associado a um Banco de Dados de uma instncia do SQL Server 2005.
Vamos fazer isto no exemplo a seguir.
Exemplo: Criar um diretrio virtual chamado NorthwindSQL, o qual associado ao Banco de Dados
Northwind, da instncia SERVIDOR\SQL2005.
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 da
pasta 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000747
N
O
T
A
Figura 12.42 O console IIS Virtual Directory Management for SQL Server.
3. Clique no sinal de + 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.
Ao clicar em Virtual Directory, surge a janela Propriedades de New Virtual Directory, indicada na
Figura 12.43.
5. Na guia General, vamos definir o nome do diretrio virtual (NorthwindSQL) e a pasta qual
est associado o diretrio virtual (C:\InetPub\wwwroot\NorthwindSQL), conforme indicado
na Figura 12.44.
Mais uma vez quero lembrar que C:\Inetpub\wwwroot a localizao do diretrio raiz, para o servidor IIS que eu 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.
Uma vez criada esta estrutura de pastas e subpastas, vamos criao do diretrio virtual.
2. Abra o utilitrio Configure IIS Support (Iniciar -> Programas -> SQLXML 4.0 -> Configure IIS
Support).
Surge o console IIS Virtual Directory Management for SQLXML 4.0, indicado na Figura 12.42.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7480000Curso Completo
Figura 12.43 Criando um novo diretrio virtual.
Figura 12.44 Definindo o nome e a localizao.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000749
Figura 12.45 Informaes de login.
8. D um clique na guia Data Source.
9. Nesta guia definimos a instncia do SQL Server 2005 associada com o diretrio virtual que est
sendo criado e dentro da instncia qual o Banco de Dados. Para instncia, vamos selecionar
SERVIDOR\SQL2005 e, para o Banco de Dados, Northwind, conforme indicado na Figura 12.46.
10. D um clique na guia Settings.
11. Nesta guia, selecione todas as opes:
Allow URL Queries.
Allow template queries.
Allow XPath.
Allow POST.
12. Clique na guia Virtual Names. Nesta guia, associaremos nomes s subpastas template e schema.
13. Clique em New virtual name. No lado direito voc define as opes para o novo nome virtual
que est sendo criado.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7500000Curso Completo
Figura 12.46 O Banco de Dados Northwind da instncia SERVIDOR\SQL2005.
14. No campo Name, digite template. Na lista type, selecione template. No campo Path, digite:
C:\Inetpub\wwwroot\NorthwindSQL\template. Sua janela deve estar conforme indicado
na Figura 12.47.
15. D um clique no boto Save. O nome template j aparece na lista da esquerda.
16. Clique em New virtual name. No lado direito voc define as opes para o novo nome virtual
que est sendo criado.
17. No campo Name, digite dbobject. Na lista type, selecione dbobject.
18. D um clique no boto Save.
19. 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000751
Figura 12.47 Associando nomes virtuais pasta template.
Figura 12.48 O diretrio virtual NorthwindSQL.
20. Feche o console IIS Virtual Directory Management for SQL Server.
No prximo tpico, iremos testar o acesso aos dados do SQL utilizando o navegador.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7520000Curso Completo
TESTANDO O ACESSO AOS DADOS DO SQL SERVER 2005, 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 indstria de informtica.
Para testar o acesso via HTTP, abra o Internet Explorer e digite o seguinte endereo:
http://servidor/NorthwindSQL?sql=SELECT * FROM Orders FOR XML AUTO&root=root
Este endereo envia o comando SELECT * FROM Orders 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.
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 dados. A
seguir, temos a parte inicial do documento, onde retornado o registro para o Pedido 10248:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000753
<Orders OrderID=10248" CustomerID=VINET EmployeeID=5" OrderDate=1996-07-04T00:00:00"
RequiredDate=1996-08-01T00:00:00" ShippedDate=1996-07-16T00:00:00" ShipVia=3"
Freight=32.38" ShipName=Vins et alcools Chevalier ShipAddress=59 rue de lAbbaye
ShipCity=Reims ShipPostalCode=51100" ShipCountry=France />
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 T-SQL correto.
Ser que podemos utilizar uma clusula Join? A melhor maneira de descobrir tentando. Tente utilizar
o seguinte endereo:
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 e ir rodar sem problemas no SQL Server 2005. J no SQL
Server 2000, se voc tentasse executar este comando, iria receber 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, do SQL Server 2000. Esta foi
uma das melhorias introduzidas pelo SQL Server 2005 em relao ao SQL Server 2000.
Para que este comando funcione no SQL Server 2000, voc ter que alter-lo. Vamos modificar um
pouco o comando; ao invs de 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 />
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7540000Curso Completo
<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, estes caracteres especiais so
substitudos pelos correspondentes permitidos.
Na Tabela 12.2, temos a descrio dos caracteres especiais e os correspondentes pelos quais so
substitudos.
Agora que j vimos como acessar dados do servidor SQL Server 2005, atravs de um navegador, vamos
ver uma breve introduo sobre o padro XML. O tpico XML assunto para vrios livros. O SQL
Server vem melhorando o suporte ao XML, desde o SQL Server 2000. Est fora do escopo deste livro
tratar sobre o uso do XML no SQL Server 2005. No tpico a seguir, eu farei apenas uma breve apresentao
do XML. No Books Online, voc encontra grande quantidade de informaes sobre o uso do XML no
SQL Server 2005. Pesquise no tpico: Database Engine -> Using XML in SQL Server. Alm disso,
certamente, sero publicados livros inteiros sobre o uso do XML no SQL Server 2005.
UM POUCO SOBRE EXTENSIBLE MARKUP LANGUAGE XML
Neste tpico vamos entender por que 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 por que cada uma destas afirmaes verdadeira.
Este caracter substitudo por este (em hexadecimal)
Espao em branco %20
/ %2F
? %3F
% %25
# %23
& %26
Tabela 12.2 Caracteres especiais em endereos HTTP.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000755
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 estes 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
mainframe 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
utilizado pelo SQL Server 2005. Este era um ambiente centralizado e com maiores facilidades de
gerenciamento, segurana 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.
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 de 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 entre si, cada vez mais
intensamente. Como possvel trocar informaes entre sistemas que utilizam diferentes formatos para os
dados? Uma srie de solues foi proposta 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 mainframe. 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7560000Curso Completo
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.
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 fixo 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 o 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 teis do documento. 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 />
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML
Curso Completo0000757
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 documento, por qualquer
sistema que entenda o padro XML.
Uma coisa certa. o XML veio para ficar e cada vez mais solues so baseadas neste padro. Para se ter
uma idia da fora do XML, empresas como Microsoft, IBM, Sun, ORACLE e outras gigantes da indstria
de informtica abraaram este padro e anunciam produtos com suporte a XML.
Com o SQL Server 2005 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 2005.
Iniciamos o captulo aprendendo diferentes maneiras de utilizar o Microsoft Access para interagir com
os dados do SQL Server 2005. Aprendemos a importar dados do SQL Server 2005 para tabelas do
Microsoft Access, 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 2005, estas
alteraes no so sincronizadas com as tabelas importadas no Microsoft Access.
Outro mtodo que aprendemos foi anexar tabelas do SQL Server 2005 utilizando fontes ODBC. Com a
anexao os dados continuam no servidor SQL Server 2005 e podem ser facilmente sincronizados. A
desvantagem que posso perder o acesso aos dados se o servidor estiver fora do ar ou houver algum
problema de comunicao com a rede.
Depois, aprendemos a criar consultas baseadas, diretamente, em tabelas do SQL Server 2005. Para isso
configuramos uma string ODBC de conexo com o SQL Server 2005.
Em seguida, aprendemos a configurar um diretrio virtual associado com um Banco de Dados de uma
instncia do SQL Server 2005. Para isso empregamos o utilitrio Configure IIS Support. Criamos um
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7580000Curso Completo
diretrio virtual chamado NorthwindSQL e depois testamos o acesso aos dados do SQL Server 2005,
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.
No prximo captulo voc aprender sobre o .NET (ou Framework .NET, como tambm conhecida
esta nova tecnologia/modelo de desenvolvimento de aplicaes) e sobre a criao de pginas ASP.NET
que fazem conexo com dados do SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 13
.NET E PGINAS ASP.NET
COM O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7600000Curso Completo
INTRODUO
Na rea de desenvolvimento de aplicaes, sem dvida, a grande novidade do SQL Server 2005, em
relao s verses anteriores, foi a integrao entre o SQL Server 2005 e o .NET. Com o SQL Server 2005
voc pode criar funes de usurio, stored procedures e outras rotinas, facilmente, usando a sua
linguagem de programao preferida e depois utilizar estas rotinas no SQL Server 2005.
Este captulo dedicado a explicar o que o Framework .NET, qual a sua proposta, como instalar o
Framework .NET e os demais componentes de suporte ao desenvolvimento de aplicativos no .NET.
Tambm mostrarei como criar pginas ASP.NET, as quais acessam dados de Bancos de Dados do SQL
Server 2005. No Captulo 15 mostrarei como criar funes usando as linguagens do .NET e como
utilizar estas funes no SQL Server 2005.
Neste captulo apresentarei, em detalhes, o.NET, o qual tambm chamarei de Framework .NET. Mostrarei
qual a proposta da Microsoft com mais esta iniciativa. Iniciarei o captulo com uma viso geral, sobre
as propostas do Framework .NET. Em outras palavras: A que veio e a que se prope o .NET?. Vou
mostrar quais os principais componentes e quais solues pode nos oferecer o Framework .NET. Antes
de entrar nos detalhes sobre cada elemento e das funes de cada elemento importante entendermos
como este novo modelo poder ajudar no desenvolvimento de software e, em conseqncia, ajudar as
empresas a terem sistemas melhores, mais rpidos, mais econmicos, mais seguros e mais sintonizados
com as reais necessidades de cada empresa.
Uma vez devidamente apresentado o Framework .NET, falarei sobre os modelos atuais de
desenvolvimento e utilizao de software. Mostrarei quais os problemas do modelo atual e quais as
solues propostas pelo Framework .NET para estes problemas.
Um novo paradigma de desenvolvimento tem que mostrar que capaz de resolver, se no todos, pelo
menos a grande maioria dos problemas dos modelos atualmente existentes. J passou o tempo, se
que um dia esta prtica foi aceitvel, de mudar de tecnologia somente para estar atualizado com o
mercado. Aprender novas tcnicas e ferramentas envolve tempo, um longo aprendizado e,
principalmente, pesados investimentos financeiros. Para que uma empresa esteja disposta a fazer todos
estes investimentos, o Framework .NET ter que demonstrar que realmente capaz de apresentar
solues para os grandes problemas dos modelos atuais de desenvolvimento de software.
Em seguida passaremos a apresentar os principais elementos que compem o Framework .NET:
CLR Common Language Runtime
metadata
Assemblies
Linguagens habilitadas ao .NET
Common Type System
Interoperabilidade entre diferentes linguagens
Web Services
Os servidores .NET
ADO.NET
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000761
Apresentarei, de uma maneira genrica, o papel de cada um destes componentes no Framework .NET.
Apresentarei uma viso geral de cada um deles, para que o leitor possa ter uma boa idia do Framework
.NET e de seus principais componentes, bem como da funo de cada um.
Na segunda metade do captulo vou apresentar mais alguns detalhes sobre o elemento principal, o
motor do Framework .NET: CLR Common Language Runtime. O CLR o componente principal do
Framework .NET.
Apresentarei mais alguns detalhes sobre a estrutura de uma aplicao .NET e a maneira como os diversos
elementos so empacotados, atravs do uso de assemblies. Vou apresentar informaes detalhadas
sobre o uso de assemblies, os benefcios da utilizao dos assemblies, questes de segurana, questes
sobre verso e utilizao de um cache de assemblies para acelerar a execuo dos programas .NET.
Falarei um pouco sobre as linguagens habilitadas ao .NET, a gerao do cdgio MSIL, a compilao
do cdigo MSIL para cdigo nativo JIT Compile e a execuo deste cdigo. Estes aspectos so
importantes para que o amigo leitor possa entender a maneira como as aplicaes .NET so executadas
e gerenciadas pelo CLR.
Detalharei o conceito e a funo dos assemblies. Mostrarei que estes formam os blocos bsicos para a
construo de aplicaes .NET. Tambm mostrarei quais os componentes de um assembly, com destaque
para a importncia do manifesto contido em um assembly.
Na seqncia apresentarei mais detalhes sobre o CTS Common Type System. Voc ver quais os
principais benefcios de termos um sistema de tipos comum a todas as linguagens habilitadas ao .NET.
Tambm falarei sobre as diferenas entre value types e reference types.
Tambm apresentarei as principais classes e tipos da Biblioteca de Classes do Framework .NET (.NET
Framework Class Library). Veremos os tipos bsicos, bem como as principais classes disponveis para
utilizao em programas criados com o Framework .NET.
Na seqncia do captulo faremos uma reviso dos conceitos bsicos de orientao a objetos. Uma vez
que o Framework .NET fortemente baseado em conceitos de orientao a objetos, tambm a linguagem
C#, que uma das novidades do Framework .NET, baseada nos conceitos de orientao a objetos. Por
isso bastante oportuno que revisemos os seguintes conceitos:
O que um objeto?
Mtodos e propriedades
O que so classes?
Herana
Polimorfismo e funes virtuais
Encapsulamento e visibilidade
Todo o Framework .NET foi criado com base nos conceitos de Orientao a Objetos. A linguagem C#
totalmente orientada a objetos, onde tudo so classes. Claro que alguns puristas poderiam dizer que
o C# no completamente orientado a objetos porque no suporta herana mltipla. Na verdade
veremos que o C# foi projetado para conciliar os benefcios da orientao a objetos e ao mesmo tempo
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7620000Curso Completo
ser simples e prtico. Para isso foram eliminadas algumas caractersticas da orientao a objetos,
caractersticas estas que mais causavam problemas do que propriamente forneciam solues.
Uma vez que o Framework .NET tenha sido devidamente apresentado e explicado, mostrarei como
utilizar o ASP.NET, para criar pginas que acessam, editam e alteram dados em tabelas de um Banco de
Dados do SQL Server 2005. Voc ver que o uso do ASP.NET to ou mais fcil do que o uso do ASP 3.0
(visto no Captulo 11) e que o ASP.NET apresenta dezenas de novos recursos e facilidades. Seguindo a
metodologia utilizada nos demais captulos, mostrarei, atravs de exemplos prticos, os principais
comandos do ASP.NET, para a conexo com Bancos de Dados do SQL Server 2005.
DESENVOLVIMENTO EM: O PRIMEIRO CONTATO
COM O FRAMEWORK .NET
PR-REQUISITOS
Conhecimento bsico do Windows 2000 Server ou Windows Server 2003 e do SQL Server 2005.
METODOLOGIA
Apresentao do Framework .NET.
Definir exatamente o que o Framework .NET no uma tarefa das mais simples. Como no sou
muito afeito a definies formais, vou mostrar qual a proposta do Framework .NET, quais os componentes
e qual a funo de cada componente.
Em primeiro lugar podemos afirmar que, com a iniciativa .NET, a Microsoft est mudando radicalmente
o modelo de desenvolvimento e utilizao de software. No livro Introducint .NET, da editora Wrox
(www.wrox.com), encontramos duas afirmaes interessantes sobre o Framework .NET:
uma mudana to grande ou at maior do que a mudana do DOS para o Windows;
O Framework .NET foi todo projetado j tendo a Internet como objetivo, diferente de outras plataformas
que foram adaptadas para a Internet, medida que a rede mundial crescia em importncia.
APRESENTANDO O CONCEITO DE SERVIOS WEB SERVICES
Realmente a mudana bastante grande. Programadores, analistas e gerentes de projeto precisaro de
muito estudo e tempo para absorver os conceitos desta nova plataforma. Tambm verdade que, desde
a sua concepo, o .NET foi projetado para a Internet. Em muitas publicaes especializadas aparece a
seguinte afirmao: A iniciativa .NET a viso da Microsoft de um mundo, onde o software se transforma
em servios, na verdade pequenos componentes que podem ser utilizados por qualquer aplicao.
Por exemplo, um software de uma empresa brasileira pode utilizar um servio que est residente em um
servidor de uma empresa do Japo, desde que tenha permisses para isso. Este servio pode oferecer, por
exemplo, a funcionalidade para validao de uma transao via carto de crdito. Um dispositivo mvel,
como um celular WAP ou um Handled, pode utilizar um servio de cotao de aes de um servidor da
bolsa de valores de Londres. E como todos estes componentes fazem para se comunicar? Evidentemente
que atravs da Internet. Por isso a Internet vista como ponto principal do projeto .NET.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000763
Conforme veremos mais adiante, estes servios, que podem ser acessados via Internet ou atravs de
qualquer intranet, so chamados de Web Services.
Ao invs de programas monolticos, em que toda a funcionalidade necessria est contida no cdigo
do prprio programa, construiremos programas como se fosse um jogo de montar. As diversas
funcionalidades necessrias ao programa podem ser oferecidas atravs do acesso a servios j
implementados. Na Figura 13.1 temos uma pequena ilustrao deste conceito.
Figura 13.1 Um programa que utiliza diversos servios.
No site da empresa www.minhaempresa.com, criamos, por exemplo, uma pgina ASP.NET para venda de
livros. O preo dos livros est em dlares e deve ser convertido, para a moeda do pas do cliente, no
momento da compra. No exemplo da Figura 13.1, a pgina ASP.NET utiliza um Web Service do servidor
www.cotacoes.com, para obter a cotao atualizada do dlar em relao moeda do pas do cliente. A
pgina ASP.NET recebe esta informao, faz os clculos necessrios e exibe para o cliente. O prximo passo
efetivar a venda. Agora o cliente digita o nmero do seu carto de crdito. Para validar o nmero do carto
de crdito do cliente, acessado um outro Web Service, o qual est instalado no servidor www.validacao.com.
Com esta arquitetura, a criao de software fica bastante simplificada, uma vez que podemos agregar
ao nosso programa funcionalidades disponibilizadas atravs de Web Services que esto instalados em
qualquer servidor da Internet. Desta maneira somente precisamos criar o cdigo que especfico do
nosso programa. Isto reaproveitamento de cdigo ou como preferem os puristas: reutilizando cdigo,
um dos pilares da Programao Orientada a Objetos.
Como diferentes Web Services, criados por diferentes empresas, podero se comunicar e trocar
informaes? Esta comunicao possvel, porque todo programa criado para a plataforma .NET utiliza
um padro para troca de informaes. No caso temos dois padres:
INTERNET
www.validacao.com
www.cotacoes.com
www.minhaempresa.com
Criamos uma pgina ASP.NET que utili-
za o servio de validao de nmero
de carto de crdito que est no servi-
dor www.validacao.com e tambm utili-
za o servio que fornece cotaes
atualizadas de diversas moedas e que
est no servidor www.cotacoes.com.
Oferece um Web Service
para validao do nmero
de carto de crdito.
Oferece um Web Service
com cotaes atualizadas
de diversas moedas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7640000Curso Completo
Para o formato dos dados, o Framework .NET utiliza XML: Extensible Markup Language.
Conforme veremos mais adiante, o XML vem ganhando fora como um padro para troca de
informaes na Internet, principalmente para troca de informaes entre empresas em sites de
comrcio eletrnico. No Captulo 12 voc encontra uma breve introduo ao XML. Voc tambm
encontra livros inteiros s sobre o uso do XML no SQL Server 2005.
Como protocolo de transporte, o Framework .NET utiliza o SOAP: Single Object Access
Protocol. Com SOAP podemos fazer com que toda a comunicao entre diferentes Web Ser-
vices e demais componentes de um programa seja feita atravs do protocolo padro da Internet
que o HTTP. O SOAP no um protocolo criado pela Microsoft para ser utilizado pelo .NET.
O SOAP um padro da indstria, sendo utilizado por produtos de diversas empresas, tais
como IBM, Sun e ORACLE.
Pode parecer que no existe nada de novo nesta abordagem, pois tecnologias para criar programas a
partir de componentes prontos j existem h um bom tempo: COM+, CORBA, etc. Porm a grande
vantagem dos Web Services, no Framework .NET, que estes podem ser acessados, facilmente, atravs
da utilizao de um protocolo padro: SOAP, e trocando informaes em um formato padro: XML.
Esta abordagem torna a criao e utilizao dos Web Services uma tarefa muito mais simples do que,
por exemplo, a criao de componentes COM+ ou CORBA, os quais utilizam formatos de dados e
protocolos de comunicao proprietrios e de difcil implementao.
APRESENTANDO O CLR COMMON LANGUAGE RUNTIME
O CLR um ambiente de execuo, poderamos at dizer que o Corao do .NET, o qual d suporte
a todas as linguagens de programao habilitadas para o .NET. Ao instalarmos o Microsoft .NET Frame-
work SDK, temos disponveis as seguintes linguagens:
VB.NET (Visual Basic .NET)
C# (leia-se C Sharp)
ASP.NET
Jscript.NET
O Runtime (ambiente de execuo) o ambiente que d suporte execuo das aplicaes .NET.
Quando um programa .NET executado, todo o controle do programa feito atravs do CLR.
Para aplicaes anteriores, desenvolvidas utilizando a tecnologia COM/COM+, o programador era
responsvel por inserir no cdigo do programa uma srie de funes necessrias ao correto
funcionamento do programa, como por exemplo o gerenciamento de memria, criao e destruio
de objetos e assim por diante. A codificao destas funes no era uma tarefa fcil, o que exigia muito
tempo do programador, alm de conhecimentos avanados. Com aplicaes .NET, todas estas funes
so executadas pelo CLR, ou seja, o programador no precisa preocupar-se com a codificao destas
funes. Desta forma somente precisamos nos preocupar com a funcionalidade do nosso programa, o
que poupa tempo e agiliza o processo de desenvolvimento.
As aplicaes criadas em uma das linguagens habilitadas para o .NET (como VB.NET, C# ou ASP.NET),
ao serem compiladas, geram um cdigo intermedirio conhecido como MSIL Microsoft Intermediate
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000765
Figura 13.2 O ambiente de execuo do CLR.
A partir da Figura 13.2 temos algumas observaes importantes para apresentar:
Para que uma linguagem seja habilitada ao .NET, o seu compilador deve ser capaz de gerar
cdigo MSIL.
O cdigo MSIL gerado executado pelo CRL.
A prpria Microsoft no nega que a idia bastante semelhante ao ambiente de execuo para aplicaes
desenvolvidas em Java, onde temos um ambiente de execuo comum a Mquina Virtual Java, a qual
executa byte code, que o cdigo gerado pelas aplicaes Java.
Todas as linguagens habilitadas ao .NET tm a sua disposio um rico conjunto de classes e objetos, os
quais fornecem desde conexo com Banco de Dados at funes mais especficas, como funes grficas,
funes de gravao em disco e assim por diante. Este conjunto de classes e objetos conhecido como
.NET Framework class library.
Todo cdigo habilitado a rodar no CLR, ou seja, que pode ser compilado para MSIL conhecido como
managed code ou cdigo gerenciado. Cdigo antigo, como por exemplo COM ou COM+, os quais
no esto habilitados para rodar sob controle do CLR, so chamados de unmanaged code ou cdigo
no gerenciado. Veremos mais aspectos a respeito destas definies mais adiante neste captulo, onde
trataremos sobre o CLR em mais detalhes.
Language, o qual abreviado simplesmente como IL Intermediate Language. Este cdigo que
executado pelo CRL. Vamos analisar o diagrama apresentado na Figura 13.2:
ASP.NET VB.NET C#
COMPILA
MSIL
CLR
COMMON LANGUAGE RUNTIME
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7660000Curso Completo
N
O
T
A
.NET FRAMEWORK CLASS LIBRARY
Este o segundo elemento fundamental do Framework .NET. A .NET Framework class library (biblioteca
de classes do Framework .NET), como o prprio nome sugere, uma coleo (uma gigantesca coleo)
de classes ou tipos completamente integrada com o ambiente de execuo CLR. Quando falamos em
um conjunto de classes, estamos utilizando o conceito originado no modelo de Programao Orientado
a Objetos. O Framework .NET fortemente baseado nos conceitos de orientao a objetos,
principalmente nos conceitos de Classes, Herana e Polimorfismo.
Os programas criados em qualquer linguagem habilitada ao .NET podem utilizar este conjunto de
tipos e classes. Por exemplo, existe uma classe chamada System.Data, a qual oferece uma srie de
objetos e mtodos para acesso s mais variadas fontes de dados. Vamos a um exemplo mais especfico:
Existe uma classe chamada System.SqlCliente, a qual fornece uma srie de mtodos para acesso nativo
aos dados de um servidor Microsoft SQL Server. Podemos utilizar a classe System.SqlCliente em um
programa feito em VB.NET, C#, ou em uma pgina ASP.NET ou qualquer linguagem que venha a ser
habilitada para o .NET.
Ao fornecer um conjunto de classes e tipos, o Framework .NET est facilitando a vida do programador,
uma vez que grande parte da funcionalidade necessria fornecida diretamente pelas classes do Frame-
work .NET e, o principal, utilizada de uma maneira padronizada (mesmos parmetros para cada
chamada de classe, mesmo tipo de parmetro e assim por diante) pois a maneira de utilizar uma classe
da biblioteca de classes do .NET a mesma, independente da linguagem que estamos utilizando
(evidentemente, desde que seja uma linguagem habilitada ao .NET).
J existem diversos fabricantes trabalhando para habilitar suas linguagens de desenvolvimento para o Framework .NET. O Delphi, que um
dos maiores concorrentes do Visual Basic, j est habilitado ao .NET.
So muitas as funes disponibilizadas pela biblioteca de classes do .NET. Apenas a ttulo de exemplo,
vamos citar algumas funes disponibilizadas:
Manipulao de string
Conectividade com Banco de Dados
Acesso a arquivos
Configuraes de segurana
Manipulao de dados
Na Figura 13.3, apresento uma viso geral dos principais elementos que formam o Framework .NET.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000767
Figura 13.3 Principais elementos do Framework .NET.
DESENVOLVIMENTO EM: UM PEQUENO PARNTESES
PARA FALAR MAL DOS MODELOS ANTERIORES
PR-REQUISITOS
Conhecimento bsico do Framework .NET.
METODOLOGIA
Comparao com modelos anteriores de desenvolvimento de aplicaes.
Vamos falar um pouco sobre o modelo de desenvolvimento anterior ao .NET, mais especificamente
sobre o modelo baseado em COM/COM+ da Microsoft. Para falar sobre este assunto vamos fazer um
histrico sobre o desenvolvimento de aplicaes, desde os bons e velhos tempos do MS-DOS.
AI QUE SAUDADE DO MS-DOS!
No, no saudade da poca do MS-DOS, apenas uma breve recapitulao. Para desenvolver aplicaes
para o ambiente MS-DOS, utilizamos diversas linguagens de programao, tais como:
Clipper
Pascal Turbo Pascal
Basic
C Turbo C
C++
ASP.NET VB.NET C#
CLR
COMMON LANGUAGE RUNTIME
XYZ
...
.NET Framework Class Library
System.Data Microsoft.CSharp System.Io
System.Net System.Security
...
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7680000Curso Completo
Um programa para o ambiente MS-DOS, na grande maioria das vezes, era composto por um arquivo
executvel (.exe). Os demais arquivos necessrios ao funcionamento do programa, tais como imagens
grficas ou arquivos de dados, eram salvos, normalmente, no mesmo diretrio (na poca do MS-DOS
no falvamos em pastas) do arquivo executvel e tudo funcionava perfeitamente bem (ou to bem
quanto possvel para a poca).
Para instalar o programa em outro computador, bastava copiar o diretrio do programa e pronto, nada
mais precisava ser feito nada de entradas na Registry, nada de DLLs e outros problemas que tanto nos
atormentam. Podemos ver que o processo de instalao era bastante simplificado, mas em contrapartida
o desenvolvimento era todo manual e as funcionalidades bastante limitadas. As redes locais ainda no
eram realidade e a grande maioria dos programas era feito para trabalhar em um nico computador,
acessando dados locais.
Comunicao entre programas, reaproveitamento de cdigo e acesso via rede, eram coisas raras ou
inexistentes. Para as necessidades da poca, era um modelo plenamente satisfatrio. A maior prova
disso que, ainda hoje, facilmente encontramos programas feitos em Clipper, para o ambiente MS-
DOS, rodando em pequenos estabelecimentos, dando suporte a todas as operaes dirias. Tente voc
propor que estas pessoas substituam seus programas em Clipper, que atendem perfeitamente s
necessidades destes pequenos estabelecimentos, por programas para Windows com interface grfica.
Com certeza voc receber um sonoro NO.
Porm logo as redes comeariam a invadir as empresas, os programas a tornarem-se mais complexos.
Com o advento das redes e do sucesso dos PCs, mais e mais pessoas comearam a utilizar computadores.
A velha interface a caractere do MS-DOS no atendia mais as necessidades. Neste momento que o
Windows comea a surgir no mercado.
PRAZER. EU SOU O WINDOWS!
Com a chegada doWindows tivemos a popularizao das interfaces grficas e de termos como: mouse,
cone, atalho e janelas. As ferramentas para desenvolvimento no ambiente Windows custaram a chegar.
No incio a programao tinha que ser feita em linguagem C, utilizando as APIs (Application Program
Interface) do Windows.
Com o lanamento do Visual Basic 1.0 teve incio a era das ferramentas grficas para desenvolvimento
de programas para o ambiente Windows.
Com o Windows j passou a existir o conceito de instalar o programa. A instalao do programa no se
limita a uma simples cpia de arquivos. Ao instalar um programa no Windows, o programa gravava
uma srie de informaes de configurao: no Windows 3.x em arquivos .ini e no Windows 9x na
Registry do sistema operacional. Alm destas informaes de configurao, partes do programa eram
disponibilizadas no formato de arquivos .DLL (Dynamic Link Library). Falando assim parecia um modelo,
digamos, bastante elegante. Um local centralizado para informaes sobre configurao e o programa
dividido em partes menores, que no conjunto forneciam a funcionalidade do programa.
Porm o modelo de programao para o Windows comeou a apresentar uma srie de inconvenientes.
Vamos falar destes inconvenientes, atravs de exemplos:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000769
N
O
T
A
Se alguma das configuraes, necessrias ao funcionamento do programa, fossem alteradas, o
programa deixava de funcionar. Isto gerava uma chamada ao pessoal de suporte que, na maioria
das vezes, somente conseguia resolver a situao reinstalando o programa.
Os arquivos .DLL poderiam ser utilizados por mais do que um programa. Pode acontecer uma
situao em que um programa que esteja sendo instalado substitua uma determinada .DLL por
uma verso mais nova do que a verso da .DLL atualmente existente no sistema. O problema
que podem existir programas que dependam da verso mais antiga. Nesta situao os programas
que dependem da situao mais antiga simplesmente deixaro de funcionar. Pode tambm
acontecer o contrrio, ou seja, um programa que est sendo instalado substitui uma .DLL por
uma verso mais antiga, fazendo com que outros programas deixem de funcionar. Em situaes
mais crticas poderia acontecer de o programa que est sendo instalado substituir uma .DLL
vital para o Windows. Nestas situaes todo o sistema deixaria de funcionar e, em alguns
casos, somente uma reinstalao poderia resolver o problema.
Vejam que o que parecia uma boa soluo acabou se mostrando um verdadeiro pesadelo para gerenciar
e manter em funcionamento. Neste poco surge, inclusive, a expresso DLL Hell, que poderamos
traduzir por: O Inferno das DLLs.
Cada vez que um programa fosse alterado, o programa precisaria ser reinstalado em todos os
computadores onde fosse necessria a nova verso. E se, ao fazer a atualizao para a nova verso,
fosse substituda alguma .DLL necessria ao funcionamento de algum outro programa? Novos
problemas para o pessoal do suporte tcnico. Vejam que este modelo gera uma grande carga de
suporte, o que encarece muito a manuteno em funcionamento de uma estao de trabalho da
empresa. Para mais detalhes sobre esta questo, consulte o Captulo 2, onde falo sobre os modelos
de aplicao Cliente/Servidor e a soluo para esta questo, usando o modelo em n Camadas.
REDES E INTERNET MAIS PROBLEMAS (OU SOLUES) VISTA!
Com o advento das redes como uma realidade nas empresas e com a exploso da Internet como
uma plataforma vivel para fazer negcios, os modelos de desenvolvimento de aplicaes sofreram
profundas mudanas.
Primeiro, com as redes, foi a poca da febre em descentralizar as estruturas de TI e migrar para o
modelo Cliente/Servidor, baseado em redes locais. Neste modelo, tambm conhecido como modelo de
duas camadas, temos um ou mais equipamentos de maior capacidade de processamento, atuando
como servidores. Nas estaes de trabalho dos usurios, conhecidas como clientes, so instalados
programas, que fazem acesso a recursos residentes nos servidores. O exemplo mais tpico de aplicao
Cliente/Servidor seria uma aplicao desenvolvida em Visual Basic ou Delphi, a qual acessa dados de
um servidor SQL Server, instalado em um servidor da rede. Na Figura 13.4, temos uma viso geral do
modelo Cliente/Servidor.
Para uma descrio detalhada do modelo de duas camadas e de seus problemas, consulte o Captulo 2.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7700000Curso Completo
Figura 13.4 O modelo Cliente/Servidor.
Sempre que um determinado modelo apresenta problemas, aparentemente intransponveis, a indstria
de informtica parte para a criao de novos modelos. Em busca de solues para os problemas do
modelo de duas camadas que surgiu a proposta do modelo de 3 camadas, conforme analisaremos,
brevemente, a seguir. Para uma descrio detalhada sobre o modelo de desenvolvimento em 3 camadas,
consulte o Captulo 2.
APLICAES EM 3 CAMADAS.
Como uma evoluo do modelo de 2 camadas, surge o modelo de trs camadas. A idia bsica do modelo
de 3 camadas retirar as regras do negcio, da aplicao 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 Servidor de Aplicaes. Ao centralizar as regras do negcio em um nico ponto, fica muito mais fcil a
atualizao das mesmas. A Figura 13.5 nos d uma viso geral do modelo em 3 camadas:
Servidor de Arquivos Outros Servidores Banco de Dados
Cliente Cliente Cliente Cliente Cliente
Servidor de Banco de Dados Servidor de Aplicaes
Cliente Cliente Cliente Cliente Cliente
No modelo de 3 camadas, toda a Lgica do
negcio fica no Servidor de Aplicaes. Com
isso, a atualizao das regras do negcio fica
mais fcil.
Figura 13.5 O Modelo de desenvolvimento em trs camadas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000771
N
O
T
A
Para uma descrio detalhada do modelo em trs camadas, consulte o Captulo 2.
Com a introduo da camada de Lgica, resolvemos o problema de termos que atualizar a aplicao,
em centenas ou milhares de estaes de trabalho da rede da empresa, toda vez que uma regra do
negcio for alterada. Porm continuamos com o problema de atualizao da interface da aplicao,
cada vez que forem necessrias mudanas na interface. Por isso que surgiram os modelos de n-camadas.
No prximo tpico, iremos falar, brevemente, sobre o modelo de 4 ou mais camadas
APLICAES EM QUATRO CAMADAS
Como uma evoluo do modelo de trs camadas, surge o modelo de quatro camadas. A idia bsica do
modelo de 4 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 da empresa. O acesso aplicao,
feito atravs de um navegador, como por exemplo o Internet Explorer, Firefox ou o Netscape Naviga-
tor. A Figura 13.6 nos d uma viso geral do modelo em quatro camadas:
Figura 13.6 O modelo de desenvolvimento em quatro camadas.
Para acessar a aplicao, o cliente acessa o endereo da aplicao, utilizando o seu navegador, como no
exemplo a seguir:
http://intranet.minhaempresa.com/sistemas/vendas.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.
Servidor de Banco de Dados Servidor Web Servidor de Aplicaes
Cliente Cliente Cliente Cliente Cliente
O cliente s precisa de um navegador para ter acesso aplicao.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7720000Curso Completo
N
O
T
A
Para uma descrio detalhada do modelo em quatro camadas, consulte o Captulo 2.
UM MODELO BASEADO EM COMPONENTES
O modelo de programao anterior ao .NET, para o ambiente Windows, fortemente baseado no
conceito de componentes. No exemplo do modelo em 4 camadas, quando uma aplicao cliente acessa
uma regra de negcio, esta regra de negcio implementada na forma de um componente COM/
COM+. o regra de negcio pode utilizar um outro componente para fazer a conexo com o Banco de
Dados e retornar os dados solicitados pela aplicao. Para que os diversos componentes possam
comunicar-se e trocar informaes, eles precisam de um padro para a troca de mensagens. O padro
determina a estrutura interna do componente e a maneira como cada componente expe suas
funcionalidades. O padro para o ambiente Windows chamado, a partir do Windows 2000, de
COM+. Para o Windows NT 4.0 e verses anteriores, tnhamos o COM/DCOM trabalhando em conjunto
com o MTS Microsoft Transaction Server.
Mas se existe um padro para troca de mensagens qual o problema? Acontece que a implementao de
componentes utilizando COM/COM+ nunca foi tarefa fcil. Se utilizarmos linguagens como o Visual C++,
a criao e disponibilizao de componentes uma tarefa que exige programadores altamente especializados.
J com ferramentas como o Visual Basic e Delphi, a criao de componentes para o padro COM+ um
pouco mais fcil. Porm a grande dificuldade fazer com que componentes implementados em diferentes
linguagens sejam capazes de trabalhar em conjunto e trocar mensagens entre si.
Agora imagine as dificuldades em um ambiente onde devemos criar aplicaes para a Internet e deve
existir uma maneira padronizada para que os diversos componentes sejam capazes de se comunicar. A
Microsoft, com a sua iniciativa DNA, procurou disponibilizar informaes para que seja possvel tirar
o mximo do modelo COM+, na criao de aplicaes em n-camadas para a Internet. Porm a prpria
Microsoft reconheceu as limitaes e dificuldades deste modelo, ao propor uma nova revoluo nos
mtodos e prticas de desenvolvimento, revoluo essa que atende pelo singelo nome de .NET (ou
Framework .NET, como venho tambm utilizando neste livro).
Outro fator importante a considerar que o padro COM/COM+ um padro proprietrio, desenvolvido
pela Microsoft. Como fazer com que um padro proprietrio possa ser utilizado, sem maiores problemas
para aplicaes distribudas na Internet? Fica muito difcil, para no dizer impraticvel. J com o .NET,
conforme comentamos anteriormente, utiliza-se padres no proprietrios, como XML para os dados
e SOAP sobre HTTP como protocolo de transporte. Desta forma a comunicao entre Web Services
acontece de uma maneira fcil, sem maiores problemas.
Para que um componente COM/COM+ possa ser utilizado, este precisa ser registrado no servidor que
ir disponibilizar o componente. Ao registrar o componente, so gravadas informaes sobre o
componente, na registry do sistema operacional. O programador precisa preocupar-se em garantir que
o componente seja registrado corretamente, pois, caso contrrio, este no poder ser acessado. J os
servios do .NET no necessitam de registro, sendo que toda a informao necessria para que estes
funcionem corretamente est contida no prprio servio, no formato de metadados metadata. Mais
adiante falaremos um pouco mais sobre metadata.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000773
N
O
T
A
Com componentes COM/COM+, o programador precisa preocupar-se em carregar o componente na memria,
retirar o componente da memria quando este no for mais utilizado e uma srie de outras funes necessrias
ao correto funcionamento de cada componente. Com o .NET, todas estas preocupaes foram transferidas
para o Framework .NET. Isto faz com que o programador somente tenha que codificar a funcionalidade do
servio que est sendo desenvolvido, a parte mais, digamos assim, chata ser de responsabilidade do Frame-
work .NET, mais especificamente do CLR. Isso aumenta a produtividade do programador e evita erros mais
graves, os quais normalmente fazem com que o componente no funcione corretamente.
J apresentamos os principais problemas do modelo atual e, no restante deste captulo, veremos os
demais elementos que compem o Framework .NET e como cada um destes elementos procura
solucionar problemas que os modelos anteriores no foram capazes de resolver. Tambm mostrarei
como utilizar pginas ASP.NET, para conectar com Bancos de Dados do SQL Server 2005.
DESENVOLVIMENTO EM: OS ELEMENTOS DO FRAMEWORK
.NET EM DETALHES
PR-REQUISITOS
Conhecimento bsico do Windows 2000 ou 2003 e do Framework .NET.
METODOLOGIA
Descrio dos elementos que compem o Framework .NET.
Agora vamos falar um pouco mais sobre os diversos componentes do Framework .NET e como cada um
destes componentes/funcionalidades se prope a solucionar problemas do modelo de desenvolvimento
baseado em componentes COM/COM+.
LINGUAGENS DE PROGRAMAO HABILITADAS AO .NET
O que significa uma linguagem ser habilitada ao .NET?
Significa que a linguagem capaz de gerar, como resultado da compilao, cdigo MSIL. Uma vez
gerado o cdigo MSIL, este executado sob o controle do CLR. Ou seja, para o Framework .NET, uma
vez gerado o cdigo MSIL, no importa a partir de qual linguagem o cdigo foi gerado, pois a maneira
como o cdigo MSIL executado sempre a mesma.
Juntamente com o Framework .NET, a Microsoft disponibiliza as seguintes linguagens:
Visual Basic .NET (VB.NET)
C++.NET
C#
No endereo a seguir, voc encontra uma listagem atualizada de todas as linguagens que j esto habilitadas ao .NET: http://
www.jasonbock.net/dotnetlanguages.html
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7740000Curso Completo
Podemos criar nossos programas em qualquer uma destas linguagens. Ao compilarmos o programa, o
resultado ser a gerao de cdigo MSIL, o qual passa a ser executado pelo CLR. Quando a Inprise
lanou o Delphi habilitado ao .NET, o que foi feito fazer com que o Compilador Delphi seja capaz de
gerar cdigo MSIL. Uma vez gerado o cdigo MSIL, para o CLR no importa em qual linguagem o
programa foi codificado.
UMA RPIDA APRESENTAO DO VB.NET.
Com exceo do C#, que uma nova linguagem, o VB.NET a linguagem que mais sofreu modificaes
em relao s verses anteriores (VB 6.0). Foram introduzidas algumas caractersticas a muito tempo
esperadas, tais como:
Foram adicionadas mais caractersticas de orientao a objetos, tais como herana verdadeira,
construtores parametrizados e overriding de mtodos e propriedades.
Mais facilidades para o desenvolvimento de aplicaes Internet. Por exemplo, para criar pginas
ASP.NET, ao invs de VBScript, utilizado com ASP, utilizamos diretamente o VB.NET ou o C# e
a criao de pginas Web com o Visual Studio .NET ficou bem mais simples do que usando o
Visual InterDev, que era a ferramenta para programao Web antes da disponibilidade do Vi-
sual Studio .NET.
Herana visual: Esta uma caractersticas que os desenvolvedores do Delphi j tinham a algum
tempo. Com o VB.NET podemos criar um formulrio com as caractersticas bsicas para todos
os formulrios da aplicao. Quando precisarmos de um formulrio com caractersticas
adicionais, podemos construir este novo formulrio baseado, isto , herdando as caractersticas
do formulrio bsico, e depois s adicionar os elementos necessrios. Ao criarmos o nosso
formulrio, herdando do formulrio bsico, o formulrio que est sendo criado ter,
automaticamente, todos os elementos do formulrio bsico. Alm dos elementos, o cdigo
para tratamento de eventos tambm herdado. O melhor de tudo, ao alterarmos o formulrio
bsico, todas as alteraes so refletidas nos formulrios herdados. A herana visual facilita,
enormemente, a criao de aplicaes que tenham uma interface consistente, padronizada e
de fcil manuteno.
Tratamento estruturado de excees: com o VB.NET, temos muito mais recursos para o
tratamento de erros e excees do que o bom e velho On Error do Visual Basic. Isso faz com que
possamos criar programas mais confiveis.
Falar sobre as novidades do VB.NET assunto para um captulo inteiro. Ensinar o VB.NET: assunto
para um livro inteiro.
UM RPIDA APRESENTAO DO C#
O C# a nova linguagem da Microsoft, apresentada juntamente com o Framework .NET. O C# foi
construdo com base nos conceitos de orientao a objetos. As diretivas bsicas para a criao do C#
foram as seguintes:
Uma linguagem orientada a objetos e to poderosa quanto o C++
Uma linguagem to fcil de utilizar quanto o VB
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000775
N
O
T
A
N
O
T
A
O pessoal da Microsoft realmente conseguiu aliar estas duas caractersticas em uma s linguagem:
Poder e Simplicidade. Conforme voc pode conferir nos captulos 3, 4 e 5, do seguinte e-book de
minha autoria: ASP.NET: Uma Nova Revoluo na Criao de Sites e Aplicaes Web (mais detalhes em
http://www.juliobattisti.com.br/ebooksdoautor), o C# de fcil aprendizagem e utilizao, ao mesmo
tempo que nos fornece poderosos mecanismos, antes s encontrados no C++.
Como no poderia deixar de ser, vamos dar o tradicional exemplo do Hello Word!!!, utilizando o C#.
Apresentarei o cdigo e os passos para compilar e rodar o nosso primeiro programa em C#. Para criar o
nosso primeiro programa, utilizaremos o Bloco de Notas do Windows.
Esse programa s poder ser executado se voc j tiver o Framework .NET instalado em seu computador. Por padro, ao instalar o SQL
Server 2005, o Framework .NET tambm instalado.
Abra o Bloco de notas e digite o texto indicado na Listagem 1.1.
Listagem 13.1 Hello Word !
using System;
class primeiroprograma
{
// Meu primeiro programa em C#
// O tradicional Hello Word!!
public static void Main()
{
string umamensagem = Hello Word!!!;
Console.WriteLine(umamensagem);
}
}
Salve este programa em uma pasta no HD com o nome de primeiroprograma.cs. Agora vamos compilar
o programa e execut-lo.
Para compilar o programa, abra um prompt de comando. Na janela do prompt v para a pasta onde
voc salvou o arquivo primeiroprograma.cs e execute o seguinte comando:
csc primeiroprograma.cs
Se der um erro, informando que no foi possvel localizar o comando csc, use o recurso Iniciar -> Pesquisar -> Arquivos ou pastas, para
localizar a pasta onde est o compilador do C#, que o arquivo csc.exe. Uma vez localizado o compilador do C#, salve o arquivo
primeiroprograma.cs na mesma pasta do compilador, abra um prompt de comando, navegue at a pasta onde est o arquivo csc.exe e
execute novamente o comando: csc primeiroprograma.cs
Com este comando compilamos o arquivo fonte primeiroprograma.cs, para gerar um executvel .exe.
O resultado deste comando indicado na Figura 13.7, onde utilizamos o comando dir, para mostrar
que a compilao gerou o executvel primeiroprograma.exe.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7760000Curso Completo
N
O
T
A
Figura 13.7 Compilando o primeiro programa em C#.
Para executar o nosso programa, basta digitar primeiroprograma e pressinar Enter. O programa ser
executado, conforme indicado na Figura 13.8:
Figura 13.8 Executando o primeiro programa em C#.
Apenas um ltimo detalhe ao qual gostaria de chamar a ateno: Observe, para aqueles que conhecem Java ou C++, a semelhana entre a
estrutura de um programa em C# e um programa em uma destas linguagens.
COMMON TYPE SYSTEM
O Framework .NET disponibiliza, na forma de objetos, um conjunto de tipos de dados comuns, os
quais podem ser utilizados por todas as linguagens habilitadas ao .NET. Isso significa, por exemplo,
que uma varivel do tipo Long ter a mesma estrutura e ocupar o mesmo nmero de bytes, quer seja
no VB.NET, no C#, no C++ ou em qualquer outra linguagem habilitada ao .NET. Este conjunto de tipos
comuns, que pode ser utilizado por qualquer linguagem habilitada ao .NET, chamado de Common
Type System, que a partir de agora abreviaremos por CTS.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000777
N
O
T
A
Dentre outras coisas, o CTS que facilita a integrao entre os programas e servios criados, utilizando-
se diferentes linguagens habilitadas ao .NET. No modelo antigo, uma das dificuldades de fazer com
que um componente COM+ criado com o Visual C++ pudesse ser utilizado por um programa escrito
em Visual Basic que as linguagens possuam um conjunto diferente de tipos bsicos. Para que os
componentes, escritos em diferentes linguagens, pudessem se comunicar, o programador tinha que
mapear os tipos de uma linguagem, para os tipos correspondentes em outra linguagem, fazendo as
converses necessrias. Vejam o quanto este procedimento trabalhoso. Com o CTS do .NET
simplesmente esta preocupao deixa de existir, uma vez que todas as linguagens tm acesso a um
conjunto de tipos comum e padronizado.
Conforme descrito na documentao do Framework .NET, so as seguintes as principais funes do CTS:
Fornece uma estrutura que possibilita a integrao entre diferentes linguagens habilitadas ao
.NET, com uma execuo mais rpida, uma vez que a sobrecarga para a converso entre os
diferentes tipos de diferentes linguagens deixa de existir.
Fornece uma estrutura de tipos com base em um modelo orientado a objetos, o que facilita a
criao de novas linguagens habilitadas ao .NET, favorecendo a utilizao de boas prticas de
programao, como por exemplo a herana. Uma vez que os tipos so objetos, podemos criar
tipos derivados (herdados) dos objetos bsicos, os quais herdam todas as caractersticas dos
objetos bsicos.
O CTS define algumas regras que toda linguagem deve seguir, para ser habilitada ao .NET. Por
seguir um conjunto de regras comum, a interao entre programas escritos em diferentes
linguagens fica bem mais fcil.
Mais adiante, farei uma descrio detalhada do CLR e dos seus componentes, dentre os quais est o CTS.
METADATA
Na seo Questes a considerarmos nos modelos de 3 ou mais camadas utilizados atualmente,
descrevemos, como uma das inconvenincias do modelo de componentes baseados em COM/COM+,
o fato de que estes, para poderem ser utilizados, precisam ser registrados. Ao registrarmos um componente
COM/COM+, uma srie de informaes sobre o componente gravada na Registry do sistema. Estas
informaes so utilizadas pelos programas que precisam acessar o componente. Se alguma destas
informaes estiver errada ou tiver sido alterada, o componente no poder ser acessado e os programas
que utilizam o componente deixaro de funcionar corretamente.
No Framework .NET, para utilizarmos os componentes .NET (.NET Componentes), no necessrio
que estes sejam registrados. O prprio componente .NET possui todas as informaes necessrias ao
seu funcionamento, bem como as informaes necessrias para que outros aplicativos possam utiliza-
los. Estas informaes fazem parte do prprio componente .NET e ficam gravadas no arquivo que
compe componente, na forma de Metadados metadata (dados sobre si mesmo). Uma traduo
popularmente conhecida para metadata seria: dados sobre dados. No nosso caso, metadata seriam as
informaes que o componente .NET possui a respeito de si mesmo, informaes estas que podem ser
utilizadas por outros componentes e servios, para utilizar o componente em questo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7780000Curso Completo
Alm de fazer com que no seja necessrio o registro do componente, as informaes de metadata
facilitam a interoperabilidade entre diferentes componentes, mesmo entre componentes escritos em
diferentes linguagens. Estas informaes so geradas, automaticamente, no momento da compilao
do componente e so gravadas no arquivo .DLL ou .EXE do componente. So muitas as informaes
que podem ser inseridas no componente, na forma de metadata, tais como:
Nome e verso do componente.
Uma chave pblica para verificao da origem e da autenticidade do componente.
Informaes sobre todas as classes ou componentes, dos quais o componente depende para
funcionar corretamente.
Tipos disponibilizados (exportados) pelo componente.
Permisses de segurana para o acesso ao componente, seus mtodos e propriedades.
Classes bsicas e interfaces do Framework .NET, utilizadas pelo componente.
Atributos personalizados, implementados no componente.
Membros do componente (mtodos, campos, propriedades, eventos, etc.).
Quando o componente acessado, o CLR carrega os metadados do componente na memria e faz
referncia a estes metadados, para obter informaes sobre as classes, membros, herana e dependncias
do componente.
So diversos os benefcios do uso de metadados, dentre os quais podemos destacar os seguintes:
Mdulos de cdigo autodescritivos: O prprio componente contm toda a informao
necessria para interagir com outros componentes. Desta forma o componente pode ser
implementado como um nico arquivo, o qual contm a sua definio (na forma de metadados)
e a sua implementao, o cdigo do componente.
Nunca demais repetir: A utilizao de metadados facilita, enormemente, a interoperabilidade
entre componentes criados usando diferentes linguagens.
ASSEMBLIES
Uma aplicao .NET constituda de um conjunto de blocos chamados Assembly. Atravs dos as-
semblies (plural de assembly) que podemos controlar a distribuio de uma aplicao, fazer o controle
de verses, alm de definir as configuraes de segurana. Um assembly uma coleo de tipos e
recursos que foram construdos para trabalharem juntos, formando, com isso, uma unidade com
funcionalidade e escopos bem definidos. Um assembly fornece ao CLR importantes informaes sobre
a implementao de tipos da aplicao. Para o CLR, um tipo somente existe no contexto de um assem-
bly. De uma maneira mais simples, poderamos dizer que um assembly o mecanismo utilizado pelo
.NET, para empacotar todos os elementos e informaes necessrias ao funcionamento de uma
aplicao ou componente. Vamos simplificar mais ainda: o assembly uma maneira de juntar e organizar
os diversos elementos que formam uma aplicao ou componente.
Os assemblies foram criados para simplificar a distribuio de aplicaes e resolver o problema de
verses, existentes em aplicaes baseadas em componentes. Lembram que no incio deste captulo
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000779
N
O
T
A
falamos sobre o termo DLL Hell (Inferno das DLL). Com este termo estvamos nos referindo ao
problema de um programa, ao ser instalado, substituir uma DLL por uma verso mais nova ou mais
antiga, fazendo com que programas que dependiam da verso anterior da DLL deixassem de funcionar.
Atravs do uso de assemblies e dos metadados contidos em cada componente, possvel que diferentes
verses, do mesmo componente, estejam disponveis, ao mesmo tempo, em um mesmo computador.
Desta forma, cada programa utiliza a verso do componente para o qual o programa foi criado. Ao
instalarmos uma nova verso do componente, o qual vem embutido em um assembly, as verses
anteriores sero mantidas, se estas estiverem sendo utilizadas por outros programas. Isso faz com que
o inferno das DLLs (DLL Hell) seja coisa do passado.
Para resolver o problema de verses e evitar o inferno das DLLs, o CLR utiliza assemblies da seguinte
maneira:
Permite que o desenvolvedor defina regras sobre o uso de diferentes verses entre diferentes
componentes .NET.
Fornece a infra-estrutura necessria para que as regras de verso definidas pelo desenvolvedor,
sejam respeitadas.
Fornece a infra-estrutura necessria, para que diferentes verses de um mesmo componente de
software possam rodar, simultaneamente. Esta execuo simultnea conhecida como syde-
by-syde execution.
Um assembly composto de dois elementos bsicos:
Manifesto
Um conjunto de mdulos.
Voc aprender mais detalhes sobre assemblies e seus elementos mais adiante neste captulo, onde apresentarei mais detalhes sobre o CLR
Common Language Runtime.
DESENVOLVIMENTO EM: INTERFACES COM O USURIO
PR-REQUISITOS
Conhecimento bsico do Windows 2000 e 2003 e do Framework .NET.
METODOLOGIA
Descrio dos elementos para criao da interface dos programas.
No Framework .NET a nomenclatura utilizada para representar os elementos que compem uma
aplicao Web diferente dos termos utilizados para representar uma aplicao tradicional para o
Windows, tambm conhecidas como aplicaes Win32. Alis este um dos pontos que gostaria de
destacar, pois o Framework .NET no foi concebido apenas para a criao de aplicaes Web. Com
Framework .NET, podemos criar qualquer tipo de aplicao, desde aplicaes Web, passando por
aplicaes Win32 tradicionais, at aplicaes de Console, tambm conhecidas como aplicaes de
linha de comando.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7800000Curso Completo
Em termos de interface com o usurio, temos dois elementos a considerar:
Windows Forms
Web Forms
WINDOWS FORMS
Que o Framework .NET foi todo projetado tendo em vista a Internet ns j sabemos. Porm nem todas
as aplicaes so ou sero desenvolvidas para a Web. A utilizao de Windows Forms (Win Forms ou,
se preferirem formulrios do Windows) o mecanismo que nos permite criar as tradicionais aplicaes
para Windows.
Windows Forms o novo mecanismo para construo de aplicaes Windows, baseadas no Frame-
work .NET.
Um Windows Form bastante semelhante ao conceito de formulrio utilizado pelas verses atuais do
VB e do Delphi. O formulrio o elemento bsico, sobre o qual adicionamos controles e cdigo para
determinados eventos associados com o formulrio e seus controles. O Windows Form tudo isso,
porm com a diferena de poder utilizar todos os mecanismo do Framework .NET. Dentre os principais
mecanismos disponveis, destaca-se o mecanismo de herana, o qual chamado, para o caso dos
Windows Forms, de herana visual. Anteriormente havamos comentado sobre herana visual.
Windows Forms
Controles e demais elementos constituintes do Windows Form
CLR
COMMON LANGUAGE RUNTIME
.NET Framework Class Library
System.Data Microsoft.CSharp System.Io
System.Net System.Security
...
Figura 13.9 Uma aplicao Win32 com o Framework .NET.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000781
Um Windows Form, como tudo no Framework .NET, um objeto, o qual obtido a partir da instncia de
uma classe bsica. Todos os formulrios no Framework .NET so baseados em uma das seguintes classes:
System.Windows.Forms.
So baseadas em um formulrio padro criado pelo usurio, atravs do mecanismo de herana.
Em resumo, o Windows Form o elemento bsico de criao de interfaces para interao do usurio
com a aplicao; em outras palavras, o Windows Form o elemento visual das aplicaes, elemento
este com o qual o usurio ir trabalhar.
Na Figura 13.9, temos uma viso geral dos elementos que compem uma aplicao Win32 tpica,
construda com o Framework .NET.
WEB FORMS
Para aplicaes Win32 a interface com o usurio so os Windows Forms, vistos no item anterior. Para
aplicaes Web, criadas com ASP.NET, as pginas so construdas utilizando-se Web Forms.
Um dos objetivos da utilizao de Web Forms trazer para o desenvolvimento Web as facilidades de
arrastar e soltar, existentes no desenvolvimento de aplicaes tradicionais. Com isso poderemos,
com o uso do Visual Studio .NET, criar pginas Web, simplesmente arrastando componentes sobre um
Web Form.
Com o uso de Web Forms, uma pgina ASP.NET dividida em dois componentes bsicos:
Um modelo (template), o qual contm os elementos visuais e de formatao da pgina,
normalmente contedo baseado em HTML, ou HTML gerado pelo cdigo ASP.NET.
Uma seo de cdigo, a qual responsvel por todo o processamento lgico dos elementos da
pgina. Por exemplo, na seo de cdigo podemos colocar os comandos necessrios para
estabelecer uma conexo com um Banco de Dados do SQL Server 2005 e um comando para
retornar os dados que sero utilizados pela pgina. Tambm podemos colocar comandos que
atualizam os dados no Banco de Dados, de acordo com as informaes digitadas na pgina.
Observe que com estes dois elementos: template e seo de cdigo, temos uma separao entre o
cdigo de processamento e o contedo da pgina propriamente dito. Isso evita a criao de cdigos do
tipo macarro, onde temos sees de cdigo alternadas com sees de HTML, sucessivamente. O
cdigo macarro bastante comum nas verses anteriores do ASP (ASP 2.0 e ASP 3.0).
Com o Framework .NET disponibilizada uma srie de novos controles para utilizao em pginas
ASP.NET. Estes novos controles apresentam novas caractersticas e propriedades que facilitam a criao
de pginas, digamos, mais inteligentes, onde podemos inserir cdigo em resposta a uma srie de
eventos. O melhor disso tudo que o funcionamento destes controles independente do navegador
utilizado pelo cliente, uma vez que os controles so processados no servidor Web e o que retorna para
o cliente o cdigo HTML puro, resultante do processamento do cdigo no servidor.
A seo de cdigo de um Web Form pode ser criada utilizando qualquer linguagem do Framework
.NET, como por exemplo: VB.NET, C# ou Jscript.NET.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7820000Curso Completo
Com a utilizao de Web Forms bem mais simples manter o estado de uma pgina, entre diferentes
requisies do usurio, isso tudo sem a necessidade de implementar a manuteno de estado utilizando
os objetos Session e Application, como era necessrio no ASP 3.0.
Alm disso, com o uso de Web Forms, podemos construir aplicaes Web com interfaces bastante
sofisticadas e funcionais, de uma maneira fcil atravs da utilizao de ferramentas de desenvolvimento
como o Visual Studio .NET e outras que j esto disponveis, como Delphi 7.0, Webmatrix, Dreamweaver
MX 2004 e assim por diante.
Na Figura 13.10, temos uma viso geral dos elementos que compem uma aplicao Web tpica, criada
com ASP.NET, com a utilizao de Web Forms.
Figura 13.10 Uma aplicao Web com ASP.NET e Web Forms.
DESENVOLVIMENTO: OS SERVIDORES .NET
PR-REQUISITOS
Conhecimento bsico do Windows 2000 ou 2003 e do Framework .NET.
METODOLOGIA
Descrio dos servidores que do suporte ao desenvolvimento de aplicaes .NET.
ASP.NET
CLR
COMMON LANGUAGE RUNTIME
.NET Framework Class Library
System.Data Microsoft.CSharp System.Io
System.Net System.Security
...
Web Forms:
1. Apresentao
2. Cdigo
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000783
Alm do Framework .NET, a Microsoft vem disponibilizando novas verses dos servidores da famlia
Back Office. Estas novas verses vm sendo adaptadas para dar suporte ao modelo de desenvolvimento
.NET. Por exemplo, os servidores esto sendo adaptados para o padro de dados XML, que o padro
de dados para troca de informaes entre componentes e servios do Framework .NET. Outra
preocupao para esta linha de servidores com a escalabilidade. Estes servidores foram projetados
para atender um grande volume de usurios, alm de terem a capacidade de utilizar a tecnologia de
Cluster e Balanceamento de Cargas do Windows 2000 e do Windows Server 2003. Outras diretivas
bsicas para estes servidores so as seguintes:
Interoperabilidade: Ao contrrio do que muitos anunciaram, os mainframes continuam vi-
vos. Alm disso, o ambiente de TI das empresas bastante heterogneo, onde convivem
diferentes sistemas operacionais e diferentes fontes e formatos de dados. O Framework .NET e
os servidores .NET facilitam a tarefa de integrar dados das mais variadas fontes, desde o
tradicional mainframe, passando por fontes de dados estruturados como o SQL Server 2005
(este voc, certamente, j conhece bem) ou ORACLE e chegando a fontes no estruturadas,
como mensagens de correio eletrnico, arquivos de vdeo e imagens grficas.
Facilidade de gerenciamento: Dentro da filosofia da Microsoft de construir interfaces de
administrao intuitivas e fceis de utilizar. Todos os servidores utilizam interfaces padronizadas,
atravs do uso do MMC Microsoft Management Console e snap-ins especficos para a
administrao de cada servidor.
Neste tpico descreveremos, rapidamente, quais os servidores .NET e qual a funo de cada um no
ambiente empresarial. Veremos uma breve descrio dos seguintes servidores:
SQL Server 2005
Exchange Server 2000
BizTalk Server 2000
Commerce Server 2000
Application Center 2000
Host Integration Server 2000
Internet Security and Acceleration Server 2000
Mobile Information 2001 Server
SQL SERVER 2000
O SQL Server 2005. Este, certamente, dispensa maiores comentrios, pois o objeto de estudos de todo
este livro.
EXCHANGE SERVER 2003
um servidor de mensagens e correio eletrnico, completamente integrado com o Active Directory e
com o Framework .NET, alm de ser uma plataforma para desenvolvimento de aplicaes do Workflow.
Cada vez mais o Exchange vem ganhando mercado de concorrentes como o Lotus Notes da IBM e o
Novel Groupwise da Novel. O Exchange 2003 completamente integrado com o Active Directory, o
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7840000Curso Completo
que facilita a criao e manuteno de contas de usurios. O suporte ao XML tambm est presente
nesta verso do Exchange. Maiores informaes sobre Exchange podem ser encontradas nos seguintes
endereos:
http://www.microsoft.com/exchange
http://www.swynk.com
BIZTALK SERVER
Com a consolidao do comrcio eletrnico, principalmente do chamado B2B Business to Business que
o comrcio entre empresas, cada vez faz-se mais necessria a integrao entre sistemas de informao
de diferentes empresas. Um dos maiores problemas que estes diferentes sistemas de informao utilizam
diferentes formatos de dados e diferentes mecanismos para troca de informaes. Durante muito tempo,
uma das solues adotadas foi o EDI Exchange Data Interchange. Porm o EDI apresenta algumas
limitaes, alm de um custo elevado. Com o advento da Internet e do padro XML, a troca de informaes
entre empresas tem migrado para solues onde o XML o formato universalmente aceito, o que facilita
a troca de informaes. O Biztalk Server a soluo da Microsoft que facilita a criao, desde o modelo
conceitual at a implementao, de aplicaes baseadas em XML, para troca de informaes entre diferentes
empresas ou at mesmo entre diferentes sistemas, da mesma empresa. Maiores informaes e uma verso
de avaliao para download podem ser encontradas no seguinte endereo:
http://www.microsoft.com/biztalk
COMMERCE SERVER 2000
O Commerce Server trabalha em conjunto com o IIS. Na verdade o Commerce Server facilita a criao
de um site para comrcio eletrnico, quer seja B2C Business to Consumer, quer seja B2B Business to
Business. Atravs de uma srie de modelos prontos e atravs da utilizao de assistentes, podemos
rapidamente criar um site para comrcio eletrnico. Aps a criao, possvel personalizar o site de
acordo com as necessidades da empresa. Pode trabalhar integrado com os demais servidores .NET. Por
exemplo, pode utilizar o SQL Server 2000 para armazenar informaes sobre o catlogo de produtos,
preos e estoque. Maiores informaes e uma verso de avaliao para download podem ser encontradas
no seguinte endereo:
http://www.microsoft.com/commerceserver
APPLICATION CENTER 2000
O Application Center 2000 a ferramenta da Microsoft para a implementao e gerenciamento de
Web sites que devero suportar uma elevada carga de acesso, com um grande nmero de acessos
simultneos. Tambm oferece ferramentas para a distribuio de um site entre diversos servidores,
com o objetivo de distribuir a carga entre diversos equipamentos. Com o uso do Application Center
fica mais fcil realizar tarefas como por exemplo manter sincronizado o contedo dos diversos servidores,
bem como fazer o gerenciamento e a distribuio de cargas.
HOST INTEGRATION SERVER 2000
Esta a nova verso do antigo SNA Server da Microsot, s que com o nome alterado. O Host Integra-
tion Server possibilita a integrao de redes Windows com outros ambientes, como, por exemplo,
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000785
mainframes baseados na arquitetura SNA da IBM. Maiores informaes e uma verso de avaliao para
download podem ser encontradas no seguinte endereo:
http://www.microsoft.com/hiserver
INTERNET SECURITY AND ACCELERATION SERVER 2004 ISA SERVER 2004
De certa maneira o successor do Proxy Server 2.0 da Microsoft, com algumas melhorias.
utilizado para conectar a rede local da empresa, de uma maneira segura, Internet. Suas funes
bsicas so as seguintes:
Firewall
Cache de pginas
Maiores informaes e uma verso de avaliao para download podem ser encontradas no seguinte
endereo:
http://www.microsoft.com/isaserver
MOBILE INFORMATION 2001 SERVER
O Framework .NET no foi concebido apenas para o desenvolvimento de aplicaes que sero acessadas
atravs de PCs ligados em rede ou computadores tradicionais. Com o Framework .NET, a Microsoft
pretende fornecer uma slida plataforma de desenvolvimento, tambm para os diversos dispositivos
mveis existentes, tais como telefones celulares, assistentes pessoais, Palm Pilots, etc. Dentro desta
estratgia, o Mobile Information 2001 Server desempenha um papel fundamental, fornecendo suporte
ao protocolo WAP 1.1. Usando o Mobile Information 2001 Server possvel, por exemplo, fazer com
que as suas mensagens do Exchange sejam convertidas para o formato em que possam ser lidas por um
celular ou qualquer outro dispositivo habilitado ao WAP.
Maiores informaes e uma verso de avaliao para download podem ser encontradas no seguinte
endereo:
http://www.microsoft.com/servers/miserver/default.htm
DESENVOLVIMENTO EM: ADO.NET
PR-REQUISITOS
Conhecimento bsico do Framework .NET.
METODOLOGIA
Descrio do ADO.NET.
Com o ASP 3.0, a tecnologia preferida para o acesso a diferentes fontes de dados a tecnologia ADO
Activex Data Objects, trabalhando em conjunto com OLE-DB, conforme ilustrado na Figura 13.11.
O Activex Data Objects para o Framework .NET (ADO.NET) um conjunto de classes que expem servios
para acesso a diversas fontes e formatos de dados, para os programadores, utilizando qualquer linguagem
habilitada ao .NET. Cabe ressaltar que ADO.NET no um substituto para o ADO, pois as duas verses de
componentes para acesso a dados podem continuar existindo em um mesmo servidor Web, por exemplo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7860000Curso Completo
Ao instalarmos o Framework .NET, instalado, alm do suporte a pginas ASP.NET, todo o conjunto de
classes do Framework .NET. Porm o acesso a pginas ASP tradicionais continua disponvel, o que significa
que mesmo aps instalar o Framework .NET, todas as aplicaes criadas com ASP 3.0 ou verses anteriores
do ASP, continuaro funcionando sem problemas, at que voc possa migr-las para ASP.NET. Ento em
um mesmo servidor Web podemos ter uma pgina ASP, que acessa dados de um arquivo .mdb do Access
utilizando ADO, convivendo com um aplicativo criado com ASP.NET, o qual acessa informaes de uma
caixa de correio do Exchange e em Bancos de Dados do SQL Server 2005, utilizando ADO.NET.
Figura 13.11 Acessando dados com ASP 3.0.
ADO.NET foi projetado pensando nos desafios de criar programas baseados no modelo de n camadas,
para a Internet, os quais precisam acessar dados de diferentes fontes. Alm disso, as aplicaes Internet
atuais esto bem mais sofisticadas, onde necessrio manter o conceito de estado, o que difcil em
um mundo como o da Internet, conhecido como Connection Less. Na Internet o usurio faz a conexo
com o servidor, requisita a pgina, recebe o resultado e desfaz a conexo. Para manter o estado entre
uma conexo e outra, no ASP 3.0, utilizvamos os objetos Session e Application. Manter o estado ficou
muito mais simples com ASP.NET e ADO.NET.
Outro fator importante a ser considerado que, cada vez mais, as aplicaes esto utilizando dados no
padro XML. ADO.NET fornece meios de utilizar dados no padro XML.
Os objetos e mtodos de ADO.NET so bastante diferentes dos utilizados com ADO. Um dos primeiros
objetos de que sentiremos falta do tradicional Recordet, o qual era muito utilizado no ASP 3.0. Na
Figura 13.12 temos uma viso geral da arquitetura do ADO.NET.
ADO
Jet
Provider
SQL Server
Provider
OLE DB
Gerenciador ODBC
OLE DB Providers
Drivers ODBC
Fontes de dados: Estruturadas e No estruturadas.
Driver ODBC
SQL Server
Driver ODBC
Microsoft Access
Driver ODBC
Oracle
ORACLE
Microsoft
Access
Microsoft
Access
Microsoft
SQL Server
Microsoft
SQL Server
Microsoft
Exchange
Server
Exchange
Server
Provider
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000787
N
O
T
A
Esta figura foi retirada da documentao do Framework .NET.
Figura 13.12 Uma viso geral da arquitetura do ADO.NET.
Observe que no temos o tradicional objeto Recordet. No prximo item voc aprender mais detalhes
sobre o corao do Framework .NET: CLR Common Language Runtime.
DESENVOLVIMENTO EM: CLR COMMON LANGUAGE RUNTIME
PR-REQUISITOS
Conhecimento bsico do Framework .NET.
METODOLOGIA
Descrio detalhada do CLR.
Nos tpicos anteriores falei rapidamente sobre o CLR. Agora chegou o momento de apresentar mais
alguns detalhes sobre este, que, com certeza, o principal elemento do Framework .NET.
O CLR o ambiente de execuo do Framework .NET. O CLR gerencia a execuo de qualquer aplicativo
.NET, alm de fornecer uma srie de servios que facilitam e agilizam o desenvolvimento de aplicaes.
Conforme discutido anteriormente, o maior benefcio do CLR que ele fornece uma srie de servios
e funcionalidades, que nos modelos de desenvolvimento anteriores ao .NET tinham que ser codificados
na prpria aplicao. Ao fornecer este conjunto de servios e funcionalidades, evita-se que o programador
tenha que se preocupar com a maneira com a aplicao vai ser executada, com a alocao de memria,
com liberao de memria e tantos outros aspectos que dificultavam o desenvolvimento de aplicaes.
Com o suporte fornecido pelo CLR, o programador somente precisa se preocupar com a lgica da sua
aplicao e no com a infra-estrutura necessria para a aplicao funcionar corretamente e sem problemas
isso delegado ao CLR.
.NET Data Provider
Connection
Transaction
Command
Parameters
DataReader
DataAdapter
SelectCommand
DeleteCommand
UpdateCommand
InsertCommand
DataSet
DataTable
DataTableCollection
ConstrainCollection
DataRowCollection
DataColumnCollection
DataRelationCollection
Database XML
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7880000Curso Completo
O cdigo que executado sob o controle do CLR chamado de Managed Code. Vamos arriscar uma
traduo: Cdigo Gerenciado. Este gerenciado significa: Sob o controle do CLR. Em contrapartida,
cdigo que no for executado sob o controle do CLR, no caso de programas no .NET, chamado de
no Managed Code, que traduziremos por cdigo no gerenciado.
Os programas criados com linguagens habilitadas ao .NET e, portanto, executados sob o comando do
CLR, podem se beneficiar das seguintes vantagens:
Fcil integrao e interoperabilidade entre programas criados em diferentes linguagens.
Fcil implementao e controle da segurana da aplicao.
Utilizar a biblioteca de classes do Framework .NET.
Melhor gerenciamento das diferentes verses de um mesmo componente, inclusive com a
possibilidade de execuo simultnea de diferentes verses do mesmo componente, o que
conhecido por: Syde-by-syde execution.
Gerenciamento automtico da alocao e liberao da memria.
COMPILAR OU NO COMPILAR, EIS A QUESTO?
Outro ponto importante a esclarecer se os programas .NET so compilados ou interpretados. Con-
fesso que, na opinio deste autor, pouca importncia tem se compilado ou interpretado, desde que o
desempenho final seja satisfatrio. Mas como todo programador que se preza um pouco teimoso, e
apaixonado por uma discusso acalorada, vamos esclarecer este assunto antes que os nimos se exaltem.
Ao criarmos um programa, utilizando uma linguagem habilitada ao .NET, como por exemplo o VB.NET
ou o C#, o cdigo-fonte do programa, ao ser compilado-gera cdigo MSIL Microsoft Intermediate
Language. Senhores! Com calma. Ainda no hora de comear a malhar o .NET. O CLR, que ser
responsvel pela execuo e controle do cdigo MSIL gerado, COMPILA o cdigo MSIL para cdigo
nativo. Com isso, o cdigo que executado pelo CLR cdigo COMPILADO nativo da plataforma
onde est instalado o Framework .NET. At o momento, a nica plataforma compatvel a dobradinha
Windows/Intel. Porm a Microsoft est tornando disponvel, publicamente, as especificaes para
CLR e MSIL, o que possibilita que outras empresas desenvolvam um Framework .NET para outras
plataformas, como, por exemplo, o UNIX ou LINUX.
Nos veremos mais adiante que, mesmo uma pgina ASP.NET, compilada no servidor Web, antes de
ser enviada para o navegador do cliente. Em resumo, todo e qualquer cdigo executado pelo CLR,
cdigo compilado nativo. Agora sim. Fiquem vontade para discutir, dizer que no bem assim, que
esse tal de MSIL no tem nada a ver, mais um chope e assim por diante.
O PAPEL DOS METADADOS (METADATA).
Para que o CLR possa fornecer uma srie de servios ao managed code, os compiladores das linguagens
habilitadas ao .NET devem ser capazes de criar metadados. Os metadados contm informaes sobre
os tipos, membros e referncias contidas no cdigo do programa. Os metadados so gravados com o
prprio cdigo do programa. Desta maneira toda a informao necessria para que o programa funcione
est contida no seu prprio cdigo, o que faz com que no seja necessrio o registro dos componentes
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000789
N
O
T
A
do programa, diferente do que acontecia com os componentes COM/COM+. O CLR utiliza metadados
para localizar e carregar programas ou componentes, organizar as vrias instncias de um mesmo
componente na memria, resolver a chamada de mtodos, gerar cdigo nativo, garantir a segurana
de acesso e definir os limites para o contexto de execuo de um componente ou programa.
O CLR automaticamente gerencia a alocao de objetos na memria, bem como as referncias aos
objetos. Quando no houver mais nenhuma referncia ao objeto, o que significa que este no est
mais sendo utilizado, o CLR automaticamente remove o objeto, liberando mais memria para o sistema.
Com isso os tradicionais problemas de memory leaks programas que alocam recursos de memria
e no liberam, fazendo com que a quantidade de memria disponvel fique reduzida, at o ponto de
fazer com que o prprio sistema operacional fique instvel e a mquina tenha que ser reinicializada
deixam de existir ou, mais realisticamente, so bastante minimizados. Vejam o quanto fica simplificada
a tarefa de desenvolvimento, uma vez que o programador no precisa preocupar-se com alocao e
liberao de memria, apenas com a lgica do seu programa.
INTEGRAO ENTRE DIFERENTES LINGUAGENS: PROMESSA OU REALIDADE?
Com o CLR fica fcil a criao de componentes e aplicaes nas quais os objetos sejam capazes de
interagir, mesmo que codificados em diferentes linguagens. Por exemplo, podemos criar uma classe
chamada Clientes, em VB.NET. Podemos criar uma classe Clientes Especiais, em C#, herdada da classe
Clientes, que foi criada em VB.NET. Com isso a nossa classe Clientes Especiais ir herdar todas as
propriedades e mtodos da classe Clientes.
Mais adiante apresentarei os principais conceitos de orientao a objetos, como por exemplo: classes e herana.
Essa integrao entre diferentes linguagens possvel, pois todas as linguagens habilitadas ao .NET,
tm acesso a um sistema de tipos comuns CTS Common Type System. Falaremos um pouco mais
sobre o CTS mais adiante, neste captulo. Alm disso cada componente ou aplicativo possui informaes,
na forma de metadados, sobre a sua estrutura, sobre os mtodos e propriedades que o objeto possui e
que podem ser acessados por outros componentes.
DESENVOLVIMENTO EM: O PROCESSO DE EXECUO DE CDIGO DO CLR
PR-REQUISITOS
Conhecimento bsico do Framework .NET e do CLR.
METODOLOGIA
Descrio detalhada do processo de execuo de cdigo no CLR.
Vamos ver quais os passos envolvidos, desde a criao de uma aplicao utilizando uma das linguagens
habilitadas ao .NET, at a execuo da aplicao, sob o controle do CLR.
Os passos para a criao e execuo de uma aplicao .NET podem ser resumidos da seguinte maneira:
Criar a aplicao ou componente utilizando uma linguagem habilitada ao .NET (VB.NET, C#, etc.).
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7900000Curso Completo
Compile o cdigo da sua aplicao ou componente para gerar cdigo MSIL. O compilador da
linguagem que voc est utilizando compila o seu cdigo fonte para MSIL e acrescenta os
metadados necessrios.
Em tempo de execuo, um compilador JIT (Just In Time) do CLR transforma o cdigo MSIL
em cdigo nativo, COMPILADO.
O cdigo nativo executado, utilizando toda a infra-estrutura disponibilizada pelo CLR.
Na Figura 13.13, temos uma ilustrao destes passos.
Figura 13.13 O processo de execuo de cdigo do CLR.
Conforme ilustrado na Figura 13.13, quando compilamos o cdigo-fonte criado por uma linguagem
habilitada ao .NET, geramos cdigo MSIL, a qual um conjunto de instrues, independente da CPU,
conjunto este que pode ser convertido (pelo JIT) para cdigo nativo. O cdigo MSIL inclui instrues
para carregar, armazenar, inicializar e chamar mtodos, instrues para operaes aritmticas e lgicas,
controle de fluxo do programa, acesso direto a memria, tratamento de excees e demais operaes
necessrias execuo do programa.
Antes que o cdigo MSIL possa ser executado ele precisa ser convertido para cdigo especfico da CPU
em questo. Isto feito pelo JIT Just in time compiler. O CLR disponibiliza compiladores JIT para
cada arquitetura suportada pelo CLR; desta maneira o mesmo conjunto de instrues MSIL pode ser
compilada e executada em qualquer arquitetura para a qual exista um compilador JIT.
CDIGO-FONTE DA APLICAO
(VB.NET, C#, etc.)
Compilador VB.NET, C#, etc.
MSIL
Compilador JIT - Just In
Time
do CLR
CDIGO NATIVO PARA EXECUO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000791
Esta a estratgia da Microsoft para fazer com que o cdigo MSIL de aplicaes .NET possa ser executado
em diferentes plataformas, desde servidores Windows ou no Windows, at dispositivos mveis para
os quais esteja disponvel um compilador JIT. claro que a implementao em outras plataformas que
no o Windows, como por exemplo o UNIX, depender da implementao de terceiros. Por exemplo,
a HP pode querer implementar um compilador JIT que rode no HP-UX, fazendo com que aplicaes
.NET possam rodar nesta plataforma. Se surgiro implementaes para outras plataformas uma questo
que somente o tempo e o mercado diro.
Quando o compilador de uma linguagem habilitada ao .NET produz o cdigo MSIL, este tambm cria os
metadados necessrios. O cdigo MSIL e os metadados esto contidos em um arquivo PE portable
executable. O portable significa que este arquivo pode, em tese, ser compilado e executado em qualquer
plataforma para a qual existe um compilador JIT. A presena dos metadados, juntamente com o cdigo
MSIL, torna o cdigo autodescritivo, o que significa que no temos mais a necessidade de bibliotecas de
tipo (type libraries) ou IDL Interface Definition Language dispositivos que eram necessrios ao
funcionamento de componentes baseados no modelo COM/COM+. Voltamos a salientar este ponto, o
componente criado para o .NET possui, na forma de metadados, toda a informao necessria ao seu
funcionamento e necessria para que possa ser acessado por outros componentes. O CLR localiza e extrai
os metadados do arquivo PE durante a execuo, medida que isso vai sendo necessrio.
MAIS ALGUMAS OBSERVAES SOBRE O JIT
O processo de compilao utilizado pelo JIT procura fazer uma srie de otimizaes, para tornar o
cdigo nativo gerado, o mais enxuto e com o melhor desempenho possvel.
O JIT detecta se algum mtodo ou propriedade no ser utilizado durante a execuo do programa. Ao
invs de converter todo o cdigo MSIL, contido no arquivo PE, o JIT converte apenas o cdigo que
realmente ser necessrio para a execuo do programa. Isso faz com que a compilao seja mais
rpida, com que sejam poupados recursos como por exemplo memria e o cdigo resultante otimizado,
tanto em termos de tamanho quanto em termos de velocidade de execuo.
Como parte da compilao do MSIL para cdigo nativo, o cdigo deve passar por um processo de
verificao, a no ser que tenha sido definida uma poltica de segurana que permite ao cdigo passar
pela verificao. O processo de verificao faz uma anlise do cdigo MSIL e dos metadados, para definir
se o cdigo pode ser definido como type safe. Para que o cdigo possa ser definido como type safe, ele
somente deve acessar regies de memria para as quais tenha autorizao. Este processo necessrio
para garantir que os objetos esto isolados uns dos outros, de tal maneira que um objeto no tente
alterar ou corromper dados de outros objetos. Na plataforma Windows 9x, quando um programa tenta
acessar a rea de memria utilizada por outro programa, gerada uma Falha Geral de Proteo, com
a famigerada mensagem Voc Executou uma Operao Ilegal e o seu programa ser fechado.
Para que o cdigo passe no teste de type safe, ele deve atender as seguintes condies:
Todas as referncias feitas a um determinado tipo so compatveis com o tipo que est sendo
referenciado.
Somente operaes devidamente definidas so invocadas pelo objeto.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7920000Curso Completo
N
O
T
A
possvel verificar e confirmar a identidade do objeto. Isso evita que um componente, por
exemplo um vrus, se faa passar por um componente vlido, porm com um comportamento
bem diferente do verdadeiro componente.
O processo de verificao tambm faz uma anlise do cdigo MSIL, para ver se este foi
corretamente gerado. Se as polticas de segurana da nossa aplicao definem que o cdigo deve
passar na verificao de type safe e o cdigo no passar nesta verificao, uma exceo ser
gerada quando o cdigo for executado.
O mecanismo de verificao do cdigo um exemplo tpico de funcionalidade disponibilizada pelo Framework .NET, a qual, nos modelos
anteriores, precisava ser desenvolvida pelo programador.
Um detalhe importante que nem todo o cdigo MSIL compilado para cdigo nativo de uma s vez.
A compilao acontece em nvel de mtodo. Quando um mtodo chamado, o cdigo MSIL do mtodo
compilado, o cdigo nativo gerado pelo JIT e o mtodo executado. O cdigo nativo gerado
mantido. Quando o mtodo for chamado pela segunda vez, o cdigo nativo gerado na primeira chamada
ser executado, evitando, com isso, que o cdigo do mtodo tenha que ser compilado a cada chamada
do mtodo, o que acarretaria uma perda considervel de desempenho.
DESENVOLVIMENTO EM: ASSEMBLIES
PR-REQUISITOS
Conhecimento bsico do Framework .NET e do CLR.
METODOLOGIA
Descrio dos assemblies.
Conforme descrito anteriormente, chegou o momento de apresentarmos mais alguns detalhes sobre
assemblies e sobre o formato (ou quem sabe anatomia) de uma aplicao .NET.
UMA DEFINIO EM POUCAS PALAVRAS
Para aplicaes tradicionais do Windows, anteriores ao modelo .NET, a aplicao final um arquivo
executvel ou um arquivo executvel mais um conjunto de .DLL e componentes. Uma DLL pode
conter um objeto COM/COM+ em uma biblioteca de tipos (typelib).
Para o Framework .NET, os diversos componentes de uma aplicao so empacotados atravs da
utilizao de assemblies. Um assembly contm todo o cdigo MSIL gerado pelo compilador, os
metadados e os demais arquivos necessrios ao funcionamento da aplicao. Cada assembly tambm
contm um manifesto. O manifesto contm as seguintes informaes:
Uma lista dos arquivos contidos no assembly.
A definio de quais tipos e recursos do assembly podem ser acessados por outros componentes
ou programas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000793
Um mapeamento entre os tipos e recursos disponibilizados pelo assembly e os arquivos que
contm os tipos e recursos.
Uma lista de outros assemblies, dos quais o assembly depende para o seu correto funcionamento.
Informaes sobre a identidade do assembly, incluindo o nome e a verso do assembly.
Se o assembly for pblico, como por exemplo um Web Service, o manifesto tambm pode
conter a chave pblica do assembly. Este um mecanismo semelhante, em funcionalidade,
utilizao de um certificado digital, para identificar a origem de um controle ActiveX.
Um assembly contm toda a informao necessria ao seu funcionamento. Ao definirmos um assem-
bly, ele pode estar contido em um nico arquivo ou em mltiplos arquivos. A vantagem de utilizar
mltiplos arquivos que as diferentes partes do assembly podem ser carregadas e executadas medida
que forem sendo utilizadas e no todos de uma s vez.
FUNES DO ASSEMBLY
Pela descrio anterior podemos concluir que o assembly um elemento fundamental na criao de
aplicaes .NET. Os assemblies foram projetados, principalmente, para simplificar o processo de
distribuio de aplicaes e para solucionar o problema do controle de verses existente no modelo
COM/COM+. Um assembly responsvel pelas seguintes funes:
Contm o cdigo executado pelo CLR. O cdigo MSIL contido em um arquivo PE (portable
executable) no poder ser executado se o cdigo MSIL no estiver associado a um manifesto,
o qual por sua vez faz parte de um assembly.
a unidade bsica para atribuio de permisses e configuraes de segurana. Podemos definir,
em nvel de assembly, quem pode acessar o assembly e com que nvel de acesso.
uma unidade de referncia, pois as informaes contidas no manifesto do assembly so utilizadas
para resolver tipos e para atender requisies de outros assemblies. Estas informaes definem
quais mtodos e propriedades so visveis e podem ser acessados externamente. O manifesto
tambm contm informaes a respeito de quais assemblies o assembly em questo depende.
uma unidade para definio de verso. A atribuio de um nmero de verso feita em nvel
de assembly.
uma unidade de distribuio das aplicaes .NET. Quando uma aplicao inicializada,
somente o assembly chamado na inicializao da aplicao precisa estar disponvel. Outros
assemblies somente so chamados medida que forem sendo utilizados. Essa uma caracterstica
muito importante, principalmente para aplicaes Web, onde a velocidade das conexes
sempre um fator crtico a ser considerado.
Assemblies podem ser estticos ou dinmicos. Assemblies estticos podem incluir tipos do Framework
.NET (interfaces e classes), alm dos recursos utilizados pelo assembly (bitmaps, .jpg, arquivos de som
ou imagem, etc.). Assemblies estticos so gravados em disco em arquivos PE. Na verdade um arquivo
PE pode ser gravado na forma de um EXE ou uma DLL.
Assemblies dinmicos rodam diretamente da memria e no so salvos no disco antes de serem
executados. Aps a execuo podemos salvar assemblies dinmicos em disco.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7940000Curso Completo
COMPONENTES DO ASSEMBLY
Um assembly esttico formado pelos seguintes componentes:
Manifesto, o qual contm metadados do assembly.
Metadados sobre os tipos do assembly (Type metadata).
Cdigo MSIL.
Demais recursos necessrios, como por exemplo arquivos grficos, arquivos de vdeo, etc.
Podemos agrupar todos os elementos constituintes do assembly em um nico arquivo, conforme
ilustrado na Figura 13.14.
Figura 13.14 Assembly e seus componentes em um nico arquivo.
Os componentes do assembly tambm podem estar divididos em diversos arquivos. Estes arquivos
podem conter mdulos de cdigo compilado, recursos (como por exemplo arquivos grficos ou de
vdeo) ou qualquer outro arquivo necessrio ao funcionamento da aplicao .NET.
Existem duas razes para a colocao dos componentes de um assembly em mltiplos arquivos:
Quando precisamos combinar, na mesma aplicao, componentes ou mdulos criados em
diferentes linguagens.
Para otimizar o download dos componentes de uma aplicao, de tal maneira que os
componentes ou mdulos menos utilizados somente sejam carregados quando forem
necessrios. Esta uma alternativa importante, principalmente para aplicaes Web.
Na Figura 13.15 temos o exemplo de um assembly composto de quatro arquivos:
Um arquivo o mdulo principal. criado em VB.NET.
Outro arquivo o mdulo com funes (Criado em C#) usadas pelo assembly principal.
Um arquivo .bmp.
Um arquivo .jpg.
Metadados do
Assembly
Type metadata
Cdigo MSIL
Demais recursos
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000795
Figura 13.15 Um assembly, vrios arquivos.
O QUE TEMOS NO MANIFESTO?
O Manifesto contm o seguinte conjunto de informaes (metadados):
Qual a relao entre os diferentes componentes do assembly.
Informaes sobre a verso do assembly.
Escopo.
Informaes para resolver referncias a outras classes e componentes.
O manifesto pode estar contido em um arquivo PE Portable executable (pode ser um .exe ou uma
.dll), juntamente com o cdigo MSIL ou pode estar em um arquivo PE separado, o qual contm somente
o manifesto. Esta ltima situao acontece quando temos um assembly formado de diversos arquivos.
As informaes contidas no manifesto so responsveis pelas seguintes funes:
Relao dos arquivos que compem o assembly.
Gerencia o mapeamento entre os tipos e recursos disponibilizados pelo assembly e os arquivos
onde esto contidas as declaraes e implementaes dos respectivos tipos e recursos.
Relaciona os assemblies dos quais o assembly em questo dependente.
Metadados do Assembly
Type metadata
Cdigo MSIL
Type metadata
Cdigo MSIL
MeuAssembly.dll
Criado em VB.NET
Mdulo utilitrio
Criado em C#
File1.bmp
File2.jpg
Recursos:
grficos e outros
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7960000Curso Completo
Em resumo, reforando o que j foi comentado anteriormente, este conjunto de informaes fornece
uma autonomia ao assembly, de tal maneira que o assembly contm toda a informao necessria ao seu
prprio funcionamento e sobre como ser acessado por outros objetos. Isso evita que o assembly tenha
que ser registrado. Com estes recursos, o processo de instalar uma aplicao .NET est resumido a copiar
os arquivos necessrios; como diriam os ainda apaixonados pelo DOS, voltamos ao estilo xcopy de
instalao, em referncia ao comando xcopy, o qual utilizado para copiar arquivos ou pastas.
DESENVOLVIMENTO EM: CTS COMMON TYPE SYSTEM
PR-REQUISITOS
Conhecimento bsico do Framework .NET e do CLR.
METODOLOGIA
Descrio do CTS.
O CTS desempenha um papel fundamental para garantir e facilitar e interoperabilidade entre programas
e componentes criados em diferentes linguagens do .NET. O CTS define a maneira como os tipos de
dados so declarados, usados e gerenciados pelo CLR. Atravs do CTS temos a garantia de que, por
exemplo, um inteiro ter as mesmas caractersticas, independente da linguagem na qual o inteiro
estiver sendo utilizado.
Uma das maiores dificuldades, no modelo COM/COM+, em fazer com que componentes escritos em
diferentes linguagens pudessem interagir o fato de que cada linguagem possui o seu prprio conjunto
de tipos, o qual no compatvel com o conjunto de tipos das demais linguagens. Colocando de uma
maneira mais simples: No modelo COM/COM+, o tamanho, forma de armazenamento e demais
caractersticas de cada tipo so dependentes da linguagem.
O CTS responsvel pelas seguintes funes:
Fornecer uma estrutura de dados e tipos padronizados, estrutura esta que torna a integrao
entre diferentes linguagens uma realidade, alm de garantir uma execuo mais rpida, uma
vez que as converses de tipo passam a ser coisa do passado.
Fornece um modelo orientado a objetos, o qual capaz de suportar qualquer linguagem
habilitada ao .NET.
Define algumas regras e padres que as linguagens habilitadas ao .NET devem obedecer, o que ajuda
a garantir que objetos escritos em diferentes linguagens sejam capazes de interagir e trocar mensagens.
CLASSIFICAO DOS TIPOS DO CTS
Temos duas categorias principais de tipos no CTS:
Value types: Toda linguagem de programao fornece um conjunto de tipos bsicos de dados,
como por exemplo: inteiros, caracteres, nmeros reais, strings, etc. Estes tipos bsicos so passados
por valor. Em outras palavras, se tenho uma varivel x cujo valor 5 utilizo o seguinte comando:
y = x
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000797
Neste caso estou passando o valor contido na varivel x para a varivel y. Alteraes feitas na varivel
y no afetaro o valor original da varivel x. No Framework .NET estes tipos bsicos, passados por
valor, so chamados de value types.
Estes tipos bsicos fazem parte do conjunto de classes disponibilizado pelo Framework .NET. Por
exemplo, um inteiro acessado como System.Int32 e um valor boleano como System.Boolean. Estes
tipos disponibilizados na prpria biblioteca de classes do Framework .NET so chamados de built-
in value types.
Para fornecer uma maior flexibilidade, o Framework .NET tambm permite que sejam criados os
chamados User-defined value types. Com isso o programador pode definir tipos personalizados, os
quais so derivados da classe bsica System.ValueType. Isso permite a criao de tipos especficos, de
acordo com as necessidades de cada aplicao. Por exemplo, para aplicaes de engenharia, podemos
criar um tipo para representar nmeros complexos ou matrizes com caractersticas definidas.
Reference types: Este tipo contm uma referncia para a localizao do valor do tipo. Em
outras palavras, contm o endereo de memria onde est armazenado o valor da varivel.
Vamos imaginar que x seja uma varivel do tipo reference type. Agora vamos fazer uma outra
varivel y, tambm do tipo reference type, como sendo igual a x:
y = x
Neste caso, o endereo onde est armazenado o valor de x foi atribudo varivel y. Se alterarmos o
valor de x, o que acontece com y? Como y contm uma referncia ao endereo da varivel x, ao
alterarmos x, y passar a enxergar o valor modificado. Por exemplo, se utilizarmos o comando
Console.Writeline(y), ser exibido o novo valor da varivel x.
DESENVOLVIMENTO EM: .NET FRAMEWORK CLASS LIBRARY
BIBLIOTECA DE CLASSES DO FRAMEWORK .NET
PR-REQUISITOS
Conhecimento bsico do Framework .NET e do CLR.
METODOLOGIA
Descrio do .NET Framework Class Library.
O Framework .NET fornece uma biblioteca hierrquica de classes. Esta biblioteca pode ser acessada por
qualquer linguagem habilitada ao .NET. Nesta biblioteca temos milhares de classes, interfaces e estruturas,
que disponibilizam os mais variados tipos de servios e funcionalidades, como por exemplo:
Acesso a fontes variadas de dados.
Configuraes de segurana.
Desenvolvimento de componentes e Web services.
Manipulao de objetos grficos.
Leitura e escrita em disco.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
7980000Curso Completo
Servio de sockets, com a possibilidade do envio e recebimento de dados utilizando uma grande
variedade de protocolos de rede.
Criao de aplicaes Web, com servios de fila de mensagens, correio eletrnico, etc.
Manipulao de dados e esquemas XML.
Criar aplicaes Win32 tradicionais atravs do uso de Win Forms.
Criar aplicaes ASP.NET utilizando Web Forms.
Acessar as informaes contidas nos assemblies, na forma de metadados.
As funcionalidades oferecidas pela biblioteca de classes do Framework .NET facilitam a criao de
programas, uma vez que muitas funes j esto prontas para serem utilizadas, evitando que estas
tenham que ser implementadas em cada programa. A utilizao de classes comuns a todas as linguagens
do Framework .NET tambm facilita a interoperabilidade entre diferentes linguagens.
Podemos utilizar as classes diretamente em nossos programas ou podemos criar classes que herdam os
mtodos e propriedades de uma determinada classe e adicionar as modificaes necessrias. Vejam
que aqui estamos utilizando o conceito de herana.
System
System.Int32
...
System.String
System.Data
...
System.Security
Figura 13.16 Uma representao parcial do espao de nomes System.
Como so milhares de classes, cada uma com seus mtodos e propriedades, o Framework .NET precisa
organizar estas classes de uma maneira a evitar conflito de nomes. A maneira encontrada pelo Frame-
work .NET atravs da utilizao de um espao de nomes (namespace). Um espao de nomes
simplesmente um agrupamento lgico das classes, estruturas e interfaces relacionadas. A maioria das
classes est contida no espao de nomes System. Diretamente ligado a system temos a definio de
tipos bsicos como por exemplo: Int32, String, etc. Um exemplo de classe de segundo nvel, dentro do
espao de nomes System, a classe System.Data, a qual fornece uma srie de objetos, mtodos e
propriedades, para acesso s mais variadas fontes de dados. Temos tambm uma classe de segundo
nvel chamada System.Security, a qual fornece servios para configuraes da segurana de acesso s
aplicaes .NET. E assim vamos formando uma imensa hierarquia de classes. As classes de segundo
nvel, como System.Data e System.Security, herdam todos os mtodos e propriedades da classe me
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000799
N
O
T
A
System. Este um dos princpios da orientao a objetos: Herana. No prximo item falaremos mais
sobre a herana e os demais fundamentos da orientao a objetos.
Na Figura 13.16, temos uma representao parcial do espao de nomes System, no qual representamos
apenas alguns tipos bsicos, ligados diretamente a System e s classes derivadas System.Data e
System.Security.
Podemos continuar nos aprofundando na hierarquia de classes. Por exemplo, existem classes derivadas
de System.Data. A classe System.Data.SqlClient contm toda a funcionalidade necessria para acessar
dados de um servidor SQL Server 2000 ou SQL Server 2005. J a classe System.Data.OleDb fornece
funcionalidades para conexo com qualquer fonte de dados, para a qual esteja disponvel um OLE-DB
Provider (para mais detalhes sobre OleDB Provider, consulte o Captulo 12). Se acrescentssemos mais
estas duas classes, o espao de nomes System ficaria conforme indicado na Figura 13.17.
Figura 13.17 System.SqlClient e System.OleDb.
Vejam que a hierarquia de classes vai crescendo.
Para uma descrio completa, de todas as classes do Framework .NET, consulte o item .NET Framework Class Library, dentro do tpico .NET
Framework Reference, na documentao do Framework .NET, conforme indicado na Figura 13.18. Lembrando que, uma vez instalado o Visual
Studio .NET (com o qual voc aprender a trabalhar no Captulo 15), voc pode acessar a documentao do produto utilizando o comando: Iniciar
-> Todos os Programas -> Microsoft .NET Framework SDK -> Documentation.
System
System.Int32
...
System.String
System.Data
...
System.Security
System.Data.OleDB
...
System.Data.SqlClient
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8000000Curso Completo
Figura 13.18 Documentao do Framework .NET.
Vamos fazer uma breve descrio das principais classes do .NET Framework Class Library.
Microsoft.Csharp: Suporte a linguagem C# do Framework .NET.
Microsoft.Jscrip: Suporte a linguagem JScript no Framework .NET.
Microsoft.VisualBasic: Contm o Run Time para o VB.NET e fornece o suporte a linguagem
no Framework .NET.
Microsoft.Win32: Fornece dois tipos de classes; um que trata dos eventos gerados pelo sistema
operacional e outro que fornece funes para acessar e gravar informaes na registry do sistema
operacional.
System: a classe principal para todo o espao de nomes System. Contm todas as caractersticas
comuns a todas as classes, uma vez que as classes derivadas de System herdam suas caractersticas.
Tambm contm os tipos bsicos, como por exemplo inteiros de 16, 32 ou 64 bits, string, byte,
etc.
System.Collections: Contm as interfaces e classes que definem vrias colees de objetos,
como por exemplo listas, filas, arrays e dicionrios.
System.Data: Contm a maioria das classes que compem a arquitetura do ADO.NET. Com
ADO.NET, podemos construir componentes capazes de gerenciar, de uma maneira eficiente,
dados de mltiplas fontes. Em um ambiente desconectado (connection less) como a Internet,
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000801
N
O
T
A
ADO.NET disponibiliza uma srie de ferramentas para requisitar, alterar e sincronizar dados
em uma arquitetura de mltiplas camadas. O principal elemento do ADO.NET uma classe
chamada DataSet.
System.Data.Common: Contm as classes que so compartilhadas por todos os .NET data
providers (provedores de dados para o .NET). Um .NET data provider uma coleo de classes
que fornece acesso para uma determinada fonte de dados, como por exemplo dados em um
mainframe ou em um servidor SQL Server 2000 ou SQL Server 2005.
System.Data.OleDb: Contm as classes que fornecem acesso a qualquer fonte de dados para a
qual exista um OLE-DB Provider disponvel.
System.Data.SqlClient: Contm um conjunto de classes que fornece um acesso otimizado ao
SQL Server. Utiliza o driver nativo para o SQL Server, ao invs de um OLE-DB Provider ou uma
fonte ODBC. Por isso o acesso mais rpido.
System.Diagnostics: Um conjunto de classes que permite que seja feita a depurao e
acompanhamento da execuo do cdigo das aplicaes .NET. Tambm fornece classes para
leitura e escrita no log de eventos, para inicializar servios do sistema operacional, para monitorar
a performance do sistema atravs da utilizao de contadores de desempenho.
System.DirectoryServices: Um conjunto de classes que fornece para as aplicaes .NET acesso
ao Active Directory do Windows 2000 Server ou do Windows Server 2003. As classes de
System.DirectoryServices podem ser utilizadas com qualquer Active Directory Service Provider
disponvel. Atualmente esto disponveis os seguintes:
1. IIS Internet Information Server
2. LDAP Lightweight Directory Access Protocol
3. NDS Novel Directory Services
4. WinNT Para acesso ao diretrio do Windows NT 4.0.
Para que o programador possa utilizar de maneira eficiente estas classes, um bom conhecimento do diretrio em questo exigido.
System.Drawing: Um conjunto de classes com funes grficas da biblioteca grfica do Frame-
work .NET, a qual conhecida como GDI+ (bem que poderia ser GDI.NET). Fornece mtodos
para desenhar elementos bsicos no vdeo, como por exemplo retngulos, crculos, uma linha
reta, um ponto, etc.
System.Globalization: Este namespace contm o conjunto de classes com as funcionalidades
necessrias para a construo de aplicaes com suporte a diferentes idiomas.
System.IO: Um conjunto de classes com suporte a leitura e escrita, sncrona e assncrona para
stream de dados e arquivos em disco.
System.Messaging: Contm um conjunto de classes para habilitar os programas .NET a trabalhar
com filas, enviar mensagens para uma fila, ler mensagens de uma fila, etc. No Windows NT 4.0
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8020000Curso Completo
tnhamos o MSMQ Microsoft Message Queue que atuava como servidor, disponibilizando
servios de filas para aplicaes COM.
System.Net: Disponibiliza uma interface de programao bastante fcil de utilizar, a qual nos
d acesso para a grande maioria dos protocolos disponveis na Internet.
System.Security: Um conjunto de classes com mtodos para a definio das configuraes
bsicas de segurana para aplicaes .NET.
System.Security.Cryptography: Disponibiliza servios de criptografia, incluindo codificao
e decodificao de dados, hashing, gerao de nmeros aleatrios e autenticao de mensagens.
System.Web: Contm uma srie de classes e interfaces para a comunicao browser/servidor
web. Por exemplo, existe uma classe chamada HTTPRequest, a qual disponibiliza uma srie de
informaes a respeito da requisio HTTP feita pelo cliente. Existem outros namespaces,
herdados de System.Web, como por exemplo: System.Web.Caching, System.Web.Configuration,
System.Web.Hosting, System.Web.Mail, System.Web.SessionState, etc.
System.Windows.Forms: Contm classes para a criao de aplicaes Win32, as quais podem
ter acesso a todos os elementos da interface do Windows, como por exemplo botes, menus,
barras de rolagem, etc. Neste namespace encontraremos uma classe chamada Form alm de
muitos outros controles que podem ser utilizados para a criao da interface do usurio.
System.XML: o namespace que contm as classes que do suporte ao padro XML.
Apresentamos apenas uma descrio bsica dos principais namespaces do Framework .NET. Livros
inteiros podem ser escritos sobre um nico namespace como por exemplo System.Net ou
System.Security. A melhor fonte de consulta para as classes, mtodos e propriedades de um namespace
a prpria documentao do Visual Studio .NET.
Agora vamos fazer uma reviso dos principais conceitos de Orientao a Objetos. importante a
reviso destes conceitos uma vez que a linguagem C# e todo o Framework .NET so baseados nos
conceitos de Orientao a Objetos.
DESENVOLVIMENTO EM: CONCEITOS BSICOS DE ORIENTAO A OBJETOS
PR-REQUISITOS
Conhecimento bsico do Framework .NET e do CLR.
METODOLOGIA
Descrio dos princpios bsicos de orientao a objetos.
Vamos fazer uma reviso dos principais conceitos de orientao a objetos. A orientao a objetos, quer
seja como metodologia de anlise, projeto ou programao, foi criada com o objetivo de resolver
problemas que a programao estruturada no foi capaz. A orientao a objetos possui os seguintes
objetivos bsicos:
Produtividade.
Incentivo a boas prticas de programao.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000803
Uma modelagem mais prxima do entendimento do usurio final.
Reutilizao de cdigo.
Facilidade de manuteno do cdigo.
Embora a proposta de orientao a objetos seja bastante consistente, esta ainda no teve o nvel de
implementao esperado. No cabe aqui discutir os motivos que fizeram com que a velocidade de
adoo ficasse abaixo da esperada. Este fato ainda mais interessante, uma vez que a grande maioria
das empresas admite que a orientao a objetos oferece uma srie de vantagens em relao ao modelo
de programao estruturada. Porm a mudana para um novo modelo envolve uma nova maneira de
pensar, uma necessidade de treinamento e, principalmente, uma mudana cultural. Esta ltima sem
sombra de dvidas a mudana mais difcil.
Vamos revisar os seguintes conceitos bsicos:
O que um objeto?
Mensagens
Classes
Herana
Instncias
Reutilizao de cdigo
O QUE UM OBJETO?
Na programao estruturada ns temos uma separao entre procedimentos e os dados sobre os quais os
procedimentos atuam. Um procedimento pode ser uma funo que retorna um valor ou uma procedure
que realiza uma srie de operaes, podendo ou no retornar um valor. Porm este modelo apresenta
srias dificuldades do ponto de vista do usurio. Ao fazer a anlise e projeto de um programa, o analista
precisa traduzir as necessidades dos usurios em termos de procedimentos, funes, mdulos, etc. Existe
uma diferena muito grande entre a linguagem dos usurios e a linguagem dos analistas/programadores.
Um objeto uma entidade que contm, alm dos dados, todas as funes que atuam sobre estes dados.
Ou seja, um objeto composto dos dados que descrevem o objeto (propriedades) e das operaes que
podem ser realizadas sobre estes dados (mtodos). Esta abordagem j um pouco mais prxima da
abordagem entendida pelos usurios finais do sistema. Vamos imaginar um sistema para o departamento
de recursos humanos. Os usurios falam em termos de empregados, cargos, etc. Poderamos ter um
objeto chamado Funcionrio. Este objeto poderia conter diversas propriedades, tais como:
Matrcula
Nome
Endereo
Fone
Data de Admisso
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8040000Curso Completo
Data de Aniversrio
Nome do Pai
Nome da Me
Nmero da Identidade
Nmero do CPF
Cargo
Salrio
Com isso podemos observar que as propriedades descrevem as caractersticas de um determinado
objeto. O conjunto de valores contidos nas propriedades de um determinado objeto define o seu
estado atual.
Alm das propriedades o objeto pode conter mtodos. Os mtodos descrevem aes que podem ser
realizadas pelo objeto ou no objeto. Por exemplo, o nosso objeto funcionrio poderia ter um mtodo
chamado pagamento, outro chamado transferncia, mais um chamado promoo e assim por diante.
Um mtodo, na prtica uma funo ou procedimento que realiza uma determinada ao. Os mtodos
de um objeto podem receber parmetros e ter o seu comportamento alterado, dependendo do valor
dos parmetros recebidos. Por exemplo, o mtodo Promoo, de um objeto funcionrio, pode receber,
como parmetros, a matrcula do funcionrio, a data da promoo e o cdigo do novo cargo. Dentro
do mtodo Promoo pode ser chamado um mtodo AtualizaSalrio, o qual atualiza o valor do salrio
do funcionrio, de acordo com o novo cargo que o funcionrio ir ocupar.
Na Figura 13.19 temos uma representao do objeto Funcionrio.
FUNCIONRIO
Propriedades Mtodos
Representam as
caractersticas do objeto.
Representam as aes.
Figura 13.19 Objeto Funcionrio mtodos e propriedades.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000805
MENSAGENS
Os objetos se comunicam atravs de um mecanismo de troca de mensagens. Mensagens um mecanismo
de comunicao entre objetos atravs do qual se desencadeia a execuo de um mtodo especfico.
Atravs do mecanismos de troca de mensagens um objeto pode invocar mtodos de outros objetos e
receber os resultados da execuo do mtodo invocado.
No desenvolvimento baseado em padres tais como COM/COM+, existem mtodos proprietrios para
troca de mensagens. Alm disso, cada linguagem de programao possui um conjunto distinto de
tipos de dados. Desta maneira a troca de mensagens entre objetos criados em diferentes linguagens
no uma tarefa simples, fato este j bastante salientado anteriormente. J no Framework .NET existe
um sistema de tipos comuns a todas as linguagens: CTS Common Type System. A existncia do CTS
facilita, enormemente, a interao entre objetos criados em diferentes linguagens. Outra vantagem do
Framework .NET que ele utiliza um sistema para troca de mensagens, baseado no padro XML e no
protocolo SOAP, ambos adotados como um padro de fato pela indstria de TI.
Outro termo relacionado com orientaes a objetos instncia. Quando um programa carrega um
determinado objeto na memria, dizemos que foi feita uma instncia do objeto. Ao carregar na memria
estamos reservando recursos para armazenar as caractersticas do objeto atravs da definio dos
valores de suas propriedades e tambm recursos para que os mtodos do objeto possam ser executados.
CLASSES
Se pesquisarmos a bibliografia sobre orientao a objetos encontraremos um sem-fim de definies
para classes. Vamos inicialmente apresentar algumas das definies formais encontradas na bibliografia.
Depois vamos a uma, digamos, explicao menos formal:
Classes constituem modelos que so utilizados para a criao de objetos. Nas classes so descritos
a estrutura de dados (atravs das propriedades) e o comportamento (atravs de seus mtodos)
de um ou mais objetos similares que possuem seus dados estruturados da mesma forma e so
manipulados pelos mesmos mtodos.
Um objeto uma instncia de uma classe que criada em tempo de execuo. Classes so
puramente uma descrio esttica de um conjunto de possveis objetos.
Na prtica, o que significa, por exemplo, termos uma classe chamada Funcionrios? Esta classe serve
como modelo para a criao de objetos do tipo Funcionrio. Na classe Funcionrios esto as definies
das propriedades e dos mtodos para um objeto Funcionrio. Ou seja, sempre que criarmos um objeto
do tipo funcionrio este ser criado com todas as propriedades e mtodos da classe Funcionrios ou
como preferem os puristas herdando as propriedades e mtodos da classe Funcionrios.
Como eu sou apaixonado por definies simples e sem meias-palavras, adorei esta definio que
encontrei na Internet: Classe uma forma para fazer objetos. Acho que essa frase resume tudo.
Grande parte da funcionalidade do Framework .NET fornecida por um grande nmero de classes, as
quais fazem parta de .NET Framework Class Library, j descrita anteriormente. O Framework .NET
agrupa as classes de acordo com suas funcionalidades. Um agrupamento de classes criadas para um
determinado fim tambm conhecido como um namespace (espao de nomes). Por exemplo, temos o
namespace System.Data. Dentro deste namespace existem vrias classes que fornecem os mtodos
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8060000Curso Completo
N
O
T
A
necessrios para a conexo e manipulao de fontes variadas de dados. Existem classes para a conexo
com o SQL Server, outras para a conexo com fontes ODBC e assim por diante. A biblioteca de classes
do Framework .NET organizada de uma forma hierrquica, onde as classes de nveis inferiores herdam
todas as caractersticas da classe me. Falaremos mais sobre herana no prximo item.
Na linguagem C# tudo (ou quase tudo como preferem alguns) so classes. At para criar um simples programa como o Hello Word apresentado
anteriormente e exibido novamente na Listagem 25.2, criada uma classe. Observe a palavra class na segunda linha do exemplo.
Listagem 13.2 Hello Word !
using System;
class primeiroprograma
{
// Meu primeiro programa em C#
// O tradicional Hello Word !!
public static void Main()
{
string umamensagem = Hello Word !!!;
Console.WriteLine(umamensagem);
}
}
HERANA
o mecanismo que permite definir uma nova classe a partir de uma classe j existente. A classe que
est sendo criada dita subclasse ou classe filha da classe j existente. Em contrapartida a classe j
existente chamada de superclasse da classe que est sendo criada. A subclasse herda a estrutura de
dados e os mtodos da superclasse, podendo adicionar variveis na estrutura de dados herdada, bem
como adicionar novos mtodos e reescrever mtodos herdados.
Uma classe pode possuir uma nica superclasse herana simples, ou pode conter mais do que uma
superclasse herana mltipla. A herana mltipla tem sido alvo de muitas discusses e controvrsias.
A nica linguagem, do Framework .NET, que implementa diretamente a herana mltipla o C++. A
grande discusso em torno da herana mltipla tem a ver com a relao custo x benefcio, uma vez que
esta de difcil implementao e concepo, embora os benefcios nem sempre sejam os esperados.
Herana um conceito fundamental para a orientao a objetos. Atravs do mecanismo de herana
podemos criar uma classe baseada em outra j existente. A nova classe que est sendo criada herda
todas as propriedades e mtodos da classe base, tambm chamada de classe me ou superclasse conforme
descrito anteriormente. A herana evita que as propriedades e mtodos da classe me tenham que ser
redefinidos na classe filho, embora a classe filho ou subclasse possa redefinir os mtodos da classe me,
atravs de um mecanismo conhecido como Overwrite.
Para ilustrar o mecanismo de herana vamos a um exemplo prtico. Vamos imaginar que voc esteja
projetando um programa de controle de vendas, baseado na orientao a objetos. Uma das provveis
classes seria a classe Clientes. Nesta classe poderamos definir as caractersticas e mtodos bsicos para
um cliente tpico.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000807
Para a classe Clientes poderamos definir as seguintes propriedades:
Nome
CPF
RG
Identidade
Endereo
Cidade
CEP
Fone
E-mail
Para a classe Clientes poderamos definir os seguintes mtodos:
Cadastrar
Excluir
Atualizar
Observe que a nossa classe Clientes possui apenas as propriedades e mtodos comuns a qualquer
cliente, quer seja um grande cliente ou um pequeno correntista. Este um dos princpios da utilizao
de classes: Nas classes de primeiro nvel definimos apenas as propriedades e mtodos comuns, os quais
devero ser utilizados pelas classes dos demais nveis.
Figura 13.20 A classe Clientes.
Clientes
Propriedades Mtodos
Nome
CPF
RG
Identidade
Endereo
Cidade
CEP
Fone
E-mail
Cadastrar
Excluir
Atualizar
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8080000Curso Completo
Na Figura 13.20 temos uma viso geral da classe Clientes.
Continuando o nosso exemplo, o banco tem clientes com caractersticas diferenciadas. Por exemplo:
Correntistas
Contas de poupana
Emprstimos pessoais
Financiamentos habitacionais
Cada um destes tipos de clientes possui propriedades e relaes diferenciadas com o banco. Por isso
precisamos de objetos que representem estas diferenas. A primeira sugesto seria criar uma classe para
cada tipo de cliente. A ttulo de exemplo poderamos criar as seguintes classes:
ClienteCorrentista
ClientePoupana
ClienteEmprstimo
ClienteHabitacional
Ao criar a classe ClienteCorrentista podemos cri-la como uma subclasse da classe Clientes. Com isso
a classe ClienteCorrentista herda todas as propriedades e mtodos da classe pai Clientes. Somente
precisaremos implementar as propriedades e mtodos que so especficas da subclasse ClienteCorrentista.
A ttulo de exemplo vamos definir algumas propriedades e mtodos da classe ClienteCorrentista.
Para a classe ClienteCorrentista poderamos definir as seguintes propriedades:
NumConta
NumAgncia
Limite
Categoria
Para a classe ClienteCorrentista poderamos definir os seguintes mtodos:
DefinirLimite
AumentarLimite
BloquearConta
LiberarConta
Juntando as propriedades que foram herdadas da classe pai Clientes, a classe ClienteCorrentista teria
as seguintes propriedades:
Nome (herdada da classe pai)
CPF (herdada da classe pai)
RG (herdada da classe pai)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000809
Identidade (herdada da classe pai)
Endereo (herdada da classe pai)
Cidade (herdada da classe pai)
CEP (herdada da classe pai)
Fone (herdada da classe pai)
E-mail (herdada da classe pai)
NumConta
NumAgncia
Limite
Categoria
Juntando os mtodos que foram herdados da classe pai Clientes, a classe ClienteCorrentista teria os
seguintes mtodos:
Cadastrar (herdada da classe pai)
Excluir (herdada da classe pai)
Atualizar (herdada da classe pai)
DefinirLimite
AumentarLimite
BloquearConta
LiberarConta
Na Figura 13.21 temos uma viso geral da classe ClienteCorrentista, j incluindo as propriedades e
mtodos herdados da classe pai Clientes..
O mesmo raciocnio tambm vlido para a criao das classes ClientePoupana, ClienteEmprstimo
e ClienteHabitacional, como subclasses da classe pai Clientes.
Caso haja necessidade, uma subclasse pode sobrescrever um mtodo herdado da classe pai. Por exemplo, a
subclasse ClienteCorrentista poderia sobrescrever o mtodo Cadastrar da classe pai Clientes. Isso pode ser
feito para que sejam atendidas necessidades especficas do cadastramento de um cliente correntista. As
linguagens do Framework .NET suportam esta tcnica, a qual tambm conhecida como Overwrite.
Aps termos criado as demais classes do nosso exemplo, estaremos com a hierarquia de classes ilustrada
na Figura 13.22.
Conforme descrevemos anteriormente, uma hierarquia de classes tambm pode ser chamada de
namespace ou espao de nomes. Tambm j descrevemos antes que .NET Framework Class Library
, na verdade, um grande nmero de namespaces, cada um com funcionalidades especficas,
funcionalidades estas disponibilizadas por um grande nmero de classes dentro de cada um dos
namespaces. Tambm gostaria de reforar que este um dos grandes atrativos do .NET, ou seja, oferecer
uma infinidade de classes, as quais facilitam muito o desenvolvimento das aplicaes e, ainda por
cima, classes estas que podem ser acessadas a partir de qualquer linguagem do Framework .NET.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8100000Curso Completo
Figura 13.21 A classe Clientes.
ClienteCorrentista
Propriedades Mtodos
Nome
CPF
RG
Identidade
Endereo
Cidade
CEP
Fone
E-mail
NumConta
NumAgncia
Limite
Categoria
Cadastrar
Excluir
Atualizar
DefinirLimite
AumentarLimite
BloquearConta
LiberarConta
Clientes
ClienteCorrentista ClienteEmprstimos ClienteCorrentista ClienteCorrentista
Figura 13.22 Uma hierarquia de classes.
REUTILIZAO DE CDIGO
Ao utilizar uma das classes do Framework .NET qual o princpio de orientao a objetos que estamos
utilizando? Herana. Certo. Mas no era bem deste princpio que eu gostaria de tratar. Ento vamos
colocar as coisas de uma maneira um pouco diferente: Ao utilizarmos a herana, qual o princpio de
orientao a objetos que estamos utilizando? Reutilizao ou reaproveitamento de cdigo ou, de uma
maneira mais chique: Reusabilidade.
Ao invs de termos que implementar a funcionalidade de determinada classe, em cada programa onde
a funcionalidade for necessria, simplesmente criamos uma classe que herda estas funcionalidades, j
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000811
N
O
T
A
N
O
T
A
prontas, de uma classe do Framework .NET. Com isso reutilizamos o cdigo j desenvolvido. Isso
poupa trabalho e facilita o desenvolvimento das aplicaes. Melhor ainda. Vamos imaginar que tenha
sido descoberto um pequeno bug em um mtodo de uma determinada classe. Ao corrigirmos este
bug na classe em questo, todos os programas que utilizam a classe passaro a ter acesso s
modificaes, ou seja, iro herdar as alteraes. Isso facilita, enormemente, a manuteno e alterao
das aplicaes. Mas era de esperarmos tal comportamento, uma vez que reutilizao de cdigo, herana
e facilidade de manuteno dos programas so alguns dos princpios bsicos da orientao a objetos.
Em uma empresa, a equipe de desenvolvimento pode criar classes bsicas, as quais podem ser utilizadas
em diversos programas da empresa. Sempre que forem feitas alteraes nas classes bsicas, as alteraes
sero herdadas por todos os programas que utilizam as classes bsicas. Vejam que este cenrio muito
diferente do que acontece, na prtica, hoje. Muitas vezes cada projeto de desenvolvimento parte do
zero, sem que nada seja reaproveitado de projetos anteriores. Com isso uma srie de funcionalidades
bsicas precisa ser reescrita a cada novo projeto. Desta forma temos projetos mais longos, com maior
custo e que muito raramente so concludos no prazo.
Todos os conceitos apresentados, para o desenvolvimento de aplicaes no Windows Server 2003, so baseados no Framework .NET. Em
verses anteriores do Windows, o Framework .NET era um componente separado, o qual voc deveria copiar do site da Microsoft e instalar.
Ou, se voc instalasse o Visual Studio .NET, o Framework .NET seria automaticamente instalado a partir da mdia de instalao do Visual
Studio .NET. Ao instalar o Windows Server 2003, o Framework .NET automaticamente instalado. Ao instalar o SQL Server 2005, o Frame-
work .NET ser atualizado, caso a verso atual seja mais antiga do que a verso do Framework .NET que faz parte do SQL Server 2005.
Com o Windows Server 2003, o Framework .NET faz parte do sistema operacional. Ele j instalado
por padro, durante a instalao do Windows Server 2003. Voc poder configurar algumas opes do
Framework .NET, usando uma das seguintes ferramentas:
Start -> Administrative Tools -> Microsoft .NET Framework 1.1 Configuration
Start -> Administrative Tools -> Microsoft .NET Framework 1.1 Wizards.
A documentao do Framework .NET pode ser acessada no seguinte caminho:
C:\WINDOWS\Microsoft.NET\Framework\1033\Admim.chm
E na Internet voc encontra a documentao completa do Framework .NET, no endereo a seguir:
http://msdn.microsoft.com/library/en-us/dnanchor/html/netdevanchor.asp
Importante: Ao instalar o Visual Studio .NET, ser instalada a documentao completa do Framework .NET, localmente, sem necessidade de
acesso Internet. No Captulo 15 voc aprender a instalar o Visual Studio .NET 2005, passo a passo e a utiliz-lo para criar funes e
procedimentos que sero utilizados pelo SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8120000Curso Completo
DESENVOLVIMENTO EM: UMA RPIDA INTRODUO
TECNOLOGIA ASP.NET
PR-REQUISITOS
Configuraes bsicas do IIS e modelos de aplicaes Web.
METODOLOGIA
Apresentao da tecnologia ASP.NET.
TCNICA
Exemplos prticos, passo a passo.
Neste tpico apresentarei uma rpida introduo tecnologia ASP.NET. Mostrarei o que o ASP.NET e dois
exemplos bem simples. No prximo tpico, veremos mais alguns exemplos, avanados, sobre a conexo de
pginas ASP.NET, com Bancos de Dados SQL Server 2005. Os exemplos deste captulo sero colocados na
pasta C:\LivroSQL2005\Capitulo13. Para acompanhar os exemplos, basta voc criar a pasta Capitulo13,
dentro da pasta C:\LivroSQL2005, j criada no Captulo 11. Como ao pasta C:\LivroSQL2005\ j um
diretrio virtual do IIS (configurao esta que foi feita no Captulo 11), a criar uma pasta Capitulo13,
dentro da pasta C:\LivroSQL2005\Capitulo13, a pasta Capitulo13 j passa a estar acessvel a partir do
seguinte endereo: http://localhost/livrosql2005/capitulo13. Se voc criar um pgina teste.aspx, dentro da
pasta Capitulo13, para acess-la, basta usar o seguinte endereo: http://localhost/livrosql2005/capitulo13/
teste.aspx. Os exemplos que utilizarei neste tpico. sero todos salvos na pasta Capitulo13.
MAIS UMA VERSO DE ASP
ASP, ASP 2.0, ASP 3.0 e agora ASP.NET.
Menos de dois anos aps o lanamento do ASP 3.0, o qual faz parte do IIS 5.0 que instalado com o
Windows 2000 Server e tambm tem suporte no IIS 6.0, a Microsoft lana mais uma verso da tecnologia
ASP Active Server Pages. Na verdade no apenas o lanamento de mais uma verso. O ASP.NET est
inserido em um contexto maior, que a iniciativa .NET da Microsoft, mais conhecida como Frame-
work .NET, tecnologia esta que foi detalhadamente descrita neste captulo. Alm de estar inserido no
contexto do .NET, a tecnologia ASP.NET apresenta enormes diferenas em relao ao ASP 3.0, o que
no permite que a caracterizemos simplesmente como um upgrade do ASP 3.0.
A tecnologia ASP.NET segue os mesmos princpios do Framework .NET, cujo principal objetivo facilitar
o desenvolvimento de aplicaes. No caso especfico do ASP.NET, aplicaes Web. Com o uso do ASP.NET
as aplicaes Web passam a usufruir de todos os recursos do Framework .NET.
A tecnologia ASP teve uma enorme aceitao por parte da comunidade de desenvolvedores. Para
comprovar tal afirmao basta conferir o nmero de sites que utilizam ASP. Esta aceitao no se deve
somente fora de mercado da Microsoft, mas tambm facilidade de desenvolvimento propiciada
pela utilizao de ASP.
NOVIDADES E MELHORIAS DO ASP.NET
Neste item vamos apresentar as novidades e vantagens do ASP.NET. Mais do que uma simples
justificativa para uma nova verso, procuro demonstrar os benefcios de utilizarmos ASP.NET para a
criao de aplicaes WEB.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000813
N
O
T
A
FAZ PARTE DO FRAMEWORK .NET.
Pode parecer bvio, mas nunca demais salientar este aspecto. ASP.NET parte integrante do Frame-
work .NET, e desta maneira tem acesso a todos os benefcios da plataforma .NET da Microsoft (veja o
incio do captulo para detalhes sobre o Framework .NET).
Em uma pgina ASP.NET temos acesso a todas as classes da biblioteca de classes do Framework .NET
.NET Framework Class Library. Tambm temos acesso a um tipo comum de dados e a todos os benefcios
do Framework .NET. S estes benefcios j justificam uma migrao do ASP 3.0 para o ASP.NET.
SUPORTE A MLTIPLAS LINGUAGENS
Com as verses anteriores do ASP estvamos limitados praticamente a duas linguagens de script: VBScript
e JScript. Alm disso, por serem linguagens de script estas eram interpretadas, ou seja, ao carregar uma
pgina ASP, o IIS precisa ler linha por linha de cdigo, interpretar e executar.
Para detalhes sobre a criao de pginas ASP para acessar dados do SQL Server 2005, consulte o Captulo 11.
Com ASP.NET podemos utilizar qualquer linguagem que esteja habilitada para o Framework .NET.
Inicialmente so disponibilizadas as linguagens VB.NET, C# e Jscript.NET. Apesar do nome JScript, esta
e as demais linguagens so compiladas, o que significa que toda pgina ASP.NET compilada no
servidor, antes de ser executada e o seu resultado retornado para o cliente. A primeira vez que uma
pgina ASP.NET acessada, ela compilada em uma classe do Framework .NET. A verso compilada
mantida em cache no servidor, para melhorar o desempenho para os prximos acessos. Qualquer
alterao na pgina automaticamente detectada pelo Framework .NET; a pgina recompilada e a
verso em cache atualizada, fazendo com que o cliente tenha sempre acesso verso mais atualizada
da pgina. Se no houver mudanas, continuar sendo utilizada a verso que est no cache, o que
torna a carga da pgina muito mais rpida.
Alm disso diversas empresas de software j anunciaram que esto portando suas linguagens para que
sejam compatveis com o Framework .NET. Desta maneira voc poder utilizar, para a criao de pginas
ASP.NET, a linguagem com a qual est mais familiarizado, desde que ela esteja habilitada ao .NET. Voc
prefere Delphi? Sem problemas. f do COBOL? Por que no?
MENOS CDIGO PARA MAIS TRABALHO
Com o ASP.NET temos acesso a uma srie de facilidades que diminuem a quantidade de cdigo que o
programador precisa escrever, principalmente no trato com funes bsicas. Estas funes bsicas,
como a manuteno de estado entre chamadas de uma pgina, so responsabilidade do Framework
.NET. Isso faz com que o programador tenha que desenvolver apenas a lgica da aplicao, sem ter que
se preocupar com aspectos bsicos da infra-estrutura necessria ao funcionamento da aplicao Web.
Uma srie de controles mais inteligentes e com melhores funcionalidades foi criada, os chamados
Server controls. Estes controles fornecem grande funcionalidade com um mnimo de programao.
Alguns artigos fazem referncia a inteligncia dos Server controls. Um dos aspectos considerados
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8140000Curso Completo
N
O
T
A
inteligentes que, no momento da carga da pgina, o controle detecta, por exemplo, se o navegador
do cliente o Internet Explorer ou o Netscape Navigator e adapta o seu comportamento e exibio de
acordo com o navegador do cliente.
Com ASP tarefas simples, como por exemplo validar os dados digitados em um formulrio, exigem a
criao de cdigo especfico. Com os controles inteligentes do ASP.NET, fazer a validao
simplesmente questo de configurar algumas propriedades do controle e pronto, a verificao ser
feita no momento em que a pgina for acessada.
Para um estudo completo sobre os novos controles do ASP.NET, consulte o seguinte e-book de minha autoria: Programao ASP.NET Com
C#, disponvel para venda em http://www.juliobattisti.com.br/ebooksdoautor
SEPARAO ENTRE O CDIGO HTML E O CDIGO ASP
Esta uma das melhorias que eu mais aprecio. Com ASP 3.0 ou verses anteriores, ns tnhamos uma
mistura (literalmente) entre o cdigo ASP e o cdigo HTML, o que torna o cdigo de difcil leitura e
documentao. Apenas para exemplificar, vamos apresentar uma pgina ASP que faz conexo com um
Banco de Dados do Microsoft Access e exibe todos os registros de uma determinada tabela do Banco de
Dados. Os registros so exibidos na forma de uma tabela. O cdigo HTML para a criao da tabela, que
ser exibida para o usurio, gerado a partir de uma mescla entre cdigo ASP e cdigo HTML.
Na Listagem 13.3 temos um exemplo de pgina ASP que faz conexo com um Banco de Dados do
Microsoft Access. Para detalhes sobre os comandos deste exemplo, consulte o Captulo 11.
Listagem 13.3 Uma pgina ASP cdigo ASP e HTML misturado.
<%@ Language=VBScript %>
<HTML>
<HEAD>
<TITLE>Listagem de Clientes</TITLE>
</HEAD>
<BODY>
<H1>
<FONT color=navy>Clientes da Empresa ABC LTDA.</FONT>
</H1>
<%
O Primeiro passo criar a conexo com o Banco de dados
Para isto crio um objeto do tipo Connection
Cria um Objeto do Tipo ADODB.Connection
Set conn = Server.CreateObject(ADODB.Connection)
Agora abro uma conexo utilizando OLE-DB
O cdigo a seguir aparece em duas linhas por questo de espao, porm o cdigo
deve ser digitado em uma nica linha.
conn.Open PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=c:\meus documentos\nwind.mdb
O prximo passo criar uma instruo SQL
a qual utilizada para criar a listagem de Clientes.
O cdigo a seguir aparece em duas linhas por questo de espao, porm o cdigo
deve ser digitado em uma nica linha.
inst_sql=SELECT Clientes.CodigoCliente, Clientes.Cargo, Clientes.Endereco,Clientes.Fone FROM
Clientes
Esta instruo SQL retorna os campos CodigoCliente, Cargo,
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000815
Endereco e Fone, da tabela Clientes.
Agora criamos um Objeto RecordSet.
Este Objeto ir executar a instruo SQL e
receber o resultado da Consulta.
Set Clientes = Server.CreateObject(ADODB.Recordset)
Agora executamos a Instruo SQL
retornando os registros da tabela Clientes.
Clientes.Open inst_sql, conn, 3, 3
Neste ponto j tenho todos os registros retornados
pela instruo SQL. Estes registros esto armazenados
no objeto Clientes, que um objeto do tipo Recordset.
Agora passo a montar a pgina que ser retornada para o
Navegador do Cliente. Vamos montar uma tabela com o
resultado da consulta.
%>
<P>
<HR>
<TABLE bgColor=gray border=1 borderColor=navy cellPadding=1 cellSpacing=1
width=100%>
<TR>
<TD align=middle bgColor=gray>Cdigo</TD>
<TD align=middle bgColor=gray>Cargo</TD>
<TD align=middle bgColor=gray>Endereo</TD>
<TD align=middle bgColor=gray>Fone</TD>
</TR>
<%
Inicio um Loop para percorrer todos os registros
do RecordSet Clientes, exibindo um Registro em
cada Linha da tabela.
Do Until Clientes.eof %>
<TR>
<TD align=middle bgColor=gray><%=Clientes.Fields(CodigoCliente)%></TD>
<TD align=middle bgColor=gray><%=Clientes.Fields(Cargo)%></TD>
<TD align=middle bgColor=gray><%=Clientes.Fields(Endereco)%></TD>
<TD align=middle bgColor=gray><%=Clientes.Fields(Fone)%></TD>
</TR>
<%
Clientes.MoveNext
loop %>
</TABLE>
</P>
<HR>
</BODY>
</HTML>
Na Figura 13.23 temos esta pgina carregada no IE Internet Explorer.
Observe que, por mais organizados que sejamos, inserindo comentrios e endentaes no cdigo, no
nada fcil a leitura e interpretao de uma pgina ASP. Isso acontece devido, principalmente,
intercalao de cdigo ASP e cdigo HTML. Em uma mesma pgina ASP posso ter vrias sees de
cdigo ASP. Cada seo inicia com <% e encerra com %>. Tudo o que no estiver entre estes dois
marcadores cdigo HTML.
J com ASP.NET isto no acontece. A parte de apresentao da pgina separada da parte de
processamento, isto , da parte onde est o cdigo responsvel pela lgica de processamento
da pgina. Com isto estamos separando a lgica da apresentao, o que facilita a manuteno
das pginas.
Na Listagem 13.4 temos o exemplo de uma pgina ASP.NET que faz a separao entre o cdigo
responsvel pela conexo com o Banco de Dados e retorno dos dados (lgica) e o cdigo responsvel
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8160000Curso Completo
por exibir os dados (apresentao). Na parte final deste captulo, voc aprender mais detalhes sobre os
comandos e objetos do ASP.NET, utilizados para conexo com dados do SQL Server 2005.
Figura 13.23 Pgina ASP de exemplo.
Listagem 13.4 O segundo exemplo: conectando com o Banco de Dados pubs, de uma instncia do SQL Server 2005, usando ASP.NET
<%@ Import Namespace=System.Data %>
<%@ Import Namespace=System.Data.SqlClient %>
<html>
<script language=C# runat=server>
protected void Page_Load(Object Src, EventArgs E )
{
// Crio uma conexo com o Banco de Dados pubs localizado no servidor local.
// Vamos acessar a instncia SERVIDOR\SQL2005.
SqlConnection myConnection = new SqlConnection(server=SERVIDOR\\SQL2005; +
uid=sa;pwd=abc123;database=pubs);
// Conectamos com o Banco de Dados utilizando um comando SQL,
// o qual retorna todos os dados da tabela Authors, do banco de
// dados pubs.
SqlDataAdapter myCommand = new SqlDataAdapter(SELECT * FROM Authors; myConnection);
// Criamos e preenchemos um objeto DataSet.
// Observe que no temos mais o objeto Recordset,
// como era de praxe com o ASP 3.0.
DataSet ds = new DataSet();
myCommand.Fill(ds);
// Conectamos um controle DataGrid com o DataSet criado anteriormente.
// MyDataGrid o id (nome) de um controle do tipo
// DataGrid que est na seo de apresentao da pgina.
DataView source = new DataView(ds.Tables[0]);
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000817
MyDataGrid.DataSource = source ;
MyDataGrid.DataBind();
}
</script>
<body>
<% Exibe as informaes do DataGrid no corpo da pgina. %>
<h3><font face=Verdana>Registros da tabela Authors!</font></h3>
<% Os registros da tabela Authors so exibidos no DataGrid. %>
<ASP:DataGrid id=MyDataGrid runat=server
Width=700"
BackColor=#ccccff
BorderColor=black
ShowFooter=false
CellPadding=3
CellSpacing=0"
Font-Name=Verdana
Font-Size=8pt
HeaderStyle-BackColor=#aaaadd
MaintainState=false
/>
</body>
</html>
Ao carregarmos esta pgina no Internet Explorer obtemos o resultado indicado na Figura 13.24:
Figura 13.24 A pgina ASP.NET da Listagem 2 carregada no IE.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8180000Curso Completo
Observe a separao entre a seo de cdigo e a seo de apresentao, conforme detalharemos a seguir.
Alguns comentrios sobre o exemplo, sem entrar em maiores detalhes sobre o cdigo do exemplo.
Cad o meu objeto RecordSet usado no ASP?
Nada de objetos do tipo RecordSet. Com ASP.NET utilizamos ADO.NET para fazer a conexo com
Banco de Dados. ADO.NET utiliza o objeto Dataset ao invs do objeto RecordSet. Para a conexo com
Bancos de Dados utilizamos uma srie de classes do namespace System.Data, o qual faz parte do .NET
Framework Class Library.
Para ter acesso s classes de um determinado namespace, precisamos adicionar uma referncia ao
namespace, no incio da pgina ASP.NET, utilizando a diretiva Import, conforme indicado no trecho
de cdigo a seguir:
<%@ Import Namespace=System.Data %>
<%@ Import Namespace=System.Data.SqlClient %>
Observe que estamos fazendo referncia a dois namespaces: System.Data e
System.Data.SqlCliente.
Conectando com o Banco de Dados.
Na seo de cdigo da pgina temos os comandos para conexo com o Banco de Dados pubs da
instncia SERVIDOR\SQL2005 de um servidor com o SQL Server 2005. Um detalhe importante a
maneira como informamos o nome da instncia, conforme indicado pelo trecho de cdigo a seguir:
SqlConnection myConnection = new SqlConnection(server=SERVIDOR\\SQL2005; +
uid=sa;pwd=abc123;database=pubs);
Observe que utilizamos duas barras invertidas ao invs de uma nica barra. Isto necessrio porque a
barra invertida considerada um caractere de escape com significado especial para a linguagem C#
utilizada no exemplo da Listagem 2. Quando, ao invs do caractere de escape, queremos que o C# o
entenda como um caractere normal, temos que preced-lo de uma barra invertida. Na prtica as duas
barras invertidas so interpretadas, pelo C#, como uma nica barra, o que produz o resultado desejado:
SERVIDOR\NETSDK.
Neste exemplo utilizamos as seguintes classes do namespace System.Data.SqlClient:
1. SqlConnection
2. SqlDataAdapter
Tambm utilizamos as seguintes classes do namespace System.Data:
1. DataSet
2. DataView
Um controle poderoso para exibir os dados:
Na seo de apresentao utilizamos o controle DataGrid para fazer a exibio dos registros da tabela
Authors. Observe o quo poderoso este controle. Simplesmente atravs da configurao da sua
propriedade DataSource, na seo de cdigo, definimos os registros a serem exibidos pelo controle.
Esta definio feita nas seguintes linhas de cdigo:
MyDataGrid.DataSource = source ;
MyDataGrid.DataBind();
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000819
Veja que no precisamos utilizar um lao While para percorrer todos os registros da tabela Authors,
como tnhamos que fazer com o objeto RecordSet usando ASP, como no exemplo da Listagem 1.
Posso ter um comando que ultrapassa uma linha?
A resposta um sonoro Sim.
Diferente do ASP 3.0, em nossas pginas ASP.NET, os comandos da seo de cdigo podem estar em
mais do que uma linha, sem problemas. Inclusive na Listagem 2 temos comandos que ultrapassam
uma linha e a pgina carrega sem maiores problemas, conforme exemplificado no trecho a seguir:
SqlDataAdapter myCommand = new SqlDataAdapter(SELECT +
* FROM Authors; myConnection);
Isso possvel pois cada comando do C# finalizado com um ponto-e-vrgula (;).
O bom e velho SQL continua o mesmo?
A resposta outro sonoro Sim.
Voc deve ter observado que utilizamos um comando SQL para retornar os dados da tabela authors.
Utilizamos um comando SELECT, conforme indicado a seguir:
SqlConnection myConnection = new SqlConnection(server=SERVIDOR\\SQL2005; +
uid=sa;pwd=abc123;database=pubs);
Vamos alterar o comando SQL para introduzir uma condio. Queremos que sejam retornados somente
os registros para os autores em que a cidade (city) Oakland. Para isso basta que seja utilizada uma
clusula where para especificar a condio city=Oakland, conforme indicado a seguir:
SqlDataAdapter myCommand = new SqlDataAdapter(SELECT +
* FROM Authors where city=Oakland; myConnection);
Fazendo esta alterao obteremos o resultado indicado na Figura 13.25.
Figura 13.25 Definindo um critrio com a clusula where.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8200000Curso Completo
COMPATIBILIDADE COM QUALQUER NAVEGADOR
O resultado da execuo de uma pgina ASP.NET cdigo HTML retornado para o cliente. Qualquer
navegador capaz de interpretar corretamente HTML, em tese. Na prtica o que acontece que existem
pequenas diferenas e at mesmo inconsistncias entre a maneira como o cdigo HTML interpretado.
Para minimizar este problema, o ASP.NET conta com os controles que rodam no servidor e so capazes
de fornecer diferente sadas, dependendo do navegador que fez a solicitao da pgina. Na prtica isto
significa que um controle da interface de uma pgina ASP.NET, que roda no servidor, capaz de gerar
diferentes sadas, dependendo do navegador do cliente. Esta caracterstica conhecida por AUI
Adaptative User Interface.
A EXTENSO DO ARQUIVO MUDOU .ASPX
A primeira diferena que notamos na extenso dos arquivos. As pginas ASP, desde a verso inicial
at a verso 3.0, tm a extenso .asp. Esta extenso obrigatria, para que o IIS reconhea a pgina
como uma pgina ASP e passe o processamento para o interpretador ASP (ASP.DLL). J as pginas
ASP.NET tm a extenso .aspx, a qual reconhecida pelo IIS (aps a instalao do Framework .NET). O
processamento da pgina ASP.NET passada para o controle do Framework .NET. O servio responsvel
pelo processamento das pginas ASP.NET est contido na DLL XSPISAPI.DLL. No prximo tpico,
vamos estender um pouco mais o nosso estudo sobre a conexo de pginas ASP.NET com Bancos de
Dados do SQL Server 2005.
UM VISO GERAL DO ACESSO A DADOS
Existe uma frase que resume bem a necessidade de acesso a dados: A informao certa, para a pessoa
certa, na quantidade certa e no momento certo.
Esta frase apresenta alguns aspectos importantes:
A informao certa: A informao deve estar correta, isto , deve ser confivel. A informao
utilizada para a tomada de decises, nos mais variados nveis de uma empresa. Se a informao
estiver incorreta, as decises sero equivocadas e no iro gerar os resultados esperados. Pior
do que no ter a informao ter informao incorreta, no confivel.
Para a pessoa certa: Independente do nvel hierrquico, quer seja o operrio da fbrica ou o
presidente da empresa, todos precisam de informao para trabalhar e alcanar os resultados
desejados. A informao correta precisa estar disposio para as pessoas que dela necessitam.
Na quantidade certa: Informao demais tambm um problema e pode atrapalhar ao invs
de ajudar. E hoje as informaes vm das mais diversas fontes. Internet, e-mail, relatrios,
Banco de Dados da empresa, arquivos do Office, jornais, revistas, livros, manuais tcnicos.
Precisamos garimpar as informaes que realmente so necessrias ao nosso trabalho.
No momento certo: Este um aspecto fundamental. Lembro-me da poca em que somente
tnhamos o mainframe e um bando de terminais espalhados pela empresa. Voc
solicitava um novo relatrio para a turma do CPD. Duas semanas depois vinha o relatrio.
Hoje, evidentemente, esta situao inaceitvel. Precisamos da informao instantnea,
sempre disposio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000821
Figura 13.26 Dados de mltiplas e heterogneas fontes.
Alm de mltiplas fontes de dados, temos diferentes formatos de dados. Evidentemente que a
estrutura de um arquivo de mensagens de correio muito diferente da estrutura de uma planilha
do Excel, por exemplo.
Para que possamos criar aplicaes que acessam dados de diversas fontes, precisamos de tecnologias
capazes de acessar dados de fontes to diversas como o mainframe e um documento do Microsoft
Word ou uma planilha do Microsoft Excel. O Framework .NET fornece, principalmente atravs do
namespace System.Data, uma srie de classes para conexo e manipulao de dados dos mais variados
formatos. Este conjunto de classes tambm conhecido como ADO.NET.
A seguir vamos estudar as classes que do acesso a fontes de dados estruturadas, que seguem o modelo
de dados relacionais. Podemos citar como exemplos de Bancos de Dados relacionais o Microsoft Ac-
cess, o SQL Server 2000, o ORACLE, o DB2 da IBM, etc.
Quando as empresas comearam a descentralizar seus ambientes computacionais, passando do modelo
Mainframe/Terminal para um modelo Cliente/Servidor com redes locais, novas possibilidades, e tambm
problemas, comearam a surgir. Bancos de dados departamentais no integrados, diferentes formatos
de dados, aplicaes Cliente/Servidor rodando em cada estao de trabalho, etc., o que fez com que a
informao ficasse distribuda por toda a empresa e no mais centralizada no mainframe.
Um ambiente descentralizado mais flexvel, mas em contrapartida mais difcil de gerenciar e de
manter o controle. medida que o volume de informaes comeou a crescer, ficou difcil ter acesso
aos dados de diferentes departamentos de uma maneira consistente e rpida. Na Figura 13.26 temos
uma pequena ilustrao deste ambiente:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8220000Curso Completo
N
O
T
A
N
O
T
A
Para maiores detalhes sobre o modelo de dados relacionais, consulte o Captulo 1.
QUAIS AS PRINCIPAIS DIFERENAS DO ADO.NET EM RELAO AO ADO?
Com ADO estabelecamos uma conexo com uma fonte de dados e utilizvamos ou o mtodo Open
do Objeto Connection ou um objeto do tipo Command, para executar um comando SQL e retornar
dados, no formato de uma tabela, para um objeto do tipo RecordSet. A caracterstica principal que
para trabalhar com os dados e fazer alteraes nos dados, precisamos estabelecer uma conexo com o
Banco de Dados.
Com ADO.NET temos um modelo de dados desconectado. O protocolo HTTP conhecido como
Connection Less. Ao solicitar uma pgina, estabelecida uma conexo com o servidor Web, os arquivos
e imagens necessrios so solicitados e enviados para o navegador do cliente e a conexo fechada,
por isso o Connection Less, pois no mantida uma conexo permanente entre o servidor Web e o
navegador do cliente. Esta natureza desconectada da Web causa alguns inconvenientes quando
desenvolvemos aplicaes de Banco de Dados.
ADO.NET resolve este problema, fornecendo uma srie de objetos que permitem que os dados, uma
vez carregados para o navegador do cliente, sejam manipulados, mesmo sem existir uma conexo
permanente com o Banco de Dados. Uma vez feitas as alteraes, incluses ou excluses necessrias,
podemos, facilmente, sincronizar os dados que esto no cliente com o Banco de Dados no servidor.
O principal objeto do modelo ADO, para trabalhar com dados, o objeto RecordSet. Para exibir os
dados de um objeto RecordSet, precisamos escrever uma boa quantia de cdigo. Com ADO.NET, o
principal objeto, que funciona como um container para dados, o DataSet, o qual pode conter uma ou
mais tabelas (o objeto RecordSet somente pode conter uma tabela) e tambm os relacionamentos entre
as tabelas e informaes sobre chaves primrias e chaves estrangeiras.
Com o modelo desconectado do ADO.NET, no utilizamos cursores, nem no lado cliente, nem no
lado servidor. As classes de acesso a dados fornecem os mecanismos necessrios para a manipulao
dos dados. O formato adotado para armazenar os dados no cliente o XML, um padro amplamente
aceito e utilizado pela indstria de TI. Com ADO, ao utilizar tecnologias como RDS para trabalhar com
dados desconectados, temos um formato proprietrio para os dados, formato este que somente aceito
pelo Internet Explorer.
Para maiores informaes sobre Tabelas, Atributos, Chaves Primrias, Chaves Estrangeiras e Relacionamentos entre tabelas, consulte o
Captulo 1, no tpico sobre os Fundamentos do Modelo Relacional de Dados.
Neste tpico vamos aprender a utilizar alguns objetos bsicos para o acesso a dados relacionais, mais
especificamente a dados do SQL Server. Veremos como estabelecer uma conexo com o Banco de
Dados, acessar dados de uma ou mais tabelas e exibir estes dados em uma pgina ASP.NET.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000823
N
O
T
A
Para exibio dos resultados obtidos, vamos utilizar o Web Server Control DataGrid. Estudaremos
este controle em detalhes. Veremos que o controle DataGrid facilita, enormemente, a tarefa de exibir
dados em uma pgina ASP.NET. No nosso exemplo mais simples, apresentado no tpico anterior,
vimos que o que no ASP 3.0 exige vrias linhas de cdigo, no ASP.NET, com o controle DataGrid, pode
ser feito em uma nica linha de cdigo.
BANCOS DE DADOS UTILIZADOS NOS EXEMPLOS
Para os exemplos deste tpico, utilizarei o Banco de Dados Pubs, da instncia SERVIDOR\SQL2005 do
SQL Server 2005. Conforme j descrevi em captulos anteriores, o Banco de Dados Pubs no fornecido
com o SQL Server 2005. Para trabalhar com este Banco de Dados, ns importamos o Banco de Dados
Pubs, de uma instncia do SQL Server 2000 para a instncia SERVIDOR\SQL2005. Para isso, usamos o
DTS Import/Export Wizard, o qual foi, detalhadamente, explicado e exemplificado nos Captulos 7 e 10.
O BANCO DE DADOS DO SQL SERVER PUBS
Importante: Os nomes de empresas, produtos, pessoas, personagens e/ou dados apresentados neste Banco de Dados so fictcios e no
representam de forma alguma qualquer indivduo, produto, empresa ou evento, salvo meno contrria.
Os nomes de tabelas e campos do Banco de Dados pubs esto em ingls.
As principais tabelas deste Banco de Dados so as seguintes:
authors (autores)
discounts (descontos)
employee (funcionrios, empregados)
jobs (funes, cargos)
publishers (editoras)
sales (vendas)
stores (lojas, livrarias)
titles (livros, ttulos)
titleauthor (relaciona os livros de cada autor)
O Banco de Dados pubs utilizado por uma rede de livrarias, para o controle de vendas e pesquisa dos
ttulos existentes no catlogo da livraria.
Na Figura 13.27 temos o diagrama Entidades x Relacionamentos para este Banco de Dados:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8240000Curso Completo
N
O
T
A
Figura 13.27 O diagrama Entidades x Relacionamentos do Banco de Dados pubs.
Os campos indicados por uma pequena chave amarela so campos do tipo chave primria. Os campos indicados pelo sinal de infinito (um 8 deitado) so
campos do tipo chave estrangeira. Para detalhes sobre os conceitos de chave primria e chave estrangeira, consulte o Captulo 1.
UMA INTRODUO AO ADO.NET
Agora vamos iniciar o estudo das principais classes para acesso a dados. O conjunto destas classes
conhecido como ADO.NET. As classes que iremos estudar fazem parte dos seguintes namespaces da
biblioteca de classes do Framework .NET:
System.Data: Contm as principais classes utilizadas para acessar bases de dados relacionais. A
classe DataSet faz parte deste namespace.
System.Data.SqlClient: Classes utilizadas para acessar Bancos de Dados do SQL Server 2000 e
do SQL Server 2005. As classes deste namespace fornecem melhor desempenho para acesso ao
SQL Server, pois utilizam a interface TDS Tabular Data Stream, nativa do SQL Server.
System.Data.Common: Contm as classes onde so definidas as propriedades e mtodos
bsicos, herdados por classes de outros namespaces.
System.Data.OleDb: Neste namespace encontramos as classes para acesso a fontes de dados,
via OLE-DB Providers.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000825
No ASP 3.0, utilizando ADO, o objeto que utilizamos para retornar dados o RecordSet. No ADO.NET
no temos o objeto RecordSet. De incio voc que j estava acostumado com o objeto RecordSet pode
estranhar um pouco, mas, conforme veremos nos exemplos deste tpico, os objetos do ADO.NET alm
de mais poderosos so tambm mais fceis de utilizar. A principal facilidade notada no momento de
exibir os resultados obtidos, quando podemos utilizar alguns Web Server Controls bastante poderosos,
mais especificamente o controle DataGrid.
INFORMANDO QUE VOC DESEJA UTILIZAR CLASSES DE UM DETERMINADO NAMESPACE
Para que possamos utilizar classes de um destes namespaces precisamos, explicitamente, fazer referncia
a eles no incio da pgina ASP.NET. O que eu chamei de fazer referncia chamado pelo Framework
.NET de importar um namespace.
Temos duas maneiras diferentes para importar (ou fazer referncia, como preferirem) um namespace,
em uma pgina ASP.NET.
1. Utilizando a diretiva @Import, no incio da pgina. No fragmento de cdigo a seguir, estamos
importando os namespaces System.Data, System.Data.SqlClient e System.OleDb:
<%@Import Namespace=System.Data %>
<%@Import Namespace=System.Data.SqlClient %>
<%@Import Namespace=System.Data..OleDb%>
2. Utilizando o comando using do C#. No fragmento de cdigo a seguir, estamos importando os
namespaces System.Data e System.Data.SqlClient:
using System.Data;
using System.Data.Sqlclient;
Uma vez feitas as devidas importaes (ou referncias), estamos aptos a utilizar as classes dos namespaces
referenciados.
CLASSE OU OBJETO; OBJETO OU CLASSE?
Muitas vezes os termos classe e objeto so utilizados, indiscriminadamente, com o mesmo sentido.
Vamos fazer uma definio formal para estes termos, atravs de um exemplo:
No namespace System.Data existe uma classe chamada DataSet. Quando declaramos e inicializamos
uma varivel, como sendo do tipo DataSet, estamos criando um objeto baseado na classe DataSet. No
trecho de cdigo a seguir, temos um exemplo onde criamos um objeto chamado MeusDados, o qual
baseado na classe DataSet:
DataSet MeusDados = new DataSet( );
ESTABELECENDO CONEXES
Uma coisa no mudou no ADO.NET, em relao ao ADO: o primeiro passo estabelecer uma conexo
com o Banco de Dados. Embora com ADO.NET tenhamos um modelo desconectado, conforme descrito
anteriormente, o primeiro passo fazer uma conexo com o Banco de Dados. Uma vez estabelecida a
conexo, obtemos os dados desejados e podemos trabalhar com estes dados diretamente no navegador,
desconectados do Banco de Dados. Uma vez feitas as alteraes necessrias, sincronizamos os dados
com o Banco de Dados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8260000Curso Completo
Para estabelecer uma conexo com um Banco de Dados do SQL Server, devemos utilizar,
preferencialmente, a classe SqlConnection, do namespace System.Data.SqlClient.
Para acessar um Banco de Dados utilizando o OLE-DB Provider correspondente, utilizamos a classe
OleDbConnection do namespace System.Data.OleDb. Como existe um OLE-DB Provider para o SQL
Server, tambm poderamos utilizar a classe OleDbConnection para fazer uma conexo com o SQL
Server, porm a classe SqlConnection bem mais eficiente, em termos de desempenho, pois foi
especificamente projetada para trabalhar com o SQL Server 2000, assim como foram todas as classes do
namespace System.Data.SqlClient.
Vamos estudar estas duas classes.
ESTABELECENDO UMA CONEXO COM O SQL SERVER 2000 OU SQL SERVER 2005 SQLCONNECTION
A classe SqlConnection faz parte do namespace System.Data.SqlClient. Esta classe utilizada para
estabelecer uma conexo com um servidor SQL Server. Diferente do que acontecia com ADO, no
podemos executar um comando SQL, utilizando a classe SqlConnection. Ainda neste tpico estudaremos
as classes utilizadas para executar comandos em um Banco de Dados.
A seguir temos um exemplo de criao de um objeto do tipo SqlConnection:
SqlConnection MinhaConeco = new SqlConnection(server=SERVIDOR\\SQL2005; +
uid=sa;pwd=senhadosa;database=pubs);
O parmetro passado uma string que contm as informaes necessrias para estabelecer a conexo
com o Banco de Dados. No tpico anterior voc j viu uma pequena demonstrao do uso do objeto
SqlConnection.
Na Tabela 13.1 temos uma descrio das principais propriedades da classe SqlConnection:
Propriedade Descrio
ConnectionString utilizada para definir ou retornar uma string de texto onde so informados os diversos parmetros
para estabelecer a conexo, como por exemplo o nome do servidor, a instncia, o nome do banco de
dados, o nome de login e senha.
ConnectionTimeOut Define por quanto tempo feita a tentativa de estabelecer a conexo. Aps o tempo definido nesta
propriedade, a tentativa cancelada e um erro gerado.
Database utilizada para definir ou retornar o nome do banco de dados que ser utilizado quando a conexo for
estabelecida.
DataSource Retorna o nome da instncia do SQL Server com a qual foi estabelecida uma conexo.
ServerVersion Retorna uma string informando a verso do servidor SQL Server com o qual a conexo foi estabelecida.
State Retorna o estado atual da conexo.
Tabela 13.1 Principais propriedades da classe SqlConnection.
Vamos apresentar um pequeno exemplo, onde criamos uma conexo com o Banco de Dados pubs da
instncia SERVIDOR\SQL2005 (conforme descrito anteriormente). Uma vez estabelecida a conexo, vamos
exibir as propriedades desta conexo em um Web Server Control do tipo TextArea. Vamos utilizar o
evento Page_Load, da pgina ASP.NET, para estabelecer a conexo com o Banco de Dados pubs.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000827
Na Listagem 13.5 temos o cdigo para o exemplo proposto.
Listagem 13.5 A classe SqlConnection.
<%@ Import Namespace=System.Data %>
<%@ Import Namespace=System.Data.SqlClient %>
<html>
<script language=C# runat=server>
protected void Page_Load(Object Src, EventArgs E )
{
// Crio uma conexo com o Banco de Dados pubs localizado no servidor local.
// Vamos acessar a instncia SERVIDOR\SQL2005.
SqlConnection MinhaConexo = new
SqlConnection(server=SERVIDOR\\SQL2005;uid=sa;pwd=senha;database=pubs);
// Declaro uma varivel do tipo String: auxPropriedades.
// A varivel auxPropriedades ir conter o valor das propriedades
// da conexo minhaConexo.
String auxPropriedades;
auxPropriedades = Propriedades da conexo:;
auxPropriedades = auxPropriedades + \n\n + ConnectionString: +
MinhaConexo.ConnectionString.ToString();
auxPropriedades = auxPropriedades + \n\n + Database: +
MinhaConexo.Database.ToString();
auxPropriedades = auxPropriedades + \n\n + DataSource: +
MinhaConexo.DataSource.ToString();
auxPropriedades = auxPropriedades + \n\n + State: +
MinhaConexo.State.ToString();
ExibePropriedades.Font.Bold=true;
ExibePropriedades.Text=auxPropriedades;
}
</script>
<body>
<h3><font face=Verdana>Classe SqlConnection!!!</font></h3>
<asp:TextBox
runat=server
id=ExibePropriedades
Text=
Rows=10"
Cols=70"
Font_Face=Arial Font_Size=3"
BackColor=lightblue
TextMode=MultiLine
/>
</body>
</html>
Ao carregar a pgina voc ir obter uma pgina semelhante pgina indicada na Figura 13.28:
Comentrios sobre o cdigo do exemplo:
Observe que a primeira coisa que fizemos foi referenciar os namespaces System.Data e
System.Data.SqlClient:
<%@ Import Namespace=System.Data %>
<%@ Import Namespace=System.Data.SqlClient %>
Se no fizssemos essa referncia, obteramos um erro de compilao, ao carregar a pgina, conforme
indicado na Figura 13.29.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8280000Curso Completo
Figura 13.29 Erro por no referenciar os namespaces necessrios.
Figura 13.28 A classe SqlConnection.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000829
Mtodo Descrio
Open Abre a conexo de acordo com as definies da propriedade ConnectionString.
Close Fecha a conexo com o banco de dados.
ChangeDatabase Altera o banco de dados associado com a conexo.
Tabela 13.2 Principais mtodos da classe SqlConnection.
Observe o texto em destaque, onde dito que no foi possvel encontrar SqlConnection. Isto
acontece porque esta classe faz parte do namespace System.Data.SqlClient, o qual no foi
referenciado na pgina ASP.NET.
Em seguida criamos um varivel MinhaConexo, baseada na classe SqlConnection:
SqlConnection MinhaConexo = new
SqlConnection(server=SERVIDOR\\SQL2005;uid=sa;pwd=senha;database=pubs);
Observe que este um comando nico, que foi dividido em duas linhas por falta de espao. No ASP.NET,
um nico comando pode ser dividido em duas ou mais linhas, o que no era possvel no ASP 3.0.
Declaramos a varivel MinhaConexo como sendo do tipo SqlConnection, ao mesmo tempo que
inicializamos esta varivel, passando como parmetro uma string de conexo. Na string passada como
parmetro so definidas as seguintes informaes:
Nome da instncia do SQL Server: SERVIDOR\SQL2005.
Nome do usurio: uid=sa.
Senha: pwd=senha,
Banco de dados para fazer a conexo: database=pubs.
importante salientar que o objeto do tipo SqlConnection foi criado, porm ainda no foi estabelecida
a conexo, conforme pode ser confirmado pelo valor da propriedade State=Closed, na Figura 13.29,
exibida anteriormente.
No restante do evento Load, montamos uma string (auxPropriedades), onde vamos
concatenando o nome e o valor das propriedades do objeto MinhaConexo. Observe que
anexamos dois caracteres de nova linha - \n\n. Isso feito para ir para uma nova linha a
cada propriedade (um \n) e para deixar uma linha em branco entre a exibio de cada
propriedade (mais um \n).
Aps termos montado a string auxPropriedades, definimos a fonte do controle ExibePropriedades para
negrito e atribumos o valor da varivel auxPropriedades propriedade Text do controle
ExibePropriedades, conforme indicado no fragmento a seguir:
ExibePropriedades.Font.Bold=true;
ExibePropriedades.Text=auxPropriedades;
O controle ExibePropriedades um Web Server Control do tipo TextBox com mltiplas linhas.
Para maiores informaes sobre este controle, consulte o Captulo 9 do e-book: Programao
ASP.NET com C#, 803 pginas, de minha autoria, o qual pode ser adquirido em http://
www.juliobattisti.com.br/ebooksdoautor
Na Tabela 13.2 temos uma descrio dos principais mtodos da classe SqlConnection:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8300000Curso Completo
Figura 13.30 Utilizando o mtodo Open da classe SqlConnection.
UMA VISO GERAL DO PROCESSO DE ACESSO A DADOS
Existem muitas maneiras de estabelecer uma conexo com uma fonte de dados, retornar um conjunto
de dados e exibir estes dados em uma pgina ASP.NET.
O principal evento do objeto SqlConnection o evento StateChange. Este evento ocorre quando o
estado da conexo alterado de Open para Closed ou vice-versa.
No exemplo anterior, podemos adicionar o seguinte comando, logo aps a criao da conexo
MinhaConexo:
MinhaConexo.Open();
Este comando abre a conexo MinhaConexo. Aps inserirmos este comando e recarregarmos a pgina,
obteremos o resultado indicado na Figura 13.30.
Muito bem, j sabemos estabelecer uma conexo com um Banco de Dados. E agora? Ainda precisamos
aprender como se fazer as seguintes operaes:
Definir um comando para ser executado no Banco de Dados.
Retornar dados de uma ou mais tabelas.
Retornar informaes sobre os relacionamentos entre as tabelas.
Exibir os resultados obtidos.
Nos prximos tpicos aprenderemos a realizar estas operaes.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000831
Estaremos utilizando a seguinte abordagem:
Criar uma conexo com uma fonte de dados utilizando SqlConnection.
Definir um comando SQL a ser executado no Banco de Dados. O comando definido utilizando
um objeto do tipo SqlDataAdapter. O comando SQL define os dados que sero retornados a
partir do Banco de Dados. Tambm podemos utilizar um objeto SqlCommand. Uma opo
criar um objeto Command e depois a propriedade SelectCommand do objeto DataAdapter
como sendo igual ao objeto Command. Outra opo passar o comando SQL como parmetro
do objeto DataAdapter, o que faz com que no seja necessria a criao explcita de um objeto
Command. O objeto DataAdapter faz a ligao de um ou mais objetos do tipo Command com
um objeto do tipo DataSet. Por exemplo, podemos ligar vrios objetos Command com um
nico DataSet. Iremos detalhar todos estes aspectos nos exemplos que sero apresentados at o
final do captulo.
Utilizamos os dados retornados pelo(s) comando(s) SQL para popular um objeto do tipo DataSet.
Vamos utilizar um Web Server Control Datagrid, para exibir os dados associados ao objeto do
tipo DataSet.
Na Figura 13.31 temos uma viso geral deste processo.
DataSet
Pgina
ASP.NET que
exibe os
dados.
SQL Server
SqlConnection
SqlDataAdapter
DataGrid na pgina
ASP.NET
DataSet
Pgina
ASP.NET que
exibe os
dados.
OleDbConnection
OleDbDataAdapter
DataGrid na pgina
ASP.NET
Figura 13.31 Passos para acessar e exibir dados em uma pgina ASP.NET.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8320000Curso Completo
importante salientar que esta apenas uma das maneiras de acessarmos dados e exibi-los em uma
pgina ASP.NET.
CRIANDO OBJETOS COMMAND
Para criar objetos Command temos duas opes:
SqlCommand: Este objeto utilizado para definir um comando que ser executado atravs de
uma conexo do tipo SqlConnection.
OleDbCommand: Utilizado para definir um comando que ser executado atravs de uma
conexo do tipo OleDbConnection.
Conforme descrevemos no tpico anterior, podemos criar um objeto Command, no qual definimos
um comando SQL a ser executado atravs de uma conexo. As propriedades dos objetos SqlCommand
e OleDbCommand so semelhantes.
Na Tabela 13.3 temos uma descrio das principais propriedades das classes SqlCommand/
OleDbCommand:
Propriedade Descrio
CommandText Esta propriedade utilizada para definir ou retornar o comando SQL ou o nome de um stored procedure associado
com o comando.
CommandTimeOut Define por quanto tempo o Framework .NET tenta executar o comando. Se, no tempo definido por esta
propriedade, o comando no for executado com sucesso, o comando suspenso e uma mensagem de erro retornada.
CommandType Pode ser definida como Text, que o valor padro e significa que o valor atribudo propriedade CommandText
um comando SQL. Tambm pode assumir o valor StoredProcedure, neste caso significando que o valor atribudo
propriedade CommandText o nome de um stored procedure.
Connection Esta propriedade utilizado para definir ou retornar a conexo atravs da qual o comando executado.
Tabela 13.3 Principais propriedades das classes SqlCommand/OleDbCommand.
Na Tabela 13.4 temos uma descrio dos principais mtodos das classes SqlCommand/OleDbCommand:
Mtodo Descrio
Cancel Cancela a execuo do comando.
CreateParameter Utilizada para a criao e definio de parmetros. Podemos utilizar parmetros quando estamos
executando um Stored Procedure ou uma consulta parametrizada do Microsoft Access.
ExecuteNonQuery Executa o comando definido na propriedade CommandText, atravs da conexo definida na propriedade
Connection, para consultas que no retornam dados. Exemplo de consultas que no retornam dados so
consultas de atualizao, adio ou excluso. Este mtodo retorna um valor inteiro, valor este que indica
o nmero de registros afetadas pela execuo do comando.
Tabela 13.4 Principais mtodos das classes SqlCommand/OleDbCommand.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000833
RETORNANDO DADOS COM DATAADAPTER
Para criar objetos DataAdapter temos duas opes:
SqlDataAdapter: Este objeto utilizado para executar um ou mais comandos ou stored proce-
dures, em um Banco de Dados do SQL Server e associar os resultados obtidos com um objeto
do tipo DataSet.
OleDbDataAdapter: Utilizado para executar um ou mais comandos em uma fonte de dados,
utilizando o OLE-DB Provider respectivo, e associar os resultados obtidos com um objeto do
tipo DataSet.
Os objetos SqlDataAdapter/OleDbDataAdapter funcionam como uma ponte entre uma fonte de dados
e o objeto DataSet, tanto para acesso quanto para alteraes nos dados. Esta ponte pode ser estabelecida
de duas maneiras:
1. Atravs da utilizao do mtodo Fill do objeto DataAdapter, para retornar dados de uma fonte
de dados e colocar estes dados em um objeto DataSet.
2. Atravs da utilizao do mtodo Update do objeto DataAdapter, mtodo este que sincroniza os
dados da fonte de dados original, com as modificaes feitas nos dados do objeto DataSet.
Na Tabela 13.5 temos uma descrio das principais propriedades das classes SqlDataAdapter/
OleDbDataAdapter:
Propriedade TTAB= Descrio
DeleteCommand Utilizada para definir ou retornar um comando SQL para excluso de dados, normalmente
um comando DELETE.
InsertCommand Utilizada para definir ou retornar um comando SQL para insero de novos dados, normalmente um
comando INSERT.
SelectCommand Utilizada para definir ou retornar um comando SQL, utilizado para retornar dados, normalmente um
comando SELECT. Tambm podemos atribuir, a esta propriedade, um objeto Command previamente criado.
UpdateCommand Utilizada para definir ou retornar um comando SQL que atualiza dados. Normalmente um comando UPDATE.
Tabela 13.5 Principais propriedades das classes SqlDataAdapter/OleDbDataAdapter.
Na Tabela 13.6 temos uma descrio dos principais mtodos das classes SqlDataAdapter/
OleDbDataAdapter.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8340000Curso Completo
Na Tabela 13.7 temos uma descrio dos principais eventos das classes SqlDataAdapter/
OleDbDataAdapter.
Mtodo Descrio
Fill Com certeza o mtodo mais utilizado. Este mtodo executa o comando definido na propriedade SelectCommand.
Os dados retornados pela execuo do comando definido na propriedade SelectCommand so associados com um
objeto do tipo DataSet.
FillSchema Este mtodo retorna uma tabela em branco, isto , com zero registros, porm com a mesma estrutura da
tabela original. Na prtica o que este mtodo faz copiar a estrutura de uma tabela.
Update Com ASP.NET trabalhamos com um modelo de dados desconectados, conforme descrito no incio deste tpico. Uma
vez retornados os dados em um objeto do tipo DataSet, a conexo com o banco de dados fechada. Alteraes
podem ser feitas nos dados desconectados, porm estas alteraes precisam ser enviadas para o banco de dados,
quer seja o SQL Server, quer seja um arquivo .mdb do Microsoft Access. O mtodo Update utilizado para enviar
estas alteraes para o banco de dados. O mtodo executa os comandos InsertCommand, UpdateCommand e
DeleteCommand para cada insero, atualizao ou excluso, feitas nos dados desconectados, de tal forma que
estas alteraes sejam enviadas para a fonte de dados original. Em poucas palavras: sincroniza os dados do objeto
DataSet com o conjunto de dados originais, no servidor.
Tabela 13.6 Principais mtodos das classes SqlDataAdapter/OleDbDataAdapter.
Evento Descrio
FillError Ocorre quando um erro retornado durante a execuo do mtodo Fill.
RowUpdated Ocorre durante uma atualizao, aps o respectivo comando ter sido executado na fonte de dados original.
RowUpdating Ocorre durante uma atualizao, antes do respectivo comando ter sido executado na fonte de dados original.
Tabela 13.7 Principais eventos das classes SqlDataAdapter/OleDbDataAdapter.
O OBJETO DATASET
Os objetos SqlDataAdapter/OleDbDataAdapter, descritos no tpico anterior, so utilizados para executar
um comando SQL ou uma stored procedure, em um Banco de Dados e retornar um ou mais conjuntos
de dados. Precisamos de uma estrutura capaz de receber e manipular os dados retornados; esta estrutura
o objeto DataSet. O objeto DataSet derivado da classe DataSet, do namespace System.Data.
O objeto DataAdapter executa um comando atravs de uma conexo e retorna os dados para um
objeto DataSet. A conexo desfeita, pois o objeto DataSet fornece as funcionalidades necessrias para
acessarmos e manipularmos os dados, estando desconectados do servidor. Acessamos e alteramos os
dados conforme necessrio e depois as alteraes efetuadas so sincronizadas com o servidor.
DataSet , sem dvida, o principal objeto do ADO.NET, assim como o objeto RecordSet o principal
objeto do ADO.
Um objeto DataSet formado por uma coleo de objetos do tipo DataTable, os quais pertencem
coleo Tables. Para representar o relacionamento entre dois objetos do tipo DataTable, utilizamos um
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000835
objeto do tipo DataRelation. Por exemplo, podemos criar um DataSet que contm duas tabelas: Pedidos
e Clientes. A tabela Clientes relaciona-se com a tabela Pedidos, atravs de um relacionamento do tipo
um para vrios, ou seja, um cliente pode fazer vrios pedidos. Podemos representar este relacionamento
utilizando um objeto do tipo DataRelation.
Podemos garantir a integridade dos dados atravs da definio de campos do tipo Chave Primria
utilizando o objeto UniqueConstraint; e da definio de Chaves Estrangeiras utilizando o objeto
ForeignKeyConstraint.
O objeto DataSet l e grava dados e a estrutura dos dados no formato de documentos XML, os quais
podem ser enviados pela Internet via protocolo HTTP, o que facilita a troca de informaes com sistemas
de outras empresas, sistemas estes tambm habilitados ao XML.
Na Tabela 13.8 temos uma descrio das principais propriedades da classe DataSet:
Propriedade Descrio
DataSetName Utilizada para definir ou retornar o nome do DataSet.
EnforceConstraints Pode ser utilizada para definir ou retornar um valor True ou False. Se o valor desta propriedade for
True, as regras de integridade sero observadas em uma operao de atualizao. Por exemplo, se
alterarmos o cdigo do cliente em um pedido da tabela pedidos para 01010 e no existir o cliente com o
cdigo 01010 na tabela Clientes, a operao no ser realizada. Se o valor da propriedade
EnforceConstraints for False, a operao descrita no nosso exemplo ser realizada sem que nenhuma
verificao seja feita.
Relations Retorna uma coleo com todos os relacionamentos existentes entre as tabelas do DataSet.
Tables Retorna uma coleo com todas as tabelas do DataSet.
Tabela 13.8 Principais propriedades da classe DataSet.
Mtodo Descrio
AcceptChanges Torna definitivas todas as alteraes feitas nas tabelas ou relacionamentos do DataSet, desde que este
foi inicializado ou desde a ltima vez que o mtodo AcceptChanges foi chamado.
Clear Remove todos os dados do DataSet, zerando todas as linhas de todas as tabelas.
Clone Faz uma cpia idntica do DataSet, inclusive dos seus dados, para um outro objeto do tipo DataSet.
GetChanges Retorna um objeto do tipo DataSet, contendo todas as alteraes que foram feitas desde a inicializao
do DataSet original, ou desde a ltima chamada do mtodo AcceptChanges.
HasChanges Retorna um valor do tipo Boleano. True indica que houve alteraes nos dados do DataSet adies,
alteraes ou excluses. False indica que no houve alteraes.
Tabela 13.9 Principais mtodos da classe DataSet.
Na Tabela 13.9 temos uma descrio dos principais mtodos da classe DataSet:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8360000Curso Completo
Neste momento j somos capazes de estabelecer uma conexo com o Banco de Dados, definir um
objeto DataAdapter para executar um comando atravs da conexo estabelecida e preencher um objeto
DataSet com os dados retornados. A prxima etapa exibir os dados obtidos. A exibio dos dados a
nica coisa que o usurio v, ao acessar a pgina. Existem maneiras variadas para exibir os dados em
uma pgina ASP.NET. Nos exemplos a seguir, utilizarei o controle DataGrid.
O OBJETO DATAVIEW
Para entender a funo do objeto DataView, vamos fazer uma recapitulao dos objetos que j estudamos,
neste tpico:
Utilizamos um objeto OleDbConnection ou SqlConnection para estabelecer uma conexo com
o Banco de Dados.
O objeto DataAdapter faz a ponte entre um ou mais objetos Command (SqlCommand ou
OleDbCommand) e um objeto DataSet. Ao final deste processo, os dados esto armazenados
em um objeto DataSet.
O objeto DataView faz a ponte entre o objeto DataSet e um Web Form ou Web Form Control,
onde sero exibidos os dados. Na Figura 13.32, temos uma viso geral deste processo:
Nesta figura, fica bem destacado o papel de ponte entre o objeto DataSet e o controle DataGrid, exercido
pelo objeto DataView. No exemplo da figura, utilizamos o controle DataGrid, mas poderia ser qualquer
outro Web Form Control capaz de acessar dados de um DataView.
Um objeto DataView pode ser configurado para retornar apenas uma parte dos dados de um
objeto DataTable. Podemos, por exemplo, ter dois objetos DataView, ligados com o mesmo
objeto DataTable, porm exibindo diferentes dados. Vamos estudar mais alguns detalhes sobre
o objeto DataView.
Fonte
de
dados
Pgina
ASP.NET Connection DataSet
DataAdapter
Controle DataGrid
DataView
Figura 13.32 Acessando dados com ASP.NET.
Na Tabela 13.10 temos uma descrio das principais propriedades da classe DataView:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000837
Na Tabela 13.11 temos uma descrio dos principais mtodos da classe DataView:
Propriedade Descrio
AllowDelete Propriedade do tipo Boleana. Se contiver o valor True, podemos excluir registros; se contiver o valor
False, no so permitidas excluses. Esta propriedade pode ser utilizada para definir ou para retornar
um valor True ou False.
AllowEdit Utilizada para definir ou retornar um valor do tipo Boleano. Se o valor da propriedade for True, so
permitidas alteraes nos dados, caso contrrio os dados no podero ser alterados.
AllowNew Utilizada para definir ou retornar um valor do tipo Boleano. Se o valor da propriedade for True,
poderemos adicionar novos registros, utilizando o mtodo AddNew, caso contrrio novos registros no
podero ser adicionados.
Count Retorna o nmero de registros no DataView.
RowFilter Utilizada para definir ou retornar uma expresso que determina quais os dados do objeto DataView, que
sero exibidos.
RowStateFilter Com ADO.NET mantido um histrico das alteraes feitas nos dados. O objeto DataView mantm as
verses anteriores de registros que foram alterados ou excludos. Podemos utilizar esta propriedade
para retornar ou definir uma expresso que filtra apenas os registros em um determinado estado, como
por exemplo: alterados, excludos, etc.
Sort Utilizada para definir ou retornar informaes sobre a(s) coluna(s) e a ordem de classificao dos dados.
Table Utilizada para definir ou retornar a tabela a partir da qual o DataView obtm os dados.
Tabela 13.10 Principais propriedades da classe DataView.
Mtodo Descrio
AddNew Adiciona um novo registro ao DataView.
Delete Exclui um registro do DataView.
Find Localiza um determinado registro, com base no valor da chave primria.
AddNew Adiciona um novo registro ao DataView.
Tabela 13.11 Principais mtodos da classe DataView.
Vamos apresentar alguns exemplos de utilizao do objeto DataView.
Exemplo 1: Neste exemplo faremos uma conexo com o Banco de Dados C:\Meus
documentos\Northwind.mdb. Vamos retornar os seguintes campos da tabela Funcionrios:
CdigoDoFuncionrio
Nome
Cargo
DataDeNascimento
Cidade
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8380000Curso Completo
Os dados sero apresentados na pgina, utilizando um controle DataGrid. Tambm apresentaremos
um controle ListBox, onde o usurio poder selecionar um campo pelo qual os dados sero ordenados
em ordem crescente. Por padro os dados so classificados pelo CdigoDoFuncionrio.
Na listagem 13.6 a seguir temos o cdigo para o exemplo proposto.
Listagem 13.6 Um exemplo completo de conexo com um Banco de Dados do Access, usando o objeto DataView.
<%@ Import Namespace=System.Data %>
<%@ Import Namespace=System.Data.OleDb %>
<html>
<script language=C# runat=server>
protected void Page_Load(Object Src, EventArgs E )
{
// Crio uma conexo com o Banco de Dados do Microsoft Access.
// C:\Meus documentos\NorthWind.mdb.
String DefineConexo= PROVIDER=MICROSOFT.JET.OLEDB.4.0; +
DATA SOURCE=c:\\meus documentos\\NorthWind.mdb;
OleDbConnection MinhaConexo = new OleDbConnection(DefineConexo);
// Utilizamos um objeto DataAdapter para executar um comando SQL,
// o qual retorna todos os dados da tabela Clientes.
OleDbDataAdapter MeuComando = new OleDbDataAdapter(SELECT
CdigoDoFuncionrio, + Nome,Cargo,DataDeNascimento,Cidade
FROM Funcionrios, MinhaConexo);
// Criamos e preenchemos um objeto DataSet.
// Observe que no temos mais o objeto Recordset,
// como era de praxe com o ASP 3.0.
DataSet ds = new DataSet();
// Utilizo o mtodo Fill do objeto DataAdapter, para preencher
// o objeto DataSet, com os dados retornados pelo comando SQL.
MeuComando.Fill(ds);
// Conectamos um controle DataGrid com o DataSet criado anteriormente.
// MinhaGrade o id (nome) de um controle do tipo
// DataGrid que est na seo de apresentao da pgina.
DataView source = new DataView(ds.Tables[0]);
// Utilizamos uma instruo Switch para definir a
// classificao dos dados com base no valor selecionado
// na lista CampoClassificar.
string aux = CampoClassificar.SelectedItem.Value;
switch (aux)
{
case Cargo:
source.Sort=Cargo ASC;
break;
case Cidade:
source.Sort=Cidade ASC;
break;
case Cdigo do Funcionrio:
source.Sort=CdigoDoFuncionrio ASC;
break;
case Data de Nascimento:
source.Sort=DataDeNascimento ASC;
break;
case Nome:
source.Sort=Nome ASC;
break;
default:
// outras opes.
break;
}
MinhaGrade.DataSource = source ;
MinhaGrade.DataBind();
}
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000839
</script>
<% Exibe as informaes do DataGrid no corpo da pgina. %>
<h3><font face=Verdana>Funcionrios da empresa North Wind!!!</font></h3>
<BR>
<form runat=server>
<h3><font face=Verdana>Classificar por:</font></h3>
<asp:ListBox id=CampoClassificar
Rows=1"
Width=200px
runat=server>
<asp:ListItem>Cargo</asp:ListItem>
<asp:ListItem>Cidade</asp:ListItem>
<asp:ListItem selected=True>Cdigo do Funcionrio</asp:ListItem>
<asp:ListItem>Data de Nascimento</asp:ListItem>
<asp:ListItem>Nome</asp:ListItem>
</asp:ListBox>
<ASP:DataGrid id=MinhaGrade runat=server
Width=700"
BackColor=#ccccff
BorderColor=black
ShowFooter=false
CellPadding=3
CellSpacing=0"
Font-Name=Verdana
Font-Size=8pt
HeaderStyle-BackColor=#aaaadd
MaintainState=false
/>
<BR>
<B>Clique para Classificar ></B></td>
<input type=submit value=Classificar runat=server>
</form>
</body>
</html>
Ao carregar esta pgina, voc ir obter o resultado indicado na Figura 13.33:
Figura 13.33 Relao de funcionrios classificada pelo Cdigo do Funcionrio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8400000Curso Completo
Observe que a listagem est classificada em ordem crescente do Cdigo do Funcionrio. Vamos testar
o nosso exemplo. Na lista Classificar Por, selecione Nome e d um clique no boto Classificar. Voc
obter uma listagem classificada pelo nome do funcionrio, conforme indicado na Figura 13.34:
Figura 13.34 Relao de funcionrios classificada pelo Nome.
Comentrios sobre o cdigo do exemplo anterior:
O cdigo para conectar com o Banco de Dados e retornar dados muito semelhante ao cdigo
utilizado nos exemplos anteriores, onde fizemos conexes com um Banco de Dados do SQL Server.
Na seo de apresentao da pgina criamos um formulrio e adicionamos um Web Server
Control do tipo ListBox chamado CampoClassificar. Este controle exibe as opes de
classificao. O cdigo que define o controle ListBox est indicado a seguir:
<asp:ListBox id=CampoClassificar
Rows=1"
Width=200px
runat=server>
<asp:ListItem>Cargo</asp:ListItem>
<asp:ListItem>Cidade</asp:ListItem>
<asp:ListItem selected=True>Cdigo do Funcionrio</asp:ListItem>
<asp:ListItem>Data de Nascimento</asp:ListItem>
<asp:ListItem>Nome</asp:ListItem>
</asp:ListBox>
Observe que, por padro, ao carregarmos a pgina, a opo Cdigo do Funcionrio vem selecionada
selected=True. Para maiores informaes sobre o controle ListBox, consulte o Captulo 9 do e-book:
Programao ASP.NET com C#, de minha autoria, j citado anteriormente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000841
N
O
T
A
Na seo de cdigo precisamos verificar qual a opo selecionada no ListBox e, com base na
opo selecionada, classificar os dados do DataView. Para isso utilizamos a instruo switch/
case do C#, conforme indicado a seguir:
string aux = CampoClassificar.SelectedItem.Value;
switch (aux)
{
case Cargo:
source.Sort=Cargo ASC;
break;
case Cidade:
source.Sort=Cidade ASC;
break;
case Cdigo do Funcionrio:
source.Sort=CdigoDoFuncionrio ASC;
break;
case Data de Nascimento:
source.Sort=DataDeNascimento ASC;
break;
case Nome:
source.Sort=Nome ASC;
break;
default:
// outras opes.
break;
}
Primeiro criamos uma string aux e atribumos a esta string o valor do item selecionado na ListBox
CampoClassificar:
string aux = CampoClassificar.SelectedItem.Value;
Em seguida, utilizamos a string aux como varivel de comparao para a instruo switch/case. Com base
no valor da string aux, definimos a classificao dos dados do DataView. Para definir a classificao utilizamos
a propriedade Sort do objeto source, objeto este que do tipo DataView, como no exemplo a seguir:
source.Sort=CdigoDoFuncionrio ASC;
A propriedade Sort uma string que contm o nome do campo seguido de um espao e da palavra ASC
para classificao crescente ou DESC para classificao decrescente.
Para maiores informaes sobre a instruo switch/case e sobre as demais instrues de controle de fluxo do C#, consulte o Captulo 3 do e-
book Programao ASP.NET com C#. Maiores detalhes em http://www.juliobattisti.com.br/ebooksdoautor.
UM POUCO MAIS SOBRE O CONTROLE DATAGRID
O controle DataGrid, sem sombra de dvidas, assunto para um captulo inteiro. Como no dispomos
de tanto espao, caso contrrio teramos um livro de mais de 2000 pginas, vamos apresentar as principais
caractersticas deste poderoso controle, atravs de alguns exemplos prticos. Neste tpico veremos
como algumas propriedades e mtodos do controle DataGrid so capazes de efetuar verdadeiras
maravilhas. Para mais detalhes sobre o controle DataGrid, consulte os Captulos 11 e 12 do e-book
Programao ASP.NET com C#.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8420000Curso Completo
PRIMEIRA MARAVILHA DO DATAGRID: PAGINAO
Quando obtemos um nmero grande de registros interessante dividir a exibio dos registros em
pginas, onde exibimos um determinado nmero de registros por vez. Isso o que chamamos de
paginao. Por exemplo, podemos fazer com que 1000 registros sejam divididos em pginas onde so
exibidos 20 ou 50 registros por vez.
Fazer paginao com ASP 3.0 no era uma tarefa das mais fceis. Um boa quantidade de cdigo era
necessria e tudo tinha que ser implementado manualmente. Com o controle DataGrid, definir
paginao est resumido a configurar duas propriedades:
AllowPaging: Esta propriedade do tipo Boleana. Se for True, a paginao habilitada, se for
False, a paginao desabilitada. Por padro esta propriedade False. Ao tornarmos AllowPaging
True, na ltima linha do DataGrid, so exibidos os smbolos < para voltar pgina anterior
e > para ir prxima pgina. Podemos alterar estes valores utilizando as propriedades
PagerStyle-NextPageText para alterar o texto do link que vai para a prxima pgina e PagerStyle-
PrevPageText, para alterar o texto do link que volta para a pgina anterior.
Quando estamos na primeira pgina, o link para a pgina anterior automaticamente desabilitado,
pois no existe pgina anterior primeira. Quando estamos na ltima pgina, o link para a prxima
pgina automaticamente desabilitado, pois no existe pgina aps a ltima.
PageSize: O valor desta propriedade define o nmero de registros que sero exibidos por vez.
Se esta propriedade no for definida, sero exibidos 10 registros por pgina.
Para definir que sejam exibidos 20 registros por pgina, sendo Prxima pgina > o texto do link para
a prxima pgina e < Pgina anterior o texto para o link para a pgina anterior, definimos as seguintes
propriedades/valores do controle DataGrid:
AllowPaging=True
PageSize=20
PagerStyle-NextPageText=Prxima pgina >
PagerStyle-PrevPageText=< Pgina anterior
Inserindo a definio para essas propriedades, a tag que define o controle DataGrid ficaria da seguinte
maneira:
<ASP:DataGrid
id=MeuDataGrid
runat=server
Width=600"
BackColor=#bbccff
AllowPaging=True
PageSize=20
PagerStyle-NextPageText=Prxima pgina >
PagerStyle-PrevPageText=< Pgina anterior
BorderColor=black
ShowFooter=false
CellPadding=3
CellSpacing=0"
Font-Name=Verdana
Font-Size=8pt
HeaderStyle-BackColor=#aaaadd
MaintainState=false
/>
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000843
N
O
T
A
Para que a paginao seja feita, alm de definir a propriedade AllowPaging como True, temos que criar cdigo para trocar de pgina. O
mtodo que faz a troca de pgina definido na propriedade OnPageIndexChanged do DataGrid.
SEGUNDA MARAVILHA DO DATAGRID: MAIS DO QUE UM CONJUNTO DE DADOS NA MESMA PGINA
Vamos ver um exemplo prtico, onde exibiremos dados de duas tabelas, do Banco de Dados NorthWind,
na mesma pgina ASP.NET. Para isso faremos uso de dois controles do tipo DataGrid.
O exemplo Proposto: Exibir, na mesma pgina, informaes da tabela Funcionrios e da tabela
Transportadores.
Na listagem 13.7 a seguir temos o cdigo para o exemplo proposto.
Listagem 13.7 Exibindo dados de mltiplas tabelas em uma pgina ASP.NET.
<%@ Import Namespace=System.Data %>
<%@ Import Namespace=System.Data.OleDb %>
<html>
<script language=C# runat=server>
protected void Page_Load(Object Src, EventArgs E )
{
// Crio uma conexo com o Banco de Dados do Microsoft Access.
// C:\Meus documentos\NorthWind.mdb.
String DefineConexo= PROVIDER=MICROSOFT.JET.OLEDB.4.0; +
DATA SOURCE=c:\\meus documentos\\NorthWind.mdb;
OleDbConnection MinhaConexo = new OleDbConnection(DefineConexo);
// Para podermos acessar mltiplas tabelas vamos criar
// um objeto Command, conforme indicado a seguir:
OleDbCommand MeuComando = new OleDbCommand();
// defino algumas propriedades do objeto Command.
MeuComando.Connection = MinhaConexo;
MeuComando.CommandType = CommandType.Text;
// Utilizamos um objeto DataAdapter para executar dois comandos SQL.
// Um comando para retornar dados da tabela Funcionrios.
// Um comando para retornar dados da tabela Transportadoras.
OleDbDataAdapter MeuDataAdapter = new OleDbDataAdapter();
// Definimos o comando a ser utilizado pelo objeto DataAdapter.
// Para isso definimos a sua propriedade SelectCommand.
MeuDataAdapter.SelectCommand = MeuComando;
// Criamos e preenchemos um objeto DataSet.
// Vamos preencher o DataSet com dados das tabelas
// Funcionrios e Transportadores.
// Para isso precisamos executar dois comandos SQL.
// ************************************************
// Na prtica vamos chamar o mtodo Fill do DataAdapter
// duas vezes.
// Antes de cada chamada alteramos a propriedade
// CommandText do objeto Command.
DataSet ds = new DataSet();
MeuComando.CommandText=Select CdigoDoFuncionrio,Nome,Sobrenome,Cargo
From Funcionrios;
MeuDataAdapter.Fill(ds,Funcionrios);
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8440000Curso Completo
// Altero a propriedade CommandText para retornar dados
// da tabela Transportadores.
// Chamo novamente o mtodo Fill.
MeuComando.CommandText = Select * From Transportadoras;
MeuDataAdapter.Fill(ds,Transportadoras);
// Conectamos um controle DataGrid com
// cada tabela do DataSet criado anteriormente.
// ******************************************************
// GradeFuncionrios o id (nome) de um controle do tipo
// DataGrid que est na seo de apresentao da pgina.
// Este controle exibir dados dos Funcionrios.
// ******************************************************
// GradeTransportadoras o id (nome) de um controle do tipo
// DataGrid que est na seo de apresentao da pgina.
// Este controle exibir dados das Transportadoras.
DataView Funcionrios = new DataView(ds.Tables[0]);
GradeFuncionrios.DataSource = Funcionrios ;
GradeFuncionrios.DataBind();
DataView Transportadoras = new DataView(ds.Tables[1]);
GradeTransportadoras.DataSource = Transportadoras ;
GradeTransportadoras.DataBind();
}
</script>
<h3><font face=Verdana>Funcionrios da empresa North Wind!!!</font></h3>
<HR>
<ASP:DataGrid
id=GradeFuncionrios
runat=server
Width=450"
BackColor=#bbccff
BorderColor=blue
ShowFooter=false
CellPadding=3
CellSpacing=0"
Font-Name=Verdana
Font-Size=8pt
HeaderStyle-BackColor=#aaaadd
HeaderStyle-Font-Bold=True
MaintainState=false
/>
<BR>
<HR>
<h3><font face=Verdana>Transportadoras da empresa North Wind!!!</font></h3>
<ASP:DataGrid
id=GradeTransportadoras
runat=server
Width=400"
BackColor=#bbddff
BorderColor=blue
ShowFooter=false
CellPadding=3
CellSpacing=0"
Font-Name=Verdana
Font-Size=8pt
HeaderStyle-BackColor=#aaaadd
HeaderStyle-Font-Bold=True
MaintainState=false
/>
<HR>
</body>
</html>
Ao acessar esta pgina, voc ir obter o resultado indicado na Figura 13.35:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000845
Figura 13.35 Exibindo dados de mltiplas tabelas em uma pgina ASP.NET.
Comentrios sobre o cdigo do exemplo anterior.
Vamos descrever os passos utilizados para acessar e exibir dados das tabelas Funcionrios e
Pedidos. Alguns passos j foram explicados em exemplos anteriores, mas iremos repetir a
explicao, para fazermos uma reviso do contedo deste captulo:
1. Utilizamos o evento Pge_Load para colocar o cdigo necessrio ao nosso exemplo.
2. Iniciamos estabelecendo uma conexo com o Banco de Dados NorthWind.mdb:
String DefineConexo= PROVIDER=MICROSOFT.JET.OLEDB.4.0; +
DATA SOURCE=c:\\meus documentos\\NorthWind.mdb;
OleDbConnection MinhaConexo = new OleDbConnection(DefineConexo);
3. A partir deste ponto temos algumas mudanas em relao aos exemplos anteriores. Primeiro
vamos criar um objeto OleDbCommand e definir as propriedades Connection e CommandType
do objeto OleDbCommand:
OleDbCommand MeuComando = new OleDbCommand();
// defino algumas propriedades do objeto Command.
MeuComando.Connection = MinhaConexo;
MeuComando.CommandType = CommandType.Text;
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8460000Curso Completo
4. Agora criamos um objeto DataAdapter e definimos a sua propriedade SelectCommand. Ao definirmos
esta propriedade informamos qual o objeto OleDbCommand que estar associado ao DataAdapter:
OleDbDataAdapter MeuDataAdapter = new OleDbDataAdapter();
MeuDataAdapter.SelectCommand = MeuComando;
5. Declaramos um objeto ds do tipo DataSet. O objeto DataSet ser o container para as tabelas
Funcionrios e Transportadores. Recapitulando o que estudamos anteriormente, o objeto DataSet
pode conter uma ou mais tabelas, as quais esto contidas na coleo Tables do objeto.
DataSet ds = new DataSet();
6. Chegamos ao ponto principal do nosso exemplo. Utilizamos a seguinte tcnica:
Definimos a propriedade CommandText do objeto MeuComando. Esta propriedade contm a
string SQL que acessa dados de uma determinada tabela:
MeuComando.CommandText=Select CdigoDoFuncionrio,Nome,Sobrenome,Cargo
From Funcionrios;
Em seguida chamamos o mtodo Fill do objeto DataAdapter. Ao chamarmos este mtodo, o comando definido
na propriedade CommandText executado e os dados retornados so passados para o DataSet definido no
primeiro parmetro. O segundo parmetro o nome do conjunto de dados no DataSet. No nosso exemplo
utilizamos o mesmo nome da tabela, no Banco de Dados NorthWind, porm isso no obrigatrio:
MeuDataAdapter.Fill(ds,Funcionrios);
Repetimos os mesmos passos para retornar dados da tabela Transportadoras e coloc-los no DataSet ds:
MeuComando.CommandText = Select * From Transportadoras;
MeuDataAdapter.Fill(ds,Transportadoras);
Aps a execuo destes comandos, a coleo Tables, do DataSet ds, contm duas tabelas com dados
retornados a partir do Banco de Dados NorthWind.mdb.
7. O prximo passo exibir os dados do objeto DataSet na pgina ASP.NET. Isto feito utilizando
um objeto do tipo DataView para cada tabela a ser exibida. Ao criarmos o objeto DataView, j
passamos como parmetro a tabela associada ao objeto. Em seguida definimos a propriedade
DataSource do controle DataGrid como sendo igual ao objeto DataView recm-criado. O passo
final chamar o mtodo DataBind do controle DataGrid:
DataView Funcionrios = new DataView(ds.Tables[0]);
GradeFuncionrios.DataSource = Funcionrios ;
GradeFuncionrios.DataBind();
DataView Transportadoras = new DataView(ds.Tables[1]);
GradeTransportadoras.DataSource = Transportadoras ;
GradeTransportadoras.DataBind();
Para cada tabela do DataSet criamos um objeto DataView. Para o DataView Funcionrios, passamos
como parmetro: ds.Tables[0], ou seja, a primeira tabela, da coleo de tabelas do DataSet ds. Para o
DataView Transportadoras, passamos como parmetro ds.Tables[1], ou seja, a segunda tabela, da coleo
de tabelas do DataSet ds. Depois s ligar cada DataView com o respectivo DataGrid.
8. Na seo de apresentao, utilizamos algumas propriedades do DataGrid para definir a sua
aparncia. Por exemplo:
HeaderStyle-BackColor=#aaaadd: Define a cor de segundo plano da primeira linha do
DataGrid, a linha que contm os ttulos das colunas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005
Curso Completo0000847
HeaderStyle-Font-Bold=True: Define que o texto da primeira linha deve ser exibido com
fonte em negrito.
Este exemplo demonstra, mais uma vez, o poder e flexibilidade dos novos objetos para acesso a dados
oferecidos pelo ADO.NET e tambm demonstra o poder dos Web Server Controls, mais especificamente
do controle DataGrid.
CONCLUSO
Neste captulo apresentei o Framework .NET ao amigo leitor.
Iniciamos o captulo apresentando uma viso geral e uma definio genrica para a iniciativa .NET da
Microsoft. Tratamos de conceitos como Web Services, CLR Common Language Runtime e .NET
Framework Class Library. Vimos que o .NET a viso da Microsoft em um mundo onde o Software
passa a ser desenvolvido e comercializado na forma de servios. Os programas so construdos a partir
de unidades menores, os assemblies. Dentro de um assembly tenho todos os elementos que garantem
uma funcionalidade especfica, para a qual o assembly foi projetado. Dentro deste contexto podemos
concluir que, mais do que uma atualizao tecnolgica, o .NET uma mudana de paradigma.
Destacamos os dois principais componentes do Framework .NET. Em primeiro lugar um ambiente de
execuo comum a todas as linguagens habilitadas ao .NET - CLR Common Language Runtime.
Qualquer linguagem habilitada ao .NET, ao ser compilada, gera cdigo MSIL Microsoft Intermediate
Language, sendo que o cdigo MSIL que executado pelo CLR.
Alm disso fornecida uma biblioteca de classes que pode ser utilizada por qualquer linguagem habilitada
ao .NET. .NET uma mudana de paradigma. Ao colocar disposio do programador um conjunto de
classes padronizadas, o Framework .NET est incentivando boas prticas de programao, como a
herana e a conseqente reutilizao de cdigo.
Em seguida apresentamos os problemas com o modelo de desenvolvimento baseado em componentes
que seguem o padro COM/COM+. Vimos que para que, um componente possa ser utilizado, este
precisa ser registrado e que diferentes verses de um mesmo componente no podem coexistir em um
mesmo computador, o que pode fazer com que, ao instalarmos um programa, este substitua a verso
atual do componente por uma verso diferente, a qual no pode ser utilizada por outros programas
que dependem da verso anteriormente instalada. Isto faz com que o programa que depende da verso
substituda deixe de funcionar. Esta situao tambm conhecida como DLL Hell.
Em seguida continuamos tratando dos componentes do Framework .NET apresentando, em primeiro
lugar, as linguagens que fazem parte do Framework .NET, com destaque para a facilidade em fazer com
que programas escritos em diferentes linguagens possam se comunicar e trocar informaes. Fizemos
uma descrio breve do VB.NET e da nova linguagem C#.
Continuando nossa jornada pela Framework .NET apresentamos o CTS Common Type System. Vimos a
importncia de todas as linguagens utilizarem um conjunto padronizado de dados, principalmente para
garantir a interoperabilidade entre programas, componentes e servios criados em diferentes linguagens.
Tambm tratamos do conceito de metadados (metadata), o qual faz com que cada componente contenha
todas as informaes necessrias ao seu funcionamento, o que evita que o componente tenha que ser
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8480000Curso Completo
N
O
T
A
registrado, como acontecia com os componentes COM/COM+. Alm disso os metadados que
possibilitam que diferentes verses de um componente coexistam em um computador, podendo in-
clusive as diferentes verses serem executadas simultaneamente.
Vimos que a unidade bsica de empacotamento chamada de assembly. Um assembly contm todos
os elementos necessrios ao funcionamento de um componente. Falaremos mais sobre assemblies no
prximo captulo.
Seguindo, passamos a tratar das interfaces com o usurio, onde vimos os conceitos de Windows Forms
e Web Forms, onde foram apresentados diagramas ilustrativos da utilizao destes elementos.
Tambm no poderamos deixar de fora uma breve apresentao dos servidores .NET. Uma linha de
servidores da Microsoft, para facilitar o desenvolvimento de aplicaes .NET, os quais fornecem uma
srie de funcionalidades, desde um servidor de Banco de Dados Relacionais (SQL Server 2005) at um
servidor para garantir a segurana na Internet Internet Security and Acceleration Server 2004.
Para encerrar fizemos uma breve apresentao do ADO.NET.
Para a documentao sempre atualizada sobre o .NET, no deixe de consultar o endereo: http://msdn.microsoft.com/net.
Em seguida aprendemos a conectar pginas ASP.NET com Bancos de Dados do SQL Server 2005 e do
Microsoft Access. Utilizamos classes, basicamente, dos seguintes namespaces:
System.Data
System.Data.OleDb
System.Data.SqlClient
Estudamos, em detalhes, diversas classes destes namespaces:
SqlConnection/OleDbConnection
SqlCommand/OleDbCommand
SqlDataAdapter/OleDbDataAdapter
DataSet
DataView
Tambm estudamos algumas caractersticas do poderoso controle DataGrid.
Evidentemente que este captulo no tem a pretenso de ser um estudo completo e detalhado sobre
o .NET e sobre a criao de pginas ASP.NET para a conexo com Bancos de Dados do SQL Server
2005. Estes seriam assuntos para livros inteiros (alis existem dezenas de livros sobre estes assuntos).
Dentro da proposta deste livro, o objetivo deste captulo foi fazer com que o amigo leitor tenha uma
idia clara do que o Framework .NET, como ele se relaciona com o SQL Server 2005 e como a
tecnologia ASP.NET a alternativa mais indicada para a criao de aplicaes Web que fazem conexo
com Bancos de Dados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000849
Captulo 14
REPORTING SERVICES O SERVIO DE
RELATRIOS DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8500000Curso Completo
INTRODUO
O trabalho com banco de dados tem um lado interessante. Voc inicia pelo projeto do banco de dados,
atravs da definio das tabelas, chaves primrias e estrangeiras, relacionamentos e todos os demais
tpicos do modelo relacional. Voc implementa as tabelas, ndices, views (consultas), triggers, stored
procedures, configuraes de replicao, segurana enfim, um arsenal de recursos para colocar as
informaes nos bancos de dados do SQL Server.
Obviamente que todos estes passos so meios para se atingir um objetivo maior: A informao
correta, para quem dela precisar, no momento adequado. Esta mxima da indstria de TI bem
conhecida e dispensa maiores comentrios. Porm depois de colocar todas as informaes para dentro
do banco de dados, voc precisa tirar estas informaes atravs de relatrios e consultas, para atender
as demandas dos usurios.
Temos diferentes maneiras de acessar os dados do SQL Server. No Captulo 11 voc aprendeu sobre a
criao de pginas ASP, para o acesso a dados do SQL Server. No Captulo 13 voc aprendeu sobre o
Framework .NET e sobre a criao de pginas ASP.NET, para acesso a dados do SQL Server. Voc tambm
poderia criar aplicativos usando VB.NET, Delphi, C## ou qualquer outra linguagem de programao,
aplicativos estes que acessam dados do SQL Server.
Todo o acesso a dados, clculos, formataes pode ser feito usando ASP, ASP.NET ou linguagens como
VB.NET, C# e Delphi. Porm usar programao para a criao de relatrios e a formatao das telas de
sada bastante trabalhoso. Por isso que foram desenvolvidas opes especficas para a criao e
formatao de relatrios. At o SQL Server 7.0, o prprio SQL Server no tinha nenhum sistema ou
servio para a criao de relatrios. Com estas verses, a nica opo disponvel seria usar um cliente
como o Access para acessar dados do SQL Server e, usando os recursos do Access, criar os relatrios
necessrios. Outra opo era usar aplicativos especficos para a criao de relatrios, tais como o Crys-
tal Reports. Voc usava o Crystal Reports para conectar com o SQL Server, criar e formatar relatrios.
Os relatrios criados pelo Crystal Reports poderiam, ento, ser utilizados por aplicativos desenvolvidos
em Visual Basic, VB.NET, C#, Delphi ou em pginas Web, criadas em ASP, ASP.NET, PHP ou Java.
A partir do SQL Server 2000 (na verdade foi lanado como um sistema separado, bem depois do
lanamento do SQL Server 2000), foi disponibilizado um servio especfico para a gerao de relatrios.
Este servio facilita, bastante, a criao de relatrios a partir de bancos de dados do SQL Server, sem a
necessidade de usar um aplicativo separado, como por exemplo o Access ou o Crystal Reports. A boa
notcia que, no SQL Server 2005, o servio de relatrios Reporting Services foi bastante melhorado
em relao ao servio oferecido pelo SQL Server 2000. Ele est bem mais fcil de utilizar, com bem mais
recursos e, principalmente, com mais facilidades para que os relatrios gerados sejam acessados usando
diferentes opes, tais como: Acesso via Web, uso dos relatrios por aplicativos desenvolvidos nas
mais variadas linguagens e assim por diante.
O nosso trabalho neste captulo justamente este, ou seja, entender o que , qual a sua arquitetura e
como funciona o Reporting Services. Alm disso, aprenderemos, na prtica, a utilizar o Reporting
Services, para criar e acessar relatrios, a partir de bancos do SQL Server 2005. Voc aprender, atravs
de exemplos prticos, a criar relatrios usando o Reporting Services. Veremos que, para quem j conhece
o Access, usar o Reporting Services ser bastante simples, pois os seus assistentes so muito semelhantes
aos assistentes de criao de relatrios do Microsoft Access. Ento, mos obra.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000851
DESENVOLVIMENTO EM: ENTENDENDO O REPORTING SERVICES
PR-REQUISITOS
Conhecimento bsico dos objetos que compem um banco de dados do SQL Server.
METODOLOGIA
Apresentao dos elementos que compem o Reporting Services.
INTRODUO AO REPORTING SERVICES
O Reporting Services bem mais do que somente uma ferramenta para a criao de relatrios. Ele
uma plataforma que, alm da criao de relatrios, permite que os relatrios sejam armazenados no
servidor SQL Server, permite que sejam configuradas as permisses de acesso aos relatrios, disponibiliza
diversos formatos de sada para os relatrios, permite que se use tecnologias push (onde o SQL Server
envia uma cpia do relatrio para um ou mais destinatrios, sempre que houver mudanas ou em
horrios agendados) ou tecnologia Pull (onde o usurio que solicita um determinado relatrio). Alm
de tudo isso, o Reporting Services fornece toda a infra-estrutura e servios necessrios para a distribuio
dos relatrios. Sem dvida, muito mais do que uma ferramenta para a criao de relatrios, o Report-
ing Services constitui toda uma plataforma para a criao, configurao, distribuio e gerenciamento
de relatrios. E ainda bastante simples de ser utilizado.
O Reporting Services uma plataforma para gerao e distribuio de relatrios baseada no servidor
SQL Server 2005. Com o Reporting Services possvel a criao desde os tradicionais relatrios no
formato de tabelas/listagens, relatrios matriciais ou de referncia cruzada, relatrios grficos e em
formatos no padronizados. Outro detalhe importante que, usando o Reporting Services, voc no
est limitado a usar fontes de dados do SQL Server 2005. Voc poder usar qualquer fonte de dados
relacional ou no para a qual o SQL Server 2005 tenha conectores. Por exemplo, voc poder usar, em
um mesmo relatrio, dados de tabelas do SQL Server 2005 em conjunto com dados de uma planilha do
Excel e dados vindos de uma fonte no estruturada, tais como dados de caixas de e-mail do Exchange
Server 2003. Os relatrios gerados pelo Reporting Services podem, facilmente, ser acessados usando
simplesmente um navegador, como o Internet Explorer, Netscape Navigator ou FireFox.
O Reporting Services foi implementado pela Microsoft, usando uma arquitetura modular, onde ele
foi dividido em diversos componentes. Cada componente executa funes especficas e todos os
componentes interagem entre si. Por exemplo, um processo responsvel por fazer a conexo com
as fontes de dados utilizadas no relatrio e retornar os dados solicitados. Outro componente o
responsvel por receber a requisio dos clientes e retornar os dados no formato solicitado. Muitas
so as vantagens de se utilizar esta arquitetura. Vamos citar apenas a mais bvia. Ao separar as
funcionalidades de conectar com as fontes de dados e retornar os dados, da funcionalidade de retornar
os resultados para os clientes, possvel ao Reporting Services fornecer o mesmo relatrio, para
diferentes clientes, em diferentes formatos, simultaneamente, sem ter que fazer vrias conexes com
as diferentes fontes de dados. Por exemplo, se um mesmo relatrio est sendo solicitado, por diferentes
clientes, em formato .PDF, HTML, .XLS e XML, o Reporting Services far uma nica conexo com as
fontes de dados, retornar os dados solicitados, e o componente de formatao ir criar diferentes
formatos, para atender a solicitao de cada um dos clientes. Isso melhora bastante o desempenho e
economiza recursos preciosos no servidor.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8520000Curso Completo
RELATRIOS ACESSADOS VIA WEB VANTAGENS
Conforme j descrevi anteriormente, o Reporting Services tem como uma de suas principais
caractersticas a gerao de relatrios que so facilmente acessados, usando-se to-somente um
Navegador. Esta caracterstica chamada, na documentao do SQL Server 2005, de Web-enabled
foundation. Por que foi utilizada esta diretiva e quais as suas vantagens? Tentarei explicar na seqncia.
O Reporting Services trabalha em conjunto com o Internet Information Services (IIS), funcionando
como um servidor intermedirio, entre o cliente e o IIS. Isso permite a criao de relatrios baseados
em qualquer fonte de dados que possa ser acessada via ADO.DB, OLE-DB Provider e, at mesmo, via
ODBC. Opa, quer dizer que, se eu precisar utilizar dados de um bom e velho arquivo do Dbase III
(arquivo .dbf), basta criar uma fonte ODBC para este arquivo e pronto, ele estar disponvel para ser
utilizado, como uma fonte de dados, em um relatrio do Reporting Services? Sim, no s para o bom
e velho arquivo do Dbase III, mas como para qualquer fonte que possa ser acessada via ODBC.
Vejam que aqui o Reporting Services est cumprindo e bem o seu papel de servir como uma infra-
estrutura intermediria entre uma grande variedade de fontes de dados e o acesso via Web a relatrios
baseados nestas fontes. Na Figura 14.1, temos uma ilustrao desta integrao do Reporting Services,
com o IIS, para a criao de relatrios que podem ser acessados via Web.
Figura 14.1 Integrao entre o Reporting Services e o IIS.
Claro que os formatos para acesso via Web e o acesso via Web trazem inmeras vantagens, j bem
conhecidas. Para maiores detalhes sobre estas vantagens, consulte os tpicos sobre os modelos de
desenvolvimento em 3 ou n-camadas, apresentados nos Captulos 1 e 2. Mas uma soluo para a
criao de relatrios deve ser flexvel e permitir, alm do formato e acesso via Web, a criao de relatrios
em formatos mais tradicionais, para acesso atravs de aplicaes j conhecidas do usurio. O Report-
ing Services permite, tambm, a criao de relatrios nos mais variados formatos, tais como:
HTML
Excel
Text
XML
Image
PDF
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000853
N
O
T
A
N
O
T
A
Os formatos para os quais o Reporting Services pode gerar relatrios so conhecidos como Rendering Extensions. O Reporting Services uma
plataforma aberta, que pode ser extendida atravs de suas APIs de programao. Por exemplo, voc pode usar as APIs de programao do Reporting
Services para fazer com que seja possvel a gerao de relatrios em formatos adicionais, de acordo com as necessidades da sua empresa.
Importante: Outro detalhe importante que o Reporting Services faz parte do SQL Server 2005. Ao adquirir as licenas do SQL Server 2005,
voc est tambm adquirindo licena para usar o Reporting Services, no mesmo servidor onde est sendo instalado o SQL Server 2005. Se
voc precisar instalar e utilizar o Reporting Services em servidores adicionais, onde no est instalado o SQL Server 2005, voc precisar
entrar em contato com a Microsoft para adquirir licena de uso do Reporting Services, nestes servidores adicionais.
PRINCIPAIS COMPONENTES DO REPORTING SERVICES
Agora que j temos uma viso geral do que o Reporting Services e de que papel ele desempenha na
gerao e distribuio de relatrios, vamos analisar, rapidamente, os principais componentes do Re-
porting Services. Na Figura 14.2, apresento uma figura do Books Online do SQL Server 2005, na qual
temos uma viso geral da arquitetura e dos principais componentes do Reporting Services. Na seqncia,
farei uma breve descrio de cada um dos componentes do Reporting Services e das funes
desempenhadas por cada um.
Figura 14.2 Arquitetura e componentes do Reporting Services.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8540000Curso Completo
REPORT DESIGNER
O Report Designer talvez seja a face mais visvel do Reporting Services, para quem fica responsvel
pela criao dos relatrios. Por exemplo, quando chega um pedido do chefe: Preciso de um relatrio
de vendas, que mostre o total mensal de vendas por produto e por ms, para o ano de 2004. Alm
disso, preciso do relatrio para acesso via browser e tambm no formato de planilha do Excel. O
funcionrio responsvel pela criao do relatrio ir utilizar o Report Designer para conectar com as
tabelas do SQL Server e criar o relatrio, conforme solicitao do chefe.
Alm da criao do relatrio, voc tambm utiliza o Report Designer, para publicar o relatrio em um
servidor de relatrios. Outro detalhe importante que o Report Designer integrado com o Visual
Studio. Uma vez instalado o Report Designer, as suas funcionalidades estaro tambm disponveis para
serem utilizadas, atravs do Visual Studio.
Para a criao de um relatrio usando o Report Designer, primeiro voc cria um novo projeto no Visual
Studio. Este novo projeto ser baseado no template Report Project. Depois de criar um novo projeto
do tipo Report Project, voc adiciona um ou mais relatrios (voc aprender a fazer isso na parte
prtica deste captulo, em um dos prximos tpicos). Voc poder criar diferentes tipos de relatrios,
desde as tradicionais listagens, relatrios do tipo matriciais e, viva, relatrios do tipo Tabela de Referncia
Cruzada. Uma grande queixa em relao ao SQL Server era em relao dificuldade em se criar
relatrios de referncia cruzada, uma vez que a clusula TRANSFORM, utilizada no Microsoft Access,
para a criao deste tipo de relatrio, uma clusula proprietria do Access e no faz parte do padro
da linguagem T-SQL, utilizada pelo SQL Server. Com o Report Designer, conforme voc ver na parte
prtica, ficou bem mais fcil a criao de relatrios do tipo Tabela de referncia cruzada.
Voc ver que a criao de relatrios, usando o Report Designer, bem semelhante criao de relatrios
usando o Microsoft Access. Voc poder utilizar assistentes ou simplesmente arrastar campos e outros
elementos, em uma interface visual, de fcil utilizao. Voc tambm tem a opo de testar o relatrio,
localmente, antes de public-lo em um servidor de relatrios. Com isso, voc pode, rapidamente,
testar os resultados do seu relatrio e corrigir os erros ainda existentes, antes de envi-lo para publicao
em um servidor de relatrios.
Uma vez publicado um relatrio, voc usa o console SQL Server Management Studio ou o console
Report Manager, para administrao dos relatrios. Para a criao e definio dos relatrios utilizada
uma linguagem conhecida como Report Definition Language (RDL). Todas as funcionalidades deste
padro esto disponveis no Report Designer. Foge ao escopo deste livro tratar sobre o padro RDL. No
Books Online voc encontra mais informaes sobre a linguagem RDL.
REPORT SERVER
O Report Server o principal componente do Reporting Services. Ele responsvel pela grande maioria
das funcionalidades do Reporting Services. Ele composto de dois componentes principais: Um Web
Service (dentro do conceito de Webservices do Framework .NET. Para mais detalhes sobre o Framework
.NET, consulte o Captulo 13) e um Servio do Windows. O Web Service responsvel por disponibilizar
uma srie de interfaces de programao (na verdade um grande conjunto de objetos, mtodos e
propriedades), as quais so utilizadas pelas aplicaes clientes (quer sejam aplicaes Web, por exemplo
baseadas em ASP ou ASP.NET ou aplicaes tradicionais, baseadas em VB.NET, Delphi, etc.), para acessar
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000855
os recursos e funcionalidades do Report Server. O servio Windows responsvel pelo agendamento e
envio de servios. Por exemplo, um relatrio pode ser agendado, para ser enviado via e-mail para um
grupo de usurios, em datas e horrios previamente agendados. Alm disso, o Report Server tem uma
srie de subcomponentes, os quais so responsveis pela formatao dos relatrios, publicao dos
relatrios, atender as requisies dos clientes, verificar se o cliente tem permisso para acessar
determinado relatrio e assim por diante.
A seguir apresento uma breve descrio dos principais subcomponentes do Report Server.
Programmatic Interfaces (Interfaces de Programao): O Report Server, atravs de um Web
Service, disponibiliza uma srie de Interfaces de Programao (na verdade um grande conjunto
de objetos, mtodos e propriedades), as quais so utilizadas pelas aplicaes clientes (quer
sejam aplicaes Web, por exemplo baseadas em ASP ou ASP.NET, ou aplicaes tradicionais,
baseadas em VB.NET, Delphi, etc.), para acessar os recursos e funcionalidades do Report Server.
Estes objetos trabalham com padres do Framework .NET, tal como o protocolo SOAP, o qual
permite encapsular diferentes protocolos e formatos para uso atravs do protocolo HTTP.
Para detalhes sobre o SOAP como protocolo e o XML como formato de dados, consulte o
Captulo 13.
Report Processor: Este o componente que carrega as informaes de definio sobre um
determinado relatrio, a partir do banco de dados do Report Server (todas as informaes sobre
os relatrios so mantidas em um banco de dados do Reporting Services), e combina estas
informaes com os dados obtidos a partir das fontes de dados do relatrio, para gerar o relatrio
final. Observe a modularizao do processo. Ou seja, as definies do relatrio so armazenadas
separadamente dos dados do relatrio. As definies so armazenadas em um banco de dados
do Report Server. Os dados que compem o relatrio ficam em seu formato original, nas fontes
de dados que sero utilizadas no relatrio. Ou seja, o Report Server somente armazena as
informaes necessrias para acessar os dados, mas no os dados em si. Com isso, quando um
relatrio solicitado, o Report Server acessa as informaes de definio do relatrio e combina
estas informaes com os dados obtidos a partir das fontes de dados, para gerar o relatrio
solicitado. Aps gerado o relatrio, ele ainda enviado para o componente de formatao, o
qual ir colocar o relatrio no formato de sada, solicitado pelo cliente e com as formataes
especificadas, quando da criao do relatrio.
Data Processing Extensions: Uma extenso de processamento de dados uma funcionalidade
especfica, que o Report Server usa para acessar determinada fonte de dados. Diferentes extenses
so utilizadas para interagir com diferentes fontes de dados. Voc pode usar as extenses que j
esto disponveis com o Report Server ou pode criar suas prprias extenses, para acessar
diferentes fontes de dados. Por padro, o Report Server apresenta extenses para as seguintes
fontes de dados:
1. SQL Server
2. Oracle
3. ODBC
4. OLE DB
5. ADO.NET data provider
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8560000Curso Completo
As extenses para ODBC e OLE-DB fazem com que seja possvel se conectar, com praticamente qualquer
fonte de dados estruturada, disponvel atualmente.
As extenses de processmaento de dados so responsveis por uma srie de tarefas, para que seja
possvel o acesso a uma fonte de dados:
1. Abrir uma conexo com a fonte de dados.
2. Retornar uma lista de tabelas e campos disponveis na fonte de dados.
3. Executar uma consulta contra a fonte de dados e retornar um conjunto de registros.
4. Se for uma consulta parametrizada, as extenses de dados que so responsveis por passar os
parmetros esperados pela consulta.
5. Passar informaes de logon, para a fonte de dados (nome de usurio e senha, se necessrio).
Report server database (banco de dados do servidor de relatrios): Conforme j descrevi
anteriormente, o Reporting Services utiliza um banco de dados, para armazenar uma srie de
informaes, tais como as definies dos relatrios, informaes para acessar as fontes de dados,
informaes sobre permisses de acesso, informaes para formatao dos relatrios,
informaes sobre agendamentos de envio de relatrios e assim por diante. O banco de dados
do servidor de relatrios pode estar no mesmo servidor onde est instalado o Reporting Ser-
vices ou em um outro servidor SQL Server.
Scheduling and Delivery Processor (processador de agendamento e de envio de relatrios):
Este o componente responsvel pelo agendamento e envio de relatrios para os usurios. Um
relatrio pode ser agendado para ser executado uma nica vez, ou pode ser agendado para ser
executado e enviado para um grupo de usurios em perodos definidos. Este componente
responsvel por duas tarefas distintas: Executar os relatrios agendados e Enviar o relatrio
para um ou mais destinos, que pode ser desde um grupo de usurios, para um envio via e-mail,
ou a publicao da verso atualizada do relatrio para acesso via Web. A execuo peridica
importante para que o relatrio esteja sempre atualizado. Por exemplo, um relatrio dirio de
vendas, com o total de vendas por produto, tem que ser constantemente atualizado (digamos
de 10 em 10 minutos), para que seja til. O responsvel por esta atualizao peridica o
processador de agendamento e envio de relatrios.
Quando um relatrio agendado executado, criado um snapshot do relatrio, no momento em que ele
executado. Ou seja, criada uma nova verso do relatrio, com base nos dados disponveis no momento
de sua execuo. O relatrio enviado para o banco de dados do servidor de relatrios e fica disponvel
para ser acessado. Se necessrio, possvel armazenar no banco de dados do servidor de relatrios mltiplas
verses de um relatrio. Por exemplo, as ltimas 20 verses, ou todas as verses dos ltimos quinze dias.
A possibilidade de agendar a execuo dos relatrios um auxiliar valioso para manter um bom
desempenho no servidor de relatrios. Com isso, os usurios podem acessar verses j prontas dos
relatrios, as quais esto to atualizadas quanto for o agendamento de execuo. Claro que, em
determinadas situaes, pode ser necessrio acessar uma verso 100% atualizada do relatrio. Nestes
casos, tem que ser feito um estudo detalhado para ver o que mais interessante em termos de desempenho.
Por exemplo, agendar o relatrio para executar de minuto em minuto ou no agendar uma execuo e
fazer com que o relatrio seja executado, cada vez que houver uma solicitao dos clientes?
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000857
N
O
T
A
Aps criado o agendamento dos relatrios, os usurios podem se inscrever para um ou mais relatrios.
Depois que um relatrio agendado for executado, ele ser enviado para o destino especificado no
momento da inscrio. O Reporting Services pode formatar o relatrio para ser enviado como uma
mensagem de e-mail, pode enviar o relatrio como um arquivo anexado a uma mensagem de e-mail
ou pode enviar apenas um link via e-mail ou um aviso via pager, com o link para acesso nova verso
do relatrio, via browser.
Mais uma vez cabe ressaltar a natureza extensvel do Reporting Services. Os programadores podem criar outras opes de entrega dos
relatrios, diferentes das que so fornecidas pelo Reporting Services.
As informaes de agendamento tambm so armazenadas no banco de dados do servidor de realtrios.
O servidor de relatrios coloca os agendamentos em uma fila e envia as requisies para a mquina de
agendamento, para processamento nos horrios e datas previamente agendadas. Para criar os
agendamentos, o Reporting Services se baseia nos servios oferecidos pelo SQL Server Agent. Os
agendamentos no sero processados se o SQL Server Agent no estiver rodando ou houver algum
problema com este servio.
Delivery extensions: O componente Scheduling and Delivery Processor, descrito anteriormente,
utiliza o componente conhecido como Delivery extensions, para enviar os relatrios para
diferentes localizaes e destinos. Juntamente com o Reporting Services so instaladas extenses
de entrega para envio dos relatrios via e-mail ou para uma pasta compartilhada em um servidor.
Evidentemente que outras extenses podem ser criadas pelos programadores, usando as APIs
de programao disponveis.
O mecanismo de envio de relatrios (delivery extensions) trabalha em conjunto com o mecanismo de
inscries (subscriptions). Quando um usurio faz uma inscrio, ele define qual o mtodo de entrega
a ser utilizado, o que determinar como os relatrios sero enviados para ele.
E-Mail Delivery Extension: Esta extenso permite que os relatrios sejam enviados via e-
mail, usando o protocolo SMTP. Para isso deve estar disponvel um servidor SMTP. Pode ser
o servidor SMTP que vem junto com o IIS ou um servidor mais sofisticado, tal com o
Exchange Server 2003.
File Share Delivery Extension: Com esta extenso, os relatrios podem ser salvos em uma
pasta compartilhada, em um servidor da rede, no formato de sada definido durante a criao
do relatrio. Por exemplo, pode ser criada uma pasta compartilhada chamada Indicadores, em
um servidor de arquivos da rede. Posso configurar uma srie de relatrios, os quais sero gerados
no formato de planilhas do Excel e salvos, automaticamente, na pasta compartilhada
Indicadores. Alm disso, usando o agendamento, posso fazer com que os relatrios sejam
atualizados, periodicamente. Por exemplo, atualizao de hora em hora. Com isso, terei uma
pasta Indicadores, com planilhas sempre atualizadas (com no mximo uma hora de defasagem),
planilhas estas geradas, automaticamente, pelo Reporting Services. Este exemplo demonstra
bem que o Reporting Services, mais do que uma plataforma para gerao de relatrios, tambm
um framework para atualizao e distribuio destes relatrios, nos mais variados formatos,
atravs da rede da empresa.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8580000Curso Completo
N
O
T
A
Rendering Extensions: Estes so os componentes responsveis por fazer a formatao final do
relatrio. Ou seja, so estes componentes que definem em quais formatos os relatrios podem
ser disponibilizados. Por enquanto, esto disponveis seis formatos de sada:
HTML
Excel
Text
XML
Image
PDF
Nunca demais salientar que podem ser criadas extenses adicionais, para permitir a sada em outros formatos.
Quando um relatrio gerado no formato de uma planilha do Excel, preciso do Excel XP ou superior. Esta
opo cria arquivos no formato MHTML. Este um tipo MIME par ao Excel e contm tags HTML e XML
que so especficas para o Excel XP ou superior, no sendo compatveis com verses anteriores do Excel.
Uma opo que tambm est disponvel a gerao dos relatrios no formato CSV Comma-Separated
Value. Um arquivo .CSV um arquivo de texto, o qual reconhecido por qualquer verso do Excel, e
tambm pode ser importado pela maioria dos bancos de dados, como por exemplo o Microsoft Access.
Com a extenso Image Rendering Extension, possvel gerar os relatrios como figuras nos formatos:
BMP, EMF, GIF, JPEG, PNG, TIFF, and WMF. Por padro utilizado o formato TIFF. A vantagem do uso
do formato de imagem que a aparncia do relatrio ser exatamente a mesma, para todos os clientes
que acessarem o relatrio. J com formatos como o HTML, dependendo do cliente que estiver sendo
utilizado para acessar o relatrio, podero haver diferenas na apresentao do relatrio.
Ao usar o PDF Rendering Extension, voc poder gerar arquivos .PDF os quais so compatveis com o
Adove Reader 4.0 ou superior.
Bem. Com isso acredito que j tivemos uma boa dose de teoria, com a qual foi possvel ter uma
noo clara do que e quais os usos do Reporting Services. A partir do prximo tpico, faremos uma
srie de exemplos prticos, passo a passo.
DESENVOLVIMENTO EM: REQUISITOS PARA QUE O
REPORTING SERVICES FUNCIONE CORRETAMENTE
PR-REQUISITOS
Conhecimento sobre os elementos do Reporting Services.
METODOLOGIA
Apresentao dos pr-requisitos para funcionamento do Reporting Services.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000859
O Reporting Services instalado durante a instalao do SQL Server 2005. Em uma das etapas da
instalao, mostradas no Captulo 2, voc marca a opo Reporting Services. As funcionalidades do
Reporting Services so dependentes do IIS. Por isso, antes de instalar o Reporting Services, voc deve
certificar-se de que o IIS esteja corretamente instalado e esteja funcionando. Para testar se o IIS est
instalado e funcionando s abrir o seu navegador e digitar o seguinte endereo http://localhost. Se
for aberta a tela inicial do site padro, sinal de que o IIS est corretamente instalado e est funcionando.
Caso d erro ao acessar o endereo http://localhost voc deve, inicialmente, verificar se o IIS est instalado.
Se o IIS no estiver instalado, voc deve instal-lo, usando os passos descritos no Captulo 13.
REQUISITOS DO IIS E DO ASP.NET PARA A INSTALAO DO REPORTING SERVICES
Para que a instalao do Reporting Services possa ser feita com sucesso, alguns requerimentos devem
ser atendidos, principalmente em relao ao IIS e ao funcionamento do ASP.NET, do qual depende o
funcionamento do IIS. Devem ser atendidos os seguintes requisitos:
Deve existir um Web Site padro, configurado no IIS, para que o Reporting Services possa criar
as pastas virtuais, necessrias ao seu funcionamento. Ao instalar o IIS, j , automaticamente,
criado um Web Site padro. Pode ser utilizado este Web site, criado pelo IIS.
Configurao de contas padro com as quais o IIS ir rodar. Estas configuraes tambm so
feitas, automaticamente, durante a instalao do IIS.
O ASP.NET deve estar funcionando corretamente e configurado para rodar com a conta padro
configurada para o ASP.NET. Esta configurao feita tambm, automaticamente, durante a
instalao do Framework .NET.
Observe que, ao instalar o IIS e o Framework .NET, com as configuraes padro, voc j atender os
pr-requisitos para que o Reporting Services possa ser instalado e possa funcionar, corretamente.
Claro que sempre existe a possibilidade de surgirem problemas. No Books Online, na seo: Installing
SQL Server -> Installing SQL Server 2005 Components -> Installing Reporting Services, voc encontra
informaes detalhadas sobre todo o processo de instalao do Reporting Services e sobre como re-
solver problemas que podem surgir, durante a instalao.
DESENVOLVIMENTO EM: IMPORTANDO O NORTHWIND.MDB
E DEFININDO OS RELACIONAMENTOS
PR-REQUISITOS
Conhecimento sobre Importao/Exportao de dados com o SQL Server 2005.
METODOLOGIA
Exemplo prtico, passo-a-passo.
Antes de comearmos a criao de relatrios, vamos preparar o ambiente. Eu optei por importar o
banco de dados Northwind.mdb, do Access, para dentro do SQL Server 2005 e definir, dentro do SQL
Server, os relacionamentos entre as tabelas importadas. Optei por importar e utilizar o Northwind.mdb,
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8600000Curso Completo
por ser um banco de dados bem conhecido, com o qual a maioria dos leitores j deve ter trabalhado. O
banco de dados AdventureWorks um banco bastante normalizado, com um grande nmero de tabelas.
Demora um bom tempo at que consigamos entender bem a estrutura do banco de dados
AdventureWorks. Como o objetivo deste captulo mostrar como utilizar o Reporting Services, optei
por utilizar o Northwind.mdb, por ser este um banco j bem conhecido dos amigos leitores. A seguir
faremos a importao do Northwind.mdb para dentro do SQL Server 2000 e, logo em seguida,
definiremos as chaves primrias e os relacionamentos entre as tabelas.
Primera etapa: Usar o assistente de Importao/Exportao, para importar as tabelas do banco de dados
Northwind.mdb para um banco de dados NorthwindReport, no SQL Server. O banco de dados
NorthwindReport ser criado durante a importao.
Para importar o banco de dados Northwind.mdb, para dentro do SQL Server 2005, siga os passos
indicados a seguir:
1. Abra o DTS Import/Export Wizard: Iniciar -> Programas -> Microsoft SQL Server 2005 -> DTS
Import/Export Wizard.
2. Ser aberto o assistente para importao e exportao de dados. A primeira tela do assistente
somente informativa. Clique em Next para seguir para a prxima etapa do assistente.
Figura 14.3 Criando o banco de dados NorthwindReport.
3. Nesta etapa voc informa os dados sobre a origem dos dados. Na lista Data source selecione a
opo Microsoft Access. No campo File name voc informa o caminho completo para o banco
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000861
de dados Northwind.mdb. Normalmente, este banco de dados est gravado no seguinte
caminho: C:\Arquivos de programas\Microsoft Office\Office\Samples\Northwind.mdb. Digite
o caminho para acessar o banco de dados Northwind.mdb
4. Clique em Next, para seguir para a prxima etapa do assistente.
5. Nesta etapa definimos para qual banco de dados do SQL Server iremos importar os dados do
Northwind.mdb. Na lista Destination selecione a opo Microsoft OLE DB Provider for SQL
Server. Na lista Server name, selecione a instncia para a qual sero importados os dados.
6. Vamos criar um novo banco de dados chamado NortwhindReport, para o qual sero importados
os dados. Clique no boto New. Ser aberta a janela Create database. Defina as opes indicadas
na Figura 14.3. Clique em OK para criar o banco de dados NorthwindReport.
7. Voc estar de volta ao assistente de importao. Clique em Next para seguir para a prxima
etapa do assistente.
8. Nesta etapa marque a opo Copy data from one or more tables or views. Clique em Next
para seguir para a prxima etapa do assistente.
9. Nesta etapa voc marca as tabelas a serem importadas. Marque as tabelas Categorias, Clientes,
Detalhes do Pedido, Fornecedores, Funcionrios, Pedidos, Produtos e Transportadoras, conforme
indicado na Figura 14.4:
Figura 14.4 Selecionando as tabelas a serem importadas.
10. Clique em Next para seguir para a prxima etapa do assistente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8620000Curso Completo
11. Nesta etapa, certifique-se de que a opo Execute immediately esteja selecionada e que a opo
Save DTS Package esteja desmarcada. Clique em Next para seguir para a prxima etapa do assistente.
12. Ser exibido um resumo das opes selecionadas. Caso voc precise alterar alguma opo, voc
pode usar o boto Back. Clique em Finish.
13. Ser iniciado o processo de importao. Uma janela, indicando o andamento dos trabalhos
ser exibida, conforme indicado na Figura 14.5:
Figura 14.5 Importao em andamento.
14. Ao ser concluda a importao, o boto Close ser habilitado. Clique em Close para encerrar o
DTS Import/Export Wizard.
15. Muito bem, o banco de dados NorthwindReport ter sido criado e todas as tabelas do
Northwind.mdb foram importadas para dentro do banco de dados NorthwindReport, como
pode ser conferido usando o SQL Server Management Studio, conforme indicado na Figura 14.6.
Muito bem, agora j estamos aptos a ir para a segunda etapa, na qual vamos definir as chaves primrias
e os relacionamentos para as tabelas do banco de dados NorthwindReport. Quando voc importa
tabelas do Microsoft Access, as definies de chave primria e relacionamentos no so importadas
para o SQL Server 2005. Na Figura 14.7 temos o Diagrama Entidade x Relacionamentos, no qual esto
exibidos os relacionamentos que sero definidos para o banco de dados NorthwindReport.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000863
Figura 14.6 Importao concluda com sucesso.
Figura 14.7 Relacionamentos para o banco de dados NorthwindReport.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8640000Curso Completo
Segunda etapa: Para definir as chaves primrias e relacionamentos para o banco de dados
NorthwindReport, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio e navegue at o banco de dados NorthwindReport,
criado na etapa anterior.
2. Navegue at o banco de dados NorthwindReport e clique no sinal de + ao lado deste banco de
dados, para exibir as opes disponveis.
3. Clique no sinal de + ao lado da opo Tables, para exibir a lista de tabelas disponveis. Devero ser
exibidas as tabelas Categorias, Clientes, Detalhes do Pedido, Fornecedores, Funcionrios, Pedidos,
Produtos e Transportadores. Vamos comear por definir as chaves primrias para as tabelas.
4. Clique com o boto direito do mouse na tabela Categorias e, no menu de opes que exibido,
clique em Modify Table. Ser exibida a janela para modificao da estrutura da tabela Categorias.
5. A chave primria da tabela Categorias ser o campo CdigoDaCategoria. Selecione a linha
CdigoDaCategoria (para selecionar uma linha, clique no boto cinza, ao lado do nome do
campo). Estando a linha CdigoDaCategoria selecionada, selecione o comando Table Designer
-> Set Primary Key. O desenho de uma pequena chave amarela ser exibido ao lado do campo
CdigoDaCategoria, conforme indicado na Figura 14.8. Este desenho indica que o campo foi
configurado como chave primria da tabela.
Figura 14.8 Campo CdigoDaCategoria definido como chave primria.
6. Pressione Ctrl+S para salvar as alteraes. Selecione o comando File -> Close, para fechar a
janela de edio da estrutura da tabela Categorias.
7. Agora vamos definir as chaves primrias para os demais campos. Seguindo as orientaes dos
passos anteriores, defina os seguintes campos como chave primria:
CdigoDoCliente da tabela Clientes
CdigoDoFornecedor da tabela Fornecedores
CdigoDoFuncionrio da tabela Funcionrios
NmeroDoPedido da tabela Pedidos
CdigoDoProduto da tabela Produtos
CdigoDaTransportadora da tabela Transportadoras
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000865
Muito bem, uma vez definidas as chaves primrias, vamos definir os relacionamentos entre as tabelas.
Por exemplo, tem um relacionamento entre as tabelas Pedidos e Detalhes do Pedido. O relacionamento
atravs do campo NmeroDoPedido. Na tabela Pedidos, o campo NmeroDoPedido uma chave
primria. Na tabela Detalhes do Pedido, o campo nmero do pedido uma chave estrangeira. O
relacionamento do tipo Um-para-vrios. Um do lado pedidos, ou seja, cada pedido somente pode ser
cadastrado uma nica vez. Vrios no lado Detalhes do Pedido, ou seja, um mesmo pedido pode ter
vrios itens. Estes so princpios bsicos do modelo relacional de dados, princpios estes que foram
abordados no Captulo 1.
No nosso exemplo, temos que definir os relacionamentos indicados na tabela a seguir:
Vamos ento prtica, implementar estes sete relacionamentos, no banco de dados NorthwindReport.
8. Voc j deve estar com a lista de tabelas do banco de dados NorthwindReport sendo exibida.
Vamos iniciar criando o relacionamento entre as tabelas Pedidos e Detalhes do Pedido, atravs
do campo NmeroDoPedido.
9. Clique com o boto direito do mouse na tabela Detalhes do Pedido e, no menu que exibido,
clique em Modify Table. Ser exibida a estrutura da tabela Detalhes do Pedido. Observe que o
relacionamento criado, acessando a estrutura da tabela que est no lado vrios do
relacionamento. Neste primeiro caso, o relacionamento entre as tabelas Pedidos (lado um) e
Detalhes do Pedido (lado vrios), atravs do campo NmeroDoPedido.
10. Execute o comando Table Designer -> Relationships. Ser aberta a janela Foreign Key Relation-
ship, na qual iremos criar o relacionamento.
11. Clique no boto Add.
12. Um novo relacionamento ser criado e um nome ser, automaticamente, atribudo a este
relacionamento. Agora temos que informar ao SQL Server quais os campos que compem o
relacionamento.
13. No lado direito da janela clique no sinal de + ao lado da opo Tables and Columns Specifica-
tion, destacada na Figura 14.9:
Lado Um Lado Vrios
NmeroDoPedido da tabela Pedidos NmeroDoPedido da tabela Detalhes do Pedido
CdigoDoFuncionrio da tabela Funcionrios CdigoDoFuncionrio da tabela Pedidos
CdigoDaTransportadora da tabela Transportadoras Via da tabela Pedidos
CdigoDoCliente da tabela Clientes CdigoDoCliente da tabela Pedidos
CdigoDoProduto da tabela Produtos CdigoDoProduto da tabela Detalhes do Pedido
CdigoDaCategoria da tabela Categorias CdigoDaCategoria da tabela Produtos
CdigoDoFornecedor da tabela Fornecedores CdigoDoFornecedor da tabela Produtos
Tabela 14.1 Relacionamentos a serem criados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8660000Curso Completo
Figura 14.9 A janela para criao do relacionamento.
14. Clique no boto com as reticncias, ao lado da opo Tables and Columns Specification. Ser
aberta a janela Tables and Columns, na qual voc define qual campo em qual tabela o lado
um do relacionamento e qual campo de qual tabela o lado vrios. Na lista Primary Key Table,
selecione a tabela Pedidos. O lado um do relacionamento o campo NmeroDoPedido da
tabela Pedidos. Clique na linha em branco, abaixo da tabela Pedidos. Ser habilitada a lista de
campos da tabela Pedidos. Nesta lista selecione o campo NmeroDoPedido. Pronto, acabamos
de definir o lado Um do relacionamento. Na lista Foreign Key Table j vem selecionada a tabela
Detalhes do Pedido. Como clicamos com o boto direito do mouse nesta tabela e selecionamos
Modify Table, ela j vem selecionada como sendo o lado vrios. Clique na linha em branco,
abaixo de Detalhes do Pedido. Ser habilitada uma lista, com os campos da tabela Detalhes do
Pedido. Abra a lista e selecione o campo NmeroDoPedido. No campo Relationship name
digite um nome para o relacionamento. Vamos digitar o nome: Pedidos_DetalhesDoPedido.
Sua janela deve estar conforme indicado na Figura 14.10:
Figura 14.10 Criando um novo relacionamento.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000867
15. Clique em OK. Voc estar de volta janela Foreign Key RelationShips. Clique em Close para
fech-la. Voc estar de volta estrutura da tabela Detalhes do Pedido. Pressione Ctrl + S para
salvar as alteraes. Ser aberta uma janela informando que sero salvas alteraes nas tabelas
Pedidos e Detalhes do Pedido, ou seja, justamente as tabelas que compem o relacionamento
que acabamos de criar. Clique em Yes para confirmar. Selecione o comando File -> Close para
fechar a janela para alteraes na tabela Detalhes do Pedido.
16. Com base nas explicaes que foram apresentadas, crie os demais relacionamentos propostos
para o banco de dados NorthwindReport. Lembre-se que voc deve clicar com o boto direito
do mouse, sempre na tabela que ser o lado Vrios do relacionamento. Por exemplo, para criar
o seguinte relacionamento:
Voc deve clicar com o boto direito do mouse na tabela Pedidos. No menu de opes que surge, clique
em Modify Table e siga os passos descritos anteriormente, para criar este novo relacionamento.
Muito bem, aps ter criado todos os relacionamentos propostos, estamos prontos para comear a criar
os relatrios, usando servio de relatrios do SQL Server 2005. Esse justamente o assunto do prximo
tpico. Feche o SQL Server Management Studio.
DESENVOLVIMENTO EM: UTILIZANDO O REPORTING SERVICES
PR-REQUISITOS
Conhecimento bsico dos componentes do Reporting Services.
METODOLOGIA
Exemplos prticos de criao e utilizao de relatrios.
EXEMPLO PRTICO O PRIMEIRO RELATRIO
Neste item vamos criar o nosso primeiro relatrio este relatrio ser baseado no banco de dados
NorthwindReport (o qual preparamos no tpico anterior). Este banco de dados tem algumas tabelas
tradicionais, para clientes, funcionrios, pedidos, produtos e vendas. o j mais do que conhecido
Northwind.mdb, o qual importamos para dentro do SQL Server 2005. Para iniciar o nosso trabalho
com o Reporting Services, vamos criar um exemplo bastante simples, onde criaremos uma listagem
dos clientes. Esta listagem apresentar o nome do cliente e alguns dados adicionais, tais como endereo,
cidade, pas e regio.
Exemplo prtico: Criar um relatrio, o qual gera uma listagem de clientes. Devem constar da listagem
informaes tais como Nome do cliente, endereo, cidade, pas, regio e telefone de contato. Ordenar
a listagem pelo nome do cliente.
Lado Um Lado Vrios
CdigoDoFuncionrio da tabela Funcionrios CdigoDoFuncionrio da tabela Pedidos
Tabela 14.2 Relacionamento Funcionrios x Pedidos.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8680000Curso Completo
N
O
T
A
Para criar a listagem proposta, siga os passos indicados a seguir:
1. Abra o Business Intelligence Development Studio: Iniciar -> Programas -> Microsoft SQL Server
2005 -> Business Intelligence Development Studio.
O Business Intelligence Development Studio assunto, no para um livro inteiro, mas sim para uma enciclopdia inteira. O que d para fazer
com esta ferramenta algo realmente incrvel. Neste captulo, me limitarei a mostrar como usar esta ferramenta para criar diferentes tipos
de relatrios.
2. Ser aberto o Business Intelligence Development Studio, com uma tela em branco, sem nenhum
projeto. Para criar um novo relatrio, vamos criar um novo projeto. Selecione o comando File
-> New -> Project.
3. Ser aberta a janela New Project. Na lista Project Types selecione a opo Business Intelligence
Projects. Nas opes que so exibidas no painel da direita, marque a opo Report Project
Wizard, conforme indicado na Figura 14.11:
Figura 14.11 A opo Report Server Project Wizard.
4. No campo Name digite Listagem de Clientes.
5. No campo Location, vamos aceitar a pasta padro para gravao das definies de relatrios
que, no nosso caso, em: F:\Documents and Settings\Administrador\Meus documentos\Visual
Studio\Projects. Voc poderia escolher qualquer outra pasta a ser utilizada, inclusive poderia
ser uma pasta compartilhada, em um servidor de arquivos da rede.
6. Clique em OK.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000869
7. Ser exibida a tela inicial do assistente. Esta tela apenas informativa. Clique em Next, para
seguir para a prxima etapa do assistente.
8. Nesta etapa voc definir as informaes sobre a fonte de dados a ser utilizada. No campo
Name, voc deve digitar um nome que ir identificar a fonte de dados. Digite: NortwindReport.
Na lista Type, voc define qual o tipo da fonte de dados. Aparecem nesta lista os tipos para os
quais o Reporting Services tem Data Processing Extensions instalados. No nosso exemplo,
certifique-se de que a opo Microsoft SQL Server esteja selecionada.
9. O prximo passo seria digitar a string de conexo, no campo Connection String. Porm, como
no estamos habituados a digitar, manualmente, os dados para a string de conexo, no
conhecemos a sintaxe para uma string de conexo. Felizmente o assistente tambm pode nos
ajudar nesta etapa. D um clique no boto Edit. Ser aberta a janela Propriedades de vinculao
de dados, indicada na Figura 14.12:
Figura 14.12 A janela Propriedades de vinculao de dados.
10. Clique no boto Change. Ser aberta a janela Change Data Source. Clique na opo OLE DB
para marc-la e clique em OK.
11. Voc estar de volta jenela Connection Properties. Na lista OLE DB Provider selecione a
opo Microsoft OLE DB Provider for SQL Server.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8700000Curso Completo
N
O
T
A
Figura 14.13 A janela para selecionar o servidor SQL Server a ser utilizado.
13. Abra a lista Select or enter a server name e selecione o nome do SERVIDOR\INSTNCIA,
onde est o banco de dados a ser utilizado para criao do relatrio. No nosso exemplo,
selecionarei a instncia SERVIDOR2\JBCURSOS. Selecione a instncia que voc est utilizando
para criar este relatrio.
14. Depois voc deve informar o tipo de autenticao que voc est utilizando. Para o nosso exemplo,
marque a opo Use Windows NT Integraded security.
15. Abra a lista Select the database on the server e clique na opo NorthwindReport. Sua janela
deve estar com as configuraes indicadas na Figura 14.14.
Voc pode testar se est tudo OK com as configuraes da fonte de dados. Para isso clique no boto Test Connection. Ser exibida uma
mensagem informando que est tudo OK com a conexo. Clique em OK para fechar esta mensagem.
16. Voc estar de volta janela Propriedades de vinculao de dados. Clique em OK para fech-la.
Voc estar de volta janela Connection Properties. Clique em OK para fech-la. Voc estar
de volta ao assistente de criao do relatrio e a string de conexo ter sido definida. No nosso
exemplo, a string de conexo ficou assim:
Provider=SQLOLEDB.1;Data Source=SERVIDOR2\JBCURSOS;Initial Catalog=NortwindReport
12. Clique no boto Data Links. Ser aberta a janela Data Link Properties, indicada na Figura 14.13:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000871
Figura 14.14 Definindo o banco de dados a ser utilizado.
Voc pode marcar a opo Make this a shared data source, para que esta fonte de dados esteja disponvel
para outros relatrios que venham a ser criados. Marque esta opo. Sua janela deve estar conforme
indicado na Figura 14.15:
Figura 14.15 A fonte de dados j est definida.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8720000Curso Completo
17. Clique em Next, para seguir para a prxima etapa do assistente.
18. Nesta etapa voc poder digitar diretamente o comando T-SQL da consulta ou usar o Construtor
de consultas (Query Builder). O construtor de consultas muito semelhante grade de criao
de consultas do Microsoft Access. D um clique no boto Query Builder. Ser aberta a janela
Query Builder. A janela aparece, por padro, sem todas as funcionalidades habilitadas. D um
clique no primeiro boto (bem esquerda). o boto Generic Query Designer. Ao clicar neste
boto, ser exibida a interface completa do Query Builder.
19. O primeiro passo adicionar as tabelas nas quais ser baseada a consulta. Para adicionar uma
ou mais tabelas, clique no boto Add table (ltimo boto, bem direita, com um sinal de +
amarelo). Ser aberta a janela Add tables, com a lista de tabelas do banco de dados
NorthwindReport. Voc pode selecionar mais de uma tabela, pressionando e mantendo
pressionada a tecla Ctrl. Mantendo Ctrl pressionada, v clicando nas tabelas a serem adicionadas
consulta. Neste nosso primeiro exemplo, vamos utilizar uma nica tabela: A tabela Clientes.
Marque a tabela: Clientes. Clique no boto Add, para adicionar a tabela selecionada. Clique
em Close. Sua janela deve estar semelhante indicada na Figura 14.16:
Figura 14.16 A janela Query Builder.
20. Muito bem, o nosso prximo passo marcar quais campos faro parte do relatrio. Para isso,
basta marcar a caixa de seleo, ao lado do nome do campo.
21. Marque os seguintes campos:
NomeDaEmpresa
Endereo
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000873
Cidade
Regio
Pas
Telefone
Sua janela deve estar conforme indicado na Figura 14.17:
Figura 14.17 Selecionando os campos que faro parte do relatrio.
Observe que, medida que voc vai selecionando os campos que faro parte do relatrio, o comando
T-SQL vai sendo atualizado, na parte de baixo da janela. Esta tela praticamente igual tela para
a criao de consultas utilizada no Access. Voc pode ver uma prvia dos registros que sero
retornados, clicando no boto Executar (boto com um ponto de exclamao vermelho). Ao clicar
neste boto, aps alguns instantes, exibida a listagem de registros, na parte de baixo da tela,
conforme indicado na Figura 14.18.
22. Vamos ordenar o relatrio pelo campo NomeDaEmpresa. Na linha NomeDaEmpresa, na coluna
Sort Type, selecione a opo Ascending, para fazer ordenar os resultados em ordem alfabtica
do campo NomeDaEmpresa. Voc pode fazer a ordenao por mais de um campo. Ao fazer a
ordenao por mais de um campo, voc pode usar a coluna Sort Order, para definir qual o
primeiro campo a ser considerado na ordenao, qual o segundo e assim por diante. Por exemplo,
se voc quisesse classificar primeiro pelo Pas e dentro do Pas pelo Nome da empresa, voc
selecionaria Sort Order = 1 para o campo Pas e Sort Order = 2 para o campo NomeDaEmpresa.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8740000Curso Completo
N
O
T
A
Figura 14.18 Uma prvia dos resultados.
23. Muito bem, para o primeiro exemplo, so basicamente estas as definies para os dados que
faro parte do relatrio. D um clique em OK para fechar a janela do Query Builder e voltar ao
assistente de criao do relatrio.
24. Voc estar de volta ao assistente, com o comando T-SQL j definido. Para o nosso exemplo, o
Query Builder nos ajudou a criar o seguinte comando:
SELECT NomeDaEmpresa, Endereo, Cidade, Regio, Pas, Telefone
FROM Clientes
ORDER BY NomeDaEmpresa
Se voc se sente vontade com os comandos T-SQL, pode digitar o comando diretamente, sem ter que utilizar o Query Builder.
25. Clique em Next, para seguir para a prxima etapa do assistente.
26. Nesta etapa voc define se ir criar um relatrio do tipo Tabular, que so as tradicionais listagens,
ou um relatrio do tipo Matrix, que so conhecidas no Access como Consultas de Tabela de
Referncia Cruzada. No prximo exemplo faremos um exemplo de relatrio do tipo Matrix,
passo a passo. Para este nosso primeiro exemplo, selecione a opo Tabular.
27. Clique em Next, para seguir para a prxima etapa do assistente.
28. Nesta etapa voc deve definir se sero feitos agrupamentos no relatrio. Neste nosso primeiro exemplo
no iremos trabalhar com agrupamentos. Em um dos prximos exemplos eu explicarei o que o
agrupamento e como utiliz-lo. Clique em Next, para seguir para a prxima etapa do assistente.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000875
Figura 14.19 Selecionando um layout predefinido.
30. Clique em Next, para seguir para a prxima etapa do assistente.
31. Nesta etapa voc deve informar o servidor Web onde o relatrio ser publicado. Voc deve informar
o endereo para o servidor onde o Reporting Services est instalado. No nosso exemplo vamos
usar o servidor local. Informe o seguinte endereo http://localhost/ReportServer$JBCURSOS ( o
padro de nome ReportServer, o sinal de $ mais o nome da instncia). Voc tambm pode
informar o nome de uma pasta. Esta pasta ser criada, configurada como um diretrio virtual e o
relatrio ser gravado nesta pasta. Para o nome da pasta digite Exemplos.
32. Clique em Next, para seguir para a prxima etapa do assistente.
33. Ser exibida a tela final do assistente, com um resumo das opes que foram selecionadas nas
etapas anteriores. Nesta etapa voc tambm pode definir um nome para o relatrio. No campo
Report name, digite: Listagem de Clientes. Marque a opo Preview report para que seja exibida
uma prvia do que ser a verso final do relatrio. Voc pode utilizar o boto Back, para voltar
a qualquer uma das etapas e fazer as alteraes necessrias. Clique em Finish para encerrar o
assistente e criar o relatrio.
34. O relatrio ser criado e uma prvia ser exibida no SQL Server Business Intelligence Develop-
ment Studio, conforme indicado na Figura 14.20:
35. Mantenha o relatrio aberto no SQL Server Business Intelligence Development Studio, pois
vamos continuar a trabalhar com ele, nos prximos tpicos.
29. Nesta etapa voc pode escolher um, dentre diversos layouts sugeridos. Selecione a opo Bold,
conforme indicado na Figura 14.19:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8760000Curso Completo
N
O
T
A
Figura 14.20 Visualizao do relatrio.
SALVANDO O RELATRIO EM DIFERENTES FORMATOS
Muito bem, criamos o relatrio. Mas o principal objetivo em criar um relatrio que ele possa ser
utilizado pelos usurios que dele necessitarem. A entra em cena mais uma funcionalidade importante
do Reporting Services. Permitir que um relatrio seja acessado em diferentes formatos e de diferentes
maneiras. Por exemplo, voc pode exportar o relatrio para uma srie de formatos suportados pelo
Reporting Services. Voc pode publicar o relatrio no servidor Web, para ser acessado via browser.
Muito bem, vamos aprender a salvar o relatrio em diferentes formatos.
Exemplo: Para salvar um relatrio em diferentes formatos, siga os passos indicados a seguir:
1. O relatrio j deve estar aberto dentro do SQL Server Business Intelligence Development Studio.
Se o relatrio no estiver aberto, basta abrir o SQL Server Business Intelligence Development Studio e usar o comando File -> Open ->
Project/Solution para abrir o projeto no qual est o relatrio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000877
2. Na rea onde o relatrio est sendo visualizado, clique com o boto direito do mouse, em
qualquer parte do relatrio. Na lista de opes que exibida aponte para Export. Ser exibida
a lista de formatos disponveis, conforme indicado na Figura 14.21:
Figura 14.21 Formatos de exportao disponveis.
3. Clique no formato a ser utilizado. Para o nosso exemplo, clique na opo Acrobat (PDF) file.
Ser aberta a janela Save as, para que voc selecione a pasta onde sero gravados o arquivo .PDF
e o nome do arquivo. No nosso exemplo, selecionei a pasta Meus documentos e para o nome
do arquivo mantive Listagem de Clientes.pdf, conforme indicado na Figura 14.22:
Figura 14.22 Salvando o relatrio no formato .PDF.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8780000Curso Completo
4. Clique em Save. Pronto, ser gerado um arquivo .PDF, com o nome Listagem de Clientes, na
pasta Meus documentos. Para abrir o relatrio no formato .PDF voc deve ter o Adobe Reader
instalado no computador. V para a pasta Meus documentos e d um clique duplo no arquivo
Listagem de Clientes.pdf. Pronto, o relatrio ser aberto, conforme indicado na Figura 14.23:
Figura 14.23 Abrindo o relatrio no formato .PDF.
5. Feche o arquivo Listagem de Clientes.PDF.
6. A ttulo de teste, vamos salvar o relatrio para o formato de uma planilha do Excel, com o
nome de Pedidos dos Clientes.xls, na pasta Meus documentos.
7. No SQL Server Business Intelligence Development Studio, clique com o boto direito do mouse
em qualquer local do relatrio. No menu de opes que exibido clique em Export -> Excel.
Ser aberta a janela Save as, para que voc selecione a pasta onde ser gravado o arquivo .XLS
e o nome do arquivo. No nosso exemplo, selecionei a pasta Meus documentos e para o nome
do arquivo mantive Listagem de Clientes.xls, conforme indicado na Figura 14.24.
8. Clique em Save. Pronto, ser gerado um arquivo .XLS, com o nome Listagem de Clientes.xls,
na pasta Meus documentos. Para abrir o relatrio no formato .XLS voc deve ter o Microsoft
Excel instalado no computador. V para a pasta Meus documentos e d um clique duplo no
arquivo Listagem de Clientes.xls. Pronto, o relatrio ser aberto no Excel, conforme indicado
na Figura 14.25.
9. Feche o Excel.
Muto bem. Voc viu que para exportar um relatrio em um ou mais formatos bastante simples. Volto
a salientar que uma das principais carectersticas do Reporting Services a sua capacidade de ter suas
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000879
funcionalidades extendidas. Os programadores podem criar extenses para o Reporting Services, para
permitir que os relatrios sejam exportados para os mais variados formatos.
Figura 14.24 Salvando o relatrio no formato .XLS.
Figura 14.25 Abrindo o relatrio no formato .XLS.
Agora vamos aprender a publicar o relatrio no IIS, de tal forma que ele possa ser acessado usando o
navegador.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8800000Curso Completo
N
O
T
A
N
O
T
A
PUBLICANDO O RELATRIO NO SERVIDOR WEB
Voc pode, facilmente, publicar um relatrio no servidor Web, de tal forma que o relatrio possa ser
acessado usando o navegador. A vantagem deste mtodo que, uma vez publicado no servidor Web, o
relatrio poder ser acessado a partir de qualquer estao de trabalho da rede, por qualquer usurio
(desde que o usurio tenha permisso de acesso ao relatrio), simplesmente usando um navegador.
Muito bem, vamos aprender a publicar o relatrio no servidor Web e acess-lo, usando um navegador.
Exemplo: Para publicar um relatrio no servidor Web e acess-lo usando um navegador, siga os passos
indicados a seguir:
1. O relatrio j deve estar aberto dentro do SQL Server Business Intelligence Development Studio.
Se o relatrio no estiver aberto, basta abrir o SQL Server Business Intelligence Development Studio e usar o comando File -> Open ->
Project/Solution para abrir o projeto no qual est o relatrio.
2. Para publicar o relatrio no servidor Web, utilize o comando Build -> Deploy Listagem de
Clientes e aguarde at que o SQL Server Business Intelligence Development Studio publique o
relatrio no servidor Web. O relatrio ser publicado, com base nas informaes que voc
forneceu em uma das ltimas etapas do assistente de criao do relatrio, onde voc informou
o nome do servidor e o nome da pasta onde ser publicado o relatrio. No nosso exemplo
utilizamos o servidor http://localhost/ReportServer$JBCURSOS, dentro do qual ser criada a
pasta Exemplos.
3. Muito bem, o relatrio foi publicado no servidor Web. Vamos acess-lo, usando o Internet
Explorer.
4. Abra o Internet Explorer e acesse o seguinte endereo: http://localhost/ReportServer$JBCURSOS
Lembrando que Report Server o padro sugerido durante a instalao do SQL Server 2005. Depois deste padro vem um sinal de $ e
depois o nome da instncia. Este padro pode ser modificado, durante a instalao do SQL Server 2005.
5. Ser exibida a listagem de pastas disponveis no servidor de relatrios, conforme indicado na
Figura 14.26.
6. D um clique em Exemplos. Ser exibida a lista de relatrios disponveis.
7. D um clique em Listagem de Clientes.
8. O relatrio ser carregado e exibido no Internet Explorer, conforme indicado na Figura 14.27:
Muito bem, com esse exemplo foi possvel mostrar ao amigo leitor o quo fcil criar um relatrio,
public-lo no servidor Web e acess-lo usando o navegador.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000881
N
O
T
A
Figura 14.26 A pasta Exemplos j criada no servidor Web.
Figura 14.27 Acessando o relatrio Listagem de Clientes, usando o Internet Explorer.
Importante: O relatrio no uma pgina HTML esttica, gerada no momento da criao do relatrio. No mesmo. O relatrio uma pgina
dinmica. Sempre que o relatrio solicitado, feita uma conexo com o banco de dados e so retornados os dados atualizados, a partir do
SQL Server. Ou seja, no relatrio no so gravados os dados obtidos no momento da criao do relatrio. Ao invs disso, so gravados os
comandos para acessar os dados a partir do SQL Server. Quando o relatrio solicitado, estes comandos so executados e os dados atualizados
so retornados a partir do SQL Server. Definitivamente, nunca foi to fcil e produtivo criar relatrios dinmicos.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8820000Curso Completo
A seguir vamos a mais dois exemplos prticos de relatrios, onde criaremos relatrios do tipo Matrix e
usando Grupos. Porm, antes, um pouco de teoria sobre relatrios do tipo Matrix, os quais so conhecidos
no Access como Consulta de Tabela de Referncia Cruzada. No item a seguir vamos entender o que
este tal de Matrix (que no tem nada a ver com a trilogia de filmes) ou Referncia Cruzada.
DESENVOLVIMENTO EM: CRIANDO RELATRIOS DO TIPO MATRIX
PR-REQUISITOS
Conhecimento sobre a criao bsica de relatrios com o Reporting Services.
METODOLOGIA
Apresentao dos conceitos sobre relatrios do tipo Matrix e criao de um exemplo prtico, passo a passo.
O que chamado de relatrio do tipo Matrix no Reporting Services muito semelhante s to famosas
Consultas de Referncias Cruzadas no Access. Um dos tpicos que mais aparece em fruns de discusso
do SQL Server justamente sobre o uso da clusula TRANSFORM do Access, no SQL Server. A resposta
que a clusula TRANSFORM uma inveno do Access. No um padro que existe no T-SQL e,
portanto, no est disponvel no SQL Server. Por isso que sempre foi muito mais difcil criar uma
referncia cruzada no SQL Server do que no Access.
Mas com o Reporting Sevices do SQL Server 2005 (conforme voc poder constatar na prtica), as
coisas ficaram bem mais fceis. Ficou muito fcil criar um relatrio do tipo Referncia Cruzada. Porm
antes de partirmos para a prtica fundamental que voc entenda o que so, como funcionam e quais
os elementos que compem uma referncia cruzada ou, melhor, usando a terminologia do Reporting
Services, um relatrio do tipo matrix.
ENTENDENDO AS REFERNCIAS CRUZADAS MATRIX
Inicialmente vamos entender como funcionam as referncias cruzadas no Access. Por analogia, ser
fcil entender como elas funcionam no Reporting Services e tambm ser fcil cria-las, usando o SQL
Server Business Intelligence Development Studio.
Uma consulta do tipo Tabela de Referncia cruzada (ou um relatrio do tipo Matrix), conforme o
prprio nome sugere, utilizada para cruzar valores de duas grandezas. Por exemplo, posso criar uma
consulta do tipo Tabela de Referncia cruzada para exibir o nmero de pedidos (quantitativo de pedidos)
por Pas De Destino e por ano do campo DataDoPedido, conforme indicado na Figura 14.27.
Podemos observar que as informaes retornadas por uma consulta deste tipo so informaes
consolidadas, onde estamos cruzando informaes do PasDeDestino, com o Ano da DataDoPedido. A
informao que estamos obtendo o Quantitativo de Pedidos por Ano e PasDeDestino.
Numa consulta do tipo Tabela de referncia cruzada, temos trs elementos bsicos:
Linha
Coluna
Valor
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000883
Figura 14.28 Informaes do quantitativo de Pedidos por PasDeDestino e ano da DataDoPedido.
Linha: No exemplo da Figura 14.28, o campo que forma as linhas o campo PasDeDestino, o que
significa que, para cada pas de destino diferente, ser retornada uma linha diferente.
Coluna: No exemplo da Figura 14.28, o campo que forma as colunas o Ano da DataDoPedido, o que
significa que para cada Ano diferente ser retornada uma nova coluna.
Valor: No exemplo da figura anterior, os valores que preenchem o restante da consulta so obtidos a
partir da contagem do nmero de pedidos.
Na Figura 14.29 temos um outro exemplo de referncia cruzada:
Figura 14.29 Total anual de vendas por pas de destino.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8840000Curso Completo
Quais as grandezas que esto sendo cruzadas neste relatrio?
Quais os elementos Ceste relatrio do tipo Matrix?
Respondendo a primeira pergunta: Neste exemplo estamos cruzando valores do campo PasDeDestino
com o Ano do campo DataDoPedido. No cruzamento, calculamos o total de venda. Ou seja, um
relatrio que nos d o total anual de vendas por pas de destino.
Respondendo a segunda pergunta: O pas de destino o campo linha, ou seja, para cada pas diferente,
temos uma linha diferente no resultado do relatrio. O Ano da Data do Pedido o campo coluna, ou
seja, para cada ano diferente, temos uma coluna diferente no resultado do relatrio. E por fim a soma
das vendas, por pas e por ano, o campo Valor.
Acredito que com estes dois exemplos tericos foi possvel ter uma boa noo dos elementos que
compem uma referncia cruzada, ou melhor, um relatrio do tipo Matrix. Agora vamos fazer um
exemplo prtico. Vamos usar o SQL Server Business Intelligence Development Studio para criar o
exemplo da Figura 14.28.
Exemplo prtico 01: Criar um relatrio do tipo Matrix, o qual exibe o total anual de vendas, por pas de
destino. Este relatrio ser baseado nas tabelas Pedidos e Detalhes do pedido, do banco de dados
NorthwindReport.
Para criar o relatrio do tipo Matrix, siga os passos indicados a seguir:
1. Abra o Business Intelligence Development Studio: Iniciar -> Programas -> Microsoft SQL Server
2005 -> Business Intelligence Development Studio.
2. Ser aberto o Business Intelligence Development Studio, com uma tela em branco, sem nenhum
projeto aberto. Para criar um novo relatrio, vamos criar um novo projeto. Selecione o comando
File -> New -> Project.
3. Ser aberta a janela New Project. Na lista Project Types selecione a opo Business Intelligence
Projects. Nas opes que so exibidas no painel da direita, marque a opo Report Project
Wizard (j indicada anteriormente na Figura 14.11).
4. No campo Name digite Total de Vendas por Pas.
5. No campo Location, vamos aceitar a pasta padro para gravao das definies de relatrios
que, no nosso caso, em: F:\Documents and Settings\Administrador\Meus documentos\Visual
Studio\Projects. Voc poderia escolher qualquer outra pasta a ser utilizada, inclusive poderia
ser uma pasta compartilhada, em um servidor de arquivos da rede.
6. Clique em OK.
7. Ser exibida a tela inicial do assistente. Esta tela apenas informativa. Clique em Next, para
seguir para a prxima etapa do assistente.
8. Nesta etapa voc definir as informaes sobre a fonte de dados a ser utilizada. No campo
Name, voc deve digitar um nome que ir identificar a fonte de dados. Digite: Northwind. Na
lista Type, voc define qual o tipo da fonte de dados. Aparecem nesta lista os tipos para os
quais o Reporting Services tem Data Processing Extensions instalados. No nosso exemplo,
certifique-se de que a opo Microsoft SQL Server esteja selecionada.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000885
9. O prximo passo seria digitar a string de conexo, no campo Connection String. Porm, como no
estamos habituados a digitar, manualmente, os dados para a string de conexo, no conhecemos a
sintaxe para uma string de conexo. Felizmente o assistente tambm pode nos ajudar nesta etapa.
D um clique no boto Edit. Ser aberta a janela Propriedades de vinculao de dados.
10. Clique no boto Change. Ser aberta a janela Change Data Source. Clique na opo OLE DB
para marc-la e clique em OK.
11. Voc estar de volta janela Connection Properties. Na lista OLE DB Provider selecione a
opo Microsoft OLE DB Provider for SQL Server.
12. Clique no boto Data Links. Ser aberta a janela Data Link Properties.
13. Abra a lista Select or enter a server name e selecione o nome do SERVIDOR\INSTNCIA,
onde est o banco de dados a ser utilizado para criao do relatrio. No nosso exemplo,
selecionarei a instncia SERVIDOR2\JBCURSOS. Selecione a instncia que voc est utilizando
para criar este relatrio.
14. Depois voc deve informar o tipo de autenticao que est utilizando. Para o nosso exemplo,
marque a opo Use Windows NT Integraded security.
15. Abra a lista Select the database on the server e clique na opo NorthwindReport. Sua janela
deve estar com as configuraes indicadas na Figura 14.30:
Figura 14.30 Definindo o banco de dados a ser utilizado.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8860000Curso Completo
N
O
T
A
Voc pode testar se est tudo OK com as configuraes da fonte de dados. Para isso clique no boto Test Connection. Ser exibida uma
mensagem informando que est tudo OK com a conexo. Clique em OK para fechar esta mensagem.
16. Voc estar de volta janela Propriedades de vinculao de dados. Clique em OK para fech-la.
Voc estar de volta janela Connection Properties. Clique em OK para fech-la. Voc estar
de volta ao assistente de criao do relatrio e a string de conexo ter sido definida. No nosso
exemplo, a string de conexo ficou assim:
Provider=SQLOLEDB.1;Data Source=SERVIDOR2\JBCURSOS;Initial Catalog=NortwindReport
Voc pode marcar a opo Make this a shared data source, para que esta fonte de dados esteja disponvel
para outros relatrios que venham a ser criados, dentro deste mesmo projeto. Em um nico projeto
criado com o SQL Server Business Intelligence Development Studio, possvel criar vrios relatrios.
17. Clique em Next, para seguir para a prxima etapa do assistente.
18. Nesta etapa voc poder digitar diretamente o comando T-SQL da consulta ou usar o Construtor
de consultas (Query Builder). O construtor de consultas muito semelhante grade de criao
de consultas do Microsoft Access. D um clique no boto Query Builder. Ser aberta a janela
Query Builder. A janela aparece, por padro, sem todas as funcionalidades habilitadas. D um
clique no primeiro boto (bem esquerda). o boto Generic Query Designer. Ao clicar neste
boto, ser exibida a interface completa do Query Builder (sinceramente eu no consegui
entender o porqu de o padro no vir j com a interface completa).
19. O primeiro passo adicionar as tabelas nas quais ser baseado o relatrio. Para adicionar uma ou
mais tabelas, clique no boto Add table (ltimo boto, bem direita, com um sinal de + amarelo).
Ser aberta a janela Add tables, com a lista de tabelas do banco de dados NorthwindReport. Voc
pode selecionar mais de uma tabela, pressionando e mantendo pressionada a tecla Ctrl. Mantendo
Ctrl pressionada, v clicando nas tabelas a serem adicionadas consulta. Neste nosso primeiro
exemplo, vamos utilizar as tabelas Pedidos e Detalhes do pedido. Marque as tabelas Pedidos e
Detalhes do pedido. Clique no boto Add, para adicionar as tabelas selecionadas.
20. Muito bem, o nosso prximo passo marcar quais campos faro parte do relatrio. Para isso,
basta marcar a caixa de seleo, ao lado do nome do campo.
21. Inicialmente marque o campo PasDeDestino da tabela Pedidos.
Agora temos uma novidade, que a criao de campos calculados. Ou seja, vamos criar campos que
no existem diretamente em nenhuma das tabelas. Estes campos sero calculados, quando da execuo
do relatrio e sero exibidos no relatrio. Vamos criar um campo para exibir somente o ano do campo
DataDoPedido e um outro campo que calcula o valor do item de cada pedido. A criao de campos
calculados bastante simples, conforme mostrarei logo a seguir.
22. Para criar um campo calculado, voc coloca a frmula de clculo na coluna Column e o nome
do campo vai na coluna Alias. No nosso exemplo, na primeira linha j temos o campo
PasDeDestino. Na segunda linha, logo abaixo de PasDeDestino, vamos criar o campo para
extrair somente o ano da DataDoPedido. Vamos iniciar digitando a frmula de clculo. Para
isso, utilizaremos a funo Year. Na coluna Column, da segunda linha, digite a seguinte frmula:
Year([DataDoPedido])
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000887
Esta frmula ir extrair somente o ano do campo DataDoPedido. Na coluna Alias, da segunda linha,
digite AnoRef. Este nome voc que escolhe, ou seja, voc define o nome da coluna calculada. Agora
vamos criar a outra coluna calculada.
23. Na terceira linha, logo abaixo da linha que extrai o ano, vamos criar o campo para calcular o
total por item de cada pedido. Vamos iniciar digitando a frmula de clculo. Na coluna Col-
umn, da terceira linha, digite a seguinte frmula:
([Quantidade]*[PreoUnitrio])*(1-[Desconto])
Esta frmula ir calcular o valor de cada item de cada pedido. Depois, ao ser executado o relatrio, ser
feito o cruzamento entre Pas e Ano e, no cruzamento destas informaes, ser feita a soma de todos os
itens correspondentes. Ou seja, o resultado prtico que teremos a soma do total de vendas por ano,
por pas de destino. Mas estas configuraes sero feitas em uma das prximas etapas do assistente. Na
coluna Alias, da terceira linha, digite TotalDeVendas. Este nome voc que escolhe, ou seja, voc
define o nome da coluna calculada. Agora vamos criar a outra coluna calculada.
Sua janela deve estar semelhante indicada na Figura 14.31:
Figura 14.31 Criando campos calculados.
24. Vamos ordenar o relatrio pelo campo PasDeDestino. Na linha PasDeDestino, na coluna Sort
Type, selecione a opo Ascending, para fazer ordenar os resultados em ordem alfabtica do
campo PasDeDestino.
25. D um clique em OK para fechar a janela do Query Builder e voltar ao assistente de criao do
relatrio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8880000Curso Completo
N
O
T
A
26. Voc estar de volta ao assistente, com o comando T-SQL j definido. Para o nosso exemplo, o
Query Builder nos ajudou a criar o seguinte comando:
SELECT Pedidos.PasDeDestino,
YEAR(Pedidos.DataDoPedido) AS AnoRef,
([Detalhes do Pedido].Quantidade * [Detalhes do Pedido].PreoUnitrio)
* (1 - [Detalhes do Pedido].Desconto)
AS TotalDeVendas
FROM
Pedidos INNER JOIN [Detalhes do Pedido]
ON
Pedidos.NmeroDoPedido = [Detalhes do Pedido].NmeroDoPedido
Se voc se sente vontade com os comandos T-SQL, pode digitar o comando diretamente, sem ter que utilizar o Query Builder.
27. Clique em Next, para seguir para a prxima etapa do assistente.
28. Nesta etapa voc define se ir criar um relatrio do tipo Tabular, que so as tradicionais listagens,
ou um relatrio do tipo Matrix, que so conhecidas no Access como Consultas de Tabela de
Referncia Cruzada. Opa, chegamos exatamente na etapa onde vamos definir que o nosso
relatrio ser do tipo Matrix. Para o nosso exemplo, selecione a opo Matrix.
29. Clique em Next, para seguir para a prxima etapa do assistente.
30. Nesta etapa que voc ir definir qual campo ser o campo linha (Rows), qual campo ser o
campo Coluna (Columns) e qual campo ser o campo Valor (Details). Temos tambm uma
opo adicional que o campo Page, o qual ser utilizado no prximo exemplo prtico.
No nosso exemplo, temos a seguinte configurao:
PasDeDestino -> Rows
AnoRef -> Columns
TotalDeVendas -> Details
31. Clique no campo PasDeDestino para marc-lo em seguida; clique no boto Rows, para defini-
lo como o campo Linha do Relatrio.
32. Clique no campo AnoRef para marc-lo, em seguida, clique no boto Columns, para defini-lo
como o campo Coluna do Relatrio.
33. Clique no campo TotalDeVendas para marc-lo, em seguida, clique no boto Details, para defin-
lo como o campo Valor do Relatrio. Sua janela deve estar conforme indicado na Figura 14.3.
34. Clique em Next, para seguir para a prxima etapa do assistente.
35. Nesta etapa voc pode escolher um, dentre diversos layouts sugeridos. Selecione a opo Bold.
36. Clique em Next, para seguir para a prxima etapa do assistente.
37. Nesta etapa voc deve informar o servidor Web onde o relatrio ser publicado. Voc deve informar
o endereo para o servidor onde o Reporting Services est instalado. No nosso exemplo vamos
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000889
usar o servidor local. Informe o seguinte endereo http://localhost/ReportServer$JBCURSOS (o
padro de nome ReportServer, o sinal de $ mais o nome da instncia). Voc tambm pode
informar o nome de uma pasta. Esta pasta ser criada, configurada como um diretrio virtual, e
o relatrio ser gravado nesta pasta. Para o nome da pasta digite VendasAnuais.
Figura 14.32 Definindo os elementos linha, coluna e valor.
38. Clique em Next, para seguir para a prxima etapa do assistente.
39. Ser exibida a tela final do assistente, com um resumo das opes que foram selecionadas nas
etapas anteriores. Nesta etapa voc tambm pode definir um nome para o relatrio. No campo
Report name, digite: Vendas Anuais por Pas. Marque a opo Preview report para que seja
exibida uma prvia do que ser a verso final do relatrio. Voc pode utilizar o boto Back,
para voltar a qualquer uma das etapas e fazer as alteraes necessrias. Clique em Finish para
encerrar o assistente e criar o relatrio.
40. O relatrio ser criado e uma prvia ser exibida no SQL Server Business Intelligence Develop-
ment Studio, conforme indicado na Figura 14.33.
41. Agora vamos publicar o relatrio no servidor Web e acess-lo usando o browser.
42. Para publicar o relatrio no servidor Web, utilize o comando Build -> Deploy Total de Vendas
por Pas e aguarde at que o SQL Server Business Intelligence Development Studio publique o
relatrio no servidor Web. O relatrio ser publicado, com base nas informaes que voc
forneceu em uma das ltimas etapas do assistente de criao do relatrio, onde voc informou
o nome do servidor e o nome da pasta onde ser publicado o relatrio. No nosso exemplo
utilizamos o servidor http://localhost/ReportServer$JBCURSOS, dentro do qual ser criada a
pasta VendasAnuais.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8900000Curso Completo
N
O
T
A
Figura 14.33 Visualizao do relatrio.
43. Muito bem, o relatrio foi publicado no servidor Web. Vamos acess-lo, usando o Internet Explorer.
44. Abra o Internet Explorer e acesse o seguinte endereo: http://localhost/ReportServer$JBCURSOS
Lembrando que ReportServer o padro sugerido durante a instalao do SQL Server 2005. Depois deste padro vem um sinal de $ e depois
o nome da instncia. Este padro pode ser modificado, durante a instalao do SQL Server 2005.
45. Ser exibida a listagem de pastas disponveis no servidor de relatrios, conforme indicado na
Figura 14.33, onde podemos observar que j est disponvel a pasta VendasAnuais.
46. D um clique em VendasAnuais. Ser exibida a lista de relatrios disponveis.
47. D um clique em Vendas Anuais por Pas.
48. O relatrio ser carregado e exibido no Internet Explorer, conforme indicado na Figura 14.34.
Ao criar o relatrio, o SQL Server Business Intelligence Development Studio cria tambm uma barra de
ferramentas. A barra de ferramentas exibida abaixo da barra de endereos do navegador. Nesta barra
voc tem botes para se deslocar entre as pginas do relatrio (para listagens grandes, que so divididas
em mais de uma pgina), voc tambm tem um campo para pesquisa dentro do relatrio e tem uma
lista para selecionar um formato (lista Select a format). Voc pode selecionar um dos formatos disponveis
e depois clicar no boto Export, para salvar uma cpia do relatrio, no formato selecionado. O link
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000891
Export s ser habilitado depois que for selecionado um formato na lista Select a format. Na barra de
ferramentas voc tambm tem um boto para atualizar o relatrio (penltimo boto) e um boto para
imprimir o relatrio (ltimo boto da barra de ferramentas).
Figura 14.34 A pasta VendasAnuais j criada no servidor Web.
Figura 14.35 Acessando o relatrio do tipo Matrix, usando o Internet Explorer.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8920000Curso Completo
Eu no me canso de elogiar o Reporting Services e as ferramentas relacionadas. Esta, sem dvida, foi
uma das reas onde o SQL Server 2005 mais evoluiu, em relao s verses anteriores. Agora vamos a
mais um exemplo prtico de criao de relatrio do tipo Matrix, onde utilizaremos tambm o campo
Page. Voc ver que a utilizao deste campo capaz de fazer pequenas maravilhas.
Exemplo prtico 02: Criar um relatrio do tipo Matrix, o qual exibe o total anual de vendas, por
produto. Este relatrio ter como campo Page o nome do funcionrio, para que seja possvel filtrar o
relatrio para exibir somente as vendas para um determinado funcionrio. Este relatrio ser baseado
nas tabelas Pedidos, Detalhes do pedido, Produtos e Funcionrios, do banco de dados NorthwindReport.
Para criar o relatrio solicitado, siga os passos indicados a seguir:
1. Abra o Business Intelligence Development Studio: Iniciar -> Programas -> Microsoft SQL Server
2005 -> Business Intelligence Development Studio.
2. Ser aberto o Business Intelligence Development Studio, com uma tela em branco, sem nenhum
projeto aberto. Para criar um novo relatrio, vamos criar um novo projeto. Selecione o comando
File -> New -> Project.
3. Ser aberta a janela New Project. Na lista Project Types selecione a opo Business Intelligence
Projects. Nas opes que so exibidas no painel da direita, marque a opo Report Project
Wizard (j indicada anteriormente na Figura 14.11).
4. No campo Name digite Total de Vendas por Produto.
5. No campo Location, vamos aceitar a pasta padro para gravao das definies de relatrios
que, no nosso caso, em: F:\Documents and Settings\Administrador\Meus documentos\Visual
Studio\Projects. Voc poderia escolher qualquer outra pasta a ser utilizada, inclusive poderia
ser uma pasta compartilhada, em um servidor de arquivos da rede.
6. Clique em OK.
7. Ser exibida a tela inicial do assistente. Esta tela apenas informativa. Clique em Next, para
seguir para a prxima etapa do assistente.
8. Nesta etapa voc definir as informaes sobre a fonte de dados a ser utilizada. No campo
Name, voc deve digitar um nome que ir identificar a fonte de dados. Digite: VendasProduto.
Na lista Type, voc define qual o tipo da fonte de dados. Aparecem nesta lista os tipos para os
quais o Reporting Services tem Data Processing Extensions instalados. No nosso exemplo,
certifique-se de que a opo Microsoft SQL Server esteja selecionada.
9. O prximo passo seria digitar a string de conexo, no campo Connection String. Porm, como no
estamos habituados a digitar, manualmente, os dados para a string de conexo, no conhecemos a
sintaxe para uma string de conexo. Felizmente o assistente tambm pode nos ajudar nesta etapa.
D um clique no boto Edit. Ser aberta a janela Propriedades de vinculao de dados.
10. Clique no boto Change. Ser aberta a janela Change Data Source. Clique na opo OLE DB
para marc-la e clique em OK.
11. Voc estar de volta janela Connection Properties. Na lista OLE DB Provider selecione a
opo Microsoft OLE DB Provider for SQL Server.
12. Clique no boto Data Links. Ser aberta a janela Data Link Properties.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000893
D
I
C
A
13. Abra a lista Select or enter a server name e selecione o nome do SERVIDOR\INSTNCIA,
onde est o banco de dados a ser utilizado para criao do relatrio. No nosso exemplo,
selecionarei a instncia SERVIDOR2\JBCURSOS. Selecione a instncia que voc est utilizando
para criar este relatrio.
14. Depois voc deve informar o tipo de autenticao que voc est utilizando. Para o nosso exemplo,
marque a opo Use Windows NT Integraded security.
15. Abra a lista Select the database on the server e clique na opo NorthwindReport.
16. Voc estar de volta janela Propriedades de vinculao de dados. Clique em OK para fech-la.
Voc estar de volta janela Connection Properties. Clique em OK para fech-la. Voc estar
de volta ao assistente de criao do relatrio e a string de conexo ter sido definida. No nosso
exemplo, a string de conexo ficou assim:
Provider=SQLOLEDB.1;Data Source=SERVIDOR2\JBCURSOS;Initial Catalog=NortwindReport
Voc pode marcar a opo Make this a shared data source, para que esta fonte de dados esteja disponvel para outros relatrios que venham
a ser criados, dentro deste mesmo projeto. Em um nico projeto criado com o SQL Server Business Intelligence Development Studio,
possvel criar vrios relatrios.
17. Clique em Next, para seguir para a prxima etapa do assistente.
18. Nesta etapa voc poder digitar diretamente o comando T-SQL da consulta ou usar o construtor
de consultas (Query Builder). D um clique no boto Query Builder. Ser aberta a janela Query
Builder. A janela aparece, por padro, sem todas as funcionalidades habilitadas. D um clique
no primeiro boto (bem esquerda). o boto Generic Query Designer. Ao clicar neste boto,
ser exibida a interface completa do Query Builder.
19. O primeiro passo adicionar as tabelas nas quais ser baseado o relatrio. Para adicionar uma
ou mais tabelas, clique no boto Add table (ltimo boto, bem direita, com um sinal de +
amarelo). Ser aberta a janela Add tables, com a lista de tabelas do banco de dados
NorthwindReport. Voc pode selecionar mais de uma tabela, pressionando e mantendo
pressionada a tecla Ctrl. Mantendo Ctrl pressionada, v clicando nas tabelas a serem adicionadas
consulta. Neste nosso exemplo, vamos utilizar as tabelas Pedidos, Detalhes do pedido, Produtos
e Funcionrios. Marque as tabelas: Pedidos, Detalhes do pedido, Produtos e Funcionrios. Clique
no boto Add, para adicionar as tabelas selecionadas.
20. Muito bem, o nosso prximo passo marcar quais campos faro parte do relatrio. Para isso,
basta marcar a caixa de seleo, ao lado do nome do campo.
21. Inicialmente marque o campo NomeDoProduto da tabela Produtos.
Vamos criar um campo para exibir somente o ano do campo DataDoPedido e um outro campo que
calcula o valor do item de cada pedido. A criao de campos calculados bastante simples, conforme
mostrarei logo a seguir.
22. Para criar um campo calculado, voc coloca a frmula de clculo na coluna Column e o nome do
campo vai na coluna Alias. No nosso exemplo, na primeira linha j temos o campo
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8940000Curso Completo
N
O
T
A
NomeDoProduto. Na segunda linha, logo abaixo de NomeDoProduto, vamos criar o campo para
extrair somente o ano da DataDoPedido. Vamos iniciar digitando a frmula de clculo. Para isso,
utilizaremos a funo Year. Na coluna Column, da segunda linha, digite a seguinte frmula:
Year([DataDoPedido])
Esta frmula ir extrair somente o ano do campo DataDoPedido. Na coluna Alias, da segunda linha,
digite AnoRef. Este nome voc que escolhe, ou seja, voc define o nome da coluna calculada. Agora
vamos criar a outra coluna calculada.
23. Na terceira linha, logo abaixo da linha que extrai o ano, vamos criar o campo para calcular o
total por item de cada pedido. Vamos iniciar digitando a frmula de clculo. Na coluna Col-
umn, da terceira linha, digite a seguinte frmula:
([Detalhes do Pedido].Quantidade * [Detalhes do Pedido].PreoUnitrio) * (1 - [Detalhes
do Pedido].Desconto)
Observe que aqui usei a nomenclatura complet: [NomeDaTabela].[NomeDoCampo]. Esta nomenclatura necessria porque o campo
PreoUnitrio est presente tanto na tabela Produtos quanto na tabela Detalhes do Pedido. Por isso, na frmula de clculo, temos que utilizar
a nomenclatura completa, para indicar de qual das tabelas deve ser pego o campo PreoUnitrio.
Esta frmula ir calcular o valor de cada item de cada pedido. Depois, ao ser executado o relatrio, ser
feito o cruzamento entre Produto e Ano e, no cruzamento destas informaes, ser feita a soma de
todos os itens correspondentes. Ou seja, o resultado prtico que teremos a soma do total de vendas
por ano, por Produto. Mas estas configuraes sero feitas em uma das prximas etapas do assistente.
Na coluna Alias, da terceira linha, digite TotalDeVendas. Este nome voc que escolhe, ou seja, voc
define o nome da coluna calculada. Agora vamos criar a outra coluna calculada.
24. Vamos criar mais um campo calculado. Na verdade no um campo que far clculos, mas que
to-somente ir juntar os campos Nome e Sobrenome, da tabela Funcionrios, para exibir o nome
completo do funcionrio. Na quarta linha, logo abaixo da linha que calcula o total por item do
pedido, vamos criar o campo para exibir o nome completo do funcionrio. Vamos iniciar digitando
a frmula de clculo. Na coluna Column, da quarta linha, digite a seguinte frmula:
Funcionrios.Nome + N + Funcionrios.Sobrenome
Na coluna Alias, da quarta linha, digite Funcionrio. Este nome voc que escolhe, ou seja, voc
define o nome da coluna calculada.
Sua janela deve estar semelhante a indicada na Figura 14.36.
25. Vamos ordenar o relatrio pelo campo NomeDoProduto. Na linha NomeDoProduto, na coluna
Sort Type, selecione a opo Ascending, para fazer ordenar os resultados em ordem alfabtica
do campo NomeDoProduto.
26. D um clique em OK para fechar a janela do Query Builder e voltar ao assistente de criao do
relatrio.
27. Voc estar de volta ao assistente, com o comando T-SQL j definido. Para o nosso exemplo, o
Query Builder nos ajudou a criar o seguinte comando:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000895
N
O
T
A
SELECT Produtos.NomeDoProduto, YEAR(Pedidos.DataDoPedido) AS AnoRef, ([Detalhes do
Pedido].Quantidade * [Detalhes do Pedido].PreoUnitrio)
* (1 - [Detalhes do Pedido].Desconto) AS TotalDeVendas,
Funcionrios.Nome + N + Funcionrios.Sobrenome AS Funcionrio
FROM Pedidos INNER JOIN
[Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do
Pedido].NmeroDoPedido INNER JOIN
Funcionrios ON Pedidos.CdigoDoFuncionrio =
Funcionrios.CdigoDoFuncionrio INNER JOIN
Produtos ON [Detalhes do Pedido].CdigoDoProduto =
Produtos.CdigoDoProduto
ORDER BY Produtos.NomeDoProduto
Figura 14.36 Criando campos calculados.
Se voc se sente vontade com os comandos T-SQL, pode digitar o comando diretamente, sem ter que utilizar o Query Builder. Porm
observe que medida que as consultas se tornam mais complexas fica bastante difcil a criao dos comandos, manualmente, sem a ajuda
do Query Builder.
28. Clique em Next, para seguir para a prxima etapa do assistente.
29. Nesta etapa voc define se ir criar um relatrio do tipo Tabular, que so as tradicionais listagens,
ou um relatrio do tipo Matrix, que so conhecidas no Access como Consultas de Tabela de
Referncia Cruzada. Opa, chegamos exatamente na etapa onde vamos definir que o nosso
relatrio ser do tipo Matrix. Para o nosso exemplo, selecione a opo Matrix.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8960000Curso Completo
30. Clique em Next, para seguir para a prxima etapa do assistente.
31. Nesta etapa que voc ir definir qual campo ser Page, qual campo ser o campo linha (Rows),
qual campo ser o campo Coluna (Columns) e qual campo ser o campo Valor (Details).
No nosso exemplo, temos a seguinte configurao:
Funcionrio -> Page
PasDeDestino -> Rows
AnoRef -> Columns
TotalDeVendas -> Details
32. Clique no campo NomeDoProduto para marc-lo; em seguida, clique no boto Rows, para
defini-lo como o campo Linha do Relatrio.
33. Clique no campo AnoRef para marc-lo; em seguida, clique no boto Columns, para defini-lo
como o campo Coluna do Relatrio.
34. Clique no campo TotalDeVendas para marc-lo; em seguida, clique no boto Details, para
defini-lo como o campo Valor do Relatrio.
35. Clique no campo Funcionrio para marc-lo; em seguida, clique no boto Page, para defini-lo
como o campo Page do Relatrio. Sua janela deve estar conforme indicado na Figura 14.37:
Figura 14.37 Definindo os elementos linha, coluna, valor e page.
36. Clique em Next, para seguir para a prxima etapa do assistente.
37. Nesta etapa voc pode escolher um, dentre diversos layouts sugeridos. Selecione a opo Bold.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000897
38. Clique em Next, para seguir para a prxima etapa do assistente.
39. Nesta etapa voc deve informar o servidor Web onde o relatrio ser publicado. Voc deve
informar o endereo para o servidor onde o Reporting Services est instalado. No nosso exemplo
vamos usar o servidor local. Informe o seguinte endereo http://localhost/
ReportServer$JBCURSOS (o padro de nome ReportServer, o sinal de $ mais o nome da
instncia). Voc tambm pode informar o nome de uma pasta. Esta pasta ser criada, configurada
como um diretrio virtual e o relatrio ser gravado nesta pasta. Para o nome da pasta digite
VendasPorProduto.
40. Clique em Next, para seguir para a prxima etapa do assistente.
41. Ser exibida a tela final do assistente, com um resumo das opes que foram selecionadas nas
etapas anteriores. Nesta etapa voc tambm pode definir um nome para o relatrio. No campo
Report name, digite: Vendas Anuais por Produto. Marque a opo Preview report para que seja
exibida uma prvia do que ser a verso final do relatrio. Voc pode utilizar o boto Back,
para voltar a qualquer uma das etapas e fazer as alteraes necessrias. Clique em Finish para
encerrar o assistente e criar o relatrio.
42. O relatrio ser criado e uma prvia ser exibida no SQL Server Business Intelligence Develop-
ment Studio, conforme indicado na Figura 14.38:
Figura 14.38 Visualizao do relatrio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
8980000Curso Completo
N
O
T
A
43. Agora vamos publicar o relatrio no servidor Web e acess-lo usando o browser.
44. Para publicar o relatrio no servidor Web, utilize o comando Build -> Deploy Total de Vendas por
Produto e aguarde at que o SQL Server Business Intelligence Development Studio publique o
relatrio no servidor Web. O relatrio ser publicado, com base nas informaes que voc forneceu
em uma das ltimas etapas do assistente de criao do relatrio, onde voc informou o nome do
servidor e o nome da pasta onde ser publicado o relatrio. No nosso exemplo utilizamos o servidor
http://localhost/ReportServer$JBCURSOS, dentro do qual ser criada a pasta VendasPorProduto.
45. Muito bem, o relatrio foi publicado no servidor Web. Vamos acess-lo, usando o Internet
Explorer.
46. Abra o Internet Explorer e acesse o seguinte endereo: http://localhost/ReportServer$JBCURSOS
Lembrando que ReportServer o padro sugerido durante a instalao do SQL Server 2005. Depois deste padro vem um sinal de $ e depois
o nome da instncia. Este padro pode ser modificado, durante a instalao do SQL Server 2005.
47. Ser exibida a listagem de pastas disponveis no servidor de relatrios, onde podemos observar
que j est disponvel a pasta VendasPorProduto.
48. D um clique em VendasPorProduto. Ser exibida a lista de relatrios disponveis.
49. D um clique em Vendas Anuais por Produto.
50. O relatrio ser carregado e exibido no Internet Explorer, conforme indicado na Figura 14.39:
Figura 14.39 Acessando o relatrio do tipo Matrix, usando o Internet Explorer.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000899
Observe que o relatrio foi separado por funcionrio. Ou seja, na primeira pgina so exibidos os
dados apenas para o funcionrio Andrew Fuller. Se voc clicar no boto >, para ir para a prxima
pgina, continuam sendo exibidos dados para o funcioniro Andrew Fuller. Clique em > para ir para a
pgina 3. Observe que comearam a ser exibidos dados para o funcionrio Anne Dodsworth e assim
por diante. Esta separao resultado do uso de um campo justamente o campo Funcionrio, como
um elemento Page, do relatrio do tipo Matrix.
Muito bem, no prximo item vamos aprender a criar um relatrio que usa a opo de Grupos. Depois,
para finalizar o captulo, vamos aprender a utilizar as funes bsicas do console de gerenciamento do
Reporting Services. Mais uma vez, vamos aprender, novamente, atravs de exemplos prticos.
CRIANDO RELATRIOS USANDO A OPO GRUPOS
Nosso ltimo exemplo de criao de relatrios utilizar a opo Grupos. Com esta opo, podemos
dividir um relatrio em um ou mais grupos. J me explico melhor. Por exemplo, vamos imaginar uma
listagem de pedidos. Esta listagem pode ser dividida em grupos. Por exemplo, vamos definir o campo
PasDeDestino como sendo um grupo. Com isso, seriam listados todos os pedidos de um pas, depois
todos os pedidos do prximo pas e assim por diante. O nome do pas s seria exibido uma vez, no
incio da listagem de pedidos do respectivo pas. Agora vamos acrescentar mais um nvel de grupo, o
campo CidadeDeDestino. Com isso teramos todos os pedidos de um pas juntos e, dentro destes
pedidos, uma diviso por cidades. Por exemplo, todos os pedidos para o Brasil ficariam juntos. Dentro
do Brasil, viriam primeiro todos os pedidos de Campinas, depois todos os pedidos do Rio de Janeiro,
depois todos os pedidos de So Paulo e assim por diante. O nome da cidade exibido somente uma
vez, no incio da listagem dos pedidos da respectiva cidade.
Logo em seguida vamos fazer um exemplo prtico de relatrio que usa a opo de grupos. No exemplo
prtico, vamos utilizar uma abordagem um pouco diferente da que vnhamos utilizando at aqui. Em
todos os exemplos anteriores, eu sempre criava um novo projeto e, dentro do novo projeto, eu criava
um novo relatrio. No prximo exemplo, eu vou abrir um dos projetos criados anteriormente e, dentro
deste novo projeto, vou criar um novo relatrio. O objetivo salientar que, dentro de um mesmo
projeto, posso ter diversos relatrios. Muto bem, vamos prtica.
Exemplo prtico: Criar um relatrio de pedidos, onde so exibidos os seguintes campos:
NmeroDoPedido, DataDoPedido, NomeDaEmpresa (da tabela Clientes), PasDeDestino,
CidadeDeDestino e TotalDoPedido (que ser um campo calculado). Defini os campos PasDeDestino e
CidadeDeDestino como campos de grupo.
Para criar o relatrio proposto siga os passos indicados a seguir:
1. Abra o Business Intelligence Development Studio: Iniciar -> Programas -> Microsoft SQL Server
2005 -> Business Intelligence Development Studio.
2. Ser aberto o Business Intelligence Development Studio, com uma tela em branco, sem nenhum
projeto aberto. Vamos abrir o projeto Listagem de Clientes, criado em um dos exemplos
anteriores. Para abrir um novo projeto selecione o comando File -> Open -> Project/Solution.
Ser aberta a janela Open Project. Clique no projeto Listagem de Clientes para selecion-lo,
conforme indicado na Figura 14.40.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9000000Curso Completo
Figura 14.40 Abrindo o projeto Listagem de Clientes.
3. Clique no boto Open.
4. Ser exibida a lista de arquivos disponveis na pasta do projeto. D um clique duplo no arquivo
Listagem de Clientes.sln, que o arquivo de projeto a ser aberto.
5. Agora vamos adicionar um novo relatrio ao projeto Listagem de Clientes. Para adicionar um
novo relatrio selecione o comando Project -> Add New Item.
6. Ser aberta a janela Add New Item Listagem de Clientes. Clique na opo Report Wizard para
marc-la. No campo Name digite ListagemPaisCidade.rdl e depois clique no boto Add.
7. Ser aberto o assistente para criao de um novo relatrio, o qual j bem conhecido, uma vez
que utilizamos este assistente nos exemplos anteriores. A primeira tela do assistente apenas
informativa. Clique em Next, para seguir para a prxima etapa do assistente.
8. Como estamos trabalhando com um projeto j existente, poderemos utilizar as fontes de dados
que j foram criadas anteriormente, desde que estas tenham sido configuradas para ser uma
fonte de dados compartilhada (Make this a shared data source). o caso do nosso exemplo,
onde vamos utilizar a fonte de dados NorthwindReport, j criada quando foi criado o projeto
Listagem de Clientes. Voc pode usar uma fonte de dados j criada anteriormente ou criar uma
nova fonte de dados, se isso for necessrio. Para criar uma nova fonte de dados, voc deve
marcar a opo New data source e fornecer as informaes sobre a nova fonte. No nosso exemplo,
vamos utilizar a fonte j existente NorthwindReport, conforme indicado na Figura 14.41.
9. Clique em Next para seguir para a prxima etapa do assistente.
10. Nesta etapa voc poder digitar diretamente o comando T-SQL da consulta ou usar o construtor
de consultas (Query Builder). D um clique no boto Query Builder. Ser aberta a janela Query
Builder. A janela aparece, por padro, sem todas as funcionalidades habilitadas. D um clique
no primeiro boto (bem esquerda). o boto Generic Query Designer. Ao clicar neste boto,
ser exibida a interface completa do Query Builder (sinceramente eu no consegui entender o
porqu de o padro no vir j com a interface completa).
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000901
Figura 14.41 Usando uma fonte de dados j existente.
11. O primeiro passo adicionar as tabelas nas quais ser baseado o relatrio. Para adicionar uma
ou mais tabelas, clique no boto Add table (ltimo boto, bem direita, com um sinal de +
amarelo). Ser aberta a janela Add tables, com a lista de tabelas do banco de dados
NorthwindReport. Voc pode selecionar mais de uma tabela, pressionando e mantendo
pressionada a tecla Ctrl. Mantendo Ctrl pressionada, v clicando nas tabelas a serem adicionadas
consulta. Neste nosso exemplo, vamos utilizar as tabelas Pedidos, Detalhes do pedido e Clientes.
Marque as tabelas: Pedidos, Detalhes do pedido e Clientes. Clique no boto Add, para adicionar
as tabelas selecionadas.
12. Muito bem, o nosso prximo passo marcar quais campos faro parte do relatrio. Para isso,
basta marcar a caixa de seleo, ao lado do nome do campo.
13. Inicialmente marque os campos NomeDaEmpresa da tabela Clientes e os campos
NmeroDoPedido, DataDoPedido, PasDeDestino e CidadeDeDestino, da tabela Pedidos.
14. Agora vamos criar o campo calculado, para ter o total por item de cada pedido. Para criar um
campo calculado, voc coloca a frmula de clculo na coluna Column e o nome do campo vai
na coluna Alias. Na primeira linha em branco, logo abaixo de CidadeDeDestino, vamos criar o
campo para clculo do total por item do pedido. Vamos iniciar digitando a frmula de clculo.
Na coluna Column, da terceira linha, digite a seguinte frmula:
([Quantidade]*[PreoUnitrio])*(1-[Desconto])
Esta frmula ir calcular o valor de cada item de cada pedido. Na coluna Alias, digite Valor Total.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9020000Curso Completo
N
O
T
A
Importante: Se deixarmos a listagem assim como est, ser exibido o valor total para cada item de cada pedido. Por exemplo, se um pedido
tiver 5 itens, sero exibidas cinco linhas no relatrio, uma para cada item. O que queremos agrupar todos os itens de um mesmo pedido e
fazer a soma destes valores. Se fosse no Access, usaramos a linha Total. Mas acontece que esta funcionalidade tambm est disponvel no
Query Builder. Para isso, clique no boto Group by (penltimo boto, do lado esquerdo do boto Add table). Observe que, aps clicar no
boto Group by, uma nova coluna ser exibida, justamente a coluna Group by. Nesta coluna, mantenha a opo Group by selecionada para
todos os campos, com exceo do campo Valor Total. Para este campo, selecione a opo Sum, para que seja feita a soma de todos os itens
de um mesmo pedido.
Sua janela deve estar semelhante indicada na Figura 14.42:
Figura 14.42 A opo Group by.
15. Vamos ordenar o relatrio pelo campo NmeroDoPedido. Na linha NmeroDoPedido, na coluna
Sort Type, selecione a opo Ascending, para fazer ordenar os resultados em ordem alfabtica
do campo NmeroDoPedido.
16. D um clique em OK para fechar a janela do Query Builder e voltar ao assistente de criao do
relatrio.
17. Voc estar de volta ao assistente, com o comando T-SQL j definido. Para o nosso exemplo, o
Query Builder nos ajudou a criar o seguinte comando:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000903
N
O
T
A
SELECT Pedidos.NmeroDoPedido, Clientes.NomeDaEmpresa, Pedidos.DataDoPedido,
Pedidos.PasDeDestino, Pedidos.CidadeDeDestino,
SUM(([Detalhes do Pedido].Quantidade * [Detalhes do
Pedido].PreoUnitrio) * (1 - [Detalhes do Pedido].Desconto)) AS ValorTotal
FROM Clientes INNER JOIN
Pedidos ON Clientes.CdigoDoCliente = Pedidos.CdigoDoCliente INNER
JOIN
[Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do
Pedido].NmeroDoPedido
GROUP BY Clientes.NomeDaEmpresa, Pedidos.NmeroDoPedido, Pedidos.DataDoPedido,
Pedidos.PasDeDestino, Pedidos.CidadeDeDestino
ORDER BY Pedidos.NmeroDoPedido
Se voc se sente vontade com os comandos T-SQL, pode digitar o comando diretamente, sem ter que utilizar o Query Builder.
18. Clique em Next, para seguir para a prxima etapa do assistente.
19. Nesta etapa voc define se ir criar um relatrio do tipo Tabular, que so as tradicionais listagens,
ou um relatrio do tipo Matrix, que so conhecidas no Access como Consultas de Tabela de
Referncia Cruzada. Para este nosso exemplo ser um relatrio do tipo Tabular. Certifique-se
de que esta opo esteja marcada.
20. Clique em Next, para seguir para a prxima etapa do assistente.
21. Nesta etapa que vamos definir quais os campos que formaro os grupos do relatrio. No
nosso exemplo so os campos PasDeDestino e CidadeDeDestino. Clique no campo
PasDeDestino para selecion-lo, depois clique no boto Group. Clique no campo
CidadeDeDestino para selecion-lo e depois clique no boto Group. Os demais campos faro
parte da seo detalhes do relatrio. Use a tecla Ctrl para marcar os demais campos e depois
clique no boto Details. Sua janela deve estar conforme indicado na Figura 14.43:
Figura 14.4 Definindo os elementos linha, coluna e valor.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9040000Curso Completo
N
O
T
A
22. Clique em Next, para seguir para a prxima etapa do assistente.
23. Nesta etapa voc pode escolher um, dentre diversos layouts sugeridos. Selecione a opo Stepped.
Nesta etapa voc tambm define se devem ser includos, nos relatrios, subtotais por grupo.
Por exemplo, voc pode incluir ao final da lista de pedidos de cada cidade a soma de todos os
pedidos da cidade; ao final dos pedidos de um pas, a soma de todos os pedidos do pas e assim
por diante. Para isso, marque a opo Include subtotals. Marque tambm a opo Enable
drilldown, para adicionar mais interatividade ao relatrio, conforme mostrarei na hora de
acessar o relatrio, mais adiante.
24. Clique em Next, para seguir para a prxima etapa do assistente.
25. Nesta etapa voc pode escolher um dentre diversos estilos disponveis. Marque a opo Bold.
26. Clique em Next, para seguir para a prxima etapa do assistente.
O relatrio ser publicado no servidor Web associado ao projeto (que no nosso exemplo em http://localhost/ReportServer$JBCURSOS) e
na pasta associada ao projeto, que no nosso exemplo a pasta Exemplos. Estas opes foram configuradas quando o projeto foi criado e
todos os relatrios que fazem parte do projeto utilizaro estas definies.
27. Ser exibida a tela final do assistente, com um resumo das opes que foram selecionadas nas
etapas anteriores. Nesta etapa voc tambm pode definir um nome para o relatrio. No campo
Report name, digite: Listagem por Pas e Cidade. Marque a opo Preview report para que seja
exibida uma prvia do que ser a verso final do relatrio. Voc pode utilizar o boto Back,
para voltar a qualquer uma das etapas e fazer as alteraes necessrias. Clique em Finish para
encerrar o assistente e criar o relatrio.
28. O relatrio ser criado e uma prvia ser exibida no SQL Server Business Intelligence Develop-
ment Studio, conforme indicado na Figura 14.44:
Figura 14.44 Visualizao do relatrio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000905
N
O
T
A
29. Agora vamos publicar o relatrio no servidor Web e acess-lo usando o browser.
30. Para publicar o relatrio no servidor Web, utilize o comando Build -> Deploy Listagem de
Clientes e aguarde at que o SQL Server Business Intelligence Development Studio publique o
relatrio no servidor Web. O relatrio ser publicado, com base nas informaes que voc
forneceu durante a criao do projeto, onde voc informou o nome do servidor e o nome da
pasta onde ser publicado o relatrio. No nosso exemplo utilizamos o servidor http://localhost/
ReportServer$JBCURSOS, dentro do qual ser utilizada a pasta Exemplos.
31. Muito bem, o relatrio foi publicado no servidor Web. Vamos acess-lo, usando o Internet
Explorer.
32. Abra o Internet Explorer e acesse o seguinte endereo: http://localhost/ReportServer$JBCURSOS
Lembrando que ReportServer o padro sugerido durante a instalao do SQL Server 2005. Depois deste padro vem um sinal de $ e depois
o nome da instncia. Este padro pode ser modificado, durante a instalao do SQL Server 2005.
33. Ser exibida a listagem de pastas disponveis no servidor de relatrios, conforme indicado na
Figura 14.45, onde podemos observar que j est disponvel a pasta Exemplos:
Figura 14.45 A pasta Exemplos, associada ao projeto.
34. D um clique em Exemplos. Ser exibida a lista de relatrios disponveis. No nosso exemplo
esto disponveis dois relatrios no mesmo projeto: Listagem de Clientes (criado anteriormente)
e Listagem por Pas e Cidade (criado no nosso ltimo exemplo).
35. D um clique em Listagem por Pas e Cidade.
36. O relatrio ser carregado e exibido no Internet Explorer, conforme indicado na Figura 14.46:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9060000Curso Completo
Figura 14.46 Acessando o relatrio com grupos, usando o Internet Explorer.
37. Observe o sinal de + ao lado do nome de cada pas. Este sinal de + a chamada capacidade de
Drilldown, a qual voc marcou para ser criada, em uma das etapas do assistente. Experimente
clicar no sinal de + ao lado de Alemanha. Observe que agora foi exibida a listagem de cidades
da Alemanha, juntamente com o total de vendas para a cidade. Clique no sinal de + ao lado da
primeira cidade Aachen. Observe que agora exibida a listagem de todos os pedidos para
Aachen, conforme indicado na Figura 14.47.
Muito bem, com isso encerramos os nossos exemplos prticos, sobre a criao, publicao e utilizao
de relatrios, usando o Reporting Services. ou no uma verdadeira maravilha este servio?
No prximo tpico, no qual encerraremos o captulo, falarei sobre o console Reporting Services Con-
figuration e mostrarei como executar as principais tarefas de configurao do Reporting Services,
utilizando este console.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000907
Figura 14.47 Usando a capacidade de Drilldown.
DESENVOLVIMENTO EM: O CONSOLE REPORTING SERVICES CONFIGURATION
PR-REQUISITOS
Conhecimento bsico dos elementos que compem o Reporting Services.
METODOLOGIA
Apresentao dos elementos que compem o console Reporting Services Configuration.
INTRODUO AO CONSOLE REPORTING SERVICES CONFIGURATION
Este console permite que voc faa uma srie de configuraes, tais como a pasta virtual atravs da
qual so acessados os relatrios, a pasta virtual atravs da qual possvel configurar diversas opes do
Reporting Services usando o navegador e uma srie de outras configuraes. Neste tpico, mostrarei
um exemplo prtico, onde voc far um passeio pelas opes disponveis no console Reporting Ser-
vices Configuration.
Exemplo prtico: Abrir o console Reporting Services Configuration e verificar as opes de configurao
disponveis. Siga os passos indicados a seguir:
1. Abra o console Reporting Services Configuration: Iniciar -> Programas -> Microsoft SQL Server
2005 -> Configuration tools -> Reporting Services Configuration.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9080000Curso Completo
2. Ser aberta uma janela para que voc informe o nome do servidor a ser conectado e da instncia.
Por padro, vem selecionado o servidor local onde voc est executando o console Reporting
Services Configuration. Clique no boto Find, para localizar as instncias disponveis neste servidor.
3. Na lista Instance name selecione a instncia desejada, conforme exemplo da Figura 14.48:
Figura 14.48 Informando o servidor e a instncia.
4. Clique no boto Connect.
5. A conexo ser efetuada e ser exibida a tela principal do console Reporting Services Configu-
ration. No painel da esquerda so exibidas as opes disponveis, conforme indicado na Figura
14.49, onde por padro vem selecionada a opo para gerenciamento do servio Report Server.
Nesta tela voc pode inicializar ou parar o servio. No exemplo da Figura 14.49, o servio est
sendo executado. Se fosse necessrio, voc poderia clicar no boto Stop para parar o servio.
Figura 14.49 O console Reporting Services Configuration.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000909
6. No painel da direita, d um clique na opo Report Server Virtual Directory. Nesta opo voc
define a pasta virtual, atravs da qual os relatrios publicados podem ser acessados e em qual
dos sites (lembrando que em um nico servidor IIS posso ter vrios sites configurados) estar
esta pasta. No nosso exemplo estamos usando a pasta virtual ReportServer$JBCURSOS e o Web
site padro. Defina as configuraes desejadas e clique no boto Apply para salv-las.
7. No painel da direita, d um clique na opo Report Manager Virtual Directory. Nesta opo
voc define a pasta virtual, atravs da qual possvel acessar praticamente todas as opes para
configurao e gerenciamento dos relatrios disponveis. No nosso exemplo estamos usando a
pasta virtual Reports$JBCURSOS e o Web site padro. O padro sugerido, durante a instalao
do Reporting Services, o nome Reports, um sinal de $ e o nome da instncia. No nosso
exemplo, ao acessar o endereo http://localhost/Reports$JBCURSOS, voc ter acesso a uma
grande quantidade de opes de configurao dos relatrios. Na Figura 14.50 podemos ver esta
pgina, carregada no navegador:
Figura 14.50 Acessando http://localhost/Reports$JBCURSOS
8. Defina as configuraes desejadas e clique no boto Apply para salv-las.
9. No painel da direita, d um clique na opo Windows Service Identity. Nesta opo voc de-
fine a conta com a qual ir rodar o servio Report Server. Defina as configuraes desejadas e
clique no boto Apply para salv-las. Na guia Web Service Identity, voc define no contexto de
qual aplicao Web o servio do Report Server ir rodar. Defina as configuraes desejadas e
clique no boto Apply para salv-las.
10. No painel da direita, d um clique na opo Database Setup. Nesta opo, indicada na Figura
14.51, voc define em qual servidor e instncia ficar o banco de dados utilizado pelo Reporting
Services. Informaes sobre os relatrios publicados, configuraes do servio configuraes de
segurana e demais informaes necessrias ao funcionamento do Reporting Services ficam todas
neste banco de dados. Defina as configuraes desejadas e clique no boto Apply para salv-las.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9100000Curso Completo
Figura 14.51 Definindo onde ficar o banco de dados do Reporting Services.
11. Voc tambm tem a opo para gerenciar as chaves de criptografia Encription Keys; uma
opo que exibe o status da inicializao do servio Report Server Initialization; uma opo
para configurar as opes para envio de relatrios via e-mail Email Settings; e uma opo para
definir uma conta no contexto da qual sero executados os relatrios Execution Account.
12. Para fechar o console Reporting Services Configuration clique no boto Exit.
CONCLUSO
Este foi um captulo completamente dedicado ao Reporting Services. Este, na minha opinio, foi um
dos servios que mais apresentou melhorias e novidades em relao s verses anterioes do SQL Server.
Iniciei o captulo apresentando o Reportng Services, falando sobre os elementos que o compem e a
funcionalidade de cada um destes elementos.
Em seguida passei a mostrar como criar uma srie de relatrios, a publicar os relatrios, a acess-los via
browser e a salv-los em diferentes formatos. Apresentei exemplos, passo a passo, que mostraram
como criar os seguintes tipos de relatrios:
Listagem simples
Matrix
Matrix com a opo Page
Listagem com grupos
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005
Curso Completo0000911
Para encerrar o captulo, apresentei a ferramenta Reporting Services Configuration, a qual nos d
acesso a uma srie de opes de configurao do Reporting Services.
Evidentemente que existem muito mais coisas sobre o Reporting Services. Mas dentro do escopo proposto
para este captulo, vamos parando por aqui. Sem nenhuma dvida, daria para escrever um livro inteiro
sobre o Reporting Services (e certamente sero lanados livros inteiros, s sobre o Reporting Services).
No prximo captulo mostrarei, atravs de exemplos prticos, como utilizar algumas das principais
novidades do SQL Server 2005, as quais, por questes de organizao do livro, no puderam ser
apresentadas, juntamente com as demais novidades, apresentadas nos captulos anteriores.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 15
EXEMPLOS PRTICOS E MAIS
NOVIDADES DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9140000Curso Completo
N
O
T
A
INTRODUO
Neste captulo eu apresentarei, na forma de exemplos prticos, mais algumas novidades do SQL Server
2005. Apresentarei novidades que, por motivos de organizao do livro, no puderam ser colocadas
nos captulos anteriores. Tambm apresentarei alguns exemplos prticos sobre tarefas comuns ao dia-
a-dia do DBA (Database Administrator). Este o tpico captulo do tipo Salada de Frutas. Ou seja, um
tpico aqui, outro ali e assim por diante. Julguei importante incluir este captulo, porque nele abordo
tpicos prticos, que certamente o DBA usar no seu trabalho dirio.
Vamos iniciar o captulo aprendendo a trabalhar com uma importante novidade do SQL Server 2005:
A criao de snapshots de um banco de dados Database snapshot. Um snapshot de um banco de
dados uma cpia esttica, somente-leitura do banco de dados (o snapshot uma cpia somente
leitura do banco de dados original). Podemos criar vrios snapshots de um mesmo banco de dados. O
snapshot s pode ser criado na mesma instncia do banco de dados original. O snapshot uma cpia
fiel do banco de dados original. O snapshot mantido, at que seja excludo pelo administrador.
Vrios so os usos prticos que justificam a criao de um ou mais snapshots de um banco de dados.
Por exemplo, posso criar um snapshot s para atender requisies de relatrios, os quais no tm a
necessidade de serem gerados em tempo real. Serve como uma cpia adicional de segurana, pois o
snapshot pode ser usado para restaurar um banco de dados, ao estado em que este se encontrava,
quando foi gerado o snapshot. Esta pode ser uma opo til quando outras opes, tais como o restore,
falharam. Neste captulo voc aprender mais sobre snapshots e ver exemplos prticos de como criar
um snapshot de um banco de dados.
Importante: A opo Database snapshot est disponvel somente no SQL Server 2005 Enterprise Edition.
O prximo tpico que irei abordar neste captulo sobre a criao de diagramas de um banco de
dados. Os diagramas nos permitem ter uma viso geral da estrutura do banco de dados: tabelas, chaves
primrias, chaves estrangeiras e relacionamentos. uma excelente ferramenta tambm para
documentao da estrutura do banco de dados.
Na seqncia apresentarei o passo-a-passo sobre como realizar uma srie de tarefas teis, bastante
comuns ao dia-a-dia do DBA:
Como transferir um banco de dados de uma instncia para outra.
Como trabalhar com tabelas, diretamente no SQL Server Management Studio.
Usar a opo de gerao de scripts do SQL Server Management Studio.
Para encerrar o captulo farei uma descrio detalhada das diferentes edies do SQL Server 2005. Esto
disponveis as seguintes edies:
SQL Server 2005 Enterprise Edition (32-bits e 64-bits)
SQL Server 2005 Standard Edition (32-bits e 64-bits)
SQL Server 2005 Workgroup Edition (somente 32-bits)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
Curso Completo0000915
SQL Server 2005 Developer Edition (32-bits e 64-bits)
SQL Server 2005 Express Edition (somente 32-bits)
DESENVOLVIMENTO EM: SNAPSHOT DATABASES
PR-REQUISITOS
Conhecimento bsico dos objetos que compem um banco de dados do SQL Server.
METODOLOGIA
Exemplo prtico de criao e administrao de snapshot Databases.
QUANDO USAR A OPO DE SNAPSHOT
Um snapshot de um banco de dados uma cpia esttica, somente-leitura deste banco de dados (o
snapshot uma cpia somente leitura do banco de dados original). Podemos criar vrios snapshots de
um mesmo banco de dados. O snapshot s pode ser criado na mesma instncia do banco de dados
original. O snapshot uma cpia fiel do banco de dados original. O snapshot mantido, at que seja
excludo pelo administrador.
A seguir apresento algumas situaes onde pode ser indicada a criao de snapshots de um banco de dados.
Manter um histrico dos dados, para a gerao de relatrios: Imagine um banco de dados
de pedidos. Pode ser que voc queira manter no banco de dados somente os pedidos do ano
corrente. Porm, voc pode querer fazer relatrios que englobem estatsticas completas, com
dados dos pedidos de todos os anos. Uma opo fazer um snapshot do banco de dados, ao
final de cada ano e depois zerar os pedidos, para iniciar o ano seguinte s com os pedidos do
ano corrente. Havendo espao em disco, voc pode at mesmo criar e manter snapshots de
perodos diferentes, para facilitar a gerao de relatrios.
Criar uma cpia para ser usada em emergncias: Em caso de erros graves com o banco de
dados principal e tendo tambm falhado os processos de restore, o snapshot uma opo para
que a perda no seja total. Ou seja, ao usar um snapshot do banco de dados, sero perdidas
somente as alteraes feitas aps a gerao do snapshot. Claro que no uma situao ideal,
mas em caso de catstrofes maiores, uma maneira de evitar a perda total dos dados, ou pelo
menos, minimizar a perda.
Proteger os dados contra erros de operao e criar um banco de dados de teste: Erros do
DBA podem ocorrer e geralmente so desastrosos. Como o DBA, geralmente, tem poderes
totais sobre o banco de dados, os erros cometidos pelo DBA causam grandes estragos. Quando
voc precisa fazer testes, verificar se um script est funcionando corretamente, testar um stored
procedure ou uma operao que ir alterar um grande volume de dados, voc pode seguir os
seguintes passos: Criar um snapshot do banco de dados e fazer os testes que precisam ser feitos
no snapshot. Se tudo der certo, voc pode aplicar os mesmos passos no banco de dados princi-
pal. Se algo der errado, o problema ocorrer no snapshot. Ou seja, o banco de dados original
estar intacto. muito melhor descobrir os erros enquanto voc testa as operaes no snap-
shot do que descobri-los, testando diretamente no banco de dados de produo.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9160000Curso Completo
Criar snapshots, periodicamente, para minimizar problemas com erros de operao:
Se houver espao em disco suficiente, voc pode criar uma srie de snapshots no decorrer
do dia, para minimizar possveis perdas com erros de operao no banco de dados. Alm
disso, voc pode definir um determinado nmero de snapshots a serem mantidos. Quando
um novo snapshot gerado, o mais antigo excludo, para manter apenas o nmero de
snapshots que voc definiu. Quando houver um erro de operao, voc pode utilizar o
snapshot mais recente, para recuperar o banco de dados. Claro que sempre haver o
problema da perda das alteraes efetuadas entre o ltimo snapshot e o momento em
que ocorreu o problema.
LIMITAES EM RELAO AO USO DE SNAPSHOTS
Neste tpico, apresentarei as limitaes que existem em relao ao uso de snapshots Databases.
LIMITAES EM RELAO AO BANCO DE DADOS FONTE
O banco de dados fonte o banco de dados original, a partir do qual sero criados um ou mais snap-
shots. Aps a criao do primeiro snapshot, algumas restries passam a ser impostas para o banco de
dados fonte:
O banco de dados fonte no poder ser mais excludo, desanexado (ou desatachado, como
preferirem) ou sofrer um restore a partir de um backup. O backup do banco de dados funciona
normalmente, aps a criao de um ou mais snapshots.
Ao criar o snapshot, as pginas de dados no so copiadas do banco de dados fonte para o
snapshot. Ao invs disso, somente um ponteiro criado no snapshot, ponteiro este que aponta
para a pgina original de dados. Quando uma pgina de dados for atualizada pela primeira vez,
aps a criao do snapshot, a pgina, sem a atualizao, ser copiada para o snapshot. Com
isso fica no banco de dados fonte a pgina modificada (a qual ter tambm todas as subseqentes
modificaes) e no snapshot, a pgina original, como estava, no momento em que o snapshot
foi gerado. Esta operao de cpia da pgina original para o snapshot, na primeira vez que a
pgina original modificada, conhecida como copy-on-write operation. Dependendo do
nmero de operaes copy-on-write operation que so executadas e do nmero de snap-
shots que forem criados, pode ocorrer um grande aumento de operaes de I/O no banco de
dados original, o que pode afetar o desempenho deste banco de dados.
No possvel excluir arquivos de dados do banco de dados fonte e nem dos snapshots, enquanto
existir um ou mais snapshots do banco de dados.
LIMITAES EXISTENTES NOS SNAPSHOTS DO BANCO DE DADOS
A partir de um banco de dados, podem ser criados um ou mais snapshots. Nos snapshots, existem
algumas limitaes, as quais descrevo a seguir:
O snapshot s pode ser criado na mesma instncia do banco de dados original.
O banco de dados snapshot uma cpia fiel do banco de dados original, no momento em
que o snapshot criado, menos as transaes que ainda esto com o estado uncommitted,
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
Curso Completo0000917
no banco de dados original. As transaes neste estado sofrem um roll back no snapshot. O
banco de dados original no afetado. As alteraes que forem feitas no banco de dados
original no sero replicadas para os snapshots existentes (se no seria replicao e no um
simples snapshot).
Os snapshots so bancos de dados do tipo Read Only, ou seja, no possvel incluir, alterar ou
excluir dados das tabelas do snapshot.
No possvel criar snapshots dos bancos de dados model, master e temp.
No possvel fazer alteraes nas propriedades dos arquivos (primrio, secundrio ou de log)
dos snapshots.
No possvel excluir arquivos (secundrios ou de log) de um snapshot.
No possvel fazer backup ou restore de um snapshot.
No possvel atachar ou desatachar arquivos de um snapshot.
S possvel criar snapshots em parties formatadas com NTFS.
O servio Full-text indexing no suportado nos snapshots e os full-text catalogs criados no
banco de dados original no so copiados para os snapshots.
Quando o snapshot criado, ele herda as restries de segurana contidas no banco de dados
original. Como os snapshots so somente leitura (read only), as permisses herdadas no
podem ser alteradas e alteraes feitas nas permisses de segurana do banco de dados original
no sero propagadas para os snapshots.
REQUERIMENTOS DE ESPAO EM DISCO
Aqui importante lembrar como funciona a criao de snapshots, em termos das pginas de dados
do banco de dados. Ao criar o snapshot, as pginas de dados no so copiadas do banco de dados
fonte para o snapshot. Ao invs disso, somente um ponteiro criado no snapshot, ponteiro este
que serve como uma referncia para a pgina original de dados. Quando uma pgina de dados for
atualizada pela primeira vez, aps a criao do snapshot, a pgina, sem a atualizao, ou seja,
como era no momento da criao do snapshot, ser copiada para o snapshot. Com isso fica no
banco de dados fonte a pgina modificada (a qual ter tambm todas as subseqentes modificaes)
e no snapshot, a pgina original, como estava no momento em que o snapshot foi gerado. Esta
operao de cpia da pgina original para o snapshot, na primeira vez que a pgina original
modificada, conhecida como copy-on-write operation. Dependendo do nmero de operaes
copy-on-write operation que so executadas e do nmero de snapshots que forem criados, pode
ser necessria uma grande quantidade de espao em disco, para que as pginas possam ser copiadas
para os snapshots.
Se ocorrer de no haver espao em disco, quando o SQL Server precisar copiar uma pgina, o snapshot
ser marcado com o status suspect e no poder mais ser utilizado, tendo que ser excludo. Mais uma
vez importante salientar que isso no afeta, de maneira alguma, o banco de dados original.
Por isso importante que voc faa um planejamento cuidadoso, de tal forma que tenha espao suficiente
em disco, enquanto um ou mais snapshots estiverem em uso.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9180000Curso Completo
RECOMENDAES PARA A CRIAO DE UM SNAPSHOT
Antes de partirmos para a parte prtica, apresentarei algumas recomendaes contidas no Books online,
relacionadas com diversos aspectos sobre a criao de snapshot Databases, tais como: nomeao dos
snapshots e limitaes para o nmero de snapshots a serem mantidos.
RECOMENDAES SOBRE A NOMEAO DOS SNAPSHOTS
Ao criar um snapshot de um banco de dados, voc dever atribuir um nome a ele. Neste tpico,
apresento algumas sugestes em relao nomeao dos snapshots de um banco de dados.
Conforme j descrito anteriormente, possvel criar mais de um snapshot de um banco de dados.
Cada snapshot que for criado dever ter um nome que seja nico dentro da instncia do SQL Server
onde o snapshot for criado (lembrando que os snapshots somente podem ser criados na mesma instncia
do banco de dados original). O nome do snapshot deve incluir informaes, tais como:
O nome do banco de dados original.
Um prefixo que identifique que um snapshot, tal como snp ou sns.
A data e hora da criao do snapshot ou um nmero seqencial.
Vamos a um exemplo prtico. Vamos considerar o banco de dados Northind. Para este banco de dados,
imagine que estamos criando trs snapshots por dia, com um intervalo de seis horas de diferena,
dentro do perodo das 6 da manh at as 6 da tarde (18 horas). Ou seja, so criados snapshots s 6 da
manh, meio-dia (12 horas) e as 18 horas. Considere tambm que cada snapshot ser mantido por 24
horas antes de ser excludo e substitudo por um novo snapshot, com o mesmo nome. Para este exemplo,
podemos criar um esquema de nomeao como o indicado a seguir, onde em cada snapshot constam
o nome do banco de dados, a indicao de que um snapshot e a hora em que foi criado. Como cada
snapshot substitudo por outro, de igual nome, 24 horas aps ter sido criado, no necessria a
incluso da data de criao, no nome do snapshot:
Northwind_snp_0600
Northwind_snp_1200
Northwind_snp_1800
Agora vamos modificar um pouco o nosso exemplo. Vamos supor que o horrio de criao dos snap-
shots no seja to bem definido. Seja apenas um de manh, outro mais ou menos ao meio-dia e um
tarde. Neste caso, poderamos usar os seguintes nomes:
Northwind_snp_manh
Northwind_snp_almoo
Northwind_snp_tarde
LIMITAR O NMERO DE SNAPSHOTS A SEREM MANTIDOS
Conforme descrevi anteriormente, medida que as pginas de dados so atualizadas no banco de
dados original, a verso antes da alterao copiada para o snapshot, na operao conhecida como
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
Curso Completo0000919
N
O
T
A
copy-on-write operation. medida que as pginas so copiadas, mais e mais espao faz-se necessrio
no disco. Alm disso, um snapshot ser mantido, at que ele seja excludo. Por isso, voc deve definir
qual o nmero mximo de snapshots que sero mantidos, simultaneamente. Este nmero,
evidentemente, depende do tamanho do banco de dados e do espao disponvel para manter os snap-
shots. Mas algo que tem que ser previsto e, cuidadosamente, planejado.
Muito bem, chega de teoria. A seguir voc aprender a criar snapshots de um banco de dados. Um
detalhe interessante que, para a criao de um snapshot, temos que utilizar comandos T-SQL. No
possvel criar um snapshot, usando a interface grfica do SQL Server Management Studio. Para a criao
de um snapshot, teremos que abrir uma janela de execuo de comandos T-SQL, dentro do SQL Server
Management Studio.
CRIANDO SNAPSHOTS DE UM BANCO DE DADOS
Finalmente vamos prtica. Neste tpico mostrarei como criar um snapshot de um banco de dados.
Antes de criar um snapshot, voc deve certificar-se de que dispe de espao suficiente em disco, para a
criao do snapshot. O espao mximo que o snapshot ir precisar ser o tamanho do banco de dados
original, quando da criao do snapshot. J foi explicado anteriormente mas nunca demais repetir.
Quando da criao do snapshot, as pginas de dados so mantidas no banco de dados fonte. Somente
quando uma pgina alterada, pela primeira vez, que ela copiada para o snapshot e a pgina, com
as alteraes, fica no banco de dados fonte. Com isso, medida que mais pginas so alteradas, mais
pginas sero copiadas para o snapshot. As pginas do snapshot ficam em um arquivo conhecido
como sparse file, o qual tem a extenso .ss.
A criao de um snapshot feita usando o comando CREATE DATABASE, em conjunto com a clusula
AS SNAPSHOT OF. Ou seja, vamos criar um novo banco de dados, o qual ser um snapshot de um
banco de dados j existente. Para criar um snapshot, voc ter que especificar o nome lgico de todos
os arquivos do banco de dados fonte.
Exemplo prtico: Criar um snapshot do banco de dados AdventureWorks. Vamos chamar o snapshot
de AdventureWorks_sns_Exem. O arquivo sparso (.ss) do snapshot ser criado no seguinte caminho:
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_sns_Exem.ss
A extenso .ss apenas uma sugesto, voc pode escolher qualquer outra extenso.
Muito bem, para criar o snapshot proposto, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio e faa conexo com a instncia onde est o banco de
dados AdventureWorks, para o qual voc deseja criar um snapshot.
2. Navegue at o banco de dados AdventureWorks, clique com o boto direito do mouse neste
banco de dados e, no menu de opes que exibido, clique em New Query, para abrir uma
janela de execuo de comandos T-SQL.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9200000Curso Completo
N
O
T
A
3. Execute o seguinte comando:
CREATE DATABASE AdventureWorks_sns_Exem ON
( NAME = AdventureWorks_Data, FILENAME =
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_sns_exem.ss )
AS SNAPSHOT OF AdventureWorks;
GO
O comando ser executado e a seguinte mensagem ser exibida:
Command(s) completed successfully.
Muito bem, isso indica que o snapshot foi criado. E agora, como podemos verificar se ele foi realmente
criado? Muito simples. Na instncia onde o snapshot foi criado, a qual deve ser obrigatoriamente a
mesma instncia do banco de dados original, acesse a opo Databases -> Databases snapshot. Ser
exibida a lista de snapshots que foram criados, conforme exemplo da Figura 15.1, onde j aparece na
lista o snapshot AdventureWorks_sns_Exem, criado no nosso exemplo:
Figura 15.1 Lista de snapshots.
fundamentel salienter que, uma vez criado, o snapshot uma cpia fiel, somente leitura, do banco de dados original. Voc poder navegar
pelas tabelas, views e demais elementos do snapshot. Apenas no poder alter-los ou no poder alterar, inserir ou excluir dados das
tabelas do snapshot.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
Curso Completo0000921
Outro detalhe de grande importncia o fato de que as alteraes que so feitas no banco de dados
fonte no sero repassadas para o snapshot. O snapshot uma cpia fiel do banco de dados, no
momento em que o snapshot criado. Alteraes, adies e excluses feitas nos dados do banco de
dados fonte, aps a criao do snapshot, no so replicadas para o snapshot.
Para excluir um snapshot o mesmo procedimento para excluso de um banco de dados qualquer.
Clique com o boto direito do mouse no snapshot e, no menu de opes que exibido, clique em
Delete. Ser aberta uma janela pedindo confirmao. Clique em OK e pronto, o snapshot foi excludo.
Sobre snapshot Databases era basicamente isso.
DESENVOLVIMENTO EM: CRIAO DE DIAGRAMAS DO BANCO DE DADOS
PR-REQUISITOS
Conhecimento bsico do Modelo Relacional de Dados.
METODOLOGIA
Exemplo prtico de criao de um diagrama.
Os diagramas nos permitem ter uma viso geral da estrutura do banco de dados: tabelas, chaves
primrias, chaves estrangeiras e relacionamentos. uma excelente ferramenta tambm para
documentao da estrutura do banco de dados. Os diagramas so mais conhecidos como
diagramas Entidade x Relacionamentos. Na Figura 15.2, temos um exemplo de um diagrama
Entidade x Relacionamentos:
Figura 15.2 Um exemplo de diagrama Entidades x Relacionamentos.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9220000Curso Completo
Neste tpico, mostrarei um exemplo prtico de como criar um diagrama deste tipo, no SQL Server
2005. Este diagrama bastante til, pois nos d uma viso geral da estrutura do banco de dados,
mostrando as tabelas existentes, os campos de cada tabela, um indicativo de quais campos so chave
primria e os relacionamentos entre as tabelas. Vamos ao exemplo prtico.
Exemplo prtico: Criar um diagrama para o banco de dados AdventureWorks. Para criar o diagrama
proposto, siga os passos indicados a seguir:
1. Abra o SQL Server Management Studio e acesse a instncia onde est o banco de dados
AdventureWorks.
2. Navegue at a opo Databases e clique no sinal de +, ao lado da opo Databases, para exibir
os bancos de dados disponvies nesta instncia.
3. Clique no sinal de + ao lado do banco de dados AdventureWorks, para exibir as opes
disponveis. Observe que uma das opes justamente Database Diagrams, conforme indicado
na Figura 15.3:
Figura 15.3 A opo Database Diagrams.
4. Para criar um novo diagrama, clique com o boto direito do mouse na opo Database Dia-
grams e, no menu de opes que exibido, d um clique em New Database Diagram.
5. Ser aberta a janela Add Table, para que voc adicione as tabelas que faro parte do diagrama.
No obrigatrio que voc adicione todas as tabelas. Outro detalhe importante que voc pode
criar vrios diagramas, no mesmo banco de dados. Por exemplo, voc pode criar um diagrama
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
Curso Completo0000923
onde sejam exibidas as tabelas relacionadas com clientes e pedidos e um outro diagrama onde
sejam exibidas as tabelas relacionadas com funcionrios e fornecedores. No nosso exemplo, vamos
adicionar todas as tabelas cujo dono o schema Person. Aqui cabe mais um comentrio. No
Captulo 6, quando tratei sobre segurana, salientei as novidades do SQL Server 2005 na rea de
segurana. Uma delas era o fato de o dono dos objetos ser um schema e no mais um usurio ou
role. Um dos benefcios do uso de Schema justamente facilitar a segmentao de um banco de
dados em reas bem definidas, tais como Clientes, Pedidos, Funcionrios, etc., onde as tabelas
relacionadas com cada rea tm como dono o respectivo schema.
6. Para selecionar vrias tabelas voc usa a tecla Ctrl. Pressione e mantenha pressionada a tecla
Ctrl e v clicando em todas as tabelas cujo dono seja o schema Person. Aparece (Person) aps
o nome da tabela. Sua janela deve estar semelhante indicada na Figura 15.4:
Figura 15.4 Selecionando as tabelas do schema Person.
7. D um clique no boto Add e depois um clique em Close.
8. As tabelas sero adicionadas ao diagrama com um layout um pouco bagunado. Use o
mouse para arrastar e arranjar as tabelas de uma maneira mais organizada, conforme
sugesto da Figura 15.5.
Observe que so exibidos os relacionamentos existentes entre as tabelas, atravs de linhas que ligam as
tabelas relacionadas.
9. Quando o diagrama est sendo exibido, habilitada uma barra de ferramentas com diversas
opes, relacionadas a edio e configurao do diagrama. Na Figura 15.6 apresentada a barra
de ferramentas.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9240000Curso Completo
Figura 15.5 O diagrama recm-criado.
Figura 15.6 A barra de ferramentas Database Diagram.
A seguir descrevo a funcionalidade dos principais botes da barra de ferramentas Database Diagram.
O segundo boto, da esquerda para a direita, o boto Add table. Ao clicar neste boto ser
aberta a janela Add Table, para que voc possa adicionar outras tabelas ao diagrama.
O terceiro boto, da esquerda para a direita , sem dvida, o mais interessante de todos. o boto
Add Related Tables. Ao clicar neste boto, sero adicionadas ao diagrama, todas as tabelas que
possuem pelo menos um relacionamento com uma das tabelas j existentes no diagrama.
O quarto boto, da esquerda para a direita, exclui do banco de dados a tabela selecionada no
diagrama. MUITA ATENO: Este boto ir excluir a tabela diretamente do banco de dados. Este
boto equivalente a clicar com o boto direito do mouse na tabela e clicar na opo Delete.
O quinto boto, da esquerda para a direita, o Remove frome Diagram. Este boto apenas
retira a tabela do diagrama, sem exclu-la do banco de dados. Ao clicar neste boto, ser excluda
a tabela que estiver selecionada no diagrama. A tabela selecionada indicada pela sua linha de
ttulo com o fundo azul e letras brancas. As tabelas no selecionadas no diagrama so exibidas
com a linha de ttulo em cinza e cor de fonte preta. Voc pode selecionar mais de uma tabela,
usando a tecla Ctrl e clicando nas tabelas a serem selecionadas. Voc tambm pode remover
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
Curso Completo0000925
uma tabela do diagrama, selecionando a tabela e pressionando a tecla Delete. No ser emitida
uma mensagem para confirmao da excluso da tabela do diagrama.
A lista Table View permite que voc exiba as tabelas do diagrama de diferentes maneiras.
Experimente as diferentes opes de visualizao. Na Figura 15.7, temos a opo de visualizao
Names Only. As configuraes de exibio so individuais para cada tabela do diagrama. Voc
pode selecionar uma tabela e usar a lista Table View para alterar somente a forma de exibio
da tabela selecionada. Em um mesmo diagrama, diferentes tabelas podem estar com diferentes
configuraes de visualizao.
Figura 15.7 A opo de visualizao Name Only.
Boto Show Relationship Labels. o primeiro boto, direita da lista Table View. Este boto
exibe informaes adicionais sobre os relacionamentos presentes no diagrama. Pode ser utilizado
como uma forma de documentar os relacionamentos existentes no banco de dados.
Os demais botes desta barra de ferramentas so relacionados com configuraes de layout do diagrama
e so auto-explicativos.
10. Pressione Ctrl + S para salvar o diagrama. Ser exibida a janela Choose Name, para que voc
informe um nome para o diagrama. Digita Tabelas Person, conforme indicado na Figura 15.8:
Figura 15.8 Salvando o diagrama.
11. Clique em OK.
12. Selecione o comando File -> Close, para fechar o diagrama.
13. O diagrama Tabelas Person j deve ser exibido na lista Database Diagramas, do banco de
dados AdventureWorks. Caso voc precise editar o diagrama, basta dar um clique duplo nele,
para abri-lo no modo de edio.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9260000Curso Completo
DESENVOLVIMENTO EM: TRANSFERIR BANCOS DE
DADOS ENTRE INSTNCIAS
PR-REQUISITOS
Conhecimento bsico dos objetos que compem um banco de dados do SQL Server.
METODOLOGIA
Exemplo prtico de transferncia de um banco de dados.
Em determinadas situaes, pode ser necessrio tirar um banco de dados de uma instncia (chamamos
de Desatachar, Desanexar ou o termo em ingls Detach) e mov-lo para outra instncia. Aps desanexar
o banco de dados de uma isntncia, podemos anex-lo (o termo tcnico atachar, anexar ou em ingls
Attach) em uma outra instncia do mesmo servidor ou de outro servidor. So diversas as situaes
prticas onde pode ser necessrio mover um banco de dados de uma instncia para outra. Por exemplo,
pode ser que voc queira mover um banco de dados para um novo servidor, o qual ser dedicado ao
banco de dados, para obter um melhor desempenho.
O processso de desanexar um banco de dados de uma instncia e anex-lo em outra instncia bastante
simples. Vamos aprender a executar esta operao atravs de um exemplo prtico. O processo
constitudo de trs etapas:
1. Desanexar o banco de dados da instncia onde ele est.
2. Copiar todos os arquivos do banco de dados para a pasta onde eles sero utilizados. Devem ser
copiados o arquivo primrio (.mdf), todos os arquivos secundrios (.ndf) e todos os arquivos
de log (.ldf).
3. Anexar o banco de dados na instncia de destino.
Muito bem, vamos a um exemplo prtico.
Etapa 1: Desanexar o banco de dados da instncia de origem. Para desanexar um banco de dados, siga
os passos indicados a seguir:
1. Abra o SQL Server Management Studio, faa a conexo com a instncia onde est o banco de
dados a ser desanexado.
2. Navegue at o banco de dados a ser desanexado, clique com o boto direito do mouse no
banco de dados e, no menu de opes que exibido, clique em Tasks -> Detach.
3. Ser aberta a janela Detach Database, na qual voc pode marcar diversas opes, tais como
Drop Connections (para cancelar as conexes que estejam abertas com o banco de dados),
Keep Full Text Catalogs, para manter os catlogos para pesquisa de Full Text e assim por diante.
Esta tela est indicada na Figura 15.9.
4. Marque as opes desejadas e d um clique em OK.
Pronto, o banco de dados foi desanexado e no ser mais exibido na lista Databases, da instncia.
Etapa 2: Copiar todos os arquivos do banco de dados para a pasta onde eles sero utilizados. Devem ser
copiados o arquivo primrio (.mdf), todos os arquivos secundrios (.ndf) e todos os arquivos de log (.ldf):
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
Curso Completo0000927
Figura 15.9 Desanexando um banco de dados.
Etapa 3: Anexar o banco de dados da instncia de destino. Para anexar um banco de dados, siga os
passos indicados a seguir:
1. Abra o SQL Server Management Studio, faa a conexo com a instncia onde ser anexado o
banco de dados.
2. Navegue at a opo Databases, clique com o boto direito do mouse na opo Databases e, no
menu de opes que exibido, clique em Attach.
3. Ser exibida a janela Attach Databases. Voc pode usar esta janela para anexar mais de um
banco de dados, ao mesmo tempo. Para anexar o banco de dados voc deve informar onde est
gravado o arquivo primrio (.mdf) do banco de dados. Clique no boto Add.
4. Ser aberta a janela Locate Database Files. Navegue at a pasta onde est o arquivo primrio
(.mdf) do banco de dados a ser anexado. Marque o arquivo primrio, conforme exemplo da
Figura 15.10 e clique em OK.
5. Voc estar de volta janela Attach Databases. As informaes sobre o banco de dados tero
sido carregadas a partir do arquivo .mdf, conforme indicado na Figura 15.11.
6. Clique em OK e pronto, o banco de dados ter sido anexado e estar disponvel para ser utilizado.
A seguir apresento algumas situaes que impedem que seja possvel desanexar um banco de dados de
uma instncia do SQL Server 2005:
Se o banco de dados estiver sendo replicado ou contiver publicaes.
1. Copie todos os arquivos que compem o banco de dados (arquivo .mdf, arquivos .ndf e arquivos
.log) para a pasta de destino. Por exemplo, se voc vai anexar o banco de dados em uma
instncia de um outro servidor, deve criar uma pasta no servidor de destino e copiar os arquivos
para dentro desta pasta.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9280000Curso Completo
Figura 15.10 Selecionando o arquivo primrio do banco de dados.
Figura 15.11 A janela Attach Databases.
Se existirem um ou mais snapshots do banco de dados. Antes de poder desanexar o banco de
dados, voc ter que excluir todos os snapshots que tenham sido criados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
Curso Completo0000929
N
O
T
A
Um snapshot no pode ser anexado ou desanexado.
Se houver uma seo de espelhamento do banco de dados database mirroring em andamento,
no ser possvel desanexar o banco de dados. O banco somente poder ser desanexado, depois
que a sesso de espelhamento for encerrada.
O COMANDO SP_DETACH_DB
Voc tambm pode usar o comando sp_detach_db, para desanexar um banco de dados de uma
instncia do SQL Server 2005. Este comando desanexa o banco de dados e pode, opcionalmente,
rodar o comando UPDATE STATISTICS em todas as tabelas do banco de dados, antes de fazer a
desanexao do banco de dados.
Syntax conforme Books online:
sp_detach_db [ @dbname= ] dbname
[ , [ @skipchecks= ] skipchecks ]
[ , [ @KeepFulltextIndexFile= ] KeepFulltextIndexFile ]
Este comando tem os seguintes argumentos:
[ @dbname = ] dbname: o nome do banco de dados a ser desanexado.
[ @skipchecks = ] skipchecks: Esta opo define se o comando UPDATE STATISTICS deve ou
no ser executado ou no em todas as tabelas do banco de dados, antes de fazer a desanexao
do banco de dados. Se esta opo for definida com o valor True, a atualizao das estatsticas
no ser efetuada. Para fazer com que o comando UPDATE STATISTIS seja executado, esta
opo deve ser definida com o valor False. recomendado que as atualizaes sejam executadas,
principalmente quando o banco de dados for movido para uma mdia do tipo somente leitura,
como por exemplo um CD-ROM ou DVD-ROM.
[ @KeepFulltextIndexFile = ] KeepFulltextIndexFile: Esta opo utilizada para definir se
os ndices para pesquisas do tipo full-text sero ou no excludos, durante a desanexao do
banco de dados. Se o valor for NULL ou false, todos os ndices sero excludos; se o valor for
True, os ndices sero mantidos.
Para executar o comando sp_detach_db, o usurio deve ser membro da seguinte role de servidor: db_owner
Exemplo: O comando a seguir faz a desanexao do banco de dados AdventureWorks e define o valor
do parmetro skipchecks como True, ou seja, no ser executado o comando UPDATE STATISTICS, nas
tabelas do banco de dados, para atualizao das estatsticas, antes da desanexao do banco de dados.
EXEC sp_detach_db AdventureWorks, true
Tambm possvel anexar um banco de dados, usando comandos T-SQL. Para isso, usamos o comando
CREATE DATABASE, com a seguinte sintaxe:
CREATE DATABASE database_name
ON <filespec> [ ,...n ]
FOR { ATTACH [ WITH <service_broker_option> ]
| ATTACH_REBUILD_LOG }
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9300000Curso Completo
Considere o exemplo a seguir. Este exemplo faz a anexao de um banco de dados chamado Northwind,
usando a clusula FOR ATTACH. Observe que informado o caminho para o arquivo primrio do
banco de dados (arquivo .mdf):
CREATE DATABASE Archive
ON (FILENAME = c:\program files\microsoft sql server\mssql.1\mssql\data\archdat1.mdf)
FOR ATTACH;
GO
Muito bem, sobre anexao e desanexao de arquivos era basicamente isso. No prximo tpico
mostrarei como acessar, alterar, excluir e inserir dados nas tabelas de um banco de dados, diretamente
atravs da interface do SQL Server Management Studio.
DESENVOLVIMENTO EM: ACESSANDO DADOS DAS
TABELAS DO BANCO DE DADOS
PR-REQUISITOS
Conhecimento bsico da interface do SQL Server Management Studio.
METODOLOGIA
Exemplo prtico de acesso e alterao dos dados das tabelas.
Embora no seja muito usual, voc pode acessar, alterar, incluir e excluir registros das tabelas de um
banco de dados do SQL Server 2005, usando o SQL Server Management Studio. Eu afirmo que no
muito usual porque normalmente os dados so acessados por aplicaes clientes, desenvolvidas em
VB.NET, C#, Delphi ou atravs de aplicaes Web, desenvolvidas em ASP, ASP.NET, PHP ou Java. Mas
pode haver situaes, onde voc precise acessar os dados de uma ou mais tabelas de um banco de
dados, usando o SQL Server Management Studio. Neste tpico, mostrarei, atravs de um exemplo
prtico, como ter acesso aos dados, como alter-los, como adicionar e excluir registros.
Exemplo prtico: Para acessar registros das tabelas de um banco de dados, incluir novos registros,
alterar os registros j existentes e excluir registros, usando o SQL Server Management Studio, siga os
passos indicados a seguir:
1. Abra o SQL Server Management Studio e navegue at o banco de dados onde esto as tabelas a
serem acessadas.
2. Clique no sinal de + ao lado do nome do banco de dados, para exibir as opes disponvies.
3. Clique no sinal de + ao lado da opo Tables, para exibir a lista de tabelas do banco de dados.
4. Clique com o boto direito do mouse na tabela a ser acessada e, no menu de opes que
exibido, clique em Open Table. A tabela ser aberta em modo de edio, semelhante ao modo
Folha de dados das tabelas do Access, conforme indicado na Figura 15.12.
5. Esta uma grade normal de edio, como se fosse o modo folha de dados de uma tabela do Access
ou, at mais simples, uma planilha do Excel. Na parte de baixo da tela, voc tambm tem os botes
de navegao, para ir para o Prximo registro, Registro anterior, Primeiro registro e ltimo registro.
Na parte de baixo tem tambm um campo com o nmero do registro atual. Voc pode digitar o
nmero de um registro e pressionar Enter, para se deslocar para o respectivo registro. Ou seja, tudo
exatamente igual ao modo folha de dados de uma tabela do Microsoft Access.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
Curso Completo0000931
Figura 15.12 Tabela no modo de edio.
6. Para excluir um registro basta clicar na linha do registro, para selecion-lo e depois pressionar
Delete. Ser exibida uma mensagem solicitando a confirmao da excluso do registro, conforme
indicado na Figura 15.13. Clique em Sim e pronto, o registro foi excludo. Voc pode tambm
excluir vrios registros de uma s vez. Para isso basta selecionar com o mouse os registros a
serem excludos e pressionar a tecla Delete. Ser exibida uma mensagem para que voc confirme
a excluso dos registros. Clique em Sim e pronto, os registros selecionados sero excludos.
Figura 15.13 Confirmando a excluso de um registro.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9320000Curso Completo
Figura 15.14 Boto para adicionar um novo registro.
Em resumo, para editar registros, usando o SQL Server Management Studio, basta clicar com o boto direito
do mouse na tabela a ser editada e, no menu de opes que exibido, clicar em Open Table. Feito isso, ser
carregada uma interface praticamente idntica ao modo folha de dados do Microsoft Access.
DESENVOLVIMENTO EM: USAR A OPO DE GERAO
DE SCRIPTS DO SQL SERVER MANAGEMENT STUDIO
PR-REQUISITOS
Conhecimento bsico da interface do SQL Server Management Studio.
METODOLOGIA
Exemplo prtico de gerao de scripts, usando o SQL Server Management Studio.
Que podemos fazer literalmente qualquer ao do SQL Server 2005 usando comandos T-SQL ns j
sabemos. Que a linguagem T-SQL, embora simples, pode tornar-se difcil devido infinidade de
comandos e opes disponveis, ns tambm j sabemos. Que a interface grfica facilita, muito, o
trabalho com o SQL Server 2005, sabemos tambm.
Muito bem, ento para que serve este tpico, se j sabemos todos estes detalhes sobre o T-SQL? Tpico
novo para aprender coisas novas. E o objetivo deste tpico mostrar uma funcionalidade bem
interessante do SQL Server Management Studio: A gerao de scripts. O SQL Server Management Stu-
dio vem com uma srie de opes, que permite a gerao automtica de scripts. Um script nada mais
do que uma seqncia de comandos T-SQL, necessrios para realizar uma determinada tarefa, tal como
criar um banco de dados ou as tabelas de um banco de dados. O SQL Server Management Studio
permite que faamos o caminho inverso, ou seja, a partir dos objetos j existentes, gerar o script que
seria necessrio para recriar o referido objeto. Estes scripts podem ser teis, especialmente em situaes
de emergncia, onde precisamos recriar, rapidamente, um ou mais objetos. Vamos a um exemplo
prtico.
Exemplo prtico: Para gerar scripts, usando o SQL Server Management Studio, siga os passos indicados
a seguir:
7. Na parte de baixo, ao lado do boto ltimo registro, est disponvel o boto Novo registro,
indicado na Figura 15.14. Ao clicar neste boto, ser aberta uma nova linha, em branco, para
que voc insira um novo registro na tabela.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
Curso Completo0000933
1. Abra o SQL Server Management Studio.
2. Navegue at a opo Databases e clique no sinal de + ao lado desta opo, para exibir a lista de
bancos de dados disponveis.
3. Vamos inicialmente mostrar como gerar um script, o qual contm todos os comandos necessrios
para a criao do banco de dados. Por exemplo, clique com o boto direito do mouse no banco
de dados AdventureWorks e, no menu de opes que exibido, clique em Script Database as
> CREATE To -> New Query Editor Window. Ser aberta uma janela de execuo de comandos
T-SQL, com todos os comandos necessrios para criar o banco de dados, exatamente com as
opes atualmente definidas para o banco. A seguir coloco uma cpia do script gerado pelo
SQL Server Management Studio:
********************************************************************************
USE [master]
GO
/****** Object: Database [AdventureWorks] Script Date: 07/12/2005 12:30:14 ******/
CREATE DATABASE [AdventureWorks] ON PRIMARY
( NAME = NAdventureWorks_Data, FILENAME = NC:\Arquivos de programas\Microsoft SQL
Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf , SIZE = 184448KB , MAXSIZE =
UNLIMITED, FILEGROWTH = 16384KB )
LOG ON
( NAME = NAdventureWorks_Log, FILENAME = NC:\Arquivos de programas\Microsoft SQL
Server\MSSQL.1\MSSQL\Data\AdventureWorks_Log.ldf , SIZE = 2048KB , MAXSIZE = 2048GB ,
FILEGROWTH = 16384KB )
COLLATE SQL_Latin1_General_CP1_CI_AS
GO
EXEC dbo.sp_dbcmptlevel @dbname=NAdventureWorks, @new_cmptlevel=90
GO
EXEC [AdventureWorks].[dbo].[sp_fulltext_database] @action = enable
GO
ALTER DATABASE [AdventureWorks] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [AdventureWorks] SET ANSI_NULLS ON
GO
ALTER DATABASE [AdventureWorks] SET ANSI_PADDING ON
GO
ALTER DATABASE [AdventureWorks] SET ANSI_WARNINGS ON
GO
ALTER DATABASE [AdventureWorks] SET ARITHABORT ON
GO
ALTER DATABASE [AdventureWorks] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [AdventureWorks] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [AdventureWorks] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [AdventureWorks] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [AdventureWorks] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [AdventureWorks] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [AdventureWorks] SET CONCAT_NULL_YIELDS_NULL ON
GO
ALTER DATABASE [AdventureWorks] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [AdventureWorks] SET QUOTED_IDENTIFIER ON
GO
ALTER DATABASE [AdventureWorks] SET RECURSIVE_TRIGGERS OFF
GO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9340000Curso Completo
ALTER DATABASE [AdventureWorks] SET ENABLE_BROKER
GO
ALTER DATABASE [AdventureWorks] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [AdventureWorks] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [AdventureWorks] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [AdventureWorks] SET READ_WRITE
GO
ALTER DATABASE [AdventureWorks] SET RECOVERY SIMPLE
GO
ALTER DATABASE [AdventureWorks] SET MULTI_USER
GO
ALTER DATABASE [AdventureWorks] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [AdventureWorks] SET DB_CHAINING OFF
GO
EXEC [AdventureWorks].sys.sp_addextendedproperty @name=NMS_Description,
@value=NAdventureWorks Sample OLTP Database
********************************************************************************
importante salientar que estes comandos so os comandos para recriar o banco de dados to-somente. Os
objetos do banco de dados, tais como tabelas, views, stored procedures e as configuraes de segurana, de
replicao, diagramas, etc. teriam que ser recriadas. Claro que podemos criar scripts para cada um destes
objetos, conforme mostrarei nos prximos passos, para os objetos dos tipos Tabela e View.
4. Clique no sinal de + ao lado da opo Tables, para exibir as tabelas do banco de dados
AdventureWorks.
5. Clique com o boto direito do mouse na tabela HumanResources.Employee. No menu de opes
que exibido, selecione o comando: Script Table as -> CREATE To -> New Query Editor Window.
6. Ser aberta a janela de execuo de comandos T-SQL, com a lista de comandos necessrios para
recriar a tabela HumanResources.Employee, caso necessrio. A seguir apresento a seqncia de
comandos que foi gerada:
*****************************************************************************
USE [AdventureWorks]
GO
/****** Object: Table [HumanResources].[Employee] Script Date: 07/12/2005 13:55:42
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [HumanResources].[Employee](
[EmployeeID] [int] IDENTITY(1,1) NOT NULL,
[NationalIDNumber] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[ContactID] [int] NOT NULL,
[LoginID] [nvarchar](256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[ManagerID] [int] NULL,
[Title] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[BirthDate] [datetime] NOT NULL,
[MaritalStatus] [nchar](1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Gender] [nchar](1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[HireDate] [datetime] NOT NULL,
[SalariedFlag] [dbo].[Flag] NOT NULL CONSTRAINT [DF_Employee_SalariedFlag]
DEFAULT ((1)),
[VacationHours] [smallint] NOT NULL CONSTRAINT [DF_Employee_VacationHours]
DEFAULT ((0)),
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
Curso Completo0000935
[SickLeaveHours] [smallint] NOT NULL CONSTRAINT [DF_Employee_SickLeaveHours]
DEFAULT ((0)),
[CurrentFlag] [dbo].[Flag] NOT NULL CONSTRAINT [DF_Employee_CurrentFlag] DEFAULT
((1)),
[rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_Employee_rowguid]
DEFAULT (newid()),
[ModifiedDate] [datetime] NOT NULL CONSTRAINT [DF_Employee_ModifiedDate] DEFAULT
(getdate()),
CONSTRAINT [PK_Employee_EmployeeID] PRIMARY KEY CLUSTERED
(
[EmployeeID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NPrimary key for
Employee records. ,@level0type=NSCHEMA, @level0name=NHumanResources,
@level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN,
@level2name=NEmployeeID
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NUnique national
identification number such as a social security number. ,@level0type=NSCHEMA,
@level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee,
@level2type=NCOLUMN, @level2name=NNationalIDNumber
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NIdentifies the employee
in the Contact table. Foreign key to Contact.ContactID. ,@level0type=NSCHEMA,
@level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee,
@level2type=NCOLUMN, @level2name=NContactID
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NNetwork login.
,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NCOLUMN, @level2name=NLoginID
GO
<lc>EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NManager to whom the
employee is assigned. Foreign Key to Employee.M ,@level0type=NSCHEMA,
@level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee,
@level2type=NCOLUMN, @level2name=NManagerID
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NWork title such as
Buyer or Sales Representative. ,@level0type=NSCHEMA, @level0name=NHumanResources,
@level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN,
@level2name=NTitle
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NDate of birth.
,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NCOLUMN, @level2name=NBirthDate
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NM = Married, S =
Single ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NCOLUMN, @level2name=NMaritalStatus
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NM = Male, F = Female
,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NCOLUMN, @level2name=NGender
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NEmployee hired on this
date. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NCOLUMN, @level2name=NHireDate
GO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9360000Curso Completo
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NJob classification. 0 =
Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective
bargaining. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NCOLUMN, @level2name=NSalariedFlag
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NNumber of available
vacation hours. ,@level0type=NSCHEMA, @level0name=NHumanResources,
@level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN,
@level2name=NVacationHours
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NNumber of available
sick leave hours. ,@level0type=NSCHEMA, @level0name=NHumanResources,
@level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN,
@level2name=NSickLeaveHours
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=N0 = Inactive, 1 =
Active ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NCOLUMN, @level2name=NCurrentFlag
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NROWGUIDCOL number
uniquely identifying the record. Used to support a merge replication sample.
,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NCOLUMN, @level2name=Nrowguid
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NDate and time the
record was last updated. ,@level0type=NSCHEMA, @level0name=NHumanResources,
@level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN,
@level2name=NModifiedDate
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NEmployee information
such as salary, department, and title. ,@level0type=NSCHEMA,
@level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NUnique nonclustered
index. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NINDEX, @level2name=NAK_Employee_LoginID
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NUnique nonclustered
index. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NINDEX,
@level2name=NAK_Employee_NationalIDNumber
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NUnique nonclustered
index.Used to support replication samples. ,@level0type=NSCHEMA,
@level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee,
@level2type=NINDEX, @level2name=NAK_Employee_rowguid
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NNonclustered index.
,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NINDEX, @level2name=NIX_Employee_ManagerID
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NPrimary key (clustered)
constraint ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NCONSTRAINT, @level2name=NPK_Employee_EmployeeID
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NINSTEAD OF DELETE
trigger which keeps Employees from being deleted. ,@level0type=NSCHEMA,
@level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee,
@level2type=NTRIGGER, @level2name=NdEmployee
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NAFTER UPDATE trigger
setting the ModifiedDate column in the Employee table to the current date.
,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NTRIGGER, @level2name=NuEmployee
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
Curso Completo0000937
GO
USE [AdventureWorks]
GO
ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT
[FK_Employee_Contact_ContactID] FOREIGN KEY( [ContactID])
REFERENCES [Person].[Contact] ( [ContactID])
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NForeign key constraint
referencing Contact.ContactID. ,@level0type=NSCHEMA, @level0name=NHumanResources,
@level1type=NTABLE, @level1name=NEmployee, @level2type=NCONSTRAINT,
@level2name=NFK_Employee_Contact_ContactID
GO
ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT
[FK_Employee_Employee_ManagerID] FOREIGN KEY( [ManagerID])
REFERENCES [HumanResources].[Employee] ( [EmployeeID])
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NForeign key constraint
referencing Employee.ManagerID. ,@level0type=NSCHEMA, @level0name=NHumanResources,
@level1type=NTABLE, @level1name=NEmployee, @level2type=NCONSTRAINT,
@level2name=NFK_Employee_Employee_ManagerID
GO
ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT
[CK_Employee_BirthDate] CHECK (([BirthDate]>=1930-01-01' AND
[BirthDate]<=dateadd(year,(-18),getdate())))
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NCheck constraint
[BirthDate]>=1930-01-01' AND [BirthDate]<=dateadd(year,(-18),GETDATE())
,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NCONSTRAINT,
<lc>@level2name=NCK_Employee_BirthDate
GO
ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT [CK_Employee_Gender]
CHECK ((upper([Gender])=F OR upper([Gender])=M))
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NCheck constraint
[Gender]=f OR [Gender]=m OR [Gender]=F OR [Gender]=M
,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NCONSTRAINT, @level2name=NCK_Employee_Gender
GO
ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT
[CK_Employee_HireDate] CHECK (([HireDate]>=1996-07-01' AND
[HireDate]<=dateadd(day,(1),getdate())))
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NCheck constraint
[HireDate]>=1996-07-01' AND [HireDate]<=dateadd(day,(1),GETDATE())
,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE,
@level1name=NEmployee, @level2type=NCONSTRAINT, @level2name=NCK_Employee_HireDate
GO
ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT
[CK_Employee_MaritalStatus] CHECK ((upper([MaritalStatus])=S OR
upper([MaritalStatus])=M))
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NCheck constraint
[MaritalStatus]=s OR [MaritalStatus]=m OR [MaritalStatus]=S OR
[MaritalStatus]=M ,@level0type=NSCHEMA, @level0name=NHumanResources,
@level1type=NTABLE, @level1name=NEmployee, @level2type=NCONSTRAINT,
@level2name=NCK_Employee_MaritalStatus
GO
ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT
[CK_Employee_SickLeaveHours] CHECK (([SickLeaveHours]>=(0) AND [SickLeaveHours]<=(120)))
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NCheck constraint
[SickLeaveHours]>=(0) AND [SickLeaveHours]<=(120) ,@level0type=NSCHEMA,
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9380000Curso Completo
@level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee,
@level2type=NCONSTRAINT, @level2name=NCK_Employee_SickLeaveHours
GO
ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT
[CK_Employee_VacationHours] CHECK (([VacationHours]>=(-40) AND [VacationHours]<=(240)))
GO
EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NCheck constraint
[VacationHours]>=(-40) AND [VacationHours]<=(240) ,@level0type=NSCHEMA,
@level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee,
@level2type=NCONSTRAINT, @level2name=NCK_Employee_VacationHours
*****************************************************************************
Claro que esta uma tabela bem complexa, onde foi definida uma srie de propriedades e opes. A
seguir um exemplo de script bem mais simples, gerado a partir da opo CREATE TO, para a tabela
Clientes, do banco de dados Northwind:
*****************************************************************************
USE [NortwindReport]
GO
/****** Object: Table [dbo].[Clientes] Script Date: 07/12/2005 13:59:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Clientes](
[CdigoDoCliente] [nvarchar](5) COLLATE Latin1_General_CI_AS NOT NULL,
[NomeDaEmpresa] [nvarchar](40) COLLATE Latin1_General_CI_AS NOT NULL,
[NomeDoContato] [nvarchar](30) COLLATE Latin1_General_CI_AS NULL,
[CargoDoContato] [nvarchar](30) COLLATE Latin1_General_CI_AS NULL,
[Endereo] [nvarchar](60) COLLATE Latin1_General_CI_AS NULL,
[Cidade] [nvarchar](15) COLLATE Latin1_General_CI_AS NULL,
[Regio] [nvarchar](15) COLLATE Latin1_General_CI_AS NULL,
[CEP] [nvarchar](10) COLLATE Latin1_General_CI_AS NULL,
[Pas] [nvarchar](15) COLLATE Latin1_General_CI_AS NULL,
[Telefone] [nvarchar](24) COLLATE Latin1_General_CI_AS NULL,
[Fax] [nvarchar](24) COLLATE Latin1_General_CI_AS NULL,
CONSTRAINT [PK_Clientes] PRIMARY KEY CLUSTERED
(
[CdigoDoCliente] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
*****************************************************************************
O recurso de gerao de scripts um recurso bastante til, que o administrador deve conhecer.
DESENVOLVIMENTO EM: EDIES DO SQL SERVER 2005
PR-REQUISITOS
Conhecimento bsico dos objetos que compem um banco de dados do SQL Server.
METODOLOGIA
Descrio e comparao entre as Edies do SQL Server 2005.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
Curso Completo0000939
INTRODUO
O SQL Server 2005, a exemplo do que ocorria com as verses anteriores do SQL Server, fornecido em
diferentes edies. Desde edies bastante limitadas, tais como o SQL Server 2005 Express Edition at
edies peso-pasado, tais como o SQL Server 2005 Enterprise Edition.
Existem diferenas de funcionalidades e de limites, em termos de desempenho e uso de recursos de
hardware, entre as diferentes edies. Neste tpico apresentarei estas diferenas, para que voc possa
decidir qual edio do SQL Server 2005 a mais adequada, para uso na sua empresa.
Neste tpico, o qual encerra o captulo e o livro, farei uma breve descrio de cada uma das edies,
bem como um estudo comparativo entre as edies.
SQL SERVER 2005 ENTERPRISE EDITION (32-BITS E 64-BITS)
Esta, sem dvida, a edio peso-pesado, ou seja, a mais completa, a que tem mais funcionalidades.
Esta, provavelmente, a edio a ser usada para aplicaes de grande porte, com um grande nmero de
usurios e em ambientes de elevada segurana. O SQL Server 2005 Enterprise Edition recomendado
para uso em aplicaes de grande porte, onde temos um grande nmero de usurios conectados, fazendo
alteraes, adies ou excluses de registro. O tpico ambiente chamado de OLTP Online Transaction
Processing. Um exemplo tpico deste tipo de aplicao um sistema de reserva de passagens de uma
companhia area, o qual utilizado por milhares de atendentes, simultaneamente. O Enterprise Edition
tambm recomendado para o uso em solues que envolvem anlises e consultas complexas, devido
necessidade de elevado volume de processamento e clculos, neste tipo de aplicao. Esta edio suporta
recursos importantes para garantir a disponibilidade do banco de dados, tais como os recursos de failover
clustering e database mirroring. Esta edio esta disponvel em verses de 32 e de 64 bits.
SQL SERVER 2005 STANDARD EDITION (32-BITS E 64-BITS)
Esta uma verso mais light, em relao Enterprise Edition e a edio indicada para pequenas e
mdias empresas. Por exemplo, se voc tem um banco de dados para cadastro de clientes e acompanhamento
de pedidos, banco de dados este que ser utilizado por 100 usurios da sua empresa, certamente o SQL
Server 2005 Standard Edition, dar conta deste trabalho, com folga. Ele tambm inclui funcionalidades
necessrias para a implementao de e-comerce, data warehousing e para ambientes OLTP com um nmero
pequeno ou mdio de usurios. Esta edio est disponvel em verses de 32 e de 64 bits.
SQL SERVER 2005 WORKGROUP EDITION (SOMENTE EM 32 BITS)
Esta uma edio ainda mais light, em comparao com o SQL Server 2005 Enterprise Edition e o SQL
Server 2005 Standard Edition. Ele indicado para aplicaes tpicas de gerenciamento de dados, para
pequenas organizaes, com um nmero limitado de usurios. Ela tambm indicada para aplicaes
de uma intranet interna da empresa, como suporte ao banco de dados de um servidor Web, para uso
departamental ou para uso por filiais da empresa, com um nmero reduzido de usurios. Esta edio
inclui as funcionalidades principais do SQL Server 2005 e pode, quando necessrio, sofrer um upgrade
para as edies Standard Edition ou Enterprise Edition. Est disponvel somente na verso em 32 bits.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9400000Curso Completo
SQL SERVER 2005 DEVELOPER EDITION (32-BITS E 64-BITS)
Esta uma edio para testes ou para ser utilizada em um ambiente de desenvolvimeno. Ela apresenta
todas as funcionalidades do SQL Server 2005 Enterprise Edition, porm no pode ser colocada em um
ambiente de produo. A licena de uso desta edio para teste e desenvolvimento de aplicaes.
Uma vez criado o banco de dados e demais objetos, eles devem ser movidos para uma instncia do
SQL Server 2005 Enterprise, Workgroup Edition ou Standard Edition, para serem colocados em produo.
Se necessrio, o SQL Server 2005 Developer Edition pode sofrer um upgrade para o SQL Server 2005
Enterprise Edition, sem problemas. Est disponvel em verses de 32 bits e 64 bits.
SQL SERVER 2005 EXPRESS EDITION (DISPONVEL SOMENTE EM 32-BITS)
Esta edio gratuita e pode ser baixada diretamente do site da Microsoft, no seguinte endereo:
http://www.microsoft.com/sql/2005/productinfo/ctp.mspx
Esta edio pode ser utilizada para criar aplicaes baseadas em bancos de dados. Ela integrada com o
Visual Studio 2005, o que facilita bastante o desenvolvimento. Por exemplo, ao invs de criar aplicaes
baseadas no Access, voc pode cri-las baseadas no SQL Server 2005 Express Edition, o qual bem mais
confivel, robusto e seguro do que o Microsoft Access. Esta edio recomendada para o uso com aplicaes
que precisam de um banco de dados no cliente, para armazenar informaes localmente, ou at mesmo
para banco de dados no servidor, mas para um nmero pequeno de usurios e acessos simultneos.
COMPARAO ENTRE AS VERSES
A seguir apresento algumas tabelas comparativas entre os recursos das diferentes edies. Estas tabelas,
sempre atualizadas, podem ser acessadas diretamente no site da Microsoft, no seguinte endereo:
http://www.microsoft.com/sql/2005/productinfo/sql2005features.mspx
Caracterstica Express Workgroup Standard Enterprise
Nmero de CPUs 1 2 4 Sem limites
RAM 1 GB 3 GB Sem Limites Sem limites
Suporte 64-bits Sim Sim
Tamanho de banco de dados 4 GB Sem Limites Sem Limites Sem limites
Particionamento Sim
Parallel Index Operations Sim
Tabela 15.1 Comparao entre Escalabilidade e Performance.
Caracterstica/Edio Express Workgroup Standard Enterprise
Database Mirroring Sim Sim
Failover Clustering Sim Sim
Backup Log-shipping Sim Sim Sim
Tabela 15.2 Disponibilidade.
continuao
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
Curso Completo0000941
N
O
T
A No endereo a seguir, voc encontra diversas outras tabelas, comparando uma srie de caractersticas do SQL Server 2005, em relao s
suas diferentes edies. Esta uma informao importante na hora de definir qual a melhor edio do SQL Server 2005 a ser utilizada na
sua empresa: http://www.microsoft.com/sql/2005/productinfo/sql2005features.mspx
CONCLUSO
Neste captulo, que encerra o livro, apresentei mais alguns itens e novidades do SQL Server 2005.
Inicialmente voc aprendeu sobre a criao e uso de um ou mais snapshots de um banco de dados.
Conforme destaquei neste tpico, esta funcionalidade est disponvel somente no SQL Server 2005
Enterprise Edition.
Em seguida abordei sobre a criao de diagramas de um banco de dados. Os diagramas nos permitem ter
uma viso geral da estrutura do banco de dados: tabelas, chaves primrias, chaves estrangeiras e
relacionamentos. uma excelente ferramenta tambm para documentao da estrutura do banco de dados.
Na seqncia apresentei o passo-a-passo sobre como realizar uma srie de tarefas teis, bastante comuns
ao dia-a-dia do DBA:
Como transferir um banco de dados de uma instncia para outra.
Como trabalhar com tabelas, diretamente no SQL Server Management Studio.
Usar a opo de gerao de scripts do SQL Server Management Studio.
Caracterstica/Edio Express Workgroup Standard Enterprise
Online System Changes Sim Sim Sim Sim
Online Indexing Sim
Online Page and File Restore Sim
Fast Redo Sim
Caracterstica/Edio Express Workgroup Standard Enterprise
Auto Tuning Sim Sim Sim Sim
Express Manager Sim Sim Sim Sim
Management Studio Sim Sim Sim
Database Tuning Advisor Sim Sim Sim
Serviceability Enhancements Sim Sim Sim Sim
Full Text Search Sim Sim Sim
SQL Agent Job Scheduling Service Sim Sim Sim
Tabela 15.3 Gerenciamento e Administrao.
continuao
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
9420000Curso Completo
Para encerrar o captulo apresentei uma descrio detalhada das diferentes edies do SQL Server 2005.
Esto disponveis as seguintes edies:
SQL Server 2005 Enterprise Edition (32-bits e 64-bits)
SQL Server 2005 Standard Edition (32-bits e 64-bits)
SQL Server 2005 Workgroup Edition (somente 32-bits)
SQL Server 2005 Developer Edition (32-bits e 64-bits)
SQL Server 2005 Express Edition (somente 32-bits)
Muito bem, amigo leitor. Com isso encerramos mais um trabalho. Espero que este livro tenha sido til
e tenha ajudado bastante no seu aprendizado. Para dvidas sobre os exemplos do livro, para enviar
suas crticas, elogios e sugestes e para relatar eventuais erros contidos no livro, entre em contato
atravs do e-mail webmaster@juliobattisti.com.br
Acesse tambm, seguidamente, o site http://www.juliobattisti.com.br, no qual publicarei artigos e
tutoriais sobre o SQL Server 2005, abordando tpicos no contidos neste livro ou tpicos que
complementam a abordagem contida aqui no livro. No site voc encontrar tambm um frum de
discusso sobre o SQL Server 2005, no seguinte endereo: http://www.juliobattisti.com.br/forum.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Anexo
REFERNCIA ATRAVS DE EXEMPLOS, DOS
PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9440000Curso Completo
INTRODUO
Neste anexo, apresentaremos um guia de referncia rpida para os principais comandos da linguagem
T-SQL. Apresentarei 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, utilizei comandos da linguagem T-SQL. Em alguns, utilizamos
estes comandos na janela de execuo de comandos T-SQL. Nesta janela, os comandos so digitados
utilizando a sintaxe da linguagem T-SQL e depois executados. Mas tambm executamos uma srie de
comandos utilizando o SQL Server Management Studio. 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
respectiva tarefa. Em resumo, o SQL Server Management Studio , 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 2005, executada atravs de um ou mais comandos T-SQL. Estes comandos podem ter sido
digitados e executados diretamente na janela de execuo de comandos T-SQL, ou montados com
auxlio do SQL Server Management Studio. Por isso importante conhecermos os principais comandos
T-SQL e a sintaxe destes comandos.
Neste anexo, veremos a sintaxe dos principais comandos T-SQL, bem como exemplos de utilizao
destes comandos. Para acompanhar os exemplos, aqui apresentados, o amigo leitor dever utilizar a
janela de execuo de comandos T-sQL. Utilizarei, na maioria dos exemplos, o Banco de Dados
Northwind. Este Banco de Dados, no instalado por padro com o SQL Server 2005. No captulo
sobre o DTS Import/Export Wizard, eu mostrei como importar este banco de dados de uma instncia
do SQL Server 2000 para uma instncia do SQL Server 2005.
Apresentarei 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 views 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 anexo exigem que voc tenha permisso de administrador,
no SQL Server 2005, para execut-los. Se a instncia do SQL Server 2005, que voc est utilizando, est
no modo de segurana Windows Authentication, voc dever fazer o logon com uma conta de
administrador do Windows. Esta conta, automaticamente, possuir permisses de administrador no
SQL Server 2005. Se a instncia do SQL Server 2005, que voc est utilizando, est no modo de segurana
Windows and SQL Server Authentication, voc pode utilizar tanto uma conta de administrador do
Windows, quanto a conta sa ou qualquer outra conta que pertena role sysadmin.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000945
N
O
T
A
N
O
T
A
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 2005.
Para maiores informaes sobre segurana no SQL Server 2005, consulte o Captulo 6.
NOES BSICAS DA LINGUAGEM SQL
COMANDOS PARA CONSULTAR DADOS
Como o prprio nome sugere Microsoft SQL Server 2005 a linguagem utilizada pelo Microsoft SQL
Server 2005 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
2005, existem situaes em que precisamos conhecer e utilizar a linguagem T-SQL. Nos captulos deste
livro, para a criao de store procedures, triggers e outros recursos avanados, utilizamos a linguagem
T-SQL.
Neste anexo, 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, porque fao referncia ao padro SQL de uma maneira genrica. Quando for utilizada a sigla T-SQL
estarei me referindo implementao da linguagem SQL feita pela Microsoft no SQL Server 2005.
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, mtodo este que,
obrigatoriamente, o mesmo em todos os sistemas que utilizam o SQL (na verdade deveria ser o
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9460000Curso Completo
N
O
T
A
mesmo mas no . Na prtica existem diferenas e inconsistncias entre os padres SQL utilizados em
diferentes bancos de dados, tais como o SQL Server, ORACLE, DB2 e outros).
Existem pequenas diferenas nas implementaes do SQL de diferentes fabricantes. Desta forma algumas rotinas escritas utilizando, por
exemplo, o SQL Plus do Oracle podem no rodar, sem as devidas adaptaes, no Microsoft SQL Server e vice-versa.
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, sem dvida, 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 campos de quais tabelas faro parte da consulta,
quais os critrios de pesquisa que sero utilizados, qual a ordem de classificao, qual o relacionamento
entre as tabelas e assim por diante.
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:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000947
N
O
T
A
Vamos analisar alguns exemplos prticos de utilizao da linguagem SQL.
Para os exemplos deste anexo vou utilizar 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 a janela de execuo de comandos T-SQL,
conforme j descrito nos captulos do livro, 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, na
janela de execuo de comandos T-SQL, o Banco de Dados onde esto as tabelas deve ser o banco de
dados atual. Para tornar um banco de dados 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, e 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
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.
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.
Tabela A.1 Os principais elementos da instruo SELECT.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9480000Curso Completo
N
O
T
A
N
O
T
A
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 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.
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
do campo Freight (frete). 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 campo ShipCountry seja
igual a Brazil.
SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders
WHERE ShipCountry=Brazil
ORDER BY Freight
Estou utilizando Brazil com z porque 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 Brazil. 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000949
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.
Na Tabela A.2 temos uma relao com os principais 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
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
Tabela A.2 Operadores de comparao.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9500000Curso Completo
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 comandos T-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 dentro 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 vm delimitados por apstrofes ().
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, definimos 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 T-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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000951
Veja que a coluna calculada ShippedDate - 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
O OPERADOR LIKE
Utilizamos o operador LIKE para fazer pesquisas aproximadas ou por parte do contedo de um campo.
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 se 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 se 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.
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]%.
Tabela A.3 Caracteres especiais do operador LIKE.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9520000Curso Completo
N
O
T
A
N
O
T
A
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 T-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%
sero retornados todos os registros para clientes cujo nome se 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
2005, 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 e-book Criando Sites Dinmicos com ASP 3.0, 732
pginas, de minha autoria. Maiores informaes em http://www.juliobattisti.com.br/ebooksdoautor
At agora trabalhamos com exemplos de 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,
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, e 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000953
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.
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, utilizamos
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,
de forma que teremos mais um join. Para trs tabelas teremos dois joins.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9540000Curso Completo
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
em conseqncia do aumento da complexidade das consultas. At trs ou quatro nveis considerado
normal, mas 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 apresentei exemplos de 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 T-SQL para a construo
de outros tipos de instrues SQL, as quais realizam alteraes, incluses e excluses em tabelas do
Banco de Dados.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000955
NOES BSICAS DA LINGUAGEM T-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 ASP ou ASP.NET, 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 T-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.
Na Tabela A.4, temos uma relao com os principais operadores matemticos para realizao de clculos
bsicos.
Operador Descrio
+ Adio
- Subtrao
* Multiplicao
/ Diviso
Tabela A.4 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 seja aumentado 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9560000Curso Completo
Exemplo 3: Alterar a instruo T-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 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 registro no ter o seu preo unitrio 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 T-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, vamos utilizar uma instruo UPDATE, em conjunto com uma
clusula WHERE.
UPDATE [Order Details]
SET [Order Details].[UnitPrice]=[Order Details].[UnitPrice]*1.2
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000957
N
O
T
A
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
Observe que utilizamos a funo Date( ) para capturar a data do sistema e subtramos 30, para obter
apenas os funcionrios contratados h 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 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 iremos excluir todos os registros da tabela.
Neste item, apresentamos uma breve introduo linguagem T-SQL, que no Microsoft SQL Server
chamada de Transact-SQL.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9580000Curso Completo
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 a janela de execuo de comandos
T-SQL, janela esta que voc aprendeu a utilizar nos captulos do livro.
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,
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000959
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 este ser encerrado e uma mensagem de erro ser emitida.
Exemplo: Criar um Banco de Dados com as caractersticas definidas na Tabela A.5.
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.
Tabela A.5 Banco de Dados BDExemplo.
Para criar o Banco de Dados BDExemplo, utilizamos o seguinte comando:
CREATE DATABASE BDExemplo
ON
*************************
Definio do Arquivo Primrio
*************************
(NAME= BDExemplo_prim,
FILENAME = C:\livrosql\BDExemplo\BDExemplo-prim.mdf ,
SIZE= 7MB,
MAXSIZE= 25MB,
FILEGROWTH = 1MB),
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9600000Curso Completo
N
O
T
A
***************************
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,
FILENAME = C:\livrosql\BDExemplo\BDExemplo-log1.ldf ,
SIZE= 7MB,
MAXSIZE= 25MB,
FILEGROWTH = 2MB)
***************************************
Final do comando de criao do Banco de Dados
***************************************
Veja que utilizei 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 j dever ser exibido na lista de banco de dados.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000961
N
O
T
A
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 o comando Use BDExemplo.
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:
The command(s) completed successfully.
Campo Tipo de dado/Tamanho mximo
CdigoProduto Integer
NomeProduto Texto de no mximo 50 caracteres.
CdigoFornecedor Integer
CdigoCategoria Integer
PreoUnitrio money
UnidadesEstoque Integer
EstoqueMnimo Integer
Descontinuado bit (0=sim, 1=no)
Tabela A.6 A tabela Produtos.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9620000Curso Completo
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.
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, orientamos 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000963
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.
2. Todas as colunas de um ndice composto devem pertencer mesma tabela. Como no SQL
Server 2005 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 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
Address (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, e 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 a janela de
execuo de comandos T-SQL. O ndice ter as seguintes caractersticas:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9640000Curso Completo
N
O
T
A
Tabela Customers do Banco de Dados Northwind.
Nome: CountryIndex.
Colunas: Country.
Permitir valores duplicados.
Exemplo:
Criando o ndice CountryIndex com a janela de execuo de comandos T-SQL:
1. Abra o SQL Server Management Studio, navegue at o banco de dados Northwind, clique com
o boto direito do mouse no banco de dados e, no menu de opes que exibido, clique em
New Query.
2. Pronto, ser aberta a janela de execuo de comandos T-SQL.
3. Execute 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:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000965
N
O
T
A
N
O
T
A
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 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 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 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, os quais vo possibilitar o clculo da mdia anual, so realizados a partir
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9660000Curso Completo
N
O
T
A
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
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.
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 ShipCity igual a London. Gravar o stored procedure com o nome usp_PedidosLondon. O
stored procedure ser criado no Banco de Dados Northwind.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000967
N
O
T
A
Utilizei 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
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 o Stored procedure so executados e os
resultados so retornados (somente os pedidos em que o campo ShipCity igual a London).
Quando criamos um stored procedure, o SQL Server 2005 grava informaes em uma srie de tabelas
no prprio Banco de Dados onde o stored procedure criado. O nome do stored procedure 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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9680000Curso Completo
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 um exemplo prtico.
Exemplo 1: 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000969
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
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
<body tePara 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 este no
foi informado.
Se passarmos parmetros a mais, conforme indicado no seguinte comando:
Execute usp_Ped_Cid_Pas Sao Paulo, Alemanha, 12/06/2001
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9700000Curso Completo
N
O
T
A
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.
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000971
N
O
T
A
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.
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, vamos
cancelar o restante de execuo da trigger e tambm o comando INSERT.
Para alterar uma trigger, utilizamos o comando ALTER TRIGGER. A sintaxe bsica para este comando
a seguinte:
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9720000Curso Completo
USE Northwind
GO
ALTER TRIGGER nome_trigger
ON nome_tabela
FOR { INSERT | UPDATE | DELETE }
AS
comando 1
comando 2
comando 3
...
comando n
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)
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000973
N
O
T
A
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.
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 2005
Na Tabela A.7 temos alguns comandos para criao de logins.
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 2005, para o caso de estarmos utilizando o modo
de segurana SQL Server and Windows.
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.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9740000Curso Completo
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
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 a respectiva
instncia do 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 chico, do domnio
GROZA, utilizamos o seguinte comando:
exec sp_denylogin GROZA\chico
ou
exec sp_denylogin [GROZA\chico]
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000975
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 adicionar e remover logins do prprio SQL Server, para o caso
de trabalharmos no modo de segurana misto.
Para adicionar um login do SQL Server 2005, 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, e com isso o identificador nico de segurana
ser gerado pelo prprio SQL Server 2005, 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.
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.
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9760000Curso Completo
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.
Em nosso exemplo, descrito na Tabela A.8, utilizaremos o comando 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 login 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 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.
No podemos adicionar um login com o mesmo nome de um login reservado, como por exemplo
sa ou public.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000977
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 2005 e tambm garante direito de
login a 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 2005
exec sp_addlogin sqluser1, senha123, pubs
exec sp_addlogin sqluser2, senha123, pubs
Pressione Ctrl+E para executar o comando.
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.
Pronto, os logins foram adicionados e o Banco de Dados padro,s 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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9780000Curso Completo
N
O
T
A
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 tm 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
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 predefinidas 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 comandos T-SQL, crie as roles indicadas na Tabela A.9.
Nome da role Banco de Dados/Instncia.
role1 Exemplo1 SERVIDOR\SRVINST01
role2 Exemplo1 SERVIDOR\SRVINST01
role3 Exemplo1 SERVIDOR\SRVINST01
Tabela A.9 Roles a serem criadas com o Query Analyzer.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL
Curso Completo0000979
Para criar as roles da Tabela A.9, faa o seguinte:
1. Execute 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
2. 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.
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 2005.
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 2005, na Internet:
http://www.microsoft.com/sql
http://support.microsoft.com/sql
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
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ndice
Remissivo
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9820000Curso Completo
.NET FRAMEWORK CLASS LIBRARY, 797
Conceito, 797
Estrutura, 799
Introduo, 797
O que , 797
Principais Classes, 800
.NET, 762
.NET FRAMEWORK CLASS
LIBRARY, 766
CLR, 764
Conceito, 762
Introduo, 762
Web Services, 762
A
Access, 709
Acessar dados do SQL Server, 722
Anexar tabelas, 731
Banco de dados, 709
Consultas, 711
Consultas usando dados do SQL
Server, 736
Estrutura do banco, 709
Exemplo prtico, 736
Fonte ODBC, 723
Formulrios, 713
Importar dados do SQL Server, 722
Macros, 720
Mdulos, 721
Pginas, 716
Relatrios, 715
Tabelas, 710
Acessar dados via Browser, 746
Configuraes necessrias, 746
Configurando o IIS, 746
Exemplo prtico, 752
Acesso HTTP SOAP Nativo, 49
ADD CONSTRAINT, 536
ADO, 642
Command, 656
Como funciona, 653
Conceito, 653
Connection, 656
Definio, 653
Estrutura, 653
Modelo de objetos, 655
O que , 653
Record, 656
RecordSet, 656
Stream, 656
ADO.NET, 785
Conceito, 785
Conectando o SQL Server, 826
Criando conexes, 825
Data Adapter, 832
DataSet, 834
DataView, 836
Estrutura, 786
Exemplo prtico, 826
Introduo, 824
Principais classes, 824
Versus ADO, 822
AdventureWorks, 118
Agendamento de Tarefas, 269
Conceito, 269
Criao de Jobs, 271
Definir agendamento, 275
Executar o Job, 277
Histrico de execuo, 278
Introduo, 269
Job, 269
Vrios passos, 274
Agendamento do backup, 250
Tarefa agendada, 253
Agentes de Replicao, 493
Criados pela replicao, 493
Alertas, 433
Conceito, 433
Exemplo prtico, 433
Introduo, 433
ALTER DATABASE, 151
Exemplo prtico, 151
Sintaxe, 151
ALTER INDEX, 378
Exemplos, 378
Sintaxe, 378
ALTER TABLE, 183
Exemplo prtico, 184
Opes, 184
Sintaxe, 184
Alterao de tabelas, 182
Comando ALTER TABLE, 183
Excluir campos, 183
Exemplo prtico, 182
Alterao do banco de dados, 150
Comando ALTER DATABASE, 151
Alterar tabela, 170
Analysis Services, 84
Aplicaes em 2 camadas, 44
Apresentao, 44
Conceito, 44
Exemplo, 44
Lgica do negcio, 44
Problemas, 44
TCO, 44
Aplicaes em 3 camadas, 45
Apresentao, 46
Conceito, 45
Dados, 46
Exemplo, 45
Lgica, 46
Problemas, 46
Vantagens, 46
Aplicaes em 4 camadas, 56
Apresentao, 47
Cliente, 46
Conceito, 46
Dados, 47
Exemplo, 47
Lgica, 47
Application Center 2000, 784
Armazenamento bsico, 121
Boot partition, 123
Definio, 122
Partio estendida, 122
Partio primria, 122
Parties, 122
Stripe set, 124
System partition, 123
Volume set, 124
Armazenamento dinmico, 121
Conceito, 125
Definio, 122
RAID-0, 125
RAID-5, 125
Volume espelhado, 125
Volume expandido, 125
Volume simples, 125
Arquitetura de aplicaes, 43
ASP, 658
Como funciona, 659
Conceito, 658
Introduo, 658
Primeiro exemplo, 658
ASP.NET, 812
Conexo com o SQL Server, 814
Introduo, 812
Novidades do, 812
O que , 812
Primeiro exemplo, 814
Suporte a mltiplas linguagens, 813
Assemblies, 792
Componentes, 794
Conceito, 792
Estrutura dos, 794
Funes dos, 793
Introduo, 792
Manifesto, 795
O que so, 792
Atomicidade, 225
ATTACH_REBUILD_LOG, 51
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NDICE REMISSIVO
Curso Completo0000983
B
B2B, 38
Exemplo, 41
B2C, 38
BACKUP DATABASE, 254
Exemplo prtico, 254
Opes, 256
Sintaxe, 254
Backup devices, 236
Comando
Comando sp_addumpdevice, 241
Conceito, 236
Criando um, 238
Devices Fsicos, 237
Devices lgicos, 237
Excluindo, 242
Exemplo prtico, 238
Introduo, 236
O que so, 236
BACKUP LOG, 256
Exemplo prtico, 257
Opes, 257
Sintaxe, 256
Backup, 226
Agendamento do backup, 250
Backup de arquivos de dados, 232
Backup de filegroups, 232
Backup devices, 236
Backup diferencial, 232
Backup do log de transaes, 232
Comando BACKUP DATABASE, 254
Comando BACKUP LOG, 256
Concurrente Database and Log
Backups, 231
Consideraes, 228
Estratgias de backup
Exemplo prtico, 244
Fazendo o backup, 244
Full backup, 231
Full recovery model, 245
Guia database, 244
Introduo, 226
Logged recovery model, 246
Mtodos de Backup, 229
Opes do backup, 247
Recovery model, 245
restore, 232
Simple recovery model, 246
Tipos de backup, 231
Banco de dados, 117
Criando um banco de dados, 130
Defaults, 121
Elementos do, 118
Estrutura de armazenamento, 126
Exemplo prtico, 130
Roles, 121
Stored Procedures, 119
Tabelas, 118
Views, 119
Bancos de dados da instncia, 116
AdventureWorks, 118
database msdb, 117
master database, 117
model database, 117
System databases, 117
tempdb database, 118
Bancos de Dados Relacionais, 6
Componentes de, 6
Conceito, 6
Elementos bsicos, 6
Projeto do, 19
Regra nmero 1, 9
BizTalk Server, 784
Boost SQL Server priority on Windows,
111
Business Intelligence Development
Studio, 868
C
C#, 774
Apresentao, 774
Exemplo prtico, 775
Chave Estrangeira, 14
Chave Primria, 9
Comando ALTER TABLE, 198
Composta, 10
Conceito, 9
Definio de, 195
Dicas de escolha, 21
Exemplo prtico, 195
Exemplos, 10
Introduo, 9
Clusula Where, 25
Cliente Servidor, 43
Aplicaes em 2 camadas, 44
Definio, 43
Introduo, 43
Modelo, 43
CLR, 764
Cdigo MSIL, 765
Conceito, 764
Definio, 764
Estrutura do, 765
Funes, 764
Introduo, 764
CLR, 787
Como funciona, 789
Conceito, 787
Integrao, 789
Introduo, 787
JIT, 791
Processo de execuo, 789
Vantagens, 788
Clustered Index, 200
Conceito, 200
Consideraes, 203
CREATE INDEX, 209
Criao de, 206
Estrutura, 201
Funcionamento, 202
Introduo, 200
Leaf pages, 203
Nom-leaf pages, 202
Colunas Calculadas, 26
COM COM+, 772
Comandos DBCC, 376
ALTER INDEX, 378
DBCC CHECKDB, 386
DBCC CHECKTABLE, 387
DBCC DBREINDEX, 376
DBCC DBREPAIR, 378
DBCC HELP, 388
DBCC INDEXDEFRAG, 379
DBCC SHOWCONTIG, 383
DBCC SHRINKDATABASE, 379
DBCC SHRINKFILE, 381
DBCC UPDATEUSAGE, 382
DBCC USEROPTIONS, 385
Introduo, 376
O que so, 376
Comandos T-SQL, 139
ADD CONSTRAINT, 536
ALTER DATABASE, 151
ALTER INDEX, 378
ALTER TABLE, 183
BACKUP DATABASE, 254
BACKUP LOG, 256
Conceito, 139
CREATE DATABASE, 143
CREATE INDEX, 209
CREATE PROCEDURE, 586
CREATE TABLE, 178
CREATE TRIGGUER, 607
CREATE VIEW, 574
DBCC CHECKDB, 386
DBCC CHECKTABLE, 387
DBCC DBREINDEX, 376
DBCC DBREPAIR, 378
DBCC HELP, 388
DBCC INDEXDEFRAG, 379
DBCC SHOWCONTIG, 383
DBCC SHRINKFILE, 381
DBCC UPDATEUSAGE, 382
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9840000Curso Completo
DBCC USEROPTIONS, 385
Definio, 139
DENY, 357
DROP CONSTRAINT, 547
DROP DATABASE, 154
DROP INDEX, 215
DROP TABLE, 195
Executar comandos, 141
Exemplo prtico, 141
GRANT, 348, 356
Janela de execuo de comandos, 140
RESTORE DATABASE, 263
RESTORE LOG, 263
REVOKE, 350
sp_addlogin, 320
sp_addrole, 328
sp_addrolemember, 341
sp_addrolemember, 341
sp_addsrvrolemember, 340
sp_addumpdevice, 241
sp_denylogin, 320
SP_DETACH_DB, 929
sp_dropdevice, 242
sp_droplogin, 321
sp_droprole, 328
sp_dropsrvrolemember, 340
sp_grantdbaccess, 334
sp_grantlogin, 318
sp_help, 215
sp_helpindex, 214
sp_helprole, 329
SP_HELPTEXT, 602
SP_HELPTRIGGER, 616
sp_revokedbaccess, 336
sp_revokelogin, 319
sp_spaceused, 214
SP_STORED_PROCEDURES, 603
Command, 656
Commerce Server 2000, 784
COMMON TYPE SYSTEM, 796
Classificao de tipos, 796
Conceito, 796
Introduo, 796
O que , 796
Componentes, 772
Configuraes Utilizadas, 37
Configurar opes da instncia, 109
Configuraes de memria, 110
Configured values, 111
Exemplo prtico, 109
Guia Advanced, 114
Guia Connections, 113
Guia Database settings, 113
Guia General, 109
Guia Memory, 110
Guia Misc Server Settings, 114
Guia Permissions, 114
Guia Processors, 111
Guia Security, 112
Parmetros de inicializao, 100
Running Values, 111
Startup Parameters, 110
Connection, 661
Attributes, 661
BeginTrans, 661
BeginTransComplete, 662
Cancel, 661
Close, 661
CommandTimeOut, 661
CommitTrans, 661
CommitTransComplete, 662
Conceito, 661
ConnectComplete, 662
ConnectionString, 664
ConnectionTimeOut, 661
Criando conexes ODBC, 660
Criar conexes OLE-DB, 662
DefaultDatabase, 662
Disconnect, 662
Errors, 662
Eventos, 661
Execute, 661
ExecuteComplete, 662
Exemplo prtico, 664
InfoMessage, 662
IsolationLevel, 662
Mtodos, 661
Mode, 662
Open, 661
OpenSchema, 661
Properties, 662
Propriedades, 661
Provider, 662
RollBackTrans, 661
RollBackTransComplete, 662
State, 662
Utilizao, 661
Version, 662
WillConnect, 662
WillExecute, 662
Consistncia, 225
Console desempenho, 407
Console SQL Computer Manager, 95
Aes disponveis, 96
Conceito, 95
Tela inicial, 96
Constraint, 536
Conceito, 534
Criando Constraints, 536
Default Constraints, 537
Desabilitando, 547
DROP CONSTRAINT, 547
Excluindo, 547
Exemplo prtico, 536, 548
Foreign Key Constraints, 542
Habilitando, 547
Introduo, 534
Not Null Constraint, 536
Primary Key Constraints, 540
Tipos de, 535
Unique Constraints, 542
Verificao de dados com, 546
Constraints, 534
Check Constraints, 538
Comando Alter Table Add
Contas de usurios no Windows, 298
Conceito, 298
Criao de contas, 301
Exemplo prtico, 301
Padro de nomes, 300
CREATE DATABASE, 143
Exemplo com Filegroups, 147
Exemplo prtico, 145
Opes importantes, 147
Sintaxe, 144
CREATE INDEX, 209
Dicas, 211
Exemplo prtico, 210
Sintaxe, 209
CREATE PROCEDURE, 586
Exemplos, 587
Sintaxe, 586
CREATE TABLE, 178
Exemplo prtico, 178
Opes, 178
Sintaxe, 178
CREATE TRIGGUER, 607
Exemplos, 607
Sintaxe, 607
CREATE VIEW, 574
Exemplos, 575
Sintaxe, 574
Criao de tabelas, 163
Definindo campos, 165
Exemplo prtico, 163
Propriedades dos campos, 166
Criar um banco de dados, 130
Arquivos de dados, 131
Comando CREATE DATABASE, 143
Definindo configuraes, 131
Exemplo prtico, 130
Nome do banco, 132
Opes de autocrescimento, 132
Usando comandos T-SQL, 143
CRM, 40
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NDICE REMISSIVO
Curso Completo0000985
Cursores, 680
Conceito, 680
Localizao do cursor, 682
O que so, 680
Tipos de cursores, 681
D
Databases Snapshots, 52
DataGrid, 841
Mltiplos conjuntos de dados, 843
Paginao, 842
DB2 IBM, 5
DBCC CHECKDB, 386
Exemplos, 386
Sintaxe, 386
DBCC CHECKTABLE, 387
Exemplos, 387
Sintaxe, 387
DBCC DBREINDEX, 376
Exemplos, 377
Sintaxe, 377
DBCC DBREPAIR, 378
DBCC HELP, 388
Exemplos, 388
Sintaxe, 388
DBCC INDEXDEFRAG, 379
Exemplos, 379
Sintaxe, 379
DBCC SHOWCONTIG, 383
Exemplos, 383
Opes, 384
Sintaxe, 383
DBCC SHRINKDATABASE, 379
Exemplos, 380
Sintaxe, 380
DBCC SHRINKFILE, 381
Exemplos, 381
Sintaxe, 381
DBCC UPDATEUSAGE, 382
Exemplos, 382
Sintaxe, 382
DBCC USEROPTIONS, 385
Exemplos, 385
Sintaxe, 383
Dedicated Administrator Connection, 52
DENY, 357
Exemplos prticos, 357
Sintaxe, 357
Diagrama entidades x relacionamentos, 21
Exemplo, 21
Diagramas Entidades x
Relacionamentos, 921
Conceito, 921
Exemplo prtico, 922
Introduo, 921
DROP CONSTRAINT, 547
DROP DATABASE, 154
Exemplo prtico, 154
DROP INDEX, 215
Exemplo prtico, 215
Sintaxe, 215
DROP TABLE, 195
Exemplo prtico, 195
Sintaxe, 195
DTS, 389
Como funciona, 389
Conceito, 389
Data Source, 393
Definir destino, 394
Definir origem, 393
Exemplo prtico, 390
Exportando dados, 398
Formatos suportados, 393
Importar dados do Access, 390
Introduo, 389
Durabilidade, 225
E
Edies do SQL Server 2005, 55, 938
Comparao entre as edies, 940
Cuidados antes da instalao, 57
Developers Edition, 55
Edies do Windows, 57
Enterprise Edition, 55
Express Edition, 55
Mobile Edition, 56
SQL Server 2005 Enterprise Edition, 939
SQL Server 2005 Express Edition, 940
SQL Server 2005 Standard Edition, 939
SQL Server 2005 Workgroup
Edition, 939
Edies do Windows, 57
Estrutura de pastas do, 69
Servios do, 80
Suporte a edies do SQL Server
2005, 57
Entidades e Atributos, 6
Conceito, 7
Exemplo, 7
Projeto das, 8
Regra nmero 1, 9
Estrutura de armazenamento, 126
Arquivo primrio, 127
Arquivo secundrio, 127
Log de transaes, 127
Estrutura de pastas e arquivos, 69
Caminho padro, 70
Estrutura padro de pastas, 69
Pasta padro, 69
Viso geral, 69
Exchange Server 2003, 783
Excluir banco de dados, 153
Comando DROP DATABASE, 154
Excluir tabelas, 194
Comando DROP TABLE, 195
Exemplo prtico, 194
F
Filegroups, 127
Conceito, 127
Default Filegroup, 128
Definio, 127
Primary filegroup, 128
User-defined filegroups, 128
FILLFACTOR OPTION, 212
Definio, 212
Importncia, 212
Valor default, 213
Framework .NET, 762
Ver .NET, 762
FRAMEWORK CLASS LIBRARY, 767
Inferno das DLLs, 779
Linguagens .NET, 773
Metadata, 777
O que , 766
Web Forms, 781
Windows Forms, 780
Funo Year, 26
Funes definidas pelo Usurio, 49
G
GRANT, 348
Exemplos prticos, 348
Sintaxe, 348
GRANT, 356
Exemplos prticos, 356
Sintaxe, 356
Grupos de usurios no Windows, 303
Adicionar usurios ao grupo, 307
Built-in groups, 310
Conceito, 303
Criao de grupos, 306
Definies, 304
Grupos de distribuio, 305
Grupos de segurana, 305
Grupos globais, 305
Grupos locais, 305
Grupos universais, 305
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9860000Curso Completo
Introduo, 303
Utilizao, 303
H-I
Host Integration Server 2000, 784
Hot-Add Memory, 52
IFELSE, 592
Exemplos, 592
Sintaxe, 592
IIS, 636
Criando pasta virtual, 636
Formao de endereos, 640
Importao e Exportao de dados, 389
Ver DTS, 389
ndices, 200
Clustered Index, 200
Conceito, 200
Criao de ndices, 206
Desativao de ndices, 216
DROP INDEX, 215
Excluindo, 215
FILLFACTOR OPTION, 212
Index keys, 205
Index Uniqueness, 205
Introduo, 200
Nomclustered Index, 203
Novidades no SQL 2005, 216
sp_help, 215
sp_helpindex, 214
sp_spaceused, 214
Inferno das DLLs, 779
Instalao do SQL Server 2005, 60
Collation, 66
Conta para rodar, 65
Cuidados antes da instalao, 57
Exemplo prtico, 60
Instalar nova instncia, 70
Instncia default, 64
Instncia nomeada, 64
Modo de autenticao, 73
No Windows Server 2003, 60
Nomeao de instncias, 59
Pr-requisitos, 61
Recomendaes de segurana, 58
Recomendaes preliminares, 57
Senha da conta sa, 66
Servios a instalar, 64
Tela inicial, 61
Instalar uma segunda instncia, 70
Exemplo prtico, 70
Instncia default, 64
Instncia nomeada, 64
Criando uma, 72
Exemplo, 72
Instruo DELETE, 31
Definio, 31
Exemplos, 31
Sintaxe, 31
Instruo INSERT, 31
Definio, 31
Exemplos, 31
Sintaxe, 31
Instruo SELECT, 23
Colunas Calculadas, 26
Exemplos, 24
Introduo, 23
Sintaxe, 24
Instruo UPDATE, 29
Definio, 29
Exemplos, 29
Sintaxe, 29
Integridade de dados, 528
Implementao, 528
Integridade de domnio, 533
Integridade de entidade, 533
Integridade referencial, 533
Tipos de integridade, 532
Integridade referencial, 15
Atualizar em cascata, 16
Conceito, 15
Excluir em cascata, 16
Exemplos, 16
Introduo, 15
ISA Server 2004, 785
Isolamento, 225
J
Job, 269
JOIN, 28
Exemplos, 28
Exemplos prticos, 618
Inner Join, 619
LEFT OUTER JOIN, 619
Nveis de, 29
Nmero de Joins, 618
RIGHT OUTER JOIN, 619
L
LIKE, 27
Linguagem SQL, 22
Lock de Registros, 684
Log de Transaes, 223
Agendamento do backup, 250
Atomicidade, 225
Como funciona, 225
Conceito, 223
Conceito de transao, 224
Consistncia, 225
Definio, 223
Durabilidade, 225
Fazer o backup do, 249
Introduo, 223
Isolamento, 225
Logins, 311
Comando sp_addlogin, 320
Comando sp_denylogin, 320
Comando sp_droplogin, 321
Comando sp_grantlogin, 318
Comando sp_revokelogin, 319
Criando logins, 312
Deny Server access, 315
Exemplo prtico, 322
Grant Server access, 315
Incluso em roles, 315
Logs e alertas de desempenho, 419
Agendamento, 425
Anlise dos dados, 426
Captura de dados, 418
Criando grficos de desempenho, 429
Exemplo prtico, 422
Exemplo prtico de grfico de
desempenho, 429
Formato de gravao, 424
Iniciando o servio, 421
Intervalo de captura, 424
M
Merge Replication, 464
Microsoft Access, 5, 709
Ver Access, 709
Microsoft Reporting Services, 84
MMC, 85
Abrir o MMC, 86
Conceito, 85
Criar console personalizado, 88
Salvar console personalizado, 90
MOBILE INFORMATION 2001
SERVER, 785
Modelo baseado em Componentes, 772
Como funciona, 772
Conceito, 772
Modelo de segurana, 281
Modelos de aplicaes, 37
Conceito, 37
Introduo, 37
Modo de autenticao, 73
Monitorao de desempenho, 403
Captura de dados, 418
Conceito, 403
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NDICE REMISSIVO
Curso Completo0000987
Contador, 405
Contadores do SQL Server, 436
Exemplo prtico, 407
Gargalos, 403
Instncia, 405
Introduo, 403
Limites de desempenho, 416
Logs e alertas de desempenho, 419
Monitoramento do sistema de
discos, 412
Monitorando a RAM, 407
Monitorando o processador, 407
Objeto, 405
MSDTC, 83
MySQL Linux, 5
N
Nomclustered Index, 203
Conceito, 203
Consideraes, 204
Estrutura, 204
Funcionamento, 204
Introduo, 203
Nomeao de instncias, 59
Conceito, 59
Dicas, 59
Exemplos, 59
Normalizao, 16
Conceito, 16
Introduo, 16
Objetivos da, 16
Primeira forma normal, 17
Segunda forma normal, 17
Terceira forma normal, 18
Novidades do SQL Server 2005, 48
Melhorias na disponibilidade, 52
No desenvolvimento de aplicaes, 49
No gerenciamento do banco de
dados, 51
Nos utilitrios de administrao, 53
O
ODBC, 642
Criar fonte ODBC, 644
Definio, 643
Estrutura, 643
Exemplo prtico, 644
Fonte para o SQL Server, 648
O que , 643
OLAP, 454
OLE-DB, 642
Como funciona, 653
Conceito, 653
Definio, 653
Estrutura, 653
O que , 653
OLTP, 454
Online Restores, 52
Opo databases, 116
Operador In, 26
Oracle, 5
ORDER BY, 25
Order by, 25, Where, 25
Colunas Calculadas, 26
Funo Year, 26
IN, 26
Orientao a Objetos, 802
Classes, 805
Exemplo prtico, 806
Herana, 806
Introduo, 802
Mensagens, 805
O que um Objeto, 803
Reutilizao de Cdigo, 810
Ous, 298
P
Pginas ASP, 658
Conectando com o SQL Server, 666
Conexes com o ORACLE, 670
Editar registros, 704
Excluir registros, 704
Exemplo de conexo com SQL
Server, 666
Exemplo de insero no banco, 687
Exemplo prtico com ODBC, 673
Inserindo dados no banco, 687
Localizar registros, 699
Pool de conexes, 672
Ver ASP, 658
Permisses de acesso aos bancos de
dados, 330
Comando sp_grantdbaccess, 334
Comando sp_revokedbaccess, 336
Conceito, 330
Exemplo prtico, 331
Introduo, 330
Permisses de acesso aos objetos do
banco de dados, 341
Agendar tarefas, 342
Alterar banco de dados, 342
Backup DB, 344
Backup log, 344
Caractersticas das, 345
Comando GRANT, 348
Comando REVOKE, 350
Conceito, 341
Create default, 344
Create function, 344
Create rule, 344
Create SP, 344
Create table, 344
Create view, 344
Criar banco de dados, 342
Estudo de caso, 351
Excluir banco de dados, 342
Exemplo prtico, 345
Introduo, 341
Permisses de banco de dados, 349
Permisses de objetos de banco de
dados, 353
Atribuindo, 353
Comando DENY, 357
Comando GRANT, 356
Plano de manuteno, 367
Alterar o plano, 374
Comandos T-SQL do, 374
Conceito, 367
Criando um, 368
Executar todas as tarefas, 374
Exemplo prtico, 368
Maintenance Plan Wizard, 368
Tarefas do, 367
Primeira forma normal, 17
Conceito, 17
Definio, 17
Exemplo, 17
Grupos de repetio, 17
Profiler, 438
Conceito, 438
Exemplo prtico, 440
Modelos de trace, 439
Utilizao, 438
Programao DOS, 767
Programao Windows, 768
Projeto de banco de dados, 19
Conceito, 19
Dicas, 19
Passos, 19
Propriedades dos campos, 171
Collation, 172
Default Value or Binding, 171
Description, 171
Formula, 171
Identity increment, 171
Identity, 171
Identity seed, 171
Indexed, 172
Is ROWGuid, 171
Publicaes, 480
Acessar propriedades, 480
Administrao de, 480
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9880000Curso Completo
Configurar, 480
Criao de, 480
Pubs, 525
Importando Pubs, 525
Q-R
Query Notification, 51
RAID-1, 124
RAID-5, 124
RecordSet, 679
Conceito, 679
Criao de, 680
Mtodos, 686
Propriedades, 685
Registrar instncia, 106
Configurar opes da instncia, 109
Exemplo prtico, 106
Relacionamentos, 11
Conceito, 11
Exemplos, 12
Introduo, 11
Quebra de, 15
Tipos de, 12
Um para um, 12
Um para vrios, 13
Vrios para vrios, 15
Replicao, 448
Agentes de replicao, 464
Anlise de cenrios, 450
Artigo, 457
Autonomia da rplica, 453
Benefcios da replicao, 453
Cenrio terico, 449
Conceito, 448
Configurar um Distributor, 467
Configurar um Publisher, 467
Conflitos de atualizao, 453
Criao de artigos, 471
Criando filtros, 475
Definir o dono do artigo, 474
Distribution agent, 464
Distributor, 456
Excluindo elementos da, 505
Exemplo prtico, 466
Filtro horizontal, 458
Filtro vertical, 458
Habilitao de Subscribers, 482
Introduo, 448
Latncia, 453
Log reader agent, 465
Merge agent, 465
Merge Replication, 464
Modelo de Replicao, 454
Necessidade de, 448
O que , 448
Para outros Subscribers, 507
Publicaes, 459
Publisher, 455
Pull Subscription, 461
Snapshot folder, 468
Snapshot Replication, 462
Subscriber, 457
Subscries, 460
Tipos de replicao, 462
Tipos de subscries, 460
Transactional Replication, 463
Velocidade links de WAN, 453
Reporting Services, 850
Acessar via Browser, 880
Arquitetura, 853
Business Intelligence Dvelopment
Studio, 868
Console de configurao, 907
Criando relatrios Matrix, 882
Criando um relatrio simples, 867
Data Processing Extensions, 855
Definir campos, 873
Definir fonte de dados, 869
Definir layout, 875
Delivery extensions, 857
Diretrio virtual, 909
Exemplo prtico tipo Matrix, 882
Fonte compartilhada, 882
Formatos dos relatrios, 852
Formatos suportados, 852
Funes, 851
Gerenciamento de servios, 908
Grupos Exemplo prtico, 899
Introduo, 851
O que , 851
Opo Grupos, 899
Ordenar campos, 873
Principais componentes, 853
Programmatic Interfaces, 855
Publicando relatrios no IIS, 880
Referncias cruzadas, 882
Relatrios via Web, 852
Rendering Extensions, 858
Report Designer, 854
Report processor, 855
Report server, 854
Report server database, 856
Reporting Services Configuration, 907
Requisitos de ASP.NET, 858
Requisitos do IIS, 858
Requisitos para o funcionamento, 858
Salvar em diferentes formatos, 876
Scheduling and Delivery Processor, 856
Vantagens, 852
Windows Service Identity, 910
RESTORE DATABASE, 263
Exemplo prtico, 265
Opes, 263
Sintaxe, 263
RESTORE LOG, 263
Exemplo prtico, 265
Opes, 263
Sintaxe, 263
Restore, 259
Comando RESTORE DATABASE, 263
Comando RESTORE LOG, 263
Conceito, 259
Diferentes estratgias, 259
Exemplo prtico, 260
Introduo, 259
Opes do, 262
REVOKE, 350
Exemplos, 350
Sintaxe, 350
Roles, 311
Adicionando usurios, 336
Comando sp_addrole, 328
Comando sp_addrolemember, 341
Comando sp_addsrvrolemember, 340
Comando sp_droprole, 328
Comando sp_dropsrvrolemember, 340
Comando sp_helprole, 329
Conceito, 324
Criando roles, 326
Excluir membro, 340
Exemplo prtico, 337
Fixed Database Roles, 325
Server roles, 325
Utilizao, 324
S
Schemas, 291
Adicionar objetos ao, 362
Alterar o dono, 363
Como funcionam, 291
Conceito, 291
Criando schemas, 360
Dono do objeto, 292
Dono do Schema, 292
Funes dos, 291
Introduo, 291
O que so, 360
Separao usurios x Schemas, 293
Scripts, 932
Exemplo prtico, 932
Gerao automtica de, 932
Segunda forma normal, 17
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NDICE REMISSIVO
Curso Completo0000989
Conceito, 17
Definio, 17
Exemplo, 18
Segurana no Windows 2000 Server, 295
Active Directory, 297
Contas de usurios, 299
Domnios, 295
Unidades Organizacionais, 298
Workgroups, 295
Segurana no Windows Server 2003, 295
Active Directory, 297
Contas de usurios, 299
Domnios, 295
Unidades Organizacionais, 298
Workgroups, 295
Seguranas 281
Acessar o banco de dados, 288
Conexo com o servidor, 283
Logins, 311
Modelo de segurana, 283
Modos de autenticao, 285
Roles, 311
Schemas, 291
Users, 311
Servios do SQL Server 2005, 80
Analysis Services, 84
Gerenciamento de Servios, 85
MICROSOFT DISTRIBUTED
TRANSACTION CORDINATOR
MSDTC, 83
Microsoft Reporting Services, 84
Microsoft Search, 84
SQL SERVER AGENT, 83
SQL Server, 80
SNAP-IN SERVICE MANAGER, 91
Conceito, 91
Continuar servios, 92
Dependncias, 94
Exemplo prtico, 91
Guia geral, 93
Guia logon, 93
Iniciar servios, 92
Parar servios, 92
Pausar servios, 92
Recuperao, 94
Snap-in, 85
Conceito, 85
Snapshot Databases, 915
Como funcionam, 915
Conceito, 915
Espao em disco, 917
Exemplo prtico, 919
Introduo, 915
Limitaes, 916
Quando usar, 915
Recomendaes, 918
Snapshot Replication, 462
Como funciona, 462
Conceito, 462
Quando utilizar, 462
SOAP, 764
sp_addlogin, 320
Exemplos, 321
Sintaxe, 320
sp_addrole, 328
Exemplos, 328
Sintaxe, 328
sp_addrolemember, 341
Exemplos prticos, 341
Sintaxe, 341
sp_addrolemember, 341
Exemplos prticos, 341
Sintaxe, 341
sp_addsrvrolemember, 340
Exemplos, 340
Sintaxe, 340
sp_addumpdevice, 241
Exemplo prtico, 241
Sintaxe, 241
sp_denylogin, 320
Exemplos, 320
Sintaxe, 320
SP_DETACH_DB, 929
sp_dropdevice, 242
Exemplo prtico, 242
Sintaxe, 242
sp_droplogin, 321
Exemplos, 321
Sintaxe, 321
sp_droprole, 328
Exemplos, 328
Sintaxe, 328
sp_dropsrvrolemember, 340
Exemplos, 340
Sintaxe, 340
sp_grantdbaccess, 334
Exemplos prticos, 335
Sintaxe, 334
sp_grantlogin, 318
Exemplos, 318
Sintaxe, 318
sp_help, 215
sp_helpindex, 214
sp_helprole, 329
Exemplos, 329
SP_HELPTEXT, 602
Exemplos, 602
Sintaxe, 602
SP_HELPTRIGGER, 616
Exemplos, 616
Sintaxe, 616
sp_revokedbaccess, 336
Exemplo, 336
Sintaxe, 336
sp_revokelogin, 319
Exemplos, 319
Sintaxe, 319
sp_spaceused, 214
SP_STORED_PROCEDURES, 603
Exemplos, 603
Sintaxe, 603
SQL Computer Manager, 54
SQL Server 2005, 55
Edies, 55
Requisitos de Hardware, 56
Requisitos de Software, 56
SQL Server and Windows
Authentication mode, 285
Alterar o modo, 287
SQL Server Management Studio, 53
Conceito, 103
Configurar opes da instncia, 109
Criar banco de dados, 130
Criar tabelas, 163
Definio, 103
Exemplo prtico, 103
Introduo, 103
Logon no, 104
Navegando pelo, 103
Object Explorer, 106
Opo databases, 116
Opes de navegao, 103
Registered servers, 105
Registrar instncia, 106
Tela inicial do, 105
SQL, 22
Conceito, 22
Definio, 22
Instruo SELECT, 23
Instruo SQL, 23
Introduo, 22
Noes bsicas, 22
Operaes, 22
Stored procedures, 583
Comando
CREATE PROCEDURE, 586
SP_HELP, 602
SP_HELPTEXT, 602
SP_STORED_PROCEDURES, 603
Conceito, 583
Criao de, 586
Estruturas de deciso, 592
Excluindo, 600
Executar, 590
Exemplo prtico, 589
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
9900000Curso Completo
Extended Stored Procedures, 585
Introduo, 583
O que , 583
Parmetros de entrada, 588
Parmetros de sada, 598
System Stored Procedures, 585
Temporary Stored Procedures, 585
User-defined Stored Procedures, 585
Vantagens, 584
Subconsultas, 623
Conceito, 623
Cuidados com, 624
Exemplos prticos, 623
Sintaxe, 623
Subscries, 460
Conceito, 460
Configurar Pull Subscriptions, 498
Exemplo prtico, 483, 499
Habilitao de Subscribers, 482
Introduo, 460
Pull Subscription, 461
Push Subscription, 461
Sybase, 5
T
Tabelas e Campos, 6
Conceito, 7
Exemplo, 7
TCO, 45
Terceira forma normal, 18
Conceito, 18
Definio, 17
Exemplo, 19
Tipo de Dados XML, 49
Tipos de dados definidos pelo usurio,
185
Comando sp_addtype, 191
Comando sp_droptype, 194
Conceito, 185
Criar um, 186
Excluindo tipos, 192
Usando um, 189
Tipos de dados, 159
bigint, 159
binary, 159
bit, 160
Char, 160
Conceito, 159
cursor, 160
datetime, 160
Definio, 159
Dicas de definio, 162
float, 160
image, 160
integer, 160
money, 160
nchar, 160
ntext, 160
nvarchar, 160
real, 160
smallditetime, 161
smallint, 161
smallmoney, 161
sql_variant, 161
table, 161
text, 161
timestamp, 161
tinyint, 161
unique-identifier, 161
varbinary, 161
varchar, 161
XML, 161
Transaes, 42
Conceito, 42
Exemplo, 42
Transactional Replication, 463
Como funciona, 463
Conceito, 463
Quando utilizar, 463
Transferir bancos entre instncias, 926
Comando SP_DETACH_DB, 929
Conceito, 926
Exemplo prtico, 927
Quando usar, 926
Triggers, 603
Comando CREATE TRIGGUER, 607
Comando SP_HELPTRIGGER, 616
Comandos permitidos, 607
Conceito, 604
Criar triggers, 607
Definio, 604
Desabilitar, 617
Exemplos prticos, 607
Habilitar, 616
Regra de negcio, 604
Trigger DELETE, 606
Trigger INSERTE, 606
Trigger INSTEAD OF, 606
Trigger NET, 606
Trigger UPDATE, 606
Utilizao, 604
Unidades Organizacionais, 298
Acesso aos objetos, 330
Upgrdade do SQL Server 2000, 75
Caminhos de Upgrade, 75
Exemplo prtico, 75
Introduo, 75
Use Windows fibers, 112
Users, 311
VB.NET, 774
Apresentao, 774
Views, 551
Acessar dados
Acessar via Browser, 752
Comando CREATE VIEW, 754
Criando campos calculados, 559
Criando Views, 554
Definio, 551
Exemplo prtico, 555
Introduo, 551
Limitaes das, 553
Por que utilizar, 553
Tipos de View, 552
Totalizaes, 566
Utilizao de, 551
Web Services, 762
Conceito, 762
Definio, 762
Exemplo, 763
Introduo, 762
WHERE, 25
WHILE...CONTINUE, 595
Exemplos, 595
Sintaxe, 595
Windows Authentication mode, 285
Alterar o modo, 287
XML, 754
O que , 745
Usos, 754
Viso geral, 754
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!

Potrebbero piacerti anche