Escolar Documentos
Profissional Documentos
Cultura Documentos
SQLServer 2005 Curso Completo Ingavm - 52136974 JULIO BATTISTI PDF
SQLServer 2005 Curso Completo Ingavm - 52136974 JULIO BATTISTI PDF
Todos os originais de livros enviados para avaliao pela Editora sero destrudos,
caso no sejam aprovados. No ser feita sua devoluo em nenhuma hiptese.
E-mail:
editora@axcel.com.br
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
Curso Completo0000III
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
IV0000Curso Completo
SUMRIO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000V
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
VI0000Curso Completo
SUMRIO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo0000VII
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
VIII0000Curso Completo
SUMRIO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo0000IX
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
X0000Curso Completo
SUMRIO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo0000XI
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
XII0000Curso Completo
SUMRIO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo0000XIII
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
XIV0000Curso Completo
SUMRIO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo0000XV
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
XVI0000Curso Completo
INTRODUO
SUMRIO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
Curso Completo0000XVII
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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 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
XVIII0000Curso Completo
INTRODUO
SUMRIO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo0000XIX
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Windows XP Profesional
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.
Se o equipamento vai ser utilizado como um servidor Web na Internet, vrios so os aspectos a serem
considerados, tais como:
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.
XX0000Curso Completo
INTRODUO
SUMRIO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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:
Para instalar o IIS 6.0, o qual faz parte do Windows Server 2003, siga os passos indicados a seguir:
Curso Completo0000XXI
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
NOTA
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.
XXII0000Curso Completo
INTRODUO
SUMRIO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000XXIII
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
XXIV0000Curso Completo
INTRODUO
SUMRIO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000XXV
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Para testar se o IIS foi instalado com sucesso, siga os seguintes passos:
VAMOS AO TRABALHO
Feitas as devidas apresentaes, hora de iniciarmos nossa jornada atravs do Microsoft SQL Server 2005.
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.
XXVI0000Curso Completo
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
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
40000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
(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:
Oracle.
DB2 da IBM.
Sybase.
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.
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:
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.
NOTA
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.
Curso Completo00005
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Chave Primria.
Integridade Referencial.
Normalizao de Tabelas.
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.
60000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Resumindo:
Considere o exemplo da Figura 1.1: temos uma tabela Clientes com os seus diversos campos (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.
Curso Completo00007
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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
80000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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 que, nesta tabela, cometemos, propositalmente, o erro de misturar dois assuntos:
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.
Curso Completo00009
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
100000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo000011
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Procure entender bem o conceito de relacionamentos, pois este um conceito fundamental para
entender o SQL Server 2005.
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
120000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo000013
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
140000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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:
Curso Completo000015
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
160000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Por isso dissemos que uma tabela que possui grupos de repetio no est na Primeira Forma Normal.
Considere a Figura 1.8:
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.
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.
Curso Completo000017
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
180000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Quando isto ocorre, dizemos que a tabela no est na Terceira Forma Normal, conforme indicado pela
Figura 1.12:
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.
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.
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.
NOTA
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.
Curso Completo000019
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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 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.
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.
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.
200000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo000021
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Excluir registros.
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.
220000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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.
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.
Curso Completo000023
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SELECT
campo1, campo2, campo3
FROM nome_da_tabela
[WHERE condio ]
[GROUP BY nome_do_campo ]
[HAVING ... ]
[ORDER BY... ]
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.
Exemplo 1: Criar uma instruo SQL que retorne os campos NmeroDoPedido, DataDoPedido, Frete e
PasDeDestino da tabela 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:
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.
240000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Exemplo 2: Alterar a instruo SQL anterior para que os registros sejam classificados em ordem crescente
pelo valor do 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:
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.
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.
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.
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.
Curso Completo000025
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
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:
260000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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.
NOTA
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.
Curso Completo000027
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Exemplo 10: Criar uma instruo SQL que selecione os seguintes campos:
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:
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.
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:
280000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo000029
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
300000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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
Curso Completo000031
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Na seqncia deste captulo, apresentei uma noo bsica da linguagem SQL (Transact-SQL no caso do
Microsoft SQL Server 2005).
A instruo UPDATE
A instruo DELETE
O operador LIKE
O operador IN
Os operadores AND e OR
320000Curso Completo
CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
No siga para os prximos captulos sem ter entendido, completamente, os conceitos tericos apresentados neste captulo.
Curso Completo000033
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
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
INTRODUO
Neste captulo voc aprender sobre os seguintes tpicos:
Qual o papel do SQL Server 2005 no desenvolvimento de aplicaes de duas ou mais camadas.
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.
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:
360000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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:
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.
Curso Completo000037
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
380000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo000039
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
400000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo000041
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
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.
420000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo000043
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
440000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo000045
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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.
460000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo000047
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
480000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
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.
Curso Completo000049
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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,
500000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo000051
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
520000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
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
Curso Completo000053
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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 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
540000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
Curso Completo000055
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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.
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.
560000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela 2.1 Verses do Windows x Edies do SQL Server 2005.
Verso do Windows/Edio do SQL Server 2005 Developer Edition SQL Express Edition
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.
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
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.
Curso Completo000057
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
580000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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 ( _ ).
Curso Completo000059
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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.
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.
600000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo000061
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
620000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
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:
Curso Completo000063
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
640000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Curso Completo000065
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
660000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
Curso Completo000067
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
680000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Curso Completo000069
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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\
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:
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.
700000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo000071
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
720000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo000073
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
740000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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:
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
Curso Completo000075
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
760000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo000077
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
780000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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
Curso Completo000079
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
800000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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.
Curso Completo000081
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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.
820000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo000083
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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).
840000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
Curso Completo000085
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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:
4. Ser aberta uma janela conforme indicado na Figura 2.28. Esta janela mostra o MMC sem
nenhum snap-in carregado.
860000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Agora vamos abrir o MMC com alguns snap-ins j carregados. Vamos tambm dar uma analisada na
interface do mesmo.
1. D um clique no boto Iniciar, aponte para Programas e dentro de Programas para Ferramentas
administrativas.
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.
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).
Curso Completo000087
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
Dependendo de o computador ser um Controlador de Domnio ou um Member Server, esta interface pode apresentar algumas diferenas.
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.
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.
880000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
Curso Completo000089
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Voc estar de volta ao MMC, agora com o snap-in Usurios e grupos locais j carregado.
4. Feche o MMC.
1. D um clique no boto Iniciar, aponte para Programas e dentro de Programas para Ferramentas
administrativas.
900000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Parar um servio.
Inicializar um 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.
Curso Completo000091
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
4. D um clique com o boto direito do mouse sobre o nome do servio.
Iniciar: Esta opo carrega o servio na memria. Se o servio j estiver carregado, esta opo
estar desabilitada.
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.
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.
920000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Curso Completo000093
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
940000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
utiliza estas informaes para determinar a ordem correta de inicializao dos servios ao inicializar o
sistema operacional.
Muitas vezes uma determinada funcionalidade do Windows ou do SQL Server no est funcionando corretamente. Um dos locais que
NOTA
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.
Curso Completo000095
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Utilizando o SQL Computer Manager podemos realizar as seguintes aes com os servios do SQL
Server 2005:
Inicializar um servio.
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.
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.
960000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Curso Completo000097
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Facilidade de instalao e manuteno das aplicaes.
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:
Suporte a transaes.
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.
980000Curso Completo
CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo000099
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
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
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
1020000Curso Completo
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!!!
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.
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.
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.
Curso Completo0000103
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
1040000Curso Completo
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!!!
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
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.
Curso Completo0000105
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
1060000Curso Completo
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!!!
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.
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:
Curso Completo0000107
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
1080000Curso Completo
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!!!
Exemplo: Para configurar algumas opes da instncia SERVIDOR\SQL2005, siga os passos indicados
a seguir:
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.
Curso Completo0000109
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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).
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.
1100000Curso Completo
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!!!
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.
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
Curso Completo0000111
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
1120000Curso Completo
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!!!
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.
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.
Curso Completo0000113
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
1140000Curso Completo
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!!!
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.
Curso Completo0000115
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
1160000Curso Completo
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!!!
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.
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
Curso Completo0000117
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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
1180000Curso Completo
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!!!
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.
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.
Curso Completo0000119
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
1200000Curso Completo
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!!!
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.
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.
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
Curso Completo0000121
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
desempenho, a opo de RAID por hardware pode ajudar, embora a implementao seja mais onerosa
do que a por software.
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:).
1220000Curso Completo
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!!!
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
Curso Completo0000123
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
1240000Curso Completo
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!!!
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.
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
Curso Completo0000125
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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
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:
1260000Curso Completo
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!!!
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
NOTA
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.
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
Curso Completo0000127
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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,
1280000Curso Completo
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!!!
conforme indicado na Figura 3.25. Neste caso, estamos melhorando consideravelmente o desempenho
do nosso sistema.
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:
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.
Curso Completo0000129
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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,
NOTA
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.
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.
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.
1300000Curso Completo
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!!!
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.
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.
Curso Completo0000131
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
1320000Curso Completo
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!!!
Tamanho inicial: 10 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.
Curso Completo0000133
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tamanho inicial: 5 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.
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
1340000Curso Completo
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!!!
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:
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:
Curso Completo0000135
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela 3.1 Criando arquivos adicionais, no banco de dados Exemplo1.
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.
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.
1360000Curso Completo
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!!!
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
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.
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.
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.
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.
Curso Completo0000137
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
1. Abra o Windows.
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.
1380000Curso Completo
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!!!
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
Curso Completo0000139
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
1400000Curso Completo
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!!!
Exemplo prtico: Executando uma consulta simples, usando a janela de execuo de comandos T-SQL,
do SQL Server Management Studio.
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.
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:
para o caso de termos digitado um comando com erros a mensagem descreve o tipo de erro. Por
exemplo o comando:
Curso Completo0000141
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ir retornar a seguinte mensagem de erro:
Msg 208, Level 16, State 1, Line 1
Invalid object name HumanResources.Employeexx.
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
1420000Curso Completo
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!!!
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
NOTA
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
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 * ...
Curso Completo0000143
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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:
1440000Curso Completo
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!!!
MAXSIZE= Tamanho_Mximo_Admitido,
FILEGROWTH = Incremento)
***************************************
Final do comando de criao do Banco de Dados
***************************************
NOTA
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.
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).
Curso Completo0000145
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
5. Digite o seguinte comando, o qual ir criar o Banco de Dados Exemplo3, com as definies da
Tabela 3.4:
Veja que estamos utilizando o caractere de sublinhado _ para os nomes lgicos, pois no podemos utilizar o sinal -, o qual no um caractere
NOTA
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.
1460000Curso Completo
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!!!
Agora vamos verificar se o Banco de Dados Exemplo3 foi realmente criado.
1. Abra o SQL Server Management Studio (j deve estar aberto do exemplo anterior).
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.
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.
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.
Curso Completo0000147
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela 3.5 Banco de dados Exemplo4.
Arquivo Definies
Primrio C:\livrosql\exemplo4\exemplo4_prim.mdf.
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Tamanho mximo de 50 MB.
Crescimento em incrementos de 15%.
No filegroup Primary.
Secundrio C:\livrosql\exemplo4\exemplo4_sec1.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Tamanho mximo de 50 MB.
Crescimento em incrementos de 15%.
No filegroup Primary.
Secundrio C:\livrosql\exemplo4\exemplo4_sec2.ndf.
Crescimento automtico habilitado.
Tamanho inicial: 10 MB.
Tamanho mximo de 50 MB.
Crescimento em incrementos de 5 MB.
No filegroup SalesGroup1.
Secundrio C:\livrosql\exemplo4\exemplo4_sec3.ndf.
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.
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:
1480000Curso Completo
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!!!
1. Faa o logon com uma conta com permisso de administrador.
Curso Completo0000149
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Vamos repetir esta observao porque ela importante. Veja que estamos utilizando o caractere de sublinhado _ para os nomes lgicos, pois
NOTA
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:
Esta mensagem a confirmao de que o Banco de Dados foi criado com sucesso.
1. Abra o SQL Server Management Studio (j deve estar aberto do exemplo anterior).
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.
METODOLOGIA
Apresentao dos comandos T-SQL para alterao de Bancos de Dados.
1500000Curso Completo
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!!!
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:
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.
Curso Completo0000151
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Observe que, aps fecharmos o comando que adiciona um arquivo de dados - ADD FILE, precisamos inserir um comando GO, para que o
NOTA
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:
Esta mensagem a confirmao de que o Banco de Dados Exemplo4 foi alterado com sucesso.
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
1520000Curso Completo
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!!!
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
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.
Curso Completo0000153
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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:
Cannot drop the database Exemplo4, because it does not exist or you do not have permission.
1540000Curso Completo
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!!!
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:
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:
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.
Curso Completo0000155
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
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Observe que, neste captulo, iremos criar tabelas e ndices. No faremos a entrada de dados, inserindo registros nas tabelas que forem
NOTA
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.
1580000Curso Completo
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!!!
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.
Curso Completo0000159
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Continuao
Tipo Descrio Tamanho
1600000Curso Completo
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!!!
Continuao
Tipo Descrio Tamanho
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.
Curso Completo0000161
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Para detalhes sobre os tipos de dados disponveis no SQL Server 2005, voc pode consultar o tpico
Transact-SQL Reference, no Books OnLine.
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:
1620000Curso Completo
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!!!
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.
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.
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.
Curso Completo0000163
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela 4.2 A tabela Clientes.
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
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.
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas
-> Microsoft SQL Server 2005 -> SQL Server Management Studio).
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.
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,
1640000Curso Completo
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!!!
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:
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.
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
Curso Completo0000165
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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:
1660000Curso Completo
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!!!
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).
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)
Aps a definio destes campos, sua janela deve estar conforme indicado na Figura 4.4.
Curso Completo0000167
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
1680000Curso Completo
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!!!
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.
Curso Completo0000169
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
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).
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.
1700000Curso Completo
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!!!
5. Vamos comear criando o campo CdigoFuncionrio. Para isso preencha a primeira linha com
as seguintes informaes:
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.
Curso Completo0000171
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Campo NomeCompleto
Size -> 50
1720000Curso Completo
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!!!
Propriedades:
Identity: No altere.
Is RowGuid: No altere.
Formula: No altere.
Collation: No altere.
Campo Cargo
Size -> 30
Propriedades:
Campo DataNascimento
Propriedades:
Campo DataContrato
Curso Completo0000173
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Propriedades:
Campo Rua
Size -> 50
Propriedades:
Campo Bairro
Size -> 20
Propriedades:
Campo Cidade
Size -> 25
Propriedades:
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.
1740000Curso Completo
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!!!
No altere as demais propriedades.
Campo CEP
Size -> 4
Propriedades:
Description: CEP
Campo FoneResidencial
Size -> 25
Propriedades:
Campo Foto
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).
Propriedades:
Curso Completo0000175
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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
1760000Curso Completo
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!!!
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.
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.
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.
Curso Completo0000177
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
1780000Curso Completo
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!!!
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.
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.
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)
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.
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:
Curso Completo0000179
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
)
NOTA
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:
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:
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.
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.
1800000Curso Completo
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!!!
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.
NOTA
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?
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.
Curso Completo0000181
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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.
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
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.
1820000Curso Completo
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!!!
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.
Feitas as alteraes s clicar no boto Save ou pressionar Ctrl+S, para salvar as alteraes efetuadas.
NOTA
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.
METODOLOGIA
Apresentao dos comandos T-SQL para alterao de tabelas.
TCNICA
Alterar tabelas, utilizando os comandos apresentados.
Curso Completo0000183
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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 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:
Agora nosso comando executa sem maiores problemas e recebemos a seguinte mensagem:
Exerccio: Utilize o SQL Server Management Studio e verifique se a coluna Campo1 realmente foi
adicionada tabela Clientes, conforme indicado na Figura 4.9.
1840000Curso Completo
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!!!
Observe que a coluna Campo1 admite valores nulos.
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.
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
Curso Completo0000185
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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.
Tipo: char(50)
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.
1860000Curso Completo
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!!!
2. Abra o SQL Server Management Studio.
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.
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:
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.
Curso Completo0000187
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Tipo: money
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.
1880000Curso Completo
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!!!
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:
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:
Curso Completo0000189
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
1900000Curso Completo
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!!!
Tipo: char(25)
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.
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.
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.
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.
Curso Completo0000191
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
1920000Curso Completo
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!!!
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.
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.
Curso Completo0000193
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
NOTA
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.
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.
1940000Curso Completo
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!!!
Exemplo:
Para excluir a tabela Produtos3 do Banco de Dados Exemplo1, poderamos utilizar o seguinte comando:
DROP TABLE Produtos3
Curso Completo0000195
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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.
1960000Curso Completo
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!!!
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.
NOTA
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.
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.
Curso Completo0000197
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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.
Para fazer com que um campo no seja mais chave primria, basta repetir os passos do exemplo anterior, marcar o campo desejado e clicar
NOTA
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.
Exemplo: Definir o campo CdigoProduto da tabela Produtos, do banco de dados Exemplo1, da instncia
SERVIDOR\SQL2005 como sendo uma chave primria.
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.
1980000Curso Completo
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!!!
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:
Podemos conferir se o campo foi realmente definido como chave primria, utilizando o SQL Server Management Studio. Acesse a tabela
NOTA
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:
Se a coluna que estiver sendo definida como chave primria contiver valores repetidos, o comando do
passo 3 resultar na seguinte mensagem de erro:
TCNICA
Criao de ndices utilizando os comandos apresentados.
Curso Completo0000199
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
2000000Curso Completo
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!!!
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.
Curso Completo0000201
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Os dados encontram-se nas chamadas Leaf Pages; as demais pginas do ndice (tambm conhecidas
como Non-Leaf Pages) contm informaes que facilitam a localizao dos dados contidos nas
Leaf Pages.
Para entender o funcionamento de um clustered index, vamos observar como um determinado registro
localizado, utilizando a estrutura de um clustered index. Considere o exemplo da Figura 4.19.
Vamos supor que voc queira localizar o registro para o cliente Raul. O SQL Server 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).
2020000Curso Completo
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!!!
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.
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.
Curso Completo0000203
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
2040000Curso Completo
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!!!
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.
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.
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
Curso Completo0000205
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
2060000Curso Completo
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!!!
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).
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.
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.
Curso Completo0000207
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
2080000Curso Completo
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!!!
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.
Para criar ndices utilizamos o comando CREATE INDEX. A seguir temos a sintaxe para o comando
CREATE INDEX, conforme descrito no Books OnLine:
Curso Completo0000209
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Mais uma vez vamos simplificar a sintaxe para este comando. No formato simplificado teramos o
seguinte:
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.
Nome: CityIndex
Colunas: City
Vamos a um exemplo um pouco mais elaborado. Qual seria o comando para criar o seguinte ndice?
Nome: PK_Customers
Colunas: CustomerID
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:
Vamos a mais um exemplo. Agora vamos criar um ndice composto com as seguintes caractersticas:
2100000Curso Completo
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!!!
Tabela Customers do Banco de Dados Northwind
Nome: EnderecoIndex
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:
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.
Curso Completo0000211
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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
2120000Curso Completo
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!!!
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:
Para criar um ndice com a opo FILL FACTOR, basta utilizar WITH FILLFACTOR = x %, conforme
indicado no exemplo a seguir:
Curso Completo0000213
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
2140000Curso Completo
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!!!
O comando sp_help: Este comando retorna uma srie de informaes sobre uma determinada
tabela, inclusive informaes sobre os ndices.
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.
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:
Curso Completo0000215
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Para finalizar o captulo gostaria de colocar algumas recomendaes quanto criao de ndices.
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
2160000Curso Completo
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!!!
clusula ORDER BY, crie um clustered index na coluna NmeroPedido, na ordem desejada pela
consulta (Ascendente ou Descendente).
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.
Curso Completo0000217
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!!!
Parte 2
KNOW-HOW
Curso Completo0000219
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 5
APRENDENDO SOBRE TRANSAES,
BACKUP E AGENDAMENTO DE TAREFAS
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
2220000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
Curso Completo0000223
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Agora vamos detalhar um pouco mais estes conceitos.
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
Final da Transao.
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
2240000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Estas quatro caractersticas so resumidas pela sigla ACID. Vamos ver o que significa cada uma destas
caractersticas.
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.
Curso Completo0000225
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
2260000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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:
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
Curso Completo0000227
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
2280000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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:
Curso Completo0000229
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
1. Backup do Banco de Dados no domingo s 20h.
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.
NOTA
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
2300000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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 diferencial.
backup de filegroups.
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.
Curso Completo0000231
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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.
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.
2320000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela 5.1 Backup completo do Banco de Dados.
Dia Backup/horrio(s)
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.
Tabela 5.2 Backup completo do Banco de Dados mais backup do Log de transaes.
Dia Backup/horrio(s)
Curso Completo0000233
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
um completo do sbado +
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)
2340000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Continua
Dia Backup/horrio(s)
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.
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.
um completo do sbado +
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.
Curso Completo0000235
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Estou utilizando um computador que no possui drive de fita instalado, por isso, nos exemplos deste captulo, farei o backup em uma pasta
NOTA
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.
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.
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.
2360000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Ao efetuarmos um backup em uma pasta compartilhada, podemos utilizar a conveno de nomes UNC Universal Naming Convention. O
NOTA
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.
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.
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.
Curso Completo0000237
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Nome: backup_clientes
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.
NOTA
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).
2380000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Observe que a opo Tape est desabilitada, pois no servidor que estou utilizando no existe um drive
de fita instalado, conforme descrito anteriormente.
Curso Completo0000239
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
NOTA
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.
2400000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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:
USE master
exec sp_addumpdevice disk, backup_geral, C:\backups\geral.bak
NOTA
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
NOTA
Agora vamos utilizar a janela de execuo de comandos T-SQL para criar um backup device lgico,
com as seguintes caractersticas:
Nome: backup_Exemplo1
Curso Completo0000241
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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:
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.
Caso voc especifique o nome de um backup device que j existe, receber a seguinte mensagem
de erro:
6. Mantenha a janela de execuo de comandos T-SQL aberta, pois iremos utiliz-la nos
prximos exemplos.
NOTA
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.
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
2420000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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
NOTA
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.
Curso Completo0000243
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Comandos T-SQL
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.
Surge a janela para que voc possa configurar as definies do backup a ser criado, conforme indicado
na Figura 5.6.
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.
2440000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo0000245
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
2460000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
NOTA
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.
Curso Completo0000247
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Aps finalizar o backup, o SQL Server 2005 emite uma mensagem avisando que o backup foi finalizado
com sucesso.
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.
2480000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
Curso Completo0000249
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
9. Na janela Select backup Destination, clique na opo backup device e na lista de backup de-
vices selecione backup_exemplo1.
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.
2500000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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).
Na lista Schedule type, vem selecionado, por padro, o tipo de agendamento Recurring. Nesta lista,
podemos definir os seguintes tipos de agendamentos:
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.
Curso Completo0000251
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
2520000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Agora vamos aprender a fazer backup utilizando comandos T-SQL, na janela de execuo de comandos.
Curso Completo0000253
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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:
2540000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000255
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Ser emitida a seguinte mensagem de erro:
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.
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.
2560000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
| 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 ] ]
]
}
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:
USE master
EXEC sp_addumpdevice disk, bklog, D:\backups\bklog.bak
BACKUP LOG Exemplo1 TO bklog
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_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.
Curso Completo0000257
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
********************************************
********** 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
Ao executarmos este comando, com sucesso, ser emitida uma mensagem, semelhante indicada a seguir:
(1 row(s) affected)
2580000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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.
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.
Curso Completo0000259
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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).
2600000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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
Curso Completo0000261
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
2620000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000263
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Por exemplo, para restaurarmos um backup completo do Banco de Dados Exemplo1, a partir do device
device_real, podemos utilizar o seguinte comando:
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
2640000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Agora vamos aprender um pouco mais sobre o comando RESTORE LOG. Considere o exemplo a seguir:
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).
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
Exerccio: Neste exerccio apresentarei os comandos necessrios para executar a seguinte seqncia de tarefas:
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.
Curso Completo0000265
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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-
NOTA
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.
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
2660000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
Curso Completo0000267
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
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
NOTA
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.
2680000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo0000269
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
2700000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000271
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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).
3. Nas opes que surgem abaixo desta instncia, clique no sinal de + ao lado da opo SQL
Server Agent para expandi-la.
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:
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.
2720000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
Curso Completo0000273
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
2740000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
16. D um clique em OK e pronto, o segundo passo do job ter sido criado, conforme indicado na
Figura 5.25:
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.
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.
Curso Completo0000275
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
NOTA
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.
2760000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000277
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Data.
Notificaes: Podemos fazer com que o job notifique o administrador em caso de sucesso ou
falha na execuo.
2780000Curso Completo
CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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:
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.
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.
Curso Completo0000279
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
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
INTRODUO
O SQL Server 2005 pode ser utilizado como Banco de Dados em uma srie de situaes, como por
exemplo:
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.
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
NOTA
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.
2820000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Neste captulo apresentaremos:
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.
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.
METODOLOGIA
Apresentao terica sobre o modelo de segurana do SQL Server 2005.
Logins
User Accounts
Schemas
Roles
Permissions
Curso Completo0000283
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
2840000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
Curso Completo0000285
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
2860000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
Curso Completo0000287
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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
Users
Roles
Rules
Defaults
Full-Text Catalogs.
NOTA
J aprendemos a criar alguns destes elementos e iremos aprender a criar outros no decorrer deste livro.
2880000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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?
Figura 6.5 Usurio com permisso de conexo, porm sem permisso no Banco de Dados.
Curso Completo0000289
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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?
2900000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
1. O usurio jsilva consegue fazer a conexo com a instncia do servidor SQL Server 2005.
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.
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.
Curso Completo0000291
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
2920000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
As permisses podem ser atribudas para o schema tambm para os objetos dentro de um schema.
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.
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
Curso Completo0000293
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
2940000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Importante: At o Captulo 5, sempre que fazamos uma conexo com o servidor SQL, estvamos nos conectando com a conta do usurio
NOTA
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.
METODOLOGIA
Apresentao terica sobre o modelo de segurana do Windows 2000 Server e Windows Server 2003.
NOTA
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.
Workgroup x Domnios.
Active Directory.
Curso Completo0000295
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
2960000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
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.
Curso Completo0000297
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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?
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
2980000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
organizacionais, podemos atribuir poderes administrativos apenas na unidade organizacional, sem
que com isso o usurio tenha poderes sobre todo o domnio.
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.
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.
Curso Completo0000299
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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 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:
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.
NOTA
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.
3000000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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.
Curso Completo0000301
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Nome de logon do usurio o nome que o usurio utiliza para efetuar o logon em computadores com o Windows 2000 Server, Windows
NOTA
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.
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.
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
3020000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
NOTA
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.
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
Curso Completo0000303
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Agora vamos dar uma olhada nos tipos de grupos existentes no Windows 2000 Server e tambm no
Windows Server 2003.
3040000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Podemos ter dois tipos de grupos: Grupos de segurana (Security groups) e Grupos de distribuio
(Distribution groups).
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:
Somente pode receber permisses para recursos do domnio no qual o grupo criado.
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 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.
Curso Completo0000305
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
NOTA
Na prtica, a opo Users nada mais do que uma unidade organizacional, a qual pode conter contas de usurios e de grupos de usurios.
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.
3060000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000307
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
3080000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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).
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.
10. Repita as operaes anteriores para adicionar os usurios user3, user4 e user5 ao grupo Grupo2.
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.
Curso Completo0000309
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Existem algumas contas de usurio que so criadas no momento em que o Windows instalado. Essas contas so conhecidas como Built-in
NOTA
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.
3100000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
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.
Curso Completo0000311
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Utilizarei os termos logins e users com significados diferentes. Adicionar um login significa dar permisso a um usurio para que o usurio
NOTA
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.
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.
3120000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas
-> Microsoft SQL Server 2005 -> SQL Server Management Studio).
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.
Curso Completo0000313
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
3140000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo0000315
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
3160000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000317
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela 6.8 Logins a serem adicionados instncia SERVIDOR\SQL2005.
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.
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.
ou
ou
Por exemplo, para adicionarmos o usurio chico, do domnio GROZA, utilizamos o seguinte comando:
3180000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ou
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.
ou
ou
Por exemplo, para removermos a permisso de login do usurio chico, do domnio GROZA, utilizamos
o seguinte comando:
ou
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.
Curso Completo0000319
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Sintaxe para o comando sp_denylogin:
ou
ou
Por exemplo, para negarmos, explicitamente, a permisso de login do usurio chico, do domnio
GROZA, utilizamos o seguinte comando:
ou
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.
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.
3200000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela 6.10 Valores do parmetro encryptopt.
Valor Descrio
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:
Ao executar o comando anterior, voc receber uma mensagem de erro, informando que a senha no atende os requisitos de complexidade.
NOTA
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:
sp_addlogin no pode ser executado como parte de uma transao definida pelo usurio ou
por um aplicativo que o usurio est utilizando.
Para o nosso exemplo, descrito na Tabela 6.8, utilizaremos o comando sp_addlogin, para adicionar os
usurios: sqluser1 e sqluser2.
Por exemplo, para excluirmos o usurio luciano, podemos utilizar o seguinte comando:
Curso Completo0000321
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Algumas observaes sobre 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.
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;
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):
3220000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Ser aberta a janela para execuo de comandos T-SQL, a qual voc j utilizou diversas vezes neste livro.
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
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.
Curso Completo0000323
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
3240000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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
Curso Completo0000325
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Tabela 6.14 Roles a serem criadas usando o SQL Server Management Studio.
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.
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.
3260000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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:
Curso Completo0000327
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Por exemplo, para adicionar uma role chamada teste, cujo dono seja o schema Clientes, utilize o
seguinte comando:
Se no for especificado o parmetro dono, o dono da role ser o Schema dbo database owner.
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.
Por exemplo, para excluir a role chamada teste, criada anteriormente, utilize o seguinte comando:
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.
3280000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
O comando sp_droprole no pode ser executado no contexto de uma transao definida pelo
usurio.
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.
Exemplo prtico: Utilizando a janela de execuo de comandos T-SQL, crie as roles indicadas na Tabela 6.15.
Curso Completo0000329
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Ser aberta a janela para execuo de comandos T-SQL, a qual voc j utilizou diversas vezes neste livro.
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.
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.
3300000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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).
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.
NOTA
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.
Curso Completo0000331
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Exemplo prtico: Para adicionar os users indicados na Tabela 6.16, siga os passos indicados a seguir:
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.
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:
3320000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Adicionamos usurios lista de usurios. No caso do Banco de Dados Exemplo1, tambm fizemos os usurios membros da role Consulta. Porm
NOTA
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.
Curso Completo0000333
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Para adicionarmos um login lista de usurios autorizados a acessar um Banco de Dados, utilizamos 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
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.
3340000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Para retirar a permisso de acesso do usurio a um Banco de Dados, podemos utilizar o comando
sp_revokedbaccess.
Curso Completo0000335
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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.
use AdventureWorks
exec sp_revokedbaccess SERVIDOR\user1
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.
Vamos utilizar o SQL Server Management Studio para adicionar alguns usurios a algumas das roles
anteriormente criadas, conforme indicado na Tabela 6.19.
3360000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela 6.19 Adicionando usurios a roles.
Exemplo prtico: Para adicionar os usurios indicados na Tabela 6.19, faa o seguinte:
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:
Curso Completo0000337
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
6. D um clique duplo na role1 para abrir as suas propriedades. Surge a janela com as propriedades
da role.
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:
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.
11. D um clique duplo na role role2 para abrir a janela com as suas propriedades.
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.
3380000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
Curso Completo0000339
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Por exemplo, para adicionar os usurios SERVIDOR\user1 e SERVIDOR\user2 role sysadmin, podemos
utilizar os seguintes comandos:
Por exemplo, para excluir os usurios SERVIDOR \user1 e SERVIDOR \user2 da role sysadmin, podemos
utilizar os seguintes comandos:
3400000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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.
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.
Curso Completo0000341
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Isto o que aprenderemos neste item, ou seja, configurar permisses. Veremos os seguintes tpicos:
Agendar tarefas.
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
3420000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000343
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Para adicionar um login a uma role do servidor, tambm podemos utilizar o comando sp_addsrvrolemember, conforme descrito anteriormente.
Create Default.
Create Rule.
Create Function.
3440000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Podemos atribuir estas permisses para usurios e roles do Banco de Dados. Devemos sempre ter em
mente as seguintes regras:
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.
Role: role1
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.
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.
Curso Completo0000345
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
3460000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo0000347
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Dados. Se ele tentar fazer um backup, utilizando o comando BACKUP DATABASE, a seguinte
mensagem ser exibida:
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.
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]
3480000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Permisso Se aplica a:
Permisso Se aplica a:
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]
Curso Completo0000349
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Observe que utilizamos a palavra ALL, para significar todas as permisses.
NOTA
Para uma descrio completa, de todas as opes do comando GRANT, consulte o tpico Transact SQL Reference, no Books OnLine.
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]
USE Exemplo1
REVOKE ALL
TO [SERVIDOR\user2]
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.
3500000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
Curso Completo0000351
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
3520000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Permisso Se aplica :
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:
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.
Curso Completo0000353
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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).
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.
3540000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo0000355
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tambm podemos definir as permisses de Banco de Dados, utilizando comandos T-SQL.
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.
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]
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.
3560000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Sintaxe para o comando REVOKE:
Como a sintaxe completa no muito amistosa, vamos utilizar alguns exemplos para ilustrar a utilizao
do comando REVOKE.
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]
USE Exemplo1
REVOKE ALL ON Clientes
TO [SERVIDOR\user2]
Para negar (negar) as permisses de objetos do Banco de Dados utilize 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 ]
Curso Completo0000357
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
USE Exemplo1
DENY SELECT, UPDATE, DELETE ON Clientes
TO [SERVIDOR\user1]
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:
3580000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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:
Curso Completo0000359
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Neste tpico, mostrarei as aes prticas para trabalhar com schemas, usando o SQL Server Manage-
ment Studio. Voc aprender a executar as seguintes aes:
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:
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.
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.
3600000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Curso Completo0000361
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
3620000Curso Completo
CAPTULO 6 SEGURANA NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000363
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Sei que o captulo foi longo, mas no poderia ser diferente, devido grande importncia do assunto
segurana.
3640000Curso Completo
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 7
ADMINISTRANDO, MONITORANDO E
OTIMIZANDO O SQL SERVER 2005
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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).
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.
3660000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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.
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
Curso Completo0000367
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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).
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.
3680000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
Curso Completo0000369
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
(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.
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:
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
3700000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000371
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
3720000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000373
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
3740000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Figura 7.7 Podemos ver os diversos jobs criados pelo plano de manuteno.
Curso Completo0000375
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Categoria Descrio
3760000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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.
Curso Completo0000377
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
3780000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
DBCC INDEXDEFRAG
( { database_name | database_id | 0 }
, { table_name | table_id | view_name | view_id }
, { index_name | index_id }
) [ WITH NO_INFOMSGS ]
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.
Use pubs
DBCC INDEXDEFRAG (pubs, authors, UPKCL_auidind)
Use banco_de_dados
DBCC INDEXDEFRAG (banco_de_dados, tabela, ndice)
Curso Completo0000379
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Por padro, somente a role de servidor sysadmin e a role de Banco de Dados db_owner tm
permisso para executar este comando.
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)
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%.
Use Exemplo1
DBCC SHRINKDATABASE (Exemplo1, 25,NOTRUNCATE)
3800000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
DBCC SHRINKFILE
( { file_name | file_id }
{ [ , target_size ]
| [ , { EMPTYFILE | NOTRUNCATE | TRUNCATEONLY } ]
}
)
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.
USE Exemplo1
DBCC SHRINKFILE (exemplo1-prim, 7)
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
Curso Completo0000381
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
DBCC UPDATEUSAGE
( { database_name | 0 }
[ , { table_name | view_name }
[ , { index_id | index_name } ] ]
)
[ WITH [ COUNT_ROWS ] [ , NO_INFOMSGS ]
]
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.
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):
3820000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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.
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 } ]
}
]
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.
Curso Completo0000383
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Com o comando DBCC SHOWCONTIG, podemos utilizar as seguintes opes:
WITH FAST: Determina que seja feita uma verificao rpida nos ndices.
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.
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.
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)
3840000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Este comando ir retornar o seguinte resultado:
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.
DBCC USEROPTIONS
NOTA
Exemplo:
DBCC USEROPTIONS
Curso Completo0000385
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
3860000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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.
Para informao sobre todas as opes do comando DBCC CHECKDB, consulte a referncia da linguagem T-SQL, no 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 ] ]
}
]
Curso Completo0000387
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Use Northwind
DBCC CHECKTABLE(orders)
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
NOTA
Para informao sobre todas as opes do comando DBCC CHECKTABLE, consulte a referncia da linguagem T-SQL, no Books OnLine.
Por padro, somente a role de servidor sysadmin que tem permisso para executar este
comando.
Considere o exemplo:
3880000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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.
Curso Completo0000389
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Para criar o Banco de Dados ImportAccess, na instncia SERVIDOR\SQL2005, siga os passos indicados
a seguir:
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.
NOTA
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.
*************************
Definio do Arquivo Primrio
*************************
(NAME= ImportAccess-prim,
FILENAME = C:\livrosql\ImportAccess\ImportAccess-prim.mdf,
SIZE= 10MB,
MAXSIZE= 50MB,
FILEGROWTH = 1MB),
***************************
Definio do Arquivo Secundrio
***************************
3900000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
(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.
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.
Curso Completo0000391
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
3920000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Paradox 3, 4 e 5.
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.
A partir de um Banco de Dados do Microsoft Access, podemos importar somente tabelas e consultas (views). Os formulrios, relatrios,
NOTA
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.
Curso Completo0000393
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
3940000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000395
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
3960000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000397
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
3980000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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:
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.
Paradox 3, 4 e 5.
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.
Curso Completo0000399
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
4000000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Ao final, exibida uma mensagem informando o nmero de objetos que foram exportados, conforme
indicado na Figura 7.17.
Curso Completo0000401
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
4020000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000403
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
4040000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000405
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
4060000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
No prximo tpico voc aprender a utilizar o console Performance (Desempenho), atravs de
exemplos prticos.
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.
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:
Curso Completo0000407
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Observe que, por padro, os seguintes contadores j esto adicionados e sendo monitorados:
Comprimento mdio de fila de disco (Avg. Disk Queue Length) do objeto Physical Disk.
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.
4080000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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
NOTA
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.
Curso Completo0000409
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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%.
4100000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000411
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Pratique um pouco: Abra novamente o console Desempenho e adicione alguns contadores do processador e da memria. Para o objeto
PRATIQUE
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.
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.
4120000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Para o exemplo proposto estou utilizando um computador com dois discos fsicos, os quais esto divididos em um ou mais volumes. Para este
NOTA
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.
1. Faa o logon como administrador, ou com uma conta com permisso de administrador.
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
Curso Completo0000413
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
NOTA
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.
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.
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
4140000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000415
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
4160000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela 7.3 Valores limites recomendados pela Microsoft.
Curso Completo0000417
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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%.
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
4180000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
NOTA
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.
Curso Completo0000419
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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.
1. Faa o logon como administrador ou com uma conta com permisso de administrador.
Figura 7.26 Configurando o servio Logs e alertas de desempenho para iniciar automaticamente.
4200000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
5. Clique no boto Iniciar para fazer com que o servio seja inicializado imediatamente.
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.
Uma vez estando configurado corretamente o servio Logs e alertas de desempenho, temos disposio
as seguintes funcionalidades:
Curso Completo0000421
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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.
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:
4220000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
No pode haver nenhum log selecionado, se no a opo Novas configuraes de log no ser exibida no menu Ao. Se esta opo no
NOTA
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.
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.
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.
Curso Completo0000423
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
4240000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
9. Ao clicar no boto Configurar ser exibida a janela Configurar Arquivos de log. Defina as
configuraes indicadas na Figura 7.31.
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.
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.
NOTA
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.
Curso Completo0000425
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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.
Agora vamos analisar os dados obtidos, os quais foram gravados no arquivo C:\Monitora o
processador_000001.csv.
Exemplo 2: Analisando os dados obtidos com o log Monitora o processador, criado no exemplo anterior.
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
4260000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000427
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Contadores para identificar gargalos em recursos de memria:
Memria\Bytes disponveis
Memria\Pginas/s
Monitore contadores de memria para determinar se a paginao excessiva est sobrecarregando o disco. Quando o computador tem pouca
IMPORTANTE
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.
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.
4280000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000429
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
4300000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
13. Clique com o boto direito do mouse em qualquer parte do grfico. No menu de opes que
exibido clique em Propriedades.
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:
18. Observe que o perodo dos dados j foi limitado, conforme pode ser conferido no campo
Durao, nos campos logo abaixo 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:
Curso Completo0000431
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
23. Veja que o grfico fica com um aspecto bem melhor, conforme indicado na Figura 7.37:
4320000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
24. Feche o console Desempenho.
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.
NOTA
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.
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.
Curso Completo0000433
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
4340000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000435
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SERVIDOR\SQL2005 MSSQL$SQL2005
SERVIDOR\SRVINST02 MSSQL$SRVINST02
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
NOTA
Para uma descrio completa, de todos estes objetos e todos os contadores de cada objeto, acesse o Books.
4360000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Objeto Contadores
A seguir temos uma descrio dos contadores do SQL Server para o objeto MSSQL$SQL2005: General
Statistics.
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.
Curso Completo0000437
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
4380000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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.
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.
Curso Completo0000439
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
De uma maneira geral, devemos utilizar o profiler para as seguintes tarefas:
Identificar consultas que estejam com problemas de desempenho, isto , com um tempo de
execuo muito elevado, muito acima do esperado.
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.
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: 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.
4400000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000441
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Agora vamos gerar atividades na instncia SERVIDOR\SQL2005, para que sejam capturados eventos
no profiler.
4420000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
1. SQL Server Management Studio.
4. Restaure o profiler e observe que uma srie de eventos j foi capturada, conforme indicado na
Figura 7.46.
5. Observe que na figura aparece em destaque o comando executado quando abrimos a tabela
Orders: SELECT * FROM Orders.
6. Minimize o profiler.
1. Restaure o profiler.
Curso Completo0000443
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
4440000Curso Completo
CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000445
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
4460000Curso Completo
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 8
REPLICAO: CONCEITO,
IMPLEMENTAO E MANUTENO
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
O mecanismo de replicao do Windows controlado pelo prprio Windows, e no tem nenhuma relao com os mecanismos de replicao
NOTA
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
NOTA
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
4480000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
METODOLOGIA
Apresentao sobre os conceitos bsicos de replicao.
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.
Agora vamos analisar algumas situaes onde pode ser necessria a utilizao de replicao.
Curso Completo0000449
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Localidade SERVIDOR\instncia
So Paulo SQLSRVSP\PRODUO
Rio de Janeiro SQLSRVRJ\PRODUO
Porto Alegre SQLSRVPA\PRODUO
Belo Horizonte SQLSRVBH\PRODUO
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?
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
4500000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000451
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela 8.2 Agendamento das replicaes.
Hora Descrio
Na Figura 8.4, temos uma visualizao deste processo de replicao, em que a sincronizao dos dados
ocorre em 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.
4520000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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.
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
Curso Completo0000453
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
4540000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Este praticamente o mesmo modelo de replicao utilizado pelo SQL Server 2000. A replicao foi uma rea onde no houve grandes
NOTA
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.
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
Curso Completo0000455
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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.
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
4560000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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.
Curso Completo0000457
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
4580000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
Na parte prtica deste captulo aprenderemos a criar artigos e a aplicar os diferentes tipos de filtros.
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.
Curso Completo0000459
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
4600000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000461
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Quando falamos do monitoramento das alteraes, o envio dos dados a serem replicados para o distributor e outras tarefas ligadas
NOTA
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.
4620000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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).
NOTA
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.
NOTA
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.
Curso Completo0000463
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
4640000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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.
Curso Completo0000465
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Agora que j conhecemos a teoria bsica sobre replicao no SQL Server 2005, estamos preparados
para comear a implementar a replicao na prtica.
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
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.
4660000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000467
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
4680000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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.
Curso Completo0000469
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
4700000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000471
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
4720000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
23. Eu fui, propositalmente, para a prxima etapa, para que surgisse a mensagem indicada na
Figura 8.18:
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
Curso Completo0000473
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
4740000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000475
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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
4760000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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.
Curso Completo0000477
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
4780000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo0000479
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
4800000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo0000481
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Pull subscriptions
Push subscriptions
4820000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000483
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
4840000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Curso Completo0000485
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
4860000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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:
Curso Completo0000487
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
16. Clique em OK para criar o Banco de Dados ExReplicacao. Voc estar de volta ao assistente de subscrio.
4880000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000489
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
4900000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
Curso Completo0000491
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
4920000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Agora vamos verificar o histrico de execuo de um dos jobs Replication agents checkup.
Curso Completo0000493
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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).
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.
4940000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000495
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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_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:
4960000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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
Curso Completo0000497
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
4980000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Curso Completo0000499
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
5000000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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):
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.
NOTA
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.
Curso Completo0000501
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
5020000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
Curso Completo0000503
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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:
5040000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
*********************************************************************************************************
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.
Curso Completo0000505
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
5060000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
METODOLOGIA
Apresentao dos comandos e assistentes para configurao de um subscriber que no seja um SQL Server 2005.
Curso Completo0000507
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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 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.
NOTA
Estes objetos so suportados pela grande maioria dos OLE DB Providers disponveis.
5080000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Procedimento 3: Criar uma subscrio do Banco de Dados do Microsoft Access, para a publicao
Minha Publicao da instncia SERVIDOR\SQL2005, do SQL Server.
J havamos criado a pasta C:\livrosql nos captulos anteriores. Caso voc ainda no tenha criado esta pasta, crie antes de iniciar este
procedimento.
Curso Completo0000509
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
5. Sero exibidas todas as pastas do drive C:. D um clique duplo na pasta livrosql para abri-la.
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.
Agora vamos registrar este Banco de Dados como um subscriber autorizado no publisher
SERVIDOR\SQL2005.
5100000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
Curso Completo0000511
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
5120000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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:
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
Curso Completo0000513
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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: 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:
5140000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000515
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
5160000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
17. Voc estar de volta ao assistente para criao de novas subscries. Clique em Next, para
seguir para a prxima etapa do assistente.
Curso Completo0000517
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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:
5180000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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-
*********************************************************************************************************
Agora vamos abrir o Banco de Dados C:\livrosql\ExReplicacao.mdb, para verificar se os dados foram
realmente replicados.
1. Abra o Windows Explorer (Iniciar -> Programas -> Acessrios -> Windows Explorer) e navegue
at a pasta C:\livrosql.
Curso Completo0000519
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
2. D um clique duplo no arquivo ExReplicacao.mdb para abri-lo no Microsoft Access. J devem
aparecer as tabelas: Orders, Products e Customers.
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
5200000Curso Completo
CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000521
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
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Para acompanhar os tpicos apresentados neste captulo, o amigo leitor deve ter um bom entendimento dos conceitos de: chave primria,
NOTA
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.
5240000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
Curso Completo0000525
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
5260000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000527
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
METODOLOGIA
Apresentao terica sobre a implementao da integridade dos dados no SQL Server 2005.
Apresentao dos tipos de integridade existentes no SQL Server 2005.
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.
5280000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela 9.1 O Banco de Dados PubsIntF.
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.
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:
*************************
Definio do Arquivo Primrio
*************************
(NAME= PubsIntF_prim,
FILENAME = C:\livrosql\PubsIntF\PubsIntF-prim.mdf ,
SIZE= 10MB,
Curso Completo0000529
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Com isso o nosso Banco de Dados PubsIntF foi criado, na instncia SERVIDOR\SQL2005.
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:
5300000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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:
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.
Curso Completo0000531
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
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.
5320000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000533
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
5340000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela 9.2 Tipos de constraints e utilizao de cada uma delas.
Tipo Descrio
DEFAULT Define um valor a ser atribudo a uma coluna, caso no tenha sido digitado nenhum valor para esta coluna.
Por exemplo, se a maioria dos clientes da cidade de So Paulo, podemos definir um valor padro So Paulo
para o campo Cidade. Com isso se no for especificado um valor diferente, o campo cidade conter o valor So
Paulo, para cada novo registro que for criado na tabela Clientes. Este um tipo de Integridade de domnio. No
Microsoft Access, esta propriedade chamada de Valor padro.
CHECK Define uma regra de validao para o campo. Por exemplo, podemos definir que o campo Salrio no pode
conter valores maiores do que R$ 7.000,00. Este um tipo de Integridade de domnio. No Microsoft Access, esta
propriedade chamada de Regra de Validao.
PRIMARY KEY Define um campo como sendo chave primria da tabela. No sero permitidos valores repetidos ou nulos
(NULL), neste campo. Ao definirmos um campo como chave primria, criado um clustered index neste campo.
FOREIGN KEY Define um campo como chave estrangeira. Lembrando que a chave estrangeira um campo ou conjunto de
campos em uma tabela secundria, relacionados com uma chave primria em uma tabela primria. Por exemplo,
o campo CdigoCliente, na tabela Pedidos, uma chave estrangeira, relacionada com o campo chave primria
CdigoCliente, na tabela Clientes.
UNIQUE No permite valores duplicados em um determinado campo, porm valores nulos so aceitos. Um ndice criado
para melhorar o desempenho. A diferena entre a constraint UNIQUE e a PRIMARY KEY que a UNIQUE aceita
valores nulos e a PRIMARY KEY no.
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.
NOTA
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.
Curso Completo0000535
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Sintaxe para o comando ALTER TABLE, para excluir uma constraint existente:
Vamos fazer alguns exemplos prticos para que possamos entender melhor a sintaxe e o funcionamento
destes comandos.
Exemplo: No exemplo a seguir, criamos uma tabela chamada Clientes, onde os campos Nome, CPF e
Endereo no podem conter valores nulos.
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:
5360000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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.
Agora vamos inserir um registro onde no fornecido o valor para o campo Cidade:
Curso Completo0000537
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
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
5380000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
IDENTITY
unique-identifier
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 definir que o campo Financiamento deve ser maior ou igual a 1000 e menor ou igual a 5000,
utilizamos o seguinte comando:
Vamos testar esta constraint. Tentaremos inserir um registro, onde o financiamento maior do que
5000. Tentaremos executar o seguinte comando:
Agora vamos alterar o nosso comando, reduzindo o financiamento a 3000,00. Com isso, o comando
ser executado com sucesso:
Vamos adicionar um campo chamado Bairro e depois vamos definir um conjunto de valores possveis
para este campo.
Para definir que o campo Bairro somente deve aceitar os valores Centro, Itarar e Camobi, utilizamos
o seguinte comando:
Curso Completo0000539
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Vamos testar esta constraint. Tentaremos inserir um registro, onde o bairro igual a Urlndia.
Tentaremos executar o seguinte comando:
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:
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:
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:
5400000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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:
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:
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:
Curso Completo0000541
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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.
NOTA
Este exemplo no tem muito sentido prtico. Iremos utiliz-lo apenas para exemplificar a sintaxe de criao de uma UNIQUE Constraint
composta.
Observe que neste caso especificamos que seja criado um nonclustered index.
5420000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
definindo esta coluna como uma chave estrangeira. A chave estrangeira representa o lado vrios de um
relacionamento do tipo Um para Vrios.
NOTA
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:
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.
Curso Completo0000543
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Uma vez executado este comando, teremos criado um relacionamento entre as tabelas Clientes e Pedidos,
conforme indicado na Figura 9.8.
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
5440000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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
Curso Completo0000545
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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)
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.
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)
5460000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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.
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:
EXCLUINDO CONSTRAINTS
Podemos excluir uma constraint, utilizando o comando ALTER TABLE. Utilizamos a seguinte sintaxe:
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
Curso Completo0000547
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
5480000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000549
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
5500000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Muito bem, com isso conclumos o exerccio proposto.
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.
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.
Curso Completo0000551
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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:
5520000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Existem outras tcnicas que simplificam a manuteno de aplicaes. Falaremos mais sobre estas tcnicas nos Captulos 10 e 11.
Curso Completo0000553
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
5540000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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.
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.
Curso Completo0000555
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
5560000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
Curso Completo0000557
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
5580000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
Curso Completo0000559
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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])
5600000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Observe que o nome da view vem entre colchetes. Isso necessrio porque existem espaos em branco no nome da view.
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
Curso Completo0000561
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
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.
Observe que o nome da view vem entre colchetes. Isso necessrio porque existem espaos em branco no nome da view.
5620000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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.
Curso Completo0000563
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
5640000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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.
Curso Completo0000565
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
5660000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000567
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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.
5680000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Observe que o nome da view vem entre colchetes. Isso necessrio porque existem espaos em branco no nome da view.
Figura 9.25 Resultados da execuo da nossa view em conjunto com ORDER BY.
Curso Completo0000569
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
5700000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000571
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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.
5720000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
6. Pressione Ctrl+S para salvar a view e feche a janela de criao da view.
Observe que o nome da view vem entre colchetes. Isso necessrio porque existem espaos em branco no nome da view.
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.
Curso Completo0000573
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
13. Pressione Ctrl+S para salvar a view e feche a janela de criao da view.
15. Pronto, solucionado o exemplo proposto. Voc dever obter os resultados indicados na Figura 9.29:
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.
CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] ) ]
[ WITH < view_attribute > [ ,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]
5740000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Simplificando a sintaxe apresentada no Books OnLine, teramos o seguinte:
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
NOTA
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:
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.
Curso Completo0000575
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
INNER JOIN
[Detalhes do Pedido] ON [Pedidos].[NmeroDoPedido] =
[Detalhes do Pedido].[NmeroDoPedido]
GROUP BY YEAR(DataDoPedido)
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.
NOTA
Para uma discusso aprofundada sobre o modelo de segurana e atribuio de permisses, consulte o Captulo 6 deste livro.
5760000Curso Completo
CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000577
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
5780000Curso Completo
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Parte 3
DESENVOLVIMENTO
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
5800000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E 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 Completo0000581
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
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.
5820000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
Curso Completo0000583
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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:
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.
5840000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000585
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Agora que j conhecemos o que e quais as vantagens, podemos partir para a criao de stored procedures.
A exemplo de outros objetos de Banco de Dados, podemos criar um stored procedure, utilizando duas
maneiras diferentes:
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.
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.
5860000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
Estamos utilizando o prefixo usp_ para indicar user stored procedure. Porm esta no uma conveno obrigatria, apenas uma recomendao.
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
Curso Completo0000587
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
4. Agora podemos executar o stored procedure sempre que for necessrio. Para execut-lo, exe-
cute o seguinte comando:
exec usp_PedidosDoBrasil
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.
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:
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.
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
5880000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
neste parmetro como critrio de pesquisa, para retornar apenas os pedidos para o pas passado como
parmetro de entrada.
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.
Curso Completo0000589
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
5900000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
Curso Completo0000591
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
USE NwindAccess
GO
CREATE PROCEDURE usp_ExIF
@pas1 nvarchar(15),
@pas2 nvarchar(15)
AS
5920000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
O stored procedure usp_ExIF executado e a seguinte mensagem emitida:
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:
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:
isso mesmo.
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:
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:
Curso Completo0000593
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
USE NwindAccess
GO
ALTER PROCEDURE usp_ExIF
@pas1 nvarchar(15),
@pas2 nvarchar(15)
AS
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.
NOTA
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.
OK. Este o resultado esperado. Vamos continuar nossos testes. Execute o seguinte comando:
5940000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
O stored procedure usp_ExIF executado e a seguinte mensagem emitida:
Maravilha !!!!!!!!!!!!!!!
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)
A ESTRUTURA WHILE...CONTINUE
Esta estrutura faz com que um conjunto de comandos continue sendo executado, enquanto uma
determinada condio for verdadeira.
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.
Curso Completo0000595
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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
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:
1 1
2 3
3 6
4 10
5 15
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
)
USE NwindAccess
GO
CREATE PROCEDURE usp_CalculaSoma
@numero int
AS
Cria uma varivel para controle do lao
5960000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
e inicializa a varivel com o valor 1.
WHILE (@contador<=@numero)
BEGIN
SET @soma = @soma + @contador
INSERT INTO SomaNaturais VALUES (@contador,@soma)
SET @contador = @contador + 1
END
NOTA
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
(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)
Nmero SomaAcumulada
1.0 1.0
2.0 3.0
3.0 6.0
Continua
Curso Completo0000597
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Continuao
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
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
DELETE SomaNaturais
WHILE (@contador<=@numero)
BEGIN
SET @soma = @soma + @contador
INSERT INTO SomaNaturais VALUES (@contador,@soma)
SET @contador = @contador + 1
END
5980000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
parmetro de sada, basta colocar a palavra OUTPUT aps a definio do tipo do parmetro,
como no exemplo a seguir:
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.
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.
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:
526.728
Temos que especificar o parmetro de sada tanto na criao como na execuo do stored
procedure, conforme indicado no exemplo:
Curso Completo0000599
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Agora execute o seguinte comando:
697.684
Por exemplo, para excluir o stored procedure usp_MdiaPedidosPas, criado no exemplo anterior,
utilizamos o seguinte comando:
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:
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.
6000000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000601
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
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
NOTA
uma aplicao, os stored procedures e as aplicaes que chamam o stored procedure renomeado tero que ser atualizados, caso contrrio
deixaro de funcionar corretamente.
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:
Por exemplo, para obter informaes sobre o stored procedure usp_PedidosBrAlAr, utilizamos o seguinte
comando:
USE NwindAccess
exec sp_help usp_PedidosBrAlAr
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:
6020000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Por exemplo, para obter informaes sobre os comandos do stored procedure usp_PedidosBrAlAr,
utilizamos o seguinte comando:
USE NwindAccess
exec sp_helptext usp_PedidosBrAlAr
Text
CREATE PROCEDURE [usp_PedidosBrAlAr] AS
SELECT * From Pedidos
WHERE PasDeDestino IN (Brasil,Argentina,Alemanha)
ORDER BY PasDeDestino
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.
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.
Curso Completo0000603
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
6040000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Uma trigger somente executada aps o comando que a disparou ter sido completado. Por exemplo, se tivermos uma trigger associada
NOTA
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.
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.
Curso Completo0000605
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
No SQL Server 2005, temos cinco tipos de triggers, conforme o comando com a qual a mesma
associada:
DELETE.
INSERT.
UPDATE.
INSTEAD OF.
AFTER.
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.
6060000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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.
Curso Completo0000607
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Observe a utilizao da funo EXISTS(comando SQL). Esta funo retorna verdadeiro, caso o comando SQL retorne algum registro, e falso,
caso contrrio.
(1 row(s) affected)
6080000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
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.
Curso Completo0000609
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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)
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
(
6100000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Cliente nvarchar(50) NOT NULL,
Usurio char(30) NOT NULL
)
Observe que, na definio da trigger, associamos a trigger com as aes INSERT e UPDATE FOR INSERT,UPDATE. Tambm observe a
NOTA
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.
Curso Completo0000611
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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)
( [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)
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.
(0 row(s) affected)
6120000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Isto comprova que o registro no foi inserido.
Agora vamos testar se a trigger est realmente funcionando para alteraes UPDATE.
WHERE [CdigoDoCliente]=RICAR
Esta mensagem emitida pela trigger tg_NoAlteraInsereCliente, a qual detectou que tentamos executar
uma operao UPDATE e impediu que a operao fosse executada.
(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'
(0 row(s) affected)
Curso Completo0000613
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
6140000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
O COMANDO SP_HELPTEXT
Este comando retorna o cdigo da trigger. A sintaxe para este comando a seguinte:
USE NwindAccess
GO
exec sp_helptext tg_NoAlteraInsereCliente
Curso Completo0000615
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
O COMANDO SP_HELPTRIGGER
Este comando retorna o nome das triggers existentes em uma tabela. A sintaxe para este comando a
seguinte:
USE NwindAccess
GO
exec sp_helptrigger Clientes
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.
6160000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ALTER TABLE nome_da_tabela
DISBLE TRIGGER nome_da_trigger
USE NwindAccess
GO
ALTER TABLE Clientes
DISABLE TRIGGER tg_NoAlteraInsereCliente
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.
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:
Utilizando subconsultas.
Curso Completo0000617
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
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:
6180000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
O resultado parcial, da execuo deste comando, indicado na listagem a seguir:
Observe que, para cada pedido, aparecem tantas linhas quantos forem os itens do pedido.
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:
Curso Completo0000619
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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
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:
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).
6200000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Campo Tabela
CdigoDoCliente Clientes
NomeDaEmpresa Clientes
NmeroDoPedido Pedidos
DataDoPedido Pedidos
TotalPedido ([Quantidade]*[PreoUnitrio])*(1-[Desconto]) da tabela Detalhes do pedido.
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.
Curso Completo0000621
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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]
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:
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].
6220000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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.
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.
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:
Observe a subconsulta:
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:
Curso Completo0000623
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Mais uma vez vamos utilizar um exemplo para ilustrar este conceito.
6240000Curso Completo
CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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]
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.
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
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
Curso Completo0000625
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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.
6260000Curso Completo
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Captulo 11
DESENVOLVENDO APLICAES QUE
ACESSAM DADOS NO SQL SERVER 2005
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
NOTA
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).
6280000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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
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.
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
Curso Completo0000629
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
6300000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000631
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
6320000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
Curso Completo0000633
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
6340000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
(*) 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.
Curso Completo0000635
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
NOTA
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.
6360000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
Curso Completo0000637
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
7. Digite LivroSQL2005, conforme indicado pela Figura 11.8. D um clique no boto Avanar.
6380000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Observe que um novo diretrio virtual chamado LivroSQL2005 j aparece como parte integrante Site
da Web Padro.
Curso Completo0000639
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
6400000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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).
NOTA
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.
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.
Curso Completo0000641
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
6420000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000643
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
NOTA
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.
6440000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
Para maiores informaes sobre os diferentes tipos de DSN consulte o site http://msdn.microsoft.com.
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.
Curso Completo0000645
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
5. D um clique no boto Concluir. aberta a janela Configurar ODBC para Microsoft Access,
conforme indicado na Figura 11.17.
Nesta janela, devemos fornecer diversas informaes, tais como o nome para a fonte ODBC, a localizao
do arquivo .mdb, etc.
6460000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
6. No campo Nome da fonte de dados, digite nwind.
A janela Configurar ODBC para Microsoft Access deve estar conforme indicado na Figura 11.18.
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.
Curso Completo0000647
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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.
NOTA
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:
NOTA
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.
6480000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000649
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
Se devemos utilizar as configuraes regionais, tais como hora, data e formato para nmeros
em geral e para valores monetrios.
6500000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Curso Completo0000651
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
6520000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
Agora que j sabemos um pouco sobre ODBC, vamos falar sobre a dobradinha ADO/OLE DB.
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.
OLE DB
OLE DB Providers
Curso Completo0000653
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
OLE DB
OLE DB Providers
6540000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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
NOTA
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.
Curso Completo0000655
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
6560000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
NOTA
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.
Curso Completo0000657
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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>
NOTA
No digite o nmero das linhas. A numerao apenas aparece na listagem, para servir como referncia na hora de explicarmos o cdigo ASP.
6580000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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.
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.
Curso Completo0000659
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
http://www.abc.com/cep.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.
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,
6600000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
O cdigo a seguir cria uma conexo com a fonte ODBC nwind criada anteriormente:
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.
NOTA
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.
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:
Curso Completo0000661
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Na Tabela 11.2, temos uma breve descrio dos principais mtodos do objeto Connection.
Mtodo Descrio
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.
continua
6620000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
continuao
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.
Na Tabela 11.4, temos uma breve descrio dos principais eventos do objeto Connection.
Evento Descrio
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?
Curso Completo0000663
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
A resposta sim; perfeitamente possvel, e para isto basta criar um objeto Connection e configurar
corretamente a sua propriedade ConnectionString.
Provedor
Nome do usurio
Senha do usurio
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.
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;
NOTA
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.
6640000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Vamos configurar a propriedade ConnectionString para estabelecer uma conexo com um Banco de
Dados do Microsoft Access. Para tal, devemos configurar os parmetros indicados na Tabela 11.5.
Tabela 11.5 Definindo a propriedade ConnectionString para uma fonte do Microsoft Access.
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 .
Por padro, o OLE DB Provider para Microsoft Access (tambm chamado de Jet OLE DB Provider) abre o Banco de Dados com permisso de
NOTA
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.
NOTA
Utilizamos os nmeros de linha apenas para referncia. Quando criamos nossas pginas ASP, no devemos utilizar nmeros de linhas.
Curso Completo0000665
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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
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 .
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.
6660000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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.
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)
17 conn.ConnectionString = PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SQL2005 ;Initial Catalog=Northwind;
User ID=sa;Password=abc123"
18 conn.Open
34 %>
35 <P>
Curso Completo0000667
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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 <%
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>
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.
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.
6680000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SQL2005;
Initial Catalog=Northwind;
User ID=sa;Password=abc123
Tabela 11.7 Parmetros para a string de conexo com o servidor SQL Server 2005.
Provider SQLOLEDB
Data Source ou Server SERVIDOR\SRVINST01
Initial Catalog/Database Northwind
User ID ou uid sa
Password ou pwd senha123
SERVIDOR\SQL2005
Curso Completo0000669
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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.
A seguir, temos um exemplo de uma conexo com um Banco de Dados, utilizando a propriedade
ConnectionString:
6700000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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.
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.
Curso Completo0000671
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
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:
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.
6720000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Cargo (CargoDoContato).
Endereo (Endereo).
Telefone (Telefone).
NOTA
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.
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.
Curso Completo0000673
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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.
6 <BODY>
7 <H1>
8 <FONT color=navy>Listagem de Clientes !!!</FONT>
9 </H1>
10 <%
17 conn.Open nwind
6740000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
38 %>
39 <P>
40 <HR>
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 <%
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.
Curso Completo0000675
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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
6760000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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.
Curso Completo0000677
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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>
<%=Clientes.Fields(CdigoDoCliente)%>
6780000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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?
Curso Completo0000679
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
Considere o exemplo:
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.
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.
6800000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Este exemplo cria um RecordSet chamado Clientes e define um cursor do tipo Static.
Curso Completo0000681
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.Open inst_sql, conn, 3, 3
%>
<%
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
%>
<%
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
6820000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
%>
NOTA
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.
<%
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.
<%
inst_sql=Select * from Clientes
Set Clientes = Server.CreateObject(ADODB.Recordset)
Clientes.CursorLocation = 2
Clientes.Open inst_sql, conn, 3, 3
%>
Curso Completo0000683
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
6840000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
%>
NOTA
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.
<%
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.
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.
continua
Curso Completo0000685
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
continuao
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.
6860000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela 11.14 Principais mtodos do objeto RecordSet.
Mtodo Descrio
AddNew Utilizado para adicionar um novo registro em um RecordSet que seja atualizvel.
Cancel Cancela a execuo de uma operao Open assncrona.
CancelBatch Cancela uma operao de atualizao em batch.
CancelUpdate Cancela qualquer alterao feita no registro corrente, ou alteraes feitas em um
novo registro antes da chamada ao mtodo Update.
Clone Cria uma cpia do objeto RecordSet.
Close Fecha o objeto RecordSet e todos os objetos dele dependentes.
Delete Elimina o registro corrente ou um grupo de registros selecionados.
Find Pesquisa no RecordSet por um registro que atende um critrio especificado.
GetRows Retorna registros de um RecordSet e os armazena em um array.
GetString Retorna todo o RecordSet como uma string.
Move Movimenta o indicador de registro a partir de uma posio especificada um
determinado nmero de registros. Por exemplo, posso movimentar o indicador dez
registros a partir do registro 10, com isso o indicador fica no registro 20.
MoveFirst Movimenta o indicador para o primeiro registro.
MoveLast Movimenta o indicador para o ltimo registro.
MoveNext Movimenta o indicador para o prximo registro.
MovePrevious Movimenta o indicador para o registro anterior.
Open Abre o objeto RecordSet.
Requery Atualiza o conjunto de registros do RecordSet, executando novamente a consulta
que deu origem ao RecordSet.
Resync Atualiza os dados do RecordSet, buscando os dados a partir do Banco de Dados.
Save Salva o contedo do RecordSet em um arquivo.
Update Salva quaisquer alteraes que tenham sido feitas para o objeto RecordSet.
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.
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.
Curso Completo0000687
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Eu, por exemplo, utilizo uma aplicao deste tipo para fazer a avaliao dos treinamentos que ministro em todo o pas. Ao final do treinamento
NOTA
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
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>
24 <TR>
25 <TD>Cdigo:</TD>
6880000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
26 <TD><INPUT id=CustomerID maxLength=50 name=CustomerID size=35>
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.>
Curso Completo0000689
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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>
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.
6900000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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)
Curso Completo0000691
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
22 **************************************************
23 Inicia a verificao para saber se todos
24 os campos obrigatrios foram preenchidos.
28 Codigo = Request.Form(CustomerID)
29 Nome = Request.Form(CompanyName)
30 Contato = Request.Form(ContactName)
31 Cargo = Request.Form(ContactTitle)
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
6920000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
98 If faltou_codigo=Sim Then
99 Response.Write <B>O campo Cdigo deve ser preenchido.</B> <br>
100 End If
110 %>
111 <%
112 Comeo a reenviar o formulrio para o usurio, utilizando Response.Write.
116 %>
Curso Completo0000693
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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>
6940000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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>
180 %>
181 </BODY>
182 </HTML>
NOTA
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.
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
Curso Completo0000695
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Na Figura 11.37, o usurio preencheu alguns campos, porm no preencheu os campos obrigatrios
Contato e Cargo.
6960000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000697
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
6980000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Figura 11.41 Os dados enviados pela pgina ASP foram gravados na tabela Customers.
Localizar um registro.
Editar um registro.
Excluir um registro.
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
Curso Completo0000699
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
com os campos OrderID, OrderDate, ShipCity e ShipCountry para todos os pedidos do pas selecionado
na pgina ListaPaises.asp.
6 <BODY>
7 <%
11 Set conn=Server.CreateObject(ADODB.Connection)
14 conn.ConnectionString = PROVIDER=SQLOLEDB;
Data Source=SERVIDOR\SQL2005;Initial Catalog=Northwind;
User ID=sa;Password=abc123
15 conn.Open
24 %>
29 <%
7000000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
36 Paises.MoveNext
37 Loop
38 %>
39 </SELECT>
40 <BR>
41 <HR>
44 </BODY>
45 </HTML>
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:
Curso Completo0000701
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
31 %>
36 <%
7020000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
46 Response.Write > & Paises.Fields(ShipCountry)& </OPTION>
47 Paises.MoveNext
48 Loop
49 %>
50 </SELECT>
51
52 <HR>
54 </FORM>
55 <%
57 %>
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 <%
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>
Curso Completo0000703
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
7040000Curso Completo
CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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).
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.
Curso Completo0000705
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
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.
7060000Curso Completo
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
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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.
www.xml.org.
www.wdvl.com/Software/XML.
7080000Curso Completo
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!!!
www.w3.org/xml.
www.internet.com.
xml101.com.
www.xmlpitstop.com/.
www.xml.com.
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.
NOTA
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
Curso Completo0000709
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
7100000Curso Completo
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!!!
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.
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.
Curso Completo0000711
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
7120000Curso Completo
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!!!
filtragem e ordenao e assim por diante. Ao fazermos alteraes neste modo, o Microsoft Access altera
o comando SQL para refletir as mudanas efetuadas.
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 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.
Curso Completo0000713
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
7140000Curso Completo
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!!!
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.
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
Curso Completo0000715
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
7160000Curso Completo
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!!!
NOTA
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.
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.
Curso Completo0000717
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
7180000Curso Completo
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!!!
Curso Completo0000719
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
7200000Curso Completo
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!!!
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.
Podemos fazer com que um mdulo seja executado em resposta a um evento de um formulrio ou de
um relatrio.
Curso Completo0000721
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
Cada uma destas abordagens tem suas vantagens, desvantagens e se aplica em situaes especficas.
Vamos estud-las individualmente.
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.
7220000Curso Completo
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!!!
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.
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.
Curso Completo0000723
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
7240000Curso Completo
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!!!
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.
8. Na lista Server, selecione o nome do Servidor SQL a ser utilizado. No nosso exemplo,
SERVIDOR\SQL2005-06-11.
Curso Completo0000725
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Se devemos utilizar as configuraes regionais tais como hora, data e formato para nmeros
em geral e para valores monetrios.
7260000Curso Completo
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!!!
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.
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.
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.
Para importar as tabelas do Banco de Dados pubs, de SERVIDOR\SQL2005, siga os passos indicados a seguir.
Curso Completo0000727
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
1. Estando com o Microsoft Access aberto e com o arquivo pubs.mdb carregado, selecione o
seguinte comando: Arquivo -> Obter dados externos -> Importar.
7280000Curso Completo
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!!!
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.
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.
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.
Curso Completo0000729
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
7300000Curso Completo
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!!!
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
NOTA
para Vrios ou do tipo Um para Um, ter que fazer isso manualmente. Para definir relacionamentos no Microsoft Access, utilizamos o
comando Ferramentas -> Relacionamentos.
Curso Completo0000731
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
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.
7320000Curso Completo
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!!!
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.
Curso Completo0000733
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
7340000Curso Completo
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!!!
Figura 12.29 Definindo uma chave primria composta por dois campos.
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.
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.
Curso Completo0000735
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
Procedimento 2: Para criar a consulta Relao de Pedidos, a partir do SQL, siga os passos indicados a seguir:
7360000Curso Completo
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!!!
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.
A janela Mostrar tabela ser fechada e voc estar no modo estrutura para a criao de uma nova
consulta.
NOTA
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.
Curso Completo0000737
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
7380000Curso Completo
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!!!
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.
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.
Curso Completo0000739
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
7400000Curso Completo
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!!!
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.
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.
Curso Completo0000741
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
7420000Curso Completo
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!!!
24. Para executar a consulta, selecione o comando Consulta -> Executar, ou d um clique no boto
Executar (boto com uma exclamao vermelha).
Curso Completo0000743
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
25. Para voc ter uma idia do comando SQL associado consulta, selecione o comando Exibir ->
Modo SQL. Dever ser exibido o seguinte comando:
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.
Neste tpico procurei mostrar algumas maneiras de acessar os dados do SQL Server 2005 de dentro do Microsoft Access. Falar sobre o
NOTA
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.
METODOLOGIA
Apresentao dos passos necessrios para a configurao e acesso aos dados do servidor SQL Server 2005 atravs do navegador.
7440000Curso Completo
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!!!
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.
Acessar diretamente uma tabela do Banco de Dados. Neste caso, a URL deve incluir um nome
virtual do tipo dbobject. Veremos exemplos mais adiante.
NOTA
URL Uniform Resource Locattor nada mais do que um endereo da Web. Por exemplo: http:www.microsoft.com/windows2000/
library/default.asp uma URL.
Curso Completo0000745
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Exemplo: Criar um diretrio virtual chamado NorthwindSQL, o qual associado ao Banco de Dados
Northwind, da instncia SERVIDOR\SQL2005.
7460000Curso Completo
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!!!
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.
Figura 12.42 O console IIS Virtual Directory Management for SQL Server.
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.
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.
Curso Completo0000747
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
7480000Curso Completo
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!!!
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.
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.
Curso Completo0000749
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
16. Clique em New virtual name. No lado direito voc define as opes para o novo nome virtual
que est sendo criado.
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.
7500000Curso Completo
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!!!
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.
Curso Completo0000751
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
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:
7520000Curso Completo
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!!!
<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:
Alterando um pouco o endereo, podemos ordenar o resultado pela data do pedido, isto , pelo campo
OrderDate
Ser que podemos utilizar uma clusula Join? A melhor maneira de descobrir tentando. Tente utilizar
o seguinte endereo:
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:
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:
Curso Completo0000753
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
<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.
7540000Curso Completo
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!!!
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:
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.
Curso Completo0000755
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
7560000Curso Completo
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!!!
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
Curso Completo0000757
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
7580000Curso Completo
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
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
metadata
Assemblies
Web Services
Os servidores .NET
ADO.NET
7600000Curso Completo
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!!!
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
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
Curso Completo0000761
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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.
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.
7620000Curso Completo
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!!!
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.
www.validacao.com
INTERNET
www.minhaempresa.com
Oferece um Web Service
com cotaes atualizadas
Criamos uma pgina ASP.NET que utili-
de diversas moedas.
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 www.cotacoes.com
est no servidor www.cotacoes.com.
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:
Curso Completo0000763
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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
7640000Curso Completo
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!!!
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
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.
Curso Completo0000765
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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).
NOTA
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
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.
7660000Curso Completo
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!!!
CLR
COMMON LANGUAGE RUNTIME
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.
Clipper
Basic
C Turbo C
C++
Curso Completo0000767
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Com o lanamento do Visual Basic 1.0 teve incio a era das ferramentas grficas para desenvolvimento
de programas para o ambiente Windows.
Porm o modelo de programao para o Windows comeou a apresentar uma srie de inconvenientes.
Vamos falar destes inconvenientes, atravs de exemplos:
7680000Curso Completo
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!!!
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.
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.
NOTA
Para uma descrio detalhada do modelo de duas camadas e de seus problemas, consulte o Captulo 2.
Curso Completo0000769
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Servidor de Arquivos Banco de Dados Outros Servidores
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:
7700000Curso Completo
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!!!
NOTA
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.
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.
Curso Completo0000771
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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.
7720000Curso Completo
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!!!
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.
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+.
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.
C++.NET
C#
NOTA
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
Curso Completo0000773
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
7740000Curso Completo
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!!!
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.
NOTA
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.
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
NOTA
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.
Curso Completo0000775
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Para executar o nosso programa, basta digitar primeiroprograma e pressinar Enter. O programa ser
executado, conforme indicado na Figura 13.8:
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.
7760000Curso Completo
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!!!
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.
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.
NOTA
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.
Curso Completo0000777
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
Informaes sobre todas as classes ou componentes, dos quais o componente depende para
funcionar corretamente.
Tipos disponibilizados (exportados) pelo componente.
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.
7780000Curso Completo
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!!!
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.
Manifesto
Um conjunto de mdulos.
NOTA
Voc aprender mais detalhes sobre assemblies e seus elementos mais adiante neste captulo, onde apresentarei mais detalhes sobre o CLR
Common Language Runtime.
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.
Curso Completo0000779
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
CLR
COMMON LANGUAGE RUNTIME
7800000Curso Completo
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!!!
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.
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:
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.
Curso Completo0000781
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
ASP.NET
Web Forms:
1. Apresentao
2. Cdigo
CLR
COMMON LANGUAGE RUNTIME
METODOLOGIA
Descrio dos servidores que do suporte ao desenvolvimento de aplicaes .NET.
7820000Curso Completo
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!!!
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:
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:
Curso Completo0000783
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
7840000Curso Completo
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!!!
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
Firewall
Cache de pginas
Maiores informaes e uma verso de avaliao para download podem ser encontradas no seguinte
endereo:
http://www.microsoft.com/isaserver
Maiores informaes e uma verso de avaliao para download podem ser encontradas no seguinte
endereo:
http://www.microsoft.com/servers/miserver/default.htm
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.
Curso Completo0000785
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
ADO
OLE DB
OLE DB Providers
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.
7860000Curso Completo
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!!!
NOTA
DataRelationCollection
Database XML
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.
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.
Curso Completo0000787
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
7880000Curso Completo
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!!!
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.
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.
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.).
Curso Completo0000789
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
CDIGO-FONTE DA APLICAO
(VB.NET, C#, etc.)
MSIL
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.
7900000Curso Completo
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!!!
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.
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.
Curso Completo0000791
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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.
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.
A definio de quais tipos e recursos do assembly podem ser acessados por outros componentes
ou programas.
7920000Curso Completo
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!!!
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.
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.
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 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.
Curso Completo0000793
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
COMPONENTES DO ASSEMBLY
Um assembly esttico formado pelos seguintes componentes:
Cdigo MSIL.
Demais recursos necessrios, como por exemplo arquivos grficos, arquivos de vdeo, etc.
Metadados do
Assembly
Type metadata
Cdigo MSIL
Demais recursos
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:
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.
Outro arquivo o mdulo com funes (Criado em C#) usadas pelo assembly principal.
Um arquivo .bmp.
Um arquivo .jpg.
7940000Curso Completo
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!!!
Cdigo MSIL
File1.bmp
File2.jpg
Recursos:
grficos e outros
Escopo.
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.
Curso Completo0000795
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
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
7960000Curso Completo
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!!!
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.
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:
Configuraes de segurana.
Curso Completo0000797
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.Int32
System.String
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
7980000Curso Completo
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!!!
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.
System.Int32
System.String
System
...
Para uma descrio completa, de todas as classes do Framework .NET, consulte o item .NET Framework Class Library, dentro do tpico .NET
NOTA
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.
Curso Completo0000799
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Vamos fazer uma breve descrio das principais classes do .NET Framework Class Library.
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,
8000000Curso Completo
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!!!
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.
Para que o programador possa utilizar de maneira eficiente estas classes, um bom conhecimento do diretrio em questo exigido.
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
Curso Completo0000801
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
8020000Curso Completo
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!!!
Uma modelagem mais prxima do entendimento do usurio final.
Reutilizao de 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.
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
Curso Completo0000803
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Data de Aniversrio
Nome do Pai
Nome da Me
Nmero da Identidade
Nmero do CPF
Cargo
Salrio
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.
FUNCIONRIO
Propriedades Mtodos
Representam as
Representam as aes.
caractersticas do objeto.
8040000Curso Completo
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!!!
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
Curso Completo0000805
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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.
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.
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.
8060000Curso Completo
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!!!
Para a classe Clientes poderamos definir as seguintes propriedades:
Nome
CPF
RG
Identidade
Endereo
Cidade
CEP
Fone
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.
Clientes
Propriedades Mtodos
Nome Cadastrar
CPF Excluir
RG Atualizar
Identidade
Endereo
Cidade
CEP
Fone
E-mail
Curso Completo0000807
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NumConta
NumAgncia
Limite
Categoria
DefinirLimite
AumentarLimite
BloquearConta
LiberarConta
Juntando as propriedades que foram herdadas da classe pai Clientes, a classe ClienteCorrentista teria
as seguintes propriedades:
8080000Curso Completo
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!!!
Identidade (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:
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.
Curso Completo0000809
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
ClienteCorrentista
Propriedades Mtodos
Nome Cadastrar
CPF Excluir
RG Atualizar
Identidade DefinirLimite
Endereo AumentarLimite
Cidade BloquearConta
CEP LiberarConta
Fone
E-mail
NumConta
NumAgncia
Limite
Categoria
Clientes
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
8100000Curso Completo
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!!!
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
NOTA
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.
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.
Curso Completo0000811
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
8120000Curso Completo
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!!!
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.
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?
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
Curso Completo0000813
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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
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.
8140000Curso Completo
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!!!
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>
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.
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
Curso Completo0000815
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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]);
8160000Curso Completo
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!!!
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:
Curso Completo0000817
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
1. SqlConnection
2. SqlDataAdapter
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();
8180000Curso Completo
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!!!
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.
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);
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);
Curso Completo0000819
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
8200000Curso Completo
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!!!
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.
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.
Curso Completo0000821
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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.
NOTA
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.
8220000Curso Completo
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!!!
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.
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.
authors (autores)
discounts (descontos)
publishers (editoras)
sales (vendas)
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:
Curso Completo0000823
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
8240000Curso Completo
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!!!
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.
Temos duas maneiras diferentes para importar (ou fazer referncia, como preferirem) um namespace,
em uma pgina ASP.NET.
Uma vez feitas as devidas importaes (ou referncias), estamos aptos a utilizar as classes dos namespaces
referenciados.
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.
Curso Completo0000825
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
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.
8260000Curso Completo
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!!!
Na Listagem 13.5 temos o cdigo para o exemplo proposto.
Ao carregar a pgina voc ir obter uma pgina semelhante pgina indicada na Figura 13.28:
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 %>
Curso Completo0000827
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
8280000Curso Completo
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!!!
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.
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.
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:
Mtodo Descrio
Curso Completo0000829
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
8300000Curso Completo
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!!!
Estaremos utilizando a seguinte abordagem:
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.
SQL Server
SqlConnection OleDbConnection
SqlDataAdapter OleDbDataAdapter
DataSet DataSet
Pgina Pgina
ASP.NET que ASP.NET que
exibe os exibe os
dados. dados.
Figura 13.31 Passos para acessar e exibir dados em uma pgina ASP.NET.
Curso Completo0000831
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
importante salientar que esta apenas uma das maneiras de acessarmos dados e exibi-los em uma
pgina ASP.NET.
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.
Na Tabela 13.4 temos uma descrio dos principais mtodos das classes SqlCommand/OleDbCommand:
Mtodo Descrio
8320000Curso Completo
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!!!
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:
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.
Na Tabela 13.6 temos uma descrio dos principais mtodos das classes SqlDataAdapter/
OleDbDataAdapter.
Curso Completo0000833
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela 13.6 Principais mtodos 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.
Na Tabela 13.7 temos uma descrio dos principais eventos das classes SqlDataAdapter/
OleDbDataAdapter.
Evento Descrio
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
8340000Curso Completo
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!!!
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
Na Tabela 13.9 temos uma descrio dos principais mtodos 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.
Curso Completo0000835
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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 Pgina
de Connection DataSet Controle DataGrid ASP.NET
dados
DataAdapter DataView
Na Tabela 13.10 temos uma descrio das principais propriedades da classe DataView:
8360000Curso Completo
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!!!
Tabela 13.10 Principais propriedades 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.
Na Tabela 13.11 temos uma descrio dos principais mtodos da classe DataView:
Mtodo Descrio
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
Curso Completo0000837
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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]);
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();
}
8380000Curso Completo
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!!!
</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>
<BR>
<B>Clique para Classificar ></B></td>
<input type=submit value=Classificar runat=server>
</form>
</body>
</html>
Curso Completo0000839
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
8400000Curso Completo
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!!!
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.
NOTA
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.
Curso Completo0000841
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
/>
8420000Curso Completo
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!!!
NOTA
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.
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.
MeuComando.CommandText=Select CdigoDoFuncionrio,Nome,Sobrenome,Cargo
From Funcionrios;
MeuDataAdapter.Fill(ds,Funcionrios);
Curso Completo0000843
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
// Altero a propriedade CommandText para retornar dados
// da tabela Transportadores.
// Chamo novamente o mtodo Fill.
<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>
8440000Curso Completo
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!!!
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:
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();
MeuComando.Connection = MinhaConexo;
MeuComando.CommandType = CommandType.Text;
Curso Completo0000845
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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();
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();
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.
8460000Curso Completo
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!!!
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.
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.
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
Curso Completo0000847
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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 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
SqlConnection/OleDbConnection
SqlCommand/OleDbCommand
SqlDataAdapter/OleDbDataAdapter
DataSet
DataView
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.
8480000Curso Completo
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!!!
Captulo 14
REPORTING SERVICES O SERVIO DE
RELATRIOS DO SQL SERVER 2005
Curso Completo0000849
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
8500000Curso Completo
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!!!
METODOLOGIA
Apresentao dos elementos que compem o Reporting Services.
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.
Curso Completo0000851
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
8520000Curso Completo
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!!!
NOTA
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,
NOTA
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.
Curso Completo0000853
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
8540000Curso Completo
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!!!
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.
Curso Completo0000855
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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?
8560000Curso Completo
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!!!
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.
NOTA
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.
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.
Curso Completo0000857
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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.
METODOLOGIA
Apresentao dos pr-requisitos para funcionamento do Reporting Services.
8580000Curso Completo
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!!!
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.
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.
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,
Curso Completo0000859
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
8600000Curso Completo
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!!!
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:
Curso Completo0000861
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
8620000Curso Completo
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!!!
Curso Completo0000863
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Segunda etapa: Para definir as chaves primrias e relacionamentos para o banco de dados
NorthwindReport, siga os passos indicados a seguir:
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
8640000Curso Completo
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!!!
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.
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:
Curso Completo0000865
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
8660000Curso Completo
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!!!
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.
METODOLOGIA
Exemplos prticos de criao e utilizao de relatrios.
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.
Curso Completo0000867
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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:
8680000Curso Completo
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!!!
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:
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.
Curso Completo0000869
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
12. Clique no boto Data Links. Ser aberta a janela Data Link Properties, indicada na Figura 14.13:
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.
NOTA
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
8700000Curso Completo
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!!!
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:
Curso Completo0000871
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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
8720000Curso Completo
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!!!
Cidade
Regio
Pas
Telefone
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.
Curso Completo0000873
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
Se voc se sente vontade com os comandos T-SQL, pode digitar o comando diretamente, sem ter que utilizar o Query Builder.
8740000Curso Completo
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!!!
29. Nesta etapa voc pode escolher um, dentre diversos layouts sugeridos. Selecione a opo Bold,
conforme indicado na Figura 14.19:
Curso Completo0000875
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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.
8760000Curso Completo
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!!!
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:
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:
Curso Completo0000877
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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
8780000Curso Completo
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!!!
funcionalidades extendidas. Os programadores podem criar extenses para o Reporting Services, para
permitir que os relatrios sejam exportados para os mais variados formatos.
Agora vamos aprender a publicar o relatrio no IIS, de tal forma que ele possa ser acessado usando o
navegador.
Curso Completo0000879
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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
NOTA
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.
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.
8800000Curso Completo
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!!!
Importante: O relatrio no uma pgina HTML esttica, gerada no momento da criao do relatrio. No mesmo. O relatrio uma pgina
NOTA
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.
Curso Completo0000881
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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
8820000Curso Completo
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!!!
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.
Curso Completo0000883
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Quais as grandezas que esto sendo cruzadas neste relatrio?
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.
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.
8840000Curso Completo
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!!!
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:
Curso Completo0000885
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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.
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])
8860000Curso Completo
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!!!
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.
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.
Curso Completo0000887
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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,
FROM
Pedidos INNER JOIN [Detalhes do Pedido]
ON
Pedidos.NmeroDoPedido = [Detalhes do Pedido].NmeroDoPedido
NOTA
Se voc se sente vontade com os comandos T-SQL, pode digitar o comando diretamente, sem ter que utilizar o Query Builder.
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
8880000Curso Completo
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!!!
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.
Curso Completo0000889
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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
8900000Curso Completo
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!!!
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).
Curso Completo0000891
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
8920000Curso Completo
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!!!
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
DICA
a ser criados, dentro deste mesmo projeto. Em um nico projeto criado com o SQL Server Business Intelligence Development Studio,
possvel criar vrios relatrios.
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
Curso Completo0000893
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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)
NOTA
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.
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:
8940000Curso Completo
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!!!
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
Se voc se sente vontade com os comandos T-SQL, pode digitar o comando diretamente, sem ter que utilizar o Query Builder. Porm
NOTA
observe que medida que as consultas se tornam mais complexas fica bastante difcil a criao dos comandos, manualmente, sem a ajuda
do Query Builder.
Curso Completo0000895
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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).
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:
8960000Curso Completo
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!!!
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:
Curso Completo0000897
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
NOTA
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:
8980000Curso Completo
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!!!
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.
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.
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.
Curso Completo0000899
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
9000000Curso Completo
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!!!
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.
Curso Completo0000901
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Importante: Se deixarmos a listagem assim como est, ser exibido o valor total para cada item de cada pedido. Por exemplo, se um pedido
NOTA
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.
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:
9020000Curso Completo
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!!!
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
NOTA
Se voc se sente vontade com os comandos T-SQL, pode digitar o comando diretamente, sem ter que utilizar o Query Builder.
Curso Completo0000903
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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:
9040000Curso Completo
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!!!
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
NOTA
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:
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:
Curso Completo0000905
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
9060000Curso Completo
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!!!
METODOLOGIA
Apresentao dos elementos que compem o console Reporting Services 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.
Curso Completo0000907
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
9080000Curso Completo
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!!!
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:
Curso Completo0000909
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
9100000Curso Completo
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!!!
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.
Curso Completo0000911
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
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
NOTA
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:
Para encerrar o captulo farei uma descrio detalhada das diferentes edies do SQL Server 2005. Esto
disponveis as seguintes edies:
9140000Curso Completo
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 Developer Edition (32-bits e 64-bits)
METODOLOGIA
Exemplo prtico de criao e administrao de snapshot Databases.
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.
Curso Completo0000915
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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,
9160000Curso Completo
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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 fazer alteraes nas propriedades dos arquivos (primrio, secundrio ou de log)
dos 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.
Curso Completo0000917
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
9180000Curso Completo
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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
NOTA
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.
Curso Completo0000919
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
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:
fundamentel salienter que, uma vez criado, o snapshot uma cpia fiel, somente leitura, do banco de dados original. Voc poder navegar
NOTA
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.
9200000Curso Completo
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
Curso Completo0000921
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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
9220000Curso Completo
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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.
Curso Completo0000923
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
9240000Curso Completo
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
Curso Completo0000925
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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:
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):
9260000Curso Completo
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
Curso Completo0000927
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
9280000Curso Completo
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Um snapshot no pode ser anexado ou desanexado.
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.
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 }
Curso Completo0000929
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
9300000Curso Completo
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Curso Completo0000931
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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:
9320000Curso Completo
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
Curso Completo0000933
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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)),
9340000Curso Completo
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
[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
Curso Completo0000935
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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
9360000Curso Completo
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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,
Curso Completo0000937
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
@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.
METODOLOGIA
Descrio e comparao entre as Edies do SQL Server 2005.
9380000Curso Completo
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
Curso Completo0000939
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
http://www.microsoft.com/sql/2005/productinfo/sql2005features.mspx
9400000Curso Completo
CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
continuao
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:
Curso Completo0000941
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Para encerrar o captulo apresentei uma descrio detalhada das diferentes edies do SQL Server 2005.
Esto disponveis as seguintes edies:
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
9420000Curso Completo
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
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
9440000Curso Completo
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!!!
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.
NOTA
Para maiores informaes sobre segurana no SQL Server 2005, consulte o Captulo 6.
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.
NOTA
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
Curso Completo0000945
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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).
NOTA
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.
SELECT
campo1, campo2, campo3
FROM nome_da_tabela
[WHERE condio ]
[GROUP BY nome_do_campo ]
[HAVING ... ]
ORDER BY... ]
9460000Curso Completo
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!!!
Tabela A.1 Os principais elementos da instruo SELECT.
Elemento Descrio
campo1, campo2, campon Nome dos campos a serem retornados a partir de uma ou mais tabelas.
nome_da_tabela Nome da tabela a partir da qual os dados devem ser recuperados.
WHERE Permite que sejam especificados critrios de pesquisa.
GROUP BY Podemos agrupar os resultados em torno de um ou mais campos de dados. Por exemplo, em
um relatrio de vendas anuais, posso ter os resultados agrupados por ms, com a soma das
vendas do ms logo aps a listagem de vendas daquele ms.
HAVING Especifica critrios para serem utilizados juntamente com Group By. Quando utilizamos Group
By, no podemos utilizar a clusula WHERE para especificar critrios, ao invs disso devemos
utilizar a clusula HAVING.
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.
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
Exemplo 1: Criar uma instruo SQL que retorne os campos OrderID, OrderDate, Freight e ShipCountry
da tabela 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:
Curso Completo0000947
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
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.
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:
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.
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.
9480000Curso Completo
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!!!
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.
Observe a clusula WHERE utilizando o operador de comparao maior do que ( > ) e a classificao
atravs da clusula ORDER BY no campo 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
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.
Curso Completo0000949
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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.
9500000Curso Completo
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!!!
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:
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
Curso Completo0000951
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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:
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
NOTA
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.
NOTA
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.
9520000Curso Completo
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!!!
Exemplo 10: Criar uma instruo SQL que selecione os campos relacionados a seguir.
Alm disso, as tabelas Orders e Order Details esto relacionadas pelo campo OrderID, atravs de um
relacionamento do tipo Um para Vrios.
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:
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:
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.
Curso Completo0000953
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Aps adicionar a tabela Products e substituir o campo ProductID pelo campo ProductName, a nossa
instruo SQL deve ficar conforme indicado no seguinte exemplo:
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.
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.
9540000Curso Completo
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!!!
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.
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
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.
Adicionamos uma clusula WHERE, para atualizar apenas os registros cujo PreoUnitrio seja maior
ou igual a R$ 20,00.
Curso Completo0000955
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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.
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.
9560000Curso Completo
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!!!
Vamos analisar alguns exemplos.
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
NOTA
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.
Exemplo 1: Criar uma instruo SQL que elimine todos os pedidos da tabela Orders em que o campo
ShipCountry seja Germany (Alemanha).
Neste item, apresentamos uma breve introduo linguagem T-SQL, que no Microsoft SQL Server
chamada de Transact-SQL.
Curso Completo0000957
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Criao de views.
Criao de triggers.
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.
9580000Curso Completo
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!!!
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.
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.
*************************
Definio do Arquivo Primrio
*************************
(NAME= BDExemplo_prim,
FILENAME = C:\livrosql\BDExemplo\BDExemplo-prim.mdf ,
SIZE= 7MB,
MAXSIZE= 25MB,
FILEGROWTH = 1MB),
Curso Completo0000959
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
***************************
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
***************************************
NOTA
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.
(
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
A ttulo de exemplo, vamos criar a tabela Produtos, no Banco de Dados BDExemplo criado anteriormente,
com os campos indicados na Tabela A.6.
9600000Curso Completo
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!!!
Tabela A.6 A tabela Produtos.
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)
Agora, vamos criar esta tabela no Banco de Dados BDExemplo. Vamos utilizar, para isso, o comando
CREATE TABLE indicado a seguir:
USE BDExemplo
(
CdigoProduto int,
NomeProduto char(50),
CdigoFornecedor int,
CdigoCategoria int,
PreoUnitrio money,
UnidadesEstoque int,
EstoqueMnimo int,
Descontinuado bit
)
NOTA
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:
Curso Completo0000961
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Nome: CityIndex
Colunas: City
Vamos a um exemplo um pouco mais elaborado. Qual seria o comando para criar o seguinte ndice?
Nome: PK_Customers
Colunas: CustomerID
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:
9620000Curso Completo
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!!!
Nome: EnderecoIndex.
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:
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:
Curso Completo0000963
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Tabela Customers do Banco de Dados Northwind.
Nome: CountryIndex.
Colunas: Country.
Exemplo:
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)
Para maiores informaes sobre os tipos de ndices e a criao de ndices consulte o Captulo 4.
CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] ) ]
[ WITH < view_attribute > [ ,...n ] ]
AS
select_statement
WITH CHECK OPTION ]
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:
9640000Curso Completo
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!!!
USE Northwind
GO
CREATE VIEW Pedidos_Teste
AS
SELECT OrderID, OrderDate, ShipCountry
FROM Orders
NOTA
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:
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:
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:
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
Curso Completo0000965
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
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)
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.
9660000Curso Completo
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!!!
NOTA
Utilizei o prefixo usp_ para indicar user stored procedure. Porm, esta no uma conveno obrigatria, apenas uma recomendao.
USE Northwind
GO
CREATE PROCEDURE usp_PedidosLondon
AS
SELECT * FROM Orders
WHERE ShipCity = London
Agora podemos executar o stored procedure sempre que for necessrio. Para execut-lo, execute o
seguinte comando:
exec usp_PedidosLondon
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
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.
Curso Completo0000967
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Para criar um stored procedure, com um ou mais parmetros de entrada, utilizamos a seguinte sintaxe:
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.
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.
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:
Para executar o stored procedure usp_Pedidos_Cidade, passando Bruxelles como parmetro, utilizamos
o seguinte comando:
9680000Curso Completo
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!!!
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.
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.
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:
<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:
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:
Observe que a mensagem informa que esperado um parmetro chamado pas (@pas) e que este no
foi informado.
Curso Completo0000969
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
iremos obter a seguinte mensagem de erro:
Para maiores informaes sobre a criao e o conceito de stored procedures, consulte o Captulo 10.
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
9700000Curso Completo
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!!!
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.
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
NOTA
Observe a utilizao da funo EXISTS (comando SQL). Esta funo retorna verdadeiro, caso o comando SQL retorne algum registro e falso,
caso contrrio.
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)
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:
Curso Completo0000971
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
USE Northwind
GO
ALTER TRIGGER nome_trigger
ON nome_tabela
FOR { INSERT | UPDATE | DELETE }
AS
comando 1
comando 2
comando 3
...
comando n
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.
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)
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)
9720000Curso Completo
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!!!
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.
NOTA
Para detalhes tericos e exemplos prticos sobre triggers, consulte o Captulo 10.
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.
ou
Por exemplo, para adicionarmos o usurio chico, do domnio GROZA, utilizamos o seguinte comando:
ou
sp_grantlogin no pode ser executado como parte de uma transao definida pelo usurio ou
por um aplicativo que o usurio est utilizando.
Curso Completo0000973
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
ou
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
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.
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
9740000Curso Completo
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!!!
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.
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.
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
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:
Agora vamos adicionar um usurio chamado luciano, com uma senha nene e associado ao Banco de
Dados Clientes:
Curso Completo0000975
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
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.
Por exemplo, para excluirmos o usurio luciano, anteriormente adicionado, podemos utilizar o seguinte comando:
____________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.
9760000Curso Completo
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!!!
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.
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:
Para alterar o Banco de Dados padro para os usurios do domnio GROZA, digite os seguintes comandos:
Pronto, os logins foram adicionados e o Banco de Dados padro,s alterado para pubs.
Por exemplo, para adicionar uma Role chamada teste, cujo dono seja o usurio chico, utilize o seguinte comando:
Curso Completo0000977
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
NOTA
Se no for especificado o parmetro dono, o dono da role ser o usurio dbo database owner.
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.
Por exemplo, para excluir a role chamada teste, criada anteriormente, utilize o seguinte comando:
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
9780000Curso Completo
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!!!
Para criar as roles da Tabela A.9, faa o seguinte:
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
Curso Completo0000979
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
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
.NET FRAMEWORK CLASS LIBRARY, 797 Criando conexes, 825 Conceito, 45
Conceito, 797 Data Adapter, 832 Dados, 46
Estrutura, 799 DataSet, 834 Exemplo, 45
Introduo, 797 DataView, 836 Lgica, 46
O que , 797 Estrutura, 786 Problemas, 46
Principais Classes, 800 Exemplo prtico, 826 Vantagens, 46
.NET, 762 Introduo, 824 Aplicaes em 4 camadas, 56
.NET FRAMEWORK CLASS Principais classes, 824 Apresentao, 47
LIBRARY, 766 Versus ADO, 822 Cliente, 46
CLR, 764 AdventureWorks, 118 Conceito, 46
Conceito, 762 Agendamento de Tarefas, 269 Dados, 47
Introduo, 762 Conceito, 269 Exemplo, 47
Web Services, 762 Criao de Jobs, 271 Lgica, 47
Definir agendamento, 275 Application Center 2000, 784
Executar o Job, 277 Armazenamento bsico, 121
A Histrico de execuo, 278 Boot partition, 123
Access, 709 Introduo, 269 Definio, 122
Acessar dados do SQL Server, 722 Job, 269 Partio estendida, 122
Anexar tabelas, 731 Vrios passos, 274 Partio primria, 122
Banco de dados, 709 Agendamento do backup, 250 Parties, 122
Consultas, 711 Tarefa agendada, 253 Stripe set, 124
Consultas usando dados do SQL Agentes de Replicao, 493 System partition, 123
Server, 736 Criados pela replicao, 493 Volume set, 124
Estrutura do banco, 709 Alertas, 433 Armazenamento dinmico, 121
Exemplo prtico, 736 Conceito, 433 Conceito, 125
Fonte ODBC, 723 Exemplo prtico, 433 Definio, 122
Formulrios, 713 Introduo, 433 RAID-0, 125
Importar dados do SQL Server, 722 ALTER DATABASE, 151 RAID-5, 125
Macros, 720 Exemplo prtico, 151 Volume espelhado, 125
Mdulos, 721 Sintaxe, 151 Volume expandido, 125
Pginas, 716 ALTER INDEX, 378 Volume simples, 125
Relatrios, 715 Exemplos, 378 Arquitetura de aplicaes, 43
Tabelas, 710 Sintaxe, 378 ASP, 658
Acessar dados via Browser, 746 ALTER TABLE, 183 Como funciona, 659
Configuraes necessrias, 746 Exemplo prtico, 184 Conceito, 658
Configurando o IIS, 746 Opes, 184 Introduo, 658
Exemplo prtico, 752 Sintaxe, 184 Primeiro exemplo, 658
Acesso HTTP SOAP Nativo, 49 Alterao de tabelas, 182 ASP.NET, 812
ADD CONSTRAINT, 536 Comando ALTER TABLE, 183 Conexo com o SQL Server, 814
ADO, 642 Excluir campos, 183 Introduo, 812
Command, 656 Exemplo prtico, 182 Novidades do, 812
Como funciona, 653 Alterao do banco de dados, 150 O que , 812
Conceito, 653 Comando ALTER DATABASE, 151 Primeiro exemplo, 814
Connection, 656 Alterar tabela, 170 Suporte a mltiplas linguagens, 813
Definio, 653 Analysis Services, 84 Assemblies, 792
Estrutura, 653 Aplicaes em 2 camadas, 44 Componentes, 794
Modelo de objetos, 655 Apresentao, 44 Conceito, 792
O que , 653 Conceito, 44 Estrutura dos, 794
Record, 656 Exemplo, 44 Funes dos, 793
RecordSet, 656 Lgica do negcio, 44 Introduo, 792
Stream, 656 Problemas, 44 Manifesto, 795
ADO.NET, 785 TCO, 44 O que so, 792
Conceito, 785 Aplicaes em 3 camadas, 45 Atomicidade, 225
Conectando o SQL Server, 826 Apresentao, 46 ATTACH_REBUILD_LOG, 51
9820000Curso Completo
NDICE REMISSIVO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Curso Completo0000983
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
DBCC USEROPTIONS, 385 Guia Misc Server Settings, 114 Desabilitando, 547
Definio, 139 Guia Permissions, 114 DROP CONSTRAINT, 547
DENY, 357 Guia Processors, 111 Excluindo, 547
DROP CONSTRAINT, 547 Guia Security, 112 Exemplo prtico, 536, 548
DROP DATABASE, 154 Parmetros de inicializao, 100 Foreign Key Constraints, 542
DROP INDEX, 215 Running Values, 111 Habilitando, 547
DROP TABLE, 195 Startup Parameters, 110 Introduo, 534
Executar comandos, 141 Connection, 661 Not Null Constraint, 536
Exemplo prtico, 141 Attributes, 661 Primary Key Constraints, 540
GRANT, 348, 356 BeginTrans, 661 Tipos de, 535
Janela de execuo de comandos, 140 BeginTransComplete, 662 Unique Constraints, 542
RESTORE DATABASE, 263 Cancel, 661 Verificao de dados com, 546
RESTORE LOG, 263 Close, 661 Constraints, 534
REVOKE, 350 CommandTimeOut, 661 Check Constraints, 538
sp_addlogin, 320 CommitTrans, 661 Comando Alter Table Add
sp_addrole, 328 CommitTransComplete, 662 Contas de usurios no Windows, 298
sp_addrolemember, 341 Conceito, 661 Conceito, 298
sp_addrolemember, 341 ConnectComplete, 662 Criao de contas, 301
sp_addsrvrolemember, 340 ConnectionString, 664 Exemplo prtico, 301
sp_addumpdevice, 241 ConnectionTimeOut, 661 Padro de nomes, 300
sp_denylogin, 320 Criando conexes ODBC, 660 CREATE DATABASE, 143
SP_DETACH_DB, 929 Criar conexes OLE-DB, 662 Exemplo com Filegroups, 147
sp_dropdevice, 242 DefaultDatabase, 662 Exemplo prtico, 145
sp_droplogin, 321 Disconnect, 662 Opes importantes, 147
sp_droprole, 328 Errors, 662 Sintaxe, 144
sp_dropsrvrolemember, 340 Eventos, 661 CREATE INDEX, 209
sp_grantdbaccess, 334 Execute, 661 Dicas, 211
sp_grantlogin, 318 ExecuteComplete, 662 Exemplo prtico, 210
sp_help, 215 Exemplo prtico, 664 Sintaxe, 209
sp_helpindex, 214 InfoMessage, 662 CREATE PROCEDURE, 586
sp_helprole, 329 IsolationLevel, 662 Exemplos, 587
SP_HELPTEXT, 602 Mtodos, 661 Sintaxe, 586
SP_HELPTRIGGER, 616 Mode, 662 CREATE TABLE, 178
sp_revokedbaccess, 336 Open, 661 Exemplo prtico, 178
sp_revokelogin, 319 OpenSchema, 661 Opes, 178
sp_spaceused, 214 Properties, 662 Sintaxe, 178
SP_STORED_PROCEDURES, 603 Propriedades, 661 CREATE TRIGGUER, 607
Command, 656 Provider, 662 Exemplos, 607
Commerce Server 2000, 784 RollBackTrans, 661 Sintaxe, 607
COMMON TYPE SYSTEM, 796 RollBackTransComplete, 662 CREATE VIEW, 574
Classificao de tipos, 796 State, 662 Exemplos, 575
Conceito, 796 Utilizao, 661 Sintaxe, 574
Introduo, 796 Version, 662 Criao de tabelas, 163
O que , 796 WillConnect, 662 Definindo campos, 165
Componentes, 772 WillExecute, 662 Exemplo prtico, 163
Configuraes Utilizadas, 37 Consistncia, 225 Propriedades dos campos, 166
Configurar opes da instncia, 109 Console desempenho, 407 Criar um banco de dados, 130
Configuraes de memria, 110 Console SQL Computer Manager, 95 Arquivos de dados, 131
Configured values, 111 Aes disponveis, 96 Comando CREATE DATABASE, 143
Exemplo prtico, 109 Conceito, 95 Definindo configuraes, 131
Guia Advanced, 114 Tela inicial, 96 Exemplo prtico, 130
Guia Connections, 113 Constraint, 536 Nome do banco, 132
Guia Database settings, 113 Conceito, 534 Opes de autocrescimento, 132
Guia General, 109 Criando Constraints, 536 Usando comandos T-SQL, 143
Guia Memory, 110 Default Constraints, 537 CRM, 40
9840000Curso Completo
NDICE REMISSIVO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Cursores, 680 Exemplo prtico, 922 Caminho padro, 70
Conceito, 680 Introduo, 921 Estrutura padro de pastas, 69
Localizao do cursor, 682 DROP CONSTRAINT, 547 Pasta padro, 69
O que so, 680 DROP DATABASE, 154 Viso geral, 69
Tipos de cursores, 681 Exemplo prtico, 154 Exchange Server 2003, 783
DROP INDEX, 215 Excluir banco de dados, 153
Exemplo prtico, 215 Comando DROP DATABASE, 154
D Sintaxe, 215 Excluir tabelas, 194
Databases Snapshots, 52 DROP TABLE, 195 Comando DROP TABLE, 195
DataGrid, 841 Exemplo prtico, 195 Exemplo prtico, 194
Mltiplos conjuntos de dados, 843 Sintaxe, 195
Paginao, 842 DTS, 389
DB2 IBM, 5 Como funciona, 389 F
DBCC CHECKDB, 386 Conceito, 389 Filegroups, 127
Exemplos, 386 Data Source, 393 Conceito, 127
Sintaxe, 386 Definir destino, 394 Default Filegroup, 128
DBCC CHECKTABLE, 387 Definir origem, 393 Definio, 127
Exemplos, 387 Exemplo prtico, 390 Primary filegroup, 128
Sintaxe, 387 Exportando dados, 398 User-defined filegroups, 128
DBCC DBREINDEX, 376 Formatos suportados, 393 FILLFACTOR OPTION, 212
Exemplos, 377 Importar dados do Access, 390 Definio, 212
Sintaxe, 377 Introduo, 389 Importncia, 212
DBCC DBREPAIR, 378 Durabilidade, 225 Valor default, 213
DBCC HELP, 388 Framework .NET, 762
Exemplos, 388 Ver .NET, 762
Sintaxe, 388 E FRAMEWORK CLASS LIBRARY, 767
DBCC INDEXDEFRAG, 379 Edies do SQL Server 2005, 55, 938 Inferno das DLLs, 779
Exemplos, 379 Comparao entre as edies, 940 Linguagens .NET, 773
Sintaxe, 379 Cuidados antes da instalao, 57 Metadata, 777
DBCC SHOWCONTIG, 383 Developers Edition, 55 O que , 766
Exemplos, 383 Edies do Windows, 57 Web Forms, 781
Opes, 384 Enterprise Edition, 55 Windows Forms, 780
Sintaxe, 383 Express Edition, 55 Funo Year, 26
DBCC SHRINKDATABASE, 379 Mobile Edition, 56 Funes definidas pelo Usurio, 49
Exemplos, 380 SQL Server 2005 Enterprise Edition, 939
Sintaxe, 380 SQL Server 2005 Express Edition, 940
DBCC SHRINKFILE, 381 SQL Server 2005 Standard Edition, 939 G
Exemplos, 381 SQL Server 2005 Workgroup GRANT, 348
Sintaxe, 381 Edition, 939 Exemplos prticos, 348
DBCC UPDATEUSAGE, 382 Edies do Windows, 57 Sintaxe, 348
Exemplos, 382 Estrutura de pastas do, 69 GRANT, 356
Sintaxe, 382 Servios do, 80 Exemplos prticos, 356
DBCC USEROPTIONS, 385 Suporte a edies do SQL Server Sintaxe, 356
Exemplos, 385 2005, 57
Grupos de usurios no Windows, 303
Sintaxe, 383 Entidades e Atributos, 6
Adicionar usurios ao grupo, 307
Dedicated Administrator Connection, 52 Conceito, 7
Built-in groups, 310
DENY, 357 Exemplo, 7
Conceito, 303
Exemplos prticos, 357 Projeto das, 8
Criao de grupos, 306
Sintaxe, 357 Regra nmero 1, 9
Definies, 304
Diagrama entidades x relacionamentos, 21 Estrutura de armazenamento, 126
Grupos de distribuio, 305
Exemplo, 21 Arquivo primrio, 127
Grupos de segurana, 305
Diagramas Entidades x Arquivo secundrio, 127
Grupos globais, 305
Relacionamentos, 921 Log de transaes, 127
Grupos locais, 305
Conceito, 921 Estrutura de pastas e arquivos, 69
Grupos universais, 305
Curso Completo0000985
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Introduo, 303 Exemplo, 72 Conceito, 223
Utilizao, 303 Instruo DELETE, 31 Conceito de transao, 224
Definio, 31 Consistncia, 225
Exemplos, 31 Definio, 223
H-I Sintaxe, 31 Durabilidade, 225
Host Integration Server 2000, 784 Instruo INSERT, 31 Fazer o backup do, 249
Hot-Add Memory, 52 Definio, 31 Introduo, 223
IFELSE, 592 Exemplos, 31 Isolamento, 225
Exemplos, 592 Sintaxe, 31 Logins, 311
Sintaxe, 592 Instruo SELECT, 23 Comando sp_addlogin, 320
IIS, 636 Colunas Calculadas, 26 Comando sp_denylogin, 320
Criando pasta virtual, 636 Exemplos, 24 Comando sp_droplogin, 321
Formao de endereos, 640 Introduo, 23 Comando sp_grantlogin, 318
Importao e Exportao de dados, 389 Sintaxe, 24 Comando sp_revokelogin, 319
Ver DTS, 389 Instruo UPDATE, 29 Criando logins, 312
ndices, 200 Definio, 29 Deny Server access, 315
Clustered Index, 200 Exemplos, 29 Exemplo prtico, 322
Conceito, 200 Sintaxe, 29 Grant Server access, 315
Criao de ndices, 206 Integridade de dados, 528 Incluso em roles, 315
Desativao de ndices, 216 Implementao, 528 Logs e alertas de desempenho, 419
DROP INDEX, 215 Integridade de domnio, 533 Agendamento, 425
Excluindo, 215 Integridade de entidade, 533 Anlise dos dados, 426
FILLFACTOR OPTION, 212 Integridade referencial, 533 Captura de dados, 418
Index keys, 205 Tipos de integridade, 532 Criando grficos de desempenho, 429
Index Uniqueness, 205 Integridade referencial, 15 Exemplo prtico, 422
Introduo, 200 Atualizar em cascata, 16 Exemplo prtico de grfico de
Nomclustered Index, 203 Conceito, 15 desempenho, 429
Novidades no SQL 2005, 216 Excluir em cascata, 16 Formato de gravao, 424
sp_help, 215 Exemplos, 16 Iniciando o servio, 421
sp_helpindex, 214 Introduo, 15 Intervalo de captura, 424
sp_spaceused, 214 ISA Server 2004, 785
Isolamento, 225
Inferno das DLLs, 779
Instalao do SQL Server 2005, 60
M
Collation, 66 Merge Replication, 464
Conta para rodar, 65 J Microsoft Access, 5, 709
Cuidados antes da instalao, 57 Job, 269 Ver Access, 709
Exemplo prtico, 60 JOIN, 28 Microsoft Reporting Services, 84
Instalar nova instncia, 70 Exemplos, 28 MMC, 85
Instncia default, 64 Exemplos prticos, 618 Abrir o MMC, 86
Instncia nomeada, 64 Inner Join, 619 Conceito, 85
Modo de autenticao, 73 LEFT OUTER JOIN, 619 Criar console personalizado, 88
No Windows Server 2003, 60 Nveis de, 29 Salvar console personalizado, 90
Nomeao de instncias, 59 Nmero de Joins, 618 MOBILE INFORMATION 2001
Pr-requisitos, 61 RIGHT OUTER JOIN, 619 SERVER, 785
Recomendaes de segurana, 58 Modelo baseado em Componentes, 772
Recomendaes preliminares, 57 Como funciona, 772
Senha da conta sa, 66 L Conceito, 772
Servios a instalar, 64 Modelo de segurana, 281
LIKE, 27
Tela inicial, 61 Modelos de aplicaes, 37
Linguagem SQL, 22
Instalar uma segunda instncia, 70 Conceito, 37
Lock de Registros, 684
Exemplo prtico, 70 Introduo, 37
Log de Transaes, 223
Instncia default, 64 Modo de autenticao, 73
Agendamento do backup, 250
Instncia nomeada, 64 Monitorao de desempenho, 403
Atomicidade, 225
Criando uma, 72 Captura de dados, 418
Como funciona, 225
Conceito, 403
9860000Curso Completo
NDICE REMISSIVO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Contador, 405 Definio, 653 Create default, 344
Contadores do SQL Server, 436 Estrutura, 653 Create function, 344
Exemplo prtico, 407 O que , 653 Create rule, 344
Gargalos, 403 OLTP, 454 Create SP, 344
Instncia, 405 Online Restores, 52 Create table, 344
Introduo, 403 Opo databases, 116 Create view, 344
Limites de desempenho, 416 Operador In, 26 Criar banco de dados, 342
Logs e alertas de desempenho, 419 Oracle, 5 Estudo de caso, 351
Monitoramento do sistema de ORDER BY, 25 Excluir banco de dados, 342
discos, 412 Order by, 25, Where, 25 Exemplo prtico, 345
Monitorando a RAM, 407 Colunas Calculadas, 26 Introduo, 341
Monitorando o processador, 407 Funo Year, 26 Permisses de banco de dados, 349
Objeto, 405 IN, 26 Permisses de objetos de banco de
MSDTC, 83 Orientao a Objetos, 802 dados, 353
MySQL Linux, 5 Classes, 805 Atribuindo, 353
Exemplo prtico, 806 Comando DENY, 357
Herana, 806 Comando GRANT, 356
N Introduo, 802 Plano de manuteno, 367
Nomclustered Index, 203 Mensagens, 805 Alterar o plano, 374
Conceito, 203 O que um Objeto, 803 Comandos T-SQL do, 374
Consideraes, 204 Reutilizao de Cdigo, 810 Conceito, 367
Estrutura, 204 Ous, 298 Criando um, 368
Funcionamento, 204 Executar todas as tarefas, 374
Introduo, 203 Exemplo prtico, 368
Nomeao de instncias, 59 P Maintenance Plan Wizard, 368
Conceito, 59 Tarefas do, 367
Pginas ASP, 658
Dicas, 59 Primeira forma normal, 17
Conectando com o SQL Server, 666
Exemplos, 59 Conceito, 17
Conexes com o ORACLE, 670
Normalizao, 16 Definio, 17
Editar registros, 704
Conceito, 16 Exemplo, 17
Excluir registros, 704
Introduo, 16 Grupos de repetio, 17
Exemplo de conexo com SQL
Objetivos da, 16 Server, 666 Profiler, 438
Primeira forma normal, 17 Exemplo de insero no banco, 687 Conceito, 438
Segunda forma normal, 17 Exemplo prtico com ODBC, 673 Exemplo prtico, 440
Terceira forma normal, 18 Inserindo dados no banco, 687 Modelos de trace, 439
Novidades do SQL Server 2005, 48 Localizar registros, 699 Utilizao, 438
Melhorias na disponibilidade, 52 Pool de conexes, 672 Programao DOS, 767
No desenvolvimento de aplicaes, 49 Ver ASP, 658 Programao Windows, 768
No gerenciamento do banco de Permisses de acesso aos bancos de Projeto de banco de dados, 19
dados, 51 dados, 330 Conceito, 19
Nos utilitrios de administrao, 53 Comando sp_grantdbaccess, 334 Dicas, 19
Comando sp_revokedbaccess, 336 Passos, 19
Conceito, 330 Propriedades dos campos, 171
O Exemplo prtico, 331 Collation, 172
ODBC, 642 Introduo, 330 Default Value or Binding, 171
Criar fonte ODBC, 644 Permisses de acesso aos objetos do Description, 171
Definio, 643 banco de dados, 341 Formula, 171
Estrutura, 643 Agendar tarefas, 342 Identity increment, 171
Exemplo prtico, 644 Alterar banco de dados, 342 Identity, 171
Fonte para o SQL Server, 648 Backup DB, 344 Identity seed, 171
O que , 643 Backup log, 344 Indexed, 172
OLAP, 454 Caractersticas das, 345 Is ROWGuid, 171
OLE-DB, 642 Comando GRANT, 348 Publicaes, 480
Como funciona, 653 Comando REVOKE, 350 Acessar propriedades, 480
Conceito, 653 Conceito, 341 Administrao de, 480
Curso Completo0000987
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Configurar, 480 O que , 448 Windows Service Identity, 910
Criao de, 480 Para outros Subscribers, 507 RESTORE DATABASE, 263
Pubs, 525 Publicaes, 459 Exemplo prtico, 265
Importando Pubs, 525 Publisher, 455 Opes, 263
Pull Subscription, 461 Sintaxe, 263
Snapshot folder, 468 RESTORE LOG, 263
Q-R Snapshot Replication, 462 Exemplo prtico, 265
Query Notification, 51 Subscriber, 457 Opes, 263
RAID-1, 124 Subscries, 460 Sintaxe, 263
RAID-5, 124 Tipos de replicao, 462 Restore, 259
RecordSet, 679 Tipos de subscries, 460 Comando RESTORE DATABASE, 263
Conceito, 679 Transactional Replication, 463 Comando RESTORE LOG, 263
Criao de, 680 Velocidade links de WAN, 453 Conceito, 259
Mtodos, 686 Reporting Services, 850 Diferentes estratgias, 259
Propriedades, 685 Acessar via Browser, 880 Exemplo prtico, 260
Registrar instncia, 106 Arquitetura, 853 Introduo, 259
Configurar opes da instncia, 109 Business Intelligence Dvelopment Opes do, 262
Studio, 868 REVOKE, 350
Exemplo prtico, 106
Console de configurao, 907 Exemplos, 350
Relacionamentos, 11
Criando relatrios Matrix, 882 Sintaxe, 350
Conceito, 11
Criando um relatrio simples, 867 Roles, 311
Exemplos, 12
Data Processing Extensions, 855 Adicionando usurios, 336
Introduo, 11
Definir campos, 873 Comando sp_addrole, 328
Quebra de, 15
Definir fonte de dados, 869 Comando sp_addrolemember, 341
Tipos de, 12
Definir layout, 875 Comando sp_addsrvrolemember, 340
Um para um, 12
Delivery extensions, 857 Comando sp_droprole, 328
Um para vrios, 13
Diretrio virtual, 909 Comando sp_dropsrvrolemember, 340
Vrios para vrios, 15
Exemplo prtico tipo Matrix, 882 Comando sp_helprole, 329
Replicao, 448
Fonte compartilhada, 882 Conceito, 324
Agentes de replicao, 464
Formatos dos relatrios, 852 Criando roles, 326
Anlise de cenrios, 450
Formatos suportados, 852 Excluir membro, 340
Artigo, 457
Funes, 851 Exemplo prtico, 337
Autonomia da rplica, 453
Gerenciamento de servios, 908 Fixed Database Roles, 325
Benefcios da replicao, 453
Grupos Exemplo prtico, 899 Server roles, 325
Cenrio terico, 449
Introduo, 851 Utilizao, 324
Conceito, 448
O que , 851
Configurar um Distributor, 467
Opo Grupos, 899
Configurar um Publisher, 467
Conflitos de atualizao, 453
Ordenar campos, 873 S
Principais componentes, 853
Criao de artigos, 471 Schemas, 291
Programmatic Interfaces, 855
Criando filtros, 475 Adicionar objetos ao, 362
Publicando relatrios no IIS, 880
Definir o dono do artigo, 474 Alterar o dono, 363
Referncias cruzadas, 882
Distribution agent, 464 Como funcionam, 291
Relatrios via Web, 852
Distributor, 456 Conceito, 291
Rendering Extensions, 858
Excluindo elementos da, 505 Criando schemas, 360
Report Designer, 854
Exemplo prtico, 466 Dono do objeto, 292
Report processor, 855
Filtro horizontal, 458 Dono do Schema, 292
Report server, 854
Filtro vertical, 458 Funes dos, 291
Report server database, 856
Habilitao de Subscribers, 482 Introduo, 291
Reporting Services Configuration, 907
Introduo, 448 O que so, 360
Requisitos de ASP.NET, 858
Latncia, 453 Separao usurios x Schemas, 293
Requisitos do IIS, 858
Log reader agent, 465 Scripts, 932
Requisitos para o funcionamento, 858
Merge agent, 465 Exemplo prtico, 932
Salvar em diferentes formatos, 876
Merge Replication, 464 Gerao automtica de, 932
Scheduling and Delivery Processor, 856
Modelo de Replicao, 454 Segunda forma normal, 17
Vantagens, 852
Necessidade de, 448
9880000Curso Completo
NDICE REMISSIVO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Conceito, 17 Recomendaes, 918 Sintaxe, 616
Definio, 17 Snapshot Replication, 462 sp_revokedbaccess, 336
Exemplo, 18 Como funciona, 462 Exemplo, 336
Segurana no Windows 2000 Server, 295 Conceito, 462 Sintaxe, 336
Active Directory, 297 Quando utilizar, 462 sp_revokelogin, 319
Contas de usurios, 299 SOAP, 764 Exemplos, 319
Domnios, 295 sp_addlogin, 320 Sintaxe, 319
Unidades Organizacionais, 298 Exemplos, 321 sp_spaceused, 214
Workgroups, 295 Sintaxe, 320 SP_STORED_PROCEDURES, 603
Segurana no Windows Server 2003, 295 sp_addrole, 328 Exemplos, 603
Active Directory, 297 Exemplos, 328 Sintaxe, 603
Contas de usurios, 299 Sintaxe, 328 SQL Computer Manager, 54
Domnios, 295 sp_addrolemember, 341 SQL Server 2005, 55
Unidades Organizacionais, 298 Exemplos prticos, 341 Edies, 55
Workgroups, 295 Sintaxe, 341 Requisitos de Hardware, 56
Seguranas 281 sp_addrolemember, 341 Requisitos de Software, 56
Acessar o banco de dados, 288 Exemplos prticos, 341 SQL Server and Windows
Conexo com o servidor, 283 Sintaxe, 341 Authentication mode, 285
Logins, 311 sp_addsrvrolemember, 340 Alterar o modo, 287
Modelo de segurana, 283 Exemplos, 340 SQL Server Management Studio, 53
Modos de autenticao, 285 Sintaxe, 340 Conceito, 103
Roles, 311 sp_addumpdevice, 241 Configurar opes da instncia, 109
Schemas, 291 Exemplo prtico, 241 Criar banco de dados, 130
Users, 311 Sintaxe, 241 Criar tabelas, 163
Servios do SQL Server 2005, 80 sp_denylogin, 320 Definio, 103
Analysis Services, 84 Exemplos, 320 Exemplo prtico, 103
Gerenciamento de Servios, 85 Sintaxe, 320 Introduo, 103
MICROSOFT DISTRIBUTED SP_DETACH_DB, 929 Logon no, 104
TRANSACTION CORDINATOR sp_dropdevice, 242 Navegando pelo, 103
MSDTC, 83 Exemplo prtico, 242 Object Explorer, 106
Microsoft Reporting Services, 84 Sintaxe, 242 Opo databases, 116
Microsoft Search, 84 sp_droplogin, 321 Opes de navegao, 103
SQL SERVER AGENT, 83 Exemplos, 321 Registered servers, 105
SQL Server, 80 Sintaxe, 321 Registrar instncia, 106
SNAP-IN SERVICE MANAGER, 91 sp_droprole, 328 Tela inicial do, 105
Conceito, 91 Exemplos, 328 SQL, 22
Continuar servios, 92 Sintaxe, 328 Conceito, 22
Dependncias, 94 sp_dropsrvrolemember, 340 Definio, 22
Exemplo prtico, 91 Exemplos, 340 Instruo SELECT, 23
Guia geral, 93 Sintaxe, 340 Instruo SQL, 23
Guia logon, 93 sp_grantdbaccess, 334 Introduo, 22
Iniciar servios, 92 Exemplos prticos, 335 Noes bsicas, 22
Parar servios, 92 Sintaxe, 334 Operaes, 22
Pausar servios, 92 sp_grantlogin, 318 Stored procedures, 583
Recuperao, 94 Exemplos, 318 Comando
Snap-in, 85 Sintaxe, 318 CREATE PROCEDURE, 586
Conceito, 85 sp_help, 215 SP_HELP, 602
Snapshot Databases, 915 sp_helpindex, 214 SP_HELPTEXT, 602
Como funcionam, 915 sp_helprole, 329 SP_STORED_PROCEDURES, 603
Conceito, 915 Exemplos, 329 Conceito, 583
Espao em disco, 917 SP_HELPTEXT, 602 Criao de, 586
Exemplo prtico, 919 Exemplos, 602 Estruturas de deciso, 592
Introduo, 915 Sintaxe, 602 Excluindo, 600
Limitaes, 916 SP_HELPTRIGGER, 616 Executar, 590
Quando usar, 915 Exemplos, 616 Exemplo prtico, 589
Curso Completo0000989
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
Extended Stored Procedures, 585 image, 160 Users, 311
Introduo, 583 integer, 160 VB.NET, 774
O que , 583 money, 160 Apresentao, 774
Parmetros de entrada, 588 nchar, 160 Views, 551
Parmetros de sada, 598 ntext, 160 Acessar dados
System Stored Procedures, 585 nvarchar, 160 Acessar via Browser, 752
Temporary Stored Procedures, 585 real, 160 Comando CREATE VIEW, 754
User-defined Stored Procedures, 585 smallditetime, 161 Criando campos calculados, 559
Vantagens, 584 smallint, 161 Criando Views, 554
Subconsultas, 623 smallmoney, 161 Definio, 551
Conceito, 623 sql_variant, 161 Exemplo prtico, 555
Cuidados com, 624 table, 161 Introduo, 551
Exemplos prticos, 623 text, 161 Limitaes das, 553
Sintaxe, 623 timestamp, 161 Por que utilizar, 553
Subscries, 460 tinyint, 161 Tipos de View, 552
Conceito, 460 unique-identifier, 161 Totalizaes, 566
Configurar Pull Subscriptions, 498 varbinary, 161 Utilizao de, 551
Exemplo prtico, 483, 499 varchar, 161 Web Services, 762
Habilitao de Subscribers, 482 XML, 161 Conceito, 762
Introduo, 460 Transaes, 42 Definio, 762
Pull Subscription, 461 Conceito, 42 Exemplo, 763
Push Subscription, 461 Exemplo, 42 Introduo, 762
Sybase, 5 Transactional Replication, 463 WHERE, 25
Como funciona, 463 WHILE...CONTINUE, 595
Conceito, 463 Exemplos, 595
T Quando utilizar, 463 Sintaxe, 595
Tabelas e Campos, 6 Transferir bancos entre instncias, 926 Windows Authentication mode, 285
Conceito, 7 Comando SP_DETACH_DB, 929 Alterar o modo, 287
Exemplo, 7 Conceito, 926 XML, 754
TCO, 45 Exemplo prtico, 927 O que , 745
Terceira forma normal, 18 Quando usar, 926 Usos, 754
Conceito, 18 Triggers, 603 Viso geral, 754
Definio, 17 Comando CREATE TRIGGUER, 607
Exemplo, 19 Comando SP_HELPTRIGGER, 616
Tipo de Dados XML, 49 Comandos permitidos, 607
Tipos de dados definidos pelo usurio, Conceito, 604
185 Criar triggers, 607
Comando sp_addtype, 191 Definio, 604
Comando sp_droptype, 194 Desabilitar, 617
Conceito, 185 Exemplos prticos, 607
Criar um, 186 Habilitar, 616
Excluindo tipos, 192 Regra de negcio, 604
Usando um, 189 Trigger DELETE, 606
Tipos de dados, 159 Trigger INSERTE, 606
bigint, 159 Trigger INSTEAD OF, 606
binary, 159 Trigger NET, 606
bit, 160 Trigger UPDATE, 606
Char, 160 Utilizao, 604
Conceito, 159 Unidades Organizacionais, 298
cursor, 160 Acesso aos objetos, 330
datetime, 160 Upgrdade do SQL Server 2000, 75
Definio, 159 Caminhos de Upgrade, 75
Dicas de definio, 162 Exemplo prtico, 75
float, 160 Introduo, 75
Use Windows fibers, 112
9900000Curso Completo