proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO
II0000Curso Completo Copyright 2005 by Jlio Battisti Copyright 2005 by Axcel Books do Brasil Editora Ltda. Nenhuma parte desta publicao poder ser reproduzida sem autorizao prvia e escrita de Axcel Books do Brasil Editora. Editora de Produo: Gisella Narcisi Editor Responsvel: Ricardo Reinprecht Suporte Tcnico ao Leitor Limite de garantia: Nosso suporte tcnico limita-se ao contedo especfico do livro, e no a questes gerais referentes ao(s) software(s) descrito(s), cessando caso esta publicao tenha sido esgotada. Para obter esse suporte tcnico especfico, o leitor deve informar ttulo, autor e pgina, somente via e-mail. Todos os originais de livros enviados para avaliao pela Editora sero destrudos, caso no sejam aprovados. No ser feita sua devoluo em nenhuma hiptese. Os conceitos emitidos nesta obra so de inteira responsabilidade do Autor. SQL Server 2005 Administrao e Desenvolvimento Curso Completo Jlio Battisti ISBN: 85-7323-249-8 E-mail: editora@axcel.com.br Visite nossa Home Page http://www.axcel.com.br Axcel Books do Brasil Editora Av. Paris, 571 Bonsucesso 21041-020 Rio de Janeiro RJ Tel. (21) 564-0085 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SUMRIO Curso Completo0000III CRDITOS PRODUO Alberto Baptista Garcia, Carlos Alberto S Ferreira, Fagner Silva Henrique, Ingo Bertelli e Marcio Teixeira de Mello REVISO Sandro Gomes ARTE E DIAGRAMAO Ingo Bertelli SUPERVISOR DE PRODUO Carlos Alberto S Ferreira CAPA Ingo Bertelli EDITORA DE PRODUO Gisella Narcisi EDITOR RESPONSVEL Ricardo Reinprecht proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Nota sobre direitos autorais:
Este e-book de autoria de J lio Battisti, sendo comercializado diretamente atravs do site www.juliobattisti.com.br ou atravs do site de leiles Mercado Livre: www.mercadolivre.com.br, mediante contato atravs do email: batisti@hotmail.com ou webmaster@juliobattisti.com.br, diretamente pelo autor. No Mercado Livre, somente o usurio GROZA (meu apelido no Mercado Livre) que tem autorizao para comercializar este e-book. Nenhum outro usurio/email e/ou empresa est autorizada a comercializar este ebook.
Ao adquirir este ebook voc tem o direito de l-lo na tela do seu computador e de imprimir uma cpia para uso pessoal. vetada a distribuio deste arquivo, mediante cpia ou qualquer outro meio de reproduo, para outras pessoas. Se voc recebeu este ebook atravs do e-mail ou via ftp de algum site da Internet, ou atravs de um CD de Revista, saiba que voc est com uma cpia pirata, ilegal, no autorizada, a qual constitui crime de Violao de Direito Autoral, de acordo com as Leis 5988, 9118 e 9610. Se for este o caso entre em contato com o autor, atravs do e-mail webmaster@juliobattisti.com.br, para regularizar esta cpia. Ao regularizar a sua cpia voc ir remunerar, mediante uma pequena quantia, o trabalho do autor e incentivar que novos trabalhos sejam disponibilizados. Se voc tiver sugestes sobre novos cursos que gostaria de ver disponibilizados, entre em contato pelo e-mail: webmaster@juliobattisti.com.br. Visite periodicamente o site www.juliobattisti.com.br para ficar por dentro das novidades:
Cursos de informtica. Guias de Estudo para os Exames de Certificao da Microsoft. Artigos e dicas sobre Certificaes da Microsoft. Artigos sobre Carreira e Trabalho. Dicas de livros e sites sobre diversos assuntos. Simulados gratuitos, em portugus, para os exames da Microsoft.
ESTE E-BOOK NO PODE SER FORNECIDO EM UM CD OU DVD DE NENHUMA REVISTA SE VOC OBTEVE UMA CPIA DESTE E-BOOK ATRAVS DO E-MULE, KAZAA, MORPHEUS OU OUTRO PROGRAMA DE COMPARTILHAMENTO, SAIBA QUE VOC EST COM UMA CPIA ILEGAL, NO AUTORIZADA, O QUE CRIME, COM PENA PREVISTA DE 2 A 5 ANOS DE CADEIA. USAR UMA CPIA NO AUTORIZADA CRIME DE VIOLAO DE DIREITOS AUTORAIS, COM PENA PREVISTA DE CADEIA VOC S PODE USAR ESTE E-BOOK SE VOC COMPROU ELE DIRETAMENTE COM O AUTOR: JLIO BATTISTI
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
PIRATARIA CRIME, COM PENA DE CADEIA. EU AGRADEO PELA SUA HONESTIDADE. SE VOC COMPROU UMA CPIA DESTE CURSO, DIRETAMENTE EM WWW.JULIOBATTISTI.COM.BR OU DIRETAMENTE COM O AUTOR, NO DISTRIBUA CPIAS PARA OUTRAS PESSOAS.
SE VOC BAIXOU UMA CPIA DESTE ARQUIVO USANDO UM SOFTWARE TAL COMO O E-MULE OU O KAZAA, SAIBA QUE VOC EST COM UMA CPIA PIRATA, ILEGAL. USAR UMA CPIA ILEGAL CRIME DE VIOLAO DE DIREITOS AUTORAIS.
ESTE ARQUIVO NO PODE SER DISTRIBUIDO GRAVADO EM UM CD OU DVD DE REVISTA OU LIVRO. A NICA MANEIRA DE OBTER ESTE ARQUIVO COMPRANDO DIRETAMENTE COM O AUTOR OU ATRAVS DO SITE WWW.JULIOBATTISTI.COM.BR
SE VOC RECEBEU UMA CPIA ILEGAL DESTE ARQUIVO, NO ADQUIRIDA DIRETAMENTE PELOS MEIOS DESCRITOS NO INCIO DA PGINA, ENTRE EM CONTATO E REGULARIZE A SUA CPIA.
proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO IV0000Curso Completo AGRADECIMENTOS Este livro tem um sentido bastante especial. Em pocas em que o mercado livreiro no anda dos mais animados, lanar um livro deste porte sempre um desafio. Um desafio tanto em termos de tempo investido pelo autor, quanto em termos do esforo de investimento e divulgao que tem que ser feito pela Editora. Por isso que gostaria de iniciar meus agradecimentos, com uma meno especial ao amigo Ricardo, presidente da Axcel Books, o qual, mesmo em uma poca de mercados no muito animados, aposta em mais um trabalho deste autor. Em seguida a equipe da Axcel que mais uma vez aposta em um trabalho de minha autoria, passando pelos colegas de produo, edio, arte grfica, reviso, enfim, uma equipe trabalhando muito para que mais este livro chegue s mos do amigo leitor. Eu poderia dizer, sem medo de errar, que hoje eu e a Axcel no temos mais uma relao Autor Editora, mas sim uma relao de parceria, buscando sempre solues satisfatrias para o autor, para a Editora mas, principalmente, para o amigo leitor. minha esposa Lu, pelo carinho, amor, dedicao, companheirismo e tolerncia. Gostaria de deixar registrado que aprendi muito e continuo aprendendo contigo. Tu s a pessoa que est sempre ao meu lado, me apoiando e me ensinando. Em 2004, quando passastes por momentos delicados em relao a tua sade, demonstrastes uma coragem inimaginvel. Mais uma vez me ensinastes como so pequenos os desafios materiais e de trabalho do dia-a-dia, diante de problemas maiores, como os de sade. Tenho certeza de que aps a tua cirurgia estamos ainda mais unidos, mais ligados nesta e em muitas outras vidas. Que Deus te ilumine e ajude a realizar todos os teus sonhos. Um grande sonho j foi realizado, com a tua formatura no dia 10-01-2005. Formatura que, em tantos momentos de incerteza, por questes de sade, no sabamos ser iria acontecer. Mas o Grande Arquiteto dos Mundos assim o quis e, com a sua bno e com o teu esforo, conseguistes vencer mais esta batalha. s uma guerreira de coragem mpar. Cada vez admiro mais a tua coragem diante dos obstculos da vida. Sei que no foram e no esto sendo fceis os momentos que passastes aps a tua cirurgia para recuperao da tua sade. Que Deus te d toda a sade do mundo para que possamos criar nossos filhos que em breve viro a este mundo. dona Lucy, minha me, por sempre me apoiar e ser uma grande admiradora e incentivadora de tudo o que fao. Por ter me dado como primeiro presente um livro, despertando em mim uma paixo ardente de leitor, daqueles que sempre compra mais livros do que realmente pode ler. Por ter muito orgulho do meu trabalho e por entender as vezes em que fico algumas semanas sem poder visit-la em minha terra natal, o nosso bom e velho Boqueiro do Leo. Ao meu Pai, em memria, pelo jeito simples e pacato, que me ensinou a parar e refletir nos momentos difceis. Aos meus irmos agradeo pelos bons momentos que juntos passamos. Aos leitores que leram os outros livros de minha autoria e sempre entram em contato via e-mail, para solucionar dvidas, enviar sugestes, crticas e elogios. Agradeo a todos. Este retorno muito importante, um grande motivador. Aos leitores que enviam e-mail com dvidas e sugestes, a todos o meu mais sincero agradecimento. A Deus por nos dar a inteligncia, a capacidade de discernimento e a determinao na busca de cada vez fazer as coisas de uma maneira melhor e mais simples, com o objetivo de ajudar mais e mais pessoas. E que o Grande Criador e Arquiteto de tudo o que existe permita-me ainda muitos trabalhos, permita-me sempre ajudar mais e mais pessoas a alcanar seus objetivos e a aprender um pouco mais sobre cada um dos assuntos sobre os quais escrevo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SUMRIO Curso Completo0000V SOBRE O AUTOR Jlio Battisti profissional certificado da Microsoft, tendo sido aprovado em 31 exames da Microsoft, com os quais obteve certificaes como: MCP, MCP+I, MCSE 2000 e 2003, MCSE+I, MCDBA 2000, MCSA 2000 e 2003, MCSD e MVP. Tcnico da Receita Federal, na Delegacia de Santa Maria RS, e autor de dez livros, todos publicados pela Axcel Books. Tambm autor de artigos sobre TI, Carreira, Trabalho, Vida e Felicidade, publicados no site do autor: http://www.juliobattisti.com.br. Atua como instrutor de cursos de informtica tanto na Secretaria da Receita Federal como para turmas em Universidades e outros cursos. Colunista de diversos sites da Internet e da revista Developers Maga- zine. Voc pode entrar em contato com o autor pelo e-mail: webmaster@juliobattisti.com.br. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO VI0000Curso Completo Sumrio PARTE 1 FUNDAMENTOS .............................................................................................................................. 1 CAPTULO 1: INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL............................................. 3 Introduo .......................................................................................................................................................... 4 Fundamentos em: Conceitos Bsicos de Bancos de Dados Relacionais .............................................................................................................................. 6 Entidades e Atributos ..................................................................................................................................... 6 O Conceito de Chave Primria ...................................................................................................................... 9 Relacionamentos Entre Tabelas ........................................................................................................................ 11 Relacionamento do Tipo Um para Um........................................................................................................ 12 Relacionamento do Tipo Um para Vrios .................................................................................................... 13 Relacionamento do Tipo Vrios para Vrios ................................................................................................ 15 Integridade Referencial ................................................................................................................................ 15 Normalizao de Tabelas ................................................................................................................................... 16 Primeira Forma Normal ................................................................................................................................ 17 Segunda Forma Normal ................................................................................................................................ 17 Terceira Forma Normal ................................................................................................................................. 18 Passos Para Projetar um Banco de Dados.......................................................................................................... 19 Fundamentos em: Noes Bsicas da Linguagem SQL Structured Query Language......................................................................................................................... 22 Introduo ........................................................................................................................................................ 22 A Instruo SELECT .......................................................................................................................................... 23 A Instruo UPDATE ......................................................................................................................................... 29 A Instruo INSERT ........................................................................................................................................... 31 A Instruo DELETE .......................................................................................................................................... 31 Concluso ......................................................................................................................................................... 32 CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 ....................................................................... 35 Introduo ........................................................................................................................................................ 36 Fundamentos em: Modelo de Aplicaes Para a Era do Comrcio Eletrnico ........................................................................................................................ 37 Fundamentos em: Arquitetura de Aplicaes ....................................................................................................... 43 A Complexidade de Gerenciamento do Modelo Cliente/Servidor e Aplicaes de Duas Camadas .............................................................................................. 43 Aplicaes em Duas Camadas ........................................................................................................................... 44 Aplicaes em Trs Camadas ............................................................................................................................ 45 Aplicaes em Quatro Camadas ....................................................................................................................... 46 Questes a Considerarmos nos Modelos de Trs ou Mais Camadas ................................................................................................................... 48 Fundamentos em: As Principais Novidades e Melhoramentos do Microsoft SQL Server 2005 .................................................................................................... 48 Novidades e Melhorias do Banco de Dados...................................................................................................... 49 Novidades no Desenvolvimento de Aplicaes ........................................................................................... 49 Novidades no Gerenciamento da Mquina de Banco de Dados do SQL Server 2005................................. 51 Novidades que melhoram o tempo de UpTime do SQL Server 2005 .......................................................... 52 Outras Novidades da Mquina de Banco de Dados do SQL Server 2005. ................................................... 53 Novidades e Melhorias das Ferramentas e Utilitrios de Administrao .......................................................................................................................... 53 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SUMRIO Curso Completo0000VII Fundamentos em: Instalao do Microsoft SQL Server 2005 ............................................................................... 55 As Diferentes Edies do Microsft SQL Server 2005 ..................................................................................... 55 Requisitos de Hardware e Software Para a Instalao do SQL Server 2005 ...................................................... 56 Recomendaes de segurana, antes Instalao do SQL Server 2005 .............................................................. 58 Nomeando as Instncias do SQL Server 2005 .................................................................................................. 59 Instalando o SQL Server 2005 no Windows Server 2003 ................................................................................. 60 A Estrutura de Pastas e Arquivos do SQL Server 2005 ...................................................................................... 69 Criando uma Segunda Instncia do SQL Server Developer Edition................................................................. 70 Fazendo o Upgrade do SQL Server 2000 Para o SQL Server 2005 .................................................................... 75 Fundamentos em: Servios Disponveis com o SQL Server 2005 ......................................................................... 80 O Servio SQL Server ..................................................................................................................................... 81 O Servio SQL Server Agent........................................................................................................................... 83 O Servio Microsoft Distributed Transaction Cordinator MSDTC ................................................................ 83 O Servio Microsoft Search ............................................................................................................................... 84 O Servio Microsoft Report Services ................................................................................................................. 84 O Servio Analysis Services ............................................................................................................................... 84 Fundamentos em: Gerenciamento dos Servios do SQL Server 2005................................................................... 85 Um Pequeno Parnteses Para Aprender Sobre MMC e Snap-ins ...................................................................... 85 Utilizando o Snap-in Service Manager O Console Servios........................................................................... 91 Utilizando o Console SQL Computer Manager, que vem com o SQL Server 2005 ......................................... 95 Concluso ......................................................................................................................................................... 97 CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 .................................... 101 Introduo ...................................................................................................................................................... 102 Fundamentos em: Utilizao do SQL Server Management Studio ..................................................................... 103 Fundamentos em: Armazenamento Bsico x Armazenamento Dinmico ......................................................... 121 Armazenamento Bsico e Armazenamento Dinmico................................................................................... 122 Fundamentos em: A Estrutura de Armazenamento dos Bancos de Dados no SQL Server 2005 ........................ 126 Entendendo o Conceito de Filegroups ........................................................................................................... 127 Fundamentos em: Criar Bancos de Dados no SQL Server 2005 com o SQL Server Management Studio .......... 130 Verificao dos Arquivos Criados Para o Exemplo1 e para o Exemplo2 ........................................................ 138 Fundamentos em: Entender e Utilizar Comandos T-SQL ................................................................................... 139 Fundamentos em: Criao de Bancos de Dados Usando Comandos T-SQL ....................................................... 143 Fundamentos em: Alterao de Bancos de Dados Usando Comandos T-SQL .................................................... 150 Fundamentos em: Excluso de Bancos de Dados com o Query Analyzer e com o Enterprise Manager ............ 153 Concluso ....................................................................................................................................................... 155 CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 .................................................. 157 Introduo ...................................................................................................................................................... 158 Fundamentos em: Projeto de Banco de Dados e Tipos de Dados do SQL Server 2005....................................... 159 Algumas Dicas Para Definir os Tipos de Dados Para Uma Coluna ................................................................. 162 Fundamentos em: Criao de Tabelas com o SQL Server Management Studio.................................................. 163 Fundamentos em: Criao de Tabelas Usando Comandos T-SQL ...................................................................... 177 Fundamentos em: Alterar a Estrutura de uma Tabela com o SQL Server Management Studio .......................... 182 Fundamentos em: Alterar a Estrutura de uma Tabela com Comandos T-SQL .................................................... 183 Fundamentos em: Tipos de Dados Definidos Pelo Usurio ................................................................................ 185 Criando um Tipo de Dados Definido Pelo Usurio com o SQL Server Management Studio ........................ 186 Criando um Tipo de Dados Definido Pelo Usurio, Usando a Janela de Comandos T-SQL .......................... 191 Excluindo Tipos Definidos Pelo Usurio ........................................................................................................ 192 Fundamentos em: Excluso de Tabelas ............................................................................................................... 194 Para Excluir uma Tabela com o SQL Server Management Studio .................................................................. 194 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO VIII0000Curso Completo Excluindo uma Tabela com o Query Analyzer ............................................................................................... 195 Fundamentos em: Definio da Chave Primria de uma Tabela ........................................................................ 195 Definindo uma Chave Primria Utilizando o SQL Server Management Studio ............................................ 196 Definindo uma Chave Primria Utilizando Comandos T-SQL ...................................................................... 198 Fundamentos em: Conceito e Criao de ndices ............................................................................................... 199 Uma Viso Geral dos ndices no SQL Server 2005 ......................................................................................... 200 Clustered Index ............................................................................................................................................... 200 Nonclustered Index ........................................................................................................................................ 203 Mais Algumas Questes Tericas Sobre ndices .............................................................................................. 205 Criando ndices no SQL Server 2005 .............................................................................................................. 207 Criando um Clustered Index Simples com o SQL Server Management Studio ............................................. 207 Criando ndices Usando Comandos T-SQL .................................................................................................... 209 Um Fator Importante: FILLFACTOR OPTION ................................................................................................ 212 Fundamentos em: Comandos Adicionais Para Trabalhar com ndices............................................................... 213 Excluindo ndices ........................................................................................................................................... 215 Excluindo um ndice com o Query Analyzer ................................................................................................. 215 Novidade do SQL Server 2005 Desativao de ndices ................................................................................ 216 Concluso ....................................................................................................................................................... 216 PARTE 2 KNOW-HOW............................................................................................................................. 219 CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS ...................................... 221 Introduo ...................................................................................................................................................... 222 Know-how em: Conceito de Log de Transaes no SQL Server 2005 ................................................................. 223 Um Pouco Mais Sobre o Conceito de Transao ............................................................................................ 224 Como Funciona o Log de Transaes ............................................................................................................. 225 Know-how em: Tipos e Estratgias de Backup .................................................................................................... 226 Introduo ...................................................................................................................................................... 227 Mtodos de Backup Quanto ao Contedo do Backup ................................................................................... 229 Tipos de Backup .............................................................................................................................................. 231 Alguns Exemplos de Estratgias de Backup/Restore ....................................................................................... 232 Know-how em: O Conceito Backup Devices e Criao de Backup Devices ........................................................ 236 O que so Backup Devices? ............................................................................................................................. 236 Devices Lgicos e Devices Fsicos ................................................................................................................... 237 Criando um Backup Device Lgico com o SQL Server Management Studio ................................................. 238 Criando um Backup Device Lgico Usando Comandos T-SQL ...................................................................... 240 Excluindo Backup Devices .............................................................................................................................. 242 Know-how em: Fazer o Backup das Informaes ................................................................................................ 244 Fazendo o Backup com o SQL Server Management Studio ............................................................................ 244 Fazendo o Backup do Log de Transaes e Criando um Agendamento Para o Backup ................................. 249 Fazendo o Backup com o Query Analyzer ...................................................................................................... 254 Um Exemplo Mais Completo ......................................................................................................................... 258 Know-how em: Fazer o Restore das Informaes ................................................................................................ 258 Fazendo o Restore com o SQL Server Management Studio ............................................................................ 260 Fazendo o Restore com o Query Analyzer ...................................................................................................... 263 Know-how em: Agendamento de Tarefas no SQL Server 2005 ........................................................................... 269 Criando um Job com o SQL Server Management Studio ............................................................................... 271 Concluso ....................................................................................................................................................... 279 CAPTULO 6 SEGURANA NO SQL SERVER 2005 ......................................................................................... 281 Introduo ...................................................................................................................................................... 282 Know-how em: Segurana no SQL Server 2005 .................................................................................................. 283 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SUMRIO Curso Completo0000IX Primeiro Precisamos Conectar com o Servidor SQL Server 2005 ................................................................... 283 Depois de Conectados, Precisamos de Permisses Para Acessar os Objetos do Banco de Dados ................... 288 Schemas Principal Novidade de Segurana do SQL Server 2005 ................................................................. 291 Um Resumo da Teoria Sobre Segurana no SQL Server 2005 ......................................................................... 294 Know-how em: Segurana no Windows 2000 Server e Windows Server 2003................................................... 295 Domnios, Workgroups e Active Directory..................................................................................................... 295 Domnios e Grupos de Trabalho (Workgroups) ......................................................................................... 295 Active Directory ......................................................................................................................................... 297 Contas de Usurios ......................................................................................................................................... 299 Grupos de Usurios e Tipos de Grupos Existentes no Windows 2000 Server e no Windows Server 2003.................................................................................... 303 Know-how em: Criao e Gerenciamento de Login e Roles no SQL Server 2005 .............................................. 311 Criando Logins com o SQL Server Management Studio ................................................................................ 312 Criando Logins com Comandos T-SQL .......................................................................................................... 317 Criando Roles no SQL Server 2005 ................................................................................................................. 324 Criando Novas Roles com o SQL Server Management StudioSQL Server 2005 ............................................. 326 Criando Novas Roles Usnado Comandos T-SQL ............................................................................................ 328 Know-how em: Configurao de Acesso aos Objetos de um Banco de Dados do SQL Server 2005 .................. 330 Dando Permisso de Acesso ao Banco de Dados com o SQL Server Management Studio............................. 331 Dando Permisso de Acesso ao Banco de Dados, Usando Comandos T-SQL................................................. 334 Adicionando Usurios Como Membros de uma ou Mais Roles ..................................................................... 336 Know-how em: Configurao, Planejamento e Teste de Permisses de Acesso aos Objetos de um Banco de Dados do SQL Server 2005 ....................................................................................................... 341 Definindo Permisses em Nvel de SERVIDOR\instncia .............................................................................. 342 Dando Permisses Para Banco de Dados ........................................................................................................ 344 Dando Permisses a Objetos do Banco de Dados ........................................................................................... 352 Trabalhando com Schemas ............................................................................................................................. 360 Concluso ....................................................................................................................................................... 364 CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 ......................................... 365 Introduo ...................................................................................................................................................... 366 Know-how em: Criao de um Plano de Manuteno Para um Banco de Dados do SQL SERVER 2005 ........... 367 Know-how em: Comandos DBCC Database Consistency Checker ................................................................. 376 Principais Comandos DBCC de Manuteno................................................................................................. 376 Principais Comandos DBCC de Status ........................................................................................................... 383 Principais Comandos DBCC de Validao ..................................................................................................... 386 Mais um Comando DBCC .............................................................................................................................. 388 Know-how em: Importao e Exportao de Dados com o DTS Data Transformation Services ..................... 389 Importando Dados de Outras Fontes de Dados .............................................................................................. 389 Exportando Dados do SQL Server 2005Para Outras Fontes de Dados ........................................................... 398 Know-how em: Monitorao de Desempenho no SQL SERVER 2005 ................................................................ 403 Monitorando o Processador e a Memria do seu Servidor ............................................................................. 407 Monitorando o Acesso ao Sistema de Discos .................................................................................................. 412 Contadores a Serem Monitorados em Servidores ........................................................................................... 415 Valores Indicativos de Limites de Desempenho Para Contadores ................................................................. 416 Configurando o Console Desempenho Para Capturar Dados Automaticamente.......................................... 418 Montando Grficos de Desempenho a Partir de Informaes de Arquivos de Log ....................................... 429 Utilizando Alertas Para Monitorar Situaes Limite ...................................................................................... 433 Utilizando o Console Desempenho Para Monitorar o SQL Server 2005........................................................ 436 Utilizando o Profiler ....................................................................................................................................... 438 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO X0000Curso Completo Concluso ............................................................................................................................................................ 446 CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO ........................................................... 447 Introduo ...................................................................................................................................................... 448 Know-how em: Fundamentos Bsicos sobre Replicao ..................................................................................... 449 Fatores Ligados Replicao ........................................................................................................................... 452 Benefcios da Replicao e Onde Utiliz-la..................................................................................................... 453 Know-how em: O Modelo de Replicao do SQL Server 2005 ........................................................................... 454 Publisher ..................................................................................................................................................... 455 Distributor .................................................................................................................................................. 456 Subscriber ................................................................................................................................................... 457 Artigo .......................................................................................................................................................... 457 Publicaes ................................................................................................................................................. 459 Know-how em: Subscries e Tipos de Subscries ............................................................................................ 460 Push Subscription ........................................................................................................................................... 461 Pull Subscriptions ........................................................................................................................................... 461 Know-how em: Tipos de Replicao.................................................................................................................... 462 Snapshot Replication ...................................................................................................................................... 462 Transactional Replication ............................................................................................................................... 463 Merge Replication ........................................................................................................................................... 464 Know-how em: Os Agentes de Replicao no SQL Server 2005.......................................................................... 464 Know-how em: Configurando a Replicao no SQL Server 2005 ....................................................................... 466 Know-how em: Configurao e Administrao de Publicaes .......................................................................... 480 Know-how em: Habilitao de Subscribers ......................................................................................................... 482 Os Agentes Criados Para a Replicao em SERVIDOR\SQL2005 ................................................................... 493 Know-how em: Configurar Subscries do Tipo Pull Subscriptions ................................................................... 498 Excluindo Elementos da Replicao ............................................................................................................... 505 Know-how em: Replicao Para Outros Tipos de Subscribers No SQL Server 2005 ....................................... 507 Replicando Dados Para um Subscriber do Microsoft Access .......................................................................... 509 Concluso ....................................................................................................................................................... 520 CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS ................................................ 523 Introduo ...................................................................................................................................................... 524 Know-how em: Importando o Banco de Dados Pubs de uma Instncia do SQL Server 2000 ............................ 525 Know-how em: Implementao de Integridade dos Dados no SQL Server 2005 ............................................... 528 Os Tipos de Integridade de Dados Existentes no SQL Server 2005 ................................................................ 532 Know-how em: Criao e Teste de Constraints no SQL Server 2005 .................................................................. 534 Criando Constraints com Comandos T-SQL .................................................................................................. 536 NOT NULL Constraint .................................................................................................................................... 536 DEFAULT Constraints ..................................................................................................................................... 537 CHECK Constraints ........................................................................................................................................ 538 PRIMARY KEY Constraints .............................................................................................................................. 540 UNIQUE Constraints ...................................................................................................................................... 542 FOREIGN KEY Constraints ............................................................................................................................. 542 Verificao dos Dados Quando uma Constraint Adicionada ...................................................................... 546 Desabilitando e Habilitando Novamente Constraints ................................................................................... 547 Excluindo Constraints .................................................................................................................................... 547 Know-how em: Conceitos e Criao de Views no SQL Server 2005 ................................................................... 551 Introduo ...................................................................................................................................................... 551 Tipos de Views Quanto ao Conjunto de Dados Retornados .......................................................................... 552 Por que Utilizar Views? ................................................................................................................................... 553 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SUMRIO Curso Completo0000XI Limitaes na Criao de Views ..................................................................................................................... 553 Criando Views com o SQL Server Management Studio ................................................................................. 554 Criando Views com o SQL Server Management Studio ................................................................................. 555 Exemplo Prtico 01: Usando Views Para Criar Campos Calculados e Totalizaes ....................................... 559 Exemplo Prtico 02: Usando Views Para Criar Campos Calculados e Totalizaes ....................................... 566 Exemplo Prtico 03: Criando uma View Baseada em Outra View. ................................................................. 571 Criando Views com a Janela de Execuo de Comandos T-SQL .................................................................... 574 Concluso ....................................................................................................................................................... 577 PARTE 3 DESENVOLVIMENTO .................................................................................................................... 579 CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS ............................ 581 Introduo ...................................................................................................................................................... 582 Desenvolvimento em: Teoria e Desenvolvimento de Stored Procedures no SQL Server 2005........................... 583 Criando Stored Procedures ............................................................................................................................. 586 Criando Stored Procedures com a Janela de Execuo de Comandos T-SQL ................................................. 586 Criando Stored Procedures com Parmetros de Entrada ................................................................................ 588 Utilizando Estruturas de Deciso em um Stored Procedure ........................................................................... 592 A Estrutura IF...ELSE ........................................................................................................................................ 592 A Estrutura WHILE...CONTINUE.................................................................................................................... 595 Definindo Parmetros de Sada (ou de Retorno) Para um Stored Procedure ................................................. 598 Excluindo um Stored Procedure ..................................................................................................................... 600 Criando Stored Procedures com o SQL Server Management Studio .............................................................. 600 Criando Stored Procedures com a Opo New Stored Procedures ................................................................. 600 Verificando Informaes Sobre os Stored Procedures de um Banco de Dados .............................................. 602 O Comando sp_help ....................................................................................................................................... 602 O Comando sp_helptext ................................................................................................................................. 602 O Comando sp_stored_procedures ................................................................................................................. 603 Desenvolvimento em: Teoria e Desenvolvimento de Triggers no SQL Server 2005 ........................................... 603 Criando Triggers com Comandos T-SQL ........................................................................................................ 607 Criando Triggers com o SQL Server Management Studio .............................................................................. 614 Mais Alguns Comandos Relacionados com Triggers ...................................................................................... 615 O Comando sp_helptext ................................................................................................................................. 615 O Comando sp_helptrigger ............................................................................................................................ 616 Habilitando e Desabilitando Triggers ............................................................................................................. 616 Desenvolvimento em: Comandos Avanados da Linguagem T-SQL .................................................................. 617 Pesquisando Dados em Mltiplas Tabelas ...................................................................................................... 617 Tipos de Join ................................................................................................................................................... 619 Join com Mais do que Duas Tabelas ............................................................................................................... 621 Utilizando Subconsultas ................................................................................................................................. 623 Concluso ....................................................................................................................................................... 625 CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 ................................. 627 Introduo ...................................................................................................................................................... 628 Desenvolvimento em: Uma Introduo ao Desenvolvimento de Aplicaes em n Camadas ........................... 629 Modelo em Duas Camadas Cliente/Servidor Tradicional ............................................................................ 629 Aplicaes em Duas Camadas ......................................................................................................................... 630 Aplicaes em Trs Camadas .......................................................................................................................... 632 Aplicaes em Quatro Camadas ..................................................................................................................... 633 Questes a Considerarmos nos Modelos de Trs ou Mais Camadas .............................................................. 634 Desenvolvimento em: Preparao do Servidor Para Acompanhar os Exemplos Deste Captulo ....................... 635 Criando a Pasta Onde Iremos Gravar os Exemplos Deste Captulo ............................................................... 636 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO XII0000Curso Completo Tornando a Pasta LivroSQL2005, Parte do Servidor IIS .................................................................................. 637 Desenvolvimento em: Um Pouco Sobre ODBC, OLE DB e ADO........................................................................ 642 Um Pouco Sobre ODBC Open Database Connectivity ................................................................................ 643 Criando uma Fonte ODBC Para um Banco de Dados do Microsoft Access ................................................... 644 Criando uma Fonte ODBC Para um Banco de Dados Pubs, da Instncia SERVIDOR\SQL2005 .............. 648 Um Pouco Sobre OLE DB e ADO .................................................................................................................... 653 Desenvolvimento em: O Modelo de Objetos do ADO Activex Data Objects .................................................. 655 Desenvolvimento em: Aplicaes com ASP Active Server Pages ...................................................................... 658 O Objeto Connection ..................................................................................................................................... 661 Criando Conexes ODBC .......................................................................................................................... 661 O Objeto Connection Mtodos, Propriedades e Eventos........................................................................ 662 Criando Conexes Utilizando OLE DB ...................................................................................................... 663 A Propriedade ConnectionString ............................................................................................................... 664 Configurando Conexes com Bancos de Dados do Microsoft SQL Server 2005 ........................................... 666 O Primeiro Exemplo Conectando com o Banco de Dados Northwind, da Instncia SERVIDOR\SQL2005 .................................................................................................................. 666 Configurando Conexes OLE DB, com Bancos de Dados ORACLE .......................................................... 670 Comentrios Finais Sobre o Objeto Connection ....................................................................................... 671 O Mtodo Close ......................................................................................................................................... 672 Pool de Conexes ................................................................................................................................... 672 Um Exemplo Utilizando ODBC...................................................................................................................... 673 O Objeto RecordSet ......................................................................................................................................... 679 Um Pouco Sobre Cursores .......................................................................................................................... 680 Localizao do Cursor ................................................................................................................................ 682 Lock de Registros ........................................................................................................................................ 684 Propriedades do Objeto RecordSet ............................................................................................................. 685 Mtodos do Objeto RecordSet .................................................................................................................... 686 Uma Pgina ASP Para Inserir Informaes no Banco de Dados ..................................................................... 687 Demais Operaes Utilizando ASP ................................................................................................................. 699 Para Localizar um Registro.............................................................................................................................. 699 Utilizando o Nosso Exemplo...................................................................................................................... 703 Editando e Excluindo Registros ...................................................................................................................... 704 Concluso ....................................................................................................................................................... 705 CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML .............................................. 707 Introduo ...................................................................................................................................................... 708 Desenvolvimento em: Uma Rpida Reviso Sobre a Estrutura de um Banco de Dados do Microsoft Access ....................................................................................................... 709 Tabelas ............................................................................................................................................................. 710 Consultas ........................................................................................................................................................ 711 Formulrios ..................................................................................................................................................... 713 Relatrios ........................................................................................................................................................ 715 Pginas ............................................................................................................................................................ 716 Macros ............................................................................................................................................................. 720 Mdulos .......................................................................................................................................................... 721 Desenvolvimento em: Como Acessar Dados do Servidor SQL Server 2005 Utilizando o Microsoft Access....... 722 Importando Dados do SQL Server em Tabelas do Microsoft Access .............................................................. 722 Anexando Tabelas no Microsoft Access .......................................................................................................... 731 Criando Consultas no Microsoft Access, Baseadas em Tabelas do SQL Server 2005...................................... 736 Desenvolvimento em: Acessando Dados do Servidor SQL Server 2005 com o Navegador e o Padro XML ..... 744 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SUMRIO Curso Completo0000XIII Configurando o Acesso Atravs do Navegador .............................................................................................. 746 Testando o Acesso aos Dados do SQL Server 2005, Atravs do Navegador .................................................... 752 Uma Pouco Sobre Extensible Markup Language XML ................................................................................ 754 Primeiro um Pouco de Histria ...................................................................................................................... 755 O que Mais tem a Oferecer Este Tal de XML? ................................................................................................. 756 Concluso ....................................................................................................................................................... 757 CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 ........................................................... 759 Introduo ...................................................................................................................................................... 760 Desenvolvimento Em: O Primeiro Contato com o Framework .NET ................................................................. 762 Apresentando o Conceito de Servios Web Services .................................................................................... 762 Apresentando o CLR Common Language Runtime ................................................................................ 764 .NET Framework Class Library ................................................................................................................... 766 Desenvolvimento em: Um Pequeno Parnteses Para falar mal dos Modelos Anteriores ................................ 767 A que saudade do MS-DOS??? ................................................................................................................... 767 Prazer. Eu sou o Windows! ......................................................................................................................... 768 Redes e Internet Mais problemas (ou solues) Vista! ......................................................................... 769 Aplicaes em 3 camadas. .......................................................................................................................... 770 Aplicaes em quatro camadas. ................................................................................................................. 771 Um Modelo Baseado em Componentes..................................................................................................... 772 Desenvolvimento em: Os elementos do Framewor .NET em Detalhes .............................................................. 773 Linguagens de programao habilitadas ao .NET ...................................................................................... 773 Common Type System............................................................................................................................... 776 Metadata ..................................................................................................................................................... 777 Assemblies .................................................................................................................................................. 778 Desenvolvimento em: Interfaces com o usurio.. ............................................................................................... 779 Windows Forms .......................................................................................................................................... 780 Web Forms .................................................................................................................................................. 781 Desenvolvimento: Os servidores .NET ................................................................................................................ 782 Desenvolvimento em: ADO.NET......................................................................................................................... 785 Desenvolvimento em: CLR Common Language Runtime ............................................................................... 787 Compilar ou no compilar, eis a questo? ................................................................................................. 788 O papel dos meta dados (Metadata). ......................................................................................................... 788 Integrao Entre Deferentes Linguagens: Promessa ou Realidade? ........................................................... 789 Desenvolvimento em: O processo de execuo de cdigo do CLR. ................................................................... 789 Mais Algumas Observaes Sobre o JIT...................................................................................................... 791 Desenvolvimento em: Assemblies ....................................................................................................................... 792 Uma definio em poucas palavras. ........................................................................................................... 792 Funes do assembly. ................................................................................................................................. 793 Componentes do assembly. ....................................................................................................................... 794 O que temos no Manifesto?.................................................................................................................... 795 Desenvolvimento em: CTS Common Type System ......................................................................................... 796 Classificao dos tipos do CTS ................................................................................................................... 796 Desenvolvimento em: .NET Framework Class Library Biblioteca de classes do Framework .NET ................. 797 Desenvolvimento em: Conceitos bsicos de orientao a objetos ..................................................................... 802 O que um objeto? .................................................................................................................................... 803 Mensagens .................................................................................................................................................. 805 Classes ........................................................................................................................................................ 805 Herana ...................................................................................................................................................... 806 Reutilizao de cdigo. ............................................................................................................................... 810 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO XIV0000Curso Completo Desenvolvimento em: Uma Rpida Introduo Tecnologia ASP.NET.............................................................. 812 Mais uma verso de ASP??? ........................................................................................................................ 812 Novidades e melhorias do ASP.NET. ........................................................................................................... 812 Um viso geral do acesso a dados ................................................................................................................... 820 Quais as principais diferenas do ADO.NET em relao ao ADO? ............................................................ 822 Bancos de Dados Utilizados nos Exemplos ......................................................................................................... 823 O banco de dados do SQL Server pubs. .................................................................................................. 823 Uma Introduo ao ADO.NET............................................................................................................................. 824 Informando que Voc Deseja Utilizar Classes de um Determinado Namespace....................................... 825 Classe ou objeto; objeto ou classe? ............................................................................................................ 825 Estabelecendo Conexes ................................................................................................................................. 825 Estabelecendo uma Conexo com o SQL Server 2000 ou SQL Server 2005 SqlConnection .................. 826 Uma Viso Geral do Processo de Acesso a Dados ........................................................................................... 830 Criando Objetos Command ........................................................................................................................... 831 Retornando dados com DataAdapter ............................................................................................................. 832 O Objeto DataSet ............................................................................................................................................ 834 O objeto DataView.......................................................................................................................................... 835 Um pouco mais sobre o controle DataGrid. ................................................................................................... 841 Primeira maravilha do DataGrid: Paginao. ............................................................................................ 841 Segunda maravilha do DataGrid: Mais do que um conjunto de dados na mesma pgina. ...................... 842 Concluso ....................................................................................................................................................... 846 CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 ................................. 849 Introduo ...................................................................................................................................................... 850 Desenvolvimento Em: Entendendo o Reporting Services .................................................................................. 851 Introduo ao Reporting Services ................................................................................................................... 851 Relatrios acessados via Web Vantagens ................................................................................................. 852 Principais componentes do Reporting Services .............................................................................................. 853 Report Designer .......................................................................................................................................... 854 Report Server .............................................................................................................................................. 854 Desenvolvimento Em: Requisitos para que o Reporting Services Funcione Corretamente. .............................. 858 Requisitos do IIS e do ASP.NET Para a Instalao do Reporting Services ....................................................... 859 Desenvolvimento Em: Importando o Northwind.mdb e Definindo os Relacionamentos......................................................................................................................... 859 Desenvolvimento Em: Utilizando o Reporting Services ..................................................................................... 867 Exemplo prtico O primeiro relatrio. ........................................................................................................ 867 Salvando o Relatrio em Diferentes Formatos ............................................................................................... 876 Publicando o relatrio no servidor WEB ........................................................................................................ 880 Desenvolvimento Em: Criando relatrios do tipo Matrix. ................................................................................. 882 Entendendo as Referncias Cruzadas matrix ............................................................................................... 882 Criando Relatrios usando a opo Grupos. .................................................................................................. 899 Desenvolvimento Em: O console Reporting Services Configuration ................................................................. 907 Introduo ao console Reporting Services Configuration.............................................................................. 907 Concluso ...................................................................................................................................................... 910 CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 ............................................... 913 Introduo ...................................................................................................................................................... 914 Desenvolvimento Em: Snapshot Databases ........................................................................................................ 915 Quando usar a opo de Snapshot ................................................................................................................. 915 Limitaes em Relao ao uso de Snapshots .................................................................................................. 916 Limitaes em Relao ao Banco de Dados Fonte ..................................................................................... 916 Limitaes Existentes nos Snapshots do Banco de Dados ......................................................................... 916 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SUMRIO Curso Completo0000XV Requerimentos de Espao em Disco ............................................................................................................... 917 Recomendaes Para a Criao de um Snapshot ........................................................................................... 918 Recomendaes Sobre a Nomeao dos Snapshots ................................................................................... 918 Limitar o Nmero de Snapshots a Serem Mantidos .................................................................................. 918 Criando Snapshots de um Banco de Dados .................................................................................................... 919 Desenvolvimento Em: Criao de Diagramas do Banco de Dados ..................................................................... 921 Desenvolvimento Em: Transferir Bancos de Dados Entre Instncias ................................................................. 926 O comando sp_detach_db .............................................................................................................................. 929 Desenvolvimento Em: Acessando Dados das Tabelas do Banco de Dados ......................................................... 930 Desenvolvimento Em: Usar a Opo de Gerao de Scripts do SQL Server Management Studio .................................................................................................... 932 Desenvolvimento Em: Edies do SQL Server 2005 ........................................................................................... 938 Introduo ...................................................................................................................................................... 939 SQL Server 2005 Enterprise Edition (32-bits e 64-bits) ................................................................................... 939 SQL Server 2005 Standard Edition (32-bits e 64-bits) ..................................................................................... 939 SQL Server 2005 Workgroup Edition (somente em 32 bits) ........................................................................... 939 SQL Server 2005 Developer Edition (32-bits e 64-bits) .................................................................................. 940 Comparao Entre as Verses ......................................................................................................................... 940 Concluso ....................................................................................................................................................... 941 ANEXO .................................................................................................................................................... 943 NDICE REMISSIVO .................................................................................................................................... 943 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO XVI0000Curso Completo INTRODUO O uso da Tecnologia da Informao TI como suporte s atividades dirias de empresas e indivduos uma realidade inquestionvel. Desde atividades como um simples Cadastro de Clientes at operaes mais complexas como o controle de atividades industriais esto sendo controladas e mesmo executadas com o suporte de sistemas de TI cada vez mais avanados. O que mais nos impressiona, ou assusta, o ritmo com que as mudanas vm acontecendo nos ltimos anos. Talvez o que realmente nos apavora que no sabemos qual ser o ritmo das mudanas para os prximos anos; a nica certeza que temos que o ritmo das mudanas ser ainda maior. Dentro deste cenrio, em que a TI desempenha um papel fundamental, que aumenta, a cada dia, a utilizao de Sistemas Gerenciadores de Banco de Dados Relacionais SGBDR. No existe aplicao que no dependa de dados, os quais so armazenados e manipulados com o auxlio de um SGBDR. Ao consultar, por exemplo, o site da Receita Federal (www.receita.fazenda.gov.br) e verificar se a sua Restituio do Imposto de Renda est no prximo lote, o amigo leitor ir utilizar um sistema que consulta um Banco de Dados. Ao consultar um CEP no site dos Correios, voc tambm ir utilizar informaes armazenadas em um Banco de Dados. Poderamos preencher pginas e pginas com exemplos de aplicaes baseadas em bancos de dados, pelo simples motivo de que toda e qualquer aplicao baseada em um banco de dados. O mais difcil seria encontrar alguns exemplos de sistemas que no dependam de um Banco de Dados. Alm disso, os sistemas de Banco de Dados devem ser capazes de garantir a segurana da informao, garantindo pr-requisitos bsicos de segurana, tais como: Integridade, Confidencialidade e Disponibilidade. Afinal de contas voc quer ter certeza de que o sistema de um site de comrcio eletrnico seguro, antes de digitar o nmero do seu carto de crdito. neste contexto evoluo cada vez mais rpida, necessidade cada vez maior de segurana, desempenho e disponibilidade e Bancos de Dados como suporte aos sistemas de TI que iremos aprender a trabalhar com a mais nova verso do Banco de Dados empresarial da Microsoft Microsoft SQL Server 2005. Neste livro, iremos aprender desde os conceitos bsicos de Banco de Dados Relacionais at a utilizao de recursos avanados de Administrao e Desenvolvimento do Microsoft SQL Server 2005. Voc aprender sobre o modelo relacional de dados, entender os conceitos de chave primria, integridade referencial e normalizao de tabela, aprender a instalar o SQL Server 2005, aprender a fazer o up- grade do SQL Server 2000 para o SQL Server 2005, aprender a utilizar as novas ferramentas de administrao do SQL Server 2005, aprender a criar e a configurar bancos de dados, aprender a criar, configurar e a administrar tabelas, consultas, triggers, aprender sobre segurana, sobre replicao, sobre importao e exportao de dados, sobre o desenvolvimento de aplicaes com o SQL Server 2005, sobre o novo service de criao de relatrios e muito mais. A QUEM SE DESTINA ESTE LIVRO? Se voc est iniciando na rea de Banco de Dados e est precisando aprender os conceitos bsicos, bem como uma ferramenta para aplic-los, este livro foi feito sob encomenda para voc, amigo leitor. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SUMRIO Curso Completo0000XVII Mesmo que voc no conhea Bancos de Dados Relacionais e jamais tenha utilizado o Microsoft SQL Server, em qualquer uma de suas verses, mesmo assim ter condies de acompanhar este livro do incio ao fim. Em cada captulo, apresento os conceitos necessrios ao entendimento dos tpicos em questo, juntamente com exemplos de aplicao prtica dos tpicos vistos no captulo. Desta forma, voc poder acompanhar o livro, aprendendo a utilizar o Microsoft SQL Server de maneira bastante simples e prtica. MAS E OS USURIOS QUE J POSSUEM ALGUMA EXPERINCIA? Se voc j possui alguma experincia com Bancos de Dados e com o Microsoft SQL Server, este livro pode ajud-lo no entendimento de conceitos importantes que voc ainda no domina, como por exemplo: Replicao de dados. Automao de tarefas. Otimizao de ndices. Desenvolvimento de aplicativos. Acesso a dados do SQL Server utilizando Visual Basic, ASP, ASP.NET e o Microsoft Access. Introduo linguagem XML. Utilizao de ADO e OLE DB para acesso aos dados. Utilizao do novo servio de relatrios do SQL Server 2005-03-08. E muitos outros tpicos, indicados para os usurios intermedirios e avanados. Em cada um dos captulos irei apresentar uma srie de exemplos prticos. Atravs destes exemplos, voc poder entender melhor a aplicao dos conceitos tericos apresentados. Em muitas situaes, a melhor maneira de entender um determinado assunto atravs da utilizao do tpico em questo, para resoluo de um problema prtico do dia-a-dia. Muitos dos exemplos apresentados podem ser facilmente adaptados para uso em aplicaes que voc esteja desenvolvendo. Ao final de cada captulo, irei apresentar algumas questes e exerccios, os quais servem como uma reviso dos conceitos apresentados no captulo. VISO GERAL DOS CAPTULOS DO LIVRO Captulo 1: A Teoria de Banco de Dados Relacionais. Neste captulo veremos a teoria de Banco de Dados Relacionais. Voc aprender a identificar o que so Tabelas (entidades) e seus Campos (atributos). Veremos conceitos como Chave Primria, Chave Estrangeira, Relacionamentos, Integridade Referencial, Diagrama Entidade x Relacionamentos, Normalizao e Design de Banco de Dados. Este um captulo que apresenta a parte terica necessria ao acompanhamento do restante dos captulos do livro. Em seguida teremos uma noo de linguagem SQL Structured Query Language, a qual utilizada para efetuar pesquisas em Bancos de Dados, alm de operaes como insero, alterao e excluso de dados. No avance para os captulos seguintes sem compreender bem os conceitos apresentados neste captulo. INTRODUO proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO XVIII0000Curso Completo Captulo 2: Uma Viso Geral do Microsoft SQL Server 2005. Veremos quais as novidades apresentadas pela verso 2005 do Microsoft SQL Server e uma viso geral do SQL Server. Tambm aprenderemos sobre os diferentes ambientes onde o Microsoft SQL Server 2005 pode ser utilizado, bem como as diferentes edies disponveis. Veremos o conceito de aplicaes Cliente/Servidor e de aplicaes de trs ou n camadas. Aprenderemos a fazer a instalao do SQL Server, assim como a criar mltiplas instncias do SQL Server 2005 em um nico servidor. Veremos quais os servios instalados com o SQL Server, e como fazer o gerenciamento dos diferentes servios. Tambm mostrarei como fazer o upgrade do SQL Server 2000 para o SQL Server 2005. Captulo 3: Vamos apresentar a maneira como so armazenados e criados Bancos de Dados. Veremos conceitos como RAID-0, RAID 1 e RAID-5. Tambm aprenderemos a melhor maneira de utilizar o sistema de discos de forma a obter performance dos nossos Bancos de Dados. Aprenderemos a utilizar o SQL Server Management Studio (que o principal console de Administrao do SQL Server 2005, o qual substitui o SQL Server Enterprise Manager, o qual era utilizado no SQL Server 2000) e o Query Analyzer (que a interface baseada em comandos) para criar um Bancos de Dados. Apresentarei diversos exemplos prticos, para ilustrar os conceitos tericos apresentados. Captulo 4: Neste captulo aprenderemos a criar tabelas em um Banco de Dados e definir as diversas caractersticas de cada campo de cada tabela. Tambm aprenderemos sobre ndices e como cri-los. Veremos como a correta utilizao dos ndices pode ajudar na melhoria da performance. Aprenderemos a utilizar diversos comandos T-SQL para criao, administrao, atualizao e monitoramento dos ndices. Captulo 5: Informaes fundamentais esto armazenadas em Bancos de Dados. A perda destas informaes pode representar um desastre irrecupervel. Para evitar que tal desastre acontea, aprenderemos a fazer o backup das informaes contidas em um Banco de Dados do Microsoft SQL Server 2005. Veremos os diferentes tipos de backup possveis, bem como as vantagens e desvantagens de cada tipo. Tambm aprenderemos a fazer a restaurao dos dados, a partir do backup, quando necessrio. Na seqncia, falaremos sobre o agendamento e automatizao de tarefas com o SQL Server 2005. Captulo 6: Nos sistemas atuais, principalmente com o crescimento da Internet, segurana um ponto fundamental. Neste captulo aprenderemos a configurar a segurana de acesso para um Banco de Dados do SQL Server. Veremos como o SQL Server 2005 se integra com o Active Directory do Windows 2000 Server ou do Windows Server 2003 e as diversas opes de configurao possveis. Veremos como configurar a segurana em nvel de SERVIDOR\instncia, Banco de Dados e objetos do banco de Dados. Apresentaremos diversos exemplos passo a passo, para facilitar a aprendizagem dos conceitos apresentados. Voc ver que existem mudanas conceituais e prticas, muito importantes, na maneira como a segurana implementada no SQL Server 2005, em relao maneira como era implementada no SQL Server 2000. Captulo 7: Neste captulo, aprenderemos a configurar, monitorar e gerenciar o servidor SQL. Veremos como utilizar ferramentas como o Microsoft SQL Profiler. Veremos como analisar o desempenho do servidor SQL, atravs da utilizao do Performance Monitor do Windows 2000. Voc tambm aprender a utilizar os recursos do Integration Services do SQL Server 2005 (no SQL Server 2000 era a ferramenta DTS Data Transformation Services). Os recursos do Integration Services estendem, em muito, as funcionalidades do DTS. Voc aprender a usar os recursos do Integration Services, atravs de exemplos prticos, passo a passo. Captulo 8: Replicao de dados. A replicao de dados um dos recursos mais importantes e teis do SQL Server. Veremos o que a replicao e os diferentes tipos disponveis. Mostrarei diversos exemplos proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SUMRIO Curso Completo0000XIX prticos, passo a passo, com explicaes detalhadas de cada um dos componentes da replicao no SQL Server 2005. Voc tambm aprender sobre a arquitetura de replicao implementada pelo SQL Server 2005, sobre os diferentes componentes do sistema de replicao, aprender a implementar e a administrar a replicao e tambm aprender sobre questes de segurana, relacionadas replicao. Captulo 9: Veremos tpicos relacionados com o desenvolvimento de aplicaes com o Microsoft SQL Server 2005. Vamos criar Constraints e Rules. Veremos como estes mecanismos podem ajudar a manter a integridade dos dados. Tambm mostrarei uma das principais novidades do SQL Server 2005, que a integrao do SQL Server com o Framework .NET. O que isso significa? Significa muito, uma verdadeira revoluo. Por exemplo, voc poder criar stored procedures, triggers, constraint e rules usando a sua linguagem de programao preferida, tal como VB.NET, C# ou Delphi.NET. Captulo 10: Neste captulo continuaremos tratando de desenvolvimento no SQL Server 2000. Aprenderemos a criar stored procedures e triggers. Veremos como a utilizao de triggers permite que sejam implementadas Regras de Negcio, no prprio Banco de Dados. Na parte final do captulo, veremos algumas opes avanadas da linguagem T-SQL. Tambm apresentarei as novidades e melhorias da linguagem T-SQL, introduzidas no SQL Server 2005. Captulo 11: Acessando dados de um Servidor SQL com o Microsoft Access e com a tecnologia ASP Active Server Pages. Tambm aprenderemos sobre a estratgia UDA (Universal Data Access) da Microsoft, dentro da qual se encaixam conceitos como ADO (Activex Data Objects) e OLE DB (sem traduo). Captulo 12: Neste captulo, abordarei a linguagem XML Xtensible Markup Language. O mundo Web vive um novo momento, no qual a possibilidade de integrao e troca de dados entre os mais diferentes sistemas uma realidade. O que torna isto possvel a utilizao do XML como uma forma padronizada para troca de informaes entre sistemas que vo, desde aplicativos de mainframe, a sistemas modernos desenvolvidos para o ambiente Windows. Captulo 13: Acessando dados de um Servidor SQL com o Microsoft Access e com a tecnologia ASP.NET. O ASP.NET foi introduzido com o Framework .NET e apresenta muitas melhorias em relao ao ASP 3.0. Com ASP.NET voc tem acesso a uma riqussima biblioteca de tipos e funes do Framework .NET. Neste captulo farei uma apresentao do Framework .NET, mostrando qual a proposta de desenvolvimento do modelo .NET. Tambm mostrarei como criar pginas ASP.NET que fazem conexo com bancos de dados do SQL Server 2005. Captulo 14: Servios de Relatrios do SQL Server 2005 Reporting Services. Uma brincadeira bem conhecida no mundo de TI que Criamos um banco de dados para jogar informaes para dentro dele e depois ficamos ansiosos, para criar os relatrios, para extrair informaes do banco de dados. Mas no temos como fugir desta realidade, ou seja, uma vez criado o banco e todos os seus objetos, o objetivo final extrair informaes deste banco, quer seja via listagens em uma pgina Web criada dinamicamente, quer seja via relatrios impressos. O Reporting Services uma das grandes novidades do SQL Server 2005. Os desenvolvedores iro simplesmente adorar esta novidade, pois com o Report- ing Services ficou muito mais fcil (eu diria uma verdadeira barbada) a criao, configurao, administrao e distribuio de relatrios, a partir de bancos de dados do SQL Server. Captulo 15: Exemplos Prticos e Mais Novidades do SQL Server 2005. Neste captulo eu apresentarei, na forma de exemplos prticos, mais algumas novidades do SQL Server 2005. Apresentarei novidades que, por motivos de organizao do livro, no puderam ser colocadas nos captulos anteriores. Tambm INTRODUO proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO XX0000Curso Completo apresentarei alguns exemplos prticos sobre tarefas comuns ao dia-a-dia do DBA (Database Adminis- trator). Este o tpico captulo do tipo Salada de Frutas. Ou seja, um tpico aqui, outro ali e assim por diante. Julguei importante incluir este captulo, porque nele abordo tpicos prticos, que certamente o DBA usar no seu trabalho dirio. Anexo: Um resumo de comandos da linguagem SQL e exemplos prticos atravs da utilizao do SQL. Fontes adicionais de informao sobre o Microsoft SQL Server 2005, na Internet. EQUIPAMENTO E SOFTWARE NECESSRIOS Para acompanhar todos os exemplos propostos no livro, precisamos de um computador com uma das seguintes verses do Windows: Windows XP Profesional Windows 2000 Professional Windows 2000 Server Windows Server 2003 Tambm faz-se necessrio que o IIS (a verso do IIS depende da verso do Windows que voc estiver usando) esteja instalado e corretamente configurado. Caso voc no tenha o IIS instalado, no se preocupe. Mais adiante, ainda nesta introduo, mostrarei um passo-a-passo, o qual ensina a instalar o IIS, caso o mesmo no tenha sido instalado durante a instalao do Windows 2000. A configurao mnima de hardware necessrio depende de uma srie de fatores. Se o equipamento vai ser utilizado como um servidor Web na Internet, vrios so os aspectos a serem considerados, tais como: Aplicaes implementadas no servidor, nmero de usurios simultneos e recursos de hard- ware necessrios, tais como memria, disco e processador. Nmero estimado de acessos simultneos e dirios, sendo esta uma das estimativas mais difceis de se obter, uma vez que o sucesso de um site pode ser determinado por um nmero muito grande de fatores, nem todos de fcil mensurao. Grau de segurana necessrio e desejvel. Neste caso, entram questes como criptografia, uso de certificados digitais, criao de VPN Virtual Private Networks (Redes Privadas Virtuais), procedimentos de recuperao a falha, plano de contingncia, etc. Percentual de folga desejado para recursos tais como: memria, processador, disco. Ao projetar um site, bastante comum utilizar hardware que atenda as necessidades atuais com uma certa folga, para que seja possvel atender a crescimentos maiores do que os estimados. Alguns sites famosos j enfrentaram problemas de crescimentos maiores do que os esperados, em um perodo muito curto de tempo. Quando isso acontece, mais recursos de hardware precisam ser adicionados com o site em funcionamento. a bem conhecida situao de trocar o pneu com o carro andando. Eu diria que hoje, na velocidade em que as mudanas acontecem, seria um pouco pior, algo como: trocar a turbina com o avio em pleno vo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SUMRIO Curso Completo0000XXI Figura i.1 Janela Adicionar ou remover programas. Como equipamento para ser utilizado em casa, ou em um laboratrio de teste na sua empresa, com o objetivo de acompanhar os exemplos apresentados neste livro, aconselho a seguinte configurao mnima: Processador Pentium 1 GHz ou superior. 256 MB de RAM, quanto mais melhor. 10 GB de disco rgido. Drive de CD-ROM. Alm de uma das verses do Windows citadas e do IIS, tambm precisaremos ter os seguintes programas e servios instalados, para que possamos acompanhar os exemplos deste livro: Internet Explorer 6.x ou superior. Microsoft Access 2000 ou superior. INSTALANDO E TESTANDO O IIS Caso voc no tenha instalado o IIS, quando da instalao do Windows, possvel fazer a instalao quando for necessrio. A seguir mostrarei, passo a passo, como instalar o IIS 6.0 (que a verso que vem com o Windows Server 2003. O procedimento para instalar a verso do IIS que vem com o Win- dows 2000 ou Windows XP praticamente o mesmo). Para instalar o IIS 6.0, o qual faz parte do Windows Server 2003, siga os passos indicados a seguir: 1. Faa o logon no Windows com uma conta com permisses de administrador. 2. Abra o Painel de controle (Iniciar -> Painel de controle). 3. Abra a opo Adicionar ou remover programas. Surgir a janela indicada na Figura i.1. INTRODUO proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO XXII0000Curso Completo N O T A 4. No lado esquerdo da janela, d um clique na opo Adicionar/remover componentes do Windows. 5. Ser exibida, por breves instantes, uma mensagem Aguarde. Depois, surge a janela Assistente de componentes do Windows, indicada na Figura i.2. Figura i.2 A janela para alterar a instalao do Windows. Utilizando o Assistente de componentes do Windows, podemos adicionar novos servios do Windows 2000, ou remover servios que no sejam mais necessrios. Por exemplo, atravs desta janela que voc pode instalar servios tais como o DNS, DHCP, WINS e tantos outros disponveis no Windows Server 2003. 6. V descendo com a barra de rolagem vertical, at localizar o item Application Server (Servidor de aplicativo) e clique neste item para marc-lo, conforme indicado na Figura i.3. 7. Clique no boto Details (Detalhes). Ser exibida uma lista com os diversos servios relacionados ao desenvolvimento de aplicaes. Marque a opo Internet Information Services (IIS), conforme indicado na Figura i.4. 8. Observe que ao marcar esta opo, o boto Details (Detalhes) habilitado. O IIS formado por uma srie de componentes e funcionalidades. Existe um servidor de pginas (servidor HTTP), um servidor de ftp, um servidor de notcias (NNTP) e assim por diante. Ao instalarmos o IIS, podemos escolher um ou mais dos seus componentes, dependendo das necessidades do nosso servidor Web. No necessrio que todos os componentes do IIS sejam instalados. Por exemplo, se o servio de cpia de arquivos no for necessrio, no temos por que instalar o servio de ftp. Na prtica, em um servidor da sua rede, instale somente os servios realmente necessrios. No uma boa idia instalar todos os servios disponveis, mesmo que somente alguns sejam utilizados. Quanto mais servios instalados, maiores as possibilidades de ataque e quebra da segurana do servidor, por parte de um hacker, alm da maior utilizao de memria e processador no servidor. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SUMRIO Curso Completo0000XXIII Figura i.3 O grupo Application Server. Figura i.4 Selecionando o IIS para instalao. 9. Clique no boto Details (Detalhes). Ser exibida uma lista com os componentes que fazem parte do IIS. 10. Na lista de opes disponveis, exibida na Figura i.5, certifique-se de que todas as opes estejam marcadas, conforme indicado na Figura i.5. No esquea de usar a barra de rolagem vertical, para marcar tambm os componentes que no so exibidos na tela. INTRODUO proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO XXIV0000Curso Completo N O T A Figura i.5 Instalando todos os componentes do IIS. 11. A opo Servidor World Wide Web Service tambm dividida em vrios componentes. Clique nesta opo para marc-la. Em seguida clique no boto Details (Detalhes). Ser exibida a janela com os componentes do servio World Wide Web. Certifique-se de que todas as opes estejam marcadas, conforme indicado na Figura i.6. Figura i.6 Opes do servidor World Wide Web. Importante: Nunca demais repetir que a instalao de todos os componentes est sendo feita apenas para uso didtico, para que voc aprenda a utiliz-los. Na prtica, devem ser instalados apenas os componentes realmente necessrios, por motivos j expostos anteriormente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SUMRIO Curso Completo0000XXV 12. Clique em OK para fechar a janela da Figura i.6. Voc estar de volta janela Internet Information Services (IIS), indicada na Figura i.5. Clique em OK para fech-la e aplicar as configuraes selecionadas. 13. Voc estar de volta janela do Assistente de componentes do Windows. Observe que, aps ter selecionado os componentes a serem instalados, o Windows Server 2003 exibe o espao em disco necessrio para a instalao dos novos componentes selecionados. 14. D um clique no boto Next (Avanar) para ir para a prxima etapa do assistente. 15. O Windows Server 2003 exibe uma janela indicando o progresso da instalao. 16. Caso o Windows Server 2003 no encontre os arquivos necessrios instalao do IIS, no disco rgido, voc ser solicitado a inserir o CD de instalao do Windows Server 2003. 17. Insira o CD de instalao do Windows Server 2003 e aguarde. O Windows detecta que o CD foi inserido e inicia, automaticamente, o processo de cpia dos arquivos. 18. Aps concluda a cpia dos arquivos, o assistente emite uma mensagem dizendo que o processo foi concludo com sucesso. 19. D um clique no boto Finish (Concluir) para encerrar o assistente. 20. Voc estar de volta janela Adicionar ou remover programas. D um clique no boto Close (Fechar) para sair desta janela. 21. Voc estar de volta ao Painel de controle. Feche o Painel de controle. 22. Agora o IIS est instalado e pronto para ser utilizado, pelo menos as funcionalidades bsicas do IIS. Agora que j temos o IIS instalado vamos testar se ele est funcionando corretamente. Figura i.7 O IIS instalado e funcionando e a pgina padro sendo exibida. INTRODUO proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO XXVI0000Curso Completo Para testar se o IIS foi instalado com sucesso, siga os seguintes passos: 1. Abra o Internet Explorer. 2. Digite o seguinte endereo: http://localhost 3. Ser aberta uma pgina padro (iisstart.htm), que uma pgina apenas com um aviso de que o site est em construo, conforme indicado na Figura i.7. 4. Esta a pgina inicial do IIS logo aps a instalao. A pasta padro do IIS fica gravada em C:\Inetpub\wwwroot. Isto comprova que o IIS foi instalado com sucesso. Feche o Internet Explorer. VAMOS AO TRABALHO Feitas as devidas apresentaes, hora de iniciarmos nossa jornada atravs do Microsoft SQL Server 2005. O cdigo-fonte, com os exemplos de programao, e os scripts SQL, apresentados no livro, esto disponveis para donwload no site da Editora Axcel Books: www.axcel.com.br. No Captulo 1 voc aprender sobre os fundamentos tericos, que formaram a base para acompanhar todos os demais captulos do livro. Eu considero este, sem dvida, o captulo mais importante do livro. Entender bem os fundamentos do Modelo Relacional fundamental para o aprendizado do SQL Server. Ento leia e releia o Captulo 1, at que no fique nenhuma dvida sobre os tpicos tericos que sero apresentados no Captulo 1. Caso voc tenha alguma sugesto sobre tpicos que gostaria de ver includa em futuras edies deste livro, queira enviar crticas e sugestes ou relatar algum erro encontrado. Basta entrar em contato atravs do e-mail: webmaster@juliobattisti.com.br. Ser um prazer trocar idias com o amigo leitor. Desejo a todos uma boa leitura, e que este trabalho possa ajud-los na busca de um aperfeioamento contnuo, rumo ao sucesso em sua carreira profissional. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Parte 1 FUNDAMENTOS proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Captulo 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 40000Curso Completo N O T A INTRODUO correto dizer que existe um captulo que seja o mais importante de um livro?. Eu acredito que sim. o caso deste primeiro captulo, o qual, sem nenhuma dvida, o mais importante deste livro. Este captulo apresenta os fundamentos tericos do modelo relacional de dados e da linguagem T-SQL, os dois pilares sobre os quais foram construdos todos os servios do SQL Server 2005. Neste captulo voc aprender sobre os conceitos bsicos de Bancos de Dados Relacionais. Tambm aprender sobre os comandos bsicos da linguagem SQL Structured Query Language. No SQL Server 2005 a linguagem chamada de T-SQL, sendo o T de Transact. Durante muitos anos, no incio da informatizao das empresas, as aplicaes eram baseadas em computadores de grande porte, conhecidos como Mainframes. Nesta poca as aplicaes, normalmente desenvolvidas em linguagens de programao tais como Cobol, PL1, Algol ou Natural Adabas, ficavam residentes nestes computadores e os dados tambm. A lgica para acesso aos dados estava embutida dentro da prpria aplicao. Com isso, se mudasse a estrutura de armazenamento das informaes, a aplicao teria que ser reescrita. Para acessar as aplicaes, o usurio utilizava os chamados terminais burros (tambm conhecidos como terminais verdes, devido cor das letras normalmente ser verde em um fundo preto). Estes terminais eram, simplesmente, uma extenso do mainframe, equipados com teclado e vdeo. Nenhum processamento era realizado no prprio termi- nal. Todo e qualquer comando era enviado para processamento no mainframe, e os resultados mandados de volta para o terminal. Observe que utilizei os verbos sempre no passado. Voc deve estar pensando: Este cara est maluco, pois ainda hoje muitas aplicaes rodam, e bem, no bom e velho mainframe. E eu serei obrigado a concordar com o amigo leitor. Muitas e importantes so as aplicaes que ainda rodam em main- frames e duvido que em um futuro prximo, digamos cinco anos, todas estas aplicaes sejam migradas para outras plataformas e modelos de desenvolvimento. Mas tambm precisamos admitir que muito pequeno, para no dizer mnimo, o desenvolvimento de novas aplicaes para o modelo Terminal mainframe clssico. Com o deslocamento do modelo de desenvolvimento do mainframe; primeiro para o modelo Cliente/ Servidor clssico de duas camadas, depois a evoluo para o modelo de desenvolvimento Web com trs ou mais camadas, tambm sofreram modificaes os Bancos de Dados que do suporte ao desenvolvimento destas aplicaes. O mainframe utiliza formatos de Bancos de Dados proprietrios, criados pelos fabricantes dos equipamentos, na maioria dos casos a IBM. No Captulo 2 iremos detalhar os modelos de desenvolvimento em duas, trs ou n camadas. Tambm falaremos sobre as vantagens e desvantagens de cada modelo. Com a expanso cada vez maior das redes locais de computadores e a interconexo destas redes entre si, formando a WAN da empresa e a interconexo mundial das WANs, formando a Internet, e com a expanso do modelo Cliente/Servidor em 2 ou mais camadas, a utilizao dos chamados Bancos de Dados Relacionais cresceu exponencialmente. Hoje a grande maioria das novas aplicaes proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo00005 N O T A (para no dizermos a quase totalidade) baseada neste tipo de Bancos de Dados, ou seja: Bancos de Dados Relacionais. Neste captulo falarei sobre os princpios bsicos dos Bancos de Dados Relacionais, que o modelo de Banco de Dados utilizado pelo Microsoft SQL Server 2005. Outros Bancos de Dados bastante conhecidos e que tambm utilizam este modelo: Microsoft Access para aplicaes de menor porte. Oracle. DB2 da IBM. Sybase. MySQL para Linux. O modelo Relacional tambm possui suas limitaes, porm bastante adequado para a grande maioria das aplicaes comerciais atualmente em uso ou sendo desenvolvidas. Algumas aplicaes especiais que necessitam utilizar dados mais complexos, como por exemplo arquivos multimdia, dados geogrficos, dados espaciais e sries temporais, podem se beneficiar mais das caractersticas dos chamados Bancos de Dados Orientados a Objetos. Este tipo de Banco de Dados ainda no amplamente utilizado, a no ser em situaes especficas. Um exemplo de Banco de Dados Orientado a Objetos o Jasmine da CA. Estudaremos, ao longo deste captulo, os princpios bsicos dos Bancos de Dados Relacionais devido a sua grande aceitao e utilizao. Caso voc queira maiores detalhes sobre este tipo de Banco de Dados, existe uma farta bibliografia, bem como inmeros sites na Internet com informaes sobre o assunto. O Microsoft SQL Server utiliza uma srie de comandos para realizar as diversas operaes sobre os dados armazenados nos Bancos de Dados do SQL Server. So exemplos de operaes realizadas sobre os dados: Selecionar um conjunto de registros com base em um ou mais critrios especificados. Ordenar um conjunto de registros com base em um ou mais campos de dados. Alterar informaes no Banco de Dados. Excluir informaes no Banco de Dados. Inserir informaes no Banco de Dados. Para realizar estas operaes utilizada uma linguagem conhecida com SQL Structured Query Language. A linguagem SQL foi desenvolvida pela IBM, porm, devido ao seu poder e facilidade de utilizao, rapidamente tornou-se um padro de mercado, sendo hoje utilizada pela maioria dos Bancos de Dados que seguem o modelo Relacional. No SQL Server 2005 a linguagem chamada de T-SQL, sendo o T de Transact. Pequenas diferenas podem existir entre os comandos SQL de diferentes Bancos de Dados como por exemplo o Microsoft SQL Server e o Oracle. Neste livro sero utilizados, evidentemente, os comandos e a sintaxe da linguagem T-SQL, a qual utilizada pelo Microsoft SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 60000Curso Completo FUNDAMENTOS EM: CONCEITOS BSICOS DE BANCOS DE DADOS RELACIONAIS PR-REQUISITOS Nenhum. METODOLOGIA Apresentao e descrio dos elementos que fazem parte do modelo Relacional. TCNICA Utilizao de exemplos prticos para ilustrar a teoria apresentada. Neste item apresentarei os principais conceitos sobre Bancos de Dados Relacionais. Estes conceitos so importantes (eu diria at fundamentais) para a correta utilizao dos Bancos de Dados, bem como para o projeto e criao de Bancos de Dados. O SQL Server 2005 um Banco de Dados que segue o modelo Relacional. Conhecer os fundamentos tericos sobre bancos relacionais indispensvel. A teoria sobre o Modelo Relacional de Dados est para o SQL Server 2005, assim como o Clculo e a Fsica esto para um Engenheiro (e sei muito bem deste aspecto, pois a minha formao em Engenharia Eltrica). Em muitas situaes teremos que conectar nossas aplicaes com Bancos de Dados j existentes, e neste caso precisamos conhecer os conceitos aqui apresentados, para podermos utilizar o Banco de Dados de uma maneira correta e otimizada. Em outras situaes teremos que criar o Banco de Dados a ser utilizado pela aplicao que est sendo desenvolvida. Neste caso, os conceitos apresentados neste captulo auxiliam no projeto e criao de um Banco de Dados melhor estruturado e otimizado, tanto em termos de espao de armazenamento, quanto da qualidade, confiabilidade, segurana, desempenho e disponibilidade das informaes nele contidas. Apresentarei os seguintes tpicos tericos, sobre o Modelo Relacional de Dados: Entidades e Atributos, os elementos bsicos de um Banco de Dados. Chave Primria. Relacionamentos entre Entidades (Tabelas). Integridade Referencial. Normalizao de Tabelas. Anlise de um Banco de Dados relacional. ENTIDADES E ATRIBUTOS Toda a informao de um Banco de Dados Relacional armazenada em Tabelas, as quais tambm so chamadas (o termo tcnico) de Entidades. Por exemplo, poderamos ter uma tabela Clientes. Para cada um dos clientes poderamos armazenar informaes tais como nmero do CPF, cdigo do cliente, nmero do RG, nome completo, endereo, bairro, cidade, estado, CEP, etc. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo00007 Essas diversas caractersticas de cada cliente so os Atributos do cliente, muitas vezes chamados de campos da entidade Cliente, ou de maneira mais simples: Os campos da tabela Clientes. O conjunto de todos os atributos de um cliente e os valores de cada atributo formam o Registro do Cliente. Com isso teremos a tabela constituda por um conjunto de registros (uma linha completa com informaes sobre o cliente) e cada registro formado por um conjunto de atributos (Nome, Endereo, etc.). Resumindo: Entidade ou Tabela -> Um conjunto de registros. Campos ou Atributos -> Caractersticas individuais de cada entidade. Considere o exemplo da Figura 1.1: temos uma tabela Clientes com os seus diversos campos (atributos). Figura 1.1 A entidade (tabela) Clientes e seus diversos atributos (campos). Neste exemplo, temos uma entidade Clientes e seus diversos atributos: Cdigo do cliente. Nome da empresa. Nome do contato. Cargo do contato. Endereo. Neste caso, os campos (Atributos) da tabela Clientes so: Cdigo do cliente, Nome da empresa, Nome do contato, Cargo do contato, Endereo, etc. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 80000Curso Completo Em cada linha temos um conjunto de atributos e seus valores. Cada linha forma um registro que identifica um cliente. Cada coluna um atributo da tabela Clientes. Considere o exemplo da Figura 1.2, onde temos a tabela Clientes e os dados para os primeiros registros sendo exibidos: Figura 1.2 Os primeiros registros da tabela Clientes, sendo exibidos. Um dos grandes desafios em se projetar um Banco de Dados com sucesso a correta determinao das entidades que existiro no Banco de Dados (as tabelas que faro parte do Banco de Dados, de tal maneira que os requisitos do Banco de Dados sejam atendidos), bem como dos atributos de cada entidade (os campos que existiro em cada tabela). Mais adiante veremos algumas dicas e tcnicas para determinar as tabelas necessrias, bem como os campos necessrios em cada tabela. importante lembrar que o que determina quais as tabelas e campos em cada tabela que sero necessrios so o escopo e os objetivos do problema que est sendo abordado. Por exemplo, se estamos desenvolvendo um sistema para acompanhamento do desempenho individual de cada funcionrio, com certeza no teremos necessidade de uma tabela de clientes (permitam-me o exagero, para poder ilustrar bem a importncia de manter o objetivo do Banco de Dados, sempre em mente). Por outro lado, se o desempenho de cada funcionrio a ser acompanhado estiver ligado ao nmero de clientes atendidos pelo funcionrio ou ao volume de vendas para cada cliente, a tabela Clientes passa a ter importncia para o problema em questo. Com isso podemos dizer que o que determina as tabelas e campos necessrios o problema real que o sistema a ser desenvolvido dever solucionar. Outro fato importante, e que iremos repetir ao longo deste captulo, que cada tabela deve conter dados de um determinado assunto. No devemos misturar dados de diversos assuntos em uma mesma proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo00009 tabela. A regra nmero 1 do projeto de Banco de Dados : Assuntos diferentes em tabelas diferentes. Ou de outra maneira: No se misturam campos de dois ou mais assuntos na mesma tabela. Observe o exemplo da Tabela 1.1. Tabela 1.1 Clientes e seus pedidos. Observe que, nesta tabela, cometemos, propositalmente, o erro de misturar dois assuntos: Dados sobre os Clientes Dados sobre os Pedidos dos Clientes Quando este tipo de erro cometido, temos uma srie de problemas que iro refletir em todo o sistema que est sendo desenvolvido. Dentre os principais problemas podemos citar: Informao repetida: Observe que, para cada pedido de um determinado cliente, precisamos informar novamente os campos: Nome, Endereo e Fone do cliente. Informao inconsistente: Observe que, por um erro de digitao, o nome do cliente Jos da Silva est digitado incorretamente (sem o acento) no segundo registro, e o seu endereo est digitado incorretamente, no terceiro registro. Isso causa inconsistncias no Banco de Dados, gerando resultados errados quando forem feitas pesquisas pelo nome do cliente ou pelo endereo ou quando forem gerados relatrios com totalizaes por cliente, tais como o total anual de vendas para cada cliente ou a mdia mensal de vendas, por cliente. Para evitar este tipo de problema, deveramos separar as informaes dos clientes e dos seus pedidos em duas tabelas distintas. Veremos como fazer isso mais adiante, neste captulo. Por enquanto, mantenha sempre em mente a regra nmero um do projeto de Bancos de Dados relacionais: Assuntos diferentes em tabelas diferentes. Ou de outra maneira: No se misturam campos de dois ou mais assuntos na mesma tabela. O CONCEITO DE CHAVE PRIMRIA O conceito de Chave Primria fundamental para entender o funcionamento de um Banco de Dados. Vamos procurar entender o que significa um campo ser a chave primria de uma tabela. Nome Endereo Fone Nm. Pedido Data Valor Jos da Silva Rua ABC 40 222-2222 10234 10-01-2001 R$ 450,00 Jose da Silva Rua ABC 40 222-2222 10345 12-01-2001 R$ 370,00 Jos da Silva Rua ACB 40 222-2222 12321 23-02-2001 R$ 234,30 Para Pedro Rua YYU 234 111-1111 12345 23-02-2001 R$ 654,33 Para Pedro Rua YYU 234 111-1111 12444 28-02-2001 R$ 456,70 Maria Jos Rua BBB 221 123-2222 12445 01-03-2001 R$ 443,25 Maria Jos Rua BBB 221 123-2222 12446 07-03-2001 R$ 500,32 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 100000Curso Completo Ao definirmos um campo como sendo uma chave primria, estamos informando ao Banco de Dados que no podem existir dois registros com o mesmo valor na chave primria, ou seja, os valores no campo Chave Primria precisam ser nicos. Por exemplo, se defino um campo Nmero da Identidade da tabela Clientes como sendo uma chave primria, estou dizendo ao Banco de Dados que no podem existir dois clientes com o mesmo valor no campo Nmero da Identidade. Na prtica, estou garantindo que no podem ser cadastrados dois clientes com o mesmo nmero de identidade. Em outras palavras, poderamos dizer que o campo Chave Primria identifica de maneira nica cada registro de uma tabela, isto , de posse do valor da chave primria somente localizaremos um registro com aquele valor no campo Chave Primria. Outro exemplo de campo que ilustra bem o conceito de chave primria um campo Nmero do pedido, na tabela Pedidos. Este campo deve ser nico, o que na prtica significa que no podem ser cadastrados dois pedidos, com o mesmo valor no campo Nmero do Pedido. Ns veremos a parte prtica, sobre como definir um campo para ser do tipo chave primria, no Captulo 4. Este um conceito muito importante, pois conforme veremos mais adiante os conceitos de Integridade Referencial e Normalizao esto diretamente ligados ao conceito de chave primria. Alguns exemplos de campos que podem ser definidos como Chave Primria em suas respectivas tabelas: O campo Nmero do Pedido, em um tabela de Pedidos. O campo Nmero da Identidade ou CPF em uma tabela de Clientes Pessoa Fsica. O campo Nmero do CNPJ em uma tabela de Clientes Pessoa Jurdica. O campo Cdigo do Produto em uma tabela de Produtos. O campo ISBN em uma tabela de Livros. Na Figura 1.3, vemos um exemplo da tabela Clientes onde o campo Cdigo do Cliente definido como uma chave primria. Observe que no existem dois clientes com o mesmo cdigo. Um detalhe importante que a chave primria pode ser formada pela combinao de mais do que um campo. Podem existir casos (embora no sejam muito comuns) em que um nico campo no capaz de atuar como chave primria, pelo fato de apresentar valores repetidos. Nestes casos, podemos definir uma combinao de dois ou mais campos para ser a nossa chave primria. Alm disso, uma tabela somente pode ter uma chave primria, seja ela simples ou composta. Outro detalhe importante que nem todas as tabelas tm que ter, obrigatoriamente, uma chave primria (seja simples ou composta). Dependendo de cada projeto, pode haver situaes onde uma tabela no ter nenhum campo (ou combinao de campos), definido como do tipo chave primria. Um cuidado especial que devemos ter quanto ao desempenho das consultas em tabelas que possuem chave primria composta por mais do que um campo. Em muitas situaes, o desempenho das consultas inversamente proporcional ao tamanho da chave primria. Com isso, quanto maior o tamanho da chave primria, menor o desempenho das consultas, isto , mais demoradas se tornam as consultas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo000011 Figura 1.3 O campo Cdigo do Cliente uma chave primria. Na prtica, dificilmente teremos uma chave primria composta por mais do que trs ou quatro cam- pos. Se voc se deparar com uma situao em que precise de uma chave primria composta de mais de quatro campos, revise o projeto do Banco de Dados, porque devem existir alguns problemas. RELACIONAMENTOS ENTRE TABELAS Na prtica, em um Banco de Dados Relacional, podem existir diversas tabelas, como por exemplo: Clientes Produtos Pedidos Detalhes do Pedido Fornecedores Categorias Funcionrios, etc. Embora as informaes estejam separadas em cada uma das tabelas, devemos ter algum mecanismo que nos permita reunir dados de duas ou mais tabelas. Por exemplo, para fazer um relatrio do total anual de vendas, por funcionrio, precisarei de informaes das seguintes tabelas: Funcionrios Pedidos Detalhes do Pedido. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 120000Curso Completo O mecanismo que nos permite acessar, de maneira consolidada, dados de diversas tabelas o Relacionamento entre Tabelas. Por exemplo: um pedido feito por um cliente e neste pedido podem existir diversos Itens. As informaes sobre o cabealho do pedido (Nmero do pedido, Data, Cdigo do cliente, Endereo de entrega, Cdigo do funcionrio, etc.) so armazenadas na tabela Pedidos. J as informaes sobre os itens do pedido (Nmero do pedido para identificar a qual pedido pertence o item, Cdigo do produto, Quantidade, Preo unitrio, etc.) so armazenadas na tabela Detalhes do Pedido. Alm disso, cada pedido possui um nmero nico, mas um mesmo cliente pode fazer diversos pedidos. Com esta separao entre as informaes do cabealho do pedido (na tabela Pedidos) e dos Itens do pedido (na tabela Detalhes do pedido), evitamos uma srie de problemas, tais como a repetio desnecessria de informaes. Se colocssemos todas as informaes em uma nica tabela, teramos que repetir todos os dados do cabealho do pedido, para cada um dos itens do pedido. E quem garante que estas informaes seriam inseridas corretamente, para todos os itens de um pedido? Veja que o pargrafo acima descreve relaes do mundo real. Estas relaes do mundo real so o nosso guia, para definir as relaes entre as diversas tabelas do Banco de Dados. Em um Banco de Dados precisamos de alguma maneira para representar estes relacionamentos da vida real, em termos das tabelas e seus atributos. Isto possvel com a utilizao dos Relacionamentos, os quais podem ser de trs tipos: Um para Um Um para Vrios Vrios para Vrios Vamos analisar cada um destes tipos de relacionamentos, individualmente e detalhadamente. Procure entender bem o conceito de relacionamentos, pois este um conceito fundamental para entender o SQL Server 2005. RELACIONAMENTO DO TIPO UM PARA UM Esta relao existe quando os campos que se relacionam so ambos chaves primrias em suas respectivas tabelas. Cada um dos campos no apresenta valores repetidos. Na prtica existem poucas situaes onde utilizaremos um relacionamento deste tipo. Vamos imaginar o seguinte exemplo: uma escola com um cadastro de alunos na tabela Alunos, e destes apenas uma pequena parte participa da banda da escola. Por questes de projeto do Banco de Dados podemos optar por criar uma segunda tabela Alunos da Banda, a qual pode se relacionar com a tabela Alunos atravs de um relacionamento Um para Um. Cada aluno somente cadastrado uma vez na tabela Alunos e uma nica vez na tabela Alunos da Banda. Poderamos utilizar o campo Matrcula do Aluno como o campo que relaciona as duas tabelas. Na tabela Alunos da Banda poderamos colocar apenas o nmero da matrcula do aluno, alm das informaes a respeito do instrumento que ele toca, tempo de banda, etc. Quando fosse necessrio buscar as informaes tais como Nome, Endereo, etc., estas poderiam ser recuperadas atravs do proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo000013 relacionamento existente entre as duas tabelas, evitando, com isso, que a mesma informao (Nome, Endereo, etc.) tenha que ser duplicada nas duas tabelas, diminuindo a probabilidade de erros de digitao. Na Figura 1.4 vemos o exemplo de um relacionamento do tipo Um para Um entre as tabelas Alunos e Alunos da Banda. Figura 1.4 Um relacionamento do tipo Um para Um. RELACIONAMENTO DO TIPO UM PARA VRIOS Este, sem nenhuma dvida, o tipo de relacionamento mais comum entre duas tabelas. Uma das tabelas (o lado Um do relacionamento) possui um campo que a chave primria e a outra tabela (o lado Vrios) se relaciona atravs de um campo cujos valores podem se repetir. Considere o exemplo entre a tabela Clientes e a tabela Pedidos. Cada cliente somente cadastrado uma nica vez na tabela Clientes (por isso o campo Cdigo do Cliente uma chave primria, indicando que no podem ser cadastrados dois clientes com o mesmo valor no campo Cdigo do cliente). Com isso a tabela Clientes ser o lado Um do relacionamento. Por outro lado, cada cliente pode fazer diversos pedidos, portanto o mesmo valor para o campo Cdigo do Cliente poder aparecer vrias vezes na tabela Pedidos tantas vezes quantos forem os pedidos que o Cliente tiver feito. Por exemplo, se o cliente cujo cdigo for ALFKI tiver feito 10 pedidos, o cdigo deste cliente aparecer em 10 registros diferentes, na tabela Pedidos. J na tabela Clientes, o cdigo ALFKI aparecer em um nico registro, o qual representa o cadastro do cliente. Por isso que temos um relacionamento do tipo Um para Vrios entre as tabelas Clientes e Pedidos, atravs do campo Cdigo do Cliente, indicando que um mesmo cliente pode fazer diversos pedidos. O lado um na tabela Clientes cada cliente ser cadastrado um nica vez; o lado vrios a tabela Pedidos cada cliente poder fazer vrios pedidos. Na Figura 1.5, vemos um exemplo de um relacionamento Um para Vrios entre as tabelas Clientes e Pedidos, atravs do campo Cdigo do cliente. No lado Um do relacionamento o campo definido como uma chave primria (campo CdigoDoCliente na tabela Clientes) e no lado Vrios o campo CdigoDoCliente no uma chave primria (campo CdigoDoCliente na tabela Pedidos), indicando que no lado Vrios o cdigo do cliente pode se repetir, o que faz sentido, uma vez que um mesmo cliente pode fazer diversos pedidos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 140000Curso Completo N O T A Figura 1.5 Um relacionamento do tipo Um para Vrios. Podemos citar outro exemplo clssico de relacionamentos do tipo Um para Vrios: entre as tabelas Pedidos e Detalhes do Pedido, atravs do campo NmeroDoPedido. Na tabela Pedidos o campo NmeroDoPedido chave primria (no podem ser cadastrados dois ou mais pedidos com o mesmo nmero). Na tabela Detalhes do Pedido, o campo NmeroDoPedido no chave primria. Na tabela Detalhes do Pedido, temos as informaes sobre os diversos itens de cada pedido. Este relacionamento indica que um mesmo pedido pode ter diversos itens, o que faz sentido. Na Figura 1.6, vemos um exemplo de um relacionamento Um para Vrios entre as tabelas Pedidos e Detalhes do Pedido, atravs do campo NmeroDoPedido. Figura 1.6 Mais um exemplo de relacionamento do tipo Um para Vrios. O campo do lado Vrios do relacionamento tambm conhecido como sendo uma Chave Estrangeira. No exemplo da Figura 1.6, o campo NmeroDoPedido, na tabela Detalhes do Pedido, seria a nossa Chave Estrangeira do relacionamento em questo. No exemplo da Figura 1.5, o campo CdigoDoCliente, na tabela Clientes, seria a chave estrangeira. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo000015 RELACIONAMENTO DO TIPO VRIOS PARA VRIOS Este tipo de relacionamento ocorre em uma situao onde, em ambos os lados do relacionamento, os valores podem se repetir. Vamos considerar o caso entre as tabelas Produtos e Pedidos. Posso ter vrios pedidos nos quais aparece um determinado produto, e alm disso vrios produtos podem aparecer no mesmo pedido. Esta uma situao em que temos um relacionamento do tipo Vrios para Vrios: vrios produtos podem aparecer em vrios pedidos, e vrios pedidos podem conter vrios produtos. Na prtica no temos como implementar um relacionamento deste tipo, devido a uma srie de problemas que este tipo de relacionamento traria. Para evitar problemas, bastante comum quebrarmos um relacionamento do tipo Vrios para Vrios em dois relacionamentos do tipo Um para Vrios. Isso feito atravs da criao de uma nova tabela, a qual fica com o lado Vrios dos relacionamentos. No nosso exemplo poderamos criar a tabela Detalhes do Pedido, onde ficam armazenadas as informaes sobre os diversos itens de cada pedido. Desta forma, ao invs de termos um relacionamento do tipo Vrios para Vrios, teremos dois relacionamentos do tipo Um para Vrios, conforme indicado na Figura 1.7: Figura 1.7 Quebrando um relacionamento Vrios para Vrios. Esta situao, em que um relacionamento Vrios para Vrios quebrado em dois relacionamentos do tipo Um para Vrios, bastante comum. Diversas vezes utilizamos esta tcnica para eliminar uma srie de problemas no Banco de Dados, tais como informao repetida, inconsistncia de dados e mistura de dois ou mais assuntos na mesma tabela. Agora que j conhecemos os tipos de relacionamentos existentes, veremos o conceito de Integridade Referencial. O mecanismo da Integridade Referencial nos garante a consistncia dos dados. INTEGRIDADE REFERENCIAL A Integridade Referencial utilizada para garantir a integridade dos dados entre as diversas tabelas relacionadas de um Banco de Dados, evitando inconsistncias nos dados, bem como repeties desnecessrias. Por exemplo, existe um relacionamento do tipo Um para Vrios entre a tabela Clientes e a tabela Pedidos (um cliente pode fazer vrios pedidos). Com a Integridade Referencial, o Banco de Dados no permite que seja cadastrado um pedido para um cliente que ainda no foi cadastrado na tabela de clientes. Atravs da Integridade Referencial, tambm podemos garantir outros mecanismos importantes: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 160000Curso Completo Quando o cdigo de um cliente for alterado na tabela Clientes, o Banco de Dados atualiza, automaticamente, todos os cdigos do cliente na tabela Pedidos, de tal maneira que no fiquem registros rfos, isto , registros de pedidos com um cdigo de cliente que no existe mais na tabela Clientes. Essa ao conhecida como Propagar atualizao dos campos relacionados ou Propagar atualizaes em cascata. Quando um cliente for excludo da tabela Clientes, podemos pedir para que o Banco de Dados exclua, na tabela Pedidos, todos os pedidos para o cliente que est sendo excludo. Essa opo conhecida como Propagar excluso dos registros relacionados ou Propagar excluses em cascata, e pode ser habilitada ou no, dependendo do projeto do Banco de dados. Caso seja necessrio manter todo o histrico de compras do cliente, por exemplo, esta opo no deve ser habilitada. Com isso, quando o cliente for eliminado da tabela Clientes, os seus pedidos continuaro gravados na tabela Pedidos. Essas opes so definidas no momento da criao do Banco de Dados, quando da criao das tabelas e dos relacionamentos entre as tabelas. A opo de Propagar atualizao dos campos relacionados utilizada na maioria das situaes, j a opo de Propagar excluso dos registros relacionados deve ser estudada, caso a caso. NORMALIZAO DE TABELAS O objetivo da normalizao evitar os problemas provocados por falhas no projeto do Banco de Dados, bem como eliminar a mistura de assuntos e as correspondentes redundncias de dados. A normalizao de tabelas utilizada para tentar detectar erros no projeto das tabelas e atributos de cada tabela e corrigir estes erros, antes da criao e utilizao do Banco de Dados. bem mais fcil (e barato), corrigir os erros na fase de projeto do que depois que o Banco de Dados j est em uso. Uma Regra de Ouro que devemos observar quando do projeto de Banco de Dados a de no misturar assuntos em uma mesma tabela, conforme j descrito anteriormente. Por exemplo, na tabela Clientes devemos colocar somente campos relacionados com o assunto Clientes. No devemos misturar campos relacionados com outros assuntos, tais como pedidos, produtos, etc. Essa mistura de assuntos em uma mesma tabela acaba por gerar repetio desnecessria dos dados bem como inconsistncia dos dados. O processo de normalizao aplica uma srie de regras sobre as tabelas de um Banco de Dados, para verificar se estas esto corretamente projetadas. Embora existam cinco formas normais (ou regras de normalizao), na prtica usamos um conjunto de trs formas normais. Freqentemente, aps a aplicao das regras de normalizao, algumas tabelas acabam sendo divididas em duas ou mais, o que no final gera um nmero maior de tabelas do que o nmero de tabelas originalmente projetado. Este processo causa a simplificao dos atributos de uma tabela, colaborando significativamente para a estabilidade do projeto do Banco de Dados, reduzindo-se as necessidades de manuteno e alteraes, aps o banco ter sido colocado em produo. Vamos estudar e entender o processo de normalizao atravs de exemplos prticos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo000017 PRIMEIRA FORMA NORMAL Regra: Uma tabela est na Primeira Forma Normal quando seus atributos no contm grupos de repetio. Por isso dissemos que uma tabela que possui grupos de repetio no est na Primeira Forma Normal. Considere a Figura 1.8: Figura 1.8 Uma tabela que no est na Primeira Forma Normal. Podemos notar que uma tabela com esta estrutura apresenta diversos problemas. Por exemplo, se um casal tiver mais do que um filho, teramos que digitar o nomes do pai e da me diversas vezes, tantas quantos forem os filhos. Isso forma um grupo de repetio. Pode ser que, por erro de digitao, o nome dos pais no aparea exatamente igual todas as vezes, o que pode acarretar problemas na hora de fazer pesquisas ou emitir relatrios. Este problema ocorre porque misturamos assuntos em uma mesma tabela. Colocamos as informaes dos pais e dos filhos em uma mesma tabela. A soluo para este problema simples: criamos uma tabela separada para a informao dos pais e relacionamos a tabela Pais com a tabela Filhos atravs de um relacionamento do tipo Um para Vrios, ou seja, Um casal pode ter vrios filhos. Esta soluo indicada na Figura 1.9. Figura 1.9 As tabelas Pais e Filhos esto na Primeira Forma Normal. As duas tabelas resultantes da aplicao da Primeira Forma Normal, Pais e Filhos, esto na Primeira Forma Normal. A tabela original, a qual misturava informaes de pais e filhos, no est na Primeira Forma Normal. SEGUNDA FORMA NORMAL Podemos aplicar a Segunda Forma Normal quando tivermos uma chave primria composta. Neste caso, devemos observar se todos os campos, que no fazem parte da chave primria composta, dependem proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 180000Curso Completo N O T A Figura 1.10 Uma tabela que no est na Segunda Forma Normal. A chave primria composta formada pela combinao dos campos NmeroDaMatrcula e CdigoDoCurso. O campo Avaliao depende tanto do CdigoDoCurso quanto do NmeroDaMatrcula (cada aluno representado por sua matrcula, tem uma nota em cada disciplina representada pelo campo CdigoDocurso), porm o campo DescrioDoCurso depende apenas do CdigoDoCurso (a descrio do curso no tem relao com o NmeroDaMatrcula). Com isso, temos um campo que no faz parte da Chave Primria composta e depende apenas de um dos campos que compem a chave primria composta. Assim podemos dizer que esta tabela no est na Segunda Forma Normal. A resoluo para este problema tambm simples: dividimos a tabela, que no est na Segunda Forma Normal, em duas outras tabelas, conforme indicado pela Figura 1.11, sendo que as duas tabelas resultantes estaro na Segunda Forma Normal. de todos os campos que compem a chave primria composta. Se algum campo depender somente de parte da chave primria composta, ento este campo deve pertencer a outra tabela. Observe o exemplo indicado na Figura 1.10: Figura 1.11 Duas tabelas que esto na Segunda Forma Normal. A distino entre a Segunda e a Terceira Forma Normal, que veremos no prximo item, muitas vezes confusa. A Segunda Forma Normal est ligada ocorrncia de chaves primrias compostas. TERCEIRA FORMA NORMAL Na definio dos campos de uma tabela podem ocorrer casos em que um campo no seja dependente diretamente da chave primria, ou de parte dela, mas sim dependente de um outro atributo constante na tabela, atributo este que no seja a chave primria. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo000019 N O T A N O T A Quando isto ocorre, dizemos que a tabela no est na Terceira Forma Normal, conforme indicado pela Figura 1.12: Figura 1.12 Uma tabela que no est na Terceira Forma Normal. Observe que o campo DescrioDoCurso depende apenas do campo CdigoDoCurso, o qual no faz parte da chave primria. Por isso dizemos que esta tabela no est na Terceira Forma Normal. A soluo para este caso tambm simples. Novamente basta dividir a tabela em duas outras, conforme indicado pela Figura 1.13. As duas tabelas resultantes esto na Terceira Forma Normal. Figura 1.13 Duas tabelas que esto na Terceira Forma Normal. Com isso podemos concluir que, como resultado do processo de normalizao, iremos obter um nmero maior de tabelas do que o existente antes do processo de normalizao, porm sem problemas de redundncia e inconsistncia dos dados, ou com estes problemas minimizados. PASSOS PARA PROJETAR UM BANCO DE DADOS Neste item apresentarei os passos bsicos para projetar um Banco de Dados. Mostrarei como aplicar os conhecimentos sobre Entidades, Atributos, Relacionamentos, Chave Primria e Normalizao. Um Banco de Dados bem projetado fornece um acesso conveniente s informaes desejadas, de tal maneira que as informaes estejam disponveis para os usurios que dela necessitarem no momento em que a informao for necessria. Neste item estou falando do projeto fsico do Banco de Dados, isto , a definio de quais tabelas e do relacionamento entre as tabelas. O resultado final desta fase ser o que chamamos de Diagrama Entidade x Relacionamentos. O projeto completo de uma aplicao de n camadas que ir rodar na rede de uma empresa envolve vrias outras etapas. A descrio completa de todas as etapas foge ao escopo deste livro, sendo disciplina de Anlise de Sistemas. Um bom livro sobre o assunto o seguinte: Analyzing Requirementes and Defining Solution Architectures MCSD Training Kit, Microsoft Press, ISBN: 0735608547. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 200000Curso Completo Etapas no projeto e estruturao de um Banco de Dados: Determinar qual o objetivo do Banco de Dados. Isto ajuda na determinao de quais dados devem ser armazenados. Determinar as tabelas necessrias. Aps definirmos o objetivo do Banco de Dados, as informaes devem ser definidas e separadas em assuntos diferentes, tais como Clientes, Empregados, Pedidos, pois cada um ir compor uma tabela no Banco de Dados. Determinar os campos necessrios em cada tabela. Definir quais informaes devem ser mantidas em cada tabela. Por exemplo, a tabela Clientes poderia ter um campo para o cdigo do cliente, outro para o nome do cliente e assim por diante. Determinar quais campos sero as chaves primrias. Determinar, em cada tabela, qual ou quais campos sero utilizados como chave primria. Esta uma etapa importante para a definio dos relacionamentos que vm a seguir. Podem ocorrer casos onde uma tabela no tem chave primria. Determinar os relacionamentos entre as tabelas. Decidir como os dados de uma tabela se relacionam com os dados de outras tabelas. Por exemplo, clientes podem fazer vrios pedidos. fornecedores podem fornecer vrios produtos, etc. Refinar a estrutura do Banco de Dados. Antes de inserir muitos dados, ou at mesmo antes de inserir qualquer dado, verificar se a estrutura contm erros, isto , verificar se os resultados obtidos so os desejados. Isto feito atravs do processo de normalizao de tabelas, descrito anteriormente. Com uma boa estrutura, gasta-se menos tempo na construo e manuteno do Banco de Dados e, ao mesmo tempo, assegura-se resultados mais rpidos e precisos. Dicas para determinao dos campos em uma tabela: Relacionar diretamente cada campo ao assunto da tabela. Se um campo descreve o assunto de uma tabela diferente, este campo deve pertencer a outra tabela. O mesmo acontece quando uma informao se repete em diversas tabelas. Este um indcio de que existem campos desnecessrios em algumas tabelas. No incluir dados derivados ou calculados. No recomendado armazenar o resultado de clculos nas tabelas. O correto que o clculo seja executado quando necessitarmos do resultado. Normalmente os clculos so efetuados com o uso de consultas (Views Captulo 9) ou atravs de programao (usando Stored Procedures Captulo 10). Incluir todas as informaes necessrias. Como fcil esquecer informaes importantes, deve- se ter em mente todas as informaes coletadas desde o incio do processo e perguntar se com elas possvel obter todos os resultados esperados. Armazenar todas as informaes separadamente. Existe uma tendncia em armazenar informaes em um nico campo. Por exemplo, o nome do curso e o tempo de durao em um mesmo campo. Como as duas informaes foram combinadas em um nico campo, ficar difcil conseguir um relatrio classificado pelo tempo de durao dos cursos, por exemplo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo000021 Como escolher o campo que ser a chave primria? Um bom Sistema Gerenciador de Banco de Dados Relacionais (SGBDR) aquele que encontra e nos fornece, rapidamente, todas as informaes necessrias que nele estejam armazenadas, mesmo em diferentes tabelas. Para que isto seja possvel necessrio incluir um campo ou conjunto de campos que identifiquem de um modo nico cada registro de uma tabela. Esta informao chamada chave primria, conforme descrito anteriormente. Deve-se ter certeza de que este campo (ou conjunto de campos) seja sempre diferente para cada registro, por no serem permitidos valores duplicados em um campo de chave primria. Figura 1.14 Um diagrama Entidade x Relacionamentos. Ao escolher campos de chave primria, considere os seguintes detalhes: No permitida duplicidade de valores ou nulos (informaes desconhecidas). Caso no exista um identificador nico para uma determinada tabela, pode-se usar um campo que numere os registros seqencialmente. Pode-se utilizar o valor deste campo para encontrar registros. O tamanho da chave primria afeta a velocidade das operaes, e portanto, para um melhor desempenho, devemos utilizar o menor tamanho que acomode os valores necessrios para armazenar no campo. Na Figura 1.14, temos um exemplo de um diagrama Entidade x Relacionamentos. Este diagrama mostra a estrutura do Banco de Dados Nwind.mdb, o qual fornecido juntamente com o Microsoft Access 97 e tambm como exemplo na instalao do Microsoft SQL Server 2000. Os campos que so chave primria esto indicados em negrito. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 220000Curso Completo FUNDAMENTOS EM: NOES BSICAS DA LINGUAGEM SQL STRUCTURED QUERY LANGUAGE PR-REQUISITOS Noes sobre os elementos bsicos do modelo relacional. METODOLOGIA Apresentao dos principais comandos e clusulas da linguagem SQL. TCNICA Utilizao de exemplos prticos. Como o prprio nome sugere, a linguagem para acesso a dados, utilizada pelo Microsoft SQL Server 2005, o T-SQL Transact - Structured Query Language. A linguagem T-SQL utilizada para uma srie de operaes, como por exemplo: Selecionar um conjunto de registros com base em um ou mais critrios de pesquisa. Alterar informaes no Banco de Dados. Inserir informaes no Banco de Dados. Criar um Banco de Dados. Criar novas tabelas. Excluir registros. Criar e alterar ndices. Definir permisses de segurana, etc. Embora a maioria destas operaes possa ser feita atravs da interface grfica do Microsoft SQL Server 2005 (SQL Server Management Studio), existem situaes em que precisamos conhecer e utilizar a linguagem T-SQL. Para a criao de Stored Procedures, Triggers e outros recursos avanados, iremos utilizar a linguagem T-SQL. Neste item eu apresentarei uma noo bsica da linguagem T-SQL. Voc aprendera os comandos para manipulao de dados consultar, inserir, alterar e excluir. Em todos os demais captulos deste livro, sero utilizados comandos da linguagem T-SQL, os quais sero explicados nos momentos devidos. INTRODUO A linguagem T-SQL foi desenvolvida para ser uma linguagem padro para operaes em Banco de Dados. A linguagem T-SQL foi elaborada para ser independente de hardware ou software. Ao usar T- SQL, voc no precisa saber a respeito do software de Banco de Dados ou do hardware envolvido em uma operao. Tudo o que voc precisa conhecer o mtodo (instruo) T-SQL a ser utilizado, para solicitar informaes desejadas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo000023 N O T A N O T A Na prtica, existem pequenas diferenas nas implementaes da linguagem SQL de diferentes fabricantes. Desta forma, algumas rotinas escritas utilizando o SQL Plus do Oracle podem no rodar, sem alteraes no Microsoft SQL Server e vice-versa. Na listagem a seguir temos um exemplo de uma instruo T-SQL. Embora a instruo, em um primeiro momento, possa parecer complexa, veremos que a linguagem T-SQL bastante simples e de fcil aprendizado. Exemplo de um comando T-SQL: SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry, Orders.ShipCity FROM Orders WHERE Orders.ShipCountry Like [A-M]% AND Orders.OrderDate > 01/01/1997 ORDER BY Orders.OrderDate Por questes de simplicidade, deste ponto em diante (e tambm nos demais captulos), farei referncia linguagem T-SQL, usando apenas o termo linguagem SQL ou instruo SQL. Uma instruo SQL descreve o conjunto de dados que voc deseja obter (quais campos, de quais tabelas, quais critrios de filtragem utilizar, qual a classificao aplicada, expresses calculadas, etc.). Todas as instrues SQL so executadas como se fossem um nico comando, o qual contm uma descrio completa das informaes que devem ser retornadas. Ao escrever uma instruo SQL, voc no deve se preocupar em como os dados sero recuperados, mas somente com o contedo do conjunto de dados que voc deseja obter. Esse o principal benefcio da linguagem SQL. Lembre-se que o SQL um padro genrico para expresses de consulta em Banco de Dados. Embora a maior parte das verses do SQL compartilhe elementos bsicos, elas no so idnticas. O Access SQL usa algumas palavras-chave que voc no encontra em outras verses do SQL. Tambm existem pequenas diferenas entre o Microsoft Access e o Microsoft SQL Server. Veremos, atravs de exemplos, a utilizao das principais palavras-chave do SQL para a construo de expresses SQL para pesquisa e operaes em tabelas de um Banco de Dados. A INSTRUO SELECT Esta, sem dvidas, a instruo SQL mais importante e mais utilizada. No existe pesquisa que no utilize esta instruo. Vamos conhec-la em detalhes. A instruo Select utilizada para especificar quais os campos de quais tabelas faro parte da consulta, quais os critrios de pesquisa que sero utilizados, qual a ordem de classificao, etc. A sintaxe simplificada da instruo a seguinte: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 240000Curso Completo N O T A SELECT campo1, campo2, campo3 FROM nome_da_tabela [WHERE condio ] [GROUP BY nome_do_campo ] [HAVING ... ] [ORDER BY... ] Na Tabela 1.2 temos uma descrio destes elementos. Vamos analisar alguns exemplos prticos de utilizao da linguagem SQL. Exemplo 1: Criar uma instruo SQL que retorne os campos NmeroDoPedido, DataDoPedido, Frete e PasDeDestino da tabela Pedidos. SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PasDeDestino, Pedidos.Frete FROM Pedidos Observe que os nomes dos campos esto separados por vrgula; alm disso estamos utilizando o nome completo, isto : Nome_da_tabela.Nome_do_campo. Tambm poderamos utilizar o comando, sem o nome da tabela antes do nome do campo, conforme indicado no seguinte comando: SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos Somente obrigatria a utilizao do nome da tabela antes do nome do campo quando o mesmo campo existir em duas ou mais tabelas que fazem parte da instruo Select, para indicar de qual tabela deve ser retornado o respectivo campo. Por exemplo, imagine que estejamos escrevendo uma instruo SQL para criar uma listagem com o cdigo e o nome do cliente, bem como todos os pedidos efetuados pelo cliente. Acontece que o cdigo do cliente, no nosso exemplo, existe em duas tabelas: Clientes e Pedidos. Neste caso devemos especificar o nome da tabela, antes do nome do campo. Elemento Descrio campo1, campo2... campon Nome dos campos a serem retornados a partir de uma ou mais tabelas. nome_da_tabela Nome da tabela a partir da qual os dados devem ser recuperados. WHERE Permite que sejam especificados critrios de pesquisa. GROUP BY Podemos agrupar os resultados em torno de um ou mais campos de dados. Por exemplo, em um relatrio de vendas anuais, posso ter os resultados agrupados por ms, com a soma das vendas do ms logo aps a listagem das vendas. HAVING Especifica critrios para serem utilizados juntamente com Group By. ORDER BY Podemos ordenar os resultados obtidos com base em um ou mais campos de dados. Por exemplo, podemos ordenar uma listagem de vendas em ordem alfabtica do nome do cliente ou do nome do vendedor. Tabela 1.2 Os principais elementos da instruo Select. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo000025 Exemplo 2: Alterar a instruo SQL anterior para que os registros sejam classificados em ordem crescente pelo valor do frete. SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos ORDER BY Frete Observe a utilizao da clusula ORDER BY Frete para classificar os registros em ordem crescente. A classificao em ordem crescente a padro. Quando formos classificar em ordem decrescente, precisamos especificar a palavra DESC, conforme indicado no seguinte comando: SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos ORDER BY Frete DESC Exemplo 3: Agora vamos comear a inserir critrios de filtragem. Muitas vezes as condies so chamadas de filtro e, uma vez estabelecida uma condio, somente os registros que atendem a condio especificada sero retornados. Desta forma a condio atua como se fosse um filtro. Neste exemplo, vamos alterar a instruo SQL anterior para que sejam exibidos somente os pedidos cujo PasDeDestino seja Brasil. SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos WHERE PasDeDestino=Brasil ORDER BY Frete Observe a utilizao da clusula WHERE para filtrar somente os pedidos cujo campo PasDeDestino contenha o valor Brasil. Como o campo PasDeDestino um campo do tipo texto, o valor do critrio (Brasil) tem que vir entre apstrofes. Vamos trabalhar um pouco mais com a clusula WHERE. Exemplo 4: Altere a instruo SQL anterior para que sejam exibidos somente os pedidos para o Brasil ou Alemanha como PasDeDestino. SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos WHERE Pedidos.PasDeDestino=Brasil OR Pedidos.PasDeDestino=Alemanha ORDER BY Frete Observe a utilizao da clusula OR ligando os dois critrios. Lembre que a clusula OR retorna um registro se o PasDeDestino atender um dos dois critrios. Assim, se for Brasil ou se for Alemanha, o registro ser selecionado, o que exatamente o que desejamos, ou seja, todos os pedidos para o Brasil ou todos os pedidos para a Alemanha. Exemplo 5: Altere a instruo SQL anterior, retirando o critrio para PasDeDestino. Adicione um critrio para NmeroDoPedido maior do que 10500, retire a classificao do campo Frete e classifique pelo campo NmeroDoPedido. SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos WHERE NmeroDoPedido>10500 ORDER BY NmeroDoPedido Observe a clusula WHERE utilizando o operador de comparao maior do que ( > ) e a classificao atravs da clusula ORDER BY no campo NmeroDoPedido. Podemos ver, atravs dos exemplos, que a linguagem SQL no to difcil como pode parecer primeira vista. Observe que a sintaxe da linguagem bastante intuitiva e orientada extrao de dados, atravs das consultas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 260000Curso Completo Vamos continuar analisando alguns exemplos de aplicao da linguagem SQL com a utilizao de recursos mais avanados. Exemplo 6: Alterar a instruo SQL anterior, e adicionar um critrio de tal maneira que somente sejam exibidos os pedidos para o ano de 1995. Tirar o critrio do campo NmeroDoPedido. SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos WHERE Year(DataDoPedido)=1995 ORDER BY NmeroDoPedido Observe a utilizao da funo YEAR para extrairmos apenas o ano do campo DataDoPedido a fim de especificarmos como critrio o Ano=1995. Tambm a clusula ORDER BY foi mantida, classificando a listagem em ordem crescente pelo nmero do pedido. A utilizao de funes junto com os comandos SQL nos fornece inmeras possibilidades de refinamento em nossas consultas. Exemplo 7: Alterar a instruo SQL anterior, para que sejam exibidos somente os pedidos no perodo de 01/01/1995 at 31/08/1995 e que tenham como PasDeDestino Brasil, Argentina, Alemanha ou Canad. SELECT NmeroDoPedido, DataDoPedido, PasDeDestino, Frete FROM Pedidos WHERE DataDoPedido Between 1/1/95 And 8/31/95 AND PasDeDestino In (Brasil,Argentina,Alemanha,Canad) ORDER BY NmeroDoPedido Observe a utilizao de vrios critrios em diferentes campos. Colocamos critrios nos campos DataDoPedido e PasDeDestino. Os critrios de dois ou mais campos so ligados atravs do operador AND, indicando que um registro deve atender ambos os critrios para ser selecionado. Tambm temos a utilizao dos operadores BETWEEN (Entre) para selecionar as datas dentro de um determinado intervalo e do operador IN (Em) para selecionar o campo PasDeDestino que seja igual a um dos valores apresentados na lista. Observe, tambm, que os valores de data vm delimitados por apstrofes (). Exemplo 8: Criar uma instruo SQL que retorne os campos NmeroDoPedido, DataDoPedido, DataDeEntrega, Frete e PasDeDestino da tabela Pedidos. Criar uma coluna adicional que calcula o nmero de dias entre a DataDeEntrega e a DataDoPedido. Chamar esta coluna de Dias_Ped_Entr. SELECT NmeroDoPedido, DataDoPedido, DataDeEntrega, PasDeDestino, Frete, DataDeEntrega- DataDoPedido AS Dias_Ped_Entr FROM Pedidos WHERE (DataDoPedido Between 1/1/95 And 8/31/95) AND (PasDeDestino In (Brasil,Argentina,Alemanha,Canad)) ORDER BY Pedidos.NmeroDoPedido Veja que a coluna calculada DataDeEntrega-DataDoPedido est junto com a listagem dos campos no incio da instruo Select. Alm disso, foi utilizada a palavra AS para atribuir um nome (apelido) para esta coluna calculada. Este nome o que ser utilizado para fazer referncia coluna, em uma pgina ASP ou um programa desenvolvido em Visual Basic, por exemplo. Voc tambm pode classificar a listagem em ordem crescente ou decrescente de um campo calculado. Por exemplo, se voc quisesse classificar a listagem do item anterior, em ordem crescente, do nmero de dias entre a DataDeEntrega e a DataDoPedido, bastaria utilizar a seguinte instruo SQL: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo000027 N O T A SELECT NmeroDoPedido, DataDoPedido, DataDeEntrega, PasDeDestino, Frete, DataDeEntrega- DataDoPedido AS Dias_Ped_Entr FROM Pedidos WHERE (DataDoPedido Between 1/1/95 And 8/31/95) AND (PasDeDestino In (Brasil,Argentina,Alemanha,Canad)) ORDER BY DataDeEntrega-DataDoPedido Exemplo 9: Alterar a instruo SQL anterior, eliminando os critrios para a DataDoPedido e para o PasDeDestino. Colocar um novo critrio para PasDeDestino, onde sejam exibidos apenas os pedidos cujo PasDeDestino tem a primeira letra na faixa de A at M. Utilize o operador LIKE. SELECT NmeroDoPedido, DataDoPedido, DataDeEntrega, PasDeDestino, Frete, DataDeEntrega- DataDoPedido AS Dias_Ped_Entr FROM Pedidos WHERE PasDeDestino Like [A-M]% ORDER BY PasDeDestino Observe a utilizao do operador Like no critrio de pesquisa para esta consulta. Nunca demais salientar que a utilizao das instrues SQL juntamente com as funes e operadores, como o LIKE, nos fornecem um amplo conjunto de possibilidades. O caractere % utilizado como um caractere curinga. Por exemplo, se especificarmos o seguinte critrio: WHERE NomeDoCLiente Like Joo% sero retornados todos os registros para clientes cujo nome inicia com Joo. O caractere curinga % significa, em termos simples: qualquer coisa, ou seja, o critrio especifica que o nome inicie com Joo, no importando (qualquer coisa) o que vier depois. Aqui cabe um aviso importante para os usurios do Microsoft Access. Naquele aplicativo, o caractere curinga o *, j no Microsoft SQL Server 2005 (e tambm nas verses anteriores do SQL Server), utilizamos como caractere curinga o %, o qual tambm utilizado na construo de pginas ASP. Para maiores informaes sobre a tecnologia ASP Active Server Pages, consulte o e-book Criando Sites Dinmicos com ASP 3.0, 732 pginas, de minha autoria, disponvel no formato .PDF em: http://www.juliobattisti.com.br/ebooksdoautor At agora trabalhamos com instrues que selecionam registros de uma nica tabela. Porm bastante comum criarmos instrues SQL baseadas em duas ou mais tabelas. Quando criamos instrues SQL que buscam dados em duas ou mais tabelas, dizemos que est sendo feito um Join entre as duas ou mais tabelas. Normalmente este Join (ou ligao) feito atravs de um campo comum s duas tabelas. Por exemplo, NmeroDoPedido na tabela Pedidos e NmeroDoPedido na tabela Detalhes do Pedido. Outro exemplo, CdigoDoCliente na tabela Pedidos e CdigoDoCliente na tabela Clientes. Pode acontecer de termos consultas que trabalham com trs ou mais tabelas, e neste caso teremos diversos Joins. O nmero de joins sempre igual ao nmero de tabelas menos um. Por exemplo, se a nossa consulta acessar dados de quatro tabelas, teremos trs joins. Agora passaremos e explorar na prtica, atravs de exemplos, a construo de instrues SQL que trabalhem com duas ou mais tabelas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 280000Curso Completo Exemplo 10: Criar uma instruo SQL que selecione os seguintes campos: NmeroDoPedido da tabela Pedidos DataDoPedido da tabela Pedidos PasDeDestino da tabela Pedidos Frete da tabela Pedidos CdigoDoProduto da tabela DetalhesdoPedido PreoUnitrio da tabela DetalhesdoPedido Quantidade da tabela DetalhesdoPedido Alm disso, as tabelas Pedidos e DetalhesDoPedido esto relacionadas pelo campo NmeroDoPedido, atravs de um relacionamento do tipo Um para Vrios. Classificar a listagem em ordem crescente do nmero do pedido. Para resolver este exemplo podemos utilizar a seguinte instruo SQL: SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PasDeDestino, Pedidos.Frete, DetalhesdoPedido.CdigoDoProduto, DetalhesdoPedido.PreoUnitrio, DetalhesdoPedido.Quantidade FROM Pedidos INNER JOIN DetalhesdoPedido ON Pedidos.NmeroDoPedido = DetalhesdoPedido.NmeroDoPedido ORDER BY Pedidos.NmeroDoPedido Primeiro devemos observar que, pelo fato de tratarmos com dados de duas tabelas, estamos utilizando a nomenclatura completa, isto , Nome_da_tabela.Nome_do_campo. Observe a utilizao da clusula INNER JOIN, ligando as tabelas Pedidos e DetalhesdoPedido, atravs do campo NmeroDoPedido, conforme especificado na clusula ON, onde temos o seguinte: ON Pedidos.NmeroDoPedido = DetalhesdoPedido.NmeroDoPedido Observe que esta listagem ir trazer vrios registros para cada pedido, tantos quantos forem os itens de cada pedido. Mas, se ao invs do CdigoDoProduto, ns quisssemos que fosse exibida a descrio do produto? Em primeiro lugar esta informao encontra-se na tabela Produtos; logo, teremos que adicionar a tabela Produtos nossa consulta, a qual ir se ligar tabela DetalhesdoPedido atravs do campo CdigoDoProduto. Com isso teremos mais um join. Para trs tabelas teremos dois joins. Aps adicionar a tabela Produtos e substituir o campo CdigoDoProduto pelo campo NomeDoProduto, a nossa instruo SQL deve ficar conforme indicado no seguinte comando: SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PasDeDestino, Pedidos.Frete, Produtos.NomeDoProduto, DetalhesdoPedido.PreoUnitrio, DetalhesdoPedido.Quantidade FROM Produtos INNER JOIN (Pedidos INNER JOIN DetalhesdoPedido ON Pedidos.NmeroDoPedido=DetalhesdoPedido.NmeroDoPedido) ON Produtos.CdigoDoProduto=DetalhesdoPedido.CdigoDoProduto ORDER BY Pedidos.NmeroDoPedido proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo000029 Observe que neste caso temos um INNER JOIN dentro do outro. Dentro do parnteses feita a ligao entre as tabelas Pedidos e DetalhesDoPedido, atravs do campo NmeroDoPedido, e externamente feita a ligao entre as tabelas Produtos e DetalhesdoPedido, atravs do campo CdigoDoProduto. Podemos utilizar diversos nveis de INNER JOIN, embora esta no seja uma prtica recomendada, pois se aumentarmos muito os nveis de INNER JOIN, podemos ter como resultado pesquisas mais lentas, em conseqncia do aumento da complexidade das consultas. At trs ou quatro nveis considerado normal, acima disso repense a maneira de construir a consulta. Exemplo 11: Alterar a instruo SQL do item anterior para que somente sejam exibidos os pedidos para os produtos cujo NomeDoProduto inicie com uma letra na faixa de A at J. Tirar a classificao do campo NmeroDoPedido e classificar em ordem crescente do campo NomeDoProduto. SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PasDeDestino, Pedidos.Frete, Produtos.NomeDoProduto, DetalhesdoPedido.PreoUnitrio, DetalhesdoPedido.Quantidade FROM Pedidos INNER JOIN (Produtos INNER JOIN DetalhesdoPedido ON Produtos.CdigoDoProduto=DetalhesdoPedido.CdigoDoProduto) ON Pedidos.NmeroDoPedido = DetalhesdoPedido.NmeroDoPedido WHERE (Produtos.NomeDoProduto Like [A-J]%) ORDER BY Produtos.NomeDoProduto Observe, alm dos dois INNER JOIN, a utilizao da clusula WHERE em conjunto com operador Like para especificar o critrio desejado. At este momento apresentei instrues SQL que executam consultas em Bancos de Dados. Especifiquei quais campos sero exibidos, critrios de filtragem para estes campos e uma ordem de classificao. A partir de agora mostrarei como utilizar instrues SQL para a construo de outros tipos de operaes, tais como operaes que realizam alteraes nos dados e incluses de novos registros, em tabelas de um Banco de Dados. A INSTRUO UPDATE A instruo UPDATE utilizada para alterar informaes em um Banco de Dados. Poderamos, por exemplo, criar um formulrio onde o usurio pode alterar os seus dados cadastrais. Primeiro os dados so recuperados a partir do Banco de Dados (usando uma instruo SELECT), e em seguida as alteraes so enviadas de volta para o Banco de Dados, atravs de uma instruo UPDATE. Vamos estudar esta instruo atravs de exemplos, assim como fizemos com a instruo SELECT. Exemplo 1: Criar uma instruo SQL que aumenta o PreoUnitrio em 20%, em todos os registros da tabela DetalhesdoPedido, devido a um ajuste na moeda e uma desvalorizao em relao ao Dlar. UPDATE DetalhesdoPedido SET PreoUnitrio = PreoUnitrio*1.2 Observe a simplicidade da instruo SQL. Utilizamos uma instruo UPTADE, seguida do nome da tabela onde ser feita a atualizao. Em seguida uma instruo SET com a expresso de atualizao para aumentar em 20% o PreoUnitrio em todos os registros da tabela DetalhesdoPedido. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 300000Curso Completo Vamos alterar a instruo anterior, para incluir um critrio na consulta de atualizao. Exemplo 2: Alterar a instruo SQL do item anterior para que somente seja aumentado em 20%, o campo PreoUnitrio dos registros cujo PreoUnitrio for maior ou igual a R$20,00. UPDATE DetalhesdoPedido SET PreoUnitrio = PreoUnitrio*1.2 WHERE PreoUnitrio>=20 Adicionamos uma clusula WHERE, para atualizar apenas os registros cujo PreoUnitrio seja maior ou igual a R$20,00. Exemplo 3: Alterar a instruo SQL do exemplo anterior para que somente sejam aumentados os registros cujo PreoUnitrio for maior ou igual a R$20,00 e cujo NmeroDoPedido seja menor do que 10500. UPDATE DetalhesdoPedido SET PreoUnitrio = PreoUnitrio*1.2 WHERE (PreoUnitrio>=20) AND (NmeroDoPedido<10500) Observe que utilizamos critrios em dois campos (PreoUnitrio e NmeroDoPedido) e que estes critrios esto ligados por um operador AND, o que significa que um registro somente ser atualizado se ele atender aos dois critrios ao mesmo tempo (PreoUnitrio maior ou igual a 20 e NmeroDoPedido menor do que 10500). Se o registro atender apenas uma das condies, o registro no ter o seu PreoUnitrio atualizado. Vamos refinar um pouco mais a nossa consulta de atualizao. Vamos fazer com que somente sejam atualizados os pedidos para o ano da DataDoPedido igual a 1995, e ainda iremos manter os critrios adicionados at agora. Exemplo 4: Alterar a instruo SQL do exemplo anterior para incluir um critrio para que o ano da DataDoPedido seja 1995. Voc ter que incluir a tabela Pedidos, uma vez que o campo DataDoPedido encontra-se nesta tabela. UPDATE Pedidos INNER JOIN DetalhesdoPedido ON Pedidos.NmeroDoPedido = DetalhesdoPedido.NmeroDoPedido SET DetalhesdoPedido.PreoUnitrio = PreoUnitrio*1.2 WHERE (DetalhesdoPedido.PreoUnitrio>=20) AND (DetalhesdoPedido.NmeroDoPedido<10500) AND Year(DataDoPedido)=1995) Temos diversos detalhes interessantes a observar nesta instruo SQL. Primeiro um INNER JOIN relacionando as tabelas Pedidos e DetalhesdoPedido, atravs do campo NmeroDoPedido. Isso mostra que perfeitamente possvel utilizar um INNER JOIN dentro de uma consulta de atualizao. Segundo, temos a utilizao da funo YEAR para extrair apenas o ano do campo DataDoPedido e compar-lo com o critrio 1995, conforme j exemplificado quando dos exemplos da instruo SELECT. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo000031 Novamente a utilizao de operadores e funes nos fornece uma grande flexibilidade em termos de construo de nossas consultas. A INSTRUO INSERT A instruo INSERT utilizada para adicionar registros em uma tabela de um Banco de Dados. Por exemplo, quando o usurio preenche os dados de um formulrio de cadastro e envia estes dados para o Banco de Dados, podemos utilizar a instruo INSERT para inserir estes dados em uma tabela do Banco de Dados. Vamos analisar alguns exemplos. Exemplo 1: Este exemplo cria um novo registro na tabela Funcionrios: INSERT INTO Funcionrios (Nome, Sobrenome, Cargo) VALUES (Paulo, Braga, Estagirio) Esta instruo insere um registro na tabela Funcionrios com os seguintes dados: Nome: Paulo Sobrenome: Braga Cargo: Estagirio Exemplo 2: Este exemplo seleciona todos os estagirios de uma tabela Estagirios que tenham sido contratados h mais de 30 dias e adiciona os registros selecionados tabela Funcionrios. INSERT INTO Funcionrios SELECT Estagirios.* FROM Estagirios WHERE DataDaContratao < Date() - 30 Observe que utilizamos a funo DATE( ) para capturar a data do sistema e subtramos 30, para obter apenas os funcionrios contratados a mais do que 30 dias. A INSTRUO DELETE A instruo DELETE utilizada para excluir registros de um Banco de Dados. Vamos supor que voc tenha desenvolvido uma aplicao Web para agenda eletrnica, onde o usurio pode cadastrar contatos, endereos, telefones e compromissos. Podemos criar uma pgina ASP que permite ao usurio eliminar dados que no sejam mais necessrios na agenda. Neste caso podemos fazer uso da instruo DELETE. Vamos a um exemplo prtico. Exemplo 1: Criar uma instruo SQL que elimine todos os pedidos da tabela Pedidos cujo PasDeDestino seja a Alemanha DELETE Pedidos.PasDeDestino FROM Pedidos WHERE Pedidos.PasDeDestino=Alemanha proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 320000Curso Completo A instruo to simples que praticamente dispensa comentrios. A nica recomendao importante que no devemos utilizar uma instruo DELETE, sem a utilizao de uma clusula WHERE. Utilizar um DELETE sem uma clusula WHERE significa eliminar todos os registros da tabela. Neste item apresentei uma breve introduo linguagem SQL, que no Microsoft SQL Server chamada de Transact-SQL (T-SQL). De maneira alguma vimos todas as instrues e comandos disponveis. Ao longo deste livro, em diversos momentos, irei utilizar comandos da linguagem SQL. Assim, aprenderemos detalhes e utilizaes mais avanadas desta linguagem. CONCLUSO Este captulo, perfeitamente, poderia ser o captulo inicial de um livro de Oracle, Sybase, Access, DB2 ou de qualquer Banco de Dados relacional. Os conceitos tericos apresentados neste captulo so necessrios ao entendimento e utilizao de qualquer sistema gerenciador de Banco de Dados Relacional. Para que possamos utilizar o Microsoft SQL Server, precisamos dominar os conceitos apresentados, tais como: Modelo Relacional. Tabelas (Entidades). Campos (Atributos). Chave Primria. Relacionamentos: Um para Um, Um para Vrios e Vrios para Vrios. Integridade Referencial: Atualizar em cascata e Excluir em cascata. Regras de Normalizao: Primeira, Segunda e Terceira Formas Normais. A importncia do projeto fsico do Banco de Dados. Na seqncia deste captulo, apresentei uma noo bsica da linguagem SQL (Transact-SQL no caso do Microsoft SQL Server 2005). Voc aprendeu a utilizar diversos elementos da linguagem, como por exemplo: A instruo SELECT e as suas diversas clusulas A instruo UPDATE A instruo INSERT INTO A instruo DELETE O operador LIKE As clusulas WHERE e ORDER BY O operador IN Os operadores AND e OR proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 1 INTRODUO AOS BANCOS DE DADOS RELACIONAIS E LINGUAGEM SQL Curso Completo000033 N O T A Agora que vimos a parte terica, estamos prontos para comear a trabalhar com o Microsoft SQL Server 2005. Mas isso j assunto para o Captulo 2, onde voc aprender sobre as novidades do SQL Server 2005 e aprender a fazer a instalao do SQL Server 2005 e a fazer o upgrade do SQL Server 7.0 para o SQL Server 2005 e do SQL Server 2000 para o SQL Server 2005. No siga para os prximos captulos sem ter entendido, completamente, os conceitos tericos apresentados neste captulo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Captulo 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 360000Curso Completo INTRODUO Neste captulo voc aprender sobre os seguintes tpicos: Aplicaes do tipo Cliente/Servidor de duas camadas. A evoluo para as aplicaes de trs ou mais camadas. Qual o papel do SQL Server 2005 no desenvolvimento de aplicaes de duas ou mais camadas. As novidades do SQL Server 2005. As diferentes edies do SQL Server 2005. Como instalar o SQL Server 2005. Como fazer o upgrade de verses anteriores do SQL Server. O conceito de instncia e como criar vrias instncias do SQL Server 2005, no mesmo servidor. Verificar se a instalao do SQL Server 2005 foi finalizada com sucesso e quais os servios disponveis. Com os conceitos apresentados neste captulo, voc ter uma noo clara sobre o que e em que situaes pode utilizar o SQL Server 2005. Outra idia que vamos procurar esclarecer sobre qual o papel de um Banco de Dados como o SQL Server 2005 nas aplicaes empresariais desenvolvidas atualmente. Muitas vezes, temos a noo de que o Banco de Dados simplesmente cumpre funes tais como: Armazenar os dados. Fornecer mecanismos para garantir a integridade dos dados. Fornecer mecanismos para a recuperao dos dados atravs de consultas. Disponibilizar mecanismos de segurana para que no sejam feitos acessos no-autorizados aos dados. Fornecer mecanismos de recuperao dos dados em caso de imprevistos e problemas. Ao finalizar este captulo, voc dever estar com duas instncias do SQL Server 2005 instaladas e funcionando. Nos exemplos dos demais captulos deste livro, ser utilizado um computador Pentium IV 2.8 GHz, com 1 GB de RAM e com as seguintes configuraes: Windows 2000 Server em portugus, com Service Pack 4 instalado. O Windows 2000 est instalado como DC Domain Controler de um domnio chamado groza.com. O nmero IP utilizado : 10.1.1.3. A mscara de sub-rede : 255.0.0.0. O nome do servidor : Servidor, com o nome completo incluindo o domnio: servidor.groza.com. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000037 N O T A Para maiores informaes sobre Controladores de Domnio DC, configuraes do TCP-IP e configurao de um servidor com o Windows 2000 Server, consulte o seguinte livro: Manual de Estudos Para o Exame 70-217, 752 pginas, de minha autoria, publicado pela editora Axcel Books do RJ (http://www.axcel.com.br). Caso voc esteja utilizando um computador com nome, domnio ou configuraes de rede diferentes, utilize os parmetros da sua configurao nos exerccios que forem apresentados. Por exemplo, se o nome do seu computador for testesql, sempre que necessrio, substitua o nome servidor pelo nome que voc est utilizando. Em alguns exemplos, como nos exemplos de instalao e upgrade deste captulo, utilizarei um segundo computador Pentium de 1 GHz, com 512 MB de RAM e com as seguintes configuraes: Windows Server 2003 Standard Edition, em portugus. Instalado como DC Domain Controler de um domnio chamado xyz.com.br O nmero IP utilizado : 10.1.1.5. A mscara de sub-rede : 255.0.0.0. O nome do servidor : Servidor2, com o nome completo incluindo o domnio: servidor2.xyz.com.br FUNDAMENTOS EM: MODELO DE APLICAES PARA A ERA DO COMRCIO ELETRNICO PR-REQUISITOS Noes bsicas de Internet e do modelo relacional. METODOLOGIA Apresentao dos elementos que compem as necessidades de aplicativos empresariais atuais e habilitados para a Internet. Que estamos no meio de uma revoluo que se iniciou no meio da dcada de 90 e no tem prazo para terminar (nem sequer sabemos aonde vai chegar), todos ns sabemos, e que esta revoluo marcada pelo comrcio eletrnico, ou o chamado e-business, tambm todos ns sabemos. As revistas e publicaes especializadas (e muitas que nem sequer so da rea) e os meios de comunicao apresentam matrias, diariamente, sobre o comrcio eletrnico. As possibilidades so inmeras, tanto para as empresas, quanto para os usurios, quanto para os profissionais envolvidos. O comrcio eletrnico deixou de ser apenas uma previso em livros e revistas, e passou a ser uma realidade, presente no dia-a-dia de todos ns, com crescimento sustentado de volume de vendas, ano aps ano. Com isso, uma nova gerao de sites est sendo criada, muito mais complexa do que as anteriores, necessitando de ferramentas de desenvolvimento e gerenciamento cada vez mais sofisticadas. Por outro lado, as aplicaes empresariais, que do suporte s operaes dirias da empresa, tambm esto crescendo em complexidade. Para piorar a situao, estas aplicaes precisam ser desenvolvidas em um prazo cada vez menor e com maior qualidade e segurana. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 380000Curso Completo Como desenvolver as aplicaes internas, manter o site da empresa sempre atrativo e dar suporte s operaes de comrcio eletrnico? Este o grande desafio das equipes de desenvolvimento, quer sejam estas internas ou terceirizadas. Grande parte do oramento de informtica das empresas est direcionado para atividades ligadas ao comrcio eletrnico e ao desenvolvimento dos sistemas informatizados, de uso interno da empresa. Novas tecnologias surgem todos os dias, prometendo facilitar a criao de sites para comrcio eletrnico e outras atividades envolvidas. Muitas empresas possuem duas faces bem distintas. Uma a face, a imagem que mostrada para o pblico externo, isto , para os seus clientes. Para estes a empresa mostra uma fachada de modernidade, facilidades de atendimento e suporte, atravs de um site cuidadosamente projetado e implementado. Porm, para o pblico interno, isto , para os funcionrios, a empresa oferece sistemas obsoletos, que no atendem s necessidades reais do trabalho e no facilitam, em nada, a vida dos funcionrios. O pior que a equipe interna, utilizando sistemas obsoletos, precisa ter um desempenho compatvel com as expectativas dos clientes, os quais esperam o melhor atendimento possvel por parte da empresa. De maneira alguma vou afirmar que a soluo mgica que ir solucionar todos os problemas de desenvolvimento a utilizao do Microsoft SQL Server 2005. O que vou procurar mostrar que o papel que o Banco de Dados desempenha de fundamental importncia para que tenhamos sistemas modernos e funcionais. Dentro deste contexto, acredito que o Microsoft SQL Server, devido as suas funcionalidades, uma excelente opo, tanto para o desenvolvimento de aplicativos que daro suporte ao comrcio eletrnico, como para o desenvolvimento dos aplicativos corporativos. O comrcio eletrnico pode acontecer de duas maneiras distintas: B2B Business to Business: Acontece quando so feitas transaes comerciais entre duas empresas. Pode ser uma montadora de automveis comprando peas de um fornecedor, ou uma livraria encomendando livros de uma editora. Em termos de volume financeiro, o B2B responsvel por um grande percentual do que comercializado via Internet. B2C Business to Consumer: um cliente como eu ou voc, comprando um livro ou um CD atravs da Internet. o cliente comprando atravs de uma loja virtual na Internet. Hoje existem sites de comrcio eletrnico que vendem uma srie de coisas: livros, revistas, cosmticos, CDs, roupas, animais de estimao, cursos de informtica, CDs com mensagens de auto-ajuda e at remdios e carros. medida que aumenta o nmero de sites de comrcio eletrnico, aumenta tambm a concorrncia. Com isso conquistar e manter clientes tem sido o grande desafio. No basta colocar um catlogo de produtos, garantir a segurana e entregar a mercadoria no local correto e no prazo estipulado. Embora estas sejam questes fundamentais, no so mais suficientes para garantir a fidelidade do cliente, pois, diferentemente do comrcio tradicional, no comrcio eletrnico, o concorrente est a apenas um clique de mouse. Hoje, um dos grandes desafios conhecer o cliente, saber identificar os seus hbitos e armazenar o maior nmero de informaes possveis sobre os hbitos de navegao e consumo, bem como sobre as preferncias do cliente, tal como o histrico de compras e pesquisas realizadas no catlogo de produtos. De posse destas informaes, o site deve ser capaz de fazer ofertas personalizadas para o cliente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000039 Posso citar o meu caso como exemplo. H tempos que compro livros importados no site www.amazon.com. Ao acessar o site, aps me identificar, aparece um link: Sugestes para o Jlio. Vejam que at o link j vem personalizado, e isso atrai o cliente. como entrar no mercadinho da esquina e o seu Manoel ir dizendo: Ol, seu Jlio, aquele queijo colonial que o senhor gosta chegou. Ao clicar no link de sugestes, recebo uma listagem de livros. O mais interessante que na listagem, realmente, esto os livros nos quais estou interessado. Que milagre este? No milagre nenhum. Acontece que, desde a primeira compra, o site vem armazenando informaes sobre as minhas compras, bem como sobre as pesquisas que fao no catlogo de livros. Com isso, foi possvel identificar minhas preferncias e elaborar uma lista de sugestes personalizada, de acordo com os meus gostos e preferncias. Quanto maior a quantidade de informaes, mais precisa esta lista. No fica difcil adivinhar quem o responsvel pelo armazenamento e recuperao deste gigantesco volume de informaes, com as preferncias e hbitos de compra dos clientes. Evidentemente que um Banco de Dados. Vejam que os sites de comrcio eletrnico esto tentando fazer o que o seu Manoel do mercadinho da esquina faz h muitos anos. Esto tentando dar um tratamento personalizado para os seus clientes, com o objetivo de mant-los satisfeitos. Clientes satisfeitos significam vendas e lucro para a empresa. Conhecer as preferncias do cliente apenas um dos exemplos de aplicao a ser baseada nos dados dos clientes, obtidos atravs do site. Uma vez formada uma base de dados grande e confivel, muitas aplicaes podem ser construdas sobre os dados obtidos. Por isso que a maioria dos sites, mesmo os que fornecem servios gratuitos, exigem que voc preencha um cadastro, antes de disponibilizar o acesso a servios e informaes. Com os dados obtidos atravs do cadastro, a empresa est tentando montar a sua base de dados sobre os seus clientes e usurios do site (nem todo usurio cadastrado torna-se um cliente). Vamos salientar um detalhe importante sobre o pargrafo anterior. Veja que o ponto-chave ter uma base de dados grande e, principalmente, confivel. Mais uma vez o Banco de Dados desempenha um papel central, garantindo a consistncia e segurana dos dados obtidos. Voc no gostaria que os dados do seu cadastro no banco, onde voc tem conta, fossem acessados por qualquer internauta, gostaria? Obviamente que no. Vejam que os dados precisam ser obtidos e armazenados em um Banco de Dados. Depois a segurana dos dados precisa ser garantida. J pensou se algum consegue invadir o site de uma empresa e obter uma listagem de nmeros de cartes de crdito? (o que j ocorreu realmente em algumas ocasies. O efeito foi to negativo que as empresas que tiveram seus Bancos de Dados invadidos foram todas falncia, devido a perda de credibilidade junto ao pblico). Seria pssimo para a imagem e para as vendas desta empresa. Alm da segurana, novas aplicaes esto sendo construdas para fazer uso destes dados, com o objetivo no s de melhorar as vendas, mas tambm de melhorar as relaes com os clientes. No basta que a empresa seja capaz de vender. Para sobreviver, ela precisa continuar vendendo para o cliente. Para continuar vendendo, isto , para fidelizar o cliente, a rea de atendimento ao cliente de fundamental importncia. Se voc compra, por exemplo, um CD e este entregue fora do prazo, voc reclama. Se a sua reclamao no for satisfatoriamente atendida, voc simplesmente deixa de proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 400000Curso Completo comprar desta empresa e procura outra empresa. Afinal, na Internet, o concorrente est a um clique de mouse, conforme descrevemos antes. Um dos assuntos, que mais discutido no momento, representado pela sigla CRM Customer Rela- tionship Management. Traduzindo teramos: Gerenciamento das Relaes com o Cliente. CRM representa um conjunto de solues de hardware e software, capazes de melhorar a relao das empresas com os clientes, principalmente no atendimento a questes do cliente, seja suporte tcnico, dvidas sobre novos produtos, etc. Quem j no ligou para uma central de atendimento, e teve que contar a mesma histria uma dezena de vezes? Voc liga, algum atende. Voc descreve o seu problema, a pessoa diz que no com ela e passa para um outro setor. Um novo atendente e a mesma histria; voc passado para um outro setor. Depois da dcima transferncia (contando que voc seja uma pessoa paciente, se no na terceira voc j desliga o telefone), voc desliga irritado, sem ter solucionado o problema. Muito provavelmente, esta empresa acaba de perder mais um cliente. Melhorar o atendimento ao cliente ou, de uma maneira mais genrica, a relao dos clientes com a empresa, o objetivo das solues de CRM. Ao ligar para uma central de atendimento, o cliente identifica-se atravs do seu cdigo de cliente, o sistema de CRM busca no Banco de Dados (olha o papel central do Banco de Dados a de novo!) todas as informaes sobre o cliente, incluindo o histrico de compras e o histrico de reclamaes, bem como as reclamaes ainda no solucionadas. Ele descreve o problema o qual inserido no sistema. Caso o atendente no seja capaz de solucion-lo, a chamada transferida diretamente para a pessoa capaz de solucionar o problema. Porm toda a descrio do problema, tambm est acessvel para a pessoa que ir atender o cliente (os dados foram passados pelo sistema de CRM, quando da transferncia do chamado). Com isso o cliente no precisa repetir toda a histria. atendido, soluciona o seu problema e fica satisfeito. Cliente satisfeito continua comprando. A descrio do pargrafo anterior representa uma situao ideal. claro que os sistemas de CRM ainda no so perfeitos. Porm novas tcnicas esto sendo introduzidas, com a possibilidade de atendimentos atravs da Internet, acessando o site da empresa. Com a melhoria dos sistemas de telecomunicaes, poderemos tornar realidade um atendimento de alta qualidade e conclusividade, atravs da Internet. Por exemplo, o cliente est pesquisando o catlogo de produtos. Na pgina com os dados do produto, existe um link Outras dvidas. Ao clicar neste link, o cliente entra numa seo de bate-papo com um atendente da empresa. O cliente pode colocar as suas dvidas, as quais sero solucionadas em tempo real. Assim, a probabilidade de que o pedido seja feito bem maior. Alm disso as dvidas do cliente podem ser armazenadas no Banco de Dados (olha o papel importante do Banco de Dados novamente). Quando uma dvida comear a aparecer com uma determinada freqncia, os dados que solucionam a dvida podem ser disponibilizados no catlogo de solues. Com isso, os prximos clientes que tiverem a mesma dvida no precisaro do auxlio de um atendente. Vejam que novamente estamos em um processo de aquisio de informaes, atravs do prprio site, e utilizao destas informaes para melhorar a qualidade dos servios e produtos oferecidos. E me permitam ser chato: onde armazenaremos estas informaes? Claro, no Banco de Dados. No B2B tambm existem muitas questes a serem gerenciadas. Para entendermos a complexidade destas situaes imagine o seguinte exemplo, ilustrado pela Figura 2.1: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000041 Figura 2.1 A complexidade das questes envolvidas no B2B. Temos uma rede de concessionrias que presta servios de manuteno para uma determinada marca de automveis. O objetivo ter um controle automatizado de estoque de peas de reposio. Cada pea catalogada possui um nvel mnimo de unidades em estoque. Quando este nvel mnimo atingido, automaticamente, o Banco de Dados deve lanar, via Internet, um pedido para este item. O funcionamento do sistema o seguinte: O cliente vai na concessionria para comprar uma determinada pea. O atendente efetua a venda, e o estoque atualizado, automaticamente, pelo sistema de vendas. Se a pea atingir o nvel mnimo, previamente estabelecido, um pedido deve ser automaticamente gerado. Este pedido contm informaes sobre a concessionria, bem como sobre as peas que esto sendo encomendadas. As informaes sobre o pedido so criptografadas, para garantir a segurana, e o pedido enviado, atravs da Internet, para o fornecedor da pea. Dentro de um prazo preestabelecido, a pea entregue, evitando que esta falte no estoque. Observe que, neste caso, existe uma troca de informaes entre as concessionrias e os fornecedores. Para que possa haver esta troca de informaes, os sistemas das duas empresas devem ser capazes de trocar dados em um formato comum. Com isso as empresas sero capazes de fazer negcios atravs da Internet. No Captulo 12, falaremos um pouco sobre o XML eXtensible Markup Language, que pode ser utilizado para a troca de informaes em um formato padro, o qual est sendo cada vez mais adotado na Internet e tambm nos sistemas internos das empresas. Poderamos introduzir mais algumas questes, que complicariam um pouco mais a infra-estrutura necessria para a realizao do B2B. Por exemplo, ao invs de comprar uma determinada pea, sempre do mesmo fornecedor, pode ser que o sistema deva ser capaz de enviar o pedido para vrios fornecedores e selecionar aquele que fizer a melhor oferta, tanto em termos de preo quanto de prazo de entrega. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 420000Curso Completo Neste caso, a concessionria lana o pedido no seu site e aguarda as propostas dos fornecedores. Aps recebidas as respostas, uma delas selecionada. Este parece ser um sistema de leilo ao contrrio, ou seja, o comprador anuncia que est precisando de um determinado produto, e os fornecedores esforam- se para fazer a melhor oferta, dentro do prazo mximo estipulado pelo cliente. Esta forma de fazer compras conhecida como e-procurement. Em determinados casos, a lista de propostas est disponvel para todos os fornecedores, isto , se um fornecedor A fez uma proposta, depois, ao consultar a lista, viu que um fornecedor B fez uma proposta melhor do que a sua, o fornecedor A pode alterar a sua proposta, dentro de um perodo de tempo estipulado pelo comprador, no nosso caso, a concessionria. Vejam que, mesmo no sistema de B2B, a lgica tem sido revertida em favor do cliente, isto , os fornecedores que disputam o cliente, atravs de boas ofertas, preos competitivos e prazos adequados de entrega. Porm, a criao de sistemas deste tipo uma tarefa complexa. A todo momento temos acesso a informaes dos Bancos de Dados, questes de segurana no acesso s informaes, alm de uma lgica bastante complexa. Mais uma vez reforo que o Microsoft SQL Server 2005 nos oferece uma srie de recursos interessantes para a criao de aplicaes de alta complexidade, como as descritas nos exemplos deste captulo. Vamos introduzir mais alguns detalhes no nosso exemplo. Pode ser que, alm de fazer o pedido, a concessionria, uma vez aprovada a compra, deva fazer o pagamento do pedido, atravs de uma transao on-line. O pagamento pode ser feito, por exemplo, atravs de uma transferncia da conta corrente da concessionria para a conta corrente do fornecedor. Neste ponto, precisamos introduzir o conceito de transao. Uma transao, de uma maneira bastante simples, um conjunto de operaes sobre os dados, que deve acontecer como um todo, ou seja, todas as operaes contidas na transao devem ser finalizadas com sucesso, ou nenhuma delas deve ser realizada. Caso uma das operaes, contida na transao, falhe, as operaes ainda pendentes devem ser canceladas; e as operaes j realizadas devem ser revertidas. Com isso garantimos que a transao acontea como um todo, ou que nenhuma das operaes contidas na transao seja realizada. Para entender, na prtica, o conceito de transaes, vamos voltar ao exemplo anterior. Ao efetuar um pagamento, o sistema deve transferir valores da conta corrente da concessionria para a do fornecedor. Estas duas aes devem acontecer no contexto de uma transao, conforme indicado a seguir: Incio da Transao Ao 1: Debita o valor da conta corrente da Concessionria. Ao 2: Credita o valor na conta corrente do Fornecedor. Final da Transao. A primeira ao efetua o dbito na conta corrente da concessionria. Vamos supor que a Ao 1 ocorra com sucesso, porm na hora de fazer o crdito na conta corrente do fornecedor, ocorra um problema. O que devemos fazer? O valor deve ser estornado para a conta da Concessionria, ou seja, a Ao 1 deve ser revertida, uma vez que nem todas as aes dentro da transao puderam ser concludas com xito. Vejam a importncia do conceito de transao pois, neste caso, se no usssemos transao, o valor seria debitado da conta corrente da concessionria, sem ser creditado na conta corrente do fornecedor. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000043 FUNDAMENTOS EM: ARQUITETURA DE APLICAES PR-REQUISITOS Conhecimento da complexidade no desenvolvimento e manuteno de aplicaes para a Internet. METODOLOGIA Apresentao dos modelos e comparao entre eles. Embora utilizemos o exemplo de comrcio eletrnico, CRM, e-procurement, etc., como situaes onde o Banco de Dados desempenha um papel fundamental, hoje em dia, com o aumento da complexidade das redes de computadores baseadas em PCs, existe uma tendncia bastante acentuada em favor do desenvolvimento de aplicaes que seguem o modelo Web. So aplicaes que so acessadas atravs de um navegador. Neste tpico, iremos falar um pouco sobre aplicaes Cliente/Servidor tradicionais e os problemas deste tipo de modelo. Falaremos sobre aplicaes de duas, trs ou n camadas, e as vantagens destas ltimas em relao ao modelo Cliente/Servidor tradicional. A COMPLEXIDADE DE GERENCIAMENTO DO MODELO CLIENTE/SERVIDOR E APLICAES DE DUAS CAMADAS O modelo Cliente/Servidor foi criado tendo como base a descentralizao dos dados e recursos de processamento, em oposio ao modelo centralizado utilizado na poca em que o mainframe dominava absoluto. No modelo Cliente/Servidor, conforme indicado pela Figura 2.2, em uma rede de computadores, existem uma ou mais mquinas que atuam como servidores, disponibilizando recursos para as demais mquinas, as quais atuam como clientes. Figura 2.2 O Modelo Cliente/Servidor tradicional. Conforme pode ser visto na Figura 2.2, temos servidores para arquivos, Banco de Dados e outras funes, tais como: servidores de impresso, servidores Web, etc. Estas redes, tipicamente, so formadas por servidores, os quais so equipamentos com um maior poder de processamento e armazenamento do que os clientes (estaes de trabalho dos usurios, conectadas rede), os quais, na maioria dos casos, so microcomputadores PCs ligados em rede. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 440000Curso Completo APLICAES EM DUAS CAMADAS No incio da utilizao do modelo Cliente/Servidor, as aplicaes foram desenvolvidas utilizando-se um modelo de desenvolvimento em duas camadas. Neste modelo, um programa, normalmente desenvolvido em um ambiente de desenvolvimento grfico, como o Visual Basic, Delphi ou Power Builder, instalado em cada cliente. Este programa acessa dados em um servidor de Banco de Dados, conforme ilustrado na Figura 2.3: Figura 2.3 O modelo de desenvolvimento em duas camadas. No modelo de duas camadas, temos um programa que instalado em cada cliente da rede, onde o programa ser utilizado. Este programa que faz acesso ao Banco de Dados residente no servidor de Banco de Dados. Na maioria dos casos, a mquina do cliente um PC rodando Windows, e a aplicao Cliente desenvolvida utilizando-se um dos ambientes conhecidos de desenvolvimento, conforme citado anteriormente. Sendo a aplicao Cliente um programa para Windows (na grande maioria dos casos), esta deve ser instalada em cada um dos computadores da rede, que faro uso da aplicao. o processo de instalao normal, para qualquer aplicao Windows. No modelo de duas camadas, a aplicao Cliente responsvel pelas seguintes funes: Apresentao: O cdigo que gera a interface visvel do programa faz parte da aplicao Cliente. Todos os formulrios, menus e demais elementos visuais esto contidos no cdigo da aplicao Cliente. Caso sejam necessrias alteraes na interface do programa, faz-se necessria a gerao de uma nova verso do programa, e todos os computadores que possuem a verso anterior devem receber a nova verso, para que o usurio possa ter acesso s alteraes da interface. Ento comeam a surgir os problemas no modelo de duas camadas: uma simples alterao de interface suficiente para gerar a necessidade de atualizar a aplicao, em centenas ou milhares de computadores. O gerenciamento desta tarefa algo extremamente complexo e o custo de manuteno muito elevado. Lgica do Negcio: As regras, que definem a maneira como os dados sero acessados e processados, so conhecidas como Lgica do Negcio ou Regras do Negcio. Fazem parte das Regras do Negcio, desde funes simples de validao da entrada de dados, como o clculo do dgito verificador de um CPF ou CNPJ, at funes mais complexas, como descontos escalonados para os maiores clientes, de acordo com o volume da compra. Questes relativas legislao fiscal e escrita contbil tambm proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000045 fazem parte da Lgica do Negcio. Por exemplo, um programa para gerncia de recursos humanos, desenvolvido para a legislao dos EUA, no pode ser utilizado, sem modificaes, por uma empresa brasileira. Isso acontece porque a legislao dos EUA diferente da brasileira. Em sntese, as regras para o sistema de recursos humanos so diferentes. Como alteraes nas regras do negcio so bastante freqentes, ainda mais com as repetidas mudanas na legislao do nosso pas, faz-se necessria a gerao de uma nova verso do programa, cada vez que uma determinada regra muda, ou quando regras forem acrescentadas ou retiradas. Desta forma, todos os computadores que possuem a verso anterior devem receber a nova verso, para que o usurio possa ter acesso s alteraes. Agora temos mais problemas no modelo de duas camadas: qualquer alterao nas regras do negcio suficiente para gerar a necessidade de atualizar a aplicao, em centenas ou milhares de computadores. O que j era complicado piorou um pouco mais, principalmente considerando que, no nosso pas, a legislao e outras normas legais mudam com uma freqncia realmente espantosa. Por isso, o modelo de duas camadas demonstrou-se de difcil manuteno e gerenciamento, alm de apresentar um TCO Total Cost Ownership (Custo Total de Propriedade) elevado. A outra camada, no modelo de duas camadas, o Banco de Dados, que fica armazenado no servidor de Banco de Dados. Uma aplicao desenvolvida em Visual Basic, a qual acessa um Banco de Dados em um servidor Microsoft SQL Server 2005, um tpico exemplo de uma aplicao em duas camadas. Em busca de solues para os problemas do modelo de duas camadas, que surgiu a proposta do modelo de trs camadas, conforme analisaremos a seguir. APLICAES EM TRS CAMADAS Como uma evoluo do modelo de duas camadas, surge o modelo de trs camadas. A idia bsica do modelo de trs camadas retirar as regras do negcio do cliente e centraliz-las em um determinado ponto, o qual chamado de servidor de Aplicaes. O acesso ao Banco de Dados feito atravs das regras contidas no servidor de aplicaes. Ao centralizar as regras do negcio em um nico ponto, fica muito mais fcil a atualizao das regras do negcio. A Figura 2.4 nos d uma idia geral do modelo em trs camadas: Figura 2.4 O modelo de desenvolvimento em trs camadas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 460000Curso Completo Todo o acesso do cliente ao Banco de Dados feito de acordo com as regras contidas no Servidor de aplicaes. O cliente no tem acesso ao Banco de Dados, sem antes passar pelo servidor de Aplicaes. Com isso as trs camadas so as seguintes: Apresentao: Continua no programa instalado no cliente. Alteraes na interface do programa geram a necessidade de atualizar a aplicao em todos os computadores, onde a mesma est sendo utilizada. Porm cabe ressaltar que alteraes na interface so menos freqentes do que alteraes nas regras do negcio. Lgica: So as regras do negcio, as quais determinam de que maneira os dados sero utilizados. Esta camada foi deslocada para o servidor de aplicaes. Desta maneira, quando uma regra do negcio for alterada, basta atualiz-la no servidor de aplicaes. Aps a atualizao, todos os usurios passaro a ter acesso nova verso, sem que seja necessrio reinstalar o programa em cada um dos computadores da rede. Vejam que, ao centralizar as regras do negcio em um servidor de aplicaes, estamos facilitando a tarefa de manter a aplicao atualizada. As coisas esto comeando a melhorar. Dados: Nesta camada temos o servidor de Banco de Dados, no qual reside toda a informao necessria para o funcionamento da aplicao. Cabe reforar que os dados somente so acessados atravs do servidor de aplicao, e no diretamente pela aplicao Cliente. Com isso o acesso aos dados, obrigatoriamente, feito de acordo com as regras de negcios, contidas no servidor de aplicao. Com a introduo da camada de Lgica, resolvemos o problema de termos que atualizar a aplicao, em centenas ou milhares de computadores, cada vez que uma regra do negcio for alterada. Porm continuamos com o problema de atualizao da interface da aplicao, cada vez que forem necessrias mudanas na interface da aplicao. Por isso que surgiram os modelos de n-camadas. No prximo tpico, iremos falar um pouco sobre o modelo de quatro camadas. Ao longo deste livro falaremos um pouco mais sobre transaes e outros conceitos envolvidos com o desenvolvimento de aplicaes de n-camadas. APLICAES EM QUATRO CAMADAS Como uma evoluo do modelo de trs camadas, surge o modelo de quatro camadas. A idia bsica do modelo de quatro camadas retirar a apresentao do cliente e centraliz-las em um determinado ponto, o qual na maioria dos casos um servidor Web. Com isso, o prprio cliente deixa de existir como um programa que precisa ser instalado em cada computador da rede. O acesso aplicao feito atravs de um navegador, como o Internet Explorer ou o Netscape Navigator. A Figura 2.5 nos d uma idia geral do modelo em quatro camadas. Para acessar a aplicao, o cliente acessa o endereo da aplicao, utilizando o seu navegador. Por exemplo http://www.empresa-xy.com/sistemas/rh.aspx. Todo o acesso do cliente ao Banco de Dados feito de acordo com as regras contidas no servidor de aplicaes. O cliente no tem acesso ao Banco de Dados, sem antes passar pelo servidor de aplicaes. Com isso as quatro camadas so as seguintes: Cliente: Neste caso, o cliente o navegador utilizado pelo usurio, quer seja o Internet Explorer, Netscape Navigator, ou outro navegador qualquer, compatvel com as aplicaes utilizadas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000047 Figura 2.5 O modelo de desenvolvimento em quatro camadas. Apresentao: Neste modelo, se desloca do cliente para o servidor Web. A interface pode ser composta de pginas HTML, ASP, PHP ou qualquer outra tecnologia capaz de gerar contedo para o navegador. Com isso, alteraes na interface da aplicao so feitas diretamente no servidor Web, sendo que estas alteraes estaro, automaticamente, disponveis para todos os clientes. Com este modelo no existe a necessidade de reinstalar a aplicao em todos os computadores da rede, sempre que houver alteraes na interface das aplicaes. Fica muito mais fcil garantir que todos esto tendo acesso verso mais atualizada da aplicao. A nica coisa que o cliente precisa ter instalado na sua mquina o navegador. Lgica: So as regras do negcio, as quais determinam de que maneira os dados sero utilizados. Esta camada est no servidor de aplicaes. Desta maneira, quando uma regra do negcio for alterada, basta atualiz-la no servidor de aplicaes. Aps a atualizao, todos os usurios passaro a ter acesso nova verso, sem que seja necessrio reinstalar o programa em cada um dos computadores da rede. Vejam que, ao centralizar as regras do negcio em um servidor de aplicaes, estamos facilitando a tarefa de manter a aplicao atualizada. Dados: Nesta camada, temos o servidor de Banco de Dados, no qual reside toda a informao necessria para o funcionamento da aplicao. Com o deslocamento da camada de apresentao para um servidor Web, resolvemos o problema de termos que atualizar a aplicao, em centenas ou milhares de computadores, cada vez que a interface da aplicao for alterada. Neste ponto, a atualizao das aplicaes uma tarefa mais gerencivel, muito diferente do que acontecia no caso do modelo em duas camadas. O custo de manuteno dos sistemas muito menor. Os servidores de aplicao, Web e Banco de Dados no precisam, necessariamente, ser servidores separados, isto , uma mquina para fazer o papel de cada um dos servidores. O conceito de servidor de aplicao, servidor Web ou servidor de Banco de Dados um conceito relacionado com a funo que o servidor desempenha. Podemos ter, em um mesmo equipamento, estes diferentes servidores. Claro proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 480000Curso Completo que questes de desempenho devem ser levadas em considerao e cuidadosamente projetadas, para no prejudicar o desempenho e a segurana das aplicaes. Tambm podemos ter a funcionalidade do servidor de aplicaes distribuda atravs de vrios servidores, com cada servidor tendo alguns componentes que formam parte das funcionalidades da aplicao. Este modelo onde temos componentes em diversos equipamentos conhecido como Modelo de Aplicaes Distribudas. Tambm podemos colocar os componentes em mais do que um servidor para obtermos um melhor desempenho, ou redundncia, no caso de um servidor falhar. QUESTES A CONSIDERARMOS NOS MODELOS DE TRS OU MAIS CAMADAS Muitas so as vantagens dos modelos de trs ou mais camadas, em relao facilidade de gerenciamento e atualizao das aplicaes. Porm consideraes devem ser feitas em relao a desempenho e dimensionamento dos equipamentos que atuaro como servidores. A partir do momento em que estamos deslocando funcionalidades (tipicamente lgica e apresentao) do cliente para um ou mais servidores, tambm estamos deslocando capacidade de processamento em termos de memria RAM e processador. Funes que antes eram executadas pelos clientes, utilizando memria e processador da estao Cliente, agora foram deslocadas para os servidores, consumindo memria e processador do servidor. Desta forma, um dos fatores-chave o correto dimensionamento dos equipamentos servidores. Para fazer o dimensionamento dos servidores, precisamos conhecer o nmero de usurios que iro acessar a aplicao simultaneamente, o nvel de exigncia de cada usurio, os recursos necessrios pelos softwares do servidor, dentre outros. Para determinar o nvel de recursos necessrios em cada um dos servidores, voc precisa fazer um estudo bem detalhado, de tal forma que o servidor no fique sub- dimensionado. Quando o servidor no est corretamente dimensionado, a tendncia que o acesso aplicao fique bastante lento, o que causa insatisfao entre os usurios. Observe que, quer seja no modelo de duas camadas, quer seja em outros modelos, sempre temos a presena de um Banco de Dados. Devido importncia deste elemento chave que precisamos da figura do DBA Database Administrator. O DBA a pessoa responsvel por manter o banco de Dados em funcionamento e proceder s alteraes necessrias relativas segurana e manuteno do banco. O contedo deste livro quase todo relacionado com atividades que devem ser desempenhadas pelo DBA. A partir do Captulo 9, abordarei tpicos mais relacionados com o desenvolvimento de aplicaes com o Microsoft SQL Server 2005 e com tecnologias de programao Web, tais como ASP e ASP.NET. FUNDAMENTOS EM: AS PRINCIPAIS NOVIDADES E MELHORAMENTOS DO MICROSOFT SQL SERVER 2005 PR-REQUISITOS Conhecimentos do modelo relacional e de arquitetura de aplicaes. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000049 METODOLOGIA Apresentao das principais novidades do SQL Server 2005. Neste item, veremos as melhorias e novidades introduzidas no SQL Server 2005, em relao s verses anteriores (apresentarei as principais melhorias e novidades). Voc pode utilizar esta seo como uma referncia para analisar se vale a pena migrar os seus sistemas atuais para a nova verso do Microsoft SQL Server. Dividirei as novidades em categorias, para que possamos analisar as novas funcionalidades de uma maneira mais estruturada. Evidentemente que irei apresentar as principais novidades e melhorias. Pois para apresentar todas as novidades seria necessrio um livro separado, s com as novidades. Alis este livro j existe e uma excelente introduo ao SQL Server 2005. O livro que apresenta todas as novidades do SQL Server 2005 o seguinte, disponvel somente em Ingls: SQL Server 2005 New Features, Editora McGraw Hill, 275 pginas. Mais detalhes em: http://www.amazon.com/exec/obidos/tg/detail/-/0072227761/ qid=1110935474/sr=1-1/ref=sr_1_1/002-8063366-0124867?v=glance&s=books NOVIDADES E MELHORIAS DO BANCO DE DADOS Centenas de novos recursos e novidades foram inseridos nas capacidades do Banco de Dados do SQL Server 2005 (o nome tcnico seria na Mquina do Banco de Dados do SQL Server 2005, ou o termo em Ingls: SQL Server 2005 Database Engine). Como so muitas as novidades, vamos dividi-las em subcategorias, para facilitar a apresentao das novidades. NOVIDADES NO DESENVOLVIMENTO DE APLICAES Esta foi, na minha opinio, uma das reas onde o SQL Server 2005 mais avanou e apresentou melhorias, em relao s verses anteriores. Na minha opinio, s a integrao com o Framework .NET (que descreverei em mais detalhes logo a seguir) j vale o upgrade. Com a integrao com o Framework .NET, possvel criar objetos tais como triggers, stored procedures e tipos de dados definidos pelo usurio, usando qualquer linguagem suportada pelo framework .Net, tais como VB.NET, C#, Delphi.NET, etc. Este um avano considervel, ou seja, agora voc no est limitado a somente usar o T-SQL, para a criao destes objetos. Com a integrao com o .Net, os horizontes de desenvolvimento se ampliam, consideravelmente. Outra excelente novidade que estes objetos podem, facilmente, ser criados, usando o Visual Studio .NET 2005 (ainda em verso Beta, enquanto eu escrevo este livro). Com o Visual Studio .NET, extremamente simples a criao de objetos tais como triggers e stored procedures e a instalao destes objetos, para serem utilizados em um ou mais Bancos de Dados do SQL Server 2005. A seguir descrevo mais algumas importantes novidades, na rea de desenvolvimento de aplicaes com o SQL Server 2005: Acesso HTTP SOAP Nativo: Com o SQL Server 2005 possvel acessar os dados de um Banco de Dados, diretamente, usando o protocolo SOAP. Para isso, basta configurar o SQL Server 2005 para atuar como um endpoint de acesso SOAP, o qual capaz de receber os pacotes SOAP e retornar os dados solicitados. Isso, por exemplo, permite acessar os dados de um Banco de Dados do SQL Server 2005, sem ter que usar um servidor Web tal com o IIS ou o Apache. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 500000Curso Completo Um novo tipo de dados xml: Foi criado um novo tipo de dados, o qual capaz de tratar diretamente com dados e documentos no formato XML. Criar Funes definidas pelo usurio, usando qualquer linguagem suportada pelo Frame- work .NET: Esta uma conseqncia da integrao com o framework .NET. Com o SQL Server 2000 foi introduzida a possibilidade de o programador criar as suas prprias funes, em adio s funes j fornecidas pela linguagem Transact-SQL (T-SQL). Estas funes podem retornar um valor simples, ou at mesmo uma tabela. Por exemplo, voc pode criar uma funo para validao do DV do CPF ou do CNPJ, uma outra funo para clculo do Imposto de Renda e assim por diante. No SQL Server 2000, estas funes s podiam ser criadas usando o T-SQL. No SQL Server 2005, estas funes podem ser criadas, usando qualquer linguagem suportada pelo Framework .NET. Estas funes podem ser facilmente criadas, usando-se o Visual Studo .NET 2005. Novas consultas para acesso a metadados: Os metadados so informaes sobre os dados. Ou, falando de uma maneira mais simples, so informaes sobre a estrutura do Banco de Dados e das tabelas. Por exemplo, uma lista com o nome de todas as tabelas de um Banco de Dados uma informao de metadados. Outro exemplo, uma lista de todos os campos de uma tabela, com informaes sobre as propriedades de cada campo tambm so informaes de metadados. No SQL Server 2005 foram introduzidas dezenas de novas Views (consultas), as quais podem ser utilizadas para obter informaes detalhadas sobre a estrutura de um Banco de Dados. Triggers associadas a alteraes na estrutura do Banco de Dados: Nas verses anteriores do SQL Server, s era possvel criar triggers associadas com alteraes nos dados das tabelas de um Banco de Dados. Por exemplo, voc poderia criar uma trigger associada ao campo Quantidade em estoque, da tabela Produtos no estoque, a qual fosse disparada sempre que o valor do campo Quantidade for alterado. Esta trigger poderia receber como parmetro o cdigo do produto que est tendo a sua quantidade em estoque alterada e verificar se o produto no atingiu o estoque mnimo. Se o estoque mnimo foi atingido, a trigger poder gravar um registro, na tabela de pedidos pendentes, para que seja feito um pedido do produto. A novidade no SQL Server 2005 que possvel criar triggers que so disparadas quando so feitas alteraes na estrutura do Banco de Dados. Por exemplo, quando as propriedades de um campo de uma tabela so alteradas, ou quando um novo campo criado ou excludo, ou quando uma nova tabela criada ou excluda e assim por diante. Com triggers que podem ser disparadas por alteraes na estrutura do Banco de Dados, o desenvolvedor pode implementar um sistema de monitoramento bem mais eficaz, podendo inclusive criar trig- gers que no permitam que a estrutura de tabelas e/ou campos crticos sejam alterados ou que tabelas e/ou campos crticos, sejam excludos. Novos recursos da linguagem T-SQL: Muitos novos recursos e melhoramentos foram inseridos na linguagem T-SQL. Uma das novidades a possibilidade de criar consultas recursivas. Um novo operador foi criado operador APPLY, o qual facilita a combinao entre dados de duas ou mais tabelas, onde alguns campos so retornados a partir de uma tabela e, para cada valor da primeira tabela, so exigidos todos os registros correspondentes, na segunda tabela. Foram includos novos operadores PIVOT e UNPIVOT, os quais facilitam a transposio de linhas em colunas e vice-versa, em uma consulta de referncia cruzada. O operador TOP, o qual utilizado para retornar apenas um nmero especfico de registros ou um percentual do nmero total de registros de uma consulta, tambm foi melhorado no SQL Server 2005. Agora, alm de nmeros, proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000051 voc pode fornecer uma varivel como valor do operador TOP, o qual utilizar o valor da varivel. Esta mudana nos d bem mais flexibilidade na utilizao do operador TOP em rotinas de programao. Query Notification: Este um recurso realmente valioso, principalmente para melhorar o desempenho das aplicaes. Com este recurso possvel criar aplicaes, as quais so capazes de manter em cache o resultado de uma ou mais consultas. Alm disso, o SQL Server 2005 pode ser configurado, para notificar a aplicao, sempre que houver alteraes nos dados originais, de tal forma que o resultado da consulta seja atualizado no cache, para evitar que dados desatualizados sejam acessados. Este um recurso realmente valioso e pode ter, nas aplicaes, o mesmo efeito de desempenho que um servidor de cache de pginas Web tem na velocidade de acesso a Internet. Outras novidades: Existem muitas outras novidades, no desenvolvimento de aplicaes no SQL Server 2005, que por falta de espao no temos como descrever em detalhes neste livro. Mas voc encontra informaes detalhadas, sobre as seguintes novidades, no Books Online, o qual o sistema de Ajuda, instalado com o SQL Server 2005: Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Server Books Online. Clique em SQL Server Books Online -> Whats New in SQL Server 2005 -> Database Engine Enhancements -> Database Engine Programmabil- ity Enhancements. NOVIDADES NO GERENCIAMENTO DA MQUINA DE BANCO DE DADOS DO SQL SERVER 2005 Nesta rea, encontramos as seguintes melhorias: Separao entre Usurios e Esquemas: Nas verses anteriores do SQL Server, cada objeto tinha um dono e este dono que, por padro, tinha permisses para fazer alteraes na estrutura do objeto. No SQL Server 2005 todos os objetos fazem parte de um esquema (Schema) e um usurio ou grupo (roles) pode ser dono do esquema. Com isso, fica mais fcil gerenciar as permisses e garantir que um grupo de usurios possa atuar como dono de vrios objetos, sendo dono do schema ao qual os objetos pertencem. Esta uma importante inovao que tambm est relacionada rea de segurana. Eu irei detalhar esta novidade, no Captulo 6, o qual ser completamente dedicado ao gerenciamento de segurana no SQL Server 2005. Nova Clusula ATTACH_REBUILD_LOG: Esta nova clusula permite configurar um Banco de Dados para ser usado em um outro servidor (chamamos isso de atachar o Banco de Dados), sem que seja preciso carregar todos os arquivos de LOG do Banco de dados. Um exemplo prtico onde esta clusula pode ser utilizada seria em uma situao onde estamos querendo levar uma cpia de um Banco de Dados para um outro servidor, sendo que esta cpia ser somente leitura. Neste caso, no preciso carregar tambm todos os arquivos de log. Esta operao pode ser feita, usando a nova clusula ATTACH_REBUILD_LOG. Outras novidades: Existem outras novidades, no gerenciamento da mquina de Banco de Dados do SQL Server 2005. Voc encontra informaes detalhadas, sobre estas novidades, no Books Online, o qual o sistema de Ajuda, instalado com o SQL Server 2005: Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Server Books Online. Uma vez aberto o Books online, clique em SQL Server Books Online -> Whats New in SQL Server 2005 -> Database Engine Enhancements -> Database Engine Manageability Enhancements. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 520000Curso Completo NOVIDADES QUE MELHORAM O TEMPO DE UPTIME DO SQL SERVER 2005 Nesta rea, encontramos diversas melhorais, responsveis por manter o SQL Server 2005 em funcionamento, minimizando o mximo possvel interrupes e tempos de parada, devido a erros ou problemas de software ou hardware. A seguir apresento as principais novidades nesta rea. Aumento no nmero de ns de cluster: Nas verses anteriores do SQL Server, eram suportados clusters com quatro ns, para as verses de 64 bits do SQL Server e de 2 ns, para as verses de 32 bits. Com o SQL Server 2005 so suportados 8 ns para as verses de 32 bits e 4 ns para as verses de 64 bits. Aumento no nmero de instncias: A possibilidade de ter mais de uma instncia, do SQL Server, no mesmo servidor, foi introduzida com o SQL Server 2000. No SQL Server 2000 o nmero mximo de instncias, por servidor, estava limitado a 16. No SQL Server 2005, podemos ter at 50 instncias, por servidor, para o SQL Server 2005 Enterprise Edition e at 16 instncias para as demais edies do SQL Server 2005. Criao de servidores espelhados (Database Mirroring): Esta uma novidade que eu realmente aprecio, pois de grande utilidade. Com o SQL Server 2005 voc pode configurar um servidor espelho de um servidor de produo. Quaisquer alteraes que forem feitas no servidor de produo sero repassadas, automaticamente, para o servidor espelho. Havendo qualquer problema com o servidor de produo, rapidamente o servidor espelho poder ser ativado, para assumir o papel do servidor de produo. A grande vantagem do Database Mirroring que o tempo de parada bastante reduzido e o servidor espelho sempre mantido atualizado. Instance Availability: Dedicated Administrator Connection (Conexo dedicada para o Administrador): Este outro recurso de grande valor. Em determinadas situaes, pode ocorrer de uma instncia do SQL Server simplesmente congelar, trancar. Nestas situaes, o servidor fica instvel e pode ocorrer de voc no conseguir se conectar usando as ferramentas de administrao tradicionais, tais como o SQL Server Management Studio. Muitas vezes, o administrador acaba reinicializando o Windows, para tentar normalizar a instncia do SQL Server que est com problemas. Com o SQL Server 2005, voc tem a opo de criar uma Dedicated Administrator Connection (Conexo dedicada para o Administrador), atravs da qual ser possvel diagnosticar e resolver problemas, mesmo em uma instncia que esteja instvel, no respondendo aos comandos e ferramentas tradicionais. Uma Dedicated Administrator Connection (Conexo dedicada para o Administrador) como se fosse uma conexo de alta prioridade, para a qual o SQL Server 2005 d ateno e responde, mesmo em situaes extremas, com problemas graves. um recurso realmente de grande utilidade. Hot-Add Memory (Adio de memria a quente): Com o SQL Server 2005, desde que o hardware do servidor d suporte, evidentemente, voc pode adicionar mais memria RAM, sem desligar o servidor. O SQL Server 2005 automaticamente reconhece e passa a utilizar a nova quantidade de memria disponvel. No possvel remover memria, sem desligar o servidor. Somente possvel adicionar memria, sem o desligamento do servidor. Database Snapshots: Com o SQL Server 2005 possvel criar um snapshot de um Banco de Dados e, se necessrio, utilizar este snapshot para restaurar o Banco de Dados ao estado de proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000053 quando o snapshot foi feito. Por exemplo, s nove horas voc cria um snapshot de um Banco de Dados. Todos os dados e configuraes do Banco de Dados e de todos os seus objetos estaro gravados no snapshot. Agora suponhamos que em torno de 9:05 voc executou, por engano, comandos que fizeram uma verdadeira baguna no Banco de Dados, excluindo tabelas e configuraes vitais para o funcionamento do Banco de Dados. Voc pode simplesmente utilizar o Snapshot criado s 9:00, para restaurar o Banco de Dados ao estado em que ele se encontrava s 9:00 horas, ou seja, antes de terem sido executados os comandos que bagunaram o Banco de Dados. A vantagem do snapshot, em relao ao backup/re- store, que o snapshot bem mais fcil e rpido de ser utilizado, reduzindo com isso o tempo de parada do Banco de Dados. Online Restores: Nas verses anteriores do SQL Server, era preciso concluir o restore de todo o Banco de Dados, antes que este pudesse ser colocado online e acessado pelos usurios. Com o SQL Server 2005, o banco colocado online logo aps o incio do restore e os dados que j foram restaurados j passam a estar disponveis para os usurios. Isso tambm reduz o tempo de indisponibilidade do servidor, por ocasio do restore de um Banco de Dados. Outras novidades: Existem outras novidades, na melhoria do Uptime dos Bancos de Dados do SQL Server 2005. Voc encontra informaes detalhadas, sobre estas novidades, no Books Online, o qual o sistema de Ajuda, instalado com o SQL Server 2005: Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Server Books Online. Uma vez aberto o Books online, clique em SQL Server Books Online -> Whats New in SQL Server 2005 -> Database Engine Enhancements -> Database Engine Availability Enhancements. OUTRAS NOVIDADES DA MQUINA DE BANCO DE DADOS DO SQL SERVER 2005 Voc encontra uma srie de outras novidades, sobre a mquina de Banco de Dados do SQL Server 2005, nos seguintes caminhos, dentro do Books Online: SQL Server Books Online -> Whats New in SQL Server 2005 -> Database Engine Enhancements -> Database Engine XML Enhancements SQL Server Books Online -> Whats New in SQL Server 2005 -> Database Engine Enhancements -> Database Engine Scalability and Performance Enhancements SQL Server Books Online -> Whats New in SQL Server 2005 -> Database Engine Enhancements -> Database Engine International Enhancements NOVIDADES E MELHORIAS DAS FERRAMENTAS E UTILITRIOS DE ADMINISTRAO Esta foi outra reas que o SQL Server 2005 deu um verdadeiro salto em relao s verses anteriores. A seguir descrevo as principais novidades nesta rea, sendo que a maioria delas ser detalhada, no decorrer deste livro. Novo console de administrao SQL Server Management Studio: No SQL Server 2000, o principal console de administrao era o SQL Server Enterprise Management. No SQL Server proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 540000Curso Completo 2005 foi criado um novo console SQL Server Management Studio. Este novo console apresenta uma srie de novas funcionalidades e melhorias, dentre as quais cabe destacar a integrao da interface para execuo de comandos, diretamente no SQL Server Manage- ment Studio. Por exemplo, no SQL Server 2000 havia o SQL Server Enterprise Management que era a interface grfica para administrao e o Query Analyzer, o qual era utilizado para execuo de comandos T-SQL. No SQL Server 2005, estas duas funes esto integradas no SQL Server Management Studio, conforme voc ver, atravs dos exemplos prticos, nos demais captulos deste livro. Melhorias na ferramenta de criao de consultas: A ferramenta grfica para a criao de consulta foi bastante melhorada no SQL Server 2005. Voc ir utilizar esta ferramenta quando for abordada a criao de Views (Captulo 9) e no Captulo 14 - Servios de Relatrios do SQL Server 2005 Reporting Services. Nova ferramenta SQL Computer Manager: Esta ferramenta concentra em uma nica ferramenta a administrao de vrios servios do SQL Server 2005: SQL Server, SQL Server Agent, Analysis Server, Report Server, Microsoft Search, Microsoft Distributed Transaction Co- ordinator (MS DTC)Full-Text Search. Usando o SQL Computer Manager possvel parar, pausar e reinicializar estes servios. Tambm possvel fazer configuraes bsicas dos protocolos de redes, utilizados pelo SQL Server 2005, usando o SQL Computer Manager. Melhorias na ferramenta Database Tuning Advisor: O Database Tuning Advisor um assistente, o qual utilizado para fazer uma anlise dos ndices de uma tabela ou de todo o Banco de Dados. Este assistente aps a anlise pode sugerir e aplicar alteraes, para melhorar o desempenho dos ndices e do Banco de Dados como um todo. Diversas melhorias foram introduzidas neste assistente, tais como a possibilidade de gerar os resultados da sua execuo no formato XML, a possibilidade de fazer ajuste em triggers, etc. Melhorias no DTS Import/Export Wizard: O DTS uma ferramenta utilizada para importao e exportao de dados do e para o SQL Server 2005. Alm de importar e exportar dados, nos mais variados formatos, o DTS permite que sejam feitas alteraes e depuraes nos dados, durante a importao/exportao. Muitas melhorias foram introduzidas no DTS do SQL Server 2005. Voc aprender a utiliz-las no Captulo 7. Voc encontra uma descrio completa de todas as novidades sobre as ferramentas e utilitrios de administrao do SQL Server 2005 no seguinte caminho, dentro do Books Online: SQL Server Books Online -> Whats New in SQL Server 2005 -> Tools and Utilities Enhancements. Muitas outras melhorias e funcionalidades foram introduzidas. Conforme descrevi no incio deste tpico, no temos aqui espao suficiente para descrever todas. A maioria delas ser descrita e exemplificada ao longo do livro. Como por exemplo o novo servio Reporting Services, o qual ser detalhadamente abordado no Captulo 14. Se voc quer entrar de cabea e saber logo, em detalhes, sobre todas as novidades do SQL Server 2005, consulte uma das seguintes fontes: Acesse o Books Online: Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Server Books Online. O seguinte livro: SQL Server 2005 New Features, Editora McGraw Hill, 275 pginas. Mais detalhes em: http://www.amazon.com/exec/obidos/tg/detail/-/0072227761/qid=1110935474/ sr=1-1/ref=sr_1_1/002-8063366-0124867?v=glance&s=books proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000055 FUNDAMENTOS EM: INSTALAO DO MICROSOFT SQL SERVER 2005 PR-REQUISITOS Conhecimentos bsicos de instalao de programas no ambiente Windows. METODOLOGIA Instalao passo a passo do SQL Server 2005. Neste item aprenderemos a instalar o Microsoft SQL Server 2005 e a fazer o Upgrade de verses anteriores do SQL Server 2005. Tambm veremos as principais diferenas entre as funcionalidades disponveis nas diferentes verses do SQL Server. AS DIFERENTES EDIES DO MICROSFT SQL SERVER 2005 O termo Edio identifica as diferentes funcionalidades e capacidades do SQL Server 2005. Por exemplo, as funcionalidades e capacidades do SQL Server 2005 Express Edition so bem diferentes das capacidades do SQL Server 2005 Enterprise Edition. Temos as seguintes edies: SQL Server 2005 Enterprise Edition: Esta a verso mais completa do SQL Server 2005. a verso a ser utilizadas em servidores, nos quais estaro Bancos de Dados a serem utilizados pelos usurios da rede. Por exemplo, se voc precisa de um Banco de Dados, para dar suporte a um site de Comrcio Eletrnico, ou um Banco de Dados de servios de RH, a ser consultado por milhares de funcionrios de todas as filiais da empresa, esta a verso do SQL Server 2005 a ser utilizada. SQL Server 2005 Developer Edition: Esta edio especialmente indicada para desenvolvedores. Ele tem todas as funcionalidades do SQL Server 2005 Enterprise Edition, porm licenciada apenas para uso em uma estao de desenvolvimento e testes. Voc j deve estar pensando e seu eu comprar esta edio, que mais barata e usar ela em um servidor de produo. Alm de ser ilegal, no ir funcionar, pois esta edio tem um nmero bem limitado de conexes que so aceitas, simultaneamente, o que impede, na prtica, o seu uso em um servidor da rede. Voc pode desenvolver todos os Bancos de Dados e aplicativos usando a Developer Edition. Uma vez tendo sido tudo testado e aprovado, voc pode simplesmente fazer o upgrade para a Enterprise Edition, para colocar o Banco de Dados e os sistema desenvolvidos, em produo. SQL Server 2005 Express Edition: Esta uma edio que contm um conjunto mnimo de funcionalidades do SQL Server 2005. Esta edio utilizada no desenvolvimento de aplicaes. Por exemplo, se voc est desenvolvendo uma aplicao, usando VB.NET, e quer armazenar os dados desta aplicao em um Banco de Dados do SQL Server 2005. Voc pode utilizar o SQL Server 2005 Express Edition como servidor de Banco de Dados. Voc ter acesso somente as funcionalidades mnimas, tais como criao de tabelas, ndices e consultas. Como esta Edio gratuita, ele barateia bastante o desenvolvimento de aplicaes que armazenam dados em Bancos de Dados no formato do SQL Server 2005. Claro que ela tem limitaes quanto ao proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 560000Curso Completo N O T A desempenho e capacidades, sendo indicada apenas para pequenas aplicaes. Eu diria para aplicaes a serem utilizadas por 10 ou menos usurios. SQL Server 2005 Mobile Edition: uma edio limitada SQL Server 2005, a qual indicada para uso em dispositivos mveis, tais como Notebooks e Assistentes pessoais. Apresenta capacidades de replicao de dados com servidores rodando o SQL Server 2005 Enterprise Edition. REQUISITOS DE HARDWARE E SOFTWARE PARA A INSTALAO DO SQL SERVER 2005 Antes de instalarmos o SQL Server 2005, existem algumas recomendaes que devemos observar, segundo a documentao do Books OnLine, conforme descrito a seguir. Antes de instalar o SQL Server 2005, verifique os seguintes fatores: Certifique-se de que o computador onde ser instalado o SQL Server 2005 (verses de 32 bits) atenda aos requisitos mnimos de hardware, que so: 1. Processador padro Intel, Pentium 600 MHz ou superior. O recomendado um mnimo de Pentium de 1 GHz. 2. Memria RAM de, no mnimo, 256 MB, sendo 512 MB recomendado. 3. Depende dos servios que voc ir instalar. O SQL Server 2005 precisa em torno de 350 MB. Se voc for instalar tambm o Analysis Services, precisar de algo em torno de 150 MB adicionais. Se voc for instalar tambm o Reporting Services, precisar mais 100 MB. Ou seja, com 1 GB d e sobra, mesmo instalando todos os servios disponveis. 4. Monitor ou superior, com resoluo de 1024 x 768 ou superior. 5. Microsoft mouse ou compatvel. 6. Drive de CD-ROM ou leitor de DVD. Evidentemente que estas so caractersticas mnimas de hardware, para que voc possa instalar o SQL Server 2005. Na prtica, o hardware a ser utilizado depende da utilizao que o servidor SQL sofrer. Para isso devemos levar em considerao fatores como o nmero de usurios simultneos, o volume de informaes sendo acessadas, etc. Os requisitos mnimos de software dependem da verso do SQL Server 2005 que ser instalada. No incio deste item, temos uma descrio completa das diferentes edies do SQL Server. Na Tabela 2.1, voc tem uma relao, contida no Books Online, a qual descreve em quais verses do Windows cada edio do SQL Server 2005 pode ser instalada. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000057 Se voc estiver fazendo um upgrade de uma verso anterior do SQL Server, faa o backup de todos os Bancos de Dados, antes de iniciar o upgrade. Faa um planejamento cuidadoso para definir fatores como as pastas de instalao do SQL Server, as opes regionais relativas ao conjunto de caracteres e ordem de ordenao, o nmero de instncias que voc ir instalar e as demais opes envolvidas durante o processo de instalao. sempre recomendvel fazermos a instalao em um ambiente de teste. Depois de estarmos familiarizados com o processo de instalao, podemos partir para o servidor de produo. Antes de iniciar a instalao do SQL Server, tome mais os seguintes cuidados: 1. Crie uma ou mais contas com as quais iro rodar os servios do SQL Server. No nosso exemplo, estarei utilizando a conta de administrador do domnio. Em muitas situaes o ideal criar uma conta especialmente para o SQL Server, ao invs de utilizar a conta de administrador. 2. Parar qualquer servio que esteja utilizando ODBC, como por exemplo o IIS Internet Infor- mation Services. Para parar o IIS utilize o seguinte comando em um prompt de comando: net stop w3svc para reiniciar o IIS utilize o seguinte comando: net start w3svc 3. Quando for instalar o SQL Server 2005, faa o logon com uma conta que tenha permisses de Administrador do domnio, ou Administrador local, se voc estiver instalando o SQL Server 2005 em um servidor que no faz parte de um domnio. Verso do Windows/Edio do SQL Server 2005 Developer Edition SQL Express Edition Windows Server 2003 Standard Edition Yes Yes Windows Server 2003 Enterprise Edition Yes Yes Windows Server 2003 Datacenter Edition Yes Yes Windows 2003 Embedded Edition Yes Yes Windows 2003 Web Edition Yes Yes Windows Small Business Server 2003 Standard Edition Yes Yes Windows Small Business Server 2003 Premium Edition Yes Yes Windows XP Professional SP1 or later Yes Yes Windows XP Media Edition, SP1 or later Yes Yes Windows XP Tablet Edition, SP1 or later Yes Yes Windows 2000 Professional SP41 or later Yes Yes Windows 2000 Server SP41 or later Yes Yes Windows 2000 Advanced Server SP41 or later Yes Yes Windows 2000 Datacenter Server SP4 1 or later Yes Yes Tabela 2.1 Verses do Windows x Edies do SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 580000Curso Completo RECOMENDAES DE SEGURANA, ANTES INSTALAO DO SQL SERVER 2005 Existem alguns cuidados e recomendaes, em relao segurana, os quais devem ser observados, antes de partirmos para a instalao SQL Server 2005. A seguir descrevo os cuidados a serem observados: O primeiro passo garantir medidas bsicas de segurana (tanto fsicas quanto lgicas), para o servidor onde ser instalado o SQL Server 2005. Estas medidas incluem aes tais como: Garantir a segurana fsica e o controle de acesso sala dos servidores. Instalao e configurao de um firewall entre a rede da sua empresa e o mundo externo. Se clientes de fora precisarem acessar dados no servidor SQL Server 2005, as portas TCP 1433 e UDP 1434 devero estar habilitadas, no firewall. Sempre que possvel, instale diferentes servios em diferentes servidores. Por exemplo, instale os servios bsicos de Banco de Dados em um servidor e os servios de gerao de relatrios em outro servidor. Isso evita que problemas em um dos servios paralisem todos os demais servios (o que ocorreria se todos estivessem no mesmo servidor). Nunca instale o SQL Server 2005 em um DC do domnio, por questes de desempenho. Nos exemplos deste livro, estou utilizando o SQL Server 2005 em um DC, apenas por questes de falta de mais computadores, na minha rede domstica. Mas em um ambiente de produo, voc deve, sempre que possvel, evitar de instalar o SQL Server 2005 em um DC do domnio, por questes de desempenho e segurana. Use somente parties formatadas com o sistema de arquivos NTFS. O uso de parties com FAT32 deve ser completamente descartado, por questes de segurana. Se voc usar criptografia na pasta onde forem armazenados os arquivos dos Bancos de Dados do SQL Server 2005, os arquivos sero criptografados em nome da conta com a qual foi configurado para rodar o Servio do SQL Server 2005. Somente esta conta ser capaz de descriptografar os dados. Se, por algum motivo, voc precisar alterar a conta com a qual executado o service do SQL Server 2005, voc dever primeiro descriptografar os arquivos, usando a conta antiga e ento criptograf-los novamente, usando a nova conta. Para garantir um melhor desempenho e redundncia, voc pode usar volumes do tipo RAID- 5, para dados crticos, os quais necessitam de melhor desempenho e maior disponibilidade. O mais indicado (embora seja mais caro) o uso de solues da RAID implementadas em hardware (placas de RAID). Se no for possvel o uso de solues de RAID via hardware, voc pode usar as solues de RAID em software, disponveis no Windows 2000 Server e no Windows Server 2003. Outro aspecto fundamental a ser considerado, em um ambiente de produo, a segurana fsica. A sala onde estar o computador, no qual o SQL Server 2005 ser instalado, deve estar protegida do acesso ao pblico, tendo o acesso controlado e liberado somente para pessoas autorizadas. De nada adiantar voc cuidar de toda a segurana lgica do acesso s informaes do SQL Server 2005, se a segurana fsica for deixada de lado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000059 NOMEANDO AS INSTNCIAS DO SQL SERVER 2005 Uma das novidades introduzidas no SQL Server 2000 foi a possibilidade de instalar mltiplas instncias do SQL Server, em um mesmo servidor. No SQL Server 2000 voc poderia instalar at 16 instncias em um mesmo servidor. No SQL Server 2005, este limite foi aumentado para at 50 instncias em um nico servidor. Neste tpico, apresentarei algumas consideraes, sobre a nomeao de mltiplas instncias, em um servidor com o SQL Server 2005. Conforme descrevi no incio do captulo, o SQL Server 2005 um servidor de Banco de Dados (sua principal funo, dentre outras). O mais comum manter os dados no SQL Server 2005, e criar aplicaes clientes, que acessam estes dados, quer sejam aplicaes Cliente/Servidor tradicionais, at as mais modernas aplicaes Web com quatro ou mais camadas. As aplicaes clientes se conectam com uma instncia do SQL Server 2005, para acessar as tabelas e demais objetos dos Bancos de Dados do SQL Server 2005. Cada instncia do SQL Server 2005 como se fosse um servidor completamente independente, podendo oferecer um diferente conjunto de services e configuraes. Uma instncia pode ser de dois tipos: A instncia padro ou uma instncia nomeada. A instncia padro gerada pelo programa de instalao do SQL Server 2005, baseada no nome do computador no qual o SQL Server 2005 est sendo instalado e no requer que a aplicao cliente especifique o nome da instncia, para fazer a conexo. Por exemplo, em um servidor chamado dbserv01, o nome do servidor dbsrv01 ser tambm o nome da instncia padro, ou seja, a instncia qual os clientes iro se conectar, a menos que seja especificado o nome de uma instncia diferente. J uma instncia nomeada identificada pelo nome do computador, bem como pelo nome da instncia, a qual criada pelo usurio. Por exemplo, no servidor dbsrv01, o usurio pode criar uma instncia nomeada como vendas. Neste caso, o nome completo da instncia fica sendo: dbsrv01\vendas. Observe que o padro para as instncias nomeadas : nome_do_servidor\nome_da_instncia. Quando voc instala o SQL Server, pela primeira vez em um servidor, o programa de instalao ir criar automaticamente a instncia padro. Voc pode aceitar esta opo ou alterar para criar j uma instncia nomeada, sem que seja instalada uma instncia padro. Considere os seguintes detalhes, em relao nomeao de instncias, no SQL Server 2005: As instncias nomeadas no diferem maisculas de minsculas. Para o SQL Server 2005, dbsrv01\vendas ou DBSRV01\VENDAS ou dbsrv01\Vendas, representam exatamente a mesma instncia. O nome de uma instncia nomeada no pode conter palavras reservadas do SQL Server 2005, tais como SELECT, Default, MSSQLServer e assim por diante. Se voc especificar uma palavra reservada, o processo de instalao ir apresentar um erro e no ser concludo. O nome da instncia limitado a 16 caracteres. O primeiro caractere do nome da instncia deve ser uma letra ou um sinal de sublinhado ( _ ). Os caracteres subseqentes podem ser letras, nmeros decimais, o sinal de $ ou sublinhado ( _ ). No so permitidos espaos em branco no nome da instncia e nem os seguintes caracteres: \ , : & # @ proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 600000Curso Completo N O T A Considere os seguintes detalhes, ao decidir se voc ir criar uma instncia default ou uma instncia nomeada: Se voc estiver fazendo o upgrade do SQL Server 7.0 para o SQL Server 2005, obrigatoriamente ser criada uma instncia default. Se voc for instalar uma nica instncia do SQL Server 2005, opte por usar uma instncia default. Se voc estiver instalando o Microsoft SQL Server 2005 Express Editionl, a opo Named In- stance (Instncia Nomeada) vir selecionada, automaticamente, no assistente de instalao. Para instalar uma instncia default do SQL Server Express Edition, selecione a opo Default Instance. Para acompanhar os exemplos deste livro, voc deve instalar o SQL Server 2005 Developers Edition ou o SQL Server 2005 Enterprise Edition. No exemplo do prximo tpico, mostrarei como instalar, passo-a-passo, o SQL Server 2005 Developers Edition. Utilizarei a verso Beta 2 do SQL Server 2005, a qual a verso disponvel, no momento em que escrevo este livro. Pequenas diferenas podero existir entre a verso Beta 2 e a verso final, normalmente relacionadas a problemas e erros existentes na verso Beta 2, os quais so corrigidos para a verso final. Mas so pequenas diferenas mesmo, sendo que a quase totalidade das telas e comandos ser exatamente a mesma, na verso final. INSTALANDO O SQL SERVER 2005 NO WINDOWS SERVER 2003 Vamos aprender, passo a passo, a instalar o SQL Server 2005, Developer Edition. Neste exemplo usarei um computador que est rodando o Windows Server 2003. Voc pode usar um computador rodando qualquer uma das seguintes verses do Windows: Windows 2000 Professional, Windows 2000 Server, Windows XP Professional ou Windows Server 2003. Iremos instalar o SQL Server 2005 em um computador chamado SERVIDOR2. Inicialmente iremos criar uma instncia default. Para Instalar o SQL Server 2005 Developer Edition, siga os passos indicados a seguir: 1. Faa o logon com uma conta com permisses de Administrador no servidor onde o SQL Server 2005 ser instalado. 2. Coloque o CD-ROM do SQL Server 2005 no drive de CD e aguarde alguns instantes. Deve surgir a tela indicada na Figura 2.6. Esta tela apresenta trs grupos de opes: O primeiro grupo Prepare. Este grupo d acesso a opes de preparao, as quais devem ser tomadas antes da instalao do SQL Server 2005. Ao clicar na opo Review Hardware e Software Requirements, ser aberta uma janela de ajuda, com informaes sobre o hardware e software, necessrios instalao do SQL Server 2005. A opo Read the release notes abre o arquivo readme.txt, que est gravado no diretrio raiz do CD. Este arquivo contm orientaes que foram elaboradas pela equipe do SQL Server 2005, com dicas de ltima hora. sempre uma boa idia ler este arquivo antes de iniciar a instalao. Visit Our Web Site: Esta opo um link para o site oficial do SQL Server, no seguinte endereo: www.microsoft.com/sql. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000061 Figura 2.6 Tela inicial da instalao do SQL Server 2005. 3. Para iniciar a instalao, clique na opo Run the SQL Server Instalattion Wizard. Ser exibida uma tela, com o contrato de licena do SQL Server 2005. Para seguir com a instalao, voc deve marcar a opo I accept de licensing terms and conditions e clicar em Next. Faa isso. Ser exibida a prxima tela do assistente. 4. Ser exibida uma tela, mostrando quais componentes sero instalados, para que seja possvel a instalao do SQL Server 2005, conforme indicado na Figura 2.7. Nesta figura voc pode observar que ser instalado o .NET Framework 2.0, o Microsoft SQL Native Client e o SQL Server 2005 (Beta 2). Clique no boto Install, para continuar com a instalao. Figura 2.7 Lista de componentes de suporte que sero instalados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 620000Curso Completo Figura 2.8 Instalando os componentes necessrios instalao do SQL Server 2005. 6. A instalao dos componentes que so necessrios, antes que o SQL Server 2005 possa ser instalado, ser concluda. Quando a instalao for concluda, o boto Finish ser habilitado. Clique no boto Finish para iniciar a instalao do SQL Server 2005 propriamente dito, j que o que foi instalado at agora foram os componentes que do suporte execuo do SQL Server 2005, tais como o .NET Framework 2. 5. A instalao dos itens que so pr-requisitos para o SQL Server 2005, tais como o .NET Framewok, ser iniciada. O andamento ser indicado, conforme exemplo da Figura 2.8: Figura 2.9 A tela inicial do assistente de instalao do SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000063 7. O processo de instalao do SQL Server 2005 faz uma srie de verificaes e passa a copiar arquivos do CD de instalao. A tela inicial do assistente de instalao do SQL Server 2005 ser exibida, conforme indicado na Figura 2. 8. Clique em Next para seguir para a prxima etapa do assistente de instalao. O assistente de instalao far uma verificao, para certificar-se de que est tudo OK para iniciar a instalao. Ser exibida uma listagem dos componentes verificados. Se algum problema for detectado, ser exibido um x ao lado do componente com problemas. Na coluna Message disponibilizado um link. Se voc clicar neste link, exibida uma mensagem indicando o que deve ser feito, para solucionar o problema que est impedindo a instalao do SQL Server 2005. Voc deve solucionar o problema, antes de prosseguir com a instalao. No nosso exemplo, nenhum problema foi detectado e a instalao pode continuar, sem problemas, conforme indicado na Figura 2.10 Figura 2.10 No foram encontrados problemas que impeam a continuao da instalao. 9. Clique no boto Continue, para continuar com a instalao do SQL Server 2005. 10. O assistente de instalao faz uma srie de preparaes e exibe uma tela, para que voc coloque o seu nome, nome da sua empresa e o nmero de srie do SQL Server 2005, conforme indicado na Figura 2.11: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 640000Curso Completo Figura 2.11 Inserindo informaes do nome e nmero de srie. 11. Clique em Next, para seguir para a prxima etapa do assistente de instalao. 12. Nesta etapa voc deve marcar quais os servios que sero instalados, conforme exemplo da Figura 2.12. Ao instalar o SQL Server 2005, diversos servios podem ser instalados. De uma maneira simples, um servio um programa que fica residente na memria do servidor, mesmo que no exista usurio logado na console do servidor. Quando o usurio faz o log off, o servio continua carregado na memria atendendo s requisies dos clientes. Todo servio no Win- dows 2000 ou no Windows Server 2003 precisa ser executado no contexto de uma conta. Por isso que precisamos informar uma conta para que os servios possam ser inicializados. No Windows 9.x no existe o conceito de servio. No final do captulo veremos um pouco mais sobre os servios que so instalados com o SQL Server e como gerenciar estes servios. O SQL Server o service bsico, o Banco de Dados em si. Voc pode instalar outros servios, tais como o Analysis Services, Reporting Services e assim por diante. A dica aqui instalar somente os servios que voc ir realmente utilizar. Se voc est instalando o SQL Server 2005 em um servidor de produo, deve instalar somente os servios que sero utilizados. Se voc est instalando o SQL Server 2005 em um servidor para estudo, deve instalar todos os servios, para t-los disponveis para estudar, quando necessrio. 13. Marque os servios a serem instalados e clique em Next, para seguir para a prxima etapa do assistente de instalao. 14. Nesta etapa que voc seleciona se voc deseja criar uma instncia default ou uma instncia nomeada, conforme descrito anteriormente. Nesta primeira instalao, vamos criar uma instncia nomeada. Certifique-se de que a opo Default instance esteja marcada e clique em Next, para seguir para a prxima etapa do assistente de instalao. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000065 Figura 2.12 Selecione os servios a serem instalado. 15. Nesta etapa voc ir definir com qual conta cada servio do SQL Server ir rodar. Voc pode definir a mesma conta para todos os servios, ou definir uma conta diferente para cada um dos servios. Voc pode optar por usar a conta local System (sendo esta a opo mais recomendada), ou informar uma conta do domnio. Se voc marcar a opo Customize for each service account, a lista abaixo desta opo ser habilitada. A voc escolhe um servio na lista e define a conta para o servio selecionado. Depois voc seleciona um novo servio na lista e define a conta para este novo servio e assim por diante. Com a opo Customize for each service account, voc pode definir configuraes personalizadas, para cada um dos servios. No nosso exemplo, vou usar a mesma conta para todos os servios (opo Custom- ize for each service account desmarcada) e vou informar uma conta do domnio, conforme exemplo da Figura 2.13: Figura 2.13 Definindo as configuraes de conta. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 660000Curso Completo 16. Defina as configuraes desejadas e clique em Next, para seguir para a prxima etapa do assistente de instalao. 17. Nesta prxima etapa voc deve definir o modo de autenticao que ser usado, pela instncia do SQL Server que est sendo instalada. Existe o modo Windows Authentication Mode. Com esse modo, somente contas do domnio podero ser utilizadas para acessar o SQL Server 2005. Usando o modo Mixed Mode, podero ser usadas contas do domnio e tambm contas do SQL Server 2005. No Captulo 6, sobre segurana, voc aprender mais detalhes sobre os modos de autenticao. Nesta etapa, voc tambm pode definir uma senha para a conta sa. A conta sa a conta de administrador do SQL Server 2005, ou seja, a conta com maiores poderes no SQL Server 2005. Por isso sempre recomendado definir uma senha forte para esta conta. Entenda- se por senha forte uma senha que usa letras, nmeros e caracteres especiais e que tenha, no mnimo, 10 caracteres. Defina as configuraes desejadas, conforme exemplo da Figura 2.14: Figura 2.14 Definindo o modo de autenticao e a senha da conta sa. 18. Clique em Next, para seguir para a prxima etapa do assistente de instalao. 19. Nesta etapa voc define as configuraes de Collation (cada idioma tem configuraes prprias) e outras caractersticas que afetam a maneira como o SQL Server 2005 ir fazer as comparaes de dados, para filtrar os registros, ao executar uma consulta. Voc pode habilitar ou desabilitar opes como Case sensitive (diferenciar maisculas e minsculas ou no), Accent sensitve (diferenciar acentos ou no) e assim por diante. Defina as configuraes desejadas e clique em Next, para seguir para a prxima etapa do assistente. 20. Nesta etapa voc deve informar se o Banco de Dados do Reporting Services ser armazenado na instncia que est sendo instalada ou em uma instncia j existente. No nosso exemplo, como a primeira instncia que est sendo instalada, certifique-se de que a opo Host in the current instace of SQL Server esteja marcada e clique em Next, para seguir para a prxima etapa do assistente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000067 21. Nesta etapa voc deve informar o nome de um servidor smpt e o endereo do remetente. Estas informaes sero utilizadas pelo Reporting Services, para o envio de relatrios por e- mail. Voc aprender mais sobre estas funcionalidades no Captulo 14. Informe o nome do servidor SMPT e o endereo de e-mail do remetente e clique em Next, para seguir para a prxima etapa do assistente. 22. Nesta etapa voc pode marcar a opo para enviar relatrios diretamente para a Microsoft, em caso de erros fatais na execuo do SQL Server 2005 ou de um dos seus componentes. No sei se esta etapa estar disponvel na verso final ou se somente nas verses Beta. Aceite as configuraes sugeridas e clique em Next, para seguir para a prxima etapa do assistente. 23. Ser exibida a tela final do assistente, com um resumo de todas as opes selecionadas, conforme indicado na Figura 2.15: Figura 2.15 Etapa final do assistente de instalao. 24. Voc pode usar o boto Back para voltar a uma das etapas anteriores e alterar alguma configurao, caso seja necessrio. Para concluir a instalao, clique no boto Install e aguarde. Ser exibida uma janela, com o progresso da instalao, conforme indicado na Figura 2.16: 25. Uma vez concluda a instalao ser habilitado o boto Next. Ser exibida a tela final do assistente, indicando que a instalao foi concluda com sucesso, conforme indicado na Figura 2.17. 26. Clique em Finish para encerrar o assistente. Pronto, o SQL Server 2005 est instalado no seu computador. Agora s precisamos aprender a utiliz-lo. Mas isso assunto para todo o restante deste livro. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 680000Curso Completo Figura 2.16 O progresso da instalao do SQL Server 2005. Figura 2.17 Instalao concluda com sucesso. A seguir descrevo alguns dados importantes sobre o SQL Server 2005, tais como a estrutura de pastas e subpastas que criada e quais os principais arquivos relacionados a cada servio do SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000069 A ESTRUTURA DE PASTAS E ARQUIVOS DO SQL SERVER 2005 Neste item, mostrarei qual a estrutura de pastas e arquivos, que criada pelo SQL Server 2005. Uma instalao do SQL Server 2005 formada por uma ou mais instncias, podendo ser uma instncia padro e uma ou mais instncias nomeadas, conforme descrito anteriormente. Cada instncia tem um conjunto de arquivos nicos, utilizados somente pela instncia. Existe tambm um conjunto de pastas e arquivos comuns, isto , utilizados por todas as instncias. Por exemplo, para uma instncia do SQL Server 2005, na qual foram instalados os services bsicos da mquina de Banco de Dados, alm do Analysis Services e do Reporting Services, cada componente, de cada instncia, tem um conjunto prprio de dados e arquivos executveis, alm de um conjunto de arquivos que compartilhado por todos os componentes, de todas as instncias. Por padro, o SQL Server 2005 instalado na seguinte pasta: C:\Arquivos de programas\Microsoft SQL Server Os arquivos comuns, isto , os arquivos que so compartilhados por todas as instncias do SQL Server 2005, so gravados na seguinte pasta: C:\Arquivos de programas\Microsoft SQL Server\90, considerando que o SQL Server 2005 foi instalado no drive C: Figura 2.18 Estrutura de pastas e subpastas do SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 700000Curso Completo Na Figura 2.18, retirada do Books Online, temos uma representao que mostra, claramente, a estrutura de pastas utilizada pelo SQL Server 2005. Nesta figura, temos a representao da estrutura onde so gravados os arquivos compartilhados por todas as instncias e das estruturas de pastas que so utilizadas por cada instncia, individualmente. Na Tabela 2.2, obtida a partir do Books Online, exibido o caminho padro, para os principais arquivos do SQL Server 2005. Este caminho pode ser alterado, durante a instalao. Systemdrive representa o drive onde o SQL Server 2005 foi instalado; normalmente o drive C:, mas pode ser outro drive. CRIANDO UMA SEGUNDA INSTNCIA DO SQL SERVER DEVELOPER EDITION Anteriormente havamos instalado uma instncia default (no nomeada) no computador chamado SERVIDOR2. Agora vamos instalar uma segunda instncia, a qual ser obrigatoriamente uma instncia nomeada (lembre-se de que temos uma nica instncia padro e todas as demais so instncias nomeadas) chamada JBCURSOS, neste mesmo servidor. Com isso, teremos as seguintes instncias disponveis: SERVIDOR2: esta a instncia default SERVIDOR2\JBCURSOS: primeira instncia nomeada Conforme descrito anteriormente, como se tivssemos dois servidores SQL Server completamente separados, porm rodando no mesmo computador. Ento mos obra. Para criar uma segunda instncia do SQL Server 2005 Developer Edition, siga os passos indicados a seguir: 1. Faa o logon com uma conta com permisses de administrador. 2. Coloque o CD do SQL Server 2005 Developer Edition no drive de CD. Ser exibida a tela inicial do CD de instalao. 3. Na tela inicial da instalao, d um clique na opo Rum the SQL Server Installation Wizard. Funcionalidade Caminho padro Database Engine Server Components \Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Binn\ Data Files \Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\ Analysis Services Analysis Server \Program Files\Microsoft SQL Server\MSSQL.n\OLAP\Bin\ Data Files \Program Files\Microsoft SQL Server\MSSQL.n\OLAP\Data Reporting Services Report Server \Program Files\Microsoft SQL Server\MSSQL.n\Reporting Services\ReportServer\Bin\ Report Manager \Program Files\Microsoft SQL Server\MSSQL.n\Reporting Services\ReportManager\Bin\ Notification Services \Program Files\Microsoft SQL Server\90\NotificationServices\ Data Transformation Services \Program Files\Microsoft SQL Server\90\DTS\ Tabela 2.2 Caminho padro de instalao dos principais componentes. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000071 4. Ser exibida a tela com o contrato de licena. Marque a opo I accept the licensing terms and conditions e clique no boto Next, para seguir para a prxima etapa. 5. Na tela inicial, d um clique no boto Next. Ser exibida a janela Computer Name. 6. Certifique-se de que a opo Local Computer esteja marcada e d um clique no boto Next. 7. Ser exibida a janela Installation Selection. Certifique-se de que a opo Create a new instance of SQL Server, or install Client Tools esteja selecionada e d um clique no boto Next. Como uma segunda instncia que est sendo instalada, os componentes que so pr-requisitos para o SQL Server 2005 j esto instalados, tais como o .NET Framewok 2. Ser exibida uma tela, informando que os componentes necessrios instalao do SQL Server 2005 j esto disponveis. Clique em Finish, para fechar esta tela. O assistente de instalao ser iniciado. Aguarde at que seja exibida a primeira tela do assistente de instalao. A primeira tela apenas informativa. Clique em Next, para seguir para a prxima etapa do assistente. 8. O assistente de instalao far uma verificao, para certificar-se de que est tudo OK para iniciar a instalao, ou seja, que todos os componentes que so pr-requisitos para a instalao esto instalados e corretamente configurados. Ser exibida uma listagem dos componentes verificados. Se algum problema for detectado, ser exibido um x ao lado do componente com problemas. Na coluna Message disponibilizado um link. Se voc clicar neste link, exibida uma mensagem indicando o que deve ser feito para solucionar o problema, que est impedindo a instalao do SQL Server 2005. Voc deve solucionar o problema, antes de prosseguir com a instalao. No nosso exemplo, nenhum problema foi detectado e a instalao pode continuar, sem problemas, conforme indicado na Figura 2.19. Figura 2.19 No foram encontrados problemas que impedem a continuao da instalao. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 720000Curso Completo 9. Clique no boto Continue, para continuar com a instalao da segunda instncia do SQL Server 2005. 10. O assistente de instalao faz uma srie de preparaes e exibe uma tela, para que voc coloque o seu nome, o nome da sua empresa e o nmero de srie do SQL Server 2005. Insira as informaes solicitadas. 11. Clique em Next, para seguir para a prxima etapa do assistente de instalao. 12. Nesta etapa voc deve marcar quais os servios que sero instalados, conforme exemplo j descrito anteriormente, na Figura 2.12. Ao instalar o SQL Server 2005, diversos servios podem ser instalados. No final do captulo veremos um pouco mais sobre os servios que so instalados com o SQL Server e como gerenciar estes servios. O SQL Server o servio bsico, o Banco de Dados em si. Voc pode instalar outros servios, tais como o Analysis Services, Reporting Services, DTS e assim por diante. A dica aqui instalar somente os servios que voc ir realmente utilizar. Se voc est instalando o SQL Server 2005 em um servidor de produo, deve instalar somente os servios que sero utilizados. Se voc est instalando o SQL Server 2005 em um servidor para estudo, deve instalar todos os servios, para t-los disponveis para estudar, quando necessrio. 13. Marque os servios a serem instalados e clique em Next, para seguir para a prxima etapa do assistente de instalao. 14. Nesta etapa que voc seleciona se deseja criar uma instncia default ou uma instncia nomeada, conforme descrito anteriormente. No exemplo prtico anterior, criamos uma instncia de- fault. Agora iremos criar a instncia nomeada CURSOSJB. Marque a opo Named instance e digite o nome da instncia, conforme indicado na Figura 2.20. Clique em Next, para seguir para a prxima etapa do assistente de instalao. Figura 2.20 Criando uma instncia nomeada CURSOSJB. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000073 15. Se na etapa 12 voc selecionou servios que j estavam instalados em outras instncias, o SQL Server 2005 exibir uma tela, informando os componentes comuns, para os servios que esto tambm em outras instncias. Clique em Next para seguir para a prxima etapa do assistente. 16. Nesta etapa voc ir definir com qual conta cada servio do SQL Server ir rodar. Voc pode definir a mesma conta para todos os servios, ou definir uma conta diferente, para cada um dos servios. Voc pode optar por usar a conta local System (sendo esta a opo mais recomendada), ou informar uma conta do domnio. Se voc marcar a opo Customize for each service account, a lista abaixo desta opo ser habilitada. A voc pode escolher um servio na lista e define a conta para o servio selecionado. Depois voc seleciona um novo servio na lista e define a conta para este novo servio e assim por diante. Com a opo Customize for each service account, voc pode definir configuraes personalizadas, para cada um dos servios. No nosso exemplo, vou usar a mesma conta para todos os servios (opo Customize for each service account desmarcada) e vou informar uma conta do domnio. Defina as configuraes desejadas e clique em Next, para seguir para a prxima etapa do assistente de instalao. 17. Nesta prxima etapa voc deve definir o modo de autenticao que ser usado, pela instncia do SQL Server que est sendo instalada. Existe o modo Windows Authentication Mode. Com esse modo, somente contas do domnio podero ser utilizadas para acessar o SQL Server 2005. Usando o modo Mixed Mode, podero ser usadas contas do domnio e tambm contas do SQL Server 2005. No Captulo 6, sobre segurana, voc aprender mais detalhes sobre os modos de autenticao. Nesta etapa, voc tambm pode (ou melhor, voc deve definir uma senha) definir uma senha para a conta sa. A conta sa a conta de Administrador do SQL Server 2005, ou seja, a conta com maiores poderes no SQL Server 2005. Por isso sempre recomendado definir uma senha forte para esta conta. Entenda-se por senha forte uma senha que usa letras, nmeros e caracteres especiais e que tenha, no mnimo, 10 caracteres. Defina as configuraes desejadas e clique em Next, para seguir para a prxima etapa do assistente de instalao. 18. Nesta etapa voc define as configuraes de Collation (cada idioma tem configuraes prprias) e outras caractersticas que afetam a maneira como o SQL Server 2005 ir fazer as comparaes de dados, para filtrar os registros, ao executar uma consulta. Voc pode habilitar ou desabilitar opes como Case sensitive (diferenciar maisculas e minsculas ou no), Accent sensitve (diferenciar acentos ou no) e assim por diante. Defina as configuraes desejadas e clique em Next, para seguir para a prxima etapa do assistente. 19. Nesta etapa voc deve informar o nome das pastas virtuais, utilizadas pelo Reporting Ser- vices. Informe o nome das pastas virtuais e clique em Next, para seguir para a prxima etapa do assistente. 20. Nesta etapa voc deve informar se o Banco de Dados do Reporting Services ser armazenado na instncia que est sendo instalada ou em uma instncia j existente. No nosso exemplo, como estamos configurando esta segunda instncia, independente da primeira, certifique-se de que a opo Host in the current instace of SQL Server esteja marcada e clique em Next, para seguir para a prxima etapa do assistente. 21. Nesta etapa voc deve informar o nome de um servidor SMTP e o endereo do remetente. Estas informaes sero utilizadas pelo Reporting Services, para o envio de relatrios por e-mail. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 740000Curso Completo Voc aprender mais sobre estas funcionalidades no Captulo 14. Informe o nome do servidor SMPT e o endereo de e-mail do remetente e clique em Next, para seguir para a prxima etapa do assistente. 22. Nesta etapa voc pode marcar a opo para enviar relatrios diretamente para a Microsoft, em caso de erros fatais na execuo do SQL Server 2005 ou de um dos seus componentes. No sei se esta etapa estar disponvel na verso final ou se somente nas verses Beta. Aceite as configuraes sugeridas e clique em Next, para seguir para a prxima etapa do assistente. 23. Ser exibida a tela final do assistente, com um resumo de todas as opes selecionadas, conforme indicado na Figura 2.21: Figura 2.21 Etapa final do assistente de instalao. 24. Voc pode usar o boto Back para voltar a uma das etapas anteriores e alterar alguma configurao, caso seja necessrio. Para concluir a instalao, clique no boto Install e aguarde. Ser exibida uma janela, com o progresso da instalao. 25. Uma vez concluda a instalao, ser habilitado o boto Next. Ser exibida a tela final do assistente, indicando que a instalao foi concluda com sucesso. 26. Clique em Finish para encerrar o assistente de instalao do SQL Server 2005. Pronto, uma segunda instncia do SQL Server 2005 est instalada no seu computador. No nosso exemplo, foi instalada a seguinte instncia nomeada: SERVIDOR2\CURSOSJB Conforme veremos neste e nos demais captulos, existem diversas ferramentas para administrar e realizar as tarefas com o SQL Server 2005. Sempre que estivermos utilizando uma destas ferramentas teremos a opo de selecionar com qual das instncias do SQL Server instaladas queremos realizar uma determinada operao. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000075 Agora vamos aprender sobre os servios que so instalados com cada instncia do SQL Server e como configur-los para que sejam carregados automaticamente quando o Windows 2000 Server for inicializado. FAZENDO O UPGRADE DO SQL SERVER 2000 PARA O SQL SERVER 2005 Voc pode fazer o upgrade de verses anteriores do SQL Server para o SQL Server 2005. Na listagem a seguir, descrevo os caminhos de upgrade possveis, de verses anteriores do SQL Server para o SQL Server 2005: Do SQL Server 2000 SP3/SP3a ou superior para o SQL Server 2005 Beta 2 ou Superior (Beta 3 e verso final). Do SQL Server 2005 Beta 2 para o Beta 3 ou verso Final. No possvel desatachar um Banco de Dados do SQL Server 2005 Beta 1 e atachar o Banco de Dados no SQL Server 2005 Beta 2. No possvel fazer o upgrade diretamente para o SQL Server 2005, a partir das verses a seguir: Do SQL Server 6.5 para o SQL Server 2005. Do SQL Server 7.0 para o SQL Server 2005. Atualizao de um failover cluster no suportada. Upgrade of MSDE is not supported. Upgrade do SQL Server 2000 (64-bit) no suportado. Upgrade do Reporting Services 2000 no suportado. Upgrade do Notification Services 2000 no suportado. No existe suporte para a atualizao do MSDE para o SQL Server 2005 Beta 2 Express Edi- tion. Talvez tenha na verso final do Express Edition. Nesta seo, vamos fazer o upgrade do SQL Server 2000 rodando em um computador com o Windows XP Professional, para o SQL Server 2005. Para que este upgrade seja possvel, o SP3 ou SP3a do SQL Server 2000 deve estar instalado. Exemplo: Para fazer o upgrade do SQL Server 2000 para o SQL Server 2005, siga os passos indicados a seguir: 1. Faa o logon com uma conta com permisses de administrador. 2. Coloque o CD-ROM do SQL Server 2005 no drive de CD e aguarde alguns instantes. Deve surgir a tela de abertura do CD, indicada anteriormente na Figura 2.6. Esta tela apresenta trs grupos de opes: O primeiro grupo Prepare. Este grupo d acesso a opes de preparao, as quais devem ser tomadas antes da instalao do SQL Server 2005. Ao clicar na opo Review Hardware e Software Require- ments, ser aberta uma janela de ajuda, com informaes sobre o hardware e software, necessrios instalao do SQL Server 2005. A opo Read the release notes abre o arquivo readme.txt, que est gravado no diretrio raiz do CD. Este arquivo contm orientaes que foram elaboradas pela equipe proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 760000Curso Completo do SQL Server 2005, com dicas de ltima hora. sempre uma boa idia ler este arquivo antes de iniciar a instalao. Visit Our Web Site: Esta opo um link para o site oficial do SQL Server, no seguinte endereo: www.microsoft.com/sql. 3. Para iniciar a instalao, clique na opo Run the SQL Server Instalattion Wizard. Ser exibida uma tela, com o contrato de licena do SQL Server 2005. Para seguir com a instalao, voc deve marcar a opo I accept de licensing terms and conditions e clicar em Next. Faa isso. Ser exibida a prxima tela do assistente. 4. Ser exibida uma tela, mostrando quais componentes sero instalados, para que seja possvel a instalao do SQL Server 2005, conforme indicado na Figura 2.22. Nesta figura voc pode observar que ser instalado o .NET Framework 2.0, o Microsoft SQL Native Client e o SQL Server 2005 (Beta 2). Clique no boto Install, para continuar com a instalao. Figura 2.22 Lista de componentes de suporte que sero instalados. 5. A instalao dos itens que so pr-requisitos para o SQL Server 2005, tais como o .NET Framewok ser iniciada. O andamento ser indicado na tela do assistente de instalao. Esta etapa pode demorar de meia hora a uma hora, dependendo do equipamento que voc est utilizando. Aguarde. 6. A instalao dos componentes que so necessrios, antes que o SQL Server 2005 possa ser instalado, ser concluda. Quando a instalao concluda, o boto Finish habilitado. Clique no boto Finish para iniciar a instalao do SQL Server 2005 propriamente dito, j que o que foi instalado at agora foram os componentes que do suporte execuo do SQL Server 2005, tais como o .NET Framework 2 e outros. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000077 7. O processo de instalao do SQL Server 2005 faz uma srie de verificaes e passa a copiar arquivos do CD de instalao. A tela inicial do assistente de instalao do SQL Server 2005 ser exibida. 8. Clique em Next para seguir para a prxima etapa do assistente de instalao. O assistente de instalao far uma verificao, para certificar-se de que est tudo OK para iniciar a instalao. Ser exibida uma listagem dos componentes verificados. Se algum problema for detectado, ser exibido um x ao lado do componente com problemas. Na coluna Message disponibilizado um link. Se voc clicar neste link, exibida uma mensagem indicando o que deve ser feito, para solucionar o problema, que est impedindo a instalao do SQL Server 2005. Voc deve solucionar o problema, antes de prosseguir com a instalao. No nosso exemplo, nenhum problema foi detectado e a instalao pode continuar, sem problemas. 9. Clique no boto Continue, para continuar com a instalao do SQL Server 2005. 10. O assistente de instalao faz uma srie de preparaes e exibe uma tela, para que voc coloque o seu nome, o nome da sua empresa e o nmero de srie do SQL Server 2005. Digite as informaes solicitadas. 11. Clique em Next, para seguir para a prxima etapa do assistente de instalao. 12. Nesta etapa voc deve marcar quais os servios que sero instalados. Ao instalar o SQL Server 2005, diversos servios podem ser instalados. No final deste captulo veremos um pouco mais sobre os servios que so instalados com o SQL Server e como gerenciar estes servios. O SQL Server o servio bsico, o Banco de Dados em si. Voc pode instalar outros servios, tais como o Analysis Services, Reporting Services e assim por diante. A dica aqui instalar somente os servios que voc ir realmente utilizar. Se voc est instalando o SQL Server 2005 em um servidor de produo, deve instalar somente os servios que sero utilizados. Se voc est instalando o SQL Server 2005 em um servidor para estudo, deve instalar todos os servios, para t-los disponveis para estudar, quando necessrio. 13. Marque os servios a serem instalados e clique em Next, para seguir para a prxima etapa do assistente de instalao. 14. IMPORTANTE: Nesta etapa, indicada na Figura 2.23 que vem o detalhe fundamental. nesta etapa que voc ir informar que, ao invs de instalar uma nova instncia do SQL Server 2005, quer fazer o upgrade de uma instncia j existente, do SQL Server 2000. D um clique no boto Installed instances, em destaque na Figura 2.23. 15. Ser exibida uma lista com as instncias j instaladas. No nosso exemplo, indicado na Figura 2.24, temos um nica instncia do SQL Server 2000 instalada. Observe que a verso da instncia selecionada 8.00.761, a qual indica o SQL Server 2000, com Service Pack 3.a instalado. Marque a instncia a qual ser atualizada para o SQL Server 2005, conforme indicado na Figura 2.24 e d um clique em OK. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 780000Curso Completo Figura 2.23 O boto Installed instances. Figura 2.24 Selecionando a instncia que ser atualizada. 16. Voc estar de volta ao assistente de instalao do SQL Server 2005. Clique em Next, para seguir para a prxima etapa do assistente. 17. Ser exibida uma janela, com a lista de componentes j instalados no computador e que sero atualizados. Clique em Next, para seguir para a prxima etapa do assistente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000079 18. Nesta etapa voc ir definir com qual conta cada servio do SQL Server ir rodar. Voc pode definir a mesma conta para todos os servios, ou definir uma conta diferente, para cada um dos servios. Voc pode optar por usar a conta local System (sendo esta a opo mais recomendada), ou informar uma conta do domnio ou uma conta de administrador local, caso o computador que voc esteja utilizando no pertena a um domnio. Se voc marcar a opo Customize for each service account, a lista abaixo desta opo ser habilitada. Feito isso, voc pode escolher um servio na lista e definir a conta para o servio selecionado. Depois voc seleciona um novo servio na lista e define a conta para este novo servio e assim por diante. Com a opo Customize for each service account, voc pode definir configuraes personalizadas, para cada um dos servios. No nosso exemplo, vou usar a mesma conta para todos os servios (opo Customize for each service account desmarcada) e vou informar uma conta de administrador local do computador, conforme exemplo da Figura 2.25 (pois o computador que eu estou utilizando para este exemplo no est configurado para fazer parte de um domnio baseado no Active Directory). Observe que como nome do domnio eu coloquei o prprio nome do computador MICROXP-01: Figura 2.25 Definindo as configuraes de conta. 19. Defina as configuraes desejadas e clique em Next, para seguir para a prxima etapa do assistente de instalao. 20. Nesta prxima etapa voc deve definir o modo de autenticao que ser usado, pela instncia do SQL Server que est sendo instalada. Existe o modo Windows Authentication Mode. Com esse modo, somente contas do domnio podero ser utilizadas para acessar o SQL Server 2005. Usando o modo Mixed Mode, podero ser usadas contas do domnio e tambm contas do SQL Server 2005. No Captulo 6, sobre segurana, voc aprender mais detalhes sobre os modos de autenticao. Nesta etapa, voc tambm pode definir uma senha para a conta sa. A conta sa proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 800000Curso Completo a conta de administrador do SQL Server 2005, ou seja, a conta com maiores poderes no SQL Server 2005. Por isso sempre recomendado definir uma senha forte para esta conta. Entenda- se por senha forte uma senha que usa letras, nmeros e caracteres especiais e que tenha, no mnimo, 10 caracteres. Defina as configuraes desejadas. 21. Clique em Next, para seguir para a prxima etapa do assistente de instalao. 22. Nesta etapa voc define as configuraes de Collation (cada idioma tem configuraes prprias) e outras caractersticas que afetam a maneira como o SQL Server 2005 ir fazer as comparaes de dados, para filtrar os registros, ao executar uma consulta. Voc pode habilitar ou desabilitar opes como Case sensitive (diferenciar maisculas e minsculas ou no), Accent sensitve (diferenciar acentos ou no) e assim por diante. Defina as configuraes desejadas e clique em Next, para seguir para a prxima etapa do assistente. 23. Nesta etapa voc pode marcar a opo para enviar relatrios diretamente para a Microsoft, em caso de erros fatais na execuo do SQL Server 2005 ou de um dos seus componentes. No sei se esta etapa estar disponvel na verso final ou se somente nas verses Beta. Aceite as configuraes sugeridas e clique em Next, para seguir para a prxima etapa do assistente. 24. Ser exibida a tela final do assistente, com um resumo de todas as opes selecionadas. Voc pode usar o boto Back para voltar a uma das etapas anteriores e alterar alguma configurao, caso seja necessrio. Para concluir a instalao, clique no boto Install e aguarde. Ser exibida uma janela, com o progresso da instalao/upgrade. 25. Uma vez concluda a instalao ser habilitado o boto Next. Clique em Next, para exibir a tela final do assistente. Ser exibida a tela final do assistente, indicando que a instalao/upgrade foi concluda com sucesso. 26. Clique em Finish para encerrar o assistente. Pronto, a instncia do SQL Server 2000 foi atualizada para o SQL Server 2005, no seu computador. Agora s precisamos aprender a utiliz-lo. Mas isso assunto para todo o restante deste livro. No prximo tpico deste captulo voc aprender sobre MMC e Snap-in e sobre os servios do SQL Server 2005. No Captulo 3 voc aprender a utilizar o console de Administrao do SQL Server 2005 SQL Server Management Studio. FUNDAMENTOS EM: SERVIOS DISPONVEIS COM O SQL SERVER 2005 PR-REQUISITOS Ter instalado uma instncia nomeada do SQL Server 2005. METODOLOGIA Verificao dos servios instalados e inicializados. TCNICA Utilizar os consoles de administrao do Windows e do SQL Server 2005, para o gerenciamento de servios. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000081 Conforme j foi descrito anteriormente, um servio um programa que fica residente na memria do servidor. Um servio o responsvel por atender s requisies dos clientes quando estes se conectam com o Banco de Dados. Por exemplo, quando um usurio de uma aplicao faz uma pesquisa, atravs da rede, no servidor SQL Server, um servio que recebe a solicitao do cliente, obtm os dados solicitados e retorna o resultado para o cliente. Como o SQL Server 2005 oferece uma srie de funcionalidades, existem alguns servios que esto disponveis com cada instncia instalada do SQL Server. A seguir vamos descrever estes servios. O SERVIO SQL SERVER Este o principal servio do SQL Server 2005. Ele responsvel pelas principais funes do Banco de Dados. Se este servio, por algum motivo, no tiver sido inicializado, os clientes no sero capazes de se conectar com o servidor SQL Server. como se no existisse o servidor SQL ou se este estivesse fora da rede. Durante a instalao das instncias do SQL Server, ser gerado um identificador para cada instncia, o qual conhecido como Instance ID. Para cada componente do SQL Server gerado um identificador, separadamente. Os componentes so a mquina do Banco de Dados (Database Engine), o Analysis Services e o Reporting Services. O identificador de instncia est no formato MSSQL.n, um nmero inteiro, iniciando em 1. Este identificador de instncia utilizado para criar a estrutura de pastas onde esto os arquivos da instncia e tambm na Registry do Windows. O primeiro identificador de instncia gerado ser MSSQL.1, o segundo ser MSSQL.2 e assim por diante. Podem ocorrer falhas na seqncia de numerao; no caso em que uma instncia instalada, outras so instaladas aps ela e depois ela desinstalada. Quando uma nova instncia for instalada, seguir a numerao, a partir do ltimo identificador gerado, e no ser preenchido o espao, deixado pela instncia que foi desinstalada. Os componentes e arquivos de uma instncia sero instalados em uma estrutura de pastas, nomeada como o mesmo identificador da instncia. Por exemplo, a primeira instncia do SQL Server 2005, instalada como default, tendo sido instalado o SQL Server (database engine), o Analysis Services e o Reporting Services, ter a seguinte estrutura de pastas: Arquivos de Programas>\Microsoft SQL Server\MSSQL.1\MSSQL\ para o Banco de Dados Arquivos de programas>\Microsoft SQL Server\MSSQL.2\OLAP\ para o Analysis Services Arquivos de programas>\Microsoft SQL Server\MSSQL.3\RS\ para o Reporting Services Para o Sistema Operacional, cada servio, de cada instncia, tem um nome especfico. Por exemplo, o servio do Database Engine (a mquina de Banco de Dados, o SQL Server propriamente dito), para a primeira instncia, ter o nome MSSQL.1. Observe que utilizado o identificador da instncia Instance ID. Caso tenhamos mais do que uma instncia instalada, cada uma delas ter o seu prprio servio SQL Server, o qual nomeado de acordo com o ID da respectiva instncia. Observe que o uso de identificadores de instncia (Instance ID) uma maneira de criar atalhos, para fazer referncia a cada servio, de cada uma das instncias. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 820000Curso Completo Figura 2.26 Processos para as instncias do SQL Server. 5. Feche o gerenciador de tarefas. Por exemplo, suponha que tenhamos duas instncias do SQL Server 2005 instaladas; teremos dois servios SQL Server carregados na memria. Estes servios, para o Windows 2000, sero identificados pelos seguintes nomes: MSSQL.1 MSSQL.2 Ns podemos, facilmente, verificar se existem duas instncias deste servio carregadas na memria. Para isso, faa o seguinte: 1. Pressione Ctrl+Alt+Del para abrir a janela Segurana no Windows. 2. D um clique no boto Gerenciador de Tarefas, para abrir o gerenciador de tarefas do Windows. 3. Na janela que surge, d um clique na guia Processos. Depois d um clique no boto com o nome da coluna Nome da imagem, para classificar os processos carregados pelo nome. 4. V rolando com a barra de rolagem vertical, at encontrar um processo chamado sqlservr.exe, conforme indicado na Figura 2.26. Observe que temos dois processos sqlservr.exe carregados na memria. Cada um deles responsvel pelo servio SQL Server de cada uma das respectivas instncias do SQL Server 2005 instaladas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000083 O SERVIO SQL SERVER AGENT Este servio responsvel pelo agendamento de tarefas para execuo em perodos programados, emisso de alertas com base em determinadas condies, notificaes e planos de manuteno de Banco de Dados. Este servio dependente do servio SQL Server, ou seja, se o servio SQL Server (Database engine) no tiver sido inicializado com sucesso, no ser possvel inicializar o servio SQL Server Agent. A exemplo do servio SQL Server, existe uma instncia do SQL Server Agent para cada uma das respectivas instncias do SQL Server 2005 instaladas. O nome do servio tambm ligado ao identificador de instncia, conforme descrito anteriormente. Na Figura 2.27, podemos ver, no gerenciador de tarefas, os dois processos responsveis por estas duas instncias do servio SQL Server Agent. Voltaremos a falar do servio SQL Server Agent quando falarmos do agendamento de tarefas, no Captulo 5. Figura 2.27 Processos para as instncias do SQL Server Agent. O SERVIO MICROSOFT DISTRIBUTED TRANSACTION COORDINATOR MSDTC Este servio um coordenador de transaes, o qual permite que dados das mais diferentes fontes, desde o mainframe at uma planilha do Excel, sejam acessados em uma aplicao desenvolvida para o SQL Server. Tais tipos de aplicaes podem ser desenvolvidas em diversas linguagens, como por exemplo o Visual Basic, Delphi, Power Builder, C#, ASP.NET, etc. Este servio garante a consistncia em todas as fontes de dados. Por exemplo, se voc est acessando dados do mainframe e de um planilha Excel, est proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 840000Curso Completo fazendo clculos que alteram dados em ambas as fontes e salvam os resultados em um Banco de Dados Oracle. O servio MSDTC garante que todas as operaes ocorrero com sucesso, no contexto de uma transao, ou que os dados sero retornados ao seu estado original antes do incio da transao, caso uma nica das operaes da transao apresente falha. Ou seja, o famoso tudo ou nada. Diferente dos servios SQL Server e SQL Server Agent, existe somente uma instncia do servio MSDTC, independente de quantas instncias do SQL Server 2005 estejam instaladas no servidor. Isto faz sentido, pois o papel do MSDTC justamente facilitar o acesso a vrias fontes de dados, incluindo Bancos de Dados, de diferentes instncias do SQL Server 2005. O SERVIO MICROSOFT SEARCH Quando fazemos uma instalao personalizada (Custom), podemos optar por no instalar o servio Microsoft Search. Este servio somente deve ser instalado se realmente for utilizado, pois caso contrrio estar consumindo recursos no servidor, tais como memria RAM e processador. O servio Microsoft Search oferece a possibilidade de pesquisas avanadas para o idioma Ingls. Diferente dos servios SQL Server e SQL Server Agent, existe somente uma instncia do servio Microsoft Search, independente de quantas instncias do SQL Server 2005 estejam instaladas no servidor. O nome do servio msftesql$SQL2005. O SERVIO MICROSOFT REPORT SERVICES Este o servio responsvel pelas funcionalidades do Reporting Services. Ele fornece uma interface de fcil utilizao para a criao e, principalmente, para a publicao e distribuio de relatrios. Abordaremos o Reporting Services no Captulo 14. O SERVIO ANALYSIS SERVICES O Microsoft SQL Server 2005 Analysis Services fornece funcionalidades para o processamento analtico online, as chamadas consultas OLAP, baseadas em cubos de dados. Tambm fornece uma srie de funcionalidades para o desenvolvimento de aplicaes de data mining e business intelligence. A idia bsica do Analysis Services facilitar a criao de estruturas multidimensionais de dados, conhecidas como cubos de dados. Os dados de um cubo podem ser obtidos a partir de fontes diversas, tais como Bancos de Dados do SQL Server, planilhas do Excel, dados do mainframe e outras fontes relacionais e no relacionais de dados. Agora que j conhecemos os servios disponveis, vamos aprender a gerenci-los, utilizando duas ferramentas: o Computer Management (console que instalado juntamente com o SQL Server 2005) e o Snap-in Services (o qual faz parte do Windows). proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000085 FUNDAMENTOS EM: GERENCIAMENTO DOS SERVIOS DO SQL SERVER 2005 PR-REQUISITOS Ter instalado duas instncias do SQL Server 2005. METODOLOGIA Gerenciamento dos servios de cada instncia do SQL Server 2005. TCNICA Utilizar o gerenciador de tarefas do Windows 2000 e o console Computer Management, do SQL Server 2005. Ns podemos configurar um determinado servio para que ele seja inicializado, automaticamente, quando o Windows iniciado (Windows 2000, Windows Server 2003 ou Windows XP). Para servios fundamentais, como o servio SQL Server (database engine), o qual deve estar sempre disponvel, a opo de inicializar automaticamente a mais indicada (mais do que a mais indicada, fundamental). Porm para servios que somente sero utilizados eventualmente, o ideal que o servio no seja inicializado automaticamente, mas somente quando o servio for necessrio, para evitar que o servio consuma recursos de hardware desnecessariamente. Um servio que no inicializado automaticamente pode ser inicializado a qualquer momento, utilizando as ferramentas que apresentarei nesta seo. Antes de continuarmos, vamos fazer um parnteses para falar de MMC Microsoft Management Con- sole e Snap-ins (vamos optar por no traduzir, uma vez que o termo j consagrado), pois a principal ferramenta de administrao do SQL Server 2005, o SQL Server Management Studio, uma ferramenta baseada nos conceitos de MMC e Snap-ins. UM PEQUENO PARNTESES PARA APRENDER SOBRE MMC E SNAP-INS O conceito de MMC foi criado, ainda na poca do NT Server 4.0 e do SQL Server 7.0, para servir como uma interface unificada para a administrao e gerenciamento dos mais variados recursos do Win- dows e dos demais produtos da Microsoft, tais como o SQL Server, SMS Server, Exchange Server, IIS, etc. Em verses anteriores criao do MMC, os produtos da Microsoft, cada tarefa possua um aplicativo com uma interface diferente. Por exemplo, no Windows NT Server 4.0, a interface do User Manager for Domains (o qual utilizado para criar contas e grupos) era completamente diferente da interface de outras ferramentas administrativas, tais como o Disk Manager (utilizado para gerenciar os discos rgidos e parties). Com isso o administrador precisava aprender a utilizar uma srie de interfaces diferentes, uma para cada categoria de tarefas a ser executada. O MMC se prope a resolver esse problema, fornecendo uma interface muito semelhante para todas as tarefas administrativas. O MMC vem sendo utilizado em programas como o Internet Information Server desde a verso 4.0 (Servidor Web da Microsoft), Proxy Server 2.0 (Firewall para proteo da rede interna), Microsoft SQL Server desde a verso 7.0, dentre outros programas da Microsoft. Na verdade, o MMC sozinho no oferece nenhuma funcionalidade. O MMC fornece uma maneira padronizada para a criao de ferramentas administrativas. Toda a funcionalidade do MMC fornecida proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 860000Curso Completo por aplicaes de gerenciamento e administrao chamadas snap-ins. O MMC funciona simplesmente como um hospedeiro para os diversos snap-ins disponveis. Em outras palavras, o MMC utilizado para abrir um snap-in, sendo o snap-in o responsvel por fornecer as funcionalidades de administrao dos mais diversos produtos e servios da Microsoft. Voc pode utilizar o MMC para uma srie de atividades, tais como: Realizar a maioria das tarefas administrativas do dia-a-dia. Fazer o gerenciamento e a administrao de uma maneira centralizada. Fazer administrao e gerenciamento remoto, desde que possua as devidas permisses para isso. Por exemplo, quando abrimos a ferramenta para administrar contas de usurios e grupos do Windows 2000 Server, por exemplo, na verdade estamos abrindo o MMC e carregando o snap-in especialmente projetado para realizar as tarefas administrativas relativas administrao de usurios e grupos. Podemos ter um ou mais snap-ins carregados no MMC, de tal forma que em uma mesma janela podemos realizar as mais variadas tarefas administrativas. O melhor exemplo disso o snap-in Gerenciamento do Computador (Iniciar -> Programas -> Ferramentas administrativas -> Gerenciamento do computador). Utilizaremos este snap-in mais adiante. Vamos a um exemplo prtico. Exemplo 1: Vamos abrir o MMC sem nenhum snap-in carregado. Conforme este exerccio mostrar o MMC em si no oferece funcionalidade nenhuma, a qual fornecida pelos snap-ins carregados. Para abrir o MMC sem nenhum snap-in carregado, siga os passos indicados a seguir: 1. D um clique no boto Iniciar. 2. Clique na opo Executar. 3. Na janela que surge, no campo Abrir, digite mmc e d um clique em OK. 4. Ser aberta uma janela conforme indicado na Figura 2.28. Esta janela mostra o MMC sem nenhum snap-in carregado. Figura 2.28 MMC sem nenhum snap-in carregado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000087 Agora vamos abrir o MMC com alguns snap-ins j carregados. Vamos tambm dar uma analisada na interface do mesmo. Feche o MMC aberto anteriormente. Para abrir o MMC para gerenciamento do computador: 1. D um clique no boto Iniciar, aponte para Programas e dentro de Programas para Ferramentas administrativas. 2. No menu de opes que surge d um clique em Gerenciamento do computador. Caso no estejam aparecendo todas as opes, d um clique na opo que uma flechinha dupla para baixo. Com isso o Windows 2000 Server exibe todas as opes do menu, inclusive as menos utilizadas. 3. Ir surgir a janela indicada na Figura 2.29. Observe que temos diversos snap-in carregados. Nesta janela voc pode administrar Armazenamento, Pastas Compartilhadas, Analisar os logs do sistema, etc. Figura 2.29 MMC com vrios snap-ins carregados. A maneira de utilizarmos um snap-in e navegar pelas opes disponveis exatamente igual utilizada no Windows Explorer. Vamos navegando atravs do painel da esquerda e, quando um elemento do painel da esquerda selecionado, o seu contedo exibido no painel da direita. Voc ver que esta exatamente a maneira de navegar atravs do SQL Server Management Studio, o qual o principal console de administrao do SQL Server 2005 (voc aprender a utiliz-lo no Captulo 3). Alm disso os menus e botes da barra de ferramentas vo se modificando, dependendo do elemento selecionado. Isso porque as aes que podemos realizar, por exemplo, sobre um usurio so diferentes das aes que podemos realizar sobre um disco rgido. Essa mudana nos menus e na barra de ferramentas serve para refletir quais aes so possveis sobre o elemento selecionado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 880000Curso Completo N O T A 4. Para abrir a pasta Grupos, d um clique no sinal de + ao lado da opo Usurios e grupos locais. Esta opo se abre mostrando duas opes ligadas a ela: Usurios e Grupos. Se o seu servidor for um Controlador de domnio, a opo Usurios e grupos locais estar desabilitada, o que indicado por um x vermelho. 5. Para ver uma listagem dos grupos em seu computador, d um clique em Grupos. No painel da direita ser exibida uma listagem com os grupos disponveis. Voc tambm pode utilizar o boto direito do mouse. Por exemplo, se voc clicar com o boto direito sobre a opo Usurios, surge um menu cuja primeira opo Novo usurio. Esta opo pode ser utilizada para cadastrar um novo usurio. Dependendo de o computador ser um Controlador de Domnio ou um Member Server, esta interface pode apresentar algumas diferenas. 6. Feche o MMC para gerenciamento do computador. Um MMC com um ou mais snap-ins carregados chamado de um Console MMC. Quando instalamos o Windows 2000 Server ou o Windows Server 2003, j so adicionados diversos Consoles MMC pr- configurados para que possamos executar as tarefas administrativas mais comuns. Estes consoles podem ser acessados atravs do menu Ferramentas administrativas. O SQL Server 2005 nos fornece o console SQL Server Management Studio, o qual iremos utilizar ao longo deste livro. Tambm podemos criar nossos prprios consoles pr-configurados, os quais podem ser salvos em arquivos com a extenso .MSC. Depois para abrirmos um console pr-configurado basta abrirmos o arquivo com a extenso .MSC, utilizando para isso o MMC. Vamos a mais um exemplo prtico. Suponhamos que voc queira um console somente para administrar contas de usurios e grupos do Windows, sem todas as demais opes do console pr-configurado Gerenciamento do computador. Vamos abrir o MMC sem nenhum snap-in e carregar apenas o snap-in para administrao de contas de usurios e grupos. Depois vamos salvar este console com o nome de administra_usuarios.msc. Por ltimo vamos verificar que o Windows 2000 Server j cria um atalho automaticamente para o novo console criado, no menu Ferramentas administrativas. Para abrir o MMC sem nenhum snap-in carregado: 1. D um clique no boto Iniciar. 2. Clique na opo Executar. 3. Na janela que surge, no campo Abrir digite mmc e d um clique em OK. 4. Ser aberta uma janela sem nenhum snap-in carregado. Para carregar apenas o snap-in para administrao de contas de usurios e grupos: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000089 N O T A Figura 2.30 Clique no boto Adicionar para adicionar um snap-in. Caso voc esteja em um controlador de domnio, escolha o snap-in Usurios e computadores do Active Directory. Para maiores informaes sobre contas de usurios e grupos e Active Directory, consulte o livro Windows Server 2003 Curso Completo, 156 pginas, de minha autoria, publicado pela editora Axcel Books (www.axcel.com.br). 4. Surge a janela Escolher mquina de destino. Essa janela permite que voc defina em qual computador voc quer gerenciar as contas de usurios e grupos. Neste momento voc pode gerenciar usurios e grupos de um computador remoto, atravs da rede, desde que voc tenha permisso para isso. Por padro vem selecionado o computador Local. Vamos aceitar a configurao padro. D um clique no boto Concluir. 1. Com o MMC, aberto no exerccio anterior, d um clique no menu Console e escolha a opo Adicionar/remover snap-in. Ser exibida a janela indicada na Figura 2.30. 2. D um clique no boto Adicionar. 3. Ser exibida a janela Adicionar snap-in autnomo, na qual exibida uma listagem com todos os snap-ins disponveis, no computador que voc est utilizando. Localize na listagem o seguinte snap-in: Usurios e grupos locais. D um clique sobre ele para selecion-lo e clique no boto Adicionar. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 900000Curso Completo N O T A Figura 2.31 Snap-in Usurios e grupos locais j adicionado. O local entre parnteses indica o computador local. Voc estar de volta ao MMC, agora com o snap-in Usurios e grupos locais j carregado. Para salvar o console com o nome de administra_usuarios.msc: 1. D um clique no menu Console e escolha a opo Salvar. 2. Na janela Salvar como, no campo Nome do arquivo, digite administra_usuarios.msc. 3. D um clique no boto Salvar. 4. Feche o MMC. Para verificar se o Windows criou um atalho para o novo console criado: 1. D um clique no boto Iniciar, aponte para Programas e dentro de Programas para Ferramentas administrativas. 5. Voc estar de volta janela Adicionar snap-in autnomo. Como no queremos adicionar mais nenhum snap-in, d um clique no boto Fechar. 6. Voc estar de volta janela Adicionar/remover snap-in. Observe que o snap-in Usurios e grupos locais (local) j aparece na listagem, conforme indicado na Figura 2.31. D um clique em OK para fechar a janela Adicionar/remover snap-in. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000091 2. No menu de opes que surge verifique se foi adicionada uma opo chamada administra_usuarios.msc. 3. Essa opo um atalho para o console recm-criado, o qual possui apenas o snap-in Usurios e grupos locais, carregado. 4. Se voc clicar nesta opo, ser aberto o console anteriormente criado. Existem muitas aplicaes prticas para a criao de consoles personalizados. Por exemplo, caso um funcionrio seja responsvel apenas pelo gerenciamento de usurios e grupos, voc pode criar um console personalizado somente com o snap-in necessrio. Isso facilita o trabalho, uma vez que a inter- face fica mais simples e impede o acesso a operaes que no fazem parte das atribuies do funcionrio. Agora vamos encerrar o nosso pequeno parnteses sobre MMC e snap-in e voltar ao gerenciamento de servios do SQL Server 2005. Vamos aprender a utilizar o Snap-in Servios e o aplicativo SQL Com- puter Manager, o qual instalado com o SQL Server 2005. UTILIZANDO O SNAP-IN SERVICE MANAGER O CONSOLE SERVIOS Qualquer servio disponvel, e no somente os servios do SQL Server 2005, pode ser gerenciado pelo Snap- in Service Manager. Atravs deste snap-in podemos efetuar diversas configuraes, como por exemplo: Configurar um servio para que seja inicializado automaticamente. Parar um servio. Inicializar um servio. Configurar qual a conta que ser utilizada para inicializar o servio. Configurar o comportamento do servio em caso de falha. Por exemplo, podemos pedir para que o servio seja reinicializado em caso de falha. Vamos aprender a utilizar o snap-in Servios atravs de um exemplo prtico. Vamos abri-lo e verificar as opes de configurao disponveis para o servio SQLServer (CURSOSJB), que conforme foi visto anteriormente o servio SQL Server para a instncia CURSOSJB, no servidor SERVIDOR2. Para verificar as opes de configurao do servio SQLServer (CURSOSJB), siga os passos indicados a seguir: 1. Faa o logon no Servidor onde est instalada a instncia a ser gerenciada, usando uma conta com perfil de administrador. 2. Abra o Snap-in Servios: Iniciar -> Programas -> Ferramentas administrativas -> Servios. Surge a janela indicada na Figura 2.32. 3. Na listagem de servios, a qual por padro est ordenada ascendentemente pelo nome do servio, localize o servio chamado SQLServer (CURSOSJB). Observe que, ao lado do nome do servio, temos mais colunas de informao. Estas colunas informam se o servio est carregado na memria (Iniciado); o tipo de inicializao indica se o servio carregado automaticamente ou no, quando o Windows inicializado e assim por diante. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 920000Curso Completo Figura 2.32 O console para gerenciamento de servios. Parar: Esta opo pra o servio, descarregando-o da memria. Os usurios no podero mais se conectar com o servidor SQL enquanto o servio no for reinicializado. Os usurios que estiverem conectados sero desconectados. Pausar: Esta opo faz com que o servidor SQL Server no aceite novas conexes, porm os usurios que esto atualmente conectados continuam podendo acessar os recursos do servidor SQL Server. Continuar: Faz com que o servidor SQL Server volte a aceitar novas conexes. Esta opo est desabilitada se o servio no estiver em pausa. Reiniciar: Descarrega o servio da memria e o carrega novamente. Esta opo pode ser utilizada quando o servidor comear a apresentar algum comportamento estranho, sem justificativa aparente. Nestas situaes reinicializar o servidor pode ser a melhor opo. 5. D um clique duplo no nome do servio. Ser aberta a janela Propriedades SQLServer (CURSOSJB)., a qual apresenta quatro guias de opes. Na guia Geral, conforme indicado na Figura 2.33, exibido o nome do servio, e temos a opo de inserir uma descrio para o servio. Na lista Tipo de inicializao, podemos escolher se o servio deve ser inicializado automaticamente, manualmente ou se deve ser desativado. H ainda botes para Iniciar, Parar, Pausar e Continuar o servio. Tambm temos um campo para passar um parmetro de inicializao, caso o servio em questo exija algum. 4. D um clique com o boto direito do mouse sobre o nome do servio. No menu que surge temos diversas opes, conforme descrito a seguir: Iniciar: Esta opo carrega o servio na memria. Se o servio j estiver carregado, esta opo estar desabilitada. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000093 Figura 2.33 A guia Geral das propriedades do servio. Figura 2.34 A guia Logon das propriedades do servio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 940000Curso Completo Na guia Logon, conforme indicado na Figura 2.34, podemos definir qual a conta que ser utilizada para inicializar o servio. Caso tenhamos mais do que um perfil de hardware, podemos habilitar ou desabilitar o servio, nos diferentes perfis existentes. Vamos supor que voc tenha criado um perfil de hardware chamado manuteno. Quando voc inicializa o servidor e seleciona este perfil de hardware, pode ser interessante que o servidor tenha todos os servios no necessrios manuteno desabilitados para que sejam liberados recursos como memria e processador para as tarefas de manuteno. Na guia Recuperao, conforme indicado na Figura 2.35, podemos definir qual deve ser o comportamento do servio no caso de uma falha. Estas opes so uma das novidades do Windows 2000 e do Windows Server 2003 em relao ao Windows NT Server 4.0. Podemos definir diferentes aes para a primeira falha do servio, para a segunda falha do servio e para as falhas posteriores, dentro de um perodo de tempo definido no campo Zerar a contagem de falhas aps x dias. As aes possveis so: No executar nenhuma ao, Reiniciar o servio, Executar um arquivo ou Reiniciar o computador. Por exemplo, podemos escolher Reiniciar o servio para a primeira falha; Executar um arquivo, para executar um programa que avisa o Administrador via e-mail e reinicializa o servio para a segunda falha; e Reiniciar o computador para uma falha posterior. As opes Executar arquivo e Parmetros de linha de comando somente sero habilitadas quando escolhermos executar um arquivo como ao para uma das falhas primeira, segunda ou posterior. Figura 2.35 A guia Recuperao das propriedades do servio. Na guia Dependncias, conforme indicado na Figura 2.36, temos informaes de quais Servios o servio em questo depende, e quais Servios dependem do servio em questo. Conforme a Figura 2.36, o servio SQL Server Agent depende do servio SQL Server. Isto significa que, se o servio SQL Server no estiver inicializado, o servio SQL Server Agent no poder ser inicializado. O Windows proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000095 N O T A Figura 2.36 A guia Dependncias das propriedades do servio. 7. Feche o console Servios. Muitas vezes uma determinada funcionalidade do Windows ou do SQL Server no est funcionando corretamente. Um dos locais que devemos verificar no console Servios, para nos certificar de que todos os servios necessrios foram devidamente inicializados. As opes vistas neste exemplo esto disponveis para todos os servios e no apenas para os servios do SQL Server 2005. UTILIZANDO O CONSOLE SQL COMPUTER MANAGER, QUE VEM COM O SQL SERVER 2005 Ao instalarmos o SQL Server 2005 instalado um console chamado SQL Computer Manager, o qual pode ser acessado utilizando o seguinte comando: Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Computer Manager. Este console um utilitrio que nos permite gerenciar os servios do SQL Server de uma maneira bastante simples, pois apresenta somente os servios do SQL Server 2005 e no todos os demais servios, instalados no computador. utiliza estas informaes para determinar a ordem correta de inicializao dos servios ao inicializar o sistema operacional. 6. Clique em Cancelar para fechar a janela com as propriedades do servio SQLServer (CURSOSJB).,. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 960000Curso Completo Utilizando o SQL Computer Manager podemos realizar as seguintes aes com os servios do SQL Server 2005: Inicializar um servio. Continuar o servio, caso ele tenha sido colocado em Pausa. Colocar o servio em Pausa. Configurar o servio para inicializar automaticamente quando o sistema operacional inicializado. Na Figura 2.37, vemos a tela inicial do SQL Computer Manager, o qual aberto usando o comando Iniciar -> Programas -> SQL Server 2005 -> SQL Computer Manager. Figura 2.37 SQL Computer Manager. Se a opo Servios e aplicativos no estiver aberta, clique no sinal de +, ao lado desta opo, para abri- la. Sero exibidas vrias opes, dentre as quais a opo SQL Computer Manager. atravs desta opo que temos acesso a todos os servios do SQL Server 2005, instalados no computador. Clique no sinal de + opo SQL Computer Manager. Abaixo da opo SQL Computer Manager, d um clique no sinal de + ao lado da opo Services. Ser exibida uma lista de todos os servios do SQL Server 2005, instalados no computador, conforme indicado na Figura 2.38. Clique em um dos servios. Por exemplo, clique no servio SQL Server, que a mquina do Banco de Dados do SQL Server 2005. No painel da direita, sero exibidas todas as instncias do SQL Server 2005, instaladas, conforme indicado na Figura 2.39. No painel da direita, voc pode clicar com o boto direito do mouse, no servio a ser gerenciado. Ser exibido um menu com opes para inicializar, parar, pausar e para acessar as propriedades do servio. A idia bsica do SQL Computer Manager servir de um ponto central para gerenciamento dos servios do SQL Server 2005. No SQL Computer Manager so listados apenas os servios do SQL Server 2005 e no todos os servios disponveis no computador. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000097 Figura 2.39 Instncias do SQL Server 2005 instaladas. CONCLUSO Iniciamos o captulo com uma introduo a uma srie de conceitos importantes como comrcio eletrnico, CRM, transaes, etc. Na seqncia, aprendemos sobre arquitetura de aplicaes, desde a tradicional arquitetura Cliente/Servidor com seus problemas, at modernas aplicaes de trs ou mais camadas. Foram apresentados os principais problemas com a arquitetura de duas camadas, principalmente quanto a dificuldade de manuteno e ao elevado TCO deste modelo. Apresentamos as solues propostas pelos modelos de trs ou mais camadas, sendo que as principais so as seguintes: Figura 2.38 Lista de servios do SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 980000Curso Completo Facilidade de instalao e manuteno das aplicaes. Facilidade na atualizao de verses. Reduo do TCO. Entender as vantagens e desvantagens de cada uma das arquiteturas muito importante para que possamos desenvolver as solues mais adequadas a cada situao. importante sempre lembrarmos o papel de um Banco de Dados como o SQL Server 2005 no desenvolvimento de aplicaes. O SQL Server 2005 no a ferramenta que ser utilizada para o desenvolvimento da aplicao como um todo. Para o desenvolvimento/codificao de uma aplicao utilizamos ferramentas como o Visual Basic, Delphi, Visual C++, Visual Interdev, Borland C++, Power Builder, etc. Alm das ferramentas de desenvolvimento, utilizada uma srie de outras ferramentas que do apoio ao processo de desenvolvimento de aplicaes. O SQL Server 2005 oferece vrias funcionalidades sempre ligadas ao Banco de Dados da aplicao, como por exemplo: Armazenamento das tabelas de dados. Pesquisa nos dados com a utilizao da linguagem T-SQL. Suporte a transaes. Nveis de segurana e auditoria no acesso aos dados. Suporte a replicao de dados entre servidores. Rotinas de backup e restore. Uma vez que estamos utilizando diversas funcionalidades oferecidas pelo prprio Banco de Dados, no precisamos codificar estas funcionalidades dentro da nossa aplicao. Isto facilita e simplifica o processo de desenvolvimento das aplicaes. Voc tambm aprendeu sobre as principais novidades e melhoramentos do SQL Server 2005, em relao s verses anteriores. Tambm mostrei onde encontrar, no Books Online, referncia completa de todas as novidades do SQL Server 2005. Seguindo no captulo, aprendemos a fazer a instalao do SQL Server 2005. Tambm aprendemos a criar mltiplas instncias do SQL Server em um mesmo servidor. Fizemos, passo a passo a instalao de uma instncia padro, a instalao de uma segunda instncia e um upgrade de uma instncia do SQL Server 2000 para o SQL Server 2005. Aps instalado o SQL Server, aprendemos a gerenciar os servios que compem o SQL Server e a utilizar o console Servios e o SQL Computer Manager, que vem junto com o SQL Server 2005. Tambm fizemos um pequeno parnteses para apresentar os conceitos de MMC e Snap-in. Apresentamos alguns exemplos de utilizao do MMC, bem como da criao de consoles personalizados. SQL Server 2005 instalado e os respectivos servios corretamente inicializados, agora hora de comearmos a utilizar o Banco de Dados. Mas isto assunto para o prximo captulo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 2 FUNDAMENTOS DO MICROSOFT SQL SERVER 2005 Curso Completo000099 Por enquanto se voc quiser estudar um pouco mais sobre o SQL Server 2005, pode consultar um dos seguintes endereos: www.microsoft.com/sql www.swyink.com www.sqlmag.com proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000101 Captulo 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1020000Curso Completo INTRODUO J aprendemos os conceitos bsicos sobre Bancos de Dados Relacionais no Captulo 1. Tambm aprendemos a instalar e gerenciar os servios do SQL Server 2005 no Captulo 2. Agora vamos comear a trabalhar com o SQL Server 2005. Neste captulo aprenderemos um pouco mais sobre as ferramentas de administrao que so disponibilizadas com o SQL Server 2005. Neste captulo, trabalharemos com a seguinte ferramenta: SQL Server Management Studio Tambm aprenderemos a configurar alguns parmetros importantes, os quais afetam cada instncia do SQL Server 2005, separadamente. Por exemplo, podemos limitar a quantidade de memria RAM disponvel para cada instncia ou podemos deixar que o prprio SQL Server gerencie a quantidade de memria a ser utilizada. Tambm podemos definir, para o caso de servidores multiprocessados, se todos os processadores podem ser utilizados ou se sero alocados processadores separados para cada instncia, etc. Depois daremos uma passeada pelo SQL Server Management Studio, mostrando as principais opes de configurao disponveis e quais as tarefas que podem ser realizadas. Conforme veremos, o SQL Server Management Studio nada mais do que um snap-in de administrao para o SQL Server 2005. O SQL Server Management Studio o substituto do Enterprise Manager, o qual era o principal console de administrao do SQL Server 2000. Ainda utilizando o SQL Server Management Studio veremos quais os Bancos de Dados que so criados, automaticamente, quando da instalao do SQL Server 2005. Veremos qual a funo de cada um dos Bancos de Dados criados na instalao. Tambm mostrarei como instalar os Bancos de Dados de exemplos, os quais no so instalados por padro, quando da instalao do SQL Server 2005. Em seguida apresentaremos algumas sugestes para a otimizao dos Bancos de Dados em relao ao armazenamento em disco. Veremos os conceitos de RAID-0, RAID-1 e RAID-5. A utilizao de arranjos do tipo RAID fornece tolerncia a falhas e tambm maior desempenho do Banco de Dados. Veremos algumas configuraes que podem nos ajudar a obter um melhor desempenho na utilizao dos discos. Na seqncia veremos qual a estrutura de um Banco de Dados no SQL Server 2005. Veremos quais os arquivos que so criados para um Banco de Dados e para os logs de transao do Banco de Dados, e aprenderemos a identificar cada tipo de arquivo pela sua extenso. Uma vez entendida a estrutura fsica do Banco de Dados, vamos partir para a criao de um Banco de Dados, atravs de um exemplo prtico, passo a passo. Na verdade, criaremos dois Bancos de Dados de exemplo: um utilizando o SQL Server Management Studio e outro utilizando comandos T-SQL para a criao de Banco de Dados. Aps criados os Bancos de Dados, vamos conferir se os arquivos referentes a cada um dos Bancos de Dados foram realmente criados. Encerrado este captulo, o amigo leitor dever estar habilitado para as seguintes tarefas: Acessar as diversas instncias do SQL Server, utilizando o SQL Server Management Studio e utilizando comandos T-SQL. Configurar as principais opes para cada uma das instncias instaladas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000103 Entender a estrutura de armazenamento em disco de um Banco de Dados do SQL Server 2005. Criar Bancos de Dados utilizando o SQL Server Management Studio e comandos T-SQL. Conhecer os arranjos de RAID-0, RAID-1 e RAID-5, sabendo qual oferece tolerncia a falhas e como cada um se comporta em relao ao desempenho das operaes de leitura e escrita no arranjo. FUNDAMENTOS EM: UTILIZAO DO SQL SERVER MANAGEMENT STUDIO PR-REQUISITOS Noes bsicas do Windows e dos MMC Microsoft Management Console. METODOLOGIA Apresentao dos elementos principais do SQL Server Management Studio. No SQL Server 2000, a principal ferramenta de administrao era o Enterprise Manager. A principal ferramenta de administrao do SQL Server 2005 o console SQL Server Management Studio, o qual pode ser acessado utilizando-se o seguinte caminho: Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Server Management Studio. Este console nos d acesso maioria das tarefas necessrias criao e manuteno de um Banco de Dados no SQL Server 2005 (na verdade difcil imaginar uma tarefa que no seja possvel fazer usando o SQL Server Management Studio). Vamos, atravs de exemplos prticos, aprender a utilizar algumas das funcionalidades do SQL Server Management Studio. Ao longo deste livro, voltarei diversas vezes ao SQL Server Management Studio para executar as tarefas propostas, tais como criao de Banco de Dados, criao e alterao de tabelas, criao e alterao de views, criao e alterao de usurios e grupos de usurios, configuraes de segurana, configuraes de replicao, etc. Exemplo: Abrindo e navegando pelas opes do SQL Server Management Studio: 1. Faa o logon com uma conta com permisso de administrador e abra o SQL Server Management Studio: Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Server Management Studio. Ser aberta a tela inicial do SQL Server Management Studio, indicada na Figura 3.1. Nesta tela voc informa o tipo de servidor com o qual deseja se conectar. Por padro selecionada a opo SQL Server. Tambm esto disponveis as opes Analysis Server, Report Server, SQL Mobile e DTS Server. Observe que possvel usar o SQL Server Management Studio para administrar todos os servios do SQL Server 2005. Na lista Server name, voc seleciona o nome do servidor com o qual voc deseja se conectar. Nesta lista, voc pode selecionar a opo <Browse for more>, para abrir a janela Browse for servers. Atravs desta janela, voc pode se conectar com qualquer servidor SQL da rede (ou de outros tipos, tais como o Analysis Server ou Report Server). Observem que possvel usar o console SQL Server Management Studio, para administrar, remotamente, qualquer servidor SQL Server da rede, para o qual voc tenha as devidas permisses. Na lista Authentication, voc seleciona o tipo de autenticao. No Captulo 6 voc aprender mais sobre os tipos de autenticao disponveis no SQL Server 2005. No Exemplo da Figura 3.2, escolhi me conectar a um servidor SQL Server, com a instncia SERVIDOR\SQL2005, usando autenticao integrada com o Windows. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1040000Curso Completo Figura 3.1 A tela inicial do SQL Server Management Studio. Figura 3.2 Conectando com o servidor SERVIDOR\SQL2005. Selecione as opes desejadas e clique em Connect. Aps alguns instantes ser feita a conexo com o servidor selecionado e ser apresentado o ambiente de administrao fornecido pelo SQL Server Man- agement Studio, conforme indicado na Figura 3.3. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000105 Figura 3.3 Ambiente de administrao do SQL Server Management Studio. uma janela tradicional de um console MMC, com menus e dividida em painis, bem no estilo do Windows Explorer. Na esquerda, tem uma janela com os servidores SQL Server j registrados, com os quais voc j fez uma conexo. Esta parte do console est indicada na Figura 3.4, onde temos um nico servidor registrado: SERVIDOR\SQL2005 Figura 3.4 A janela Registered Servers. Logo abaixo temos a janela Object Explorer. Nesta janela, abaixo do nome do servidor, exibida uma rvore, onde aparecem os diversos elementos que compem um servidor SQL Server 2005. O primeiro elemento Databases. Ao expandir esta opo, sero exibidos todos os Bancos de Dados que esto disponveis nesta instncia do Servidor SQL Server, conforme podemos ver na Figura 3.5. Os Bancos de Dados so agrupados em Bancos de dados do sistema (System Databases), Banco de dados de snapshot (Snapshot Databases) e os demais Bancos de Dados. Os Bancos de Dados contidos em System Data- bases so os bancos criados e mantidos pelo prprio SQL Server 2005 e fundamentais ao funcionamento do SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1060000Curso Completo N O T A Figura 3.5 Bancos de Dados da instncia SERVIDOR\SQL2005 Mantenha o SQL Server Management Studio. Falarei sobre a funo dos Bancos de Dados do sistema, ao longo dos captulos deste livro. O SQL Server Management Studio tambm tem dezenas de outras funcionalidades, janelas e painis, as quais aprenderemos a utilizar ao longo deste livro. Porm, voc deve estar lembrado, do Captulo 2, que podemos ter vrias instncias do SQL Server 2005 instaladas no mesmo servidor ou at mesmo em servidores diferentes. Para poder administrar e ter acesso aos elementos de outras instncias, preciso registr-las no SQL Server Management Studio. Lembre que, na prtica, as diversas instncias do SQL Server se comportam como se fossem servidores completamente independentes. Vamos aprender a registrar uma outra instncia do servidor SQL Server no SQL Server Management Studio. Exemplo: Para registrar a instncia SERVIDOR\SRVINST02 no SQL Server Management Studio, siga os passos indicados a seguir: 1. O SQL Server Management Studio deve ter sido mantido aberto no exemplo anterior. Caso este tenha sido fechado, abra-o novamente. 2. Clique com o boto direito do mouse em Microsoft SQL Servers, na janela Registered Servers, logo abaixo do menu File. 3. No menu de opes que surge, d um clique na opo New -> Server Registration. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000107 4. Ser aberta a janela New Server Registration, na qual voc deve informar os dados da instncia a ser conectada. Observe que a opo SQL Server j vem selecionada no campo Server Type e no pode ser alterada. No campo Server Name digite o nome do servidor com o qual voc quer se conectar e selecione o tipo de autenticao. No Exemplo da Figura 3.6 estou me conectando com SERVIDOR2\CURSOSJB, ou seja, a instncia CURSOSJB no servidor chamado SERVIDOR2, usando autenticao integrada do Windows. Figura 3.6 Bancos de Dados da instncia SERVIDOR\SQL2005. 5. No campo Registered Server Name voc pode digitar um nome que servir como um apelido, como uma referncia ao servidor. O padro o prprio nome da instncia. No nosso exemplo, o nome padro SERVIDOR2\CURSOSJB. Voc pode digitar um nome mais amistoso, tal como Servidor de Cursos, ou Servidor da Matriz. Voc pode digitar uma descrio no campo Regis- tered server description. 6. Aps fornecer as informaes necessrias, clique em Save. O novo servidor j estar disponvel para ser utilizado. Observe que o servidor j aparece no painel Registered Servers, conforme indicado na Figura 3.7: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1080000Curso Completo Figura 3.7 A instncia SERVIDOR2\CURSOSJB, recm-registrada. 7. D um clique duplo em SERVIDOR2\CURSOSJB, no painel Registered Servers e este servidor j passar a ser exibido no painel Object Explorer, conforme indicado na Figura 3.8: Figura 3.8 Acessando todos os objetos da instncia SERVIDOR2\CURSOSJB, recm-registrada. Observe que, aps o registro da instncia SERVIDOR2\CURSOSJB, passamos a ter acesso a todos os seus objetos. Isso mostra como fcil usar o SQL Server Management Studio, para administrar, remotamente, todos os servidores SQL Server 2005 da sua rede. Claro que para isso voc deve ter as devidas permisses. Se a conta com a qual voc est acessando um determinado servidor no tiver as permisses necessrias para uma determinada ao (como por exemplo criar um novo Banco de Dados), voc receber uma mensagem de acesso negado, ao tentar executar a ao para a qual voc no tem permisso. 8. Mantenha SQL Server Management Studio aberto, pois continuaremos a utiliz-lo neste tpico. Agora vamos aprender a configurar algumas opes importantes de uma instncia do SQL Server 2005. Estas opes so facilmente acessadas e configuradas com a utilizao do SQL Server Management Studio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000109 Exemplo: Para configurar algumas opes da instncia SERVIDOR\SQL2005, siga os passos indicados a seguir: 1. As opes de configurao de uma instncia so acessadas atravs das propriedades da instncia. Se o SQL Server Management Studio no estiver aberto, abra-o. 2. Para acessar as propriedades da instncia SERVIDOR\SQL2005, d um clique com o boto direito nesta instncia, na janela Object Explorer. No menu de opes que surge d um clique em Properties. Ser aberta a janela de propriedades da instncia, na qual temos onze grupos de opes. As guias esto do lado esquerdo. Clicando em uma das guias, sero exibidas as respectivas opes do lado direito da janela de propriedades. As principais opes que podem ser configuradas em cada guia sero descritas na seqncia. Por padro, vem selecionada a guia General (Geral). 3. Na guia General, conforme indicado na Figura 3.9, exibida uma srie de informaes sobre a instncia SERVIDOR\SQL2005. Observe que para o sistema operacional informada a verso NT 5.0 (2195), que nada mais do que o Windows 2000 Server verso final. Nesta guia tambm podemos configurar se os servios do SQL Server devem ser inicializados automaticamente quando o sistema operacional inicializado. Para isso, basta clicar no boto Configure, que ser aberto o Computer Manager, com a lista de todos os servios do SQL Server 2005, conforme descrito no Captulo 2. Clique na opo Autostart Services. Nesta opo, voc pode marcar os seguintes servios, para que sejam ou no inicializados, automaticamente: SQL Server (MSSQLServer), SQL Server Agent (SQLServerAgent), Microsoft Search (MSFTESQL) e o MSDTC. Figura 3.9 A guia General. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1100000Curso Completo 4. Tambm podemos definir parmetros de inicializao para o SQL Server. Para isso clique na guia Startup Parameters. 5. Na guia Memory, conforme indicado na Figura 3.10, podemos definir qual a memria que estar disponvel para o SQL Server. Existe a opo de configurarmos manualmente estes valores ou permitirmos que o prprio SQL Server configure estes valores. Na maioria das situaes, mais indicada a configurao automtica pelo SQL Server (Dynamic Memory Configuration). Figura 3.10 A guia Memory. A seguir temos uma descrio das principais opes da guia Memory: Dynamically Memory Configuration: Permite que o prprio SQL Server gerencie a utilizao da memria. a opo mais indicada, para a maioria das situaes. Minimum server memory (in MB): Esta opo define qual a quantidade mnima de memria que deve estar disponvel, para que o SQL Server possa ser inicializado. Maximum server memory (in MB): Esta opo determina qual a quantidade mxima de memria que pode ser utilizada pelo SQL Server. Minimum query memory: Determina a quantidade mnima de memria que deve ser alocada para a execuo de consultas dos usurios. O valor padro 1024 KB, ou seja, 1 MB. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000111 Configured values: Esta opo exibe os valores atualmente em uso e permite que voc os altere. Se voc alterar algum valor, clique na opo Running values para verificar se as alteraes j tiveram efeito. Se as alteraes que voc fez ainda no tiverem sido implementadas, voc dever parar e reinicializar o servio SQL Server para a instncia que est sendo configurada. Running values: Exibe os valores atualmente em uso. Estes valores no podem ser alterados enquanto a opo Running values estiver selecionada. 6. Clique na guia Processors. Nesta guia, conforme indicado na Figura 3.11, podemos configurar como o SQL Server utilizar o(s) processador(es) instalado(s) no servidor. Caso tenhamos uma mquina com mltiplos processadores, podemos definir qual o processador (ou processadores) que deve ser utilizado pela instncia do SQL Server que est sendo configurada. Figura 3.11 A guia Processor. A seguir temos uma descrio das principais opes da guia Processor: Boost SQL Server priority on Windows: Podemos definir que a instncia do SQL Server que est sendo configurada rode em um nvel de prioridade mais elevado do que outros processos que esto rodando no servidor. Quanto mais elevado o nvel de prioridade, maior o tempo que o processador dedica para um determinado processo. O valor padro 0, o qual estabelece uma prioridade 7, que a prioridade padro. Se definirmos um valor 1 para esta opo, estaremos definindo uma prioridade 13, tanto no Windows NT 4.0 quanto no Windows 2000 ou Windows Server 2003. Segundo o Books OnLine, somente devemos alterar o valor padro elevando-o, em servidores que so dedicados exclusivamente ao SQL Server. Em servidores que executam outras funes, como um servidor Web proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1120000Curso Completo com o IIS, se elevarmos a prioridade de execuo do SQL Server, iremos penalizar o desempenho dos demais processos, em favor do SQL Server. Ou seja, prejudicaremos o desempenho de outros servios, para melhorar o desempenho do SQL Server 2005. Use Windows fibers: Esta uma opo bastante tcnica, que altera a maneira como o Win- dows executa os processos do SQL Server. Ao definirmos esta opo, solicitamos que uma determinada instncia do SQL Server utilize fibers ao invs de threads. Esta configurao de- fine que seja alocada uma thread por CPU a um fiber para cada usurio concorrente, at o valor definido no campo Maximum worker threads. Esta configurao somente ter efeito aps a reinicializao do SQL Server. Para maiores informaes sobre threads, fibers e processos, consulte o site msdn.microsoft.com. Configured values: Esta opo exibe os valores atualmente em uso e permite que voc os altere. Se voc alterar algum valor, clique na opo Running values para verificar se as alteraes j tiveram efeito. Se as alteraes que voc fez ainda no tiverem sido implementadas, voc dever parar e reinicializar o servio SQL Server para a instncia que est sendo configurada. Running values: Exibe os valores atualmente em uso. Estes valores no podem ser alterados enquanto a opo Running values estiver selecionada. 7. Clique na guia Security. Nesta guia, conforme indicado na Figura 3.12, podemos configurar qual o tipo de segurana que iremos utilizar Windows Authentication Mode ou SQL Server and Windows Authentication Mode. Aprenderemos mais sobre segurana no SQL Server, no Captulo 6. Tambm podemos definir os nveis de auditoria desejados. Outra opo, que pode ser configurada nesta guia, a conta que ser utilizada para a inicializao do servio SQL Server, relativo instncia que est sendo configurada. Figura 3.12 A guia Security. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000113 8. Clique na guia Connections. Nesta guia, conforme indicado na Figura 3.13, podemos definir alguns parmetros importantes, os quais definem a maneira como as conexes com o servidor SQL sero tratadas. Por exemplo, no campo Maximum concurrent user connections podemos definir o nmero mximo de conexes de usurio suportadas pela instncia do SQL Server, que est sendo configurada. Um valor 0 significa um nmero ilimitado de conexes. A opo Remote query time-out define o tempo mximo que uma consulta do usurio pode ficar rodando. Limitar este valor importante, pois impede que consultas com problemas fiquem rodando indefinidamente e ocupando recursos do servidor, o que pode fazer com que o desempenho do servidor como um todo seja prejudicado (incluindo o desempenho de todas as demais instncias instaladas no mesmo servidor). Este valor definido em segundos. Um valor 0 significa tempo ilimitado, sendo que, conforme foi dito, esta no uma boa opo. Figura 3.13 A guia Connections. 9. Na guia Database Settings, conforme indicado na Figura 3.14, podemos definir qual o fator de preenchimento das pginas dos ndices. Conforme veremos no Captulo 4, o fator de preenchimento de pginas de um ndice influencia no desempenho das consultas. Tambm podemos definir qual o diretrio padro onde sero criados os arquivos de dados para novos Bancos de Dados Default data directory e o diretrio padro para os arquivos de log de cada Banco de Dados Default log directory. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1140000Curso Completo Figura 3.14 A guia Database Settings. 10. Clique na guia Misc Server Settings. Nesta guia, conforme indicado na Figura 3.15, podemos definir qual o idioma que ser utilizado para as mensagens de erro enviadas pelo SQL Server. Tambm podemos definir algumas configuraes mais avanadas como a utilizao de triggers aninhadas Allow triggers fired other triggers. Veremos mais sobre triggers no Captulo 10. Tambm podemos definir como o SQL Server ir interpretar uma data que for digitada com apenas dois dgitos no ano Interpre a two-digit year as falling between. 11. Clique na guia Advanced. Nesta guia, conforme indicado na Figura 3.16, podemos definir opes tais como o tempo limite para logon remoto (Remote Login Timeout), o tamanho do pacote de rede (Network Packet Size) e assim por diante. 12. Clique na guia Permissions. Nesta guia, conforme indicado na Figura 3.17, podemos definir uma srie de permisses tais como alterar Bancos de Dados, alterar credenciais e outras. Veremos mais detalhes sobre permisses e segurana no Captulo 6. 13. Neste momento no iremos alterar nenhuma das configuraes padro desta instncia do SQL Server 2005. D um clique no boto Cancelar para fechar a janela de propriedades da instncia SERVIDOR\SQL2005. Para completar a nossa introduo ao SQL Server Management Studio, iremos acessar a opo Data- bases da instncia SERVIDOR\SQL2005 e verificar quais Bancos de Dados so criados quando da instalao de uma instncia do SQL Server. Veremos que existe um Banco de Dados que proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000115 imprescindvel ao funcionamento do SQL Server o Banco de Dados master, o qual est dentro da opo System Databases e outros que so Bancos de Dados de exemplo. Alm dos que so criados automaticamente, tambm poderemos criar os nossos prprios Bancos de Dados, conforme aprenderemos ainda neste captulo. Depois iremos verificar quais os elementos que esto disponveis dentro de um determinado Banco de Dados. Figura 3.15 A guia Misc Server Settings. Figura 3.16 A guia Advanced. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1160000Curso Completo Figura 3.17 A guia Permissions. Ao encerrarmos este tpico, o amigo leitor dever ter uma viso geral do funcionamento e das possibilidades oferecidas pelo SQL Server Management Studio. No restante deste livro, voc ir executar uma srie de tarefas e exemplos prticos, os quais so realizados utilizando-se o SQL Server Management Studio. Exemplo: Verificando os Bancos de Dados instalados por padro, em uma instncia do SQL Server 2005, siga os passos indicados a seguir: 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o. 2. Clique no sinal de mais ao lado da instncia SERVIDOR\SQL2005 (ou da instncia instalada no seu computador, o qual voc est usando para acompanhar este captulo), na janela Object Explorer, para expandi-la. Sero exibidas as diversas categorias de objetos que compem uma instncia do SQL Server 2005. 3. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data- bases para expandi-la. Abaixo de Databases exibida uma lista com os Bancos de Dados disponveis na instncia SERVIDOR\SQL2005, conforme pode ser visto na Figura 3.18. 4. D um clique na opo Databases. No painel da direita, sero exibidas informaes sobre os Bancos de Dados do usurio, tal como a ltima vez em que foram feitos o backup do Banco de Dados e o backup do log de transaes. No SQL Server 2005, os Bancos de Dados so divididos em categorias, tais como System Databases, Databases Snapshots e depois os Bancos de Dados criados pelo usurio. Clique no sinal de +, ao lado da opo System Databases, para expandi-la. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000117 Figura 3.18 Os Bancos de Dados criados durante a instalao. A seguir apresento uma breve descrio de cada um destes Bancos de Dados: master database: Este o principal Banco de Dados para qualquer instncia de qualquer servidor SQL. neste Banco de Dados que esto armazenadas informaes de vital importncia para o funcionamento do SQL Server. Nas tabelas do Banco de Dados master, temos informaes sobre a inicializao do SQL Server, sobre a existncia de outros Bancos de Dados, sobre as contas disponveis para logon, sobre segurana, etc. Se, por algum motivo, o Banco de Dados master tiver sido corrompido e no pudermos recuper-lo a partir de um backup recente, simplesmente no poderemos mais utilizar o servidor SQL e nem ter acesso aos seus dados. Isso demonstra bem a importncia deste Banco de Dados. model database: utilizado como um modelo para a criao de novos Bancos de Dados, isto , sempre que criarmos um novo Banco de Dados, este ter as definies padres iguais s do Banco de Dados model. Este Banco de Dados no pode ser excludo. Se desejarmos que todo novo Banco de Dados, ao ser criado, j possua alguma tabela ou alguma outra configurao, basta adicionar estas caractersticas ao model. Ao criarmos um novo Banco de Dados, este herdar todas as caractersticas do Banco de Dados model. database msdb: Este Banco de Dados necessrio ao funcionamento do servio de agendamento de tarefas SQL Server Agent. Embora possamos acessar toda a informao contida nas tabelas Ser exibida a lista de Bancos de Dados chamados de Bancos de Dados do sistema. Estes bancos so fundamentais ao funcionamento do SQL Server 2005. De uma maneira mais simples, diramos que so para uso pelo prprio SQL Server 2005. Por exemplo, o Banco de Dados master o principal Banco de Dados de uma instncia do SQL Server 2005. Nele esto tabelas com a lista de todos os Bancos de Dados existentes na instncia, com a lista de cada tabela de cada banco, a lista de campos de cada tabela de cada banco e assim por diante. Se, por algum motivo, o Banco de Dados master for corrompido, a instncia do SQL Server 2005 simplesmente deixa de funcionar. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1180000Curso Completo do Banco de Dados msdb, no aconselhvel modificar o seu contedo diretamente. Devemos deixar toda e qualquer modificao para o servio SQL Server Agent. tempdb database: Este Banco de Dados utilizado para operaes temporrias. Por exemplo, o resultado parcial de uma consulta armazenado para ordenao. Somente depois de ordenado que o resultado seria enviado de volta para o cliente que fez a solicitao. Este Banco de Dados recriado, toda vez que o SQL Server inicializado. As operaes realizadas neste Banco de Dados tambm so registradas no log de transaes, para que os dados das tabelas envolvidas na operao possam ser restaurados ao seu estado original, caso algum problema acontea durante a operao. O tamanho do tempdb pode aumentar automaticamente, conforme a necessidade. Este controle feito pelo prprio SQL Server. AdventureWorks: Este Banco de Dados, no mais na lista de System Databases, mas sim na lista geral de Bancos de Dados, um Banco de Dados de exemplo, o qual disponibilizado com o SQL Server. interessante o estudo dos exemplos apresentados neste Banco de Dados, pois muitos aspectos interessantes do SQL Server 2005 podem ser estudados atravs dos exemplos presentes neste banco. Neste livro utilizarei este Banco de Dados para salientar alguns aspectos de utilizao do SQL Server. Embora este Banco de Dados possa ser eliminado, sugiro que voc o mantenha, pois serve como um boa fonte de estudos. 5. Mantenha o SQL Server Management Studio aberto. No prximo exemplo iremos a um nvel adiante, verificando quais elementos podem existir em um Banco de Dados do SQL Server 2005. Exemplo: Para verificar quais os elementos que fazem parte de um Banco de Dados: 1. D um clique no sinal de mais ao lado do Banco de Dados AdventureWorks para expandi-lo e depois d um clique em AdventureWorks para selecion-lo. Na Figura 3.19, podemos ver os vrios elementos que fazem parte de um Banco de Dados. Ao longo deste livro, voc aprender a criar, alterar e gerenciar estes elementos. A seguir, uma breve descrio dos principais elementos: Tables: Ao selecionarmos esta opo sero exibidas todas as tabelas do Banco de Dados. Tambm podemos utilizar esta opo para criar uma nova tabela, para importar dados de uma outra fonte para uma tabela do SQL Server ou exportar dados de uma ou mais tabelas do SQL Server para outro formato de dados. Para acessar os dados de uma tabela basta clicar com o boto direito sobre o nome da tabela. No menu de opes que surge aponte para Script Table as -> SELECT To -> New Query Editor Window. Ser aberta uma janela do Query Editor, com o cdigo T-SQL para retornar os registros da tabela, na qual voc clicou com o boto direito do mouse. Esta janela a substituta do Query Analyzer, o qual era um utilitrio separado no SQL Server 2000. No SQL Server 2005, todas as funes do Query Analyzer so executadas diretamente dentro do SQL Server Management Studio, atravs desta janela especfica para execuo de comandos. Para executar o comando basta clicar no boto Execute ou pressionar Ctrl+E. O comando ser executado e os registros da tabela sero exibidos, conforme exemplo da Figura 3.20. Embora possamos acessar os dados de uma tabela atravs do SQL Server Management Studio, este no um procedimento comum. Conforme descrito anteriormente, o SQL Server 2005 um servidor de Banco de Dados, no qual ficam armazenadas as informaes, sendo que o SQL Server oferece uma srie de funcionalidades para gerenciar e manter em segurana estes proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000119 Figura 3.19 Os elementos de um Banco de Dados. Views: Nesta opo so exibidas as consultas que foram salvas no Banco de Dados. Uma consulta criada atravs da definio de uma instruo que utiliza a linguagem SQL que, no caso do SQL Server 2005, chamada de T-SQL. Podemos ter acesso instruo que define uma view, simplesmente clicando com o boto direito do mouse sobre a view e, no menu que surge, clicando em Modifty View. Programmability -> Stored Procedures: Um stored procedure um grupo de comandos que foram gravados no Banco de Dados. Um stored procedure pode ser chamado dentro de um programa do cliente. Parmetros de entrada podem ser passados para um stored procedure, sendo que este pode retornar os seus resultados utilizando parmetros de sada. Os comandos de um stored procedure podem ser compilados e armazenados em memria pelo Servidor SQL. Podemos, por exemplo, criar stored procedures que executam as consultas mais utilizadas; pelo fato de os comandos serem compilados e armazenados em memria, que acelera a execuo da consulta, acaba gerando um desempenho melhor para a aplicao do cliente. Para ter acesso aos comandos de um stored procedure basta clicar com o boto direito sobre o stored proce- dure e selecionar Modify no menu de opes que surge. Na Figura 3.21, temos o exemplo dos comandos de um stored procedure. No Captulo 10 aprenderemos um pouco mais sobre a linguagem para a criao de stored procedures e criaremos alguns exemplos. dados. Porm para acessar ou alterar os dados, normalmente utilizamos aplicaes Cliente, as quais podem ser desde um programa desenvolvido em Visual Basic e utilizando a tradicional arquitetura Cliente/Servidor at uma moderna aplicao Web, desenvolvida em ASP.NET, utilizando uma arquitetura em n camadas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1200000Curso Completo Figura 3.20 Dados da tabela EmployeeDepartmentHistory. Figura 3.21 Os comandos de um stored procedure. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000121 As opes Security -> Users e Security -> Roles: Estas opes esto relacionadas com a segurana de acesso aos elementos de um Banco de Dados. No Captulo 6 trabalharemos com segurana no SQL Server 2005. Programmability -> Rules: A criao de rules foi mantida no SQL Server 2005 por questes de compatibilidade. Com a utilizao de rules, podemos definir regras para os valores que podem ser aceitos em um determinado campo de uma tabela. Por exemplo, podemos definir que o campo ValorDoFinanciamento da tabela emprstimos deve ter um valor entre R$ 1.500,00 e R$ 10.000,00. No SQL Server 2005 podemos utilizar o mecanismo de CHECK Constraints, o qual mais eficiente do que a utilizao de rules. No Captulo 10 aprenderemos o funcionamento e tambm aprenderemos a criar CHECK Constraints. Programmability -> Defaults: A criao de defaults permite que seja definido um valor padro para um campo de uma tabela, caso o campo no seja preenchido pelo usurio. No Captulo 10, aprenderemos a criar defaults. 2. SQL Server Management Studio. Agora finalizamos o nosso passeio inicial pelo SQL Server Management Studio. J sabemos da existncia dos vrios elementos que fazem parte de um servidor SQL Server, bem como os diversos elementos que compem um Banco de Dados. Agora estamos aptos a comear a trabalhar com estes elementos. O primeiro passo aprendermos sobre a criao de novos Bancos de Dados. Antes de partirmos para a criao de Bancos de Dados no SQL Server 2005, vamos revisar alguns conceitos importantes sobre os tipos de volumes que podem ser criados no Windows 2000 Server e no Windows Server 2003. Aprenderemos conceitos como RAID-0, RAID-1 e RAID-5, bem como a forma de implement-los no Windows 2000 Server. Mas este assunto para o prximo item. FUNDAMENTOS EM: ARMAZENAMENTO BSICO X ARMAZENAMENTO DINMICO PR-REQUISITOS Noes do sistema operacional Windows. METODOLOGIA Apresentao dos diferentes tipos de armazenamento no Windows 2000. O Windows 2000 Server e tambm o Windows Server 2003 apresentam algumas melhorias no gerenciamento de discos, parties e volumes, em relao s verses anteriores. Um conceito importante que foi introduzido o conceito de armazenamento dinmico. Em seguida veremos a diferena entre o armazenamento dinmico e o armazenamento bsico, o qual o padro utilizado pelas verses anteriores do Windows. Neste item tratarei da criao de volumes redundantes atravs de software. Tambm existe a possibilidade da criao de volumes redundantes atravs da utilizao das chamadas Placas de RAID, as quais so projetadas especificamente para este fim. Com o Windows 2000 Server e o Windows Server 2003, podemos implementar RAID em software ou em hardware. Se voc estiver tendo problemas com o proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1220000Curso Completo desempenho, a opo de RAID por hardware pode ajudar, embora a implementao seja mais onerosa do que a por software. ARMAZENAMENTO BSICO E ARMAZENAMENTO DINMICO Utilizarei a palavra disco como referncia a um disco rgido. Ento, sempre que voc encontrar uma referncia a disco, entenda como sendo um disco rgido e no um disquete ou outro tipo de mdia. Antes que seja possvel utilizar um novo disco no Windows, temos que realizar algumas operaes sobre o disco. Um dos aspectos que temos que definir o tipo de armazenamento que iremos utilizar neste disco. No Windows podemos optar entre dois tipos de armazenamento: bsico ou dinmico. Abaixo temos detalhes sobre cada um dos tipos de armazenamento. Armazenamento bsico: o tipo de armazenamento que vem sendo utilizado desde a poca do DOS. utilizado por sistemas como o Windows 95, Windows 98, Windows NT Server 4.0 e Windows NT Workstation 4.0. o tipo padro no Windows 2000 Server, Windows Server 2003 e no Windows XP, isto , todos os discos so criados com armazenamento bsico. Caso seja necessrio, o administrador deve transform-los para armazenamento dinmico sem perda de dados. Um disco com armazenamento bsico chamado de disco bsico. importante salientar que um disco somente pode ser configurado para um tipo de armazenamento. No podemos, por exemplo, ter uma porcentagem do disco com armazenamento bsico e o restante com armazenamento dinmico. No armazenamento bsico, o disco dividido em parties. Uma partio uma parte do disco que se comporta como se fosse uma unidade de armazenamento separada. Por exemplo, em um disco de 4 GB, posso criar duas parties de 2 GB, que na prtica se comportam como se fossem dois discos de 2 GB independentes. Em um disco com armazenamento bsico, podemos ter parties primrias, parties estendidas e drivers lgicos. Vamos ver detalhes sobre estes elementos. Partio primria: O Windows 2000 Server pode utilizar uma partio primria para inicializar o computador, sendo que somente parties primrias podem ser marcadas como ativas. Uma partio ativa onde o computador procura pelos arquivos de inicializao para efetuar o processo de boot. Um disco somente pode ter uma partio marcada como ativa. Um disco bsico pode conter no mximo quatro parties primrias. Considere o exemplo da Figura 3.22, onde um disco de 6 GB foi dividido em quatro parties primrias. Duas de 2 GB e duas de 1 GB. Observe que, para cada partio primria, atribuda uma letra de unidade C:, D: e assim por diante. Partio estendida: Podemos ter uma nica partio estendida em um disco bsico. Parties estendidas so criadas a partir do espao livre em um determinado disco. Espao livre o espao que no est sendo ocupado por nenhuma outra partio. Por isso aconselhvel, quando da criao de uma partio estendida, que todo o espao livre seja ocupado. Ns dividimos a partio estendida em segmentos, sendo que cada segmento representar um drive lgico. Devemos atribuir uma letra para cada driver lgico e format-los com um sistema de arquivos FAT, FAT32, NTFS ou NTFS 5. Com o uso de uma partio estendida e drivers lgicos, podemos superar o limite de quatro unidades por disco, limite que imposto quando utilizamos apenas parties primrias. Considere o exemplo da Figura 3.23, onde temos um disco com trs parties primrias (C:, D: e E:), e um volume estendido, no qual foram criados dois drivers lgicos (F: e G:). proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000123 Figura 3.22 No mximo podemos ter quatro parties primrias. Figura 3.23 Utilizando parties estendidas. Para o Windows 2000 Server ou Windows Server 2003 existem duas parties que so muito importantes. A Partio do Sistema System Partition a partio ativa que contm os arquivos necessrios para o processo de boot do Windows 2000 Server. Normalmente a primeira proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1240000Curso Completo partio ativa do primeiro disco. A Partio de Boot Boot partition uma partio primria, ou um driver lgico onde os arquivos do Windows 2000 Server esto instalados, normalmente em um diretrio chamado Winnt. Muitas vezes estes conceitos causam uma certa confuso, porque podemos dizer que a Partio do sistema contm os arquivos de boot e a Partio de boot contm os arquivos do sistema operacional. Normalmente, a partio do sistema e a Partio de boot esto na mesma partio, tipicamente no drive C:. Dependendo da maneira com que as parties so criadas ou combinadas, podemos ter diversos tipos de parties, conforme indicado abaixo: Partio do Sistema: Contm os arquivos necessrios para o boot do Windows 2000 Server ou Windows Server 2003. Partio de Boot: Contm os arquivos do Windows 2000 Server ou Windows Server 2003, tipicamente em uma pasta Winnt. Volume set: Neste tipo de partio, combinamos o espao de duas ou mais parties, no mesmo disco ou em discos diferentes, de tal forma que aparecem para o Windows como uma nica unidade. Por exemplo, posso combinar uma partio de 1 GB com outra de 4 GB, para formar uma unidade de 5 GB. O Windows preenche todo o espao da primeira partio, depois o da segunda e assim por diante. Se uma das parties apresentar problemas, todo o Volume set ser perdido. Posso juntar parties de tamanhos diferentes. No pode conter a Partio do sistema, nem a Partio de boot. No uma boa opo utilizarmos um volume set para armazenar os Bancos de Dados do SQL Server 2005. O volume set no oferece melhorias no desempenho nem tolerncia a falhas. Stripe set: Neste tipo de partio combinamos espaos iguais de dois ou mais discos, no podendo utilizar duas parties do mesmo disco. Podemos utilizar at 32 parties. Os dados so gravados em todas as parties de uma maneira uniforme, isto , o espao de cada partio vai sendo preenchido medida que os dados so gravados. No apresenta tolerncia a falhas, pois, se uma das parties apresentar problemas, todo o Stripe set ser perdido. A nica vantagem do Stripe set que o desempenho melhora devido s gravaes simultneas em mais de um disco. No pode conter a Partio do sistema, nem a Partio de boot. Mirror set RAID 1: Permite a duplicao de qualquer partio. Com isso medida que os dados vo sendo gravados, o Windows, automaticamente, vai duplicando os dados na partio espelhada. Pode conter a Partio do sistema e tambm a Partio de boot. O maior inconveniente que existe um comprometimento de 50% do espao em disco. Por exemplo, para fazer o espelhamento de uma partio de 2 GB, estaremos ocupando 4 GB em disco. Apresenta tolerncia a falhas, pois se uma das parties espelhadas falhar, a outra continua funcionando. Podemos substituir o disco defeituoso e restabelecer o espelhamento. Este tipo de partio s est disponvel nas verses de servidor do Windows, tais como o Windows NT Server, Windows 2000 Server e Windows Server 2003. Stripe set com paridade RAID 5: Um stripe set com paridade um stripe set com tolerncia a falhas. Junto com os dados, o Windows grava informaes de paridade (obtidas a partir de clculos matemticos) nos vrios discos que formam o stripe set com paridade. Com isso, no evento de falha de um dos discos, toda a informao do disco com problemas pode ser reconstituda a partir das informaes de paridade dos outros discos. O disco defeituoso pode proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000125 ser substitudo, e a informao nele contida, recriada a partir das informaes de paridade, contidas nos demais discos do RAID-5. Para que possamos construir um volume deste tipo, um mnimo de trs discos necessrio. Porm, se dois discos falharem ao mesmo tempo, no ser possvel recuperar a informao. Tambm existem implementaes de RAID-5 em hardware, que so mais rpidas, porm mais caras. Esta uma boa opo para armazenamento dos Bancos de Dados do SQL Server 2005. Este tipo de partio s est disponvel nas verses de servidor do Windows, tais como o Windows NT Server, Windows 2000 Server e Windows Server 2003. Armazenamento dinmico: No armazenamento dinmico, que somente suportado pelo Windows 2000 Server, Windows XP e Windows Server 2003, criada uma nica partio com todo o espao do disco. Um disco configurado com armazenamento dinmico chamado de Disco dinmico. Um disco dinmico pode ser dividido em volumes. Um volume pode conter uma ou mais partes de um ou mais discos. Tambm possvel transformar um disco bsico em um disco dinmico, sem perda dos dados. Podemos ter diferentes tipos de volumes. O tipo de volume a ser utilizado determinado por fatores tais como espao disponvel, performance e tolerncia a falhas. A tolerncia a falhas diz respeito possibilidade de o Windows 2000 Server manter as informaes, mesmo no evento de comprometimento de um disco ou volume. Temos os seguintes tipos de volume: Volume simples: formado por espao de um nico disco, e alm disso no fornece nenhum mecanismo de tolerncia a falhas, isto , se houver algum problema com o disco onde est o volume, toda a informao ser perdida. Volume expandido: Pode incluir espao de at 32 diferentes discos. O Windows comea a preencher o espao do primeiro disco e, aps este estar esgotado, passa para o espao disponvel no segundo disco e assim por diante. No fornece nenhum mecanismo de tolerncia a falhas. Se um dos discos que formam o volume apresentar problemas, todo o volume estar comprometido. Tambm no oferece melhoria no desempenho, uma vez que a informao somente gravada ou lida em um disco ao mesmo tempo. No uma boa opo para armazenamento dos Bancos de Dados do SQL Server 2005, principalmente porque no oferece melhorias no desempenho. Volume espelhado (Mirrored volume) ou RAID-1: formado por duas cpias idnticas do mesmo volume, sendo que as cpias so mantidas em discos separados e sincronizadas, em tempo real, pelo Windows. Volumes espelhados oferecem proteo contra falha, uma vez que, se um dos discos falhar, a informao do outro disco pode ser utilizada. O espelhamento pode ser desfeito, o disco defeituoso substitudo, e o espelhamento pode ser refeito. O nico inconveniente que, devido duplicidade das informaes, o espao de armazenamento necessrio exatamente o dobro. Se a performance no for um fator determinante uma opo a ser analisada para o armazenamento dos Bancos de Dados do SQL Server 2005. Striped Volume ou RAID-0: Podem ser combinadas reas de espao livre de at 32 discos. No apresenta nenhum mecanismo de tolerncia a falhas, pois se um dos discos do striped volume falhar, toda a informao estar comprometida. Uma das vantagens que o desempenho melhora, uma vez que as informaes so gravadas nos diversos discos ao mesmo tempo. Volume do tipo RAID-5: Um volume do tipo RAID-5 um striped volume, porm com tolerncia a falhas. Junto com os dados, o Windows grava informaes de paridade (obtidas a partir de clculos matemticos) nos vrios discos que formam o RAID-5. Com isso, no proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1260000Curso Completo N O T A evento de falha de um dos discos, toda a informao do disco com problemas pode ser reconstituda a partir das informaes de paridade dos outros discos. O disco defeituoso pode ser substitudo e a informao nele contida recriada a partir da informao de paridade nos demais discos do RAID-5. Para que possamos construir um RAID-5, um mnimo de trs discos necessrio. Porm se dois discos falharem, ao mesmo tempo, no ser possvel recuperar a informao. Para informaes sobre como criar e gerenciar os diversos tipos de volumes apresentados neste item, consulte a Unidade VIII, do livro Microsoft Windows 2000 Server Curso Bsico & Rpido, da editora Axcel Books, j citado anteriormente, disponvel para compra no formato de e-book, em: http://www.juliobattisti.com.br/cursos FUNDAMENTOS EM: A ESTRUTURA DE ARMAZENAMENTO DOS BANCOS DE DADOS NO SQL SERVER 2005 PR-REQUISITOS No h. METODOLOGIA Apresentao dos elementos que compem um Banco de Dados do SQL Server 2005. Um Banco de Dados do SQL Server 2005 formado por um conjunto de arquivos. Cada Banco de Dados contm dois tipos de arquivos: arquivos de dados e arquivos de log. Os arquivos de dados so utilizados para armazenar os diversos elementos de um Banco de Dados, como tabelas, views, triggers, stored procedures, etc. Os arquivos de log armazenam o chamado log de transaes. O Log de transaes um registro das operaes que so efetuadas nos dados do Banco de Dados. Veremos detalhes sobre o log mais adiante. Os arquivos de dados podem ser de dois tipos: arquivos primrios e secundrios. Todo Banco de Dados deve possuir pelo menos um arquivo primrio e um arquivo de log. O arquivo primrio contm as informaes necessrias para inicializao do Banco de Dados e utilizado para armazenar as chamadas tabelas do sistema, que so tabelas necessrias ao funcionamento do Banco de Dados. As tabelas criadas pelos usurios podem ser armazenadas tambm no arquivo primrio ou em arquivos secundrios. De acordo com a necessidade, podemos adicionar um ou mais arquivos secundrios de dados. Um arquivo, quer seja de dados, quer seja de log, somente pode ser utilizado por um Banco de Dados, isto , no podemos ter arquivos compartilhados por mais do que um Banco de Dados. Quando estamos falando de arquivos de dados (primrios ou secundrios) e arquivos de log, estamos nos referindo a arquivos do sistema operacional como por exemplo: C:\livrosql\contas\principal.mdf. Este seria um exemplo de um arquivo de dados primrio, que, conforme detalharemos logo em seguida, possui a extenso .mdf. Por exemplo, o Banco de Dados master formado, por padro, por um arquivo primrio e um de log com os seguintes nomes: Arquivo de dados primrio -> master.mdf Arquivo de log -> master.ldf proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000127 N O T A Vamos ver em detalhes os tipos de arquivos que fazem parte de um Banco de Dados: Arquivo de dados primrio (Primary data file): Todo Banco de Dados deve conter um, e somente um, arquivo de dados primrio. Este arquivo possui a extenso .mdf. Neste arquivo ficam informaes necessrias inicializao do Banco de Dados, bem como informaes sobre a localizao dos outros arquivos que fazem parte do Banco de Dados. Esta informao tambm armazenada nas tabelas do Banco de Dados master, j descrito anteriormente. Se, por algum motivo, o arquivo de dados primrio for corrompido, e no puder ser restaurado, perderemos todo o Banco de Dados, mesmo que os demais arquivos estejam intactos. Perder o arquivo primrio como perder o mapa para as demais informaes do Banco de Dados. Arquivo de dados secundrio (Secondary data files): Em um Banco de Dados podemos ter um ou mais arquivos de dados secundrio. No somos obrigados a criar arquivos de dados secundrios. medida que o Banco de Dados vai crescendo podemos utilizar arquivos de dados secundrios para gravar a informao em diferentes volumes. Esta tcnica pode ajudar no desempenho do Banco de Dados como um todo. A extenso destes arquivos secundrios .ndf. Arquivos do log de transaes (Transaction log files): Nestes arquivos fica gravado todo o registro das operaes realizadas no Banco de Dados, o qual deve ter pelo menos um arquivo de log. Conforme a necessidade, arquivos de log, adicionais, podem ser criados. A extenso para os arquivos de log .ldf. O tamanho mximo para um arquivo de dados (quer seja primrio ou secundrio) 32 TB (Tera bytes). Para um arquivo de log, o tamanho mximo 32 TB tambm, tanto nas verses de 32 bits quanto de 64 bits do SQL Server 2005. O nmero mximo de arquivos por Banco de Dados de 32767. Com o SQL Server 2005 no obrigatria a utilizao das extenses .mdf, .ndf e .ldf para arquivos primrios, secundrios e de log, respectivamente. Esta apenas uma recomendao para facilitar a identificao do tipo do arquivo. Arquivos de dados e de log podem ser gravados tanto em parties formatadas com FAT como NTFS, porm a partio (no caso de NTFS) no pode estar compactada. ENTENDENDO O CONCEITO DE FILEGROUPS No SQL Server 2005 (na verdade a partir do SQL Server 7.0), temos o conceito de Filegroup. Este conceito muitas vezes no utilizado na prtica por falta de entendimento do que ele significa, como pode ser utilizado e quais as vantagens em utilizar filegroups. A utilizao de um filegroup permite que os arquivos de um Banco de Dados sejam agrupados para facilitar o gerenciamento, bem como a distribuio ao longo de volumes redundantes e de melhor desempenho (RAID-0, RAID-1, etc.). A utilizao de filegroup pode ser um auxiliar valioso na melhoria do desempenho de um Banco de Dados, ao permitir que o Banco de Dados (atravs dos seus diversos arquivos) seja criado em mltiplos discos, mltiplas controladoras ou em sistemas do tipo RAID, quer seja RAID por software ou por hardware, conforme descrito no item anterior. Tambm podemos fazer com que uma tabela ou ndice seja criada em um disco especfico, simplesmente associando a tabela ou ndice com um filegroup. Isto nos abre maiores possibilidades. Por exemplo, podemos deslocar uma proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1280000Curso Completo N O T A tabela que muito consultada para um sistema de discos de melhor desempenho. Um arquivo pode estar associado com um nico filegroup. O uso de filegroups tambm pode ser empregado para facilitar o gerenciamento das rotinas de backup/restore, pois ao fazer o backup de um filegroup, todos os arquivos contidos no filegroup mesmo que estejam em discos e volumes separados sero includos no backup. Os arquivos de log no fazem parte de nenhum filegroup, sendo que estes so gerenciados separadamente pelo Banco de Dados. Podemos ter trs tipos de filegroups. A seguir descrevemos os trs tipos existentes: Primary filegroup: o filegroup padro. Contm todos os arquivos de dados primrios (.mdf) e qualquer arquivo que no tenha sido, explicitamente, atribudo a outro filegroup. Todo Banco de Dados possui as chamadas tabelas de sistema, as quais possuem informaes sobre os usurios autorizados a acessar os objetos do Banco de Dados e o nvel de permisso de acesso de cada um. As tabelas de sistema so criadas automaticamente pelo SQL Server, quando criamos o Banco de Dados. Estas tabelas ficam gravadas no arquivo de dados primrio (.mdf) o qual, por padro, associado com o Primary filegroup (o qual , por padro, o default filegroup). User-defined filegroups: qualquer filegroup criado pelo usurio durante o processo de criao ou alterao de uma tabela. Conforme descrito anteriormente, podemos criar tabelas ou ndices associados com um filegroup criado pelo usurio. Default filegroup: Toda tabela ou ndice ao ser criado ser associado com o filegroup padro, a menos que seja explicitamente associado com um filegroup definido pelo usurio. O filegroup padro, por definio, o Primary filegroup. Cada Banco de Dados possui o seu default filegroup, com o qual associado. Conforme veremos ainda neste captulo, existem comandos T-SQL que permitem alterar o filegroup associado com um determinado Banco de Dados. A criao de filegroups adicionais no obrigatria e, para muitas aplicaes, todos os dados podem ser colocados no Primary filegroup. Porm em situaes mais complexas, onde o desempenho precisa ser otimizado o mximo possvel, a utilizao de filegroups pode ser um auxiliar valioso para distribuir os dados entre diferentes discos, controladores ou sistemas de RAID. Por exemplo, a colocao de uma tabela que est sendo intensamente acessada, em um RAID de hardware, de vrios discos, pode melhorar bastante o desempenho do sistema. Todos ns sabemos que uma imagem vale por mil palavras. Ento vamos apresentar alguns exemplos de utilizao de filegroups. Considere o exemplo apresentado na Figura 3.24. Neste exemplo, temos apenas o filegroup padro (Primary filegroup) e todos os arquivos do Banco de Dados em um nico disco. Esta situao apresenta um desempenho bastante insatisfatrio para grandes Bancos de Dados, os quais sero utilizados por um grande nmero de usurios. Um nico disco, uma nica controladora = desempenho nada satisfatrio se o volume de dados e o nmero de usurios forem grandes. Agora vamos fazer algumas modificaes. Iremos adicionar mais trs discos. Vamos criar mais dois filegroups, alm do Primary filegroup: Filegroup1 e Filegroup2. Vamos deslocar os arquivos secundrios para estes filegroups em outros discos. Tambm iremos deslocar o arquivo de log para um quarto disco, proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000129 conforme indicado na Figura 3.25. Neste caso, estamos melhorando consideravelmente o desempenho do nosso sistema. Figura 3.24 Uma situao com possveis problemas no desempenho. Figura 3.25 Melhorando o desempenho do nosso Banco de Dados. Poderamos otimizar ainda mais o desempenho do nosso sistema de discos. Por exemplo, ao invs de termos simplesmente Disco 2 e Disco 3, estes poderiam ser sistemas de RAID-5 com controladoras diferentes, o que otimizaria ainda mais o desempenho. A seguir, apresento alguns detalhes importantes, os quais voc no pode esquecer quando for definir a sua estratgia de filegroups: Um arquivo somente pode fazer parte de um nico filegroup. Informaes de dados e do log de transaes no podem fazer parte do mesmo arquivo. Por isso, os arquivos de log sempre so gerenciados separadamente dos arquivos de dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1300000Curso Completo N O T A Os arquivos de log no podem fazer parte de um filegroup e so gerenciados separadamente pelo SQL Server 2005. At neste momento tratamos apenas da teoria sobre a estrutura de um Banco de Dados no SQL Server 2005 e de filegroups. Aprenderemos, no prximo tpico, a criar Bancos de Dados, a criar arquivos secundrios (Secondary data files) e a criar filegroups. Conforme descrito anteriormente, aprenderemos a realizar estas operaes utilizando o SQL Server Management Studio. Tambm aprenderemos a executar estas tarefas, usando comandos T-SQL, na janela para execuo de comandos, dentro do prprio SQL Server Management Studio (a qual substitui o Query Analyzer), o qual era um aplicativo separado, no SQL Server 2000. FUNDAMENTOS EM: CRIAR BANCOS DE DADOS NO SQL SERVER 2005 COM O SQL SERVER MANAGEMENT STUDIO PR-REQUISITOS Noes do SQL Server 2005. Utilizao dos consoles baseados no MMC. Conhecer os opes que fazem parte de uma instncia do SQL Server 2005. METODOLOGIA Apresentao dos passos utilizados para a criao de Bancos de Dados. TCNICA Criao de Bancos de Dados com o SQL Server Management Studio. Antes de criarmos um novo Banco de Dados quero fazer um pequeno parnteses sobre segurana. Voc deve ter notado que, sempre que abrimos o SQL Server Management Studio, tivemos acesso a todos os elementos do SQL Server 2005. Nunca foi solicitado que digitssemos um nome de usurio e senha. Isto acontece porque, ao instalarmos o SQL Server 2005 no Captulo 2, optamos pela segurana integrada com o Windows. Como estou fazendo o logon com a conta Administrator, esta possui poderes totais sobre todos os elementos do servidor SQL Server, quando estamos utilizando a segurana integrada com o Windows. Falaremos detalhadamente sobre segurana no Captulo 6. Agora chega de conversa e vamos criao de um Banco de Dados de exemplo. A seguir, temos os detalhes sobre o Banco de Dados que iremos criar: Nome no SQL Server: Exemplo-1 Arquivo primrio: C:\livrosql\exemplo1\exemplo1-prim.mdf Arquivo secundrio: C:\livrosql\exemplo1\exemplo1-sec1.ndf Arquivo de log: C:\livrosql\exemplo1\exemplo1-log.ldf Exemplo prtico: Criando um novo Banco de Dados na instncia SERVIDOR\SRVINST01, usando o SQL Server Management Studio: 1. Abra o SQL Server Management Studio e conecte-se com o servidor no qual voc deseja criar um novo Banco de Dados. Neste exemplo, estou fazendo a conexo com o servidor SERVIDOR\SQL2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000131 Figura 3.26 A janela New Database. 5. Na guia General, iremos definir o nome do Banco de Dados. No nosso exemplo digitaremos: Exemplo1. Nesta guia tambm podemos definir qual a Collation que ser definida para este Banco de Dados. Podemos optar por utilizar a Collation definida para o servidor quando da instalao do mesmo ou um outro tipo. Lembre-se que Collation define propriedades importantes da maneira como os dados sero armazenados e recuperados. A possibilidade de ter diferentes opes para cada Banco de Dados uma novidade do SQL Server 2000 a qual, evidentemente, faz parte do SQL Server 2005. Nesta guia voc tambm define quem ser o usurio dono do Banco de Dados. O usurio dono, por padro, tem permisses completas sobre todos os objetos do Banco de Dados. Por padro, sugerido o usurio as, que o usurio com permisses de administrador no SQL Server 2005. Vamos aceitar a sugesto e deixar o usurio as como dono do Banco de Dados. Nesta guia aceite a opo padro do servidor e digite Exemplo1 no campo Name. 2. No painel da esquerda, localize a janela Object Explorer. Se esta janela no estiver aberta, pressione a tecla de funo F8 para exibi-la. Caso a janela no esteja na posio desejada, voc pode arrast-la para qualquer posio, dentro da janela do SQL Server Management Studio. Clique no sinal de + ao lado da instncia na qual ser criado o Banco de Dados. 3. Nas opes que surgem abaixo da instncia, d um clique em Databases para selecion-la. 4. Clique com o boto direito do mouse em Databases. No menu que surge d um clique na opo New Database. Ser exibida a janela New Database, conforme indicado na Figura 3.26, com a guia General, selecionada por padro. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1320000Curso Completo 6. Na parte de baixo desta guia, poderemos definir quais os arquivos de dados que sero utilizados para o Banco de Dados Exemplo1. Lembre que neste caso teremos o arquivo primrio C:\livrosql\exemplo1\exemplo1-prim.mdf e o secundrio C:\livrosql\exemplo1\ exemplo1- sec1.ndf. Poderemos criar estes dois arquivos na guia Data Files. 7. No campo File Name, digite o nome do arquivo primrio exemplo1-prim sem a extenso. Voc tambm pode definir o tamanho inicial para o arquivo. No nosso exemplo, digite 20 na coluna Initial Size do arquivo primeiro, para criarmos um arquivo primrio com um tamanho inicial de 10 MB. Na coluna Autogrowth (Autocrescimento), voc define de que maneira o arquivo primrio ir crescer, medida que os dados forem sendo adicionados. O padro crescer de 10 em 10 por cento, com tamanho ilimitado (evidentemente que o tamanho mximo ser limitado pelo espao disponvel em disco). Se voc quiser alterar a forma de crescimento, clique no boto com as reticncias ... ao lado da opo selecionada. Ser exibida a janela Change Autogrowht, indicada na Figura 3.27, na qual voc pode definir diferentes formas de crescimento para o arquivo primrio exemplo1-prim, do Banco de Dados Exemplo1. Voc pode habilitar ou desabilitar o crescimento automtico, pode fazer com que o crescimento seja em percentual ou em MB e pode permitir um tamanho mximo ou crescimento irrestrito. Selecione as opes desejadas, que para o nosso exemplo sero: Tamanho inicial: 10 MB, Crescimento automtico em incrementos de 1 MB e Poder crescer at o mximo de 50 MB. Selecione estas opes e clique em OK, para fechar a janela Change Autogrowht. Figura 3.27 Definindo as opes de crescimento do arquivo primrio. 8. Agora vamos definir a pasta onde ser gravado o arquivo primrio. Por padro, o SQL Server 2005 sugere o seguinte caminho: C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\ DATA. Vamos alterar o caminho para: C:\livrosql\exemplo1. Voc pode digitar este caminho direta- mente, ou clicar no boto com as reticncias, para selecionar o caminho com o mouse e deixar que o SQL Server 2005 preencha esta coluna, com o caminho selecionado. 9. Ainda na guia General, e seguindo as orientaes passadas anteriormente, vamos configurar as opes do arquivo secundrio C:\livrosql\exemplo1\exemplo1-sec1.ndf, com as seguintes caractersticas: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000133 Tamanho inicial: 10 MB. Crescimento automtico em incrementos de 2 MB. Poder crescer at o mximo de 100 MB. 10. Para adicionar um arquivo secundrio, clique no boto Add, na parte de baixo da guia General. Uma nova linha ser criada. Na coluna File name, digite exemplo1-sec1.ndf. Na coluna File Type selecione Data. Na coluna Filegroup selecione Primary. Na colunia Initial Size (MB), digite 10. Clique no boto de reticncias, ao lado da opo de Autocrescimento, para abrir a janela Change Autogrowth e selecione um crescimento automtico em incrementos de 2 MB e defina que o arquivo poder crescer at o mximo de 100 MB. Clique em OK para fechar a janela Change Autogrowth. 11. Agora vamos definir a pasta onde ser gravado o arquivo secundrio. Por padro, o SQL Server 2005 sugere o seguinte caminho: C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\ MSSQL\DATA. Vamos alterar o caminho para: C:\livrosql\exemplo1. Voc pode digitar este caminho diretamente, ou clicar no boto com as reticncias, para selecionar o caminho com o mouse e deixar que o SQL Server 2005 preencha esta coluna, com o caminho selecionado. Suas configuraes devem estar conforme indicado na Figura 3.28. Figura 3.28 Arquivos primrio e secundrio, j configurados. O passo final a definio do arquivo de log C:\livrosql\exemplo1\exemplo1-log.ldf. Este arquivo j vem com definies padro, na linha logo abaixo de onde foi definido o arquivo primrio. Vamos criar um arquivo de log com as seguintes caractersticas: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1340000Curso Completo Tamanho inicial: 5 MB. Crescimento automtico em incrementos de 10%. Poder crescer at o mximo de 40 MB. 12. Observe que na coluna File Type j vem selecionado Log e na coluna Filegroup vem selecionada a opo Not Applicabe. Na colunia Initial Size (MB), digite 5. Clique no boto de reticncias, ao lado da opo de Autocrescimento, para abrir a janela Change Autogrowth e selecione um Crescimento automtico em incrementos de 10% e defina que o arquivo poder crescer at o mximo de 40 MB. Clique em OK para fechar a janela Change Autogrowth. 13. Agora vamos definir a pasta onde ser gravado o arquivo de log. Por padro, o SQL Server 2005 sugere o seguinte caminho: C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\ DATA. Vamos alterar o caminho para: C:\livrosql\exemplo1. Voc pode digitar este caminho diretamente, ou clicar no boto com as reticncias, para selecionar o caminho com o mouse e deixar que o SQL Server 2005 preencha esta coluna, com o caminho selecionado. Suas configuraes devem estar conforme indicado na Figura 3.29. Figura 3.29 Configuraes para o Banco de Dados Exemplo1. Poderamos usar as demais guias Options, Filegroups e Extended Properties para definir opes avanadas do Banco de Dados. Para este primeiro exemplo, estas guias no sero utilizadas. A pasta C:\livrosql\exemplo1 j deve ter sido criada, se no ser gerado um erro na hora de criar o Banco de Dados Exemplo1. 13. D um clique no boto OK, e aps alguns segundos o Banco de Dados Exemplo1 ter sido criado. 14. Agora vamos nos certificar de que o Banco de Dados Exemplo1 foi, efetivamente, criado. Na janela Object Explorer clique no sinal de + ao lado da opo Databases, abaixo da instncia na N O T A proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000135 N O T A qual o Banco de Dados foi criado. Na lista de Banco de Dados j dever ser exibido o Banco de Dados Exemplo1. D um clique neste Banco de Dados, para exibir as suas propriedades, no painel da direita, conforme indicado na Figura 3.30: Figura 3.30 O Banco de Dados Exemplo1, recm-criado. Caso o Banco de Dados Exemplo1 ainda no esteja aparecendo na listagem, clique com o boto direito do mouse na opo Databases e no menu de opes que surge clique em Atualizar (Refresh). 14. Aps termos criado um Banco de Dados, podemos, facilmente, adicionar novos arquivos de dados ou de log. Para isso basta clicar com o boto direito do mouse no nome do Banco de Dados e no menu que surge selecionar Propriedades. Ser exibida a janela de propriedades do Banco de Dados. Basta clicar na guia Files, para ter acesso s opes de alteraes dos arquivos existentes e de adio de novos arquivos secundrios. Agora que j sabemos criar um Banco de Dados utilizando o Enterprise Manager, vamos propor um pequeno exerccio para o amigo leitor fixar os conceitos apresentados. Exerccio proposto: Acesse as propriedades do Banco de Dados Exemplo1 e crie mais um arquivo secundrio e um arquivo de log, conforme definido a seguir. Para isso basta clicar com o boto direito do mouse no Banco de Dados Exemplo1 e, no menu de opes que exibido, clicar em Propriedades. Na janela de propriedades que exibida, clique na guia Files. Agora s usar o boto Add, para adicionar novos arquivos e configurar as propriedades de cada novo arquivo, conforme definies da Tabela 3.1: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1360000Curso Completo Arquivo Definies Secundrio C:\livrosql\Exemplo1\exemplo1-sec2.ndf. Crescimento automtico habilitado. Tamanho inicial: 5 MB. Crescimento em incrementos de 5 %. Tamanho mximo de 20 MB. Arquivo de log C:\livrosql\Exemplo1\exemplo1-log2.ldf. Crescimento automtico habilitado. Tamanho inicial: 5 MB. Crescimento em incrementos de 1 MB. Tamanho mximo de 10 MB. Tabela 3.1 Criando arquivos adicionais, no banco de dados Exemplo1. Exerccio: Criar o Banco de Dados indicado na Tabela 3.2, utilizando os passos que voc aprendeu no exemplo prtico anterior. O Banco de Dados ser chamado de Exemplo2 e ser criado na instncia SERVIDOR\SQL2005 (use a instncia que voc tem disponvel, no seu computador). Os arquivos do Banco de Dados Exemplo2 sero gravados na pasta: C:\livrosql\Exemplo2. Lembre-se de que esta pasta j deve ter sido criada, antes que o Banco de Dados possa ser criado, se no ser gerado um erro na hora da criao do Banco de Dados. Arquivo Definies Primrio C:\livrosql\Exemplo2\exemplo2-prim.ndf. Crescimento automtico habilitado. Tamanho inicial: 2 MB. Crescimento em incrementos de 5 %. Tamanho mximo de 10 MB. Secundrio C:\livrosql\Exemplo2\exemplo2-sec1.ndf. Crescimento automtico habilitado. Tamanho inicial: 2 MB. Crescimento em incrementos de 5 %. Tamanho mximo de 10 MB. Secundrio C:\livrosql\Exemplo2\exemplo2-sec2.ndf. Crescimento automtico habilitado. Tamanho inicial: 2 MB. Crescimento em incrementos de 5 %. Tamanho mximo de 10 MB. Arquivo de log C:\livrosql\Exemplo2\exemplo2-log1.ldf. Crescimento automtico habilitado. Tamanho inicial: 2 MB. Crescimento em incrementos de 5 %. Tamanho mximo de 10 MB. Arquivo de log C:\livrosql\Exemplo2\exemplo2-log2.ldf. Crescimento automtico habilitado. Tamanho inicial: 2 MB. Crescimento em incrementos de 5 %. Tamanho mximo de 10 MB. Arquivo de log C:\livrosql\Exemplo2\exemplo2-log3.ldf. Crescimento automtico habilitado. Tamanho inicial: 2 MB. Crescimento em incrementos de 5 %. Tamanho mximo de 10 MB. Tabela 3.2 O banco de dados Exemplo2. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000137 Ento mos obra. Em caso de dvidas sobre a criao do Banco de Dados Exemplo2, s entrar em contato, pelo e-mail: webmaster@juliobattisti.com.br Observao importante sobre o crescimento automtico de arquivos. Vamos falar um pouco mais sobre o crescimento automtico dos arquivos primrio, secundrio e de log de um Banco de Dados. Por exemplo, vamos supor que estejamos criando um Banco de Dados com as caractersticas indicadas na Tabela 3.3. Vamos responder s seguintes questes: 1) Ao criarmos este Banco de Dados, quanto ele estar, inicialmente, ocupando de espao em disco? R: 19 MB. Este valor a soma dos tamanhos iniciais do arquivo primrio (5 MB), mais todos os arquivos secundrios, que no caso temos apenas um (7 MB), mais todos os arquivos de log, que no nosso exemplo temos apenas um (7 MB). Com isso podemos concluir que um arquivo (primrio, secundrio ou de log) de um Banco de Dados do SQL Server, criado com o seu tamanho inicial. Este tamanho vai aumentando, conforme definido pelas configuraes de autocrescimento, medida que mais espao vai sendo necessrio no Banco de Dados. 2) Qual o tamanho mximo que pode atingir este Banco de Dados? Esta parece e fcil. Basta somar os tamanhos mximos que cada arquivo pode atingir. No nosso exemplo, teramos: 10+15+25 = 50 MB. Porm, se a pergunta fosse um pouco diferente, como: Qual o tamanho mximo para dados deste Banco de Dados? Neste caso devemos desconsiderar os arquivos de log, nos quais ficam registradas apenas as operaes realizadas sobre os dados. A utilizao do crescimento automtico juntamente com a definio de tamanho mximo so mecanismos importantes para o administrador do Banco de Dados. O crescimento automtico facilita Arquivo Definies Primrio C:\livrosql\qualeur\qualquer-prim.mdf. Crescimento automtico habilitado. Tamanho inicial: 5 MB. Crescimento em incrementos de 1 MB. Tamanho mximo de 10 MB. Secundrio C:\livrosql\qualquer\qualquer-sec1.ndf. Crescimento automtico habilitado. Tamanho inicial: 7 MB. Crescimento em incrementos de 2 MB. Tamanho mximo de 15 MB. Arquivo de log C:\livrosql\qualquer\qualquer-log1.ldf. Crescimento automtico habilitado. Tamanho inicial: 7 MB. Crescimento em incrementos de 2 MB. Tamanho mximo de 25 MB. Tabela 3.3 Algumas questes sobre espao em disco. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1380000Curso Completo a vida do DBA Database Administrator, pois dispensa o administrador de ter que aumentar, manualmente, o tamanho dos arquivos do Banco de Dados, sempre que o tamanho mximo fosse atingido. A definio de um tamanho mximo tambm recomendada, pois evita que, devido a alguma operao com problemas, devido a algum erro de programao, todo o espao do disco seja preenchido. VERIFICAO DOS ARQUIVOS CRIADOS PARA O EXEMPLO1 E PARA O EXEMPLO2 Vamos fazer uma pequena verificao, para conferir se os arquivos dos Bancos de Dados Exemplo1 e Exemplo2 foram realmente criados (os arquivos do Banco de Dados Exemplo2 somente sero criados se voc concluiu o exerccio proposto anteriormente): 1. Abra o Windows. 2. Navegue at a pasta C:\livrosql. Devem aparecer as pastas Exemplo1 e Exemplo2. 3. D um clique na pasta Exemplo1. No painel da direita devem ser exibidos os arquivos do Banco de Dados Exemplo1, conforme indicado na Figura 3.31: Figura 3.31 Os arquivos do Banco de Dados Exemplo1. Observe o tamanho dos arquivos, o qual exatamente o tamanho inicial quando da criao do Banco de Dados Exemplo1: 10 MB para o arquivo primrio (.mdf), 10 MB para o arquivo secundrio (.ndf) e 5 MB para o arquivo de log (.log). Os arquivos continuam com o tamanho inicial pois nenhum dado foi adicionado ao Banco de Dados Exemplo1. Nem mesmo tabelas foram criadas neste Banco de Dados mas isto assunto para o prximo captulo. 4. Clique na pasta exemplo2 e observe os arquivos presentes bem como o tamanho dos arquivos. 5. Feche o Windows Explorer. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000139 FUNDAMENTOS EM: ENTENDER E UTILIZAR COMANDOS T-SQL PR-REQUISITOS Noes dos conceitos bsicos sobre Bancos de Dados Relacionais. METODOLOGIA Apresentao dos principais elementos e funes da janela para Execuo de Comandos T-SQL, dentro do SQL Server Management Studio. TCNICA Aprender atravs de exemplos prticos. J falamos algumas vezes sobre a ferramenta Query Analyzer, a qual era utilizada no SQL Server 2000. O Query Analyzer era a ferramenta usada para a execuo de comandos T-SQL. No SQL Server 2005, o Query Analyzer deixou de existir e, dentro do prprio SQL Server Management Studio, podemos abrir uma janela para execuo de comandos T-SQL (na verdade esta janela, aberta dentro do SQL Server Management Studio, muito parecida, em funcionalidade, com o que era o Query Analyzer no SQL Server 2000). Na verdade, na opinio deste autor, no SQL Server 2005, simplesmente o Query Analyzer deixou de ser uma ferramenta separada e teve a sua funcionalidade embutida dentro do SQL Server Management Studio. Neste item, veremos a janela para execuo de comandos T-SQL, dentro do SQL Server Management Studio. possvel, literalmente, executar qualquer ao, usando comandos T-SQL. Criar Bancos de Dados, configurar Bancos de Dados, criar tabelas, chaves primrias, relacionamentos entre tabelas, criar consultas, etc. Qualquer ao do SQL Server 2005 possvel de ser executada, usando comandos T- SQL. A idia bsica de execuo dos comandos que cada comando executado em relao a um determinado objeto. Por exemplo, um comando T-SQL para criao de um novo Banco de Dados executado em uma instncia do SQL Server 2005. Um comando T-SQL para criar uma nova tabela executado em um Banco de Dados. Um comando T-SQL para definir permisses de acesso para um ou mais usurios, para os dados de uma determinada tabela, executado na tabela e assim por diante. Com isso, temos uma regra geral para abrir uma janela para execuo de comandos T-SQL, em relao a um determinado objeto do SQL Server 2005. Por exemplo, se voc quer executar um comando em uma instncia do SQL Server 2005, abra o SQL Server Management Studio, clique com o boto direito do mouse na referida instncia, na janela Object Explorer e, no menu de opes que exibido, clique em New Query. Se voc quer executar um comando T-SQL em um Banco de Dados, clique com o boto direito do mouse no Banco de Dados, na janela Object Explorer e, no menu de opes que exibido, clique em... adivinhe: New Query. A idia bsica essa, localize o objeto sobre o qual sero executados os comandos T-SQL, clique com o boto direito do mouse neste objeto e, no menu de opes que exibido, clique em New Query. Ser aberta uma janela para execuo de comandos T-SQL, no painel da direita do SQL Server Management Studio, conforme exemplo da Figura 3.32: Observe, no ttulo da janela de execuo de comandos, que informado com qual objeto voc est conectado. No exemplo da Figura 3.32, com o Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005. Por padro, a conexo para execuo de comandos feita com a mesma conta com a qual voc se conectou com o SQL Server Management Studio. Caso a conta que voc esteja utilizando no tenha proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1400000Curso Completo Figura 3.32 Janela para execuo de comandos T-SQL, no Banco de Dados Exemplo1. A janela de execuo fornece um espao, para que voc digite o comando a ser executado. Claro que at este momento voc conhece somente o bsico dos comandos T-SQL, os quais foram apresentados no Captulo 1. Ao longo deste livro, voc aprender uma grande quantidade de comandos. E muitos outros ainda existem, os quais, por falta de espao (se no o livro ficaria com umas 10 mil pginas), no tm como ser abordados em um nico livro. No Books Online, voc encontra uma referncia completa e detalhada, com exemplos, sobre todos os comandos T-SQL disponveis no SQL Server 2005. E so, literalmente, milhares de comandos. Os comandos T-SQL podem ser digitados diretamente no que eu chamo de rea de trabalho, que onde est o cursor piscando. A melhor maneira de vermos a janela de execuo de comandos em funcionamento atravs de um exemplo prtico. Vamos comear executando uma consulta simples, a qual retorna todos os registros da tabela HumanResources.Employee, do Banco de Dados AdventureWorks, o qual o Banco de Dados de exemplos, instalado com o SQL Server 2005. Para isso precisamos fazer o seguinte: Ento vamos, passo a passo, fazer o exemplo proposto. permisso para executar comandos no objeto selecionado, ser solicitado que voc informe uma conta e a respectiva senha, conta esta que deve ter as permisses para execuo de comandos, no objeto selecionado. Estas informaes so necessrias, pois no so todos os usurios que tm acesso a todos os objetos de uma instncia do servidor SQL. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000141 Exemplo prtico: Executando uma consulta simples, usando a janela de execuo de comandos T-SQL, do SQL Server Management Studio. Para executar um comando, que retorna todos os registros da tabela HumanResources.Employee, do Banco de Dados AdventureWorks, siga os passos indicados a seguir: 1. Faa o logon com uma conta com permisso de administrador. 2. Abra o SQL Server Management Studio. 3. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para exibir as opes disponveis. 4. Clique no sinal de + ao lado da opo Databases, para exibir os Bancos de Dados disponveis nesta instncia do SQL Server 2005. 5. Na lista de Banco de Dados, clique com o boto direito do mouse no Banco de Dados AdventureWorks e, no menu de opes que exibido, clique em New Query. A janela para execuo de comandos ser aberta e exibida na rea central do SQL Server Management Stu- dio. Observe que a janela j vem conectada com o Banco de Dados AdventureWorks, pois foi neste Banco de Dados que voc clicou com o boto direito do mouse. 6. Na janela de execuo de comandos T-SQL, digite o seguinte comando: SELECT * FROM HumanResources.Employee Observe que medida que voc digita, o SQL Server 2005 vai colocando os comandos e nome de tabelas em cores diferentes. Isto significa que o comando que voc est digitando est sendo entendido. Caso o nome de um comando no fique colorido aps a digitao, significa que o comando no foi entendido. Provavelmente voc deve ter cometido um erro de digitao. 7. Aps ter digitado o comando, pressione F5 para execut-lo. Ao invs de F5 voc pode pressionar Ctrl+E para executar os comandos que foram digitados. O resultado da execuo deste comando uma listagem com todos os registros da tabela HumanResources.Employee do Banco de Dados AdventureWorks, conforme indicado na Figura 3.33: Observe que, na parte de baixo da janela, temos duas guias: Results, que onde so exibidos os resultados de uma consulta; e Messages, que onde sero exibidas mensagens. No caso de a consulta ter sido executada com sucesso, a mensagem limita-se ao nmero de linhas que foram retornadas, como por exemplo: (290 row(s) affected) para o caso de termos digitado um comando com erros a mensagem descreve o tipo de erro. Por exemplo o comando: SELECT * FROM HumanResources.Employeexx proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1420000Curso Completo ir retornar a seguinte mensagem de erro: Msg 208, Level 16, State 1, Line 1 Invalid object name HumanResources.Employeexx. Figura 3.33 Resultado da execuo do comando T-SQL. Neste caso digitei o nome da tabela incorretamente. Como no existe uma tabela chamada HumanResources.Employeexx, no Banco de Dados AdventureWorks, no foi possvel executar o comando e foi emitida a mensagem de erro informando o motivo. Mas a janela para execuo de comandos T_SQL no se limita execuo de comandos T-SQL simples, para consultas. Na verdade, a linguagem T-SQL bastante poderosa. Podemos criar um Banco de Dados e todos os seus objetos, simplesmente utilizando comandos T-SQL. No prximo item, veremos como criar um Banco de Dados e depois alter-lo, utilizando comandos T-SQL. Existe um comando que permite que seja alterado o Banco de Dados padro dentro da prpria seqncia de comandos T-SQL. Por exemplo, vamos supor que o Banco de Dados atual seja o AdventureWorks e voc deseja executar uma instruo SQL no banco master. Poderamos utilizar a seguinte seqncia de comandos para, primeiro, alternarmos para o Banco de Dados master e, depois, executarmos uma instruo SQL nele. USE master SELECT * FROM SYS.TABLES proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000143 Todos os comandos SQL que aprendemos no Captulo 1 podem ser executados nesta janela de execuo de cdigo. Por exemplo, vamos executar uma consulta no Banco de Dados NorthWind (voc ainda no tem este Banco de Dados no SQL Server 2005. Mostrarei como importar este Banco de Dados, no captulo sobre o DTS, onde falarei sobre importao e exportao de dados com o SQL Server 2005), a qual retorna apenas os clientes (Customers) mexicanos, isto , em que o campo Country possui o valor Mexico. Para isso poderamos utilizar o seguinte comando: USE NORTHWIND SELECT * FROM CUSTOMERS WHERE COUNTRY=Mexico Neste caso, sero retornados apenas cinco registros, isto , apenas os registros para os clientes mexicanos. Existem muitas outras funcionalidades nesta janela de execuo de comandos. Vamos trabalhar com muitas destas funcionalidades ao longo deste livro. A janela para execuo de comandos T-SQL de grande utilidade para que o DBA possa executar comandos diretamente nos Bancos de Dados do SQL Server. Conforme aprenderemos ao longo deste livro, existe uma srie de comandos para manuteno e otimizao dos elementos de um Banco de Dados do SQL Server; comandos estes que podem ser executados atravs da janela de execuo de cdigo. Para fechar esta janela, basta clicar no x no lado direito da janela (no no x bem em cima, se no voc ir fechar o SQL Server Management Studio). Podemos inserir comentrios nos comandos T-SQL. Utilizar comentrios sempre uma boa prtica de programao. Um comando T-SQL com muitas linhas pode ser gravado em um arquivo de texto e depois carregado na janela de execuo de cdigo para futuras execues. Desta forma no precisamos digitar o comando, ou conjunto de comandos, cada vez que estes precisarem ser executados. Para inserir comentrios em um comando T-SQL, basta iniciar a linha do comentrio com dois traos, como no exemplo a seguir: Este comando retorna apenas os clientes do Mxico USE NORTHWIND SELECT * FROM CUSTOMERS WHERE COUNTRY=Mxico Cada linha de comentrio deve iniciar com . Caso voc queira inserir um comentrio com vrias linhas, sem precisar iniciar cada linha com , podemos utilizar os caracteres /* para iniciar o bloco de comentrios e */ para finalizar o bloco de comentrios, conforme indicado no exemplo a seguir: /* Nesta rotina, iremos extrair dados de diversas tabelas e consolid-los de acordo com o Cdigo do Produto, Cdigo do Vendedor e Regio de Vendas. No Final, os dados sero inseridos em uma tabela temporria chamada temp_result, no Banco de Dados Consolidado */ USE ... SELECT * ... FUNDAMENTOS EM: CRIAO DE BANCOS DE DADOS USANDO COMANDOS T-SQL PR-REQUISITOS Noes dos conceitos bsicos sobre Bancos de Dados relacionais. N O T A proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1440000Curso Completo Saber utilizar a janela para execuo de comandos T-SQL. Conhecer a estrutura de armazenamento de um Banco de Dados do SQL Server 2005. METODOLOGIA Apresentao dos comandos T-SQL para criao de Bancos de Dados. TCNICA Criao de Bancos de Dados utilizando os comandos apresentados. Para criarmos um Banco de Dados, utilizamos o comando CREATE DATABASE. A seguir temos a sintaxe para este comando, conforme descrito no Books Online: CREATE DATABASE database_name [ ON [ < filespec > [ ,...n ] ] [ , < filegroup > [ ,...n ] ] ] [ LOG ON { < filespec > [ ,...n ] } ] [ COLLATE collation_name ] [ FOR LOAD | FOR ATTACH ] < filespec > ::= [ PRIMARY ] ( [ NAME = logical_file_name , ] FILENAME = os_file_name [ , SIZE = size ] [ , MAXSIZE = { max_size | UNLIMITED } ] [ , FILEGROWTH = growth_increment ] ) [ ,...n ] < filegroup > ::= FILEGROUP filegroup_name < filespec > [ ,...n ] Este formato genrico no muito intuitivo e nem de fcil entendimento. Vamos simplificar um pouco. A seguir, apresento uma sintaxe simplificada, somente com as opes necessrias para criar o Banco de Dados, com um arquivo primrio, um arquivo secundrio e um arquivo de log: CREATE DATABASE NOME_DO_BANCO_DE_DADOS ON ************************* Definio do Arquivo Primrio ************************* (NAME= Nome_Lgico_Arquivo_Primrio, FILENAME = Caminho para gravar o arquivo, por ex. C:\livrosql\exemplo3\ex3-prim.mdf, SIZE= Tamanho_Inicial, MAXSIZE= Tamanho_Mximo_Admitido, FILEGROWTH = Incremento), *************************** Definio do Arquivo Secundrio *************************** (NAME= Nome_Lgico_Arquivo_Secundrio, FILENAME = Caminho para gravar o arquivo, por ex. C:\livrosql\exemplo3\ex3-sec.ndf, SIZE= Tamanho_Inicial, MAXSIZE= Tamanho_Mximo_Admitido, FILEGROWTH = Incremento) ************************* Definio do Arquivo de Log ************************* LOG ON (NAME= Nome_Lgico_Arquivo_Log, FILENAME = Caminho para gravar o arquivo, por ex. C:\livrosql\exemplo3\ex3-log.ldf, SIZE= Tamanho_Inicial, proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000145 N O T A MAXSIZE= Tamanho_Mximo_Admitido, FILEGROWTH = Incremento) *************************************** Final do comando de criao do Banco de Dados *************************************** Lembrando que as linhas que iniciam com so linhas de comentrio, cujo objetivo tornar a leitura e interpretao do comando T-SQL mais fceis. Agora vamos utilizar um comando que cria um Banco de Dados chamado Exemplo3, com as caractersticas definidas na Tabela 3.4. Os arquivos primrio, secundrio e de log devero ser salvos em C:\livrosql\exemplo3. Arquivo Definies Primrio C:\livrosql\exemplo3\exemplo3-prim.mdf. Crescimento automtico habilitado. Tamanho inicial: 7 MB. Crescimento em incrementos de 1 MB. Tamanho mximo de 25 MB. Secundrio C:\livrosql\exemplo3\exemplo3-sec1.ndf. Crescimento automtico habilitado. Tamanho inicial: 10 MB. Crescimento em incrementos de 10 %. Tamanho mximo de 50 MB. Arquivo de log C:\livrosql\exemplo3\exemplo3-log1.ldf. Crescimento automtico habilitado. Tamanho inicial: 7 MB. Crescimento em incrementos de 2 MB. Tamanho mximo de 25 MB. Tabela 3.4 Banco de dados Exemplo3. Exemplo prtico: Criar o Banco de Dados Exemplo3, com as definies dadas pela Tabela 3.4. Criar o Banco de Dados na instncia SERVIDOR\SQL2005 (ou utilize uma instncia disponvel no computador que voc est usando). 1. Faa o logon com uma conta com permisso de administrador. 2. Abra o SQL Server Management Studio. 3. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para exibir as opes disponveis. 4. Clique com o boto direito do mouse na instncia SERVIDOR\SQL2005 e, no menu de opes que exibido, clique em New Query. Ser aberta a janela para execuo de comandos T-SQL, j descrita anteriormente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1460000Curso Completo N O T A 5. Digite o seguinte comando, o qual ir criar o Banco de Dados Exemplo3, com as definies da Tabela 3.4: CREATE DATABASE Exemplo3 ON ************************* Definio do Arquivo Primrio ************************* (NAME= exemplo3_prim, FILENAME = C:\livrosql\exemplo3\exemplo3-prim.mdf , SIZE= 7MB, MAXSIZE= 25MB, FILEGROWTH = 1MB), *************************** Definio do Arquivo Secundrio *************************** (NAME= exemplo3_sec1, FILENAME = C:\livrosql\exemplo3\exemplo3-sec1.ndf , SIZE= 10MB, MAXSIZE= 50MB, FILEGROWTH = 10%) ************************* Definio do Arquivo de Log ************************* LOG ON (NAME= exemplo3_log1, FILENAME = C:\livrosql\exemplo3\exemplo3-log1.ldf , SIZE= 7MB, MAXSIZE= 25MB, FILEGROWTH = 2MB) *************************************** Final do comando de criao do Banco de Dados *************************************** Veja que estamos utilizando o caractere de sublinhado _ para os nomes lgicos, pois no podemos utilizar o sinal -, o qual no um caractere vlido para um nome lgico. Se utilizarmos o sinal - , ao executarmos o comando obteremos a seguinte mensagem de erro: Server: Msg 170, Level 15, State 1, Line 14 Line 14: Incorrect syntax near -. Importante: Antes de executar este comando, a pasta C:\livrosql\exemplo3 j deve ter sido criada, caso contrrio ser exibida a seguinte mensagem de erro: Server: Msg 5105, Level 16, State 2, Line 1 Device activation error. The physical file name C:\livrosql\exemplo3\exemplo3-prim.mdf may be incorrect. Server: Msg 1802, Level 16, State 1, Line 1 CREATE DATABASE failed. Some file names listed could not be created. Check previous errors. Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, o Banco de Dados Exemplo3 ter sido criado e a seguinte mensagem ser exibida na guia Messages: Command(s) completed successfully. Com isso o nosso Banco de Dados Exemplo3 foi criado, com as caractersticas definidas na Tabela 3.4. Mantenha o SQL Server Management Studio aberto. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000147 Agora vamos verificar se o Banco de Dados Exemplo3 foi realmente criado. Exemplo prtico: Verificando se o Banco de Dados Exemplo3 foi realmente criado: 1. Abra o SQL Server Management Studio (j deve estar aberto do exemplo anterior). 2. Na janela Object Explorer, clique no sinal de mais ao lado da instncia SERVIDOR\SQL2005 para expandi-la (use a instncia disponvel no computador que voc est utilizando). 3. Clique no sinal de mais ao lado de Databases para expandi-la. 4. Observe que o Exemplo3 j deve aparecer na listagem de Banco de Dados. Caso o Banco de Dados Exemplo3 ainda no esteja sendo exibido, clique na opo Databases para selecion-la e pressione a tecla F5 para atualizar a viso. Vamos fazer mais algumas observaes sobre o comando CREATE DATABASE. Os tamanhos para os parmetros SIZE e MAXSIZE podem ser definidos em kilobyte (KB), mega- byte (MB), gigabyte (GB) ou terabyte (TB). O padro MB, isto , se no for especificada a unidade, o nmero considerado em MB. O parmetro FILEGROWTH, o qual especifica o incremento para o crescimento automtico, pode ser definido em valores absolutos (KB, MB, GB ou TB) ou em valores percentuais, como por exemplo: 10%, 15%, etc. O nmero mximo de Bancos de Dados que podemos ter em uma instncia do SQL Server 32.767. No podemos especificar valores decimais para os parmetros SIZE, MAXSIZE e FILEGROWTH. Por exemplo, no posso ter SIZE = 2,5 MB. Ao invs disso devo fazer uma pequena conta. Por exemplo: Cada MB possui 1024 KB, logo 2,5 MB = 2,5 x 1024 = 2560. Agora basta especificarmos SIZE = 2560KB. Agora vamos aprender a utilizar o comando CREATE DATABASE com a opo de colocar alguns arquivos do Banco de Dados em outro filegroup que no o primrio. Nos exemplos anteriores, como no especificamos em qual filegroup os arquivos (primrio ou secundrio) deveriam ser criados, estes fo- ram criados no filegroup padro que o Primary Filegroup. Lembrando que filegroup simplesmente um conceito que permite agruparmos, logicamente, um conjunto de arquivos e at mesmo tabelas e ndices. Este agrupamento lgico pode ser utilizado para facilitar a distribuio dos arquivos ao longo de vrios discos, facilitar as rotinas de backup, etc. Vamos aprender estas opes com o auxlio de um exemplo um pouco mais complexo do que os anteriores. Exemplo prtico: Utilizar o comando CREATE DATABASE para criar um Banco de Dados chamado Exemplo4, com as caractersticas indicadas na Tabela 3.5. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1480000Curso Completo Arquivo Definies Primrio C:\livrosql\exemplo4\exemplo4_prim.mdf. Crescimento automtico habilitado. Tamanho inicial: 10 MB. Tamanho mximo de 50 MB. Crescimento em incrementos de 15%. No filegroup Primary. Secundrio C:\livrosql\exemplo4\exemplo4_sec1.ndf. Crescimento automtico habilitado. Tamanho inicial: 10 MB. Tamanho mximo de 50 MB. Crescimento em incrementos de 15%. No filegroup Primary. Secundrio C:\livrosql\exemplo4\exemplo4_sec2.ndf. Crescimento automtico habilitado. Tamanho inicial: 10 MB. Tamanho mximo de 50 MB. Crescimento em incrementos de 5 MB. No filegroup SalesGroup1. Secundrio C:\livrosql\exemplo4\exemplo4_sec3.ndf. Crescimento automtico habilitado. Tamanho inicial: 10 MB. Tamanho mximo de 50 MB. Crescimento em incrementos de 5 MB. No filegroup SalesGroup1 Secundrio C:\livrosql\exemplo4\exemplo4_sec4.ndf. Crescimento automtico habilitado. Tamanho inicial: 10 MB. Tamanho mximo de 50 MB. Crescimento em incrementos de 5 MB. No filegroup SalesGroup2. Secundrio C:\livrosql\exemplo4\exemplo4_sec5.ndf. Crescimento automtico habilitado. Tamanho inicial: 10 MB. Tamanho mximo de 50 MB. Crescimento em incrementos de 5 MB. No filegroup SalesGroup2. Arquivo de log C:\livrosql\exemplo4\exemplo4_log.ldf. Crescimento automtico habilitado. Tamanho inicial: 5 MB. Tamanho mximo de 25 MB. Crescimento em incrementos de 5 MB. Tabela 3.5 Banco de dados Exemplo4. Observe que os arquivos sero salvos na pasta C:\livrosql\exemplo4. Criaremos o Banco de Dados Exemplo4 na instncia SERVIDOR\SQL2005. Tambm nunca demais lembrar que a pasta C:\livrosql\exemplo4 j deve existir, antes que o comando Create Database seja executado, se no o comando ir falhar e ser gerada uma mensagem de erro. Para criar o Banco de Dados Exemplo4, com as caractersticas definidas na Tabela 3.5, siga os passos indicados a seguir: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000149 1. Faa o logon com uma conta com permisso de administrador. 2. Abra o SQL Server Management Studio. 3. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para exibir as opes disponveis. 4. Clique com o boto direito do mouse na instncia SERVIDOR\SQL2005 e, no menu de opes que exibido, clique em New Query. Ser aberta a janela para execuo de comandos T-SQL, j descrita anteriormente. 5. Digite o seguinte comando: CREATE DATABASE Exemplo4 Especifica o filegroup Primary ON PRIMARY ( NAME = exemplo4_prim, FILENAME = C:\livrosql\exemplo4\exemplo4_prim.mdf, SIZE = 10, MAXSIZE = 50, FILEGROWTH = 15% ), ( NAME = exemplo4_sec1, FILENAME = C:\livrosql\exemplo4\exemplo4_sec1.ndf, SIZE = 10, MAXSIZE = 50, FILEGROWTH = 15% ), Os prximos arquivos sero associados com Filegroup SalesGroup1 FILEGROUP SalesGroup1 ( NAME = exemplo4_sec2, FILENAME = C:\livrosql\exemplo4\exemplo4_sec2.ndf, SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ), ( NAME = exemplo4_sec3, FILENAME = C:\livrosql\exemplo4\exemplo4_sec3.ndf, SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ), Os prximos arquivos sero associados com Filegroup SalesGroup2 FILEGROUP SalesGroup2 ( NAME = exemplo4_sec4, FILENAME = C:\livrosql\exemplo4\exemplo4_sec4.ndf, SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ), ( NAME = exemplo4_sec5, FILENAME = C:\livrosql\exemplo4\exemplo4_sec5.ndf, SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = exemplo4_log, FILENAME = C:\livrosql\exemplo4\exemplo4_log.ldf, SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1500000Curso Completo Vamos repetir esta observao porque ela importante. Veja que estamos utilizando o caractere de sublinhado _ para os nomes lgicos, pois no podemos utilizar o sinal de menos -, o qual no um caractere vlido para um nome lgico. Se utilizarmos o sinal - , ao executarmos o comando obteremos a seguinte mensagem de erro: Server: Msg 170, Level 15, State 1, Line 14 Line 14: Incorrect syntax near -. Vamos repetir este aviso porque o mesmo importante: Antes de executar este comando, a pasta C:\livrosql\exemplo4 j deve ter sido criada, caso contrrio ser exibida uma mensagem de erro. Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, o Banco de Dados Exemplo4 ter sido criado e a seguinte mensagem exibida na guia Messages: Command(s) completed successfully. Esta mensagem a confirmao de que o Banco de Dados foi criado com sucesso. Agora vamos verificar se o Banco de Dados Exemplo4 foi realmente criado. Exemplo prtico: Verificando se o Banco de Dados Exemplo4 foi realmente criado: 1. Abra o SQL Server Management Studio (j deve estar aberto do exemplo anterior). 2. Na janela Object Explorer, clique no sinal de mais ao lado da instncia SERVIDOR\SQL2005 para expandi-la (use a instncia disponvel no computador que voc est utilizando). 3. Clique no sinal de mais ao lado de Databases para expandi-la. 4. Observe que o Banco de Dados Exemplo4 j deve aparecer na listagem de Banco de Dados. Caso o Banco de Dados Exemplo ainda no esteja sendo exibido, clique na opo Databases para selecion-la e pressione a tecla F5 para atualizar a viso. Agora que aprendemos a utilizar o comando CREATE DATABASE, vamos aprender mais alguns comandos T-SQL para o trabalho com Bancos de Dados. FUNDAMENTOS EM: ALTERAO DE BANCOS DE DADOS USANDO COMANDOS T-SQL PR-REQUISITOS Noes dos conceitos bsicos sobre Bancos de Dados Relacionais. Saber utilizar a janela para execuo de comandos T-SQL. Conhecer a estrutura de armazenamento de um Banco de Dados do SQL Server 2005. METODOLOGIA Apresentao dos comandos T-SQL para alterao de Bancos de Dados. N O T A proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000151 TCNICA Alterao de Bancos de Dados utilizando os comandos apresentados. Com o comando ALTER DATABASE podemos fazer uma srie de alteraes em um Banco de Dados, como por exemplo adicionar arquivos secundrios e arquivos de log. A seguir, temos a sintaxe oficial, segundo o Books OnLine, para o comando ALTER DATABASE: ALTER DATABASE database { ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ] | ADD LOG FILE < filespec > [ ,...n ] | REMOVE FILE logical_file_name | ADD FILEGROUP filegroup_name | REMOVE FILEGROUP filegroup_name | MODIFY FILE < filespec > | MODIFY NAME = new_dbname | MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name } | SET < optionspec > [ ,...n ] [ WITH < termination > ] | COLLATE < collation_name > } Como a sintaxe descrita na documentao oficial no o que se possa chamar de muito amistosa e nem de fcil entendimento, vamos aprender a utilizar este comando atravs de exemplos prticos. Exemplo prtico: Alterar o Banco de Dados Exemplo3, criado anteriormente, adicionando um arquivo secundrio e um arquivo de log, conforme orientaes da Tabela 3.6 Arquivo Definies Adicionar C:\livrosql\exemplo3\exemplo3-sec1.ndf. Secundrio Crescimento automtico habilitado. Tamanho inicial: 12 MB. Crescimento em incrementos de 20%. Tamanho mximo de 65 MB. Adicionar C:\livrosql\exemplo3\exemplo3-log2.ldf. Arquivo de log Crescimento automtico habilitado. Tamanho inicial: 7 MB. Crescimento em incrementos de 5%. Tamanho mximo de 25 MB. Tabela 3.6 Alterando o Banco de Dados Exemplo3. Para alterar o Banco de Dados Exemplo3, siga os passos indicados a seguir: 1. Faa o logon com uma conta com permisso de administrador. 2. Abra o SQL Server Management Studio. 3. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para exibir as opes disponveis (utilize uma instncia do SQL Server 2005, disponvel no computador que voc est utilizando). proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1520000Curso Completo N O T A 4. Clique com o boto direito do mouse na instncia SERVIDOR\SQL2005 e, no menu de opes que exibido, clique em New Query. Ser aberta a janela para execuo de comandos T-SQL, j descrita anteriormente. 5. Digite o seguinte comando: ALTER DATABASE Exemplo3 ADD FILE ( NAME = exemplo3_sec2, FILENAME = c:\livrosql\exemplo3\exemplo3_sec2.ndf, SIZE = 12MB, MAXSIZE = 65MB, FILEGROWTH = 20% ) GO ALTER DATABASE Exemplo3 ADD LOG FILE ( NAME = exemplo3_log2, FILENAME = c:\livrosql\exemplo3\exemplo3_log2.ldf, SIZE = 7MB, MAXSIZE = 25MB, FILEGROWTH = 5%) Observe que, aps fecharmos o comando que adiciona um arquivo de dados - ADD FILE, precisamos inserir um comando GO, para que o primeiro arquivo ALTER DATABASE seja executado e o arquivo exemplo3_sec2.ndf seja adicionado. Aps o GO executado o segundo comando ALTER DATABASE, agora para adicionar um arquivo de LOG. No posso utilizar na mesma seqncia de comandos ALTER DATABASE as opes ADD FILE e ADD LOG FILE. Por isso preciso de dois comandos ALTER DATABASE separados. A maneira de fazer com que mais do que um comando seja executado de uma nica vez inserindo o comando GO. 6. Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, o Banco de Dados Exemplo4 ter sido criado e a seguinte mensagem ser exibida: Command(s) completed successfully. Esta mensagem a confirmao de que o Banco de Dados Exemplo4 foi alterado com sucesso. Vamos a mais um exemplo prtico: Exemplo prtico: Como remover um arquivo de um Banco de Dados, usando comandos T-SQL: No comando a seguir, estamos utilizando o comando ALTER DATABASE para remover o arquivo exemplo3_log2 adicionado no exemplo anterior: USE master GO ALTER DATABASE Exemplo3 REMOVE FILE exemplo3_log2 GO Ao finalizar este comando exibida a seguinte mensagem: The file exemplo3_log2 has been removed. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000153 Observe que o nome utilizado o nome lgico e no o nome do arquivo e disco (C:\livrosql\exemplo3\exemplo3_log2.ndf). Bem, j estava na hora de apresentarmos alguma utilidade para o nome lgico do arquivo. A utilidade exatamente esta, podemos nos referir ao nome lgico do arquivo nos comandos T-SQL, o que, convenhamos, bem mais fcil do que nos referir ao nome do arquivo no disco. Exemplo prtico: Como modificar um arquivo de um Banco de Dados, usando comandos T-SQL? No comando a seguir, eu utilizo o comando ALTER DATABASE para modificar o arquivo exemplo3_sec2 adicionado no exemplo anterior: USE master GO ALTER DATABASE Exemplo3 MODIFY FILE (NAME = exemplo3_sec2, SIZE = 25MB) GO Ao finalizar este comando, exibida a seguinte mensagem: The command(s) completed successfully. FUNDAMENTOS EM: EXCLUSO DE BANCOS DE DADOS COM O QUERY ANALYZER E COM O ENTERPRISE MANAGER PR-REQUISITOS Noes dos conceitos bsicos sobre Bancos de Dados Relacionais. Conhecer e saber utilizar a interface do SQL Server Management Studio. Saber utilizar a janela de execuo de comandos T-SQL. Conhecer a estrutura de armazenamento de um Banco de Dados do SQL Server 2005. METODOLOGIA Apresentao dos comandos T-SQL para excluso de Bancos de Dados. TCNICA Excluso de Bancos de Dados utilizando os comandos apresentados. Uma vez que um Banco de Dados no seja mais necessrio, podemos excluir o Banco de Dados do servidor SQL Server. A excluso pode ser feita utilizando-se o SQL Server Management Studio ou o comando DROP DATABASE. Para excluir um Banco de Dados com o SQL Server Management Studio, basta localizar o Banco de Dados a ser excludo, clicar com o boto direito do mouse sobre o Banco de Dados e, no menu de opes que surge, clicar na opo Delete. Surgir uma janela pedindo confirmao, conforme indicado na Figura 3.34. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1540000Curso Completo N O T A Figura 3.34 Confirmando a excluso de um Banco de Dados. Para excluir um Banco de Dados usando a janela de execuo de comandos T-SQL, utilizamos o comando DROP DATABASE, conforme ilustrado nos exemplos a seguir. Para excluir o Exemplo4 utilize o seguinte comando: DROP DATABASE Exemplo4 Ao executar este comando, no Query Analyzer, ser exibida a seguinte mensagem: Command(s) completed successfully. Ao excluir um Banco de Dados utilizando o comando DROP DATABASE, no ser pedida confirmao. Fique atento a este detalhe. Podemos excluir mais do que um Banco de Dados. Para isto basta separar o nome dos Bancos de Dados a serem excludos com vrgula, conforme indicado no exemplo a seguir: DROP DATABASE Exemplo4, Exemplo3 Este comando ir excluir os Bancos de Dados Exemplo3 e Exemplo4. Se um dos Bancos de Dados a ser excludo no existir, ser gerada uma mensagem de erro, semelhante indicada a seguir: Msg 3701, Level 11, State 1, Line 1 Cannot drop the database Exemplo4, because it does not exist or you do not have permission. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 3 TRABALHANDO COM BANCO DE DADOS NO MICROSOFT SQL SERVER 2005 Curso Completo0000155 CONCLUSO Neste captulo voc aprendeu uma srie de conceitos importantes e que sero utilizados no restante deste livro. Mostrei como utilizar as duas principais ferramentas de administrao do SQL Server 2005: SQL Server Management Studio. Janela para execuo do comandos T-SQL. Utilizamos o SQL Server Management Studio para navegar pelos principais componentes de um servidor SQL Server 2005 e de um Banco de Dados. Tambm aprendemos a configurar as diversas opes de uma instncia do SQL Server 2005, como por exemplo o gerenciamento de memria, gerenciamento dos processadores, segurana, etc. Tambm vimos qual a estrutura de um Banco de Dados no SQL Server 2005, o qual formado por uma srie de arquivos do sistema operacional, arquivos estes que podem ser de um dos seguintes tipos: Um arquivo de dados primrio (Primary File). Um ou mais arquivos de dados secundrios (Secondary File). Um ou mais arquivos de log (Log File). Na seqncia, aprendemos sobre o sistema de armazenamento do Windows 2000 e do Windows Server 2003, bem como sobre as implementaes de RAID. Na parte final deste captulo tratamos da criao e alterao de Bancos de Dados utilizando a interface grfica do SQL Server Management Studio e tambm comandos T-SQL executados na janela de execuo de comandos, a qual faz parte do SQL Server Management Studio. Tambm aprendemos a alterar e excluir Bancos de Dados, utilizando o SQL Server Management Studio e comandos T-SQL. O prximo passo natural aprendermos a criar e gerenciar os diversos elementos que compem um Banco de Dados. O primeiro elemento so as tabelas. Mas isso j assunto para o Captulo 4. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Captulo 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1580000Curso Completo N O T A INTRODUO No Captulo 3, aprendemos a criar Bancos de Dados utilizando o SQL Server Management Studio e tambm a janela para execuo de comandos T-SQL. Porm, um Banco de Dados em si no serve para nada. No se assuste com a afirmao, pois exatamente isso. Ou seja, s o banco de dados no serve para absolutamente nada. Precisamos criar os diversos elementos que compem o banco de dados, para que este possa ter alguma utilidade. Neste captulo aprenderemos sobre os seguintes elementos, que fazem parte de um banco de dados: Tipos de dados Tabelas ndices Iniciaremos o captulo aprendendo sobre os tipos de dados predefinidos no SQL Server 2005. Conforme explicarei em detalhes, cada coluna deve conter dados de um determinado tipo, por exemplo: Texto, Nmeros inteiros, Nmeros reais, Data e hora, etc. Na seqncia aprenderemos a criar tabelas em um Banco de Dados do SQL Server 2005. Utilizaremos o SQL Server Management Studio e tambm comandos T-SQL. Veremos diversos exemplos de criao de tabelas e definio dos campos que fazem parte da tabela. Tambm aprenderemos a definir as propriedades de cada campo. Uma vez criadas as tabelas, podemos aprender a definir ndices para as tabelas. Tambm aprenderemos a definir um campo como sendo a chave primria da tabela. Conforme ser explicado, os ndices desempenham um papel muito importante no desempenho das consultas (views). Uma correta definio dos ndices pode ser um auxiliar valioso para obter um desempenho otimizado. Aprenderemos a criar ndices utilizando o SQL Server Management Studio e utilizando comandos T-SQL. Aps ter estudado este captulo, o amigo leitor dever estar habilitado para: Criar tabelas em um Banco de Dados do SQL Server 2005. Definir as caractersticas dos campos de uma tabela. Entender a importncia da criao de ndices para o desempenho de consultas. Saber criar ndices utilizando as diversas ferramentas disponveis. Observe que, neste captulo, iremos criar tabelas e ndices. No faremos a entrada de dados, inserindo registros nas tabelas que forem criadas neste captulo. Conforme descrito anteriormente, o SQL Server 2005 no um front-end para desenvolvimento de aplicaes. A entrada de dados em um Banco de Dados do SQL Server (ou do ORACLE, DB2 da IBM, etc.), normalmente, feita atravs de formulrios de uma aplicao desenvolvida em Visual Basic, Delphi, ASP ou qualquer outra ferramenta de desenvolvimento capaz de se comunicar com um Banco de Dados do SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000159 FUNDAMENTOS EM: PROJETO DE BANCO DE DADOS E TIPOS DE DADOS DO SQL SERVER 2005 PR-REQUISITOS Noes dos conceitos bsicos sobre Bancos de Dados Relacionais. METODOLOGIA Apresentao dos tipos bsicos do SQL Server 2005. Consideraes sobre o projeto de Bancos de Dados. Conforme vimos no Captulo 1, antes de comearmos a criar um Banco de Dados, devemos fazer uma anlise bastante criteriosa para determinar quais as tabelas que faro parte do banco de dados; quais campos faro parte de cada tabela; quais as propriedades de cada um dos campos; qual campo ser a chave primria de cada tabela; quais os relacionamentos entre as tabelas e as definies de Integridade Referencial. O passo final a aplicao das regras de normalizao. Uma vez definidos todos estes pontos, teremos o Diagrama Entidade x Relacionamentos, o qual serve como um mapa para a estrutura do Banco de Dados. Neste captulo iremos aprender a criar as tabelas definidas no Diagrama Entidades x Relacionamentos. Antes de criarmos as tabelas, vamos aprender sobre os tipos de dados disponibilizados pelo SQL Server 2005. O tipo do dado de um determinado campo define quais as informaes que podem ser armazenadas no campo. Por exemplo, um campo que definido como Inteiro no poder conter caracteres nem nmeros com decimais. J um campo do tipo Data no ir aceitar uma entrada como: 30/02/2005, a qual uma data invlida. J se, ao invs de data, o campo fosse do tipo Texto, a entrada 30/02/2005 seria aceita. Observe que, ao definir um tipo para cada campo, j temos uma maneira de limitar os valores que so aceitos para este campo. No projeto do Banco de Dados tambm definimos os tipos dos diversos campos de cada tabela. Na Tabela 4.1 temos os principais tipos de dados disponveis no SQL Server 2005. Tipo Descrio Tamanho bigint Um inteiro de 8 bytes. Seus valores variam 8 bytes na seguinte faixa: -2^63 (-9,223,372,036,854,775,808) at 2^63 -1 (9,223,372,036,854,775,807) binary(n) Um binrio de tamanho fixo (n bytes), onde o n+4 bytes valor mximo de n 8000. Devemos utilizar este tipo, quando os dados de uma coluna tero mais ou menos o mesmo tamanho, como por exemplo a foto de um funcionrio. Tabela 4.1 Principais tipos de dados do SQL Server 2005. Continua proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1600000Curso Completo Tipo Descrio Tamanho bit um inteiro que somente pode conter os valores 0, 1 Varivel. Depende do ou NULL. Colunas com o tipo de dados bit no podem nmero de colunas. ser indexadas. O Microsoft SQL Server 2005 otimizou o espao utilizado para armazenar valores do tipo bit. Por exemplo, se em uma tabela houver at oito colunas com dados do tipo bit, estas colunas sero armazenadas como um byte; se houver entre 9 e 16 colunas do tipo com dados do tipo bit, estas colunas sero armazenas como dois bytes e assim por diante. Valores do tipo String, True e False podem ser convertidos para dados do tipo Bit, sendo True = 1 e False = 0. char(n) Texto de tamanho fixo (n bytes), com caracteres no n bytes Unicode. O valor mximo para n 8000. cursor Contm uma referncia (ponteiro) para um cursor. No aplicvel. Falaremos mais sobre cursores a partir do Captulo 9. datetime Data e hora na perodo de 01/01/1753 31/12/9999. 8 bytes float(n) Um nmero decimal que pode variar de -1.79E+38 at 4 a 8 bytes +1.79E+38. O valor n indica o nmero de bits utilizado dependendo da para armazenar a mantissa do nmero e varia de 1 a 53. preciso image Utilizado para dados binrios de tamanho varivel e 16 bytes por pointer maiores do que 8000 bytes. Tem um tamanho mximo de (2^31) -1 byte (cerca de 2 GB). Uma coluna deste tipo simplesmente um ponteiro para a localizao da imagem. Os dados da imagem so armazenados separadamente dos dados da tabela. integer Um inteiro variando de -(2^31) (-2.147.483.648) 4 bytes ou int at (2^31)-1 (+.147.483.647) money Valores monetrios variando de -(2^63) 8 bytes (-922.337.203.685.477,5808) at +(2^63)-1 (+922.337.203.685.477,5807). nchar(n) Dados do tipo caractere, de tamanho fixo (n) com 2 x nmero de caracteres Unicode. n pode variar de 1 at 4000. caracteres digitados Caracteres Unicode utilizam 2 bytes por caractere, no campo. mas em contrapartida suportam todos os caracteres internacionais, tais como os utilizados no alfabeto Chins ou rabe. ntext Pode conter caracteres Unicode. um campo de 16 bytes por tamanho varivel, podendo conter at (2^30) ponteiro, mais 2 caracteres (1.073.741.823 caracteres). A coluna bytes x nmero do tipo ntext no contm os dados mas sim um caracteres digitados ponteiro para o arquivo com os dados, os quais so para o campo. armazenados separadamente dos dados da tabela. nvarchar Pode conter caracteres Unicode. um campo de 2 bytes vezes o tamanho varivel, com n variando de 1 at 4000. nmero de caracteres digitados para o campo. real um nmero decimal variando de 1.18E 38 4 bytes at 3.40E + 38. o mesmo que float(24). Continuao Continua proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000161 Tipo Descrio Tamanho smalldatetime Pode conter valores de data e hora, no 4 bytes perodo de 01/01/1900 at 06/06/2079. smallint Pode conter nmeros inteiros na faixa de -(2^15) 2 bytes (-32.768) at (2^15)-1 (32.767). smallmoney Pode conter valores monetrios na faixa de 4 bytes -214.748,3648 at 214.748,3647. sql_variant Permite valores de diferentes tipos. Varivel table Pode ser utilizada para tabelas temporrias, para Varia com a definio definir uma varivel local ou para retornar da tabela valores a partir de uma funo definida pelo usurio. text Utilizado para valores de texto com tamanho 16 bytes por caractere varivel e maiores do que 8000 caracteres. Pode conter at (2^31)-1. timestamp Uma coluna do tipo timestamp atualizada, 8 bytes automaticamente, toda vez que uma linha for inserida ou alterada. Podemos ter somente uma coluna do tipo timestamp por tabela. tinyint Inteiro variando de 1 at 255. 1 byte unique-identifier Contm um binrio de 16 bytes, o qual um 16 bytes globally unique identifier (GUID). No so gerados dois valores iguais, nunca, para um campo deste tipo. varbinary Pode conter um valor binrio de tamanho Tamanho dos varivel de 1 at 8000 bytes. dados + 4 bytes varchar(n) Pode conter dados do tipo caractere, no Unicode, Tamanho dos variando n de 1 at 8000 caracteres no mximo. dados digitados Continuao Dois novos tipos de dados foram disponibilizados com o SQL Server 2005: varbinary(max) e XML. Vamos apresentar estes dois tipos, logo a seguir. Um dado do tipo varbinary(n | max) pode conter dados binrios, de tamanho varivel. O valor de n pode variar de 1 at 8000. Max indica o tamanho mximo de armazenamento, o qual de 2^31 1 bytes. O espao de armazenamento igual ao tamanho do dado + 2 bytes. Quando o valor de n no for especificado, ser assumido como n=1. O uso de varbinary(n | Max) indicado para colunas, cujo tamanho dos dados varia muito de registro para registro. Quando o tamanho for mais ou menos fixo, mais indicado o uso do tipo binary. Tambm recomendado o uso de varbinary(Max), quando o tamanho dos dados exceder 8000 bytes. Grande parte das melhorias do SQL Server 2005 so na rea do tratamento e trabalho de dados no formato XML. Uma das novidades justamente a disponibilidade de um novo tipo possvel para uma coluna, justamente o tipo XML. Este tipo de dado permite que documentos XML ou partes de documentos sejam gravados em colunas de uma tabela e que o formato XML seja mantido (o que evidentemente o mais importante). possvel a criao de colunas e tambm de variveis de programao do tipo XML, as quais podero conter dados no padro XML. Este um grande avano e uma novidade muito bem vinda, para todos que precisam trabalhar com o padro XML, no SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1620000Curso Completo Para detalhes sobre os tipos de dados disponveis no SQL Server 2005, voc pode consultar o tpico Transact-SQL Reference, no Books OnLine. ALGUMAS DICAS PARA DEFINIR OS TIPOS DE DADOS PARA UMA COLUNA Vamos ver algumas consideraes que podem nos ajudar na escolha do tipo de dados mais adequado para cada coluna. O fator determinante na escolha do tipo de dados de uma coluna so os prprios dados a serem armazenados na coluna. Por exemplo, se a coluna for armazenar a data de aniversrio do cliente, na tabela Clientes obvio que o campo deve ser do tipo datetime, a menos que haja algum outro motivo. Campos que iro conter valores devem ser do tipo respectivo, isto , se o campo ir conter somente nmeros inteiros, podemos utilizar os tipos integer, smallint ou tinyint, dependendo da faixa de valores esperados para o respectivo campo. J se o campo contiver valores com decimais devemos optar pelos tipos real, float ou money, dependendo da faixa de valores. Embora paream consideraes bvias, muitas vezes so esquecidas na hora de projetar um Banco de Dados. Vamos considerar um campo que deva armazenar valores de CPF, tendo o seguinte formato: 111.111.111-11 Se quisermos armazenar no Banco de Dados os pontos e o trao, no poderemos definir o campo CPF como sendo do tipo integer, ao invs disso devemos defini-lo como sendo do tipo texto. Porm se quisermos armazenar apenas os nmeros podemos defini-lo como sendo do tipo integer. Outra questo que surge se podemos armazenar, no nosso exemplo, o campo CPF como do tipo texto e mesmo assim fazer clculos com este campo, como por exemplo calcular o DV Dgito Verificador (dois ltimos dgitos) do CPF. Tecnicamente isto possvel, pois podemos utilizar funes que retornam cada um dos caracteres do CPF e depois convert-los para nmeros de tal forma que possamos fazer os clculos necessrios, usando programao (que seja programao T-SQL ou usando as linguagens do Framework .NET, tais como VB.NET e C#, uma vez que o SQL Server 2005 completamente integrado com o Framework .NET). Porm este procedimento pode ocasionar processamento adicional, o que prejudica o desempenho das aplicaes que esto acessando o Banco de Dados. Estas pequenas questes reforam a idia de que devemos fazer uma anlise criteriosa na fase de projeto do Banco de Dados. Outro fator que devemos levar em considerao se vamos utilizar campos de tamanho fixo ou cam- pos de tamanho varivel. De uma maneira geral devemos utilizar campos de tamanho fixo se os dados de uma coluna tiverem um tamanho que no varia muito. Quando os dados de uma coluna sofrem grandes variaes de tamanho, a utilizao de um tipo de dados de tamanho fixo pode causar um desperdcio de espao em disco. Vamos considerar o seguinte exemplo: Uma coluna do tipo texto. Definida com um tamanho fixo de 250 caracteres. A tabela possui 200.000 registros. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000163 Em mdia 80% dos registros armazenam apenas 50 caracteres neste campo, o qual foi definido como tamanho de 250 por causa de alguns poucos registros em que o campo atinge este tamanho. Vamos calcular o desperdcio: 80% de 200.000 registros = 160.000 registros 160.000 registros vezes um desperdcio de 200 bytes por registro Desperdcio total = 30,5 MB Mantidas as mesmas propores, se esta tabela tiver 1.000.000 de registros, teramos um desperdcio de 152,5 MB. Multiplique isso por diversas tabelas e diversos bancos de dados, e poderemos chegar a desperdcios gigantescos em um nico servidor SQL Server 2005. Nestas situaes pode ser justificvel a utilizao, por exemplo, de um campo de texto de tamanho varivel, com tamanho mximo definido em 250 char(250). Nesta situao o espao ocupado no seria 250 bytes para todos os campos, mas somente o tamanho real dos dados digitados no campo, conforme descrito na Tabela 4.1. Mas, ento, por que no utilizamos sempre campos de tamanho varivel? A resposta simples: porque campos de tamanho varivel acarretam processamento adicional para o Banco de Dados, e estes somente devem ser utilizados em situaes onde realmente sejam necessrios. Estas situaes tipicamente ocorrem quando no sabemos com preciso a variao do tamanho dos dados em um determinado campo, e a utilizao de um tamanho fixo acarretaria muito desperdcio de espao em disco. Agora vamos aprender a criar tabelas no SQL Server 2005. FUNDAMENTOS EM: CRIAO DE TABELAS COM O SQL SERVER MANAGEMENT STUDIO PR-REQUISITOS Noes dos conceitos bsicos sobre Bancos de Dados Relacionais. Conhecer os tipos bsicos de dados do SQL Server 2005. Saber utilizar o SQL Server Management Studio. METODOLOGIA Utilizao do SQL Server Management Studio para a criao de tabelas. TCNICA Criao de tabelas nos Bancos de Dados criados no Captulo 3. Agora vamos aprender a criar tabelas utilizando o SQL Server Management Studio. Mais uma vez a melhor maneira de aprendermos atravs de um exemplo prtico. Vamos criar a tabela Clientes, no banco de dados Exemplo1 (banco de dados este que foi criado no Captulo 3, na instncia SERVIDOR\SQL2005) com os campos indicados na Tabela 4.2. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1640000Curso Completo Vamos criar esta tabela no Banco de Dados Exemplo1, lembrando que este banco de dados foi criado no Captulo 3, na instncia SERVIDOR\SQL2005. Iremos inicialmente criar a tabela Clientes definindo apenas caractersticas bsicas: nome, tamanho mximo, tipo e se o campo pode conter valores nulos ou no. Na seqncia, apresentaremos mais um exemplo, onde vamos trabalhar com mais propriedades de cada campo da tabela. Exemplo prtico: Criando a tabela Clientes, no banco de dados Exemplo1, da instncia SERVIDOR\SQL2005, usando o SQL Server Management Studio. 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Server Management Studio). 2. Na janela Object Explorer, clique no sinal de mais ao lado da instncia SERVIDOR\SQL2005 para expandi-la. 3. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Data- bases para expandi-la. Abaixo de Databases exibida uma lista com os bancos de dados disponveis na instncia SERVIDOR\SQL2005. 4. D um clique no sinal de +, ao lado da opo Databases, para expandi-la. Ser exibida uma lista dos bancos de dados disponveis, dentre os quais devem estar o banco de dados Exemplo1, criado no Captulo 3. 5. D um clique no sinal de + ao lado de Exemplo1, para mostrar as opes disponveis. Localize a opo Tables. D um clique com o boto direito do mouse na opo Tables. No menu de opes que surge, d um clique na opo New Table. Mais ou menos no centro do SQL Server Management Studio ser exibida uma janela para a criao de uma nova tabela, conforme indicado na Figura 4.1. Esta janela muito parecida com a janela para a criao de novas tabelas, em um banco de dados do Microsoft Access. Na parte de cima, em cada linha, criamos um novo campo. Aps digitar o nome do campo, na coluna Column Name, na parte de baixo da janela, sero habilitadas as diversas propriedades do campo. O conjunto de propriedades diferente para cada tipo de campo. Por exemplo, Campo Tipo de dado CdigoCliente Integer NomeEmpresa Texto de, no mximo, 50 caracteres. Rua Texto de, no mximo, 50 caracteres. Bairro Texto de, no mximo, 20 caracteres. Cidade Texto de, no mximo, 25 caracteres. CEP Integer DataCadastro datetime Tabela 4.2 A tabela Clientes. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000165 campos do tipo char tero um conjunto diferente de propriedades do que campos do tipo datetime. Na parte de cima da janela para a criao de tabelas, temos trs colunas, as quais esto descritas a seguir: Column Name: Nesta coluna definimos o nome do campo. Data Type: Aqui podemos definir o tipo de dados para o campo que est sendo criado. Podemos selecionar em uma lista de tipos predefinidos. Caso o usurio tenha definido algum tipo personalizado, este tambm ir aparecer nesta lista. Veremos como criar tipos personalizados ainda neste captulo. Allow Nulls: Serve para definir se o campo que est sendo criado ir ou no aceitar valores nulos. Valor Null diferente de valor em branco. Uma valor Null de tipo desconhecido e, ao ser utilizado em funes e em programao, ir retornar um erro. J valores em branco no retornam erros ao serem utilizados como parmetros de funo ou em variveis de programao. Por exemplo, se o usurio entrar em um campo do tipo texto e pressionar Enter, ele estar criando uma string de comprimento zero, a qual um valor em branco, diferente de um valor Null. Figura 4.1 A janela para criao de uma nova tabela. Na parte de cima desta janela definimos os campos, um por linha. medida que estamos definindo um determinado campo, podemos definir propriedades adicionais para o mesmo. Estas propriedades proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1660000Curso Completo aparecem na parte inferior da janela. O conjunto de propriedades diferente para diversos tipos de campo, isto , as propriedades para um campo do tipo integer so diferentes das propriedades para um campo do tipo datetime. Um detalhe importante a ser observado que as propriedades da parte de baixo da janela so referentes ao campo da linha onde est o cursor, na parte de cima da janela. importante estarmos cientes deste detalhe, para no alterarmos as propriedades de um campo quando na verdade estamos querendo alterar as propriedades de um outro campo. No prximo exerccio aprenderemos sobre estas diversas propriedades. No lado direito da janela de criao de campos, exibida a janela Properties, nas quais so exibidas as propriedades gerais da tabela que est sendo criada, conforme indicado na Figura 4.2: Figura 4.2 A janela de propriedades da tabela. Por exemplo, uma das propriedades a propriedade (Name), a qual define o nome da tabela. O SQL Server 2005 atribui nomes, automaticamente, nos formatos Table_1, Table_2 e assim por diante. Vamos alterar a propriedade Name e vamos coloc-la como Clientes. Com isso estou definindo o nome da tabela. Aprenderemos sobre as demais propriedades, no decorrer deste livro. 6. Vamos comear criando o campo CdigoCliente. Para isso preencha a primeira linha com as seguintes informaes: Column Name -> CdigoCliente Data Type -> int Allow Null -> No (caixinha desmarcada). Sua janela deve estar conforme indicado na Figura 4.3. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000167 Figura 4.3 Definindo o campo CdigoCliente. 7. Defina os demais campos, conforme as seguintes orientaes: Column Name -> NomeEmpresa Data Type -> char Size -> 50 (ao definir o tipo do campo, sero exibidas as propriedades do campo, na parte de baixo da janela. Defina a propriedade Lenght com o tamanho desejado. Que neste caso 50). Allow Null -> No (caixinha desmarcada) Column Name -> Rua Data Type -> char Size -> 50 (Defina a propriedade Lenght com o valor 50) Allow Null -> No (caixinha desmarcada) Column Name -> Bairro Data Type -> char Size -> 20 (Defina a propriedade Lenght com o valor 20) Allow Null -> No (caixinha desmarcada) Column Name -> Cidade Data Type -> char Size -> 25 (Defina a propriedade Lenght com o valor 25) Allow Null -> No (caixinha desmarcada) Column Name -> CEP Data Type -> int (vamos digitar o CEP sem o tracinho, por exemplo: 97070888. Por isso vamos usar um campo do tipo int e no do tipo char) Allow Null -> No (caixinha desmarcada) Column Name -> DataCadastro Data Type -> datetime Allow Null -> No (caixinha desmarcada) Aps a definio destes campos, sua janela deve estar conforme indicado na Figura 4.4. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1680000Curso Completo Figura 4.4 Definio dos campos da tabela Clientes. Agora hora de salvarmos a tabela no Banco de Dados Exemplo1. 8. D um clique no boto Save (boto da barra de ferramentas, com o desenho de um disquete) ou pressione Ctrl+S. 9. Caso voc ainda no tenha definido o nome da tabela, atravs da definio da propriedade Name, surgir uma janela pedindo o nome da tabela. Digite Clientes e d um clique no boto OK. 10. Voc estar de volta janela para definio dos campos. Feche-a. 11. Voc estar de volta ao SQL Server Management Studio. D um clique no boto com o sinal de mais ao lado do Banco de Dados Exemplo1 para expandi-lo. 12. D um clique no sinal de + ao lado da opo Tables, para expandi-la. A tabela Clientes j deve estar aparecendo na listagem de tabelas do Banco de dados Exemplo1, conforme indicado na Figura 4.5. Se a tabela Clientes ainda no estiver sendo exibida, clique na opo Tables, para selecion-la e pressione a tecla F5, para atualizar a listagem. 13. Clique com o boto direito do mouse na tabela Clientes, aponte para Script Table as -> SELECT T0 New Query Editor Window. Ser aberta a janela para execuo de comandos T-SQL, j com o comando SELECT necessrio para exibir todos os dados da tabela Clientes. Para executar o comando, pressione a tecla F5. Nenhum registro ser retornado. Obviamente que este o resultado esperado, pois recentemente criamos a tabela Clientes, definindo quais campos faro parte da tabela e as caractersticas bsicas de cada campo. Porm, nenhum registro ainda foi inserido na tabela. Por isso que, como resultado da execuo do comando SELECT na tabela, obtivemos um resultado em branco, simplesmente porque ainda no existem registros na tabela, apenas a sua estrutura que foi definida. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000169 Figura 4.5 A tabela Clientes recm-criada. 14. Feche o SQL Server Management Studio. Conforme descrito no exemplo anterior, as tabelas criadas pelo prprio SQL Server 2005 iniciam com sys. Esta uma conveno que facilita a identificao das tabelas com informaes sobre o prprio Banco de Dados. Quando criamos nossas tabelas tambm podemos utilizar uma conveno de nomes, o que pode vir a facilitar a identificao e o desenvolvimento de aplicativos. Por exemplo, poderamos iniciar todas as tabelas criadas pelo DBA por usr, como um prefixo que identifica as tabelas dos usurios. Voc tambm pode, a qualquer momento, alterar a definio da estrutura de uma tabela. Por exemplo, podemos inserir novos campos, renomear campos ou alterar as caractersticas de um ou mais campos. Porm devemos ter muito cuidado com estes procedimentos. Se voc, por exemplo, renomear uma tabela, todos os aplicativos que acessam dados desta tabela precisaro ser alterados (alterar significa modificar o cdigo do aplicativo, recompilar o cdigo e reinstalar, em todas as estaes de trabalho, a nova verso do programa) e o nome da tabela atualizado no cdigo destes aplicativos. Por isso que de grande importncia o cuidadoso planejamento do Banco de Dados antes da sua implementao efetiva. Um bom planejamento minimiza ou at mesmo elimina alteraes deste tipo, as quais iro impactar os aplicativos que acessam dados no Banco de Dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1700000Curso Completo Para alterar as propriedades de uma tabela basta localiz-la no SQL Server Management Studio, clicar com o boto direito do mouse na tabela e, no menu de opes que surge, clicar na opo Modify Table. Ser aberta a janela com a definio de todos os campos, janela esta que voc utilizou no exemplo anterior, onde voc poder alterar os campos existentes ou adicionar novos campos. Agora vamos a um exemplo mais detalhado. Vamos criar a tabela Funcionrios com os campos descritos na Tabela 4.3. Alm disso vamos aprender sobre as diversas propriedades que cada campo pode apresentar. Campo Tipo de dado/Tamanho mximo CdigoFuncionrio Integer NomeCompleto Texto de, no mximo, 50 caracteres. Cargo Texto de, no mximo, 30 caracteres. DataNascimento datetime DataContrato datetime Rua Texto de, no mximo, 50 caracteres. Bairro Texto de, no mximo, 20 caracteres. Cidade Texto de, no mximo, 25 caracteres. CEP Integer FoneResidencial Texto de, no mximo, 25 caracteres. Foto image Tabela 4.3 A tabela Funcionrios. Vamos criar esta tabela no Banco de Dados Exemplo1, criado no captulo anterior, na instncia SERVIDOR\SQL2005. Neste exemplo, alm das propriedades bsicas de cada campo, aprenderemos a definir uma srie de outras propriedades. Exemplo prtico: Criando a tabela Funcionrios, no banco de dados Exemplo1, usando o SQL Server Management Studio. 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Server Management Studio). 2. Na janela Object Explorer, clique no sinal de mais ao lado da instncia SERVIDOR\SQL2005 para expandi-la. 3. D um clique no sinal de +, ao lado da opo Databases, para expandi-la. Ser exibida uma lista dos bancos de dados disponveis, dentre os quais deve estar o banco de dados Exemplo1, criado no Captulo 3. 4. D um clique no sinal de + ao lado de Exemplo1, para mostrar as opes disponveis. Localize a opo Tables. D um clique com o boto direito do mouse na opo Tables. No menu de opes que surge, d um clique na opo New Table. Mais ou menos no centro do SQL Server Management Studio ser exibida uma janela para a criao de uma nova tabela, conforme j indicado anteriormente na Figura 4.1. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000171 5. Vamos comear criando o campo CdigoFuncionrio. Para isso preencha a primeira linha com as seguintes informaes: Column Name -> CdigoFuncionrio Data Type -> int Allow Null -> No (caixinha desmarcada). Na parte de baixo da janela, conforme j descrito anteriormente, temos as diversas propriedades que podem ser configuradas, para o campo que est sendo criado. Por padro, estas propriedades so exibidas por categoria (General, Table designer e assim por diante). Voc pode exibir as propriedades em ordem alfabtica, clicando no segundo boto da barra de botes disponvel logo acima das propriedades ( um boto com A Z e uma seta). Clicando no primeiro boto, volta a exibio por categoria. Na parte de baixo da janela temos as seguintes propriedades adicionais, que podem ser configuradas para os cam- pos de uma tabela: Description: Esta propriedade define o texto que ser exibido na coluna quando os dados da tabela forem exibidos, usando um comando SELECT, conforme j descrito anteriormente. Se esta propriedade no estiver definida, o texto a ser exibido o prprio nome do campo. Para o campo CdigoFuncionrio digite o cdigo do funcionrio para esta propriedade. Default Value or Binding: Nesta propriedade aparece uma lista com todas as global con- straints j definidas no Banco de Dados (se a lista no estiver disponvel, porque ainda no foi criada nenhuma global constraint). O valor default um valor que ser atribudo ao campo caso o usurio no insira nenhum valor neste campo. Por exemplo, vamos supor que 99% dos funcionrios sejam da cidade de So Paulo. Podemos definir So Paulo como valor default para o campo Cidade. Desta maneira sempre que uma aplicao for inserir dados na tabela Funcionrios, o campo Cidade j aparece com o valor So Paulo preenchido. Caso o funcionrio que est sendo cadastrado seja de uma outra cidade s colocar o cursor no campo Cidade e digitar o nome da cidade. Com isso podemos ver que a definio de um valor padro no impede que valores diferentes sejam digitados no campo. Para o campo CdigoFuncionrio no existe valor padro, pois cada funcionrio possui um cdigo diferente. Neste caso deixe esta propriedade em branco. Aprenderemos a criar Constraints nos captulos sobre desenvolvimento. Identity: Define se a coluna ser utilizada pelo SQL Server como uma coluna de identificao. Veremos a funo deste tipo de coluna no captulo sobre replicao. No altere esta propriedade. Identity Seed: Define o valor inicial para colunas do tipo Identity. Somente est habilitada quando a propriedade Identity estiver definida em Yes. No altere esta propriedade. Identity Increment: Define o valor do incremento para colunas do tipo Identity. Somente est habilitada quando a propriedade Identity estiver definida em Yes. No altere esta propriedade. Is RowGuid: Define se esta coluna ser utilizada pelo SQL Server como uma coluna do tipo GUID. Somente pode ser definida em Yes para colunas em que Identity foi definida em Yes. No altere esta propriedade. Formula: Exibe a frmula para o caso de colunas calculadas. Lembrando do Captulo 1, sempre que possvel devemos evitar a presena de colunas calculadas. No altere esta propriedade. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1720000Curso Completo Collation: Exibe o valor de Collation definido para a coluna. Para maiores informaes sobre Collation consulte os Captulos 2 e 3, bem como o Books OnLine. No altere esta propriedade. Indexed: Esta propriedade somente aparece se houver um ndice definido para o campo. Como estamos criando uma nova tabela, ainda no temos ndices definidos. Os valores possveis so: No (No existe ndice para esta coluna); Yes (duplicates OK), e existe ndice e ele aceita valores repetidos, e Yes (no duplicates) existe ndice e ele no aceita valores duplicados, o qual utilizado para campos do tipo Chave Primria. Para maiores informaes sobre campos que so chave primria, consulte o Captulo 1. No nosso exemplo alteramos apenas a propriedade Description, conforme indicado na Figura 4.6. Figura 4.6 Propriedades do campo CdigoFuncionrio. 6. Defina os demais campos da tabela Funcionrios, e suas propriedades, conforme as orientaes a seguir: Campo NomeCompleto Column Name -> NomeCompleto Data Type -> Char Size -> 50 Allow Null -> No (caixinha desmarcada) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000173 Propriedades: Description: Nome do Funcionrio. Default Value: Em branco. Identity: No altere. Identity Seed: No altere. Identity Increment: No altere. Is RowGuid: No altere. Formula: No altere. Collation: No altere. Campo Cargo Column Name -> Cargo Data Type -> Char Size -> 30 Allow Null -> No (caixinha desmarcada). Propriedades: Description: Cargo do Funcionrio. Default Value: Em branco. No altere as demais propriedades. Campo DataNascimento Column Name -> DataNascimento Data Type -> datetime Size -> 8 (definido pelo prprio SQL Server). Allow Null -> No (caixinha desmarcada). Propriedades: Description: Data de Nascimento. Default Value: Em branco. No altere as demais propriedades. Campo DataContrato Column Name -> DataContrato Data Type -> datetime Size -> 8 (definido pelo prprio SQL Server). Allow Null -> No (caixinha desmarcada). proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1740000Curso Completo Propriedades: Description: Data de Contratao Default Value: Em branco. No altere as demais propriedades. Campo Rua Column Name -> Rua Data Type -> char Size -> 50 Allow Null -> No (caixinha desmarcada). Propriedades: Description: Rua do Funcionrio. Default Value: Em branco. No altere as demais propriedades. Campo Bairro Column Name -> Bairro Data Type -> char Size -> 20 Allow Null -> No (caixinha desmarcada). Propriedades: Description: Bairro do Funcionrio. Default Value: Em branco. No altere as demais propriedades. Campo Cidade Column Name -> Cidade Data Type -> char Size -> 25 Allow Null -> No (caixinha desmarcada). Propriedades: Description: Cidade do Funcionrio. Default Value: So Paulo (estamos definindo o valor padro como So Paulo, pois a maioria dos funcionrios da cidade de So Paulo). Observe que, aps definirmos o valor padro, o SQL Server coloca o valor definido entre apstrofes: So Paulo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000175 No altere as demais propriedades. Campo CEP Column Name -> CEP Data Type -> int Size -> 4 Allow Null -> No (caixinha desmarcada). Propriedades: Description: CEP Default Value: Em branco. No altere as demais propriedades. Campo FoneResidencial Column Name -> FoneResidencial Data Type -> char Size -> 25 Allow Null -> No (caixinha desmarcada). Propriedades: Description: Telefone Residencial. Default Value: Em branco. No altere as demais propriedades. Campo Foto Column Name -> Foto Data Type -> image Size -> 16 (definido automaticamente pelo SQL Server. Conforme descrito anteriormente este tamanho de 16 bytes simplesmente um ponteiro que aponta para o arquivo com a imagem. O arquivo com a imagem pode conter at cerca de 2 GB). Allow Null -> No (caixinha desmarcada). Propriedades: Description: Foto do Funcionrio. Default Value: Em branco. No altere as demais propriedades. Agora hora de salvarmos a tabela no Banco de Dados Exemplo1. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1760000Curso Completo 7. D um clique no boto Save (boto com o desenho de um disquete) ou pressionne Ctrl+S. Surge uma janela pedindo o nome da tabela. Digite Funcionrios e d um clique no boto OK. 8. Voc estar de volta janela para definio dos campos. Feche-a. 9. Voc estar de volta ao SQL Server Management Studio. D um clique no boto com o sinal de mais ao lado do Banco de Dados Exemplo1 para expandi-lo. 10. D um clique no sinal de + ao lado da opo Tables. A tabela Funcionrios j deve estar aparecendo na listagem de tabelas do Banco de Dados Exemplo1, conforme indicado na Figura 4.7. Caso a tabela ainda no esteja aparecendo pressione a tecla F5 (Refresh) para atualizar a viso Tables do Banco de Dados Exemplo1. Figura 4.7 A tabela Funcionrios recm-criada. 11. Com isso criamos a tabela Funcionrios no banco de dados Exemplo1. Clique com o boto direito do mouse na tabela Funcionrios, aponte para Script Table as -> SELECT To New Query Editor Window. Ser aberta a janela para execuo de comandos T-SQL, j com o comando proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000177 SELECT necessrio, para exibir todos os dados da tabela Funcionrios. Para executar o comando, pressione a tecla F5. Nenhum registro ser retornado. Obviamente que este o resultado esperado, pois recentemente criamos a tabela Funcionrios, definindo quais campos faro parte da estrutura da tabela e as caractersticas bsicas de cada campo. Porm, nenhum registro ainda foi inserido na tabela. Por isso que como resultado da execuo do comando SELECT na tabela, obtivemos um resultado em branco, simplesmente porque ainda no existem registros na tabela, apenas a sua estrutura que foi definida. 12. Feche o SQL Server Management Studio. Agora j estamos craques na criao de tabelas com o SQL Server Management Studio. O prximo passo ser aprendermos a criar tabelas utilizando o comando CREATE TABLE, o qual ser executado na janela para execuo de comandos T-SQL, que j conhecemos bem. Mas antes disso vamos a um exerccio para que o leitor possa fixar os conceitos apresentados. Exerccio: Crie a tabela Fornecedores, utilizando o SQL Server Management Studio, com os campos indicados na Tabela 4.4. Campo Tipo de dado/Tamanho mximo CdigoFornecedor Integer NomeEmpresa Texto de, no mximo, 50 caracteres. NomeContato Texto de, no mximo, 30 caracteres. CargoContato Texto de, no mximo, 20 caracteres. Rua Texto de, no mximo, 50 caracteres. Bairro Texto de, no mximo, 20 caracteres. Cidade Texto de, no mximo, 25 caracteres. CEP Integer Fone Texto de, no mximo, 25 caracteres. FAX Texto de, no mximo, 25 caracteres. WebSite Texto de, no mximo, 100 caracteres. Tabela 4.4 A tabela Fornecedores. FUNDAMENTOS EM: CRIAO DE TABELAS USANDO COMANDOS T-SQL PR-REQUISITOS Noes dos conceitos bsicos sobre Bancos de Dados Relacionais. Saber utilizar a janela para execuo de comandos T-SQL. Noes sobre os tipos bsicos de dados do SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1780000Curso Completo METODOLOGIA Apresentao dos comandos T-SQL para criao de tabelas. TCNICA Criao de tabelas utilizando os comandos apresentados. Para criarmos uma tabela utilizamos o comando CREATE TABLE, na janela de execuo de comandos T-SQL, dentro do SQL Server Management Studio. A seguir temos a sintaxe deste comando, conforme descrito no Books Online: Sintaxe completa - Books OnLine - Transact SQL Reference: CREATE TABLE [ database_name.[ owner ] . | owner. ] table_name ( { < column_definition > | column_name AS computed_column_expression | < table_constraint > ::= [ CONSTRAINT constraint_name ] } | [ { PRIMARY KEY | UNIQUE } [ ,...n ] ) [ ON { filegroup | DEFAULT } ] [ TEXTIMAGE_ON { filegroup | DEFAULT } ] < column_definition > ::= { column_name data_type } [ COLLATE < collation_name > ] [ [ DEFAULT constant_expression ] | [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ] ] [ ROWGUIDCOL] [ < column_constraint > ] [ ...n ] < column_constraint > ::= [ CONSTRAINT constraint_name ] { [ NULL | NOT NULL ] | [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] [ WITH FILLFACTOR = fillfactor ] [ON {filegroup | DEFAULT} ] ] ] | [ [ FOREIGN KEY ] REFERENCES ref_table [ ( ref_column ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ] ] | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) } < table_constraint > ::= [ CONSTRAINT constraint_name ] { [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] { ( column [ ASC | DESC ] [ ,...n ] ) } [ WITH FILLFACTOR = fillfactor ] [ ON { filegroup | DEFAULT } ] ] | FOREIGN KEY [ ( column [ ,...n ] ) ] REFERENCES ref_table [ ( ref_column [ ,...n ] ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ] | CHECK [ NOT FOR REPLICATION ] ( search_conditions ) } proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000179 Este formato genrico no muito intuitivo, ou melhor, no nada intuitivo. Vamos simplificar um pouco. A seguir apresento uma sintaxe simplificada, somente com as principais opes para criar uma tabela com alguns campos. CREATE TABLE Nome_da_tabela Agora inicio a definio bsica dos campos da tabela ( Campo1 tipo_do_Campo1 NULL ou NOT NULL Campo2 tipo_do_Campo2 NULL ou NOT NULL Campo3 tipo_do_Campo3 NULL ou NOT NULL Campo4 tipo_do_Campo4 NULL ou NOT NULL <LCampo5 tipo_do_Campo5 NULL ou NOT NULL Campon tipo_do_Campon NULL ou NOT NULL ) A ttulo de exemplo, vamos criar a tabela Produtos, no banco de dados Exemplo1, da instncia SERVIDOR\SQL2005, com os campos indicados na Tabela 4.5. Campo Tipo de dado/Tamanho mximo CdigoProduto Integer NomeProduto Texto de, no mximo, 50 caracteres. CdigoFornecedor Integer CdigoCategoria Integer PreoUnitrio Money UnidadesEstoque Integer EstoqueMnimo Integer Descontinuado bit (0=sim, 1=no) Tabela 4.5 A tabela Produtos. Agora vamos criar esta tabela no Banco de Dados Exemplo1 da instncia SERVIDOR\SQL2005. Vamos utilizar, para isso, a janela de execuo de comandos do SQL Server Management Studio. Exemplo prtico: Utilizando a janela de execuo de comandos para criar a tabela Produtos, conforme descrito na Tabela 4.5. 1. Faa o logon com uma conta com permisso de administrador. 2. Abra o SQL Server Management Studio. 3. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para exibir as opes disponveis (utilize uma instncia do SQL Server 2005, disponvel no computador que voc est utilizando). 4. Clique no sinal de + ao lado da opo Databases, para exibir as opes disponveis. Localize o banco de dados Exemplo1 e clique com o boto direito do mouse, no banco de dados Exemplo1. No menu de opes que exibido, clique em New Query. Ser aberta a janela para execuo de comandos T-SQL, j descrita anteriormente. Digite o seguinte comando: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1800000Curso Completo N O T A Definio do nome da tabela. CREATE TABLE Produtos Inicio a definio dos campos. ( CdigoProduto int, NomeProduto char(50), CdigoFornecedor int, CdigoCategoria int, PreoUnitrio money, UnidadesEstoque int, EstoqueMnimo int, Descontinuado bit ) Certifique-se de ter clicado com o boto direito do mouse no banco de dados Exemplo1, pois, se voc tiver clicado em um outro banco de dados, a tabela Produtos ser criada no banco de dados no qual voc clicou. Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, a tabela Produtos ter sido criada no Banco de Dados Exemplo1 e a seguinte mensagem exibida: The command(s) completed successfully. Com isso, vemos que a tabela Produtos foi criada. 5. Mantenha a janela de execuo de comandos T-SQL aberta, pois vamos utiliz-la para mais alguns exemplos neste captulo. Agora vamos utilizar o SQL Server Management Studio para verificar se a tabela Produtos foi realmente criada. Exemplo: Verificando se a tabela Produtos foi realmente criada: 1. Se o SQL Server Management Studio no estiver aberto, abra-o. 2. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005. 3. Clique no sinal de mais ao lado de Databases para expandi-la. 4. Clique no sinal de mais ao lado do Banco de Dados Exemplo1 para exibir as suas opes. 5. Nas opes que surgem clique no sinal de + ao lado da opo Tables para exibir as tabelas do Banco de Dados Exemplo1. Observe que a tabela Produtos j deve aparecer na listagem de tabelas. Se a tabela Produtos ainda no aparecer na listagem de tabelas, clique na opo Tables do Banco de Dados Exemplo1 e pressione F5 para atualizar a listagem. 6. Feche o SQL Server Management Studio. No exemplo anterior criamos uma tabela utilizando as opes bsicas do comando CREATE TABLE. Vamos ver mais alguns exemplos deste comando, utilizando opes mais avanadas do CREATE TABLE. Mas antes disso vamos ver alguns limites do SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000181 N O T A O nmero mximo de tabelas que pode existir em um banco de dados limitado pelo nmero mximo de objetos que pode existir em um banco de dados do SQL Server 2005. Este nmero de: 2.147.483.647. O nmero mximo de colunas por tabela 1024. Os nmeros mximos de linhas e do tamanho de uma tabela so limitados apenas pelo espao disponvel em disco. O nmero mximo de bytes por linha de 8060. Se criarmos tabelas com colunas do tipo varchar, nvarchar ou varbinary, nas quais o total de bytes do registro excede 8060 bytes, a tabela ser criada, porm uma mensagem de aviso ser emitida. Ao efetuarmos alguma operao de alterao ou insero em que um determinado registro fique com mais do que 8600 bytes, receberemos uma mensagem de erro e o comando no ser executado. Um comando CREATE TABLE que inclui colunas do tipo sql_variant poder gerar o seguinte aviso: The total row size (xx) for table yy exceeds the maximum number of bytes per row (8060). Rows that exceed the maximum number of bytes will not be added. Algumas das opes do comando CREATE TABLE somente sero utilizadas no Captulo 9, onde aprenderemos a criar Constraints, Defaults e Rules. Conforme visto na seo anterior, podemos definir uma srie de propriedades para cada campo de uma tabela, utilizando o SQL Server Management Studio. A pergunta que fica : Tambm podemos definir estas opes utilizando o comando CREATE TABLE?. E a resposta sim. Mais uma vez vamos aprender atravs da utilizao de um exemplo prtico. Exemplo prtico: Como fao para definir que um campo no deve aceitar valores NULL? Vamos alterar um pouco o comando do exemplo anterior, conforme indicado a seguir: Definio do nome da tabela. CREATE TABLE Produtos Inicio a definio dos campos. ( CdigoProduto int NOT NULL, NomeProduto char(50) NOT NULL, CdigoFornecedor int NOT NULL, CdigoCategoria int NOT NULL, PreoUnitrio money NOT NULL, UnidadesEstoque int NOT NULL, EstoqueMnimo int NOT NULL, Descontinuado bit NOT NULL ) Este comando criaria a mesma tabela Produtos do exemplo anterior, porm sem permitir valores nulos nos campos da tabela. Para permitir NULL em algum campo, bastaria trocar NOT NULL por NULL. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1820000Curso Completo N O T A Assim como devemos criar uma padronizao para o nome dos Bancos de Dados e tabelas, tambm devemos ter um certo padro para a nomeao dos campos de uma tabela. Consulte a documentao da sua empresa para saber se j existe um documento definindo o padro para a nomeao de Bancos de Dados, tabelas e campos. Nomes de colunas, tabelas, campos ou qualquer objeto no SQL Server 2005 podem ter um tamanho mximo de 128 caracteres. Podemos incluir letras, dgitos e os smbolos: #, $, @ e _ nos nomes de objetos do SQL Server 2005. Exerccio: Para fixar a sintaxe do comando CREATE TABLE, crie a tabela Produtos Especiais, com os campos conforme descrito na Tabela 4.6. Campo Tipo de dado/Tamanho mximo NULL CdigoProdutoEsp Integer No NomeProdutoEsp Texto de, no mximo, 50 caracteres. No CdigoFornecedor Integer No CdigoCategoria Integer No PreoUnitrio money No UnidadesEstoque Integer No EstoqueMnimo Integer Sim EstoqueMximo Integer Sim Descontinuado bit (0=sim, 1=no) No Tabela 4.6 A tabela Produtos Especiais. FUNDAMENTOS EM: ALTERAR A ESTRUTURA DE UMA TABELA COM O SQL SERVER MANAGEMENT STUDIO PR-REQUISITOS Noes dos conceitos bsicos sobre Bancos de Dados Relacionais. Saber utilizar o SQL Server Management Studio. METODOLOGIA Utilizao do SQL Server Management Studio para alterar a estrutura de uma tabela. Embora no seja recomendado, podemos alterar a estrutura de uma tabela. No uma prtica recomendada, pois, se o Banco de Dados for bem projetado (conforme venho insistindo e repetindo diversas vezes no decorrer deste livro), no haver necessidade de alteraes na estrutura das tabelas. Mas caso seja necessria tal alterao, podemos faz-la utilizando o SQL Server Management Studio, conforme aprenderemos neste item, ou comandos T-SQL, conforme aprenderemos no item seguinte. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000183 N O T A Para alterar uma tabela, basta localiz-la no SQL Server Management Studio, clicar com o boto direito do mouse no nome da tabela e, no menu que surge, clicar na opo Modify Table. Ser exibida a janela com a estrutura da tabela. Nesta janela podemos fazer as seguintes alteraes, dentre outras: Excluir um campo: Para isso basta selecionar a linha que define o campo e pressionar a tecla Delete. Para selecionar uma linha, basta clicar no boto cinza, bem esquerda da linha, conforme exemplo indicado na Figura 4.8. Figura 4.8 Selecionando o campo a ser excludo. Alterar as propriedades de um campo, simplesmente editando as informaes para este campo. Incluir novos campos. Feitas as alteraes s clicar no boto Save ou pressionar Ctrl+S, para salvar as alteraes efetuadas. Muitas vezes, devido a prazos apertados, o cuidadoso projeto do Banco de Dados encarado como uma perda de tempo e deixado em segundo plano. Isso acaba por trazer uma srie de problemas que poderiam ser evitados com um cuidadoso projeto do Banco de Dados. Lembre que muito mais complicado remendar do que fazer bem feito da primeira vez. FUNDAMENTOS EM: ALTERAR A ESTRUTURA DE UMA TABELA COM COMANDOS T-SQL PR-REQUISITOS Noes dos conceitos bsicos sobre Bancos de Dados Relacionais. Saber utilizar a janela para execuo de comandos T-SQL. METODOLOGIA Apresentao dos comandos T-SQL para alterao de tabelas. TCNICA Alterar tabelas, utilizando os comandos apresentados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1840000Curso Completo Existem alguns comandos T-SQL que permitem que sejam feitas alteraes em uma tabela. Vamos aprender a utiliz-los. Para adicionar uma coluna em uma tabela j existente, utilizamos o seguinte comando: ALTER TABLE nome_da_tabela ADD nome_do_campo tipo_dado Vamos tentar o seguinte exemplo: ALTER TABLE CLIENTES ADD Campo1 Char(25) Not Null Este exemplo ir gerar a seguinte mensagem de erro: Server: Msg 4901, Level 16, State 1, Line 1 ALTER TABLE only allows columns to be added that can contain nulls or have a DEFAULT definition specified. Column Campo1 cannot be added to table CLIENTES because it does not allow nulls and does not specify a DEFAULT definition. Sem subestimar o conhecimento de ingls do amigo leitor, esta mensagem est nos dizendo que o comando ALTER TABLE somente permite que sejam adicionadas colunas que permitem valores nulos ou que possuem um valor padro definido para a coluna. Como no podemos brigar com o SQL Server 2005, vamos alterar um pouco o comando para que a coluna Campo1 que est sendo adicionada permita valores nulos. Nosso comando fica assim: ALTER TABLE CLIENTES ADD Campo1 Char(25) Agora nosso comando executa sem maiores problemas e recebemos a seguinte mensagem: The command(s) completed successfully. Exerccio: Utilize o SQL Server Management Studio e verifique se a coluna Campo1 realmente foi adicionada tabela Clientes, conforme indicado na Figura 4.9. Figura 4.9 A coluna Campo1 recm-adicionada. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000185 Observe que a coluna Campo1 admite valores nulos. Para excluir uma coluna em uma tabela, utilizamos o seguinte comando: ALTER TABLE nome_da_tabela DROP COLUMN nome_do_campo Vamos excluir a coluna Campo1 adicionada no exemplo anterior. ALTER TABLE Clientes DROP COLUMN Campo1 Este comando executa com sucesso e retorna a mensagem: The command(s) completed successfully. Exerccio: Utilize o SQL Server Management Studio e verifique se a coluna Campo1 realmente foi excluda da tabela Clientes. Tambm podemos fazer alteraes em uma coluna j existente, utilizando o comando ALTER COL- UMN. No exemplo a seguir, vamos adicionar um campo chamado teste, o qual do tipo smallint. Depois vamos alter-lo para o tipo int e finalmente vamos exclu-lo da tabela Clientes. Adicionando o campo teste do tipo smallint ALTER TABLE Clientes ADD teste smallint GO Alterando o tipo do campo para int ALTER TABLE Clientes ALTER COLUMN teste int GO Excluindo o campo teste ALTER TABLE Clientes DROP COLUMN teste Ao executarmos este comando recebemos a seguinte mensagem: Command(s) completed successfully. FUNDAMENTOS EM: TIPOS DE DADOS DEFINIDOS PELO USURIO PR-REQUISITOS Noes dos conceitos bsicos sobre Bancos de Dados Relacionais. Saber Utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL. Conhecer os tipos bsicos de dados do SQL Server 2005. METODOLOGIA Utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL, para criar tipos de dados personalizados. No incio do captulo vimos os diversos tipos de dados disponibilizados pelo SQL Server 2005. So os chamados Tipos de dados do sistema (System data types). Com o SQL Server 2005, o usurio pode criar seus prprios tipos de dados. Esta no nenhuma novidade do SQL Server 2005, j que linguagens proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1860000Curso Completo N O T A N O T A bastante antigas (e ainda muito utilizadas), tais como o C e C++, permitem a criao de tipos personalizados pelo usurio. Por exemplo, vamos supor que o usurio queira padronizar que todos os campos com nomes prprios, quer seja de funcionrios, clientes ou fornecedores, devam ser do tipo char com tamanho mximo de 50 caracteres. O usurio poderia criar um novo tipo chamado nome_prprio e definir este tipo como sendo char(50). Desta maneira, quando for criar as suas tabelas, o usurio pode definir os campos como sendo do tipo nome_prprio, que automaticamente ser assumido char(50). Uma das vantagens evidentes a facilidade de manuteno. Vamos supor que, aps algum tempo de utilizao do Banco de Dados, chegou-se concluso de que char(40) suficiente para os campos com nomes prprios. Para alterar a definio de todos os campos, bastaria alterar o tipo nome_prprio definido pelo usurio. Se no estivssemos utilizando um tipo definido pelo usurio, teramos que ir de tabela em tabela alterando o campo NomeDoFuncionrio de char(50) para char(40). Ao criar tipos definidos pelo usurio (User-defined data types), devemos utilizar um padro de nomes consistente, de tal forma que o nome seja um indicativo das caractersticas do tipo de dados. Ao criarmos um tipo definido pelo usurio, este somente estar disponvel no Banco de Dados onde o tipo tiver sido criado. Se criarmos um tipo definido pelo usurio no Banco de Dados Model, este tipo passar a fazer parte de todos os novos Bancos de Dados que forem criados, depois que o tipo foi criado no banco de dados Model. Agora vamos aprender a criar User-defined data types. Inicialmente vamos cri-los utilizando o SQL Server Management Studio e, na seqncia, a janela de execuo de comandos T-SQL. CRIANDO UM TIPO DE DADOS DEFINIDO PELO USURIO COM O SQL SERVER MANAGEMENT STUDIO A ttulo de exemplo, vamos criar um tipo chamado nome_prprio no Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005. O tipo ter as seguintes caractersticas: Nome do tipo: usr_nome_prprio Tipo: char(50) No aceita valores nulos. Veja que para o nome do tipo utilizamos o prefixo usr. Esta uma conveno para indicar que o tipo de dados foi criado pelo usurio, ou seja, que um tipo de dados definido pelo usurio. Tambm importante lembrar que este tipo de dados s estar disponvel para o banco de dados Exemplo1, onde o tipo foi criado. Exemplo prtico: Criando o tipo usr_nome_prprio com o SQL Server Management Studio. 1. Faa o logon com uma conta com permisso de administrador. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000187 2. Abra o SQL Server Management Studio. 3. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para exibir as opes disponveis (utilize uma instncia do SQL Server 2005, disponvel no computador que voc est utilizando). 4. Clique no sinal de + ao lado da opo Databases, para exibir os bancos de dados disponveis na instncia SERVIDOR\SQL2005. 5. Clique no sinal de + ao lado do banco de dados Exemplo1, para exibir as categorias de objetos deste banco de dados. 6. Clique no sinal de + ao lado da opo Programmability, para exibir as opes de programao disponveis. 7. Clique no sinal de + ao lado da opo Types, abaixo de Programmability, para exibir as opes disponveis. Observe que existe uma opo User-defined Data Types. 8. D um clique nesta opo para selecion-la. Observe que, por padro, no existe nenhum tipo de dados definido pelo usurio, conforme indicado na Figura 4.10: Figura 4.10 No existe ainda nenhum tipo definido pelo usurio. 9. Clique com o boto direito do mouse na opo User-defined Data Types. No menu de opes que surge d um clique em New User-defined Data Type. 10. Surge uma janela onde podemos definir as caractersticas do tipo que est sendo criado. Para o nosso exemplo, defina as caractersticas do tipo usr_nome_prprio conforme indicado na Figura 4.11. D um clique em OK para criar este novo tipo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1880000Curso Completo N O T A Figura 4.11 Criando o tipo usr_nome_prprio. As opes Rule e Default sero vistas no Captulo 9. 11. Voc estar de volta ao SQL Server Management Studio e o tipo usr_nome_prprio j ter sido criado. 12. Vamos criar mais um tipo chamado usr_money_real, com as seguintes caractersticas: Nome do tipo: usr_money_real Tipo: money Aceita valores nulos. 13. Clique com o boto direito do mouse na opo User-defined Data Types. No menu de opes que surge d um clique em New User-defined Data Type. 14. Para criar o tipo usr_money_real, defina as caractersticas do tipo conforme indicado na Figura 4.12. D um clique em OK para criar este tipo. 15. Voc estar de volta ao SQL Server Management Studio e o tipo usr_money_real j ter sido criado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000189 Figura 4.12 Criando o tipo usr_money_real. Agora que criamos tipos definidos pelo usurio, podemos utiliz-los na definio de colunas em nossas tabelas, dentro do banco de dados Exemplo1. Vou repetir, mais uma vez, para voc no esquecer: os tipos de dados foram criados dentro do banco de dados Exemplo1 e s podero ser utilizados dentro do banco de dados onde foram criados. Considere o exemplo a seguir, o qual cria, no Banco de Dados Exemplo1, a tabela Produtos 2: Definio do nome da tabela. CREATE TABLE Produtos2 Inicio a definio dos campos. ( CdigoProduto int, NomeProduto usr_nome_prprio, CdigoFornecedor int, CdigoCategoria int, PreoUnitrio usr_money_real, UnidadesEstoque int, EstoqueMnimo int, Descontinuado bit ) Execute este comando na janela de execuo de comandos T-SQL, estando conectado instncia SERVIDOR\SQL2005 e sendo Exemplo1 o Banco de Dados atual. Observe que estamos utilizando os tipos definidos pelo usurio: usr_nome_prprio e usr_money_real. Vamos criar mais uma tabela chamada Produtos3 onde utilizaremos apenas o tipo usr_nome_prprio, conforme indicado no comando a seguir: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1900000Curso Completo Definio do nome da tabela. CREATE TABLE Produtos3 Inicio a definio dos campos. ( CdigoProduto int, NomeProduto usr_nome_prprio, CdigoFornecedor int, CdigoCategoria int, PreoUnitrio money, UnidadesEstoque int, EstoqueMnimo int, Descontinuado bit ) Execute este comando na janela de execuo de comandos T-SQL, estando conectado instncia SERVIDOR\SQL2005 e sendo Exemplo1 o Banco de Dados atual. Agora temos as tabelas Produtos2 e Produtos3. O tipo usr_nome_prprio foi utilizado nas duas tabelas e o tipo usr_money_real somente foi utilizado na tabela Produtos2. Podemos verificar em quais tabelas um determinado tipo definido pelo usurio est sendo utilizado. No SQL Server Management Studio, clique com o boto direito do mouse no tipo usr_nome_prprio. No menu de opes que surge d um clique em Propriedades. Na janela de Propriedades, no painel da esquerda, d um clique na opo Dependencies. Ser exibida uma janela com a lista de tabelas onde o tipo usr_nome_prprio utilizado, conforme indicado pela Figura 4.13. Figura 4.13 Tabelas que utilizam o tipo usr_nome_prprio. D um clique em OK para fechar a janela da Figura 4.13. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000191 N O T A CRIANDO UM TIPO DE DADO DEFINIDO PELO USURIO, USANDO A JANELA DE COMANDOS T-SQL A ttulo de exemplo, vamos criar um tipo chamado usr_nome_rua, no Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005. O tipo ter as seguintes caractersticas: Nome do tipo: usr_nome_rua Tipo: char(25) No aceita valores nulos. Veja que para o nome do tipo utilizamos o prefixo usr. Esta uma conveno para indicar que o tipo de dados foi criado pelo usurio. Exemplo prtico: Criando o tipo usr_nome_rua, usando comandos T-SQL: 1. Se o SQL Server Management Studio no estiver aberto, abra-o. 2. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005. 3. Clique no sinal de mais ao lado de Databases para expandi-la. 4. Clique com o boto direito do mouse no banco de dados Exemplo1 e, no menu de opes que exibido, clique na opo New Query. Ser aberta a janela para execuo de comandos T-SQL. 5. Digite o seguinte comando: Use Exemplo1 exec sp_addtype usr_nome_rua, char(25),NOT NULL Estamos utilizando um stored procedure que faz parte do SQL Server 2005: sp_addtype. Existe uma infinidade de Stored Procedures que fazem parte do SQL Server 2005, os quais fazem parte do Banco de Dados master, conforme indicado na Figura 4.14. Estes stored procedures iniciam com sp e executam uma srie de funes. Utilizaremos vrios destes stored procedures nos exemplos dos demais captulos deste livro. A sintaxe simplificada para o stored procedure sp_addtype a seguinte: exec sp_addtype nome_tipo, tipo_bsico, NULL ou NOT NULL 6. Aps executar o comando indicado no passo anterior, o tipo usr_nome_rua ter sido criado. Podemos conferir se o tipo foi realmente criado, utilizando o SQL Server Management Studio. A seguir apresentamos algumas dicas a serem consideradas para a criao de tipos definidos pelo usurio User-defined Data Types: Se uma determinada coluna apresenta variao no tamanho dos dados, pode ser mais vantajoso utilizar um tipo varivel, como por exemplo varchar, ao invs de um tipo de tamanho fixo, como por exemplo char(50). Conforme descrito no incio do captulo, tipos de tamanho varivel como varchar podem propiciar economia de espao em disco. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1920000Curso Completo Figura 4.14 Stored procedures que fazem parte do SQL Server 2005. Se os dados a serem armazenados so maiores do que 8000 bytes, utilize os tipos text ou image. Para dados menores do que 8000 bytes utilize binary, char ou varchar. Sempre que possvel utilize char ou varchar, pois estes tipos apresentam mais funcionalidades do que os demais tipos. sempre importante ter uma idia dos valores que sero armazenados em uma coluna. Se voc souber que os valores de uma determinada coluna variam de 1 a 200, por exemplo, mais vantajoso utilizar um tipo tinyint que ocupa menos espao do que um tipo int. EXCLUINDO TIPOS DEFINIDOS PELO USURIO Podemos excluir os tipos definidos pelo usurio, desde que estes no estejam sendo utilizados em alguma tabela. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000193 Vamos tentar excluir o tipo usr_nome_prprio, o qual est sendo utilizado pelas tabelas Produtos2 e Produtos3. Tentaremos exclu-lo com o SQL Server Management Studio e com o stored procedure sp_droptype e iremos observar as mensagens de erro que sero emitidas. Depois excluiremos o tipo usr_nome_rua utilizando o stored procedure sp_droptype. Para excluir um tipo definido pelo usurio com o SQL Server Management Studio, basta localizar o tipo a ser excludo, clicar com o boto direito sobre o tipo a ser excludo e, no menu que surge, clicar na opo Delete. Surge uma janela exibindo o tipo a ser excludo, conforme indicado na Figura 4.15. Figura 4.15 Excluindo o tipo usr_nome_prprio. Clique em OK para confirmar a excluso do tipo usr_nome_prprio. No nosso exemplo surge uma mensagem de advertncia. Esta mensagem informa que o tipo usr_nome_prprio no pode ser excludo pois ele est sendo utilizado em uma ou mais tabelas. Clique em OK e voc estar de volta ao SQL Server Management Studio. Feche-o. Agora vamos excluir o tipo usr_nome_rua utilizando o stored procedure sp_droptype. Exemplo prtico: Excluindo o tipo usr_nome_rua, usando comandos T-SQL: 1. Se o SQL Server Management Studio no estiver aberto, abra-o. 2. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005. 3. Clique no sinal de mais ao lado de Databases para expandi-la. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1940000Curso Completo N O T A 4. Clique com o boto direito do mouse no banco de dados Exemplo1 e, no menu de opes que exibido, clique na opo New Query. Ser aberta a janela para execuo de comandos T-SQL. 5. Digite o seguinte comando: Use Exemplo1 exec sp_droptype usr_nome_rua A sintaxe simplificada para o stored procedure sp_droptype a seguinte: exec sp_droptype nome_tipo 6. Aps executar o comando indicado no passo anterior, o tipo usr_nome_rua ter sido excludo do banco de dados Exemplo1 e a seguinte mensagem ser exibida: Command(s) completed successfully. Podemos conferir se o tipo usr_nome_rua foi realmente excludo, utilizando o SQL Server Manage- ment Studio. Se voc tentar excluir um tipo que est sendo utilizado por alguma tabela, o Query Analyzer emite a seguinte mensagem de erro: Msg 3732, Level 16, State 1, Line 1 Cannot drop type dbo.usr_nome_prprio because it is currently in use. FUNDAMENTOS EM: EXCLUSO DE TABELAS PR-REQUISITOS Saber utilizar a janela para execuo de comandos T-SQL. METODOLOGIA Utilizao do SQL Server Management Studio e da janela de execuo de comandos T-SQL, para a excluso de tabelas. No uma situao comum, mas pode existir a necessidade de excluirmos uma tabela de um Banco de Dados. importante salientar que, ao excluirmos uma tabela, todos os seus dados sero tambm excludos. PARA EXCLUIR UMA TABELA COM O SQL SERVER MANAGEMENT STUDIO Abra o SQL Server Management Studio e navegue at a tabela a ser excluda. Clique com o boto direito do mouse na tabela e no menu que surge selecione a opo Delete. Surge a janela indicada na Figura 4.16. D um clique no boto OK e pronto, a tabela foi excluda. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000195 Figura 4.16 Excluindo a tabela Produtos2. EXCLUINDO UMA TABELA COM O QUERY ANALYZER Para excluir uma tabela podemos utilizar o seguinte comando T-SQL: DROP TABLE nome_da_tabela Exemplo: Para excluir a tabela Produtos3 do Banco de Dados Exemplo1, poderamos utilizar o seguinte comando: DROP TABLE Produtos3 Este comando retorna a seguinte mensagem: The command(s) completed successfully. FUNDAMENTOS EM: DEFINIO DA CHAVE PRIMRIA DE UMA TABELA PR-REQUISITOS Noes dos conceitos bsicos sobre Bancos de Dados Relacionais. Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1960000Curso Completo METODOLOGIA Utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL para definir um campo como chave primria de uma tabela. Conforme vimos na teoria sobre o modelo relacional de dados, no Captulo 1, temos os chamados campos que so chave primria para uma determinada tabela. Um campo definido como chave primria deve ser nico, isto , no podem existir dois registros com o mesmo valor para o campo Chave Primria e geralmente so campos de cdigo, como por exemplo: CdigoCliente ou CPF na tabela Clientes. CdigoFuncionrio ou Matrcula na tabela Funcionrios. CPF na tabela Contribuintes Pessoa Fsica. CNPJ (antigo CGC) na tabela Contribuintes Pessoa Jurdica. CdigoDoProduto na tabela Produtos. Podemos definir um determinado campo como sendo chave primria, tanto usando a interface grfica do SQL Server Management Studio quanto usando comandos T-SQL. Vamos mais uma vez utilizar exemplos para aprender a definir um campo como sendo chave primria. DEFININDO UMA CHAVE PRIMRIA UTILIZANDO O SQL SERVER MANAGEMENT STUDIO Exemplo: Definir o campo CdigoFuncionrio da tabela Funcionrios, do banco de dados Exemplo1, da instncia SERVIDOR\SQL2005, como sendo uma chave primria. Para isso siga os passos indicados a seguir: 1. Faa o logon com uma conta com permisso de administrador. 2. Abra o SQL Server Management Studio. 3. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para exibir as opes disponveis (utilize uma instncia do SQL Server 2005, disponvel no computador que voc est utilizando). 4. Nas opes que surgem abaixo desta instncia, clique no sinal de + ao lado da opo Databases para expandi-la. Abaixo de Databases exibida uma lista com os Bancos de Dados disponveis na instncia SERVIDOR\SQL2005. 5. D um clique no sinal de + ao lado do Banco de Dados Exemplo1 para exibir seus objetos. 6. D um clique no sinal de + ao lado da opo Tables, para exibir uma listagem com as tabelas do Banco de Dados Exemplo1. 7. D um clique com o boto direito do mouse na tabela Funcionrios. No menu que surge d um clique na opo Modify Table. Ser exibida uma janela com a estrutura da tabela Funcionrios. 8. O passo seguinte selecionar a linha correspondente ao campo que ser definido como chave primria. Selecione a linha CdigoFuncionrio, conforme indicado na Figura 4.17. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000197 N O T A Figura 4.17 Selecionando o campo CdigoFuncionrio. 9. Clique com o boto direito do mouse em qualquer parte da linha selecionada. No menu de opes que exibido clique em Set primary key (voc tambm pode clicar no boto Set Primary Key boto com o desenho de uma pequena chave amarela). Feito isso, o campo CdigoFuncionrio definido como chave primria, conforme indicado por uma pequena chave amarela ao lado do nome do campo. 10. Clique no boto Save ou pressione Ctrl+S para salvar as alteraes feitas na estrutura da tabela. Caso voc esteja definindo um campo como chave primria, porm j existam registros na tabela e existam valores duplicados para o campo que est sendo definido como Chave Primria, na hora de salvar as alteraes ser exibida a mensagem de erro, informando que o campo no pode ser definido como chave primria, pois existem valores duplicados no campo. A seguir temos o texto completo da mensagem de erro: Funcionrios table - Unable to create index PK_Funcionrios. ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 1. Most significant primary key is 1. [Microsoft][ODBC SQL Server Driver][SQL Server]Could not create constraint. See previous errors. [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated. Observe que a parte mais significativa da mensagem a seguinte: because a duplicate key was found for index ID 1 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 1980000Curso Completo N O T A N O T A Esta parte est informando que foi encontrado um valor duplicado para o campo CdigoFuncionrio e, portanto, este campo no pode ser definido como chave primria. Conforme veremos na parte final deste captulo, ao criarmos uma chave primria, na verdade estamos definindo um ndice que no permite duplicao de valores, para o campo que est sendo definido como chave primria. 11. Agora feche a janela com as propriedades da tabela Funcionrios. 12. Voc estar de volta ao SQL Server Management Studio. Feche-o. Para fazer com que um campo no seja mais chave primria, basta repetir os passos do exemplo anterior, marcar o campo desejado e clicar novamente no boto Set Primary Key. Este boto funciona como uma chave de liga e desliga. Se o campo selecionado j for chave primria ao clicarmos no boto Set Primary Key, o mesmo deixa de ser. Caso o campo no seja uma chave primria, ao clicarmos no boto Set Primary Key, o campo marcado como chave primria. Voc tambm tem a opo de clicar com o boto direito do mouse no campo selecionado e, no menu que exibido, clicar em em Remove Primary Key. Conforme veremos a seguir, no posso fazer com que um campo deixe de ser chave primria se o campo fizer parte de algum relacionamento. DEFININDO UMA CHAVE PRIMRIA UTILIZANDO COMANDOS T-SQL A definio de uma chave primria atravs de comandos utiliza o conceito de Constraint. Neste captulo nos limitaremos ao comando que permite a criao de uma chave primria, sem detalharmos o conceito de Constraints. No Captulo 9 falaremos em detalhes sobre Constraints. Utilizamos o comando ALTER TABLE, com a seguinte sintaxe: ALTER TABLE nome_da_tabela ADD CONSTRAINT nome_da_chave_primria PRIMARY KEY CLUSTERED (nome_do_campo_a_ser_definido_como_chave_primria) Exemplo: Definir o campo CdigoProduto da tabela Produtos, do banco de dados Exemplo1, da instncia SERVIDOR\SQL2005 como sendo uma chave primria. Para isso faa o seguinte: 1. Se o SQL Server Management Studio no estiver aberto, abra-o. 2. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005. 3. Clique no sinal de + ao lado de Databases para expandi-la. 4. Clique com o boto direito do mouse no banco de dados Exemplo1 e, no menu de opes que exibido, clique na opo New Query. Ser aberta a janela para execuo de comandos T-SQL. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000199 5. Digite o seguinte comando: ALTER TABLE Produtos ADD CONSTRAINT chave_prim_produtos PRIMARY KEY CLUSTERED (CdigoProduto) Aps executar o comando indicado no passo anterior, o campo CdigoProduto da tabela Produtos ter sido definido como chave primria e a seguinte mensagem ser exibida: The command(s) completed successfully. Podemos conferir se o campo foi realmente definido como chave primria, utilizando o SQL Server Management Studio. Acesse a tabela Produtos, clique com o boto direito do mouse na tabela Produtos e, no menu de opes que exibido, clique em Modify Table. Verifique se h o desenho de uma pequena chave amarela, ao lado do campo CdigoProduto. Este desenho comprova que o campo CdigoProduto foi definido como chave primria da tabela Produtos. 6. Feche a janela de execuo de comandos T-SQL. Se o SQL Server 2005 perguntar se voc deseja salvar a Query, clique em No. Importante: Se a coluna que estiver sendo definida como chave primria admitir valores nulos, o comando do passo 3 resultar na seguinte mensagem de erro: Server: Msg 8111, Level 16, State 1, Line 1 Cannot define PRIMARY KEY constraint on nullable column in table Produtos. Server: Msg 1750, Level 16, State 1, Line 1 Could not create constraint. See previous errors. Se a coluna que estiver sendo definida como chave primria contiver valores repetidos, o comando do passo 3 resultar na seguinte mensagem de erro: Server: Msg 1505, Level 16, State 1, Line 1 CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 1. Most significant primary key is 110. Server: Msg 1750, Level 16, State 1, Line 1 Could not create constraint. See previous errors. The statement has been terminated. FUNDAMENTOS EM: CONCEITO E CRIAO DE NDICES PR-REQUISITOS Noes dos conceitos bsicos sobre Bancos de Dados Relacionais. Saber utilizar a janela de execuo de comandos T-SQL e o SQL Server Management Studio. METODOLOGIA Apresentao dos conceitos e dos comandos T-SQL para criao de ndices. TCNICA Criao de ndices utilizando os comandos apresentados. N O T A proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 2000000Curso Completo UMA VISO GERAL DOS NDICES NO SQL SERVER 2005 A criao de ndices uma ferramenta poderosa para o projetista do Banco de Dados. Um ndice uma estrutura auxiliar que melhora o desempenho das consultas. O papel principal do ndice reduzir o nmero de operaes de I/O (leitura e escrita (Input/Output) no disco) necessrias para localizar os dados solicitados pela consulta. Ao utilizar ndices, ajudamos o SQL Server 2005 a, rapidamente, localizar e disponibilizar os dados necessrios, atravs de um nmero de operaes de I/O muito menor do que se no tivssemos ndices no Banco de Dados. Uma analogia que aparece em diversos livros sobre Bancos de Dados a comparao com o ndice de um livro (O sumrio do incio do livro ou mais precisamente o ndice remissivo, que vem no final do livro. Estas duas so tambm estruturas auxiliares, cujo objetivo facilitar a localizao de um contedo, dentro do livro). Voc procura o tpico desejado no ndice e abre o livro diretamente na pgina relacionada, ao invs de folhear pgina por pgina, o que teria que ser feito se no tivssemos o ndice. Podemos criar ndices em qualquer coluna de uma tabela, inclusive em uma coluna com valores calculados (esta foi uma das novidades do SQL Server 2000, a qual, evidentemente, tambm faz parte do SQL Server 2005). Se no utilizarmos ndices, o SQL Server precisa realizar uma operao conhecida como Table Scan, para localizar os dados solicitados por uma consulta. Uma operao de Table Scan uma leitura seqencial de todos os registros da tabela, o que implica muito mais operaes de I/O de disco do que quando utilizamos ndices. Como operaes de I/O de disco normalmente so bastante lentas quando comparadas com operaes de leitura ou escrita em memria, a utilizao de ndices, ao reduzir o nmero de operaes de I/O de disco, melhora significativamente o desempenho das consultas. Se no definirmos nenhum ndice para uma tabela, os registros sero armazenados aleatoriamente, sem nenhuma ordem especfica. No SQL Server podemos ter dois tipos de ndices, conforme descrito a seguir. CLUSTERED INDEX Um clustered index ordena os dados de acordo com os valores do campo onde o ndice foi definido. Os dados so armazenados na prpria tabela. Neste caso, o ndice est alterando a ordem em que os registros so armazenados na prpria tabela, ao invs de uma ordem aleatria (utilizado no caso de no termos ndices); os registros so armazenados em uma ordem definida pelo ndice. Este tipo de ndice bastante eficiente para agilizar operaes de localizao de registros. Somente podemos ter um clustered index por tabela, pois s poderemos armazenar os dados em ordem de um determinado critrio (no h como armazenar o mesmo conjunto de dados em duas ou mais ordens diferentes. Por isso que s podemos ter um clustered index, por tabela). Observe que, embora o ndice melhore o desempenho das consultas, existe um pequeno overhead para operaes de atualizao, insero e excluso de registros, pois estas operaes podem fazer com que a ordem dos registros seja alterada, e que estes tenham que ser reposicionados para manter a ordem definida pelo ndice. Os ndices no SQL Server 2005 so organizados em uma estrutura semelhante a uma rvore de cabea para cima, as chamadas B-trees. Os dados so divididos em pginas (na verdade o SQL Server 2005 armazena os dados de uma tabela divididos em pginas de 8 KB). Cada pgina de um clustered index possui um cabealho que identifica a pgina mais as linhas do ndice (Index Rows). Cada linha do proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000201 ndice contm um valor-chave e um ponteiro para outra pgina do ndice ou para um registro de dados. Cada pgina do ndice chamada de n Index Node. O primeiro n da rvore chamado de n raiz Root Node. O ltimo nvel ou camada de ns chamado de ns folhas Leaf Nodes. Entre o n raiz e o ltimo nvel, podemos ter diversos nveis intermedirios. As pginas de cada nvel so ligadas em forma de uma lista duplamente encadeada. As pginas com dados so as pginas ou ns folhas (Leaf Nodes). Na Figura 4.18, retirada do Books OnLine, temos uma ilustrao da estrutura de um clustered index. Figura 4.18 A estrutura em forma de B-tree de um clustered index. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 2020000Curso Completo Os dados encontram-se nas chamadas Leaf Pages; as demais pginas do ndice (tambm conhecidas como Non-Leaf Pages) contm informaes que facilitam a localizao dos dados contidos nas Leaf Pages. Para entender o funcionamento de um clustered index, vamos observar como um determinado registro localizado, utilizando a estrutura de um clustered index. Considere o exemplo da Figura 4.19. Figura 4.19 Acessando dados com um clustered index. Vamos supor que voc queira localizar o registro para o cliente Raul. O SQL Server 2005 far o seguinte: Ao receber a pesquisa, o SQL Server detecta a existncia de um ndice na coluna nome e que a utilizao deste ndice auxiliar no processo de pesquisa. Ento, utiliza um mecanismo interno para preparar um Plano de Execuo para uma determinada consulta (esta deciso sobre a utilizao ou no do ndice e se esse uso ir melhorar o desempenho da consulta tomada internamente, pelo mecanismo de banco de dados do SQL Server 2005). Este plano procura determinar qual a maneira mais rpida de executar a consulta. Neste caso, o SQL Server 2005 determina que a melhor maneira atravs da utilizao do ndice. Nas pginas do ndice (Non-Leaf Pages), a pesquisa inicia na pgina root (125). O valor procurado Raul vem depois do ltimo valor desta pgina, que Marcos. Com isso a pesquisa prossegue para a pgina apontada pela pgina 125, que no caso a pgina 127. A pesquisa continua na pgina de ndice 127. Nesta pgina, o valor Raul est na faixa entre Marcos e Silvano. Agora a pesquisa deslocada para a pgina de dados em que o primeiro registro comea com Marcos (pgina 60), conforme indicado pelas flechas da Figura 4.19. Agora a pesquisa j alcanou o nvel dos dados (Leaf Pages) e est na pgina que contm o registro procurado. A pgina 60 ser percorrida seqencialmente, at localizar o registro para o usurio Raul. Observe que o nmero de operaes de leitura foi bastante reduzido com a utilizao do ndice, em comparao situao em que tivssemos que fazer uma varredura de todos os registros da tabela, at encontrar o registro procurado (o que teria que ser feito, caso no existisse o ndice). proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000203 Este exemplo ilustra o quanto os ndices podem melhorar o desempenho das consultas. Como regra geral devemos criar clustered indexes em colunas que so freqentemente utilizadas como critrio para pesquisas. Por exemplo a coluna NomeCliente de uma tabela de clientes ou campo NmeroDoPedido da tabela Pedidos e assim por diante. Ao criarmos clustered indexes (aprenderemos a cri-los mais adiante neste captulo), devemos considerar os seguintes fatos: 1. Conforme descrito anteriormente, cada tabela pode conter apenas um clustered index. 2. A ordem fsica das linhas da tabela (Leaf Nodes) e das linhas do ndice (Non-Leaf Nodes) a mesma. Caso queiramos utilizar um clustered index e um nonclustered index na mesma tabela, devemos criar o clustered index primeiro, uma vez que isso modifica a ordem dos registros na tabela. 3. Os valores da chave em um clustered index devem ser nicos. Isto possvel com a utilizao da palavra UNIQUE na criao do ndice, conforme veremos mais adiante. Se no utilizarmos a palavra UNIQUE, o SQL Server adicionar um identificador interno, o qual ser nico para cada chave do ndice. Este identificador interno de 8 bytes e somente para uso do SQL Server, no podendo seus valores serem acessados pelo usurio atravs de um comando SE- LECT, por exemplo. 4. De uma maneira geral, o espao em disco ocupado por um clustered index cerca de 5% do tamanho da tabela. Este percentual varia, dependendo do tamanho da coluna que est sendo indexada. 5. Durante o processo de criao do ndice o SQL Server ocupa, temporariamente, espao em disco. A criao de um clustered index requer cerca de 1,2 vezes o tamanho da tabela que est sendo indexada. Este espao liberado aps a criao do ndice. Caso o seu Banco de Dados no permita o crescimento automtico dos arquivos que o compem e no exista este espao disponvel, o ndice no poder ser criado. NONCLUSTERED INDEX Este tipo de ndice cria uma estrutura separada das pginas da tabela. A ordem dos registros na tabela no alterada com a criao de um nonclustered index. Com isso, os registros so armazenados em uma ordem aleatria. Este tipo de ndice tambm apresenta uma estrutura do tipo B-tree com um n root (Root Node) e Leaf Pages, os quais contm informaes do ndice e no os dados, pois os dados ficam armazenados nas pginas de dados da prpria tabela. Pela descrio podemos confirmar que um nonclustered index cria uma estrutura completamente separada da estrutura da tabela, sendo que as informaes contidas no ndice so utilizadas para localizar rapidamente informaes nos registros da tabela. Em uma linguagem mais tcnica dizemos que: Os nveis mais baixos de um nonclustered index contm valores-chaves, e cada um destes valores-chave aponta para uma linha de dados correspondente chave. Por exemplo, a chave poderia ser o nmero de CPF do funcionrio. Este valor armazenado no nonclustered index utilizado para, rapidamente, localizar o registro correspondente na tabela Funcionrios. Este ponteiro chamado de Localizador de registro Row Locator. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 2040000Curso Completo A estrutura do Row Locator depende de a tabela ter ou no um clustered index. Se a tabela j possui um clustered index, a chave contida no Row Locator igual e aponta para a chave contida no clustered index. Portanto, o nonclustered index est apontando para a chave correspondente no clustered index. Se a tabela no contiver um clustered index (conhecida como Heap), a chave do Row Locator aponta diretamente para o registro correspondente chave do Row Locator. Na Figura 4.20, retirada do Books OnLine, temos uma ilustrao da estrutura de um nonclustered index. Figura 4.20 A estrutura em forma de B-tree de um nonclustered index. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000205 A utilizao de nonclustered indexes indicada quando o usurio precisa pesquisar os dados por diversos critrios diferentes, uma vez que podemos criar mais do que um nonclustered index por tabela. Por exemplo, se criamos um clustered index na coluna CdigoProduto, podemos criar um nonclustered index na coluna NomeProduto, para agilizar a pesquisa tanto pelo Cdigo quanto pelo nome. importante salientar que mesmo sem o ndice possvel pesquisar por um ou mais campos de qualquer tabela, porm a consulta ser mais demorada. Mais algumas observaes sobre nonclustered indexes: 1. Nonclustered index o default para a criao de ndices no SQL Server 2005. 2. Podemos ter um mximo de 249 nonclustered indexes por tabela. 3. mais indicada a criao de nonclustered indexes em colunas que possuem dados que variam de registro para registro, como por exemplo CdigoCliente ou NomeCliente. Em campos do tipo Sim ou No, por exemplo, no aconselhvel a criao de Nonclustered Indexes. 4. No SQL Server 2005 temos uma importante novidade em relao aos nonclustered index. No SQL Server 2005 possvel ampliar a funcionalidade de um nonclustered index, atravs da incluso de colunas que no so chaves, como parte das pginas Leaf do ndice. Esta opo pode melhorar consideravelmente o desempenho das consultas, principalmente em casos onde todas as colunas do comando T-SQL fazem parte do nonclustered index, sejam estas colunas do tipo Chave ou no. Isso ocorre porque, sendo todas as colunas de uma consulta parte do ndice, bastar ao SQL Server 2005 pesquisar diretamente no ndice, o que muito mais rpido, do que, aps localizar um registro no ndice, ainda ter que percorrer a pgina de dados para a qual aponta o valor encontrado no ndice. MAIS ALGUMAS QUESTES TERICAS SOBRE NDICES Vamos analisar os seguintes conceitos sobre ndices: Index Keys e Index Uniqueness. Index Keys: Chamamos de Index Key chave do ndice a(s) coluna(s) utilizada(s) para definio do ndice. A chave do ndice (Index Key) um valor que permite que o registro correspondente seja rapidamente localizado. Por exemplo, se definirmos um ndice na coluna CdigoCliente, o valor 2356 a chave para localizar o registro correspondente ao cliente cujo cdigo 2356. Normalmente os valores Index Key so passados para uma consulta atravs da utilizao da clusula WHERE. Para mais informaes sobre a clusula WHERE, consulte a introduo linguagem SQL no Captulo 1. Podemos ter chaves de ndices simples ou compostas, dependendo do tipo de ndice que foi definido. Um ndice simples o que inclui apenas uma coluna de uma tabela. Esta coluna que deve ser utilizada como parmetro para a clusula WHERE da consulta. Este tipo de ndice adequado para colunas que apresentam diferentes valores para diferentes registros, como por exemplo: CdigoCliente, CdigoFuncionrio, NomeCliente, NomeFuncionrio, no sendo indicado para colunas que apresentam pequenas variaes nos seus valores. Por exemplo, suponhamos que voc tenha um cadastro de 1.000.000 de clientes, sendo que estes pertencem somente a trs estados: SP, RJ ou MG. Criar um ndice proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 2060000Curso Completo simples na coluna Estado no ser de grande valor como auxiliar no desempenho das consultas, uma vez que o valor desta coluna somente varia entre os valores SP, RJ ou MG. Um ndice composto formado por duas ou mais colunas de uma tabela. Um ndice composto pode ser acessado utilizando-se uma ou mais chaves que fazem parte do ndice. No SQL Server 2005, um ndice pode ser formado por, no mximo, 16 colunas, sendo que a soma dos tamanhos das colunas do ndice no pode ultrapassar 900 bytes (estes j eram os valores limites no SQL Server 2000 e no foram alterados no SQL Server 2005). Esta limitao tem a ver com a questo de desempenho, pois de nada adiantaria criar ndices muito grandes, pois, dependendo do tamanho dos ndices, estes podem at tornar as consultas mais lentas, ao invs de aceler-las. Quando construmos as consultas, no precisamos incluir todos os campos que formam o ndice na clusula WHERE da consulta. Porm no devemos esquecer que o ndice somente ser utilizado se a clusula WHERE contiver pelo menos um dos campos que fazem parte do ndice. Se a clusula WHERE no contiver nenhum campo do ndice, ser utilizado um table scan, pois o ndice em nada poder ajudar a melhorar o desempenho da consulta, neste caso. Index Uniqueness: No SQL Server 2005 podemos ter ndices que so nicos ou no so. Em ndices nicos no temos valores repetidos para a chave do ndice. Um ndice no-nico permite valores repetidos para a chave, e ser tanto mais efetivo quanto mais diferentes forem os valores que o formam. Por exemplo, em uma tabela de cadastro de clientes, um ndice para o campo CdigoCliente ser nico, j que no existem dois clientes com o mesmo cdigo. Veja que, quando definimos um campo como sendo uma chave primria, na verdade estamos criando um ndice nico para este campo, conforme descrito anteriormente. Em uma tabela de pedidos, teramos que criar um ndice no-nico no campo CdigoCliente. Uma vez que um cliente pode fazer mais do que um pedido, o campo CdigoCliente apresentar valores repetidos, isto , o cdigo de um determinado cliente ir se repetir tantos quantos forem os pedidos para este cliente. Com isso, os valores de chave para o ndice no sero nicos e teremos um ndice no-nico. Em termos de eficincia, um ndice nico melhor do que ndices no-nicos, uma vez que estes ltimos exigem um nmero maior de operaes de I/O de disco para localizar os dados solicitados. Podemos ter uma combinao de ndices quanto a serem simples ou compostos e a serem nicos ou no-nicos. Desta forma poderemos ter os seguintes tipos de ndices: ndice simples e nico. ndice simples e no-nico. ndice composto e nico. ndice composto e no-nico. Agora que vimos um pouco de teoria sobre os ndices, estamos preparados para aprender a criar ndices no SQL Server 2005. Este o assunto do prximo item. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000207 CRIANDO NDICES NO SQL SERVER 2005 Podemos criar ndices utilizando diferentes ferramentas, como por exemplo: SQL Server Management Studio Janela para executar Comandos T-SQL Iremos criar diferentes tipos de ndices utilizando estas ferramentas. CRIANDO UM CLUSTERED INDEX SIMPLES COM O SQL SERVER MANAGEMENT STUDIO Neste exemplo, vamos criar um clustered index na coluna CdigoCliente da tabela Clientes do Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005, criada anteriormente. Vamos fazer com que este ndice no admita valores duplicados; desta maneira vamos criar um ndice nico, ou seja, uma chave primria para a tabela Clientes. Vamos chamar este ndice de CodCliIndex. Exemplo prtico: Para criar o clustered index CodCliIndex, na coluna CdigoCliente, da tabela Clientes, do Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio (Iniciar -> Programas -> Microsoft SQL Server -> SQL Server Management Studio). 2. Na Janela Object Browser, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005 para expandi-la. 3. Nas opes que surgem abaixo desta instncia, clique no sinal de + ao lado da opo Databases para expandi-la. Abaixo de Databases exibida uma lista com os Bancos de Dados disponveis nesta instncia. 4. Clique no sinal de + ao lado do banco de dados Exemplo1. 5. Clique no sinal de + ao lado da opo Tables. 6. Nas tabelas que so exibidas, clique no sinal de + ao lado da tabela Clientes (na verdade dbo.Clientes. Voc aprender o porqu do dbo, no Captulo 6, quando falarei sobre Segurana no SQL Server 2005). 7. Nas opes que so exibidas, abaixo da tabela Clientes, clique na opo Indexes, para selecion-la. 8. Clique com o boto direito do mouse na opo Indexes e, no menu de opes que exibido, clique em New Index. Ser aberta a janela New Index, com a categoria General selecionada por padro, conforme indicado na Figura 4.21. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 2080000Curso Completo N O T A Figura 4.21 Janela para a criao de um ndice. Podemos notar, na Figura 4.21, que para o nome da tabela aparece dbo.Clientes. DBO um acrnimo para Database Owner (dono do Banco de Dados) e indica o usurio que criou a tabela. Falaremos mais sobre o dono do Banco de Dados e de seus objetos no Captulo 6 quando trataremos sobre segurana em Bancos de Dados do SQL Server 2005. 9. No campo Index name digite: CodCliIndex. 10. Na lista Index Type selecione a opo Clustered. 11. Marque a opo Unidque. 12. Agora temos que informar qual o campo para o qual ser criado o ndice, que no nosso caso ser o campo Cdigo Cliente. D um clique no boto Add. Ser aberta a janela Select Columns, com a lista de campos da tabela Clientes. Marque o campo CdigoCliente e clique em OK. 13. Voc estar de volta janela New Index. Observe que o campo CdigoCliente, selecionado no Passo 12, j aparece na lista Index Key Columns, conforme indicado na Figura 4.22. No painel da esquerda, clique na opo Storage. Observe que temos a opo de definir em qual filegroup o ndice ser colocado. Por padro o ndice ser colocado no filegroup Primary, que o nico existente antes que outros filegroups sejam criados. Para definir um filegroup diferente, basta marcar a opo Filegroup e selecionar um nome na lista ao lado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000209 Figura 4.22 Criando o ndice CodCliIndex. 14. D um clique no boto OK. 15. Pronto. O ndice CodCliIndex foi criado e j deve aparecer na opo Indexes, da tabela Clientes, do banco de dados Exemplo1. Se o ndice CodCliIndex ainda no estiver sendo exibido, clique na opo Indexes, abaixo da tabela Clientes e pressione a tecla F5 para atualizar a listagem de ndices. CRIANDO NDICES USANDO COMANDOS T-SQL Agora aprenderemos uma srie de comandos para trabalhar com ndices. Alm dos comandos para a criao de ndices aprenderemos alguns stored procedures internos do SQL Server 2005, para a verificao e manuteno de ndices. Para criar ndices utilizamos o comando CREATE INDEX. A seguir temos a sintaxe para o comando CREATE INDEX, conforme descrito no Books OnLine: CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON { table | view } ( column [ ASC | DESC ] [ ,...n ] ) [ WITH < index_option > [ ,...n] ] [ ON filegroup ] < index_option > :: = { PAD_INDEX | FILLFACTOR = fillfactor | IGNORE_DUP_KEY | DROP_EXISTING | STATISTICS_NORECOMPUTE | SORT_IN_TEMPDB } proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 2100000Curso Completo Mais uma vez vamos simplificar a sintaxe para este comando. No formato simplificado teramos o seguinte: CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON { table | view } ( column [ ASC | DESC ] [ ,...n ] ) No banco de dados NorthWind era um banco de dados fornecido como banco de dados de Exemplo, com o SQL Server 2000. O Northwind no mais instalado com o SQL Server 2005. Mas possvel importar o Northwind de uma instncia do SQL Server 2000, para uma com o SQL Server 2005. Foi exatamente o que eu fiz, para ter o banco de dados Northwind disponvel no SQL Server 2005, banco este que ser utilizado em vrios exemplos deste livro. Para todos os detalhes sobre como importar o banco de dados Northwind, de uma instncia do SQL Server 2000 para uma instncia do SQL Server 2005, consulte o anexo, no final deste livro. Vamos a um exemplo prtico. Para criar o seguinte ndice: Tabela Customers do Banco de Dados Northwind Nome: CityIndex Colunas: City Permitir valores duplicados. utilizaramos o seguinte comando: CREATE INDEX CityIndex ON Customers (City) Vamos a um exemplo um pouco mais elaborado. Qual seria o comando para criar o seguinte ndice? Tabela Customers do Banco de Dados Northwind Nome: PK_Customers Colunas: CustomerID No permitir valores duplicados. Neste caso, utilizaramos o seguinte comando: CREATE UNIQUE CLUSTERED INDEX PK_Customers ON Customers (CustomerID) WITH DROP_EXISTING Ao utilizarmos a opo WITH DROP_EXISTING estamos orientando o SQL Server a excluir o ndice caso ele j exista, e a recri-lo novamente. Se no utilizarmos esta opo e o ndice j existir, ser emitida a seguinte mensagem de erro: Msg 1913, Level 16, State 1, Line 1 The operation failed because an index or statistics with name PK_Customers already exists on table dbo.Customers. Vamos a mais um exemplo. Agora vamos criar um ndice composto com as seguintes caractersticas: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000211 Tabela Customers do Banco de Dados Northwind Nome: EnderecoIndex Colunas: Address, City e Region No permitir valores duplicados Ignorar valores duplicados. Neste caso utilizaramos o seguinte comando: CREATE UNIQUE INDEX EnderecoIndex ON Customers (Address, City, Region) WITH IGNORE_DUP_KEY Neste caso utilizamos a opo UNIQUE para criar um ndice nico e a opo WITH IGNORE_DUP_KEY para ignorar valores duplicados j existentes. Algumas consideraes para a criao de ndices compostos por mais do que um campo: 1. Podemos criar um ndice composto por, no mximo, 16 colunas. Alm disso a soma do tamanho das 16 colunas no pode ultrapassar 900 bytes. 2. Todas as colunas de um ndice composto devem pertencer mesma tabela. Como no SQL Server 2005 podemos criar ndices em views (consultas) e uma View pode retornar dados de vrias colunas, ao criarmos um ndice composto em uma view, as colunas que formam o ndice composto devem pertencer mesma tabela. 3. Em termos de desempenho, devemos definir a coluna que possui valores mais diferenciados em primeiro lugar. Por exemplo, no ndice EnderecoIndex, do qual fazem parte as colunas: Address, City e Region, a coluna que apresenta a maior variao, com certeza, a coluna Address (existem muitos endereos em uma cidade), depois a coluna City (existem muitas cidades em uma regio) e por ltimo a coluna Region. Ao definirmos o ndice devemos passar as colunas nesta mesma ordem, pois isso melhora o desempenho das consultas. 4. Desta maneira podemos concluir que a ordem das colunas importa no desempenho, e alm disso, os dois comandos a seguir definem ndices diferentes. Observe que a nica diferena entre os dois a ordem das colunas: CREATE UNIQUE INDEX EnderecoIndex ON Customers (Address, City, Region) WITH IGNORE_DUP_KEY e CREATE UNIQUE INDEX EnderecoIndex ON Customers (City, Address, Region) WITH IGNORE_DUP_KEY 5. Ao construirmos uma consulta, a clusula WHERE deve fazer referncia a todas as colunas do ndice composto, caso contrrio o ndice no ser utilizado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 2120000Curso Completo N O T A UM FATOR IMPORTANTE: FILLFACTOR OPTION Esta opo igualmente importante e pouco utilizada. Talvez seja pouco utilizada pelo no conhecimento da aplicabilidade desta opo. Vamos explic-la de uma maneira simples. Ao criarmos um clustered index, os dados da tabela so armazenados em pginas de dados de acordo com a ordem dos valores da coluna indexada. Ao inserirmos novos registros na tabela, estes precisam ser inseridos na ordem definida pelo campo que compe o ndice. Nestas situaes pode acontecer de registros terem que ser deslocados para outras pginas para que o registro que est sendo inserido seja colocado na ordem correta. Este procedimento tambm acontece quando utilizamos nonclustered index, ao adicionarmos ou alterarmos os registros da tabela. Ao criarmos um ndice podemos especificar um valor para a opo FILL FACTOR (clique na opo Options, no painel da esquerda, da janela de criao do ndice, quando usando o SQL Server Manage- ment Studio ou a clusula FILLFACTOR = %, quando usando comandos T-SQL). Este valor define um percentual a ser deixado em branco, sem registros gravados, em cada pgina de dados. O objetivo deste espao em branco agilizar as operaes de insero, alterao e excluso de dados, evitando que tenham que ser feitas movimentaes de registros entre pginas e, em casos mais extremos, desdobramento de pginas. Com isso obtm-se um melhor desempenho nestas operaes. Pode parecer um detalhe sem muita importncia, mas imagine, por exemplo, um sistema de reserva de passagens areas de uma grande companhia. Milhares de terminais de atendimentos conectados ao Banco de Dados, com operaes de insero, alterao e excluso sendo feitas a todo instante. Nestas situaes o ganho em performance considervel. Mas, como tudo na vida, temos que considerar o outro lado da situao. Ao definirmos um FILL FACTOR elevado estaremos deixando um percentual de espao em branco, disponvel em cada pgina. Para sistemas que fazem basicamente consulta, um FILL FACTOR elevado ser prejudicial, pois a consulta ter que acessar um nmero maior de pginas de dados para reunir a informao necessria. Maior nmero de pginas, mais operaes de I/O de disco = pior desempenho. Ento em sistemas DSS (Decision Support Systems), onde no temos alteraes nem inseres de dados, mas sim um grande volume de consultas aos dados, o ideal um FILL FACTOR de 100%, ou seja, sem espao nas pginas de dados. Falaremos um pouco mais sobre os diferentes ambientes de trabalho (DSS Decision Support System), OLTP e OLAP no Apndice. O valor do parmetro FILL FACTOR um valor percentual, o qual varia de 0 a 100%. Um valor de 100% significa que as pginas de dados sero ocupadas completamente, o que implica menor espao para armazenamento e tambm menos operaes de I/O de disco para as consultas, conforme descrito anteriormente. Na maioria das situaes o valor padro definido pelo prprio SQL Server 2005 j satisfatrio, mesmo para aplicaes que tenham muitas operaes de insero e atualizao. O percentual de espao livre definido na criao do ndice. medida que novos registros vo sendo inseridos ou alterados, as pginas de dados vo sendo preenchidas e o percentual de espao livre vai proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000213 diminuindo. Caso voc queira redefinir o percentual de espao livre, basta recriar o ndice com a definio do FILL FACTOR para o percentual desejado. O valor default para o FILL FACTOR 0%. Porm este valor no significa que as pginas de dados esto zero por cento preenchidas. Na prtica este valor instrui o SQL Server a criar pginas de dados praticamente preenchidas, deixando apenas um pouco de espao para otimizaes do ndice. Voc pode alterar este valor padro acessando as propriedades da instncia do servidor SQL Server, atravs da guia Database Settings, conforme indicado na Figura 4.23: Figura 4.23 Valor default para o FILL FACTOR. Para criar um ndice com a opo FILL FACTOR, basta utilizar WITH FILLFACTOR = x %, conforme indicado no exemplo a seguir: CREATE NONCLUSTERED INDEX NomeIndex ON Autores (nome) WITH FILLFACTOR = 65 FUNDAMENTOS EM: COMANDOS ADICIONAIS PARA TRABALHAR COM NDICES PR-REQUISITOS Noes bsicas sobre o conceito de ndices. Saber utilizar a janela para execuo de comandos T-SQL. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 2140000Curso Completo N O T A METODOLOGIA Apresentao dos comandos T-SQL relacionados com ndices. Neste item veremos alguns comandos teis para trabalhar com ndices. O comando sp_helpindex: Este comando retorna uma srie de informaes sobre os ndices de uma tabela ou view. A sintaxe para este comando bastante simples. exec sp_helpindex nome_da_tabela_ou_view Por exemplo, o comando: exec sp_helpindex Customers retorna o resultado indicado na Figura 4.24. Figura 4.24 Informaes retornadas por sp_helpindex. Uma coluna indexada em ordem descendente ser listada com um sinal de menos aps o nome. O comando sp_spaceused: Este comando retorna informaes sobre o espao ocupado por uma tabela. A sintaxe para este comando bastante simples. exec sp_spaceused nome_da_tabela Por exemplo, o comando: exec sp_spaceused Customers retorna o resultado indicado na Figura 4.25. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000215 Figura 4.25 Informaes retornadas por sp_spaceused. Observe que uma das informaes retornadas o tamanho do ndice. O comando sp_help: Este comando retorna uma srie de informaes sobre uma determinada tabela, inclusive informaes sobre os ndices. A sintaxe para este comando bastante simples. exec sp_help nome_da_tabela Por exemplo, o comando: exec sp_help Customers retorna uma srie de informaes sobre a tabela Customers. EXCLUINDO NDICES Para excluir um ndice bastante simples. Podemos excluir um ndice com o SQL Server Management Studio ou atravs de comandos T-SQL. Com o SQL Server Management Studio, basta localizar o ndice a ser excludo, clicar com o boto direito do mouse no ndice e, no menu de opes que exibido, clicar em Delete. Ser exibida uma janela de confirmao. Clique em OK e pronto, o ndice ser excludo. EXCLUINDO UM NDICE COM O QUERY ANALYZER Para excluir um ndice utilizando comandos T-SQL, utilizamos o comando DROP INDEX. A sintaxe para este comando a seguinte: DROP INDEX nome_da_tabela.nome_do_indice Observe a nomenclatura, onde utilizamos o nome da tabela, um ponto (.) e o nome do ndice. Por exemplo, para excluir o ndice CodCliIndex da tabela Clientes, do Banco de Dados Exemplo1, deveramos utilizar o seguinte comando: DROP INDEX Clientes.CodCliIndex proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE I: FUNDAMENTOS 2160000Curso Completo NOVIDADE DO SQL SERVER 2005 DESATIVAO DE NDICES Uma das novidades do SQL Server 2005, em relao aos ndices, a possibilidade de desativar um ndice. Ao desabilitar um nonclustered index, este no poder ser acessado pelos usurios, porm o acesso aos dados da tabela continua liberado. Ao desabilitar um clustered index, os usurios no tero acesso nem ao ndice e nem aos dados da respectiva tabela. As definies do ndice sero mantidas, porm suas estatsticas sero perdidas. J, se o ndice que estiver sendo desabilitado for um ndice de uma view, os dados do ndice sero perdidos. Ao desabilitar um clustered index, o acesso aos dados da tabela no estar disponvel, porm os dados no sero excludos. Uma vez habilitado novamente o clustered index, o acesso aos dados ser liberado. Durante um upgrade de verses anteriores do SQL Server para o SQL Server 2005, automaticamente o Setup desabilita os ndices existentes. Ou o prprio administrador poder desabilitar um ndice, usando o comando ALTER INDEX. Voc tambm pode desabilitar um ndice, localizando o ndice com o SQL Server Management Studio, clicando com o boto direito do mouse no ndice e, no menu que exibido, clicar em Disable. Ser exibida uma janela para voc confirmar a desabilitao do ndice. Clique em OK e pronto, o ndice foi desabilitado. Para habilitar novamente o ndice, usando o SQL Server Man- agement Studio, localize o ndice a ser reabilitado, clique com o boto direito do mouse no ndice e, no menu de opes que exibido, clique em Rebuild. Para habilitar novamente um ndice so utilizados os comandos ALTER INDEX REBUILD ou CREATE INDEX WITH DROP_EXISTING. Como exemplo, considere o comando: ALTER INDEX IX_Employee_ManagerID ON HumanResources. Employee DISABLE. Este comando desabilita o ndice IX_Employee_ManagerID, na tabela HumanResources.Employee. CONCLUSO Iniciamos o captulo com a apresentao dos tipos de dados existentes no SQL Server 2005. Depois aprendemos a criar tipos de dados definidos pelo usurios User-defined data types. Em seguida aprendemos a criar tabelas, tanto utilizando o SQL Server Management Studio quanto utilizando comandos T-SQL. Finalmente fizemos um estudo detalhado sobre a aplicao e criao de ndices. Para finalizar o captulo gostaria de colocar algumas recomendaes quanto criao de ndices. Use ndices nas seguintes situaes: Para consultas com critrios baseados em uma faixa de valores e que retornam um pequeno nmero de linhas. Colunas que so utilizadas freqentemente em operaes de join devem ser utilizadas para a criao de ndices. Consultas que retornam dados de uma forma ordenada. Neste caso basta criar um clustered index para o campo e ordem desejada. Por exemplo, se voc tem uma consulta que deve listar todos os pedidos por ordem do nmero do pedido, ao invs de ordenar a consulta utilizando a proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 4 CRIANDO TABELAS, NDICES E VIEWS COM O SQL SERVER 2005 Curso Completo0000217 clusula ORDER BY, crie um clustered index na coluna NmeroPedido, na ordem desejada pela consulta (Ascendente ou Descendente). Orientaes para a utilizao de ndices: Utilize ndices com moderao. No saia simplesmente indexando todas as colunas de todas as tabelas, pois o efeito obtido pode ser uma reduo no desempenho das consultas ao invs de um aumento de desempenho, devido necessidade de manuteno dos ndices. Lembre que toda vez que dados so inseridos, alterados ou excludos, os ndices precisam ser atualizados, o que gasta recursos do servidor SQL Server, tanto em termos de memria quanto de processamento. Para pequenas tabelas, isto , tabelas com poucos registros, no se justifica a criao de ndices. mais onerosa a manuteno dos ndices do que a realizao de um table scan em uns poucos registros. Sempre que possvel utilize as chamadas Covering querys, as quais so consultas em que todas as colunas que fazem parte da consulta possuem ndices. Desta forma somente o ndice acessado, sem a necessidade de pesquisar na tabela diretamente. Isto reduz drasticamente as operaes de I/O de disco e aumenta muito o desempenho. No prximo captulo trataremos de Backup e de outras tarefas para manter o Banco de Dados em plena forma e funcionamento. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000219 Parte 2 KNOW-HOW proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! N O T A proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Captulo 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2220000Curso Completo INTRODUO Os dados armazenados nos bancos de dados da empresa so o seu maior patrimnio. Transformar estes dados em informaes teis para o negcio da empresa o grande desafio da TI Tecnologia da Informao. a j velha e conhecida, porm sempre atual mxima: A informao certa, para a pessoa certa e no tempo certo. Uma vez que estes dados so de vital importncia, obviamente que devemos possuir mecanismos de proteo para eles, a fim de evitar perdas (garantindo a disponibilidade), adulterao e acesso indevido aos dados (garantindo a integridade e autenticidade dos dados). Evitar adulterao e acesso indevido aos dados faz parte da segurana de acesso aos dados, quer da segurana lgica quanto da segurana fsica do acesso sala dos servidores. Porm segurana assunto para o Captulo 6. Neste captulo vamos tratar das estratgias e mecanismos de implementao de rotinas de backup dos dados (cpias de segurana dos dados). O backup certamente uma das tcnicas mais antigas e mais eficientes para se proteger contra a perda de dados (infelizmente, por incrvel que possa parecer, as atividades de backup/restore, os planos de contingncia e de recuperao a desastres, continuam no tendo a devida ateno, cuidado e planejamento necessrios). Iniciaremos o captulo falando sobre transaes e o Log de Transaes (Transaction Log) em Bancos de Dados do SQL Server 2005. Precisamos entender o conceito de log de transaes, para que possamos estudar as diversas estratgias de backup e identificar qual a estratgia mais adequada para cada situao. Entendido o conceito de log de transaes, podemos partir para o estudo das estratgias de backup/ Restore. A operao de restore a utilizao de uma cpia de backup para Restaurar os dados de volta para o Banco de Dados, em caso de perda dos originais. Por isso, no existe sentido falar somente em backup. Quando fazemos uma cpia de segurana do Banco de Dados para outro dispositivo, normalmente uma fita magntica ou uma pasta no HD, estamos fazendo um backup (cpia de segurana). Se acontecer algum problema com os dados, precisamos Restaurar (Restore) os dados a partir do backup, de volta para o Banco de Dados. Existe at uma brincadeira bastante conhecida entre os DBAs: O backup sempre funciona, o problema o restore. Nesta situao, o DBA (Database Ad- ministrator) est querendo dizer que a operao de backup, normalmente, no apresenta problemas. As maiores complicaes acontecem na hora de restaurar os dados. Embora seja uma brincadeira, esta afirmativa representa uma realidade, muitas vezes bastante cruel. Se no formos cuidadosos e planejarmos com preciso o nosso sistema de backup/restore, poderemos ter problemas bastante desagradveis. J pensou a reao do chefe quando voc informa que no poder restaurar os dados com as operaes financeiras da ltima semana porque na hora de fazer o backup foi tudo bem, porm na hora de restaurar os dados, nada funcionou? Uma vez entendidas as diversas estratgias de backup/restore, iremos para a implementao prtica das rotinas de backup/restore. Em um exerccio prtico, faremos o backup de um Banco de Dados, depois iremos corromper os dados e a teremos que restaurar os dados a partir do backup feito inicialmente. Seguindo o padro dos demais captulos, aprenderemos a fazer backup/restore utilizando o SQL Server Management Studio e tambm comandos T-SQL, usando a janela de execuo de comandos do SQL Server Management Studio, a qual voc j aprendeu a utilizar nos Captulos 3 e 4. medida que o banco de dados vai crescendo, pode tornar-se praticamente impossvel fazer o backup manualmente. E se o backup tiver que ser feito s 5h da manh? Ou se tiver que iniciar s 2:00 hs da proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000223 manh, para que possa ser concludo antes das 8:00 hs, que quando inicia o expediente? Iremos contratar um DBA especialmente para esta tarefa? Conforme veremos, possvel Agendar Tarefas no SQL Server 2005. E um timo exemplo de tarefa que se presta a ser agendada a execuo de rotinas de backup, fora do horrio de expediente. Aprenderemos a agendar tarefas e fazer com que, aps a execuo da tarefa, uma determinada mensagem seja enviada para o DBA. Tambm veremos quais outros tipos de tarefas -podem ser agendados e os demais recursos para agendamento de tarefas. KNOW-HOW EM: CONCEITO DE LOG DE TRANSAES NO SQL SERVER 2005 PR-REQUISITOS Fundamentos apresentados na Parte I. METODOLOGIA Apresentao terica sobre o log de transaes. No Captulo 2, em uma breve introduo a respeito de transaes, defini uma transao da seguinte maneira: Uma transao, de uma maneira bastante simples, um conjunto de operaes sobre os dados, que deve acontecer como um todo, ou seja, todas as operaes contidas na transao devem ser finalizadas com sucesso, ou nenhuma delas deve ser realizada. Caso uma das operaes, contidas na transao, venha a falhar, as operaes ainda pendentes devem ser canceladas; e as operaes j realizadas devem ser revertidas. Com isso garantimos que a transao acontece como um todo, ou que nenhuma de suas operaes seja realizada. No Captulo 3, onde aprendemos a criar Bancos de Dados no SQL Server 2005, ns vimos que todo Banco de Dados deve ter, no mnimo, um arquivo de log, o qual tambm chamado de Transaction Log do Banco de Dados. Em resumo, todo Banco de Dados do SQL Server 2005 deve possuir pelo menos um arquivo de log, sendo que no possvel desativar o mecanismo de log no SQL Server 2005. De agora em diante iremos utilizar o termo: Log de Transaes do Banco de Dados. No Captulo 3 escrevi o seguinte pargrafo: Os arquivos de log armazenam o chamado log de transaes. O log de transaes um registro das operaes que so efetuadas nos dados do Banco de Dados. Veremos mais detalhes sobre o log mais adiante. No log de transaes do Banco de Dados so registradas as seguintes operaes efetuadas sobre os dados: INSERT UPDATE DELETE No log de transaes fica o registro da transao, caso esta tenha sido executada com sucesso, ou o registro da reverso (Roll Back) da transao, caso uma ou mais das operaes que compem a transao venha a falhar. Este mecanismo fundamental para garantir a integridade dos dados, garantindo que estes estejam em um estado sempre consistente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2240000Curso Completo Agora vamos detalhar um pouco mais estes conceitos. UM POUCO MAIS SOBRE O CONCEITO DE TRANSAO Conforme descrevemos no Captulo 2, uma transao representa um conjunto de operaes, sendo que todas as operaes devem ser executadas com sucesso. Caso uma nica operao venha a falhar, as operaes restantes sero canceladas e as que j foram executadas sero revertidas. Quando todas as operaes so executadas com sucesso dizemos que a transao sofreu um Commit. Quando a transao falha (pelo fato de uma de suas operaes ter falhado), dizemos que a transao sofreu um roll back. Quando a transao sofreu um roll back, os dados estaro no mesmo estado, isto , com os mesmos valores, que estavam antes do incio da transao. O exemplo mais tpico o que envolve a transferncia entre duas contas correntes em um banco. Para ilustrar o conceito, vamos repetir o exemplo colocado no Captulo 2. Utilizando a terceira maior inveno do milnio passado, que na minha opinio o Copiar e Colar (Ctrl+C, Ctrl+V), transcrevo abaixo o exemplo de transao apresentado no Captulo 2: O pagamento pode ser feito, por exemplo, atravs de uma transferncia da conta corrente da concessionria, para a conta corrente do fornecedor. Neste ponto, precisamos introduzir o conceito de transao, o qual ser bastante detalhado em outros captulos deste livro. (...) Para entender, na prtica, o conceito de transaes, vamos voltar ao exemplo anterior. Ao efetuar um pagamento, o sistema deve transferir valores da conta corrente da concessionria para a conta corrente do fornecedor. Estas duas aes devem acontecer no contexto de uma transao, conforme indicado abaixo: Incio da Transao Ao 1: Debita o valor da conta corrente da Concessionria. Ao 2: Credita o valor na conta corrente do Fornecedor. Final da Transao. A primeira ao efetua o dbito na conta corrente da concessionria. Vamos supor que a Ao 1 ocorra com sucesso, porm, na hora de fazer o crdito na conta corrente do Fornecedor, ocorra um problema. O que devemos fazer? O valor deve ser estornado para a conta da concessionria, ou seja, a Ao 1 deve ser revertida, uma vez que nem todas as aes dentro da transao puderam ser concludas com xito. Vejam a importncia do conceito de transao, pois, neste caso, se no usssemos transao, o valor seria debitado da conta corrente da concessionria, porm no teria sido creditado na conta corrente do fornecedor. Revisado o conceito de transao, vamos analisar as caractersticas que definem uma transao. Existem quatro caractersticas que toda transao deve apresentar: Atomicidade Consistncia Isolao Durabilidade proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000225 Estas quatro caractersticas so resumidas pela sigla ACID. Vamos ver o que significa cada uma destas caractersticas. Atomicidade: A transao deve representar uma unidade de trabalho atmica, isto , indivisvel. Com isso ou todas as operaes de uma transao devem ser executadas com sucesso, ou nenhuma delas deve ser executada. Esta caracterstica parece se confundir com o prprio conceito de transao: ou tudo ou nada. O nada, conforme descrito anteriormente, garantido pelo mecanismo de roll back, isto , se uma das operaes que faz parte da transao falhar, as operaes j executadas sero revertidas. No SQL Server 2005, o mecanismo de log apresenta exatamente este comportamento. Consistncia: Ao ser finalizada a transao, todos os dados devem estar em um estado consistente. Estar em um estado consistente, em um Banco de Dados relacional, significa que todas as regras e a integridade referencial foram respeitadas. Por exemplo, uma transao no deve ser capaz de cadastrar um pedido na tabela Pedidos, para um cliente que ainda no foi cadastrado na tabela Clientes. Se isto acontecer, os dados no estaro em um estado consistente. Ao final de uma transao, estruturas auxiliares, como por exemplo os ndices, tambm devero ter sido atualizadas. Com o SQL Server 2005, a consistncia dos dados garantida, quer a transao tenha sido realizada com sucesso ou tenha sofrido um roll back. Isolamento: Em um ambiente com muitos usurios, diversas transaes sero executadas simultaneamente. O mecanismo de isolamento garante que uma determinada transao no utilizar dados em um estado intermedirio. Vamos supor que uma transao que chamaremos TR1 tenha iniciado. Antes que TR1 tenha terminado inicia-se uma segunda transao TR2. Agora imagine que uma das operaes de TR2 precise acessar dados que estejam sendo modificados por TR1. Pelo mecanismo do isolamento, TR2 ter acesso aos dados no estado em que estes encontravam-se antes do incio de TR1 caso TR1 ainda no tenha sido encerrada ou no estado aps o encerramento de TR1 caso TR1 j tenha sido encerrada. Desta maneira uma transao (no nosso exemplo TR2) no ser afetada por valores que tenham sido alterados por outra transao (no nosso exemplo TR1), enquanto estas alteraes no tenham se tor- nado definitivas, isto , a transao tenha sido completada com sucesso. Existem diferentes nveis de isolamento, os quais sero estudados no Captulo 10: Read uncommitted, Read com- mitted, Repeatable read e Serializable. Durabilidade: Uma vez encerrada a transao, as alteraes por ela efetuadas sero definitivas. Mesmo que ocorra alguma falha com o SQL Server, o sistema operacional ou o equipamento, quando o SQL Server 2005 for reinicializado as transaes que esto no log e ainda no foram aplicadas ao Banco de Dados sero aplicadas, fazendo com que as modificaes tornem-se permanentes. Vamos analisar um pouco melhor o que significa aplicar uma transao ao Banco de Dados. COMO FUNCIONA O LOG DE TRANSAES Quando estamos desenvolvendo uma aplicao quer seja em Visual Basic, VB.NET, ASP, ASP.NET, Microsoft Access, Delphi, C#, etc. , que acessa dados em um servidor SQL Server 2005, devemos definir o incio e o fim de uma transao no prprio aplicativo, e desta maneira controlamos quais operaes devem acontecer no contexto de uma transao. Por exemplo, podemos criar uma pgina proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2260000Curso Completo ASP que executa no contexto de uma transao; desta maneira todas as operaes realizadas pela pgina ASP, em um Banco de Dados do SQL Server 2005, ocorrero no contexto de uma transao: ou todas so executadas com sucesso (Commit) ou todas falham (Roll Back). Quando uma transao iniciada e as operaes individuais INSERT, DELETE ou UPDATE comeam a ser enviadas para o Banco de Dados, os seguintes passos so executados no servidor SQL Server 2005: 1. As pginas que contm os dados que esto sendo afetados (ou a pgina na qual os dados sero inseridos) so localizadas no disco e carregadas na memria, a qual chamada de Cache de dados. Antes de carregar uma pgina no cache de dados, o SQL Server 2005 verifica se a pgina j est no cache de dados. Se a pgina no estiver no cache, ela ser localizada no disco e carregada na memria. 2. As alteraes/incluses/excluses nunca so feitas diretamente no disco, mas sim nas pginas de dados carregadas na memria. As alteraes/incluses/excluses so ento registradas no arquivo de log. Neste momento as modificaes esto registradas apenas no log e no foram ainda realizadas nos arquivos de dados, no disco. 3. Um processo chamado de Checkpoint responsvel por fazer com que as transaes que tenham sido completadas com sucesso (Commit) sejam aplicadas ao Banco de Dados periodicamente, fazendo com que as modificaes sejam definitivamente aplicadas ao Banco de Dados, isto , gravadas no disco. O processo de checkpoint grava no log de transaes informaes para saber quais transaes j foram aplicadas ao Banco de Dados e quais ainda no foram. Transaes que sofreram um roll back no sero aplicadas ao Banco de Dados. O processo de checkpoint fica periodicamente checando se existem transaes completadas com sucesso (Committed Transactions) no log do Banco de Dados, as quais ainda no foram executadas no arquivo de dados, no disco. Caso acontea alguma falha que interrompa o servidor SQL Server 2005, um processo de recuperao automtica disparado na prxima inicializao do servidor. Este processo de recuperao automtica faz com que transaes que forem completadas e no aplicadas ao Banco de Dados sejam aplicadas neste momento, garantindo, com isto, a durabilidade da transao. Agora que conhecemos o conceito de transao e o mecanismo do log de transaes no SQL Server 2005, podemos estudar algumas estratgias de backup que utilizam o log de transaes. KNOW-HOW EM: TIPOS E ESTRATGIAS DE BACKUP PR-REQUISITOS Fundamentos apresentados na Parte I. METODOLOGIA Apresentao terica sobre tipos e estratgias de backup. Antes de aprendermos a criar backups/restore na prtica, precisamos aprender sobre os tipos de backup disponveis e sobre as estratgias de backup/restore mais utilizadas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000227 INTRODUO Sendo as informaes o bem mais valioso da sua empresa e estando estas informaes armazenadas nos bancos de dados da empresa, de fundamental importncia que tenhamos uma estratgia bem definida para a proteo deste bem to valioso. Devemos nos preocupar no apenas com a perda dos dados, mas tambm com acessos indevidos ou at mesmo com roubo de informaes. Se um concorrente conseguir invadir a sua rede e copiar dados estratgicos voc estar com um grande problema. Tambm pode haver perda de dados por erros humanos, como a utilizao de comandos do SQL. O caso mais tpico a utilizao de um comando DELETE sem uma clusula WHERE, como exemplificado a seguir: DELETE * FROM Clientes Este comando, aparentemente inocente, ir apagar todos os registros da tabela Clientes. E se voc no tiver uma boa estratgia de backup? Problemas vista. Cada vez mais as empresas conectam suas redes locais Internet. Os benefcios so muitos, porm existem tambm problemas. Ao conectar a rede da empresa com a Internet, devemos nos preocupar com diversos fatores que podem causar danos s informaes armazenadas no Banco de Dados, como por exemplo: Invases e ataques de hackers. Perda de informaes devido a problemas com vrus. Acesso indevido s informaes. Como se tudo isso no bastasse tambm devemos nos preocupar com a segurana fsica, desastres naturais e problemas com hardware. De nada adianta voc configurar cuidadosamente a segurana de acesso aos dados do Servidor SQL Server, ter uma boa estratgia de backup/restore se qualquer um puder entrar na sala onde esto as fitas de backup e levar a fita em baixo do brao, para ler os dados em outro lugar. Existe um caso bastante conhecido em que um estranho ligou para a empresa e pediu para que o DBA deixasse a fita com o backup dos dados na portaria. Sem maiores preocupaes a fita foi deixada com o porteiro que a entregou para a pessoa que havia solicitado. Veja que situao cmica se no fosse to grave. Por isso a segurana fsica deve fazer parte da poltica de segurana da empresa. Desastres naturais no devem ser desconsiderados. Incndios, inundaes e outros acontecem e devem ser levados em conta na hora de montarmos a poltica de segurana da empresa. Vamos supor que para a empresa seja de fundamental importncia que seu site esteja disponvel 100% do tempo, mesmo em caso de calamidades. Neste caso voc deve considerar a hiptese de ter os dados duplicados em duas ou mais localidades fsicas diferentes, como por exemplo: Rio de Janeiro e So Paulo. Desta forma, se o escritrio do Rio de Janeiro pegar fogo, as operaes podem ser deslocadas para o site de So Paulo, o qual deve ser uma cpia fiel do site do Rio de Janeiro. No Captulo 8 voc aprender sobre a replicao de dados, o que nos permite manter cpias idnticas dos dados em diversos servidores. Outra situao que devemos considerar o local de armazenamento das fitas de backup. comum vermos empresas que armazenam as fitas de backup na prpria sala dos servidores de Banco de Dados; desta maneira se a sala pegar fogo, j queima os servidores e tambm as fitas, e a empresa proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2280000Curso Completo perde todas as cpias dos dados. J deu para perceber que esta uma pssima estratgia? O ideal termos uma sala separada para o armazenamento das fitas de backup, de preferncia uma sala-cofre prova de fogo e inundaes. Falhas de hardware acontecem e devemos estar preparados para este tipo de falha. Aquele disco de 300 GB com os arquivos do Banco de Dados de vendas pifou? E agora? Se a nossa estratgia de backup foi eficiente, s substituir o disco e restaurar os dados a partir do backup. Podem existir situaes em que o tempo necessrio para restaurar os dados a partir do backup inaceitvel. Por exemplo, o site da empresa no pode esperar, digamos, 6 horas para que os dados sejam restaurados. Nesta situao podemos considerar a hiptese de manter cpias idnticas dos dados em dois ou mais servidores. Conforme descrito anteriormente, podemos fazer esta duplicao dos dados utilizando Replicao. Desta maneira se houver uma falha de hardware em um dos servidores, outro servidor pode assumir o trabalho do servidor que falhou. No SQL Server 2005 temos novidades que facilitam a criao de servidores e bancos de dados duplicados. So os novos recursos de: Databases Snapshots e Mirroring, os quais sero vistos no Captulo 15, onde apresentarei uma srie de exemplos prticos, relacionados com as novidades do SQL Server 2005. Um fator que devemos levar em considerao, na hora de montarmos a nossa estratgia de backup/ restore e proteo dos dados, o valor da informao que est sendo protegida. Se a informao a ser protegida de valor estratgico para a empresa, e os dados precisam estar sempre disponveis e nem se imagina a hiptese de perd-los; evidente que os gastos para proteger esta informao sero elevados, porm mais facilmente justificveis. Em resumo, o nvel de investimento em segurana e backup proporcional importncia dos dados para a empresa. Devemos identificar os requisitos de disponibilidade dos dados quando formos escolher a nossa estratgia de backup. Vamos supor que o requisito seja: os dados devem estar disponveis 100% do tempo. Neste caso plenamente justificvel a utilizao de dois ou mais servidores SQL Server 2005 com cpias idnticas dos dados, de tal maneira que, se um deles apresentar problemas, um dos outros pode assumir no seu lugar. Nesta situao, a simples utilizao de backup em fita no atenderia o requisito de disponibilidade, uma vez que os dados estariam indisponveis durante o tempo de restaurao da fita para o Banco de Dados. A seguir coloco mais algumas questes que devemos levar em considerao ao montarmos a nossa estratgia de backup/restore: Quais os requisitos de disponibilidade? O Banco de Dados deve estar on-line as 24 horas do dia, sete dias por semana ou pode ser colocado off-line em determinados horrios? Qual o custo de parar as operaes da empresa devido indisponibilidade dos dados? Qual o custo financeiro e para a imagem da empresa quando o site da empresa fica indisponvel, devido a problemas com o Banco de Dados? Em caso de uma falha de hardware qual o tempo aceitvel at a restaurao da normalidade? A sua empresa possui um DBA dedicado ou o servio terceirizado? Quem o responsvel pelas rotinas de backup? Quem o responsvel por verificar se os procedimentos de backup/ restore esto sendo realizados em conformidade com a estratgia proposta? proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000229 Outras questes podem ser relevantes para a sua empresa. O importante fazer um planejamento bastante cuidadoso. Em uma estratgia de backup definimos o tipo de backup a ser utilizado (conforme veremos a seguir), bem como a freqncia do backup. Pela importncia do procedimento vou repetir a seguinte recomendao: No basta fazer o backup, precisamos de uma estratgia de testes e simulao de restaurao dos dados, pois muitas vezes o backup completado sem problemas, mas na hora de restaurar os dados que acontecem os problemas. Por isso uma rotina de testes de restaurao a partir dos backups deve fazer parte da nossa estratgia de backup. MTODOS DE BACKUP QUANTO AO CONTEDO DO BACKUP Quanto ao contedo do backup, temos duas abordagens para o backup de um Banco de Dados: Fazer o backup somente do Banco de Dados: Com esta abordagem o backup do Banco de Dados feito periodicamente. Caso acontea algum problema com o Banco de Dados, as alteraes que tenham sido feitas desde o ltimo backup sero perdidas. Considere o exemplo da Figura 5.1. Figura 5.1 backup somente do Banco de Dados. Fazer o backup apenas do Banco de Dados apresenta como principal vantagem a simplicidade, e como principal desvantagem a perda das alteraes entre o ltimo backup e o momento em que o problema ocorre no Banco de Dados. Com esta abordagem, a restaurao tambm bastante simples, conforme veremos mais adiante, na parte prtica deste captulo. Utilizamos este tipo de abordagem para pequenos Bancos de Dados devido a sua simplicidade. Para Bancos de Dados maiores, mais complexos, devemos fazer o backup tambm do log de transaes, conforme descrito a seguir. backup do Banco de Dados e do log de transaes: Com esta abordagem fazemos o backup de todo o Banco de Dados menos freqentemente do que no caso anterior; em contrapartida feito o backup do log de transaes entre os backups do Banco de Dados. Poderamos ter a seguinte estratgia de backup: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2300000Curso Completo N O T A 1. Backup do Banco de Dados no domingo s 20h. 2. Backup do log de transaes na segunda-feira s 9:00, 15:00, 18:00 e 21:00h 3. Backup do log de transaes na tera-feira s 9h, 15h, 18h e 21h. 4. Backup do log de transaes na quarta-feira s 9h, 15h, 18h e 21h. 5. Backup do log de transaes na quinta-feira s 9h, 15h, 18h e 21h. 6. Backup do log de transaes na sexta-feira s 9h, 15h, 18h e 21h. 7. Backup do log de transaes no sbado s 9h, 15h, 18h e 21h. 8. Backup do Banco de Dados no domingo s 2h. Agora vamos imaginar que o Banco de Dados tenha sido corrompido na sexta-feira, s 20h. A que situao podemos restaur-lo? Poderemos restaur-lo situao do ltimo backup do log de transaes, que no caso foi feito na sexta- feira s 18h. Na verdade, conforme veremos mais adiante, possvel, dependendo das condies, restaurar o Banco de Dados at prximo do horrio em que o banco foi corrompido, digamos um minuto antes de o banco ter sido corrompido. Neste caso apenas as alteraes feitas por transaes que ainda no tenham sido completadas (Committed Transactions) sero perdidas. No prximo item veremos as estratgias para a restaurao do Banco de Dados quando utilizamos backups do Banco de Dados e do log de transaes. Este tipo de abordagem mais complexa do que a anterior, sendo indicada para Bancos de Dados maiores e que no podem, em hiptese alguma, perder alteraes que tenham sido feitas desde o ltimo backup do banco de dados. A complexidade aumenta, principalmente, na hora de restaurar os dados. Utilizando o exemplo anterior, em que o banco de dados corrompeu na sexta-feira, s 20h, teramos que restaurar o backup do Banco de Dados feito no domingo e todos os logs de transao feitos neste intervalo. A restaurao tem que ser feita em seqncia. Alm disso, ao restaurarmos os logs de transao, estes devem ser restaurados na ordem cronolgica em que foram feitos. como se estivssemos aplicando novamente todos os comandos que foram executados no Banco de Dados, uma vez que o llog de transaes um registro dos comandos executados no Banco de Dados, principalmente comandos que inserem, alteram ou excluem dados. Temas uma novidade importante do SQL Server 2005, em relao ao backup/restaurao do banco de dados. Com o SQL Server 2000, o banco de dados permanece indisponvel para uso, durante todo o processo de restaurao, o que aumenta o tempo de indisponibildiade do banco de dados. J o SQL Server 2005 suporta um recurso conhecido como Partil Restore. No SQL Server 2005, o banco de dados passa a estar disponvel para uso, assim que for concluda a restaurao do filegroup Primary. O filegroup Primary contm as informaes da estrutura do banco de dados, sem as quais no possvel colocar um proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000231 banco de dados on line. Uma vez restaurado o filegroup Primary, o banco de dados passa a estar online e disponvel para o uso e o processo de restaurao continua. Se um usurio tentar acessar um conjunto de dados que ainda no foi restaurado (por exemplo, dados que esto em filegroups que ainda no foram restaurados), o usurio receber uma mensagem de que os dados esto off-line e que ele deve tentar novamente mais tarde. Se o usurio tentar acessar dados de um filegroup que j foi restaurado, os dados sero acessados, normalmente, e o usurio nem fica sabendo que o processo de restaurao dos demais filegroups ainda est em andamento (a no ser por uma queda no desempenho, queda esta que ser perfeitamente normal, para o caso de uma restaurao de backup estar em andamento). Outra novidade do SQL Server 2005, na rea de backup/restore, conhecida como Concurrente Data- base and Log backups, ou seja, a possibilidade de fazer o backup, ao mesmo tempo, tanto do banco de dados quando do log de transaes do banco de dados. No SQL Server 2000 voc primeiro tinha que aguardar o backup do banco de dados ser completado, para depois poder fazer o backup do log de transaes. No SQL Server 2005 no existe mais esta limitao, sendo possvel fazer o backup do banco de dados e do log de transaes, simultaneamente. Pode parecer que no seja de grande importncia esta nova funcionalidade, mas . Em grandes bancos de dados, um dos principais problemas a chamada janela de backup ou, em palavras mais simples, o tempo que o backup demora para ser completado. Com a possibilidade de fazer o backup do banco de dados e do log de transaes, simultaneamente, voc pode instalar duas ou mais unidades de fita e fazer o backup de ambos ao mesmo tempo, o que pode diminuir, consideravelmetne, a janela de backup. Porm ainda existe uma limitao, que a de somente poder fazer o backup de um dos arquivos de dados de um banco de dados (arquivos .mdf ou .ndf), por vez. Quem sabe no SQL Server 2005 esta limitao seja superada? TIPOS DE BACKUP Com o SQL Server 2005 podemos ter os seguintes tipos de backup: backup completo full backup. backup diferencial. backup do log de transaes. backup de filegroups. backup de arquivos de dados. Dependendo do tipo de backup a ser utilizado, teremos diferentes estratgias, conforme veremos mais adiante. Vamos estudar em detalhes cada um destes tipos. backup completo full backup: Este tipo de backup faz o backup de todo o Banco de Dados, incluindo todos os filegroups e arquivos de dados que fazem parte do Banco de Dados. Caso tenhamos mais de um Banco de Dados, devemos fazer o backup de todos eles. Neste tipo de backup feita a cpia de todo o Banco de Dados, independente das alteraes que tenham sido feitas desde o ltimo backup. Para grandes Bancos de Dados pode no ser vivel a utilizao de uma estratgia baseada somente neste tipo de backup, devido ao tempo que o backup pode demorar, pois a cada backup todo o Banco de Dados copiado para a mdia de backup (fita, CD, disco rgido, etc.). Este tipo de backup somente aconselhvel para pequenos Bancos de Dados devido a sua simplicidade. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2320000Curso Completo N O T A backup diferencial: Quando utilizamos o backup diferencial, apenas as informaes que foram alteradas desde o ltimo backup completo que sero copiadas. O backup diferencial mais rpido do que o backup completo, pois um nmero menor de informaes (somente as que foram alteradas. Entenda-se informaes como sendo pginas de dados, sendo que em uma pgina de dados pode haver diversos registros.) copiado. Copiando menos informaes, o backup finalizado mais rapidamente. Para grandes Bancos de Dados o tempo de backup, chamado de janela de backup, um fator crtico. Vamos supor que o Banco de Dados somente possa ser retirado do ar para backup entre 1h e 5h da manh. Neste caso somente teremos 4 horas como janela de backup. Usando uma estratgia que mescla back- ups completos com backups diferenciais, para restaurar o Banco de Dados, em caso de falha, devemos restaurar o ltimo backup completo, mais o ltimo backup diferencial e mais os backups do log de transaes na seqncia correta. Conforme pode ser visto, o processo de restaurao tambm a torna mais complexo com a utilizao do backup diferencial. Pode parecer que o backup diferencial somente introduz complicaes desnecessrias mas, na prtica, em muitas situaes o backup completo simplesmente no uma opo vivel devido ao tempo disponvel para backup janela de backup. backup do log de transaes: Este tipo de backup permite que faamos o backup do log de transaes do Banco de Dados. Conforme veremos no prximo item, com a utilizao de backup do log de transaes podemos reduzir a probabilidade de perda de dados. backup de filegroups: Com este tipo de backup podemos fazer o backup de todos os arquivos de dados associados com um filegroup (podendo ser arquivos de um ou mais bancos de dados). Apenas para recordar, os arquivos de log so armazenados separadamente, sendo que estes no fazem parte de nenhum filegroup. Todos os arquivos de dados so copiados para o backup, independente de terem havido alteraes ou no nos dados. backup de arquivos de dados: Com este tipo de backup, podemos copiar apenas um arquivo especfico, quer seja um arquivo primrio (.mdf) ou arquivo secundrio (.ndf). Uma vez que podemos fazer o backup de um nico arquivo de dados, evidentemente que tambm possvel restaurar um nico arquivo de dados. O backup de filegroup e o backup de arquivo de dados podem ser uma soluo para Bancos de Dados muito grandes, em que at mesmo um backup diferencial no caberia na janela de tempo do backup. ALGUNS EXEMPLOS DE ESTRATGIAS DE BACKUP/RESTORE Vamos ver alguns exemplos tericos de estratgias de backup/restore, onde consideramos os diferentes tipos de backup: completo, diferencial e do log de transaes. Exemplo 01: O backup completo dirio do Banco de Dados: Nesta estratgia fazemos um backup completo do Banco de Dados diariamente. Vamos considerar a programao de backup descrita na Tabela 5.1. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000233 Hiptese: Na quinta-feira, s 9 horas da manh o Banco de Dados corrompido. Recuperao do Banco de Dados: Nesta situao somente poderemos restaurar os dados na situao em que estes estavam na quarta-feira, s 23 horas, que foi o horrio do ltimo backup completo. Todas as alteraes realizadas, entre as 23 horas de quarta-feira e o momento em que o Banco de Dados foi corrompido, sero perdidas. Procedimento de restore: Restaurar o ltimo backup completo disponvel, que neste caso o backup da quarta-feira s 23h. Exemplo 02: O backup completo combinado com o backup do log de transaes: Nesta estratgia fazemos um backup completo do Banco de Dados em perodos mais espaados, digamos uma ou duas vezes por semana. Entre um backup completo e outro, so feitos backups do log de transaes. Vamos considerar a programao de backup descrita na Tabela 5.2. Dia Backup/horrio(s) Segunda-feira Completo s 23h Tera-feira Completo s 23h Quarta-feira Completo s 23h Quinta-feira Completo s 23h Sexta-feira Completo s 23h Sbado Completo s 23h Domingo Completo s 23h Tabela 5.1 Backup completo do Banco de Dados. Dia Backup/horrio(s) Sbado Completo s 23h Domingo Backup do log s 9h, 12h, 15h e 18h Segunda-feira Backup do log s 9h, 12h, 15h e 18h Tera-feira Backup do log s 9h, 12h, 15h e 18h Quarta-feira Backup do log s 9h, 12h, 15h e 18h Quinta-feira Backup do log s 9h, 12h, 15h e 18h Sexta-feira Backup do log s 9h, 12h, 15h e 18h Sbado Completo s 23h Tabela 5.2 Backup completo do Banco de Dados mais backup do Log de transaes. Hiptese: Na quinta-feira, s 9h30 o Banco de Dados corrompido. Recuperao do Banco de Dados: Neste situao poderemos restaurar os dados situao em que estes estavam na quinta-feira, s 9h, que foi o horrio do ltimo backup do log de transaes. Todas as alteraes realizadas entre as 9h e 9h30 da quinta-feira, e o momento em que o Banco proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2340000Curso Completo de Dados foi corrompido, sero perdidas. Na verdade existem algumas tcnicas avanadas que permitem recuperar os dados at prximo da hora em que o banco foi corrompido. Aprenderemos estas tcnicas mais adiante, neste captulo. Procedimento de restore: Restaurar o backup completo do sbado s 23h e todos os backups do log de transaes, na seqncia correta, at o backup do log de transaes da quinta-feira s 9h. Observe que nesta situao teramos que restaurar 18 backups: um completo do sbado + quatro backups do Log do domingo (9h, 12h, 15h e 18h) + quatro backups do Log da segunda-feira (9h, 12h, 15h e 18h) + quatro backups do Log da tera-feira (9h, 12h, 15h e 18h) + quatro backups do Log da quarta-feira (9h, 12h, 15h e 18h) + um backup do Log da segunda-feira (9h) Total = 18 backups a serem restaurados. Conforme podemos conferir pelo exemplo, esta estratgia mais complexa na hora de restaurar o Banco de Dados, porm temos uma perda de alteraes bem menor do que no caso da utilizao de somente backup completo. Em caso de perdas, estas so em menor nmero do que no caso do backup somente do Banco de Dados. Exemplo 03: O backup completo combinado com o backup diferencial e com o backup do log de transaes: Nesta estratgia fazemos um backup completo do Banco de Dados em perodos mais espaados, uma ou duas vezes por semana. Entre um backup completo e outro so feitos backups do log de transaes e tambm um backup diferencial na quarta-feira. Vamos considerar a programao de backup descrita na Tabela 5.3. Dia Backup/horrio(s) Sbado Completo s 23h Domingo Backup do log s 9h, 12h, 15h e 18h Segunda-feira Backup do log s 9h, 12h, 15h e 18h Tera-feira Backup do log s 9h, 12h, 15h e 18h Quarta-feira Backup do log s 9h, 12h, 15h e 18h Backup diferencial s 23h Quinta-feira Backup do log s 9h, 12h, 15h e 18h Sexta-feira Backup do log s 9h, 12h, 15h e 18h Sbado Diferencial s 23h Domingo Backup do log s 9h, 12h, 15h e 18h Segunda-feira Backup do log s 9h, 12h, 15h e 18h Tabela 5.3 Utilizando backups completos, diferenciais e do log de transaes. Continua proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000235 Observe que somente fizemos um backup completo no incio do ciclo, depois vamos fazendo nas quartas e sbados backups diferenciais e, entre os backups diferenciais, quatro backups dirios do log de transaes. Hiptese: Na quinta-feira, s 9h30, o Banco de Dados corrompido. Recuperao do Banco de Dados: Nesta situao poderemos restaurar os dados situao em que estes estavam na quinta-feira, s 9h, que foi o horrio do ltimo backup do log de transaes. Todas as alteraes, realizadas entre as 9h e 9h30 da quinta-feira e o momento em que o Banco de Dados foi corrompido, sero perdidas. Na verdade existem algumas tcnicas avanadas que permitem recuperar os dados at prximo da hora em que o banco foi corrompido. Aprenderemos estas tcnicas mais adiante, neste captulo. Procedimento de restore: Restaurar o backup completo do sbado s 23h, depois restaurar o backup diferencial da quarta-feira s 23h e o backup do log de transaes da quinta-feira s 9h. Observe que nesta situao teramos que restaurar trs backups: um completo do sbado + um diferencial na quarta-feira (23h) + um backup do log da quinta-feira (9h) Total = 3 backups a serem restaurados. Fica bastante claro que a utilizao do backup diferencial facilita muito o processo de restaurao do Banco de Dados que, conforme salientado pelo exemplo, diminui o nmero de backups que devam ser restaurados, em relao a uma estratgia que usa somente backups completos e do log de transaes. Com o SQL Server 2005 podemos efetuar o backup com o Banco de Dados on-line, isto , sendo utilizado por uma ou mais aplicaes. Porm no poderemos criar ou excluir arquivos de dados primrios (.mdf) ou secundrios (.ndf) enquanto o backup estiver sendo realizado. Agora que conhecemos a parte terica a respeito do log de transaes e dos tipos de backup possveis no SQL Server 2005, podemos aprender a fazer o backup dos dados e a restaurar os dados, quando necessrio. Mas antes um pouco sobre backup devices. Dia Backup/horrio(s) Tera-feira Backup do log s 9h, 12h, 15h e 18h Quarta-feira Backup do log s 9h, 12h, 15h e 18h Backup diferencial s 23h Quinta-feira Backup do log s 9h, 12h, 15h e 18h Sexta-feira Backup do log s 9h, 12h, 15h e 18h Sbado Diferencial s 23h Continua proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2360000Curso Completo N O T A Estou utilizando um computador que no possui drive de fita instalado, por isso, nos exemplos deste captulo, farei o backup em uma pasta do disco rgido. Na prtica um servidor com o SQL Server 2005, usado em um ambiente de produo na empresa, certamente ter um drive de fita para efetuar o backup, sendo esta a estratgia recomendada. No recomendada a realizao de backups no disco rgido, pois se o disco rgido for danificado o backup ser perdido. Fazer o backup no disco rgido anlogo situao em que as fitas de backup so guardadas na mesma sala do servidor. O princpio bsico que devemos deixar, fisicamente separados, os dados e as mdias de backup. Se possvel em prdios separados com as fitas de backup em uma sala-cofre prova de fogo. KNOW-HOW EM: O CONCEITO BACKUP DEVICES E CRIAO DE BACKUP DEVICES PR-REQUISITOS Noes sobre o log de transaes. Noes sobre estratgias de backup. Fundamentos apresentados na Parte I do Livro. Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL. METODOLOGIA Apresentao terica sobre backup Devices. TCNICA Utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL para a criao de backup Devices. Ao efetuarmos um backup devemos especificar um backup device, onde o backup ser efetuado. Conforme veremos a seguir, um backup device um conceito que associa um dispositivo fsico de backup, como um drive de fita ou um volume em um disco rgido, com um backup device. Falando de uma maneira bastante simples, o backup device um nome que associamos com um dispositivo fsico de backup, como por exemplo um drive de fita. Depois, na hora de fazer o backup, utilizamos o nome (backup device) ao invs de utilizar o caminho fsico para o dispositivo. O objetivo bsico do backup device facilitar a identificao dos dispositivos fsicos de backup. Vamos aprender um pouco mais sobre backup devices. O QUE SO BACKUP DEVICES? Com o SQL Server 2005 podemos fazer o backup do Banco de Dados, do log de transaes ou dos arquivos de dados para fita ou disco rgido. Para que possamos fazer um backup, devemos criar um backup device associado ao dispositivo onde ser realizado o backup. Com isso teremos backup de- vices de disco e backup devices de fita. backup devices de disco: Este tipo de device associado com um arquivo no disco rgido. O arquivo associado com o backup device um arquivo como outro qualquer. Podemos associar um backup device de disco com um arquivo localizado no disco rgido local ou em um compartilhamento da rede. O tamanho mximo para este tipo de backup device limitado apenas pelo espao disponvel em disco. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000237 Figura 5.2 A tabela sysdevices do Banco de Dados master. Um device criado no servidor\instncia e pode ser utilizado para fazer o backup de qualquer Banco de Dados do servidor\instncia. A principal vantagem da utilizao de device backup lgicos a simplicidade; por exemplo, muito mais fcil fazer referncia a backup_clientes do que a C:\sqlbackup\clientes\backup_clientes.bak. Ao efetuarmos o backup de um Banco de Dados podemos utilizar tanto o backup device fsico quanto o backup device lgico. Conforme descrito no pargrafo anterior o backup device lgico facilita e simplifica a referncia ao dispositivo de backup. N O T A Ao efetuarmos um backup em uma pasta compartilhada, podemos utilizar a conveno de nomes UNC Universal Naming Convention. O formato \\nome_do_servidor\nome_do_compartilhamento. A conta com a qual est rodando o servidor SQL deve ter permisso de escrita (Write) na pasta compartilhada, onde ser efetuado o backup, para que o backup possa ser efetuado com sucesso. Ao efetuarmos um backup atravs da rede sempre devemos levar em considerao o trfego de rede gerado pelo backup. Backup devices de fita: So backup devices associados com um drive de fita. O drive de fita deve estar instalado no servidor SQL Server 2005, onde o backup ser efetuado, isto , no posso acessar um drive de fita que est em outro servidor. Caso o backup no caiba em uma fita, o SQL Server 2005 solicita que uma nova fita seja inserida e continua o backup nesta nova fita. DEVICES LGICOS E DEVICES FSICOS Podemos fazer referncia a um backup device tanto utilizando o seu nome lgico quanto o nome fsico. O nome fsico do backup device o nome utilizado pelo Windows para identificar o backup device, como por exemplo: C:\sqlbackup\clientes\backup_clientes.bak. Conforme descrito anteriormente um backup device lgico um nome (apelido do ingls alias) utilizado para identificar, fazer referncia ao device fsico. A associao entre o device lgico e o device fsico armazenada na tabela sysdevices do Banco de Dados master, conforme indicado na Figura 5.2. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2380000Curso Completo N O T A CRIANDO UM BACKUP DEVICE LGICO COM O SQL SERVER MANAGEMENT STUDIO Agora vamos aprender a criar um backup device lgico, com as seguintes caractersticas: Nome: backup_clientes Localizao fsica: D:\backups\backup_clientes.bak. Embora estejamos criando um device chamado backup_clientes, no significa que somente poderemos fazer o backup do Banco de Dados Clientes, neste device. Conforme descrito anteriormente, um backup device criado em nvel de servidor\instncia e posso fazer o backup de qualquer Banco de Dados para o backup device. Crie a pasta D:\backups ou outra pasta que voc for utilizar para acompanhar este exemplo, antes de criar o device backup. Caso a pasta ainda no exista ser emitido um aviso na hora da criao do backup device. Exemplo prtico: Para criar o backup device backup_clientes, usando o SQL Server Management Stu- dio, siga os passos indicados a seguir: 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas -> Microsoft SQL Server -> SQL Server Management Studio). Figura 5.3 Criando um novo bakcup device. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000239 2. Na janela Object Browser, d um clique no sinal de + ao lado da instncia na qual voc ir criar o backup device. 3. Nas opes que surgem abaixo desta instncia, clique no sinal de mais ao lado da opo Man- agement para expandi-la. Abaixo de Management existe uma opo backup Devices, a qual utilizaremos para criar o backup device backup_clientes. 4. D um clique com o boto direito do mouse na opo backup Devices. No menu de opes que surge, d um clique na opo New backup Device. Surge a janela para a criao de um novo backup device, conforme indicado na Figura 5.3. 5. No campo Device Name digite: backup_clientes. 6. No campo File Name digite: D:\backups\backup_devices.BAK. Ao invs de digitar o caminho completo, voc pode utilizar o boto com as reticncias (...) para navegar at a pasta onde deve ser criado o backup device. Observe que a opo Tape est desabilitada, pois no servidor que estou utilizando no existe um drive de fita instalado, conforme descrito anteriormente. Sua janela deve estar conforme indica a Figura 5.4. Figura 5.4 Criando o backup device backup_clientes. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2400000Curso Completo N O T A 7. D um clique no boto OK e pronto; o backup device backup_clientes foi criado e est associado com a pasta D:\backups\backup_clientes.bak. Para conferir se o device foi criado com sucesso verifique se j aparece, abaixo da opo backup De- vices, o device backup_clientes. Caso esta opo ainda no esteja sendo exibida, clique na opo Backup Devices para selecion-la e pressione a tecla F5, para atualizar a listagem. O backup device backup_clientes j deve estar sendo exibido, conforme indicado na Figura 5.5. Figura 5.5 backup device backup_clientes criado com sucesso. Exerccio 1: Utilizando o SQL Server Management Studio, crie os seguintes backup devices: 1. Device 1: Nome: backup_produtos Localizao fsica: D:\backups\backup_produtos.bak 2. Device 2: Nome: backup_pedidos Localizao fsica: C:\backups\backup_pedidos.bak. Crie a pasta C:\backups ou outra pasta que voc for utilizar para acompanhar este exemplo, antes de criar o device backup. Caso a pasta ainda no exista, ser emitido um aviso na hora da criao do backup device. CRIANDO UM BACKUP DEVICE LGICO USANDO COMANDOS T-SQL Para criarmos um backup device utilizamos o comando sp_addumpdevice na janela de execuo de comandos T-SQL do SQL Server Management Studio. Na verdade, este um stored procedure que faz parte do Banco de Dados master. Conforme descrevemos anteriormente, existe uma srie de stored proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000241 N O T A N O T A procedures no banco master, as quais so utilizadas para vrias tarefas administrativas no SQL Server 2005, como, por exemplo, criar um backup device. A seguir, temos a sintaxe deste comando, conforme descrito no Books Online: Sintaxe completa Books OnLine Transact SQL Reference: exec sp_addumpdevice [ @devtype = ] device_type , [ @logicalname = ] logical_name , [ @physicalname = ] physical_name [ , { [ @cntrltype = ] controller_type | [ @devstatus = ] device_status } ] Este formato genrico no muito intuitivo, ou melhor, no nada intuitivo. A seguir apresento uma sintaxe simplificada, somente com as principais opes para criar uma tabela com alguns campos. Sintaxe simplificada: exec sp_addumpdevice tipo: disk ou tape, nome_lgico, caminho fsico Um exemplo simples que cria um backup device no disco: USE master exec sp_addumpdevice disk, backup_geral, C:\backups\geral.bak Observe que antes de utilizarmos o comando sp_addumpdevice tornamos o Banco de Dados master o banco atual. Isto necessrio porque as informaes sobre os backups device so armazenadas na tabela sysdevices do Banco de Dados master. Agora um exemplo que cria um device associado ao compartilhamento backups no servidor server05: USE master exec sp_addumpdevice disk, backup_rede, \\server05\backups\rede.bak Mais um exemplo simples que cria um backup device associado ao drive de fita: USE master exec sp_addumpdevice tape, fita_srv01, \\.\tape0 \\.\tape0 uma referncia ao drive de fita. Agora vamos utilizar a janela de execuo de comandos T-SQL para criar um backup device lgico, com as seguintes caractersticas: Nome: backup_Exemplo1 Localizao fsica: D:\backups\backup_exemplo1.bak. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2420000Curso Completo N O T A N O T A Este dispositivo ser utilizado, mais adiante, para fazer um backup do Banco de Dados Exemplo 1 que criamos no Captulo 3. Exemplo prtico: Para criar o backup device backup_exemplo1, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio. 2. Na janela Object Explorer, clique com o boto direito do mouse na instncia na qual voc deseja criar o backup device. No menu de opes que exibido, clique em New Query. 3. Ser aberta a janela de execuo de comandos T-SQL, com a qual voc j trabalhou diversas vezes. 4. Para criar o backup device backup_exemplo1 proposto, digite o seguinte comando: exec sp_addumpdevice disk, backup_exemplo1, D:\backups\exemplo1.bak 5. Pressione Ctrl+E (ou tecle F5) para executar o comando. O comando executado com sucesso e a seguinte mensagem exibida: Command(s) completed successfully. Caso voc especifique o nome de um backup device que j existe, receber a seguinte mensagem de erro: Msg 15026, Level 16, State 1, Procedure sp_addumpdevice, Line 72 Logical device backup_exemplo1 already exists.. 6. Mantenha a janela de execuo de comandos T-SQL aberta, pois iremos utiliz-la nos prximos exemplos. O comando sp_addumpdevice no pode ser executado no contexto de uma transao. Falaremos sobre segurana no Captulo 6, mas cabe ressaltar que somente usurios que forem membros das roles sysadmin e diskadmin tero permisses para executar o comando sp_addumpdevice. No Captulo 6 veremos que roles so semelhantes a grupos de usurios no Windows NT, Windows 2000 Server e no Windows Server 2003. EXCLUINDO BACKUP DEVICES Quando no for mais necessrio, um backup device pode ser excludo. Podemos excluir um backup device com o SQL Server Management Studio ou com o comando sp_dropdevice. Para excluir um backup device utilizando o SQL Server Management Studio, basta navegar at o backup device a ser excludo, clicar com o boto direito do mouse no backup device e, no menu de opes que proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000243 N O T A N O T A exibido, clicar em Delete. Ser exibida uma janela solicitando confirmao. Clique em OK e pronto, o backup device ser excludo. Para excluir um backup device usando comandos T-SQL, utilizamos o comando sp_dropdevice. O exemplo a seguir exclui o backup device chamado teste: exec sp_dropdevice teste, DELFILE Por padro, o arquivo fsico associado ao device no excludo ao utilizarmos o comando sp_dropdevice. Para excluir inclusive o arquivo fsico devemos utilizar o parmetro DELFILE como segundo parmetro para o comando sp_dropdevice. Exerccio 3: Utilizando o comando sp_addumpdevice, crie os seguintes backup devices: 1. Device 1: Tipo: Disk Nome: backup_northwind Localizao fsica: D:\backups\backup_northwind.bak 2. Device 2: Tipo: Disk Nome: backup_master Localizao fsica: D:\backups\master.bak 3. Device 3: Tipo: Disk Nome: master_diferencial Localizao fsica: D:\backups\master_diferencial.bak 4. Device 4: Tipo: Disk Nome: backup_adventureworks Localizao fsica: D:\backups\backup_adventureworks importante que voc complete este exerccio pois utilizaremos estes backup devices no prximo item. Como estamos criando diversos backup devices, pode ficar a impresso que para cada backup devemos ter um diferente backup device associado. Porm na prtica podemos efetuar diversos backups no mesmo backup device. Poderamos ter um nico backup device associado com um drive de fita e efetuarmos o backup de todos os Bancos de Dados da instncia, neste device. Conforme veremos no prximo item, na hora de fazer o backup podemos definir se o backup que est sendo feito deve ser anexado aos backups j existentes no device backup ou se os backups j existentes devem ser excludos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2440000Curso Completo KNOW-HOW EM: FAZER O BACKUP DAS INFORMAES PR-REQUISITOS Noes sobre estratgias de backup e restore. Fundamentos apresentados na Parte I. Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL. METODOLOGIA Exerccios: Fazer o backup de Bancos de Dados. TCNICA Apresentao dos procedimentos necessrios para a realizao do backup com o SQL Server Management Studio e tambm usando comandos T-SQL. Podemos fazer o backup utilizando qualquer uma das seguintes ferramentas: SQL Server Management Studio Comandos T-SQL FAZENDO O BACKUP COM O SQL SERVER MANAGEMENT STUDIO Para aprender a fazer o backup com o SQL Server Management Studio vamos comear fazendo um backup completo do Banco de Dados AdventureWorks. Faremos o backup no backup device backup_adventureworks que voc criou no Exerccio 3. Exemplo prtico: Para criar um backup completo do Banco de Dados AdventureWorks, siga os passos indicados a seguir: 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas -> Microsoft SQL Server -> SQL Server Management Studio). 2. Na janela Object Explorer, navegue at o banco de dados para o qual voc deseja fazer um backup completo. No nosso exemplo, navegue at o banco de dados AdventureWorks, dentro da opo Databases, da instncia SERVIDOR\SQL2005. 3. D um clique com o boto direito do mouse no Banco de Dados AdventureWorks, e no menu de opes que surge clique na opo Tasks -> Back up. Surge a janela para que voc possa configurar as definies do backup a ser criado, conforme indicado na Figura 5.6. Na guia Geral (General) podemos definir as seguintes opes: Database: Nesta lista selecionamos o nome do Banco de Dados para o qual ser feito o backup. No nosso exemplo certifique-se de que o AdventureWorks est selecionado nesta lista. Por padro, j vem selecionado o banco de dados, no qual voc clicou com o boto direito do mouse. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000245 Figura 5.6 Janela para definio do backup. Recovery model: O conceito de Recovery Model um conceito que foi introduzido no SQL Server 2000 e que tambm faz parte do SQL Server 2005. Vamos fazer um parnteses um pouco maior, para falar mais sobre o conceito de Recovery Model. No SQL Server 2000 e SQL Server 2005, as operaes de backup e restore ocorrem no contexto de um modelo de recuperao recovery models. O modelo de recuperao uma propriedade do banco de dados, a qual afeta a maneira como so executadas as operaes de backup e restore de um banco de dados. As operaes de backup e restore sero executadas de diferentes maneiras, dependendo do recov- ery model configurado para o banco de dados. O recovery model configurado para um banco de dados determina de que maneira as transaes so gravadas no log, se necessrio ou no fazer o backup do log de transaes e quais opes de restore estaro disponveis para o banco de dados. O uso do conceito de recovery models traz diversos benefcios, dentre os quais possvel destacar os seguintes: simplifica os procedimentos de backup e restore, ao agregar um conjunto predefinido de aes e opes em cada recovery model, simplifica o planejamento das aes de recuperao a desastres e, por fim, simplifica os procedimentos de backup e re- store. Esto disponveis trs diferentes modelos de recuperao: Full recovery model: Um banco de dados configurado para utilizar este modelo mantm no log de transaes o registro de todas as operes de dados, executadas no banco de dados, at mesmo depois de ser feito o backup do banco de dados. Usando este modelo, possvel recuperar um banco de dados, exatamente ao ponto em que ele se encontrava, no momento da falha, desde que tenha sido feito o backup dos logs das transaes executadas aps o ltimo backup. Para garantir este grau de recuperabilidade, em um banco de dados que est configurado para utilizar este modelo, todas as operaes, incluindo operaes em massa de dados (bulk proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2460000Curso Completo operations), tais como SELECT INGO, CREATE INDEXT, bem como operaes de importao em massa de dados, so gravadas no log de transaes. Todas as opes de recovery esto disponveis, quando utilizado o modelo Full Recovery Model. Para proteger o banco de dados, contra perdas no log de transaes, quando o banco de dados usa o modelo Full Recov- ery Model, fundamental que os arquivos do log de transaes estejam em um sistema de discos tolerante a falhas, sendo recomendado um RAID-5. Tambm poderia ser um RAID-1 (espelhamento), porm o desempenho de um sistema RAID-1 bem inferior ao do RAID-5. Logged recovery model: Um banco de dados configurado para utilizar este modelo grava uma quantidiade mnima de operaes em massa, tais como criao de ndices e importao em massa de dados. As demais operaes so todas gravadas no log de transaes. Este modelo melhora bastante o desempenho para operaes de massa, tais como a criao e atualizao de ndices, uma vez que estas aes no so gravadas no log de transaes. Este modelo, normalmente, utilizado em situaes especficas. Por exemplo, suponhamos que voc tem uma grande quantidade de dados para importar ou um grande nmero de ndices para criar. Voc pode colocar o banco de dados, temporariamente, no modelo Logged Recovery Model, para melhorar o desempenho e reduzir o tempo de execuo destas operaes e, uma vez concludas estas operaes, colocar o banco de dados novamente no modelo Full Recovery Model. Simple recovery model: Um banco de dados configurado para utilizar este modelo grava apenas uma quantidade mnima de informaes no log de transaes, quantidade esta somente suficiente para garantir a consistncia do banco de dados aps um problema no servidor, tal como uma queda de energia ou para garantir a consistncia, aps a restaurao de um backup. Este modelo simplifica bastante as operaes de backup e restore, por eliminar o trabalho adicional de fazer o backup e restaurar os logs de transaes. Porm, em contra-partida a esta simplificao, com a utilizao deste modelo, as probabilidades de perda de dados so bem maiores do que nos outros modelos. Devido falta do backup do log de transaes, fica impossvel restaurar o banco de dados ao estado em que ele se encontrava no momento da falha, somente sendo possvel restaur-lo ao ponto do ltimo backup disponvel. Observe que para o backup do banco de dados, na lista Recovery Model, est disponvel somente a opo Simple. Isso acontece porque, nas propriedades do banco de dados AdventureWorks, est configurada a propriedade Recovery Model como Simple. backup type: Nesta lista esto disponveis as opes: Full: Define que ser feito um backup completo do Banco de Dados ou Differential: Define que ser feito um backup diferencial do Banco de Dados. backup component: Voc pode marcar a opo Database, para fazer o backup do banco de dados ou a opo Files e filegroups (a qual no est disponvel para o modelo Simple), para fazer o backup somente de arquivos ou filegroups especficos. Name: Um nome simplificado para o backup. Description: Uma descrio mais detalhada sobre o backup que est sendo criado. backup set will expire: Voc pode definir uma data de expirao para o backup. Passada a data de expirao, o backup no poder mais ser utilizado, para restaurao dos dados. Destination -> backup to: Nesta opo devemos selecionar um ou mais backup devices, os quais utilizaremos para o backup. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000247 N O T A 4. Voc pode marcar a opo Disk, para usar um backup device em disco ou a opo Type, para fazer um backup em fita. No nosso exemplo, a opo Type no est habilitada, pois no est instalado um drive de fita de backup, no servidor que eu estou utilizando. Para selecionar um novo device clique no boto Add, ir surgir a janela indicada na Figura 5.7. Figura 5.7 Selecionando backup devices. Observe que nesta janela podemos selecionar um backup device fsico (file name), isto , diretamente o nome do arquivo em disco ou um backup device lgico (backup device), quando selecionamos um backup device previamente criado. 5. D um clique na opo backup device e, na lista de backup devices previamente criados, selecione backup_adventureworks. Caso voc tenha recm-criado os backup devices do item anterior, pode ser que nem todos apaream na listagem de backup devices disponveis. Se este for o seu caso, feche o SQL Server Management Studio e abra-o novamente. Com isso a listagem ser atualizada. 6. Aps selecionar o backup device a ser utilizado, basta dar um clique em OK e pronto; voc estar de volta janela de backup com o backup device backup_adventureworks adicionado, conforme indicado na Figura 5.8. Se houver algum outro backup device na lista, alm do backup device backup_adventureworks, clique no backup device que est a mais e depois clique no boto Remove. D um clique na guia Options. As principais opes desta guia esto descritas a seguir: Append to existing backup set: Esta opo define que o backup que est sendo criado deve ser anexado a quaisquer outros backups que j existam no backup device selecionado. Certifique- se de que esta opo est selecionada. Overwrite all existing backup sets: Esta opo elimina quaisquer backups que j tenham sido criados no backup device selecionado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2480000Curso Completo Figura 5.8 O backup device backup_northwind j adicionado. Boto Schedule, na barra de botes: Esta opo permite que seja feito um agendamento para o backup. Veremos mais sobre agendamento de tarefas, mais adiante, neste captulo. Verify backup when finished: Define que a integridade da mdia de backup deve ser verificada aps o trmino do backup. Truncate the transaction log by removing inactive entries: Aps o trmino do backup todas as transaes completas (Committed Transactions) sero excludas do log. No nosso exemplo esta opo est desabilitada pois no estamos fazendo um backup do log de transaes, uma vez que o banco de dados AdventureWorks usa o modelo Simple Recovery Model. Check media set name and backup set expiration: Esta opo evita que um backup que ainda no expirou seja sobrescrito pelo backup que est sendo realizado. 7. No altere as opes da guia Options. D um clique em OK e o backup ser inicializado e surge uma janela indicando o progresso do backup. Aps finalizar o backup, o SQL Server 2005 emite uma mensagem avisando que o backup foi finalizado com sucesso. 8. Voc estar de volta ao SQL Server Management Studio. Podemos conferir que o backup realmente foi feito, acessando a pasta D:\backups. Nesta pasta podemos verificar que o arquivo backup_adventureworks possui o tamanho de cerca de 67 MB, conforme indicado na Figura 5.9. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000249 Figura 5.9 Arquivo backup_adventureworks com cerca de 67 MB. FAZENDO O BACKUP DO LOG DE TRANSAES E CRIANDO UM AGENDAMENTO PARA O BACKUP Agora vamos aprender a criar um backup do log de transaes e agendar o backup para que seja feito trs vezes ao dia, em horrios determinados. No nosso exemplo vamos fazer o backup do Banco de Dados Exemplo1 (o qual foi criado no Captulo 3). O backup ser feito no backup device backup_exemplo1 criado anteriormente. Para criar o backup e o agendamento utilizaremos o SQL Server Management Studio. Siga os passos indicados no prximo exemplo. Exemplo prtico: Fazer o backup do log de transaes do Banco de Dados Exemplo1. Agendar este backup para que seja realizado todos os dias, s 9h, 12h, 15h e 18h. Para criar o backup e o agendamento do exemplo, siga os passos indicados a seguir: 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas -> Microsoft SQL Server -> SQL Server Management Studio). 2. D um clique no sinal de mais ao lado de Microsoft SQL Servers para expandir esta opo. 3. Na janela Object Browser, d um clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, que foi a instncia onde criamos o banco de dados Exemplo1, no Captulo 3. 4. Nas opes que surgem, abaixo desta instncia, clique no sinal de + ao lado da opo Data- bases para expandi-la. Abaixo de Databases surge uma lista com os Bancos de Dados da instncia SERVIDOR\SQL2005. 5. D um clique com o boto direito do mouse no Banco de Dados Exemplo1. No menu de opes que surge, selecione o comando Tasks -> Back Up. Ser aberta a janela para definio das opes de backup, a qual voc j aprendeu a utilizar anteriormente, com a guia General selecionada. 6. Para o campo Name digite AgendLogExemplo1, e para o campo Description, digite backup do log de transaes. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2500000Curso Completo 7. Na lista backup type, selecione a opo Transaction Log. Agora vamos selecionar o device backup_exemplo1, no qual faremos o backup do log de transaes. 8. Na parte de baixo da janela, abaixo de Destination, d um clique no boto Add. 9. Na janela Select backup Destination, clique na opo backup device e na lista de backup de- vices selecione backup_exemplo1. 10. D um clique no boto OK para fechar a janela Select backup Destination. 11. Voc estar de volta janela para definio do backup. Se houver outro backup device na lista, alm de backup_exemplo1, elimine estes outros devices. Para isso, basta clicar no device a ser retirado da lista e depois clicar no boto Remove. Certifique-se de que somente o device backup_exemplo1 esteja na lista. Clique na guia Options. Certifique-se de que a opo Append to existing backup set esteja selecionada. Sua janela deve estar conforme indicado na Figura 5.10 (configuraes da guia General). Mantenha a janela de configuraes do backup aberta. Figura 5.10 Definies do backup do log de transaes. Agora vamos definir o agendamento do backup. 12. Clique na boto Schedule. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000251 Figura 5.11 A janela para definio do agendamento (Schedule). Na lista Schedule type, vem selecionado, por padro, o tipo de agendamento Recurring. Nesta lista, podemos definir os seguintes tipos de agendamentos: Recurring: Agenda o backup para ser executado periodicamente, em determinados dias e horrios configurados no agendamento. o nosso caso, onde queremos que o backup seja executado diariamente, s 9h, 12h, 15h e 18h. Start automatically when SQL Server Agent starts: Esta opo agenda o backup para ser feito toda vez que o servio SQL Server Agent for inicializado. Start whenever the CPU(s) become idle: Esta opo agenda o backup para ser executado toda vez que a(s) CPU(s) do servidor estiverem ociosas (entenda-se CPUs como sendo os processadores). O tempo de inatividade para definir se a CPU est ociosa definido na guia Advanced das propriedades do SQL Server Agent. One Time: Executa o backup uma nica vez em uma data e horrio especificados. 14. Mantenha a opo Recurring selecionada e defina que o backup deve ocorrer, diariamente, s 9h, 12h, 15h e 18h. Para isso, configure as opes indicadas na Figura 5.12. 13. Surge a janela Job Schedule, conforme indicado na Figura 5.11. Nesta janela voc pode definir um nome para o job e um nome para o agendamento (conforme voc ver no final deste captulo, um mesmo job pode ter mais de um agendamento). proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2520000Curso Completo Figura 5.12 Definindo o agendamento do backup. 15. Observe que selecionamos a opo Daily (dirio), ocorrendo a cada 3 horas com incio s 9h e trmino s 18h. Isto faz com que o backup seja executado exatamente quatro vezes, s 9:00, 12h, 15h e 18h, que exatamente a programao desejada para o nosso exemplo. 16. Digite o nome AgendLogExemplo1 no campo Job name, e clique em OK para criar o agendamento. O agendamento ser criado e ser exibida uma janela, informando que o agendamento foi criado com sucesso. Clique em OK para fechar esta janela. 17. Voc estar de volta janela para definio do backup. D um clique na guia Options. Certifique- se de que a opo Truncate the transaction log by removing inactive entries esteja selecionada. Esta opo faz com que as transaes que foram completadas com sucesso sejam excludas do log de transaes aps o backup ter sido efetuado. Esta opo evita que o log de transaes cresa indefinidamente. 18. Clique em OK. Com isso o agendamento para o backup do log de transaes ter sido criado. Se voc no tiver criado, anteriormente, um backup do banco de dados, ser emitida uma mensagem de erro, informando que o backup do log de transaes no poder ser efetuado, pois no existe um backup do banco de dados. importante lembrar (veja estratgias de backup/restore no incio do captulo) que de nada serve um backup do log de transaes, se voc no tiver um backup do banco de dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000253 Figura 5.13 O job AgendLogExemplo1. Podemos fazer com que um job seja executado a qualquer momento, sem ter que esperar pelo prximo horrio de execuo, definido no agendamento. Para isso basta clicar com o boto direito no Job a ser executado, e no menu que surge clicar em Start Job. Se fizermos isso com o job AgendLogExemplo1, este ser imediatamente executado e o backup do log de transaes do Banco de Dados Exemplo1 ser feito. Veremos mais sobre o agendamento de tarefas, ou melhor, a criao de jobs, na parte final deste captulo. 19. Agora o nosso backup est agendado e ir rodar diariamente, nos horrios por ns definidos. 20. Feche o SQL Server Management Studio. Agora vamos aprender a fazer backup utilizando comandos T-SQL, na janela de execuo de comandos. O agendamento de uma tarefa de backup como se fosse o agendamento de qualquer outra tarefa do SQL Server 2005. Quando criamos uma tarefa agendada, na linguagem do SQL Server 2005, estamos criando um job. No nosso exemplo, demos o nome de AgendLogExemplo1 para a tarefa, ou melhor, para o job que executa o backup do log de transaes do banco de dados Exemplo1. Podemos conferir se este job foi realmente criado, expandindo a opo SQL Server Agent. Abaixo de SQL Server Agent, d um clique no sinal de + ao lado da opo Jobs. Abaixo de Jobs, deve ser exibido o job AgendLogExemplo1, conforme indicado na Figura 5.13. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2540000Curso Completo FAZENDO O BACKUP COM O QUERY ANALYZER Utilizando comandos T-SQL podemos fazer o backup completo, backup diferencial, backup de um arquivo ou filegroup e o backup do log de transaes. Atravs de comandos podemos, inclusive, criar o agendamento de um backup. Fazendo o backup do Banco de Dados: Para fazer o backup de um Banco de Dados utilizamos o comando BACKUP DATABASE. A seguir a sintaxe completa deste comando, conforme apresentada no Books OnLine. Sintaxe do comando BACKUP DATABASE: BACKUP DATABASE { database_name | @database_name_var } TO < backup_device > [ ,...n ] [ WITH [ BLOCKSIZE = { blocksize | @blocksize_variable } ] [ [ , ] DESCRIPTION = { text | @text_variable } ] [ [ , ] DIFFERENTIAL ] [ [ , ] EXPIREDATE = { date | @date_var } | RETAINDAYS = { days | @days_var } ] [ [ , ] PASSWORD = { password | @password_variable } ] [ [ , ] FORMAT | NOFORMAT ] [ [ , ] { INIT | NOINIT } ] [ [ , ] MEDIADESCRIPTION = { text | @text_variable } ] [ [ , ] MEDIANAME = { media_name | @media_name_variable } ] [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ] [ [ , ] NAME = { backup_set_name | @backup_set_name_var } ] [ [ , ] { NOSKIP | SKIP } ] [ [ , ] { NOREWIND | REWIND } ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] RESTART ] [ [ , ] STATS [ = percentage ] ] ] Conforme j descrevemos anteriormente, a sintaxe completa no muito intuitiva. Vamos aprender a utilizar o comando BACKUP DATABASE atravs de exemplos. Exemplo1: Criar um backup device chamado bknw, o qual associado com o arquivo D:\backups\bknw. Depois fazer o backup completo do Banco de Dados Northwind para o backup device bknw. Para fazer o backup proposto utilizaramos os seguintes comandos: Primeiro criamos o backup device bknw Lembre-se de tornar o Banco de Dados master o Banco de Dados atual pois os backup devices so criados sendo o banco master o Banco de Dados atual. USE master EXEC sp_addumpdevice disk, bknw, D:\backups\bknw.bak BACKUP DATABASE northwind TO bknw Ao executar estes comandos, com sucesso, no Query Analyzer ser emitida a seguinte mensagem: Processed 560 pages for database northwind, file Northwind_Data on file 1. Processed 1 pages for database northwind, file Northwind_Log on file 1. BACKUP DATABASE successfully processed 561 pages in 0.833 seconds (5.509 MB/sec). proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000255 Observe que, conforme descrito anteriormente, o backup completo de um Banco de Dados faz o backup dos arquivos de dados e tambm dos arquivos de log. Uma sintaxe mais simplificada para o comando BACKUP DATABASE: BACKUP DATABASE nome_banco_dados TO nome_backup_device1, nome_backup_device2,..., nome_backup_devicen [WITH OPTIONS] Observe que podemos fazer o backup de um Banco de Dados para mais do que um backup device ao mesmo tempo. Este procedimento pode ser utilizado para agilizar o backup. Para fazermos o backup para mltiplos volumes devemos criar uma Media Set, ou seja, um conjunto de mdias. O caso mais tpico quando temos duas ou mais unidades de fita ligadas a um servidor. Neste caso podemos criar uma Media Set com as unidades disponveis e fazer o backup, simultaneamente, para todas as unidades. Desta maneira, o tempo de backup (janela de backup) pode ser reduzido. Para maiores informaes sobre a utilizao de mltiplos devices, consulte Using Media Sets and Families no Books OnLine. Agora vamos descrever as principais opes que podem ser utilizadas com o comando BACKUP DATA- BASE. Estas opes so especificadas no final do comando, com a clusula WITH. Caso mais do que uma opo esteja sendo utilizada, devemos separ-las por vrgula. As opes INIT e NOINIT: Ao fazermos um backup temos a opo de excluir os backups j existentes no backup device, ou manter os backups existentes e apenas anexar o que est sendo feito. A opo NOINIT a opo padro e faz com que o backup seja anexado ao backup device, mantendo os backups feitos anteriormente. Se selecionarmos a opo INIT, o SQL Server 2005 ir gravar o backup que est sendo feito na parte inicial do backup device, eliminando os backups anteriores. Se existirem backups no backup device que foram feitos com a opo EXPIREDATE, e estes backups ainda no tiverem expirado, a utilizao da opo INIT ir causar um erro. Utilizamos a opo EXPIREDATE para garantir que um determinado backup seja mantido por um perodo mnimo. A seguir um exemplo de utilizao destas opes. Vamos fazer um backup do Banco de Dados Northwind para um device chamado device_exemplo. Vamos fazer o backup utilizando a opo EXPIREDATE. Depois vamos fazer um novo backup, para o device device_exemplo tentando utilizar a opo INIT e vamos observar a mensagem de erro que exibida. Os comandos a seguir fazem o backup usando a opo WITH EXPIREDATE: Tornar o Banco de Dados master o banco atual USE master Criar o backup device device_exemplo EXEC sp_addumpdevice disk, device_exemplo, D:\backups\device_exemplo.bak Fazer o backup do banco de dados Northwind com a opo EXPIREDATE BACKUP DATABASE northwind TO device_exemplo WITH EXPIREDATE = 20010315 Fazer um backup com a opo INIT, sendo que o backup anterior Somente expira em 15 de maro de 2001, conforme definido anteriormente pela opo WITH EXPIREDATE = 20050415 BACKUP DATABASE northwind TO device_exemplo WITH INIT proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2560000Curso Completo Ser emitida a seguinte mensagem de erro: Processed 560 pages for database northwind, file Northwind_Data on file 2. Processed 1 pages for database northwind, file Northwind_Log on file 2. BACKUP DATABASE successfully processed 561 pages in 0.916 seconds (5.017 MB/sec). Msg 4030, Level 16, State 1, Line 17 The medium on device device_exemplo(D:\backups\device_exemplo.bak) expires on Apr 15 2005 12:00:00:000AM and cannot be overwritten. Msg 3013, Level 16, State 1, Line 17 BACKUP DATABASE is terminating abnormally. Observe que a mensagem informa que o backup somente ir expirar em 15 de abril de 2005 e no poder ser sobrescrito: The medium on device device_exemplo (D:\backups\device_exemplo.bak) expires on Apr 15 2005 12:00:00:000AM and cannot be overwritten. A opo RESTART: Utilizamos esta opo para que o SQL Server 2005 reinicialize um backup que tenha sido interrompido, exatamente do ponto onde o backup parou. Esta opo poupa tempo, uma vez que o backup no precisa ser reinicializado desde o incio. Para reinicializar um backup, basta repetir o comando que foi utilizado para fazer o backup, e acrescentar WITH RESTART no final do comando. A opo DIFFERENTIAL: Esta opo define que seja feito um backup diferencial. O comando, a seguir, faz um backup diferencial do Banco de Dados Northwind para o backup device device_exemplo, criado no exemplo anterior: BACKUP DATABASE northwind TO device_exemplo WITH DIFFERENTIAL A opo PASSWORD: Esta opo permite que seja definida uma senha para o backup. Ao fazermos um restore deste backup teremos que fornecer a senha; caso contrrio a operao de restore ser cancelada. O exemplo a seguir faz o backup do Banco de Dados pubs para o backup device device_exemplo e especifica uma senha. BACKUP DATABASE pubs TO device_exemplo WITH PASSWORD = senha123 A Opo NAME: Esta opo permite que seja definido um nome para o backup. Se o nome no for especificado, o nome ser assumido como uma string em branco. Estas so as principais opes disponveis para o comando BACKUP DATABASE. Para uma descrio completa de todas as opes disponveis, consulte BACKUP no tpico Transact-SQL Reference no Books OnLine. Fazendo o backup do log de transaes: Para fazer o backup do log de transaes, utilizamos o comando BACKUP LOG. A seguir, a sintaxe completa deste comando, conforme apresentada no Books OnLine. Sintaxe do comando BACKUP LOG: BACKUP LOG { database_name | @database_name_var } { TO < backup_device > [ ,...n ] [ WITH [ BLOCKSIZE = { blocksize | @blocksize_variable } ] [ [ , ] DESCRIPTION = { text | @text_variable } ] [ [ ,] EXPIREDATE = { date | @date_var } proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000257 | RETAINDAYS = { days | @days_var } ] [ [ , ] PASSWORD = { password | @password_variable } ] [ [ , ] FORMAT | NOFORMAT ] [ [ , ] { INIT | NOINIT } ] [ [ , ] MEDIADESCRIPTION = { text | @text_variable } ] [ [ , ] MEDIANAME = { media_name | @media_name_variable } ] [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ] [ [ , ] NAME = { backup_set_name | @backup_set_name_var } ] [ [ , ] NO_TRUNCATE ] [ [ , ] { NORECOVERY | STANDBY = undo_file_name } ] [ [ , ] { NOREWIND | REWIND } ] [ [ , ] { NOSKIP | SKIP } ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] RESTART ] [ [ , ] STATS [ = percentage ] ] ] } Conforme j descrevemos anteriormente, a sintaxe completa no muito intuitiva. Vamos aprender a utilizar o comando BACKUP LOG atravs de exemplos. Exemplo1: Criar um backup device chamado bklog, o qual associado com o arquivo D:\backups\bklog. Depois, fazer o backup do log de transaes do Banco de Dados Exemplo1 para o backup device bklog. Para fazer o backup proposto utilizamos o seguinte comando: Primeiro criamos o backup device bklog Lembre-se de tornar o Banco de Dados master o Banco de Dados atual pois os backup devices so criados sendo o master o Banco de Dados atual. USE master EXEC sp_addumpdevice disk, bklog, D:\backups\bklog.bak BACKUP LOG Exemplo1 TO bklog Uma sintaxe mais simplificada para o comando BACKUP LOG: BACKUP LOG nome_banco_dados TO nome_backup_device1, nome_backup_device2,..., nome_backup_devicen [WITH OPTIONS] As principais opes para o comando BACKUP LOG so praticamente as mesmas opes que para o comando BACKUP DATABASE. Temos duas opes que so especficas para o backup do log de transaes: A opo NO_LOG ou TRUNCATE_ONLY: Estas duas opes so sinnimas. Ao utilizarmos esta opo no ser feito o backup do log, e o log ser truncado, isto , todas as transaes que sofreram Commit sero excludas do log. Como no feito o backup do log, no precisamos especificar o backup device a ser utilizado. A opo NO_TRUNCATE: utilizada para fazer o backup do log sem que as transaes completas sejam excludas do log aps o backup. Esta opo utilizada para situaes em que o Banco de Dados foi danificado e queremos restaur-lo a uma situao imediatamente anterior ao momento em que o banco foi corrompido. Utilizaremos esta opo no prximo item, quando aprenderemos a fazer o restore do Banco de Dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2580000Curso Completo UM EXEMPLO MAIS COMPLETO Vamos fazer um exemplo completo em que utilizaremos diversas opes apresentadas anteriormente. Exemplo: Criar uma seqncia de comandos T-SQL que faa o seguinte: 1. Crie um device chamado device_real. 2. Faa o backup completo do Banco de Dados Exemplo1, com data de expirao definida para 31 de dezembro de 2005, o qual ir anexar o backup aos j existentes no device device_real. 3. Fazer o backup do log de transaes do Banco de Dados Exemplo1. O nosso comando deve ficar da seguinte maneira: ******************************************** ********** Script T-SQL de exemplo **** ********** Autor: Jlio Battisti **** ********** e-mail: batisti@hotmail.com **** ******************************************** Tornar o Banco de Dados master o Banco de Dados atual USE master Criar o device device_real EXEC sp_addumpdevice disk, device_real, D:\backups\device_real.bak backup completo do Banco de Dados pubs com data de expirao para 31 de dezembro de 2005. BACKUP DATABASE Exemplo1 TO device_real WITH EXPIREDATE = 20051231, NOINIT Agora fao o backup do log do Banco de Dados pubs. BACKUP LOG Exemplo1 TO device_real ******************************************** ******************************************** Ao executarmos este comando, com sucesso, ser emitida uma mensagem, semelhante indicada a seguir: (1 row(s) affected) Disk device added. Processed 112 pages for database Exemplo1, file exemplo1-prim on file 1. Processed 16 pages for database Exemplo1, file exemplo1-sec1 on file 1. Processed 1 pages for database Exemplo1, file exemplo1-log on file 1. BACKUP DATABASE successfully processed 129 pages in 1.304 seconds (0.806 MB/sec). Processed 1 pages for database Exemplo1, file exemplo1-log on file 2. BACKUP LOG successfully processed 1 pages in 0.508 seconds (0.011 MB/sec). KNOW-HOW EM: FAZER O RESTORE DAS INFORMAES PR-REQUISITOS Noes sobre estratgias de backup e restore. Fundamentos apresentados na Parte I. Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000259 N O T A METODOLOGIA Exerccios: Fazer o restore de Bancos de Dados e do log de transaes. TCNICA Apresentao dos procedimentos necessrios para a realizao do restore, com o SQL Server Management Studio e com comandos T-SQL. Ao fazermos o backup copiamos os dados do Banco de Dados para um dispositivo de backup (backup device), que na maioria dos casos um drive de fita. Mas o nico objetivo para fazermos o backup para que possamos restaurar os dados, quando algum problema acontecer. Restaurar os dados (fazer o restore) a operao de copiar os dados do backup de volta para o Banco de Dados. A maneira de restaurar o Banco de Dados ao seu estado normal depende da nossa estratgia de backup. As estratgias de restore so diferentes, dependendo do tipo de backup que voc est utilizando: backups completos, diferenciais ou combinando estes backups com backups do log de transaes. No item Estratgias de backup, no incio deste captulo, falamos sobre as diversas estratgias de backup/restore, dependendo do tipo de backup que estamos utilizando. Foram analisados diversos exemplos. No item anterior aprendemos a fazer os diversos tipos de backup disponveis no SQL Server 2005. Agora aprenderemos a fazer o restore. Nesta seo aprenderemos a fazer o restore utilizando as seguintes ferramentas: SQL Server Management Studio Janela de Execuo de Comandos T-SQL Dependendo do tipo de backup teremos diferentes estratgias de restore. Vamos considerar as seguintes situaes: Restore a partir de um backup completo: Para esta situao basta restaurar o ltimo backup completo disponvel. Todas as alteraes entre o ltimo backup completo e o momento do restore sero perdidas. Restore a partir de um backup completo e backups diferenciais: Neste caso restauramos o ltimo backup completo e em seguida o ltimo backup diferencial. Todas as alteraes entre o ltimo backup diferencial e o momento do restore sero perdidas. Restore a partir de um backup completo e backups do log de transaes: Quando temos backups do log de transaes, devemos restaurar o ltimo backup completo e depois todos os backups do log de transaes. de fundamental importncia que os backups do log de transaes sejam restaurados na ordem correta, do mais antigo at o mais recente. As alteraes entre o ltimo backup do log de transaes e o momento do restore sero perdidas. Esta estratgia torna o restore mais demorado, pois precisamos restaurar uma srie de backups do log de transaes. Restore a partir de um backup completo, backups diferenciais e backups do log de transaes: Neste caso devemos restaurar o backup completo, depois o ltimo backup diferencial e depois todos os backups do log de transaes. de fundamental importncia que os backups do log de transaes sejam restaurados na ordem correta, do mais antigo at o mais recente. As alteraes entre o ltimo backup do log de transaes e o momento do restore sero perdidas. Esta estratgia torna o restore menos demorado, pois precisamos apenas restaurar os backups do log de transaes entre o ltimo backup diferencial e o momento em que houve o problema. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2600000Curso Completo FAZENDO O RESTORE COM O SQL SERVER MANAGEMENT STUDIO Podemos fazer o restore utilizando o SQL Server Management Studio, quer seja o restore de um backup completo, de um backup diferencial ou de um backup do log de transaes. Lembrando que cada situao pode exigir uma seqncia de restore especfica. Exemplo prtico: Fazer o restore de um backup completo do Banco de Dados Northwind (substitua Northwind pelo nome do banco de dados para o qual voc dispe de um backup completo, backup este que voc deseja restaurar). Ao fazermos este restore, o Banco de Dados estar de volta situao que estava no momento em que o backup completo foi realizado. Para fazer o restore de um backup completo do Banco de Dados Northwind, siga os passos indicados a seguir: 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas -> Microsoft SQL Server -> SQL Server Management Studio). 2. Na janela Object Explorer, d um clique no sinal de + ao lado da instncia na qual est o banco de dados que voc deseja restaurar a partir do backup completo. 3. Nas opes que surgem abaixo desta instncia, clique no sinal de + ao lado da opo Data- bases para expandi-la. Abaixo de Databases surge uma lista com os Bancos de Dados da instncia SERVIDOR\SQL2005 (instncia onde est o banco de dados Northwind, que eu estou utilizando neste exemplo). Figura 5.14 A janela Restore database. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000261 4. D um clique com o boto direito do mouse no Banco de Dados Northwind, e no menu de opes que surge selecione Tasks -> Restore -> Database. Surge a janela Restore Database, onde podemos selecionar os backups a serem restaurados (backups que j foram efetuados, anteriormente), conforme exemplo da Figura 5.14, onde temos um nico backup disponvel para restaurao, sendo este um backup do tipo Full. Na guia General temos as seguintes opes: To database: Nesta lista podemos selecionar para qual Banco de Dados o backup ser restaurado. From Database: Permite que selecionemos um banco de dados, para que sejam exibidos os backups disponveis para o banco de dados que for selecionado. From device: Este opo permite que seja selecionado um device a partir do qual queremos fazer o restore. Estando a opo From database selecionada, na parte de baixo da janela, ser exibida a lista de backups disponveis para o banco de dados selecionado. Voc clica no backup para selecion-lo. Os dados do backup selecionado sero utilizados para fazer a restaurao do banco de dados. Voc poder selecionar mais de um backup. Por exemplo, se voc tem um backup completo e um backup diferencial, feito aps o backup completo, voc poder selecionar os dois backups para serem restaurados, conforme exemplo da Figura 5.15: Figura 5.15 Restaurando o backup completo mais o diferencial. To apoint in time: Nesta guia tambm importante observar a opo To a point in time, a qual permite que voc faa o restore at um determinado horrio, desde que voc tenha acesso aos proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2620000Curso Completo backups do log de transaes e ao log do banco de dados. Por exemplo, se voc detectou um problema s 9:15, pode usar esta opo, para tentar restaurar o banco de dados at a situao em que ele se encontrava s 9:00, perdendo apenas as alteraes efetuadas entre 9:00 e 9:15. No SQL Server 2000, esta opo somente estava disponvel quando fosse selecionada a opo From data- base, j no SQL Server 2005 esta opo est sempre disponvel, independentemente de selecionar- se a opo From database ou From device. Podemos utilizar esta opo para restaurar o Banco de Dados situao em que estava em um determinado horrio. Por exemplo, vamos supor que seja feito um backup completo no domingo, backups do log de transaes dirios s 9h, 12h e 17h. Na quarta-feira tambm feito um backup diferencial s 23h, alm dos backups do log de transaes. Vamos supor que o Banco de Dados foi corrompido na quinta-feira, devido a um comando errado executado s 15h05. A estratgia de restore mais adequada seria: a. Fazer um backup do log de transaes, utilizando a opo WITH NO_TRUNCATE. Esta opo somente possvel se o Log de transao e o arquivo de dados primrio no esto fisicamente corrompidos no disco. b. Primeiro restaurar o backup completo do domingo. c. Depois restaurar o backup diferencial da quarta-feira, que o ltimo backup diferencial disponvel. d. Restaurar o backup do log de transaes feito s 9h da quinta-feira. e. Restaurar o backup do log de transaes feito s 12h da quinta-feira. f. Restaurar o backup do log de transaes feito no item a, utilizando a opo Point in time restore, para restaurar este log at as 15;00 horas. Observe que restauramos o log somente at as 15h, para evitar que o comando incorreto, que foi executado em torno de 15h05, seja executado novamente e venha a corromper o Banco de Dados. Nesta situao perderemos somente as alteraes feitas entre 15h e 15h05. 5. Certifique-se de que o(s) backup(s) a ser(em) restaurado(s) esteja(m) selecionado(s). D um clique na guia Options. As principais opes desta guia so as seguintes: Leave database ready for use by rolling back the uncommitted transactions: Se esta opo estiver marcada o Banco de Dados estar disponvel para ser usado ao final do restore. Utilizamos esta opo quando no temos mais nenhum log de transaes para restaurar. Leave database non operational and do not roll back the uncommitted transactions: Se esta opo estiver marcada, o Banco de Dados no poder ser acessado pelos aplicativos. Quando estamos restaurando diversos backups do log de transaes, temos que utilizar esta opo para que os diversos backups possam ser restaurados. Leave database in read-only mode for inspection: Ao selecionarmos esta opo, os aplicativos podem acessar o Banco de Dados apenas para leitura dos dados. Alteraes, inseres e excluses no sero permitidas. Em contrapartida, poderemos continuar restaurando backups do Log de transao. 6. Certifique-se de que a opo Leave database ready for use by rolling back the uncommitted transactions esteja selecionada. D um clique no boto OK para restaurar o backup do Banco de Dados Northwind. Ser exibida uma janela com o progresso do processo de restore, para cada backup que estiver sendo restaurado. Quando todos os backups selecionados tiverem sido restaurados, ser exibida uma mensagem de confirmao. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000263 7. Clique no boto OK para fechar esta mensagem. 8. Voc estar de volta ao SQL Server Management Studio. Mantenha-o aberto, pois iremos utiliz- lo no prximo tpico. FAZENDO O RESTORE COM O QUERY ANALYZER Para fazer o restore de um Banco de Dados utilizamos o comando RESTORE DATABASE. Para fazer o restore do log de transaes utilizamos o comando RESTORE LOG. A seguir, a sintaxe completa destes comandos, conforme apresentada no Books OnLine. Sintaxe do comando RESTORE DATABASE: RESTORE DATABASE { database_name | @database_name_var } [ FROM < backup_device > [ ,...n ] ] [ WITH [ RESTRICTED_USER ] [ [ , ] FILE = { file_number | @file_number } ] [ [ , ] PASSWORD = { password | @password_variable } ] [ [ , ] MEDIANAME = { media_name | @media_name_variable } ] [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ] [ [ , ] MOVE logical_file_name TO operating_system_file_name ] [ ,...n ] [ [ , ] KEEP_REPLICATION ] [ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ] [ [ , ] { NOREWIND | REWIND } ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] REPLACE ] [ [ , ] RESTART ] [ [ , ] STATS [ = percentage ] ] ] Sintaxe do comando RESTORE LOG: RESTORE LOG { database_name | @database_name_var } [ FROM < backup_device > [ ,...n ] ] [ WITH [ RESTRICTED_USER ] [ [ , ] FILE = { file_number | @file_number } ] [ [ , ] PASSWORD = { password | @password_variable } ] [ [ , ] MOVE logical_file_name TO operating_system_file_name ] [ ,...n ] [ [ , ] MEDIANAME = { media_name | @media_name_variable } ] [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ] [ [ , ] KEEP_REPLICATION ] [ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ] [ [ , ] { NOREWIND | REWIND } ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] RESTART ] [ [ , ] STATS [= percentage ] ] [ [ , ] STOPAT = { date_time | @date_time_var } | [ , ] STOPATMARK = mark_name [ AFTER datetime ] | [ , ] STOPBEFOREMARK = mark_name [ AFTER datetime ] ] ] proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2640000Curso Completo Mais uma vez vamos procurar simplificar um pouco, atravs de exemplos, esta sintaxe. Vamos iniciar pelo comando RESTORE DATABASE. Para restaurar um backup completo de um Banco de Dados podemos utilizar o seguinte comando: RESTORE DATABASE nome_banco_dados FROM nome_device Por exemplo, para restaurarmos um backup completo do Banco de Dados Exemplo1, a partir do device device_real, podemos utilizar o seguinte comando: RESTORE DATABASE Exemplo1 FROM backup_geral Este comando executado com sucesso e a seguinte mensagem exibida: Processed 192 pages for database Exemplo1, file exemplo1-prim on file 1. Processed 8 pages for database Exemplo1, file exemplo1-sec1.ndf on file 1. Processed 8 pages for database Exemplo1, file exemplo1-sec2.ndf on file 1. Processed 1 pages for database Exemplo1, file exemplo1-log.ldf on file 1. Processed 0 pages for database Exemplo1, file exemplo1-log2.ldf on file 1. RESTORE DATABASE successfully processed 209 pages in 0.400 seconds (4.280 MB/sec). Uma sintaxe mais simplificada para o comando RESTORE DATABASE a seguinte: RESTORE DATABASE nome_banco_dados FROM nome_device [WITH OPTIONS] As principais opes para este comando so as seguintes: PASSWORD: Esta opo permite que especifiquemos uma senha, caso o backup tenha sido efetuado com uma senha anteriormente. NORECOVERY: Esta opo deve ser especificada quando iremos restaurar mais backups do log de transaes ou restaurar um backup diferencial. sinnimo de STANDBY. semelhante a selecionar a opo Leave database non operational and do not roll back the uncommitted transactions, no SQL Server Management Studio. RECOVERY: Esta a opo padro. utilizada quando no temos mais nenhum backup do log de transaes ou backup diferencial para restaurar. Qualquer transao que esteja em um estado uncommitted sofrer um roll back. Esta a opo padro, isto , se no especificarmos nada, ser assumida a opo RECOVERY. RESTART: Utilizamos esta opo para reinicializar uma operao de restore que foi interrompida. STATS = percentage: Faz com que seja emitida uma mensagem depois que o percentual especificado, da operao de restore, tenha sido alcanado. Podemos utilizar esta opo para acompanhamento de operaes de restore de grandes Bancos de Dados. MOVE nome_lgico TO nome_fsico_arquivo: Esta opo pode ser utilizada para restaurar o backup para um lugar alternativo. Considere o seguinte exemplo do Books OnLine: RESTORE DATABASE MyNwind FROM MyNwind_1 WITH NORECOVERY, MOVE MyNwind TO c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.mdf, MOVE MyNwindLog1 TO c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.ldf proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000265 Agora vamos aprender um pouco mais sobre o comando RESTORE LOG. Considere o exemplo a seguir: RESTORE LOG Exemplo1 FROM backup_log_exemplo1 WITH NORECOVERY STATS = 5 Este comando restaura o log do Banco de Dados Exemplo1, a partir do backup device backup_log_exemplo1 e no coloca o Banco de Dados on-line (NORECOVERY). Desta maneira mais backups do log ou backups diferenciais podero ser restaurados. A cada 5% da operao de restore emitida uma mensagem para acompanhamento (STATS = 5). Simplificando a sintaxe do comando RESTORE LOG, teramos: RESTORE LOG nome_banco_dados FROM nome_device [WITH opes] A maioria das opes do comando RESTORE LOG so as mesmas do comando RESTORE DATABASE. Uma opo que exclusiva do comando RESTORE LOG a seguinte: STOP AT = data e hora: Esta opo pode ser utilizada para restaurar o backup do log de transaes at uma hora e data especificadas. Considere o exemplo a seguir conforme consta no Books OnLine: RESTORE DATABASE MyNwind FROM MyNwind_1, MyNwind_2 WITH NORECOVERY RESTORE LOG MyNwind FROM MyNwindLog1 WITH NORECOVERY RESTORE LOG MyNwind FROM MyNwindLog2 WITH RECOVERY, STOPAT = Apr 15, 2005 12:00 AM Para fixar melhor estes comandos vamos fazer um exerccio completo. Exerccio: Neste exerccio apresentarei os comandos necessrios para executar a seguinte seqncia de tarefas: Criar um backup device chamado exercicio_capitulo5. Fazer um backup completo do Banco de Dados Northwind. Por padro, o Banco de Dados Northwind possui a opo trunc. log on chkpt setada em TRUE. Quando esta opo verdadeira, no possvel fazer o backup do log de transaes. Por isso precisaremos desabilitar esta opo. importante desabilitarmos esta opo antes de fazermos as alteraes, pois caso contrrio as alteraes efetuadas sero descartadas do log de transaes e no poderemos restaurar o log conforme proposto mais adiante. Em seguida faremos algumas alteraes em intervalos de cinco minutos na tabela Customers do Banco de Dados Northwind. Em seguida faremos um backup do log de transaes. Na seqncia, iremos restaurar o backup completo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2660000Curso Completo Depois restauraremos o backup do log de transaes utilizando a opo STOPAT. Faremos um restore do backup completo para restaurar o Banco de Dados Northwind condio inicial. As diversas etapas deste exerccio sero executadas, utilizando comandos T-SQL, na janela de execuo de comandos do SQL Server Manage- ment Studio. Os backups sero feitos em um device chamado exercicio_capitulo5, o qual est associado ao arquivo D:\backups\exercicio_capitulo5.bak. O objetivo principal deste exerccio fazer uma reviso dos comandos relacionados criao de backup devices, criao de backups e de restore, j vistos anteriormente, neste captulo. Vamos abrir a janela de execuo de comandos do SQL Server Management Studio e criar o device exercicio_capitulo5. 1. Para criar o device exercicio_capitulo5 execute o seguinte comando: USE master exec sp_addumpdevice disk, exercicio_capitulo5, D:\backups\exercicio_capitulo5.bak Com isso temos o nosso backup device exercicio_capitulo5 criado. Fazer um backup completo do Banco de Dados Northwind. 2. Para fazer o backup solicitado, execute o seguinte comando: BACKUP DATABASE Northwind to exercicio_capitulo5 Por padro o banco de dados Northwind possui a opo trunc. log on chkpt setada em TRUE. Quando esta opo verdadeira, no possvel fazer o backup do log de transaes. Por isso precisaremos desabilitar esta opo. 3. Para desabilitar a opo trunc. log on chkpt, no Banco de Dados Northwind, execute o seguinte comando: use master exec sp_dboption northwind, trunc. log on chkpt, FALSE Faremos algumas alteraes em intervalos de cinco minutos, na tabela Customers do Banco de Dados Northwind. No nosso exemplo irei alterar a tabela Customers s 21h30. Nesta alterao farei com que o campo Country de todos os registros seja alterado para Brasil. s 21h35 irei alterar o campo Country para EUA, e s 21h40 alterarei o campo Country de todos os registros da tabela Customers para Alemanha. 4. Para alterar o campo Country de todos os registros da tabela Customers para Brasil, execute o seguinte comando: Use Northwind UPDATE Customers SET Country = Brasil Este comando foi executado s 21h30. N O T A proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000267 Figura 5.16 Country = Brasil para todos os registros da tabela Customers. 5. Para alterar o campo Country de todos os registros da tabela Customers para EUA, execute o seguinte comando: Use Northwind UPDATE Customers SET Country = EUA Este comando foi executado s 21h35. Na Figura 5.17 podemos ver o resultado deste comando. Na Figura 5.16 podemos ver o resultado deste comando. Para ver os dados de uma tabela no SQL Server 2005, basta executar um SELECT * FROM NOME_DA_TABELA. Figura 5.17 Country = EUA para todos os registros da tabela Customers. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2680000Curso Completo N O T A 6. Para alterar o campo Country de todos os registros da tabela Customers para Alemanha, exe- cute o seguinte comando: Use Northwind UPDATE Customers SET Country = Alemanha Este comando foi executado s 21h40. Na Figura 5.18 podemos ver o resultado deste comando. Figura 5.18 Country = Alemanha para todos os registros da tabela Customers. 7. Faremos agora um backup do log de transaes do Banco de Dados Northwind. Para isso, execute o seguinte comando: BACKUP LOG Northwind to exercicio_capitulo5 8. Restaure o backup completo para que o Banco de Dados Northwind volte situao original, executando o seguinte comando: RESTORE DATABASE Northwind FROM exercicio_capitulo5 WITH NORECOVERY Devemos utilizar a opo WITH NORECOVERY pois queremos restaurar o log de transaes na seqncia. Para isso precisamos deixar o Banco de Dados no-operacional. Isto feito com a opo NORECOVERY. Agora restauraremos o backup do log de transaes utilizando a opo STOPAT. 9. Para restaurar o log de transaes at as 21h35, execute o seguinte comando: RESTORE LOG Northwind FROM exercicio_capitulo5 WITH RECOVERY, STOPAT = 20010308 21:35 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000269 N O T A Neste caso deveremos estar de volta situao de 21h35 (substitua a data indicada no comando pela data e hora que voc est utilizando, para acompanhar o exemplo). Faremos, ento, um restore do backup completo para restaurar o Banco de Dados Northwind a sua condio inicial. 10. Para restaurar o Banco de Dados Northwind a sua condio inicial, execute o seguinte comando: RESTORE DATABASE Northwind FROM exercicio_capitulo5 Na Figura 5.19 podemos conferir que os dados originais foram restaurados. Figura 5.19 Dados originais restaurados. 11. Feche o SQL Server Management Studio. Com isso encerramos o nosso item sobre restore. Voc pode encontrar mais informaes sobre backup/restore, no Books OnLine. KNOW-HOW EM: AGENDAMENTO DE TAREFAS NO SQL SERVER 2005 PR-REQUISITOS Fundamentos apresentados na Parte I. Saber utilizar o SQL Server Management. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2700000Curso Completo METODOLOGIA Definir agendamentos de jobs no SQL Server 2005. TCNICA Apresentao dos procedimentos necessrios para o agendamento de tarefas/jobs no SQL Server 2005. Podemos automatizar uma srie de tarefas administrativas no SQL Server 2005 atravs da criao de jobs. Um job uma tarefa administrativa, composta de um ou mais passos, a qual agendada para executar automaticamente, em datas e horrios determinados, nas configuraes do job. Por exemplo, poderamos criar um job que executa um backup completo do Banco de Dados Northwind aos domingos noite, s 22:00 horas e um backup diferencial ao final de cada dia, de segunda a sexta-feira. Tambm poderamos criar jobs mais sofisticados, que fazem pesquisas em um Banco de Dados e enviam os resultados por e-mail para um gerente. Podemos agendar tarefas que executam manuteno nos ndices de tabelas para executarem periodicamente, e assim por diante. As possibilidades so muitas. Um job tambm pode ser criado e no agendado para executar periodicamente, sendo que o DBA pode execut-lo manualmente, quando for necessrio. Normalmente agendamos, para execuo automtica, aquelas tarefas rotineiras que o DBA deve executar, como backups, manuteno de ndices e qualquer outra tarefa que tenha que ser executada periodicamente. Com isso liberamos o DBA de uma srie de tarefas administrativas repetitivas. Para que a execuo de tarefas funcione corretamente, o servio SQL Server Agent deve estar rodando. O ideal que este servio seja configurado para inicializar automaticamente. Podemos fazer esta configurao utilizando o SQL Computer Manager, conforme descrito no Captulo 2. A Figura 5.20 mostra o servio SQL Server Agent configurado para iniciar automaticamente, usando o SQL Computer Manager. Figura 5.20 O Servio SQL Server Agent. Cabe ainda lembrar que cada instncia do SQL Server 2005 instalada no servidor possui o seu prprio servio SQL Server Agent associado, isto , se tivermos duas ou mais instncias do SQL Server instaladas, poderemos ter o SQL Server Agent rodando em uma das instncias e configurado para no iniciar automaticamente na outra instncia. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000271 N O T A Alm do servio SQL Server Agent, precisamos do Banco de Dados msdb (o qual est dentro da opo System Databases). neste Banco de Dados que ficam armazenadas as informaes e os agendamentos dos jobs. Observe a Figura 5.21, onde temos uma viso do contedo da tabela sysjobs, onde temos informaes sobre diversos jobs. Os jobs que aparecem nesta tabela foram criados quando criamos agendamento para os backups do log de transaes, no item anterior. Lembre que foi dito que a maneira de criar um agendamento para o backup era atravs da criao de um job. Figura 5.21 A tabela sysjobs, do Banco de Dados msdb. Neste item aprenderemos a criar e a gerenciar jobs. CRIANDO UM JOB COM O SQL SERVER MANAGEMENT STUDIO A ttulo de exemplo, vamos criar um job que faz o backup completo dos Bancos de Dados Exemplo1 e AdventureWorks, para o backup device exercicio_capitulo5. Vamos agendar este job para executar diariamente s 23h. O backup device exercicio_capitulo5 j deve ter sido criado, caso contrrio o job ir falhar na execuo. Este backup device foi criado em um dos exemplos anteriores, neste captulo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2720000Curso Completo Exemplo prtico: Para criar um job que faz o backup completo dos Bancos de Dados Exemplo1 e AdventureWorks, para o backup device exercicio_capitulo5, siga os passos indicados a seguir: 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas -> Microsoft SQL Server -> SQL Server Management Studio). 2. D um clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, onde esto os bancos de dados Exemplo1 e AdventureWorks, os quais faro parte do backup a ser executado automaticamente, pelo job que estamos criando. 3. Nas opes que surgem abaixo desta instncia, clique no sinal de + ao lado da opo SQL Server Agent para expandi-la. 4. Observe que, abaixo da opo jobs, sero exibidos os Jobs j existentes. 5. Para criar um novo job, clique com o boto direito do mouse na opo Jobs e, no menu de opes que surge, d um clique em New Job. Surge a janela New Job Properties, para a criao de um novo job, conforme indicado na Figura 5.22, com a guia General selecionada por padro: Figura 5.22 Criao de um novo job. 6. Para o nome do job digite backupExemplo1AdventureWorks, no campo Name. 7. Na lista Category, selecione Databasa Maintenance. Este campo apenas atribui uma determinada categoria ao job, o que ajuda na identificao das funes do mesmo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000273 8. No campo Owner, podemos selecionar o dono do job. Conforme veremos no prximo captulo, todo objeto no SQL Server possui um dono. O dono de um objeto o usurio que estava logado e que criou o objeto. No nosso exemplo, como estou utilizando a segurana do prprio SQL Server utiliza conta as de logon do prprio SQL Server. Com isso vou selecionar a conta as, que a conta de administrador do SQL Server 2005. No prximo captulo estudaremos a segurana no SQL Server 2005 em detalhes. 9. No campo Description, digite o seguinte: Faz o backup de Exemplo1 e AdventureWorks, diariamente, s 23:00 h. Sua janela deve estar conforme indicado na Figura 5.23: Figura 5.23 A guia General da janela de criao do job. 10. D um clique na guia Steps. Nesta guia poderemos definir os passos que o job executar. No nosso exemplo, haver dois passos. Um que faz o backup do Banco de Dados Exemplo1 e outro que faz o backup do Banco de Dados AdventureWorks. 11. Para criar um novo passo, d um clique no boto New. Surge a janela indicada na Figura 5.24: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2740000Curso Completo Figura 5.24 Criando um novo passo para o Job. 12. Preencha os campos da seguinte maneira: Step Name: backupExemplo1. Type: Certifique-se de que esteja selecionado Transact-SQL Script (T-SQL). Isto indica que o passo que est sendo criado executar um comando T-SQL. medida que voc for ficando mais familiarizado com a linguagem T-SQL, ver que possvel automatizar a maioria das tarefas de administrao do SQL Server 2005. Database: Selecione Exemplo1. Command: Digite o seguinte comando: BACKUP DATABASE Exemplo1 to exercicio_capitulo5 13. Para verificar se o comando digitado est correto clique no boto Parse. Se o comando estiver correto, surge uma janela com a mensagem The command has suces parsed. Clique em OK para fechar esta mensagem. D um clique em OK e pronto, o primeiro passo ter sido criado. 14. Para criar o segundo passo, d um clique no boto New. 15 Preencha os campos da seguinte maneira: Step Name: backupAdventureWorks. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000275 Type: Certifique-se de que esteja selecionado Transact-SQL Script (T-SQL). Isto indica que o passo que est sendo criado executar um comando T-SQL. Database: Selecione AdventureWorks. Command: Digite o seguinte comando: BACKUP DATABASE AdventureWorks to exercicio_capitulo5 16. D um clique em OK e pronto, o segundo passo do job ter sido criado, conforme indicado na Figura 5.25: Figura 5.25 Dois passos j adicionados ao job. Os passos so executados na ordem em que foram criados. Voc pode alterar a ordem dos passos, clicando no passo e depois clicando nos botes com seta para cima e seta para baixo. O passo final configurar o agendamento para o job que est sendo criado. Conforme descrito no incio deste exemplo, vamos agendar o job para executar diariamente, s 23h. 17. D um clique na guia Schedules. 18. Para criar um novo agendamento, d um clique no boto New. Surge a janela indicada na Figura 5.26, na qual voc poder definir o agendamento para o job. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2760000Curso Completo N O T A Figura 5.26 Criando um novo agendamento. 19. Para o nome do agendamento digite DiarioAs23horas. As opes para agendamento foram descritas no item sobre o backup do log de transaes, neste captulo. 20. Certifique-se de que a opo Recurring esteja marcada. Agora vamos configurar o horrio de execuo do job. 21. Configure as opes conforme indicado na Figura 5.27. 22. D um clique no boto OK para fechar a janela da Figura 5.27. 23. Voc estar de volta guia Schedules. Observe que o novo agendamento j foi adicionado. Podemos configurar mais do que um agendamento para um job. Por exemplo, se quisssemos que o job fosse executado diariamente s 23h e s segundas, quartas e sextas iniciando s 8h, at as 20h, executando de duas em duas horas, teramos que criar dois agendamentos distintos. Para criar mais um agendamento, bastaria clicar novamente no boto New. e definir as configuraes para o novo agendamento. Agora j temos todas as definies necessrias para a criao do job proposto. 24. D um clique no boto OK e o job backupExemplo1AdventureWorks ser criado e ser executado diariamente s 23h. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000277 Figura 5.27 Definindo o agendamento do job. No precisamos esperar at as 23 para ver se o job vai executar com sucesso. Podemos executar o job manualmente, a qualquer momento. Para isso basta clicar com o boto direito do mouse no job e, no menu que surge, clicar em Start Job. Quando um job possui mais do que um passo, surge uma janela com a lista dos passos e perguntando qual deve ser o primeiro passo a ser executado, conforme indicado na Figura 5.28. Para iniciar a execuo do job, basta clicar no boto Start. Figura 5.28 Lista de passos do job. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2780000Curso Completo Voc pode impedir que um job seja executado desabilitando o job. Para desabilit-lo, clique com o boto direito do mouse sobre o job e no menu de opes que surge, d um clique na opo Disable. Surge uma janela com uma mensagem. Clique em Close para fech-la. Enquanto o job estiver desabilitado, este no ser executado. Para habilit-lo novamente, clique com o boto direito do mouse no job, e no menu de opes que surge d um clique na opo Enable. Para verificar se um job est executando corretamente voc pode consultar o histrico de execuo do Job. Para consultar este histrico, clique com o boto direito do mouse no job, e no menu de opes que surge d um clique na opo View History. Surge a janela Job History, com todas as execues do job, onde so indicadas as seguintes informaes sobre cada execuo, conforme indicado na Figura 5.29: Figura 5.29 O histrico de execuo do job. Data. Resultado da execuo: Successful indica que o job executou com sucesso. Notificaes: Podemos fazer com que o job notifique o administrador em caso de sucesso ou falha na execuo. Durao da execuo do job. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 5 APRENDENDO SOBRE TRANSAES, BACKUP E AGENDAMENTO DE TAREFAS Curso Completo0000279 medida que voc dominar a linguagem T-SQL, a utilizao de jobs passa a ser uma ferramenta de grande valor para automatizar uma srie de tarefas repetitivas e rotineiras. Na maioria das vezes quando um job no funciona corretamente, pode ser um dos seguintes problemas: 1. O servio SQL Server Agent no est rodando. 2. O comando T-SQL est incorreto. CONCLUSO Neste captulo aprendemos conceitos fundamentais para a manuteno de um Banco de Dados no SQL Server 2005. Iniciamos o captulo aprendendo sobre transaes e o log de transaes no SQL Server 2005. Conforme vimos, o log de transaes tem um papel fundamental na recuperao de um Banco de Dados em caso de falhas e tambm na manuteno da consistncia e da integridade dos dados. Ainda na parte terica, aprendemos sobre os tipos de backup disponveis no SQL Server 2005, quais as estratgias de recuperao para os diferentes tipos de backup e alguns exemplos prticos de utilizao das estratgias apresentadas. Na seqncia, aprendemos o conceito de backup device. Tambm aprendemos a criar backup devices com o SQL Server e usando comandos T-SQL. Em seguida, aprendemos a criar e a restaurar backups, utilizando o SQL Server Management Studio e comandos T-SQL. Fechamos o captulo aprendendo a criar e agendar jobs, para automatizar a execuo de tarefas administrativas. Saber utilizar as ferramentas administrativas para executar backups e restore quando necessrio importante, porm de fundamental importncia o planejamento das rotinas de backup/restore a serem utilizadas. Conforme visto neste captulo, diversos fatores devem ser levados em conta na hora de montar a nossa estratgia de backup/restore, como por exemplo: Tempo mximo de parada para backup (janela de backup). Backup completo, diferencial ou de log. Qual o tempo de downtime aceitvel, isto , em caso de falha no Banco de Dados, qual o tempo aceitvel para que o banco de dados seja colocado de volta on-line. Qual o custo da perda dos dados. admissvel perda dos dados? Qual o nvel de perdas aceitvel? Um dia? Uma hora? Um minuto? Agora hora de aprendermos sobre segurana no SQL Server 2005. Mas isso assunto para o prximo captulo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Captulo 6 SEGURANA NO SQL SERVER 2005 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2820000Curso Completo N O T A INTRODUO O SQL Server 2005 pode ser utilizado como Banco de Dados em uma srie de situaes, como por exemplo: Para sites de comrcio eletrnico. Para armazenar os dados do site de um banco. Para as diversas aplicaes que rodam na empresa, como por exemplo aplicaes financeiras, contbeis, etc. Para cadastro de alunos, disciplinas, turmas, matrculas e notas em uma universidade ou grande escola. Enfim, onde um Banco de Dados for necessrio. O que podem apresentar em comum ambientes to diversos? Muito simples: a necessidade de segurana no acesso s informaes. Falando de uma maneira simples, a segurana no acesso s informaes significa que o usurio deve ser capaz de acessar os dados necessrios com nvel de acesso suficiente (e no mais do que suficiente), para que o usurio realize o seu trabalho. Se um usurio trabalha no atendimento ao pblico, fornecendo informaes aos clientes, bvio que ele no deve ter permisso para alterar, excluir ou inserir dados, mas somente permisso para leitura dos dados. Ao configurarmos corretamente os mecanismos de segurana do SQL Server 2005, garantiremos que somente podem acessar os dados de um Banco de Dados os usurios autorizados e com o nvel de acesso necessrio para que executem o seu trabalho. Atravs dos mecanismos de segurana tambm evitamos que pessoas no-autorizadas tenham acesso aos dados. Claro que no existe sistema operacional ou sistema de Banco de Dados 100% seguro. Diariamente temos notcias de sistemas que foram invadidos, principalmente atravs da Internet. Mas, com certeza, se configurarmos corretamente a segurana do Windows 2000 Server ou Windows Server 2003 e do SQL Server 2005, dificultaremos, enormemente, a vida de quem quer invadir nossos sistemas. Muitas das invases conhecidas acontecem por m configurao dos mecanismos de segurana disponveis (uma das situaes mais conhecidas, com o SQL Server 2000, era o caso de servidores com a senha da conta sa em branco. Este era o padro para o SQL Server 2000, ou seja, a menos que voc definisse uma senha para a conta sa, a senha padro seria em branco. E para piorar um pouco mais, a conta a conta com poderes mximos no SQL Server. Ou seja, deixar um servidor com a conta sa com senha em branco equivalente a deixar a chave embaixo do tapete, na porta da frente e pendurar um luminoso com letras bem grandes com a frase A chave est embaixo do tapete. Este era um exemplo tpico de problema de segurana, devido m configurao do SQL Server, ou seja, o administrador deixava a senha da conta em branco). Por que essa conversa toda sobre segurana? Porque este justamente o assunto deste captulo. Veremos quais os mecanismos de segurana disponveis no SQL Server 2005, para garantir a segurana no acesso s informaes contidas nos Bancos de Dados. Aprenderemos a configurar e administrar estes mecanismos. Tambm falaremos, brevemente, sobre os mecanismos bsicos de segurana do Windows 2000 Server ou Windows Server 2003. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000283 Neste captulo apresentaremos: Uma viso geral da segurana no SQL Server 2005. As novidades do SQL Server 2005, na rea de segurana. Tipos de segurana disponveis no SQL Server 2005. O papel, criao e administrao de Schemas e User Logins contas de usurios para logon no servidor SQL Server 2005. Como atribuir permisses aos objetos de um Banco de Dados. O que so Roles, como cri-las e administr-las. O planejamento e o gerenciamento da segurana. Utilizarei a mesma metodologia dos captulos anteriores. Sempre que for cabvel, voc aprender a executar as operaes propostas utilizando tanto o SQL Server Management StudioSQL Server 2005, quanto comandos T-SQL, na janela de execuo de comandos do SQL Server Management Studio. KNOW-HOW EM: SEGURANA NO SQL SERVER 2005 PR-REQUISITOS Fundamentos apresentados na Parte I. Saber utilizar o SQL Server Management Studio SQL Server 2005 e o Query Analyzer. METODOLOGIA Apresentao terica sobre o modelo de segurana do SQL Server 2005. A segurana no SQL Server 2005 baseada nos seguintes conceitos: Logins User Accounts Schemas Roles Permissions PRIMEIRO PRECISAMOS CONECTAR COM O SERVIDOR SQL SERVER 2005 O primeiro passo para que o usurio possa acessar o servidor SQL Server estabelecer uma conexo com uma instncia do servidor SQL Server 2005. Ao estabelecer uma conexo, o usurio deve fornecer o seu nome (login) e senha. O SQL Server verifica se o login e senha fornecidos tm permisso de acesso ou, melhor, permisso para conectar com a instncia do SQL Server 2005. Em caso afirmativo, a conexo com o servidor SQL Server 2005 estabelecida. A Figura 6.1 ilustra este conceito. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2840000Curso Completo Figura 6.1 Usurio conectando com o servidor SQL Server 2005. Nesta situao, descrita na Figura 6.1, o usurio jsilva conseguir estabelecer a conexo, que tecnicamente chamamos de sesso, com a instncia SRVINST01 do servidor SQL Server SERVIDOR -> SERVIDOR\SRVINST01. Ao tentar efetuar a conexo, as informaes de login e senha so passadas para o servidor SQL e comparadas com a lista de usurios autorizados a acessar o servidor. Caso o usurio esteja na lista de usurios autorizados e a senha esteja correta, a conexo ser estabelecida. No nosso exemplo, o usurio cadastrado como maria no conseguir a conexo, pois no existe login maria, cadastrado no servidor SQL Server. Agora vamos analisar uma situao um pouco diferente, conforme indicado na Figura 6.2. Figura 6.2 Acesso negado devido a senha incorreta. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000285 Nesta segunda situao, o usurio com login maria continua no tendo acesso ao servidor SQL. Porm agora o problema que a senha foi informada incorretamente. Normalmente o usurio est utilizando uma aplicao que acessa um Banco de Dados no servidor SQL Server 2005. Dentro da prpria aplicao, o usurio deve digitar o seu login e senha de acesso. Pode ser que a aplicao seja uma pgina ASP ou uma aplicao Cliente/Servidor, desenvolvida em Delphi ou em Visual Basic. Da mesma maneira poderamos construir um formulrio com campos para que o usurio informe o seu login e senha. Porm pode ser, no mnimo, incmodo fazer com que o usurio fornea informaes de login e senha, cada vez que for usar cada diferente aplicao, que faz conexo com uma ou mais instncias do SQL Server 2005. Vamos supor que o usurio tenha feito o logon em um domnio do Windows 2000 Server ou do Windows Server 2003. No poderamos utilizar as informaes de logon do usurio no domnio Windows 2000 Server ou do Windows Server 2003, como credenciais para acessar o servidor SQL Server? Em outras palavras, no poderamos autorizar o acesso ao servidor SQL Server diretamente para usurios ou grupos do domnio do Windows 2000 Server ou do Win- dows Server 2003? A resposta a ambas as perguntas sim. Essas duas possibilidades, ou seja, usar contas de usurios criadas no prprio SQL Server 2005 ou usar contas de um domnio do Windows 2000 Server ou Win- dows Server 2003 que caracterizam os dois diferentes modos de autenticao que podemos utilizar no SQL Server 2005. Os modos de autenticao possveis so os seguintes: Windows Authentication mode. SQL Server and Windows Authentication mode. No modo SQL Server and Windows Authentication mode podemos dar autorizao de acesso para as contas de um domnio do Windows 2000 Server ou Windows Server 2003. Com este modo no necessria a criao de logins (contas de usurio) no prprio SQL Server 2005. O usurio utiliza uma aplicao para acessar o Banco de Dados e a aplicao j passa as informaes do logon que o usurio fez no domnio (nome de usurio e senha) diretamente para o SQL Server 2005, evitando que o usurio tenha que digitar novamente informaes de login e senha. Porm este modo tambm permite que sejam criadas contas de login no prprio SQL Server 2005. As contas criadas no SQL Server 2005 ficam armazenadas no Banco de Dados master de cada instncia. Esta prtica no recomendada, uma vez que teremos vrias listas de usurios e senhas para administrar: a lista do domnio e uma lista em cada instncia do SQL Server. Ao invs de criar contas no SQL Server 2005, podemos dar permisso de acesso para as contas do domnio. Por padro, a conta Administrador do domnio recebe permisses completas de acesso ao SQL Server e a todos os seus objetos. A conta Administrador adicionada lista de contas com permisso de acesso quando da instalao do SQL Server 2005. Esta conta possui as mesmas permisses que a conta sa. A conta sa uma conta do prprio SQL Server, a qual criada quando da instalao do SQL Server. Esta conta tambm possui poderes totais sobre todos os objetos de uma instncia do SQL Server 2005. Na Figura 6.3, podemos observar que a conta Administrador do domnio SERVIDOR j foi includa na lista de contas com permisso de acesso ao servidor. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2860000Curso Completo N O T A Figura 6.3 Conta SERVIDOR\Administrador com permisso de login. Mais adiante aprenderemos a acessar a opo Logins, indicada na Figura 6.3. Utilizarei os termos login e conta com o mesmo significado. Para maiores informaes sobre Domnios do Windows 2000 Server e do Active Directory consulte o livro Manual de Estudos Para o Exame 70-217, 752 pginas, de minha autoria e publicado pela Editora Axcel Books. Para maiores informaes sobre Domnios do Windows Server 2003 e sobre o Active Directory no Windows Server 2003, consulte o livro Windows Server 2003 Curso Completo de minha autoria, tambm publicado pela Editora Axcel Books (www.axcel.com.br). No modo de segurana Windows Authentication mode, somente sero aceitas contas do domnio do Windows. Ou seja, para que o usurio tenha acesso ao SQL Server, este deve ter uma conta cadastrada no domnio e a sua conta deve ter recebido permisso de acesso ao servidor SQL. Neste modo no poderemos criar contas no prprio SQL Server. importante salientar que, mesmo no modo Win- dows Authentication mode, a conta sa continua vlida e pode ser utilizada. A conta sa, por ser uma conta de administrador do SQL Server 2005, uma exceo e pode ser utilizada em qualquer modo. Outro detalhe importante a ser salientado que, para usar o modo Windows Authentication mode, no obrigatrio (embora seja recomendado) que exista um domnio baseado no Active Directory. Se no houver um domnio, podero ser utilizadas as contas locais, da base de usurios locais, do servidor Windows 2000 Server ou Windows Server 2003, onde est instalada a instncia do SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000287 Podemos alterar entre os modos Windows Authentication Mode e SQL Server and Windows Authenti- cation Mode facilmente, utilizando o SQL Server Management Studio. Veja o exemplo prtico a seguir. Para alterar o modo de segurana do SQL Server 2005, faa o seguinte: 1. Abra o SQL Server Management StudioSQL Server 2005 (Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Server Management Studio). 2. No janela Object Explorer, clique com o boto direito do mouse na instncia a ser configurada e, no menu que surge, d um clique em Properties. 3. Na janela que surge d um clique na opo Security, no painel da esquerda. Surge a janela indicada na Figura 6.4. Nesta janela, no grupo Server authentication, voc seleciona a forma de autenticao a ser utilizada, pela instncia do SQL Server 2005, que est sendo configurada. Figura 6.4 Alterando o modo de segurana do SQL Server 2005. 4. Se voc alterar o modo e clicar em OK, o SQL Server 2005 emite uma mensagem dizendo que as alteraes somente tero efeito depois que o servio SQL Server for parado e reinicializado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2880000Curso Completo N O T A N O T A 5. Para reinicializar o servio do SQL Server 2005, clique com o boto direito do mouse na instncia que est sendo configurada e, no menu de opes que exibido, clique na opo Restart. 6. Surge uma janela indicando o progresso da reinicializao do servio. Aps reinicializado o servio, j estar valendo o modo e autenticao selecionados. O modo de segurana configurado de maneira independente para as diversas instncias do servidor SQL Server 2005 instaladas em um mesmo servidor. Por exemplo, se tivermos duas instncias instaladas, uma pode estar no modo Windows Authentication mode e a outra estar no modo SQL Server and Windows Authentication mode. DEPOIS DE CONECTADOS, PRECISAMOS DE PERMISSES PARA ACESSAR OS OBJETOS DO BANCO DE DADOS Ter permisso de login, quer seja um login do prprio SQL Server 2005 ou um login do domnio, apenas a primeira etapa do processo. Muito bem, voc conseguiu fazer o logon no SQL Server 2005, e agora? Uma vez conectado ao servidor SQL Server, o usurio precisa de permisses de acesso a um ou mais Bancos de Dados e para acessar os objetos (tabelas, views, stored procedures, etc.) de um ou mais Bancos de Dados. Conforme vimos no Captulo 2, em um nico servidor SQL Server, podemos ter uma ou mais instncias do SQL Server instaladas. Cada instncia como se fosse um servidor completamente separado. Em cada instncia podemos ter vrios Bancos de Dados, os quais podem ter os seguintes objetos, dentre outros: Tables Views Stored Procedures Extended Stored Procedures Users Roles Rules Defaults User Defined Data Types User Defined Functions Full-Text Catalogs. J aprendemos a criar alguns destes elementos e iremos aprender a criar outros no decorrer deste livro. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000289 No item anterior vimos que o usurio precisa de um login para conectar-se com uma instncia do servidor SQL. A conexo sempre feita com uma instncia do servidor SQL Server. Ao fazer a conexo, o usurio automaticamente associado a um dos Bancos de Dados da instncia qual se conectou. Conforme veremos na parte prtica, possvel definir com qual Banco de Dados o login ser automaticamente associado. Mas isso no significa que o usurio somente poder acessar dados do Banco de Dados com o qual ele automaticamente associado, durante a conexo. A que entra o segundo estgio de segurana pelo qual o usurio ter que passar. Alm de fazer a conexo, o usurio precisa estar autorizado para acessar o(s) Banco(s) de Dado(s), nos quais esto as informaes que o usurio precisa acessar. Ento, o prximo passo autorizar o usurio a acessar um ou mais Bancos de Dados. Podemos dar permisso para o usurio ou para uma role ao qual ele pertence. O conceito de role, no SQL Server 2005, exatamente igual ao conceito de Grupos de Usurios no Windows 2000 Server ou no Windows Server 2003. Uma role pode conter um ou mais usurios. Se dermos uma permisso para uma role, todos os usurios que pertencem role iro herdar as permisses atribudas Role. ou no a mesma coisa que grupos de usurios no Windows, no UNIX, Linux, Novell, etc.? Mas, enfim, quem sou eu para criticar a criatividade do pessoal que inventa os nomes para os objetos do SQL Server 2005? Vejam que o usurio j precisa passar por dois nveis de segurana: Permisso para fazer a conexo com o SERVIDOR\INSTNCIA. Permisso para acessar um ou mais Bancos de Dados. Observe o exemplo da Figura 6.5. Figura 6.5 Usurio com permisso de conexo, porm sem permisso no Banco de Dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2900000Curso Completo Nesta situao, o usurio jsilva tem permisso para fazer a conexo com uma instncia do servidor SQL Server, porm no tem permisso para acessar o Banco de Dados Clientes, que est no servidor SQL. Neste caso se jsilva tentar acessar algum objeto do Banco de Dados Clientes, o acesso ser negado, pois jsilva no tem permisso de acesso a este Banco de Dados. Para que jsilva possa ter acesso ao Banco de Dados Clientes temos que adicion-lo lista de usurios autorizados a acessar o Banco de Dados Clientes e dar as permisses para que ele possa realizar as tarefas necessrias (voc ver no prximo tpico que, na verdade, as permisses so dadas no diretamente aos objetos do Banco de Dados, tais como tabelas e views, mas sim ao schema ao qual pertence o objeto. No prximo tpico farei uma explicao detalhada sobre schemas, pois esta uma das novidades de segurana, mais importantes do SQL Server 2005). Exemplos de permisses para Bancos de Dados so as seguintes: Criar tabelas Excluir tabelas Alterar tabelas Criar roles Criar views Conectei com o servidor SQL, tenho permisso de acesso ao Banco de Dados e ainda no consigo executar uma consulta. O que est acontecendo? Figura 6.6 Usurio com permisso de conexo, permisso no Banco de Dados, porm sem permisso na tabela Pagamentos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000291 Alm das permisses para acessar o Banco de Dados, podemos e devemos definir permisses de acesso para cada objeto de um Banco de Dados. Por exemplo pode ser que alguns usurios devam ter permisso de leitura na tabela Cadastro do Banco de Dados Clientes, porm somente os gerentes devem ter permisso de leitura na tabela Pagamentos do Banco de Dados Clientes. Podemos definir o acesso, individualmente, para cada tabela, view, etc., para cada objeto de um Banco de Dados. Portanto, podemos definir permisses de acesso para cada objeto que faz parte de um Banco de Dados. O fato de podermos definir permisses para cada objeto nos d uma grande flexibilidade. A partir desta flexibilidade que podemos definir diferentes nveis de acesso para diferentes usurios, o que bastante comum e necessrio nas aplicaes atuais. Alguns usurios devem ter permisso de leitura aos dados; outros de leitura e alterao; outros leitura, alterao e excluso e assim por diante. Observe o exemplo da Figura 6.6. Neste exemplo, temos os seguintes passos: 1. O usurio jsilva consegue fazer a conexo com a instncia do servidor SQL Server 2005. 2. O usurio jsilva est autorizado a acessar o Banco de Dados Clientes. 3. O usurio jsilva NO EST AUTORIZADO a acessar os dados da tabela Pagamentos. Veja que temos trs barreiras de segurana a serem vencidas, antes que o usurio possa acessar os dados de uma tabela: 1) permisso de logon; 2) permisso no Banco de Dados; 3) permisso no objeto que ele precisa acessar. SCHEMAS PRINCIPAL NOVIDADE DE SEGURANA DO SQL SERVER 2005 O SQL Server 2005 introduziu uma importante mudana no modelo de segurana, em relao ao SQL Server 2000: A separao entre usurios e o schema. Para que o amigo leitor no fique perdido e possa entender bem o que um schema e qual foi a mudana introduzida pelo SQL Server 2005, vamos, inicialmente, definir alguns conceitos importantes e, depois, mostrar como estes conceitos se relacionam com a segurana e com a definio de schema. O primeiro conceito que temos que conhecer o conceito de Principal. Um principal considerado qualquer objeto que possa solicitar acesso a recursos do SQL Server 2005. Sob este ponto de vista, usurios, grupos de usurios e processos podem ser considerados como Principals. Uma outra definio, mais voltada para Banco de Dados, seria que um principal qualquer objeto, para o qual possa se definir permisses de acesso (ou neg-las) para os objetos de um Banco de Dados. Sob este ponto de vista, seriam principals objetos tais como usurios e grupos do Windows, logins e roles do SQL Server 2005, e applications roles. Como eu gosto de simplificar ainda mais, em termos desta discusso, vou considerar como principals usurios ou grupos do Windows ou do SQL Server 2005. Muito bem. Conhecido o conceito de principals hora de conhecermos um pouco mais sobre outro importante conceito: Schema. No SQL Server 2000 o conceito de schema era praticamente ignorado; j para o modelo de segurana do SQL Server 2005, este conceito de fundamental importncia. Ento vamos a ele. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2920000Curso Completo Pelos padres de definio do Ansi SQL-92, um schema um conjunto de objetos, sendo que todos os objetos pertencentes a um schema tm como dono o mesmo principal. Em outras palavras, dentro de um schema, todos os objetos pertencentes ao schema tm como dono do objeto o mesmo usurio ou grupo (roles se for um grupo do SQL Server 2005). De uma maneira ainda mais simples, podemos definir um schema, como sendo um container para outros objetos, de tal maneira que todos os objetos contidos em um schema tm o mesmo dono. Outra caracterstica importante do schema que ele deve formar um espao de nomes. O que significa formar um espao de nomes? Significa que o nome de cada objeto, dentro do espao de nomes, deve ser nico. Ou traduzindo: no pode haver dois objetos, com o mesmo nome, dentro do mesmo schema. Por exemplo, duas tabelas somente podero ter o mesmo nome, se pertencerem a schemas diferentes. No SQL Server 2000 no havia uma separao entre os conceitos de Usurio e schema. No SQL Server 2000, todo usurio o dono de um schema, o qual tem o mesmo nome do usurio. Por exemplo, o usurio jsilva, automaticamente, configurado como dono de um schema chamado jsilva. O mesmo vlido para todos os usurios do SQL Server 2000. Com esta ligao, o dono de um objeto exatamente o mesmo dono do schema que contm o objeto. Por isso que, no SQL Server 2000, antes de poder excluir um usurio, voc tinha que excluir todos os objetos dos quais o usurio era o dono, ou teria que alterar o dono de todos estes objetos. Por exemplo, considere o objeto a seguir (l-se de trs para frente: tabela clientes, cujo dono o usurio jsilva, tabela esta pertencente ao Banco de Dados vendas, do servidor servidor), pertencente a um Banco de Dados do SQL Server 2000: servidor.vendas.jsilva.clientes Neste exemplo, o dono da tabela Clientes o usurio jsilva. Se o administrador do Banco de Dados precisar excluir o usurio jsilva, ele ter que, primeiro, excluir este e todos os demais objetos quais o usurio jsilva o dono ou ter que alterar o dono destes objetos. Um trabalho e tanto, convenhamos. Por exemplo, o administrador poderia alterar o dono da tabela clientes, para que, ao invs do usurio jsilva, o novo dono fosse o usurio pedro. Com isso, o nome completo do nosso objeto ficaria assim: servidor.vendas.pedro.clientes Observe que, ao alterar o dono do objeto, o nome completo do objeto tambm se altera, passando de servidor.vendas.jsilva.clientes para servidor.vendas.pedro.clientes. Este era um problemo que existia no SQL Server 2000. Pois, ao alterar o nome completo de um objeto, qualquer programa cujo cdigo faa referncia ao nome completo do objeto ter que ser alterado. Vejam que uma simples renomeao de objeto pode gerar uma grande carga de trabalho, com a necessidade de reviso do cdigo das aplicaes, gerao de novas verses atualizadas e instalao destas verses nos clientes. Um senhor trabalho! Bem, felizmente isso tudo mudou no SQL Server 2005. No SQL Server 2005 todos os objetos de um Banco de Dados tm como dono um schema. Nenhum objeto de Banco de Dados pode ter como dono um usurio ou grupo (Principal seria o nome tcnico, mas estou utilizando o termo usurio ou grupo). Os usurios so donos de schemas e no mais diretamente de objetos do Banco de Dados, tais como tabelas ou views. Lembrando tambm que todos os objetos esto dentro de um schema, ou seja, o schema um container para objetos. Com isso podemos ver que existe uma separao, explcita, entre usurios e schemas, muito diferente do que ocorria no SQL Server 2000. No SQL Server 2005, temos a seguinte sintaxe, para o nome completo de um objeto: Nome_do_Servidor.Nome_do_Banco_de_Dados.Nome_do_Schema.Nome_do_Objeto proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000293 Mas onde est a vantagem desta mudana? Bem simples. No SQL Server 2005 os objetos do Banco de Dados esto contidos dentro de um schema, e no existe nenhuma relao entre o schema e os usurios. Com isso, posso alterar o dono de um schema, sem problemas, pois s ir alterar o dono do schema, mas no ser alterado o nome do schema. Por exemplo, considere o seguinte objeto: SRVDB.Vendas.Dados.Clientes No SQL Server 2005 este objeto a tabela Clientes, a qual pertence ao schema Dados, do Banco de Dados Vendas, do servidor SRVDB. Se precisarmos alterar o dono do schema Dados, no tem problema, pois isso s ir alterar o dono do schema e no o seu nome. Isso s ocorre porque houve esta separao entre schema e usurios, no SQL Server 2005. Com isso, o nome do schema pode permanecer sempre o mesmo e podemos alterar o seu dono, quando necessrio. Com isso, o nome completo do objeto no muda, o que evita a reviso freqente no cdigo das aplicaes, o que ocorria no SQL Server 2000. Podemos resumir estas mudanas, da seguinte maneira: Um schema um container para objetos. Todo objeto pertence a um schema. Todos os objetos de um schema tm o mesmo dono, que o dono do schema. As permisses podem ser atribudas para o schema tambm para os objetos dentro de um schema. Principais benefcios da separao entre usurios e schemas: Mltiplos usurios podem ser donos de um schema, atravs da definio de uma role ou um grupo do Windows, como dono do schema. Com isso, todos os usurios que forem membros da role ou do grupo do Windows sero donos do schema. Ou seja, defino uma role ou grupo do Windows como sendo o dono de um schema e todos os seus membros passam a ser donos do schema. O processo de excluso de um usurio ficou bem mais simplificado, conforme descrito anteriormente. Para excluir um usurio, no mais necessrio alterar o dono de todos os objetos cujo usurio era dono, uma vez que no SQL Server 2005 o usurio no mais dono de objetos e sim de schema. Isso evita uma srie de problemas, conforme descrito anteriormente. Com a possibilidade de definio de permisses diretamente em um schema e tambm nos objetos contidos no schema, podemos definir um nvel de permisses muito mais granular do que no SQL Server 2000. Outro importante conceito introduzido pelo SQL Server 2005 o conceito de Default Schema (Esquema padro). Este conceito utilizado para definir que nome deve ser utilizado, quando feita referncia a um objeto, sem utilizar o nome completo. Por exemplo, considere o objeto DBSRV01.vendas.aplicacoes.clientes. Este o nome completo (Full Qualified Name), da tabela Clientes, do schema aplicaes, do Banco de Dados Vendas, do servidor DBSRV01. No SQL Server 2000, se no for especificado o nome completo, inicialmente ser procurado por um nome que inclui um schema com o mesmo nome do usurio que o dono do objeto. Por exemplo, se o dono da tabela clientes for o usurio jsilva e voc especificar apenas o nome da tabela clientes, o SQL Server 2000 ir procurar, inicialmente, por um objeto chamado jsilva.clientes. Se ele no encontrar, ele procura por um schema chamado dbo, ou seja, ir procurar por dbo.clientes. J no SQL Server 2005, com a separao entre os proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2940000Curso Completo usurios e os schemas, o schema definido como default schema define qual ser o primeiro nome de schema a ser utilizado para tentar localizar um objeto, quando no especificado o nome completo do objeto. Por exemplo, suponha que o schema default para o usurio seja um schema chamado dados. Se o usurio especificar apenas o nome da tabela Clientes, o SQL Server 2005 ir, primeiramente, procurar por um objeto chamado dados.clientes, porque dados o schema default para o usurio. O schema default pode ser definido e/ou alterado, usando a opo DEFAULT_SCHEMA, do comando CREATE USER ou do comando ALTER USER, comandos estes que voc aprender a utilizar neste captulo. Se, por acaso, no for definido um schema padro, o Banco de Dados utilizar, como schema padro, o schema dbo. O conceito e uso de default schema traz uma srie de vantagens, dentre as quais podemos destacar. Diversos usurios podem compartilhar o mesmo default schema, o que facilita a uniformidade e a padronizao, na resoluo de nomes. O fato de um schema padro poder ser compartilhado por vrios usurios permite aos desenvolvedores de aplicao armazenarem os objetos utilizados pela aplicao, em um schema especificamente criado para a aplicao, ao invs de usar o schema DBO. UM RESUMO DA TEORIA SOBRE SEGURANA NO SQL SERVER 2005 Conforme descrevemos neste item, existem dois modos de segurana no SQL Server 2005. O modo Windows Authentication mode, onde somente so aceitos login de usurios do domnio, quer seja de um domnio Windows NT 2000 Server ou Windows Server 2003 ou usurios locais de um servidor baseado no Windows 2000 Server ou Windows Server 2003. O modo SQL Server and Windows Au- thentication mode admite as contas do domnio e tambm contas criadas no prprio SQL Server 2005. Para conectar com o servidor, o usurio precisa de um login, quer seja do domnio ou do prprio SQL Server. Depois o usurio precisa estar na lista de usurios autorizados a acessar os Bancos de Dados necessrios. Dentro de cada Banco de Dados, podem ser definidas as permisses para os schemas onde esto os objetos a serem acessados e, dentro dos schemas, diretamente para acesso aos objetos. Por exemplo, um usurio pode receber permisso para consultar os dados de uma tabela e para consultar e alterar os dados de outra tabela, dentro do mesmo schema. Pode parecer parania todas estas medidas de segurana, mas, conforme descrevemos anteriormente, a informao o bem mais valioso de que as empresas dispem. Proteger este bem de fundamental importncia. Qual o preo da perda total de um Banco de Dados para os negcios da empresa? Com certeza bem menor do que treinar o DBA para que este possa entender e configurar corretamente as opes de segurana do Banco de Dados. O que vimos at aqui a teoria sobre segurana no SQL Server 2005. Nos prximos itens voc aprender a implementar a segurana na prtica. Aprenderemos a criar Login Accounts, a autorizar usurios a acessar Bancos de Dados, schemas e seus objetos. Mas antes de aprendermos a parte prtica, vamos fazer uma pequena parada para falar de alguns conceitos bsicos de segurana do Windows 2000 Server, como por exemplo os conceitos de Domnio e Workgroup, contas de usurios e grupos de usurios. Estes conceitos so integralmente vlidos para o Windows Server 2003. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000295 N O T A N O T A Importante: At o Captulo 5, sempre que fazamos uma conexo com o servidor SQL, estvamos nos conectando com a conta do usurio Administrador. Por isso que tivemos permisso para executar todas as tarefas, como por exemplo criar Bancos de Dados, backup devices, etc. Por padro, quando usamos o modo de autenticao Windows Authentication mode, as contas pertencentes ao grupo Administradores tm poderes totais no SQL Server 2005. KNOW-HOW EM: SEGURANA NO WINDOWS 2000 SERVER E WINDOWS SERVER 2003 PR-REQUISITOS Noes bsicas do Windows 2000 Server e Windows Server 2003. METODOLOGIA Apresentao terica sobre o modelo de segurana do Windows 2000 Server e Windows Server 2003. Para um curso completo sobre os recursos de segurana no Windows Server 2003, consulte o seguinte livro de minha autoria, publicado pela editora Axcel Books www.axcel.com.br : Windows Server 2003 Curso Completo, 1568 pginas. Vimos que, no modelo de segurana do SQL Server 2005, podemos dar autorizao para usurios e grupos de usurios de um domnio do Windows 2000 Server ou Windows Server 2003, para conexo com o servidor SQL Server. Neste item vamos fazer um pequeno parnteses para falar sobre alguns conceitos de segurana do Windows 2000 Server e tambm do Windows Server 2003. Estes conceitos ajudaro o amigo leitor a entender melhor o modelo de segurana do SQL Server 2005. Neste item tratarei dos seguintes tpicos: Workgroup x Domnios. Active Directory. Contas de usurios em um domnio. Grupos de usurios em um domnio. DOMNIOS, WORKGROUPS E ACTIVE DIRECTORY Vamos aprender as diferenas entre um domnio e um workgroup e como o Active Directory encaixa- se neste conceito. DOMNIOS E GRUPOS DE TRABALHO (WORKGROUPS) Um rede com Windows 2000 Server ou com o Windows Server 2003 pode ser criada utilizando-se dois conceitos diferentes, dependendo da maneira como os servidores Windows so configurados. Os proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2960000Curso Completo servidores podem ser configurados para fazerem parte de um domnio ou de um grupo de trabalho, mais comumente chamado de workgroup, termo que utilizarei de agora em diante. Um domnio simplesmente um agrupamento lgico de usurios (contas de usurios) e recursos, os quais compartilham polticas de segurana. Em um domnio podemos ter dois tipos de servidores Windows: Controladores de Domnio (DC Domain Controlers) e Servidores Membro (Member Serv- ers). Veremos um pouco mais sobre Controladores de Domnio e Servidores Membro mais adiante. A criao de contas de usurios e alteraes nas polticas de segurana podem ser feitas em qualquer um dos controladores de domnio, que estas alteraes sero automaticamente repassadas (o termo tcnico utilizado replicadas) para os demais DCs do domnio. Por isso se voc cria uma conta para o usurio jsilva e cadastra uma senha para este usurio, essa conta passa a ser vlida em todo o domnio, sendo que o usurio jsilva pode receber permisses para acessar recursos e servios em qualquer servidor do domnio, seja em um controlador de domnio ou em um servidor membro. Por isso que o domnio nos transmite a idia de um agrupamento lgico de Contas de Usurios e Grupos, bem como de polticas de segurana, uma vez que todo o domnio compartilha a mesma lista de usurios, a mesma lista de Grupos e as mesmas polticas de segurana. A criao de domnios facilita enormemente a administrao de uma rede baseada no Windows 2000 Server ou no Windows Server 2003, sendo altamente recomendada para qualquer rede maior do que uma meia dzia de mquinas. Nos servidores membros podem ser criadas contas de usurios e grupos, as quais somente sero vlidas no Servidor Membro onde forem criadas. Estas contas e grupos so conhecidas como contas locais e grupos locais, respectivamente. Embora isso seja possvel, essa prtica no recomendada, uma vez que isso dificulta enormemente a administrao quando o nmero de usurios e grupos for grande. Voc pode atribuir permisses, para os recursos (pastas compartilhadas, impressoras compartilhadas, aplicativos, etc.) de um servidor membro, a contas de usurios e grupos do domnio, sem a necessidade de criar esses usurios ou grupos localmente. Com isso, podemos concluir que um servidor membro um servidor que, embora no mantenha uma cpia da lista de usurios e grupos, possui acesso a essa lista, sendo que podem ser atribudas permisses aos recursos do servidor membro para as contas e grupos do domnio. Em um domnio, todos os controladores de domnio compartilham uma lista de usurios, grupos e polticas de segurana, alm de algumas outras caractersticas que veremos no tpico sobre o Active Directory. Alm disso, alteraes feitas em um dos controladores de domnio so automaticamente replicadas para os demais. Essa replicao, por padro, ocorre de 5 em 5 minutos dentro da mesma rede local e de 3 em 3 horas atravs de links de WAN, mais lentos, entre controladores de domnio de redes remotas. Como os servidores membro no possuem uma cpia da lista de usurios e grupos do domnio, estes no efetuam a autenticao dos clientes e tambm no armazenam informaes sobre as polticas de segurana para o Domnio, as quais tambm so conhecidas por GPOs Group Policy Objects. Quando os servidores Windows 2000 Server so configurados para trabalhar com um workgroup, no existe o conceito de domnio e nem de controlador de domnio. Cada servidor mantm uma lista separada para contas de usurios, grupos e polticas de Segurana. Com isso, se um usurio precisa acessar recursos em trs servidores, por exemplo, ser necessrio criar uma conta para esse usurio nos trs servidores diferentes. Um workgroup somente recomendado para redes extremamente pequenas, normalmente com um nico servidor Windows 2000 Server ou Windows Server 2003 e no mais do que dez estaes clientes. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000297 ACTIVE DIRECTORY O Active Directory , talvez, a mudana mais significativa includa com o Windows 2000 Server e tambm presente no Windows Server 2003. tambm a novidade mais divulgada e comentada do Windows 2000 Server. Mas, de uma maneira simples, o que o Active Directory? O Active Directory o servio de diretrios do Windows 2000 Server e do Windows Server 2003. Um servio de diretrios um servio de rede, no qual esto armazenadas informaes sobre todos os objetos e servios disponveis na rede. Com o Active Directory podemos pesquisar todos os recursos disponveis em uma rede, e acessar estes recursos de acordo com as definies de segurana implementadas, ou seja, o usurio somente tem acesso aos recursos para os quais tem permisso de acesso. Pela descrio formal acima, podemos ver que o Active Directory um servio de rede, no qual ficam armazenadas informaes sobre dados dos usurios, impressoras, servidores, grupos de usurios, computadores e polticas de segurana. Cada um desses elementos conhecido como objetos. Os recursos disponveis atravs do Active Directory so organizados de maneira hierrquica, atravs do uso de domnios. Uma rede, na qual o Active Directory est instalado, pode ser formada por um ou mais domnios. Com a utilizao do Active Directory um usurio somente precisa ser cadastrado em um dos domnios, sendo que pode receber permisses para recursos em qualquer um dos domnios. A utilizao do Active Directory simplifica em muito a administrao, pois fornece um local centralizado, atravs do qual todos os recursos da rede podem ser administrados. Todos os controladores de domnio possuem o Active Directory instalado. A maneira de criar um domnio instalar o Active Directory em um member server e informar que este o primeiro controlador de domnio. O Active Directory utiliza o DNS Domain Name Systems como o seu servio de nomeao de servidores e recursos. Por isso, um dos pr-requisitos para que o Active Directory possa ser instalado e funcione perfeitamente que o DNS esteja instalado e corretamente configurado. Com o agrupamento de objetos em um ou mais domnios permito que a rede de computadores reflita a organizao lgica da sua empresa. Para que um usurio cadastrado em um domnio possa receber permisses para acessar recursos em outros domnios, o Windows cria e mantm, automaticamente, relaes de confiana entre os diversos domnios. As relaes de confiana so bidirecionais e transitivas. Isso significa que, se o Domnio A confia no Domnio B, o qual por sua vez confia em um Domnio C, ento o Domnio A tambm confia no Domnio C. Isso bastante diferente do que acontecia em verses anteriores do Windows, tais como o NT Server 4.0, pois nas verses antigas as relaes de confiana tinham que ser criadas e mantidas pelos administradores dos domnios. Todo domnio possui as seguintes caractersticas: Todos os objetos de uma rede (contas de usurios, grupos, impressoras, polticas de segurana, etc.) existem em um domnio. Cada domnio somente armazena informaes sobre os objetos prprios. Cada domnio possui suas prprias polticas de segurana. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 2980000Curso Completo Quando temos diversos domnios se relacionando atravs de relaes de confiana, criadas e mantidas automaticamente pelo Active Directory, dizemos que temos uma rvore. Uma rvore nada mais do que um agrupamento ou arranjo hierrquico de um ou mais domnios do Windows 2000 Server, os quais compartilham um espao de nome. Vamos entender um pouco mais o que significa a expresso compartilham um espao de nome. Primeiramente observe a Figura 6.7. Figura 6.7 Todos os domnios de uma rvore compartilham um espao de nomes em comum. Observe que, no diagrama anterior, temos uma rvore com sete domnios. Mas o que significa mesmo compartilhar um espao de nome? Observe que o domnio inicial microsoft.com. Os domnios seguintes so: vendas.microsoft.com e suporte.microsoft.com. Quando formamos uma hierarquia de Domnios, compartilhar um espao de nomes significa que o nome do objeto filho contm o nome do objeto pai. Por exemplo, vendas.microsoft.com contm microsoft.com. Descendo mais ainda na hierarquia, vemos que isso continua verdadeiro. Por exemplo, o objeto filho sistemas.vendas.microsoft.com contm o nome do objeto pai, vendas.microsoft.com. Com isso dizemos que uma rvore de domnios deste tipo forma um espao de nomes contnuo, onde o nome do objeto filho sempre contm o nome do objeto pai. Voc pode ainda dividir um domnio em Unidades Organizacionais. Uma unidade organizacional um container, o qual podemos utilizar para organizar os objetos de um determinado domnio em um agrupamento lgico para efeitos de administrao. Isso resolve uma srie de problemas de verses anteriores do Windows. No Windows NT Server 4.0, se um usurio fosse adicionado ao grupo Administradores (grupo com poderes totais sobre qualquer recurso, em qualquer servidor do domnio), ele poderia tomar qualquer ao em qualquer servidor do domnio. Com a utilizao de unidades proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000299 organizacionais, podemos atribuir poderes administrativos apenas na unidade organizacional, sem que com isso o usurio tenha poderes sobre todo o domnio. Cada domnio pode implementar a sua hierarquia de unidades organizacionais, independentemente dos demais domnios, isto , os diversos domnios que formam uma determinada rvore de domnios no precisam ter a mesma estrutura hierrquica de unidades organizacionais. No exemplo da Figura 6.7, exibida anteriormente, o domnio vendas.microsoft.com poderia ter uma estrutura hierrquica de unidades organizacionais, projetada para atender as necessidades do domnio vendas. Essa estrutura poderia ser completamente diferente da estrutura do domnio suporte.microsoft.com, a qual ser projetada para atender as necessidades do Domnio suporte. Com isso ficamos com uma flexibilidade bastante grande, de tal forma que a nossa rvore de domnios e a organizao dentro de cada domnio, em uma hierarquia de unidades organizacionais, possa atender perfeitamente s necessidades da empresa. A utilizao de unidades organizacionais no obrigatria. Utilize unidades organizacionais quando: Voc quiser representar a estrutura e organizao da sua companhia em um domnio. Sem a utilizao de unidades organizacionais, todas as contas de usurios so mantidas e exibidas em uma nica lista, independente da localizao, departamento ou funo do usurio. For necessrio delegar tarefas administrativas sem que para isso tenhamos que dar poderes sobre todo o domnio. Com o uso de unidades organizacionais, voc pode dar permisses para um usurio somente na unidade organizacional. Facilitar e melhor acomodar alteraes na estrutura da sua companhia. Por exemplo, muito mais fcil mover contas de usurios entre unidades organizacionais do que entre domnios. Os conceitos de domnio e controladores de domnio, bem como do Active Directory, so muito importantes para o Windows 2000 Server e tambm para o Windows Server 2003. CONTAS DE USURIOS Quando trabalhamos com uma rede de computadores, segurana um dos itens de maior importncia. O administrador da rede deve ser capaz de permitir que cada usurio somente tenha acesso aos recursos sejam eles arquivos, impressoras ou servios os quais sejam necessrios para a realizao do seu trabalho. Por exemplo, um usurio que trabalha no departamento de bagagem no deve ser capaz de acessar informaes sobre salrios contidas nos arquivos de um servidor SQL Server 2005, do departamento de Recursos Humanos. No Windows 2000 Server e tambm no Windows Server 2003, podemos limitar os recursos aos quais cada usurio tem acesso, atravs do uso de permisses. As permisses de acesso podem ser atribudas para um usurio individualmente, ou para um grupo de usurios. Para que possamos atribuir permisses, cada usurio deve ser cadastrado no sistema. Cadastrar o usurio significa criar uma Conta de Usurio para cada usurio. Com uma conta, o usurio pode efetuar o logon e receber permisses para acessar os mais variados recursos disponibilizados na rede. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3000000Curso Completo N O T A Uma conta pode ser criada em um controlador de domnio situao em que a conta vlida e reconhecida em todo o domnio; ou a conta pode ser criada em um servidor membro situao em que a conta somente vlida e reconhecida no servidor membro onde ela foi criada. Contas criadas em um controlador de domnio so chamadas de Domain User Accounts (Contas de Usurios do Domnio). Essas contas permitem que o usurio faa o logon em qualquer computador do domnio e receba permisses para acessar recursos em qualquer computador do domnio. No decorrer desta item, trabalharemos e criaremos contas em um domnio chamado GROZA, com um domnio DNS chamado groza.com. Para criar contas em servidores membro, o procedimento bastante semelhante, apenas a quantidade de campos de informao de cada conta um pouco menor. Contas criadas em um servidor membro so chamadas de Local User Accounts (Contas de Usurios Locais). Essas contas somente permitem que o usurio faa o logon e receba permisses para acessar recursos do computador onde a conta foi criada. Sempre que possvel evite criar contas locais em servidores que fazem parte de um domnio. Utilizar as contas do domnio, as quais ficam armazenadas no Active Directory, torna a administrao bem mais fcil. Outro detalhe que voc deve observar a utilizao de um padro para o nome das contas de usurios. Isto vlido para contas do domnio como tambm para contas do SQL Server 2005, caso voc esteja utilizando o modo de segurana SQL Server and Windows Authentication mode. Voc deve estabelecer um padro para a criao de nomes, pois no podemos ter dois usurios com o mesmo nome de logon dentro da mesma unidade organizacional. Por exemplo se tivermos na mesma unidade organizacional dois Jos da Silva e os dois resolverem utilizar como logon jsilva, no ser possvel. Para isso importante que seja definido um padro e no caso de nomes iguais deve ser definida uma maneira de diferenci-los. Por exemplo, poderamos usar como padro a primeira letra do nome e o ltimo sobrenome. No caso de nomes iguais, acrescentam-se nmeros. No nosso exemplo o primeiro Jos da Silva cadastrado ficaria como jsilva, j o segundo a ser cadastrado ficaria como jsilva1. Caso no futuro tivssemos mais um Jos da Silva dentro da mesma unidade organizacional, este seria o jsilva2 e assim por diante. Quando formos criar nomes de logon para os usurios, devemos levar em considerao os seguintes fatos: Nomes de usurios do domnio devem ser nicos dentro do domnio. Podem ter no mximo 20 caracteres. Os seguintes caracteres no podem ser utilizados como parte do nome: / \: ; [ ] | = , + * ? < > Sempre que voc for cadastrar um usurio tambm deve ser cadastrada uma senha para o usurio. O nmero mximo de caracteres da senha 128, sendo recomendado usar senhas de, no mnimo, 8 caracteres. Para as senhas, o Windows 2000 Server distingue letras maisculas de minsculas. Por exemplo a senha Abc123 diferente da senha abc123. Vamos praticar um pouco. Vamos criar algumas contas de usurios. Vamos utilizar estas contas para atribuir permisses de acesso no SQL Server 2005, mais adiante, neste captulo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000301 N O T A Exemplo prtico: Criar as seguintes contas de usurios com as respectivas senhas: Para criar a conta para o usurio user1, siga os passos indicados a seguir: 1. Efetue o logon com uma conta com permisso de administrador. 2. Abra o console Usurios e Computadores do Active Directory (Iniciar -> Programas -> Ferramentas administrativas -> Usurios e Computadores do Active Directory). Ser inicializado o console para Gerenciamento do Active Directory. 3. D um clique no sinal de ao lado de groza.com (provavelmente o nome do seu domnio seja diferente, d um clique no sinal de ao lado do nome do seu domnio). Abaixo de groza.com surgem diversas opes. Se voc no tiver acesso a um servidor com o Active Directory, voc pode criar contas locais. Para isso use o console Gerenciamento do Computador, o qual acessado atravs da opo Ferramentas Administrativas, do Painel de controle. 4. D um clique na opo Users (ou usurios se o snap-in j estiver traduzido para o portugus). No painel da direita exibida uma listagem com o nome de todos os usurios j cadastrados, conforme indicado na Figura 6.8. Nome da conta Senha Nome completo user1 senha123 Usurio1 da Silva user2 senha123 Usurio2 da Silva user3 senha123 Usurio3 da Silva user4 senha123 Usurio4 da Silva user5 senha123 Usurio5 da Silva Tabela 6.1 Contas de usurios do domnio GROZA. Figura 6.8 Listagem com todos os usurios j cadastrados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3020000Curso Completo N O T A 5. D um clique com o boto direito do mouse, na opo Users. 6. No menu que surge, aponte para a opo Novo -> Usurio (New User). 7. Surge um assistente para ajud-lo a criar um novo usurio. Digite as informaes para criar o usurio user1, conforme indicado na Figura 6.9. Figura 6.9 Criando o usurio User1. Nome de logon do usurio o nome que o usurio utiliza para efetuar o logon em computadores com o Windows 2000 Server, Windows XP ou Windows Server 2003. J Nome de logon do usurio (anterior ao Windows 2000) o nome que o usurio utiliza para efetuar o logon em computadores com verses mais antigas do Windows NT, tais como o Windows NT Server 4.0 ou Windows 98. Por simplicidade estes dois nomes devem ser iguais; observe que medida que voc digitar o primeiro, o segundo ser automaticamente preenchido. medida que voc for digitando o Nome, Iniciais e Sobrenome, o Windows vai preenchendo o campo Nome completo. Caso voc queira possvel alterar o Nome completo, sem que isso provoque mudana nos demais campos. 8. D um clique no boto Avanar, seguindo para a prxima etapa. 9. Na prxima tela voc deve digitar a senha do usurio duas vezes, para confirmao. Digite senha123 nos campos Senha e Confirmar senha. Observe que, medida que voc digita a senha, o Windows exibe apenas asteriscos (*) nos campos Senha e Confirmar senha. Outras opes que podem ser configuradas nesta tela: O usurio deve alterar a senha no prximo logon: Se esta opo estiver marcada, na primeira vez que o usurio fizer o logon ser solicitado que o usurio altere a sua senha. Esta opo utilizada para que o usurio possa colocar uma senha que somente ele conhece, pois, quando o usurio cadastrado, a senha digitada pelo administrador, o qual fica sabendo a senha do proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000303 N O T A usurio. No prximo logon o usurio altera a senha de tal maneira que somente ele saiba qual a senha para a sua conta. O usurio no pode alterar a senha: Se esta opo estiver marcada, a senha somente poder ser alterada pelo administrador. Normalmente utilizada para empregados temporrios e para estagirios. A senha nunca expira: Independente das polticas de segurana do domnio, se esta opo estiver marcada, o usurio nunca precisar trocar a sua senha. Caso contrrio, de tempos em tempos (conforme configurado nas polticas de segurana do domnio), o usurio deve troc-la. A conta est desativada: O administrador marca esta opo para bloquear a conta de um usurio. Usurios com a conta bloqueada no podem mais efetuar logon e, conseqentemente, no podem mais acessar nenhum recurso. Esta opo normalmente utilizada para desativar, temporariamente, a conta de empregados que esto em frias. Quando o empregado retorna ao servio, o administrador libera a sua conta, simplesmente desmarcando esta opo. 10. Certifique-se de que as quatro opes acima descritas estejam desmarcadas e d um clique no boto Avanar. Surge uma tela informando que um novo objeto ser criado. Lembre-se que todos os elementos do Active Directory so chamados de objetos, conforme descrito anteriormente. 11. D um clique no boto Concluir. Aps isso, o usurio Usurio1 da Silva j aparece na listagem de usurios. 12. Repita os passos anteriores para criar as contas dos demais usurios indicados na Tabela 6.1. 13. Feche o console Usurios e Computadores do Active Directory. Para testar se as contas foram criadas com sucesso, voc pode fazer o logoff e fazer o logon utilizando uma das contas recm-criadas. Por padro, para fazer o logon diretamente no servidor, a conta do usurio deve possuir o seguinte direito Log on locally. Se voc no tiver conseguindo fazer o logon com as contas recm-criadas, entre em contato com o administrador da rede para que ele d este direito s contas recm-criadas. Se voc mesmo for o administrador da rede, melhor ainda. GRUPOS DE USURIOS E TIPOS DE GRUPOS EXISTENTES NO WINDOWS 2000 SERVER E NO WINDOWS SERVER 2003 Agora vamos falar um pouco de teoria sobre grupos de usurios. Em seguida vamos praticar, criando alguns grupos e adicionando alguns membros aos grupos criados. Um grupo de usurios uma coleo de contas de usurios. Por exemplo, podemos criar um grupo chamado Contabilidade, do qual faro parte todos os usurios do departamento de Contabilidade. A principal funo dos grupos de usurios facilitar a administrao e a atribuio de permisses para acesso a recursos, tais como: pastas compartilhadas, impressoras remotas, servios diversos, etc. Ao proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3040000Curso Completo invs de darmos permisses individualmente, para cada um dos usurios que necessitam acessar um determinado recurso, podemos criar um grupo e atribuir permisses para o grupo. Para que um usurio tenha permisso ao recurso, basta inclu-lo no grupo que tem permisso de acesso ao recurso, pois todos os usurios de um determinado grupo herdam as permisses dos grupos aos quais pertence. Quando um usurio troca de seo, por exemplo, basta trocar o usurio de grupo. Vamos supor que o usurio jsilva trabalha na seo de contabilidade e pertence ao grupo Contabilidade. Ao ser transferido para a seo de marketing, basta movermos o usurio do grupo Contabilidade para o grupo Marketing. Com isso, ele deixa de ter as permisses atribudas ao grupo Contabilidade e passa a ter as mesmas permisses que tem o grupo Marketing. Veja o quanto a utilizao de grupos pode facilitar a atribuio e o gerenciamento de permisses. Podemos inclusive ter situaes mais especficas. Vamos supor que exista um sistema chamado SEAT, para o qual somente um nmero restrito de usurios deve ter acesso, sendo que so usurios de diferentes sees. A maneira mais simples de gerenciar esta questo criar um grupo chamado SEAT e dar permisses para esse grupo. Assim cada usurio que precisar acessar o sistema SEAT deve ser includo no grupo SEAT. Quando o usurio no deva mais ter acesso ao sistema SEAT, basta remov-lo do grupo SEAT. Na Figura 6.10 vemos uma ilustrao para o conceito de grupo de usurios. O grupo Contabilidade possui direito para um recurso compartilhado, o qual pode ser acessado atravs da rede. Todos os usurios que pertencem ao grupo Contabilidade tambm possuem permisso para o recurso compartilhado, uma vez que os usurios de um grupo herdam as permisses do grupo. Figura 6.10 O usurio herda as permisses do grupo. Quando estiver trabalhando com grupos de usurios, considere o seguinte: Grupo de usurios uma coleo de contas de usurios. Os membros de um grupo herdam as permisses atribudas ao grupo. Os usurios podem ser membros de vrios grupos. Grupos podem ser membros de outros grupos. Agora vamos dar uma olhada nos tipos de grupos existentes no Windows 2000 Server e tambm no Windows Server 2003. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000305 Podemos ter dois tipos de grupos: Grupos de segurana (Security groups) e Grupos de distribuio (Distribution groups). Grupos de segurana: Utilizados para atribuir permisses de acesso a recursos da rede. Um grupo de segurana tambm pode ser utilizado como um grupo de distribuio, embora essa no seja uma situao muito comum. Esses grupos, assim como as contas de usurios, so armazenados no Banco de Dados do Active Directory. Grupos de distribuio: So utilizados para funes no relacionadas com segurana. Uma das utilizaes tpicas para um grupo de distribuio o envio de mensagens de e-mail para um grupo de usurios de uma s vez. Somente aplicativos que foram programados para trabalhar com o Active Directory podero utilizar grupos de distribuio. Provavelmente, as novas verses dos principais sistemas de correio eletrnico estaro habilitadas para trabalhar com o Active Directory. No podemos utilizar grupos de distribuio para funes relacionadas com segurana. Escopo de grupos de usurios: Quando criamos um grupo de usurios, devemos selecionar um tipo e um escopo. O escopo permite que o grupo seja utilizado em diferentes locais, para a atribuio de permisses. O escopo de um grupo determina em que partes da rede poderemos usar o grupo para atribuir permisses para o grupo, permisses estas que sero herdadas por todos os membros do grupo. Existem trs escopos para grupos de usurios, conforme descrito a seguir: Grupos globais (Global group): Somente pode conter membros do domnio no qual o grupo criado. Pode receber permisses para recursos localizados em qualquer domnio. Grupos locais do domnio (Domain local group): Pode conter membros de qualquer domnio. Somente pode receber permisses para recursos do domnio no qual o grupo criado. Grupos universais (Universal group): Pode conter membros de qualquer domnio. Pode receber permisses para recursos localizados em qualquer domnio. O escopo de um grupo tambm determina quem pode ser membro do grupo. Tanto usurios como outros grupos podem ser membros de um determinado grupo. Considere as regras a seguir: Grupo global: Pode conter: Contas de usurios e grupos globais do mesmo domnio. Pode ser membro de: Grupos universais e grupos locais do domnio em qualquer domnio ou grupos globais no mesmo domnio. Grupo local do domnio: Pode conter: Contas de usurios, grupos universais e grupos globais de qualquer domnio ou grupos locais do domnio do mesmo domnio. Pode ser membro de: Grupos locais no domnio do mesmo domnio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3060000Curso Completo N O T A Grupo universal: Pode conter: Contas de usurios, grupos universais e grupos globais de qualquer domnio. Pode ser membro de: Grupos locais do domnio ou grupos universais de qualquer domnio. Vamos aprender a criar grupos. Vamos criar os grupos indicados na Tabela 6.2. Nome da conta Membros do grupo Grupo1 user1, user2 e user3 Grupo2 user3, user4 e user5 Tabela 6.2 Grupos de Usurios. Exemplo prtico: Para criar os grupos Grupo1 e Grupo2, indicados na Tabela 6.2, faa o seguinte: 1. Efetue o logon como administrador ou com uma conta com permisso de administrador. 2. Abra o console Usurios e Computadores do Active Directory (Iniciar -> Programas -> Ferramentas administrativas -> Usurios e Computadores do Active Directory). Ser inicializado o console para Usurios e Computadores do Active Directory. 3. D um clique no sinal de + ao lado de groza.com (provavelmente o nome do seu domnio seja diferente; d um clique no sinal de + ao lado do nome do seu domnio). Abaixo de groza.com surgem diversas opes. 4. D um clique na opo Users (ou Usurios se o snap-in j estiver traduzido para o portugus). No painel da direita exibida uma listagem com o nome de todos os usurios e grupos do domnio groza.com. Na prtica, a opo Users nada mais do que uma unidade organizacional, a qual pode conter contas de usurios e de grupos de usurios. 5. D um clique com o boto direito do mouse, na opo Users. 6. No menu que surge, aponte para a opo Novo -> Grupo (New > Group). 7. Surge um assistente para ajud-lo a criar um novo grupo. Digite as informaes para criar o grupo Grupo1, conforme indicado na Figura 6.11. 8. D um clique no boto OK para criar o grupo. Voc estar de volta ao console Usurios e Computadores do Active Directory. Observe no painel da esquerda que j aparece o grupo chamado Grupo1. Neste momento o grupo est criado, porm no temos nenhum usurio pertencente ao grupo. No prximo exemplo, aprenderemos a adicionar usurios ao grupo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000307 Figura 6.11 Criando o grupo Grupo1. 9. Repita os passos de 5 a 8 para criar o grupo Grupo2. 10. Mantenha o console Usurios e Computadores do Active Directory aberto. Agora temos que adicionar os usurios user1, user2 e user3 ao grupo Grupo1 e os usurios user3, user4 e user5 ao grupo Grupo2. Observe que o usurio user3 pertence aos dois grupos. Exemplo prtico: Para adicionar os usurios aos respectivos grupos, conforme indicado na Tabela 6.2, siga os passos indicados a seguir: 1. Voc deve estar com o console Usurios e Computadores do Active Directory aberto. Se no estiver, abra-o e navegue at a opo Users. 2. No painel da direita, localize Grupo1 e d um clique duplo para abrir as propriedades do grupo. Surge a janela indicada na Figura 6.12, onde a guia Geral vem selecionada por padro. Preencha os campos Descrio e Comentrios, conforme indicado na figura. 3. D um clique na guia Membros. Vamos utilizar esta guia para adicionar os usurios user1, user2 e user3 como membros de Grupo1. Observe que a guia Membros ainda no possui nenhum usurio adicionado. 4. Para adicionar usurios ao grupo, d um clique no boto Adicionar. Surge a janela Selecione Usurios, Contatos ou Computadores, conforme indicado na Figura 6.13. Nesta janela exibida uma listagem com todos os usurios cadastrados no domnio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3080000Curso Completo Figura 6.12 Alterando as propriedades do Grupo1. Figura 6.13 Lista de usurios, contatos e computadores do domnio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000309 5. Para adicionar o usurio user1 (Usurio1 da Silva) localize-o na listagem, d um clique sobre ele para marc-lo e depois d um clique no boto Adicionar. Voc tambm pode dar um clique duplo sobre o nome do usurio, pois este ser adicionado diretamente. 6. Repita a operao do passo anterior, para os usurios user2 (Usurio2 da Silva) e user3 (Usurio3 da Silva). 7. D um clique no boto OK para fechar essa janela e voltar guia Membros. 8. Sua janela deve estar conforme indicado na Figura 6.14, a qual indica que os usurios Usurio1 da Silva (user1), Usurio2 da Silva (user2) e Usurio3 da Silva (user3) foram adicionados como membros do grupo Grupo1. Figura 6.14 Trs usurios adicionados como membros do grupo Grupo1. 9. D um clique em OK para fechar a janela de propriedades do grupo Grupo1. 10. Repita as operaes anteriores para adicionar os usurios user3, user4 e user5 ao grupo Grupo2. 11. Feche o console Usurios e Computadores do Active Directory. A partir deste momento, qualquer permisso que for atribuda ao grupo Grupo1 ser herdada por todos os membros deste grupo. No nosso exemplo, pelos usurios user1, user2 e user3. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3100000Curso Completo N O T A Existem algumas contas de usurio que so criadas no momento em que o Windows instalado. Essas contas so conhecidas como Built-in Accounts. A mais importante delas a conta Administrador (Administrator na verso em ingls). Essa conta tem poderes totais sobre o domnio, no tendo nenhuma restrio de segurana. Muito cuidado com quem vai usar essa conta em um ambiente de produo. Precisa ser uma pessoa qualificada e que sabe o que est fazendo. A conta Administrador pode ser renomeada, porm no pode ser excluda nem bloqueada. Outra conta que criada quando da instalao do Windows 2000 Server a conta de usurio Convidado (Guest). Esta conta, normalmente, utilizada para acesso de usurios que no possuem uma conta cadastrada no domnio. Por padro esta conta est desabilitada. O administrador pode habilitar a conta Convidado. Porm isso deve ser feito com cuidado. Sempre que um usurio precise acessar algum recurso, o ideal cadastrar o usurio e incluir o usurio no grupo (ou grupos), que tem permisso para acessar os recursos necessrios. Existem tambm alguns grupos criados durante a instalao do Windows, so os chamados Built-in Groups. O mais importante de todos o grupo Administradores. Todo membro deste grupo tem plenos poderes no domnio. No console Usurios e Computadores do Active Directory (Iniciar -> Programas -> Ferramentas administrativas -> Usurios e Computadores do Active Directory), existe uma opo chamada Built-in. Ao clicar nessa opo ser exibida uma listagem com diversos grupos criados durante a instalao do Windows. Observe na coluna tipo que o tipo destes grupos Grupo de segurana local interno e na coluna descrio podemos ver um resumo das permisses de cada um dos grupos. Exerccio: Com os conhecimentos apresentados neste item, crie os usurios e grupos indicados na Tabelas 6.3 e 6.4, respectivamente. Utilizaremos estes usurios e grupos nos demais itens deste captulo. Nome da conta Senha Nome completo user6 senha123 User6 da Silva user7 senha123 User7 da Silva user8 senha123 User8 da Silva jose senha123 Jos da Silva maria senha123 Maria da Silva pedro senha123 Pedro da Silva paulo senha123 Paulo da Silva jovina senha123 Jovina da Silva Tabela 6.3 Criando mais contas de usurios no domnio groza.com. Nome do grupo Membros do grupo Consulta user3, user6, jose, maria Alterao user3, user7, pedro e paulo Dbas paulo, user8 e jovina Excluso user3, jose Tabela 6.4 Criando mais grupos de usurios no domnio groza.com. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000311 Com isso tivemos uma noo geral sobre usurios e grupos no Windows. Agora podemos fechar o nosso parnteses sobre segurana no Windows 2000 Server e Windows Server 2003 e voltar segurana no SQL Server 2005. KNOW-HOW EM: CRIAO E GERENCIAMENTO DE LOGIN E ROLES NO SQL SERVER 2005 PR-REQUISITOS Fundamentos apresentados na Parte I. Noes bsicas sobre o modelo de segurana do SQL Server 2005. Noes bsicas sobre o modelo de segurana do Windows 2000 Server e Windows Server 2003. Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL. METODOLOGIA Apresentao dos comandos necessrios para a criao e gerenciamento de logins e roles. TCNICA Criao de logins e roles nos Bancos de Dados criados nos captulos anteriores, utilizando o SQL Server Management Studio e a janela de execuo de comandos T-SQL. A partir de agora aprenderemos a adicionar logins e roles em instncias do SQL Server 2005. No me canso de repetir e salientar: role apenas um novo nome que inventaram para grupos de usurios. Uma role um grupo de usurios no SQL Server 2005. Vamos fazer uma rpida apresentao do servidor e das configuraes que vou utilizar para os exemplos deste tpico e do restante do captulo. Estou trabalhando em um servidor com o Windows 2000 Server instalado. Este servidor no tem o Active Directory instalado. O nome deste servidor SERVIDOR. Nele temos duas instncias do SQL Server 2005 instaladas, que so as seguintes: SERVIDOR\SQL2005 SERVIDOR\CURSOSJB Utilizando as instrues do incio do captulo, certifique-se de que as instncias esto utilizando os modos de segurana indicados na Tabela 6.5. Instncia Modo de segurana SERVIDOR\SQL2005 Windows Authentication mode SERVIDOR\CURSOSJB SQL Server and Windows Authentication mode Tabela 6.5 Cada instncia em um modo de segurana diferente. Na instncia SERVIDOR\SQL2005 somente poderemos adicionar logins do Windows, pois esta instncia est no modo de segurana Windows Authentication mode. J na instncia SERVIDOR\CURSOSJB, poderemos adicionar logins do Windows e tambm do SQL Server 2005, pois estamos no modo de segurana SQL Server and Windows Authentication mode. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3120000Curso Completo N O T A Utilizarei os termos logins e users com significados diferentes. Adicionar um login significa dar permisso a um usurio para que o usurio faa a conexo com o Servidor SQL Server 2005. Adicionar um user significa pegar um dos usurios com permisso de conexo (isto , um dos logins) ao Servidor SQL Server e dar permisso de acesso a um schema ou a um Banco de Dados. Ento resumidamente: um login d permisso de conexo com o servidor SQL Server 2005, e user d permisso de acesso a um ou mais Bancos de Dados. Na prtica estes so os termos utilizados pelo SQL Server 2005. No SQL Server Management Studio, nas opes de cada instncia, temos uma opo Security. Dentro da opo Security temos uma opo Logins, que onde iremos adicionar os usurios com permisso de login. J dentro de cada Banco de Dados temos uma opo Security -> Users, que onde adicionaremos os usurios com permisso de acesso ao Banco de Dados. Na Figura 6.15 podemos ver estas duas opes. Figura 6.15 Logins para a instncia, users para o Banco de Dados. Seguindo a nossa metodologia, vamos aprender a adicionar usurios utilizando SQL Server Manage- ment Studio e comandos T-SQL. Parece um trabalho enorme, mas veremos que extremamente simples. Juro que este exemplo d mais trabalho para elaborar do que para executar. CRIANDO LOGINS COM O SQL SERVER MANAGEMENT STUDIO Vamos aprender a criar logins utilizando o SQL Server Management Studio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000313 Utilizaremos o SQL Server Management Studio para adicionar os logins da Tabela 6.6. Adicionaremos estes logins instncia SERVIDOR\SQL2005, a qual est no modo Windows Authentication mode. Neste exemplo, as contas user1, user2, user3, user4, user5, grupo1 e o grupo grupo2 j devem existir no Windows. Caso estas contas no existam, voc dever cri-las, previamente. Isso vlido tanto para contas de um domnio baseado no Active Directory, quanto para contas locais, criadas em um servidor que no faz parte de um domnio, ou que faz parte de um domnio mas no um DC. Exemplo prtico: Para adicionar os logins da Tabela 6.6, faa o seguinte: 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o (Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Server Management Studio). 2. Na janela Object Explorer, d um clique no sinal de + ao lado da instncia SERVIDOR\SQL2005 para expandi-la. 3. Nas opes que surgem abaixo desta instncia, clique no sinal de + ao lado da opo Security, para expandi-la. Abaixo de Security existe uma opo Logins, a qual utilizaremos para adicionar logins instncia SERVIDOR\SQL2005. Neste caso, como a instncia SERVIDOR\SQL2005 est no modo de segurana Windows Authentication mode, somente poderemos adicionar como logins desta instncia contas de usurios ou grupos do Windows, quer sejam contas do Active Directory (se voc tiver uma rede baseada no Active Directory, com um domnio criado), quer sejam contas locais. Adicionaremos as contas indicadas na Tabela 6.6. 4. Clique no sinal de + ao lado da opo Logins. Observa que, por padro, j so adicionados alguns logins. A conta sa, que a conta de administrador do prprio SQL Server 2005, a conta administrador do domnio ou Administrador local (para computadores que no fazem parte do domnio), o grupo Administradores e assim por diante. 5. D um clique com o boto direito do mouse na opo Logins. No menu de opes que surge, d um clique na opo New Login. Surge a janela para adio de um novo login, com a guia General selecionada, por padro. Observe que a opo Windows authentication j vem selecionada. Nome da conta Tipo J existe? ? user1 Windows Sim Usurio user2 Windows Sim Usurio user3 Windows Sim Usurio user4 Windows Sim Usurio user5 Windows Sim Usurio grupo1 Windows Sim grupo grupo2 Windows Sim grupo Tabela 6.6 Logins a serem adicionados a SERVIDOR\SQL2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3140000Curso Completo 6. No campo Login name, podemos digitar o nome do login. Quando estamos adicionando usurios ou grupos de um domnio, devemos utilizar a nomenclatura DOMINIO\nome_usurio. Por exemplo, para adicionar o usurio jsilva do domnio ABC, digite ABC\jsilva para adicionar o grupo Contabilidade, do domnio XYZ, digite XYZ\Contabilidade. Para adicionar usurios e grupos locais, para o caso de servidores que no faam parte de um domnio, voc usa uma nomenclatura semelhante. Neste caso voc usa: NOME_DO_SERVIDOR\Nome_do_usurio ou NOME_DO_SERVIDOR\Nome_do_grupo. Para este exemplo, estou utilizando as contas locais de um servidor cujo nome SERVIDOR. Por exemplo, a conta jsilva ser SERVIDOR\jsilva, o grupo grupo1 ser SERVIDOR\grupo1 e assim por diante. Voc tambm pode clicar no boto Search. para abrir uma janela que exibe a lista de usurios e grupos disponveis e selecionar os usurios e/ou grupos, clicando diretamente neles. 7. Para adicionar o usurio user1 do servidor chamado SERVIDOR, digite SERVIDOR\user1. Voc tambm pode utilizar o boto Search. para obter uma lista de usurios e grupos, conforme exemplo indicado na Figura 6.16. Figura 6.16 Lista de usurios e grupos do servidor. 8. Clique no boto Search. para exibir a listagem de usuros e grupos. Na listagem de usurios e grupos, localize o usurio user1 e d um clique duplo para adicion-lo parte de baixo da janela. D um clique no boto OK e voc estar de volta janela Login - New, com o campo Login Name j preenchido com SERVIDOT\user1, conforme indicado na Figura 6.17. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000315 N O T A Figura 6.17 Adicionando o usurio SERVIDOR\user1. Uma limitao que somente podemos adicionar um login por vez. No podemos selecionar diversos usurios ou grupos e adicionar todos de uma s vez. 9. Observe que podemos permitir o acesso ao servidor (Grant Server access) ou negar o acesso para o usurio e/ou grupo que est sendo adicionado (Deny Server access). Certifique-se de que a opo Grant server access esteja selecionada. Na lista Database (na parte de baixo da janela) podemos selecionar qual Banco de Dados ser, por padro, associado ao usurio que est recebendo permisso de login no SQL Server 2005: SERVIDOR\user1, quando o usurio conectar-se com a instncia SERVIDOR\SQL2005. O Banco de Dados padro aquele em que os comandos do usurio tero efeito, a menos que seja utilizado um comando USE nome_de_outro_banco_dados, para acessar outro Banco de Dados. A simples associao com um Banco de Dados padro no garante o direito de acesso aos objetos deste Banco de Dados para isso o login que est sendo adicionado ter que ser inserido na lista de usurios autorizados do Banco de Dados. Aprenderemos a fazer isso mais adiante, em um dos prximos itens. 10. No nosso exemplo, vamos associar todos os usurios com o Banco de Dados AdventureWorks. Na lista Database, selecione o Banco de Dados AdventureWorks. Na guia Server Roles, podemos fazer com que o login que est sendo adicionado pertena a uma ou mais roles predefinidas no servidor SQL Server 2005. Uma role tem funo semelhante funo de um proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3160000Curso Completo grupo de usurios do Windows e, no SQL Server 2005, pode conter um ou mais logins. As roles predefinidas possuem uma srie de permisses associadas a cada uma delas. Se adicionarmos um login a uma role, o login herdar as permisses e direitos da role. Por exemplo, se adicionarmos um login a role sysadmin, daremos poderes totais sobre todos os objetos de todos os Bancos de Dados da instncia, a este login. Isto porque a role sysadmin tem poderes totais e, ao ser adicionada a role, o login herda estes poderes. Na Tabela 6.7, descrevo as permisses associadas com as principais roles predefinidas no SQL Server 2005. Nome da role Permisses sysadmin Poderes totais sobre todos os objetos da instncia. securityadmin Pode gerenciar logins do servidor. serveradmin Pode configurar a maioria das opes do servidor. diskadmin Gerenciar os arquivos de um Banco de Dados. dbcreator Criar e alterar Bancos de Dados. Tabela 6.7 Permisses associadas com as principais roles predefinidas. 11. Como nosso usurio no precisa de permisses to avanadas, no iremos adicion-lo a nenhuma role predefinida. 12. Na guia Database Access, poderamos habilitar o acesso do login que est sendo adicionado, a um ou mais Bancos de Dados. No faremos isso agora. Na guia Permissions, poderamos definir permisses de acesso para o login que est sendo adicionado, a um ou mais objetos dos Bancos de Dados da instncia. Aprenderemos a fazer isso nos prximos itens. Vamos nos manter no foco deste exemplo, que mostrar como adicionar logins a uma instncia do SQL Server 2005. 13. D um clique no boto OK e pronto, o login SERVIDOR\user1 ser adicionado instncia SERVIDOR\SQL2005. Ser exibida uma mensagem informando que o login que est sendo adicionado SERVIDOR\user1 no possui permisso de acesso ao Banco de Dados definido como padro que o Banco de Dados AdventureWorks. Isso ocorre porque ainda no demos permisses de acesso para o login SERVIDOR\user1, aos objetos do Banco de Dados AdventureWorks. Aprenderemos a fazer isso nos prximos tpicos deste captulo. Clique em OK para fechar a mensagem com o aviso e adicionar o login assim mesmo. 14. Repita os passos que voc aprendeu neste exemplo, para adicionar os demais logins indicados na Tabela 6.6. Ao final, a sua janela dever estar conforme indicado na Figura 6.18. Conforme podemos constatar, adicionar logins a uma instncia do SQL Server 2005 uma tarefa bastante simples. Alis como simples a maioria das tarefas administrativas com o SQL Server 2005, desde que a teoria seja bem conhecida e entendida. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000317 Figura 6.18 Diversos logins j adicionados. CRIANDO LOGINS COM COMANDOS T-SQL Vamos aprender a criar logins utilizando comandos T-SQL, na janela de execuo de comandos do SQL Server Management Studio. Utilizaremos comandos T-SQL para adicionar os logins da Tabela 6.8. Adicionaremos estes logins instncia SERVIDOR\SQL2005, a qual est no modo de autenticao SQL Server and Windows Au- thentication mode (caso voc no lembre como alterar o modo de autenticao de uma instncia do SQL Server 2005, volte ao incio do captulo e revise o tpico sobre alterao do modo de autenticao. Depois, altere o modo de autenticao da instncia SERVIDOR\SQL2005, para SQL Server and Win- dows Authentication mode). Para senha dos usurios do prprio SQL Server, isto , usurios que no so de um domnio do Windows ou contas locais de um servidor Windows, utilizaremos a senha senha123 e como Banco de Dados padro o Banco de Dados AdventureWorks. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3180000Curso Completo Ao adicionarmos logins, temos que considerar os dois modos de segurana: Windows Authentication mode e SQL Server and Windows Authentication mode. No caso de estarmos adicionando permisso de login a um usurio ou grupo do Windows, utilizamos o comando sp_grantlogin. Com este comando garantimos a um usurio ou grupo j existente no Windows o direito de login no servidor SQL Server 2005. Para o modo de autenticao SQL Server and Windows Authentication mode, em que podemos criar novos logins no prprio SQL Server, utilizamos o comando sp_addlogin. Na Tabela 6.9 temos um resumo destes comandos. Nome da conta Tipo J existe? ? jose Windows Sim Usurio maria Windows Sim Usurio pedro Windows Sim Usurio paulo Windows Sim Usurio jovina Windows Sim Usurio grupo1 Windows Sim grupo grupo2 Windows Sim grupo sqluser1 SQL Server No Usurio sqluser2 SQL Server No Usurio Tabela 6.8 Logins a serem adicionados instncia SERVIDOR\SQL2005. Sintaxe para o comando sp_grantlogin: exec sp_grantlogin DOMNIO\nome ou exec sp_grantlogin [DOMNIO\nome] ou exec sp_grantlogin NOME_DO_SERVIDOR\nome Por exemplo, para adicionarmos o usurio chico, do domnio GROZA, utilizamos o seguinte comando: exec sp_grantlogin GROZA\chico Comando Utilizado sp_grantlogin Para adicionar logins do domnio do Windows 2000. Podemos adicionar usurios ou grupos. Utilizamos o formato DOMNIO\nome ou SERVIDOR\nome. sp_addlogin Para adicionar novos logins do SQL Server 2005, para o caso de estarmos utilizando o modo de segurana SQL Server and Windows Authentication mode. Tabela 6.9 Comandos para adicionar logins. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000319 ou exec sp_grantlogin [GROZA\chico] Algumas observaes sobre o comando sp_grantlogin: sp_grantlogin no pode ser executado como parte de uma transao definida pelo usurio ou por um aplicativo que o usurio est utilizando. Somente membros das roles System Administrators (sysadmin) e Security Administrators (securityadmin) tm permisso, por padro, para utilizar o comando sp_grantlogin. Para o nosso exemplo, descrito na Tabela 6.8, utilizaremos o comando sp_grantlogin para adicionar os usurios: jose, maria, pedro, paulo, jovina, grupo1 e grupo2. Podemos remover a permisso de login para um usurio ou grupo do Windows, utilizando o comando sp_revokelogin. Sintaxe para o comando sp_revokelogin: exec sp_revokelogin DOMNIO\nome ou exec sp_revokelogin [DOMNIO\nome] ou exec sp_revokelogin Nome_Do_Servidor\nome Por exemplo, para removermos a permisso de login do usurio chico, do domnio GROZA, utilizamos o seguinte comando: exec sp_revokelogin GROZA\chico ou exec sp_revokelogin [GROZA\chico] Algumas observaes sobre o comando sp_revokelogin: Ao removermos a permisso de login, o usurio no poder mais conectar-se com o servidor SQL, a menos que um dos grupos aos quais o usurio pertena tenha permisso de login. Lembre que o usurio sempre herda as permisses do grupo. Se o usurio pertencer a vrios grupos que possuem permisso de login e a um nico grupo que tem o login explicitamente negado, o usurio no poder conectar-se com o servidor SQL. Lembre que negar (deny) sempre tem precedncia sobre permitir. Somente membros das roles System Administrators (sysadmin) e Security Administrators (securityadmin) tm permisso, por padro, para utilizar o comando sp_revokelogin. Podemos negar, explicitamente, a permisso de login para um usurio ou grupo do Windows, utilizando o comando sp_denylogin. Neste caso, a conta do usurio ou grupo continua na lista de logins, porm com o direito de conexo com o servidor SQL, explicitamente negado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3200000Curso Completo Sintaxe para o comando sp_denylogin: exec sp_denylogin DOMNIO\nome ou exec sp_denylogin [DOMNIO\nome] ou exec sp_denylogin Nome_Do_Servidor\nome Por exemplo, para negarmos, explicitamente, a permisso de login do usurio chico, do domnio GROZA, utilizamos o seguinte comando: exec sp_denylogin GROZA\chico ou exec sp_denylogin [GROZA\chico] Algumas observaes sobre o comando sp_denylogin: sp_denylogin no pode ser executado como parte de uma transao definida pelo usurio ou por um aplicativo que o usurio est utilizando. Somente membros das roles System Administrators (sysadmin) e Security Administrators (securityadmin) tm permisso, por padro, para utilizar o comando sp_denylogin. Para permitir que o usurio volte a se conectar, removendo o efeito de sp_denylogin, podemos utilizar sp_grantlogin. Agora vamos tratar dos comandos para adicionar e remover logins do prprio SQL Server, os quais podem ser utilizados, quando a instncia do SQL Server 2005 estiver configurada para o modo de autenticao SQL Server and Windows Authentication mode. Para adicionar um login do SQL Server 2005, podemos utilizar o comando sp_addlogin. Sintaxe para o comando sp_addlogin, conforme descrito no Books OnLine: sp_addlogin [ @loginame = ] login [ , [ @passwd = ] password ] [ , [ @defdb = ] database ] [ , [ @deflanguage = ] language ] [ , [ @sid = ] sid ] [ , [ @encryptopt = ] encryption_option ] Observe que podemos definir uma srie de opes, tais como a senha (passwd), o Banco de Dados associado com o login (defdb), a linguagem associada com o login (deflanguage), um identificador de segurana nico (sid) e a definio se a senha deve ou no ser criptografada ao ser armazenada no servidor SQL Server (encryptopt). Normalmente no especificamos o parmetro sid, e com isso o identificador nico de segurana ser gerado pelo prprio SQL Server 2005, no momento da criao do login. O sid um nmero do tipo varbinary(16). Os valores possveis para o parmetro encryptopt esto descritos na Tabela 6.10. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000321 N O T A Por exemplo, para adicionarmos o usurio flavio1, com senha em branco e associado ao Banco de Dados master, que o Banco de Dados padro, quando nenhum outro for definido, utilizamos o seguinte comando: exec sp_addlogin flavio1 Ao executar o comando anterior, voc receber uma mensagem de erro, informando que a senha no atende os requisitos de complexidade. Aqui temos uma demonstrao de como o SQL Server 2005 foi projetado, tendo a segurana como uma das principais diretivas. Por padro, no possvel adicionar um login com senha em branco (o que era possvel nas verses anteriores do SQL Server, inclusive para a conta sa, a qual podia ter uma senha em branco). Como no usei a opo @passwd, a senha definida como em branco, o que no aceito pelas polticas padro de segurana do SQL Server 2005. Agora vamos adicionar um usurio chamado luciano, com uma senha nene e associado ao Banco de Dados Clientes: exec sp_addlogin luciano, nene, Clientes Algumas observaes sobre o comando sp_addlogin: sp_addlogin no pode ser executado como parte de uma transao definida pelo usurio ou por um aplicativo que o usurio est utilizando. Somente membros das roles System Administrators (sysadmin) e Security Administrators (securityadmin) tm permisso, por padro, para utilizar o comando sp_addlogin. Para o nosso exemplo, descrito na Tabela 6.8, utilizaremos o comando sp_addlogin, para adicionar os usurios: sqluser1 e sqluser2. Para excluirmos um login do SQL Server, podemos utilizar o comando sp_droplogin. Sintaxe para o comando sp_droplogin.: exec sp_droplogin. nome Por exemplo, para excluirmos o usurio luciano, podemos utilizar o seguinte comando: exec sp_droplogin. luciano Valor Descrio NULL A senha ser criptografada. Este o valor padro. skip_encryption A senha j est criptografada. O valor ser gravado sem a necessidade de criptograf-lo novamente. skip_encryption_old A senha deve ser criptografada de acordo com verses anteriores do SQL Server. O valor ser gravado sem criptograf-lo novamente. Esta opo normalmente utilizada durante a fase de migrao de verses anteriores. Tabela 6.10 Valores do parmetro encryptopt. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3220000Curso Completo Algumas observaes sobre o comando sp_droplogin.: Somente membros das roles System Administrators (sysadmin) e Security Administrators (securityadmin) tm permisso, por padro, para utilizar o comando sp_droplogin. Caso o login que est sendo excludo esteja adicionado como usurio de algum Banco de Dados, o login no poder ser excludo. Primeiro precisamos remover o login da lista de usurios, utilizando o comando sp_drpouser, o qual aprenderemos a utilizar mais adiante. Os seguintes logins no podero ser excludos: 1. O login de administrao sa. 2. Um login que esteja atualmente conectado com o servidor SQL Server. O comando sp_droplogin dever checar todos os Bancos de Dados para verificar se o login que est sendo excludo no est adicionado lista de usurios com permisso de acesso ao Banco de Dados. Por isso, para que este comando possa ser executado com sucesso, as seguintes condies devem ser atendidas: 1. O usurio logado, que est executando sp_droplogin, deve ter permisso de acesso aos Bancos de Dados; ou; 2. A conta guest deve estar habilitada a acessar o Banco de Dados. Ao criarmos novos logins no SQL Server, devemos levar os seguintes fatos em considerao: 1. Um login no pode conter o caractere de barra invertida \ como parte do nome. No confundir com a barra invertida utilizada para separar o nome do domnio do nome do usurio. 2. Logins e senhas podem conter at 128 caracteres, incluindo letras, smbolos e dgitos. 3. No podemos adicionar um login com o mesmo nome de um login reservado, como por exemplo sa ou public. 4. O nome de login no pode conter o valor NULL ou ser uma string vazia . Agora que j aprendemos os diversos comandos envolvidos com logins, podemos criar os logins indicados na Tabela 6.8. Lembrando que estes logins sero criados na instncia SERVIDOR\SQL2005. Exemplo prtico: Para criar os logins indicados na Tabela 6.8, siga os passos indicados a seguir (no exemplo a seguir, criarei os logins na instncia SERVIDOR\SQL2005. Substitua este nome pelo nome da instncia que voc estiver utilizando, para acompanhar este exemplo): 1. Se voc no estiver com o SQL Server Management Studio, abra-o. 2. Na janela Object Explorer, localize a instncia SERVIDOR\SQL2005 e d um clique no sinal de +, ao lado da instncia, para exibir as opes disponveis. 3. Clique com o boto direito do mouse na instncia SERVIDOR\SQL2005 e, no menu de opes que exibido, clique em New Query. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000323 Ser aberta a janela para execuo de comandos T-SQL, a qual voc j utilizou diversas vezes neste livro. 4. Para criar os logins indicados na Tabela 6.8, digite os seguintes comandos: Utilizo sp_grantlogin para adicionar usurios do Windows exec sp_grantlogin SERVIDOR\jose exec sp_grantlogin SERVIDOR \maria exec sp_grantlogin SERVIDOR \pedro exec sp_grantlogin SERVIDOR \paulo exec sp_grantlogin SERVIDOR \jovina exec sp_grantlogin SERVIDOR \grupo1 exec sp_grantlogin SERVIDOR \grupo2 Agora utilizo sp_addlogin para adicionar logins do SQL Server 2005 exec sp_addlogin sqluser1, senha123, AdventureWorks exec sp_addlogin sqluser2, senha123, AdventureWorks 5. Pressione Ctrl+E para executar o comando. 6. O comando executado com sucesso e a seguinte mensagem exibida: Command(s) completed successfully. 7. Agora vamos alterar o Banco de Dados padro para os usurios do Windows. Lembrando que, como no foi definido o Banco de Dados padro, utilizado como padro o Banco de Dados master. Para alter-lo, utilizamos o comando sp_defautldb, com a seguinte sintaxe: exec sp_defaultdb usurio, Banco de Dados 8. Para alterar o Banco de Dados padro para os usurios do Windows, utilize os seguintes comandos: exec sp_defaultdb SERVIDOR\jose, AdventureWorks exec sp_defaultdb SERVIDOR\maria, AdventureWorks exec sp_defaultdb SERVIDOR\pedro, AdventureWorks exec sp_defaultdb SERVIDOR\paulo, AdventureWorks exec sp_defaultdb SERVIDOR\jovina, AdventureWorks 9. Pressione Ctrl+E para executar o comando. 10.O comando executado com sucesso e a seguinte mensagem exibida: Command(s) completed successfully. 11. Pronto, os logins da Tabela 6.8 foram adicionados e o Banco de Dados padro alterado para o Banco de Dados AdventureWorks. 12. Feche a janela de execuo de comandos T-SQL. Surge uma mensagem perguntando se voc deseja salvar os comandos digitados. D um clique em No. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3240000Curso Completo Exerccio: Usando os conhecimentos apresentados neste tpico, crie os logins indicados na Tabela 6.11. importante que voc faa este exerccio, pois utilizaremos estes logins nos demais exemplos deste captulo. CRIANDO ROLES NO SQL SERVER 2005 Conforme j descrevemos, podemos utilizar roles para simplificar a atribuio de permisses de acesso aos objetos do SQL Server 2005. Tambm nunca demais salientar que role semelhante, para no dizer idntico, ao conceito de grupos de usurios do Windows. Por exemplo, podemos criar uma role chamada FinanasConsulta e outra chamada FinanasAlterao. No Banco de Dados Finanas damos permisso somente de leitura para a role FinanasConsulta e de leitura, escrita, alterao e excluso para a role FinanasAlterao. Depois inclumos os usurios que precisam de acesso somente de leitura na role FinanasConsulta, e os que precisam de acesso de leitura e alterao, inclumos na role FinanasAlterao. Se um usurio no deve mais ter acesso de alterao, s retir-lo da role FinanasAlterao. Com isso a administrao da segurana no SQL Server 2005 fica bastante simplificada. tambm importante salientar as mudanas e novidades do SQL Server 2005, na rea de segurana, j descritas anteriormente. A principal mudana a separao entre usurios e schemas. No SQL Server 2005, todos os objetos de um Banco de Dados, tais como tabelas e views, pertencem a um schema. Agora, um usurio ou rule o dono de um schema e no existe mais o dono de um determinado objeto. Conforme descrito anteriormente, esta separao entre usurios e schemas facilita, bastante, a administrao, principalmente em casos onde temos que alterar o dono de um determinado objeto ou excluir um usurio, o que era bem complicado de se fazer no SQL Server 2000. Para mais detalhes sobre schemas e a questo do dono dos objetos, consulte o tpico terico, no incio do captulo, sobre o modelo de segurana do SQL Server 2005. Existem algumas roles que j so criadas no momento de instalao de uma determinada instncia do SQL Server 2005. Temos as chamadas Server Roles e as Databases Roles. A seguir, temos as permisses associadas com cada uma destas roles. As server roles tm permisso para realizar as tarefas administrativas mais comuns. Por exemplo, se um usurio responsvel por adicionar ou remover logins, voc pode coloc-lo como membro da role securityadmin, e este usurio herdar as permisses da role securityadmin. Isto evita que voc tenha Nome da conta Tipo J existe? ? user6 Windows Sim Usurio user7 Windows Sim Usurio user8 Windows Sim Usurio sqluser3 SQL Server No Usurio sqluser4 SQL Server No Usurio Tabela 6.11 Logins a serem adicionados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000325 N O T A No possvel criar novas roles de servidor. Ou seja, voc est limitado a utilizar as server roles que so criadas quando o SQL Server 2005 instalado. Tambm temos algumas roles predefinidas para Banco de Dados. Na Tabela 6.13, temos a descrio destas roles. que adicion-lo role Sysadmin, dando-lhe mais permisses do que realmente necessita para realizar o seu trabalho. Na Tabela 6.12, temos a descrio destas roles. Nome da role Permisses para os membros desta role Sysadmin Poderes totais sobre todos os objetos do servidor. Securityadmin Pode gerenciar logins do servidor. Serveradmin Pode configurar a maioria das opes do servidor. Diskadmin Gerenciar os arquivos de um Banco de Dados. Dbcreator Criar e alterar Bancos de Dados. Processadmin Gerenciar processos rodando no SQL Server. Setupadmin Pode gerenciar e configurar a replicao entre servidores SQL Server e extender store procedures. Tabela 6.12 Permisses associadas com as principais server roles. Nome da role Permisses para os membros desta role. db_owner Tem poderes totais sobre o Banco de Dados. db_accessadmin Pode adicionar e remover usurios ao Banco de Dados. db_datareader Pode ler dados em todas as tabelas de usurio do Banco de Dados. db_datawriter Pode adicionar, alterar ou excluir dados em todas as tabelas de usurio do banco de dados. db_ddladmin Pode adicionar, modificar ou excluir objetos no Banco de Dados. db_securityadmin Pode gerenciar roles e adicionar ou excluir usurios s roles do Banco de Dados. Pode gerenciar as permisses para objetos do Banco de Dados. db_backupoperator Pode fazer o backup do Banco de Dados. db_denydatareader No pode consultar dados em nenhuma das tabelas do Banco de Dados, mas pode efetuar alteraes na estrutura do Banco de Dados e de seus objetos. db_denydatawriter No pode alterar dados no Banco de Dados. Tabela 6.13 Permisses associadas com as principais Fixed Database Roles. Existe ainda uma role chamada public. Todo usurio adicionado a um Banco de Dados automaticamente pertence a esta role. No podemos adicionar novos usurios a esta role, pois qualquer usurio ou role que adicionado ao Banco de Dados far parte desta role. A role public no pode ser excluda. Devemos ter cuidado com as permisses atribudas a esta role, uma vez que todos os usurios e roles do Banco de Dados fazem parte dela. Por outro lado, a role public, se corretamente utilizada, pode simplificar a proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3260000Curso Completo administrao, em determinadas situaes. Por exemplo, se todos os usurios de um Banco de Dados devem ter acesso de leitura, basta dar a permisso de leitura para a role public. Como todos os usurios pertencem role public, eles iro herdar a permisso de leitura, atribuda role public. Agora precisamos aprender a criar roles no SQL Server 2005 e a adicionar usurios a roles. Vamos seguir a nossa metodologia. Aprenderemos a criar roles utilizando o SQL Server Management Studio e tambm comandos T-SQL, na janela de execuo de comandos. Lembrando que somente possvel criar novas roles em nvel de Banco de Dados, isto , no poderemos adicionar novas roles em nvel de servidor. CRIANDO NOVAS ROLES COM O SQL SERVER MANAGEMENT STUDIO E SQL SERVER 2005 Exemplo prtico: Utilizando o SQL Server Management Studio, crie as roles indicadas na Tabela 6.14. Para criar as roles da Tabela 6.14, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio e, na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005. 2. D um clique no sinal de + ao lado do Banco de Dados Exemplo1, para exibir as suas opes. Nas opes que so exibidas, abaixo do Banco de Dados Exemplo1, clique no sinal de + ao lado da opo Security. 3. Nas opes que surgem, d um clique na opo Roles para selecion-la. 4. Clique com o boto direito do mouse na opo Roles. No menu que surge d um clique na opo New -> New Database Role... Surge a janela para a criao de uma nova role de Banco de Dados. 5. No campo Name digite Consulta. No campo Owner voc pode especificar qual schema ser o dono da role que est sendo criada. 6. Na lista Schemas owned by this role, voc pode marcar um ou mais dos schemas disponveis no Banco de Dados, sendo que a role que est sendo criada passar a ser o novo dono das roles selecionadas. No nosso exemplo, a role Consutla no ser dono de nenhum dos schemas disponveis. Nome da role Banco de Dados Instncia consulta Exemplo1 SERVIDOR\SQL2005 gerentes Exemplo1 SERVIDOR\SQL2005 fazbackup Exemplo1 SERVIDOR\SQL2005 consulta AdventureWorks SERVIDOR\SQL2005 gerentes AdventureWorks SERVIDOR\SQL2005 fazbackup AdventureWorks SERVIDOR\SQL2005 Tabela 6.14 Roles a serem criadas usando o SQL Server Management Studio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000327 7. Na parte de baixo da janela, voc poderia adicionar um ou mais usurios ou at mesmo outras roles, como membro da role que voc est criando. Por enquanto ainda no temos Users adicionados ao Banco de Dados Exemplo1. Por isso, neste momento, no temos como adicionar usurios role Consulta, que est sendo criada. Vou insistir novamente, porque muito importante que voc tenha em mente o modelo de segurana do SQL Server 2005. No item anterior, ns adicionamos logins, sendo que um login pode ser uma conta do Windows ou um login criado no prprio SQL Server 2005 (desde que a instncia esteja configurada para o modo de autenticao SQL Server and Windows Authentication mode). O login s d direito de fazer um logon na instncia. Mas, na prtica, o que os usurios precisam, alm do logon, ter permisso aos dados de um ou mais Bancos de Dados. Para que um usurio possa ter permisso de acesso, o login do usurio tem que ser adicionado como um user, nos Bancos de Dados que ele precisa acessar. Alm de adicionar o login do usurio como user do Banco de Dados, o user deve receber permisses de acesso. As permisses podem ser dadas diretamente para o user ou, o que mais indicado, podemos adicionar o user como membro de uma role que possui a permisso. Ao ser adicionada a role, o usurio herda as permisses da role. Para fixar bem este modelo, vamos considerar o que preciso para que o usurio jsilva de um domnio chamado ABC (portanto ABC\jsilva) possa ter acesso de leitura a tabela Clientes, do Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005. Para isso, teramos que executar os seguintes passos: Adicionar a conta ABC\jsilva como um login na instncia SERVIDOR\SQL2005. Adicionar o login ABC\jsilva como um user no Banco de Dados Exemplo1. Dar permisso de leitura na tabela Clientes, para o User ABC\jsilva, ou adicionar o User ABC\jsilva a uma role que tenha permisso de leitura na tabela Clientes. Clique em OK. A nova role consulta foi criada, conforme indicado na Figura 6.19: Figura 6.19 Role consulta j criada no Banco de Dados Exemplo1. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3280000Curso Completo N O T A 8. Repita os passos descritos anteriormente para criar as roles gerentes e fazbackup no Banco de Dados Exemplo1 da instncia SERVIDOR\SQL2005. 9. Utilize as informaes que voc aprendeu neste exemplo, para criar as roles consulta, gerentes e fazbackup no Banco de Dados AdventureWorks da instncia SERVIDOR\SQL2005. CRIANDO NOVAS ROLES USANDO COMANDOS T-SQL Para adicionar uma nova role a um Banco de Dados, utilizamos o comando sp_addrole. Sintaxe para o comando sp_addrole: exec sp_addrole nome, dono da role Por exemplo, para adicionar uma role chamada teste, cujo dono seja o schema Clientes, utilize o seguinte comando: exec sp_addrole teste, Clientes Se no for especificado o parmetro dono, o dono da role ser o Schema dbo database owner. Algumas observaes sobre o comando sp_addrole: O nome de uma role pode conter at 128 caracteres, porm no pode conter a barra invertida e nem pode ser um valor nulo (NULL) ou uma string vazia . Somente membros das roles sysadmin, db_securityadmin e db_owner tm permisso para utilizar o comando sp_addrole. No podemos criar novas roles nvel de servidor, somente nvel de Banco de Dados. Para excluir uma role, podemos utilizar o comando sp_droprole. Sintaxe para o comando sp_droprole: exec sp_droprole nome Por exemplo, para excluir a role chamada teste, criada anteriormente, utilize o seguinte comando: exec sp_droprole teste Algumas observaes sobre o comando sp_droprole: Somente membros das roles sysadmin, db_securityadmin e db_owner tm permisso para utilizar o comando sp_droprole. No podemos excluir uma role que possui membros. Antes, temos que retirar todos os membros da role, para depois poder excluir a role. Aprenderemos a adicionar e a excluir membros de uma role, no prximo item. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000329 O comando sp_droprole no pode ser executado no contexto de uma transao definida pelo usurio. No podemos excluir roles predefinidas Server Roles e Database Roles. Tambm podemos utilizar o comando sp_helprole para obter informaes sobre as diversas roles em um Banco de Dados. Considere o exemplo a seguir: use AdventureWorks exec sp_helprole Na Figura 6.20 temos o resultado da execuo deste comando. Observe que as roles Consulta, Gerentes e Fazbackup, que criamos anteriormente, j aparecem na listagem. Figura 6.20 Resultado do comando sp_helprole, no Banco de Dados AdventureWorks. Agora vamos a um exemplo prtico. Exemplo prtico: Utilizando a janela de execuo de comandos T-SQL, crie as roles indicadas na Tabela 6.15. Nome da role Banco de Dados Instncia role1 Exemplo1 SERVIDOR\SQL2005 role2 Exemplo1 SERVIDOR\SQL2005 role3 Exemplo1 SERVIDOR\SQL2005 Tabela 6.15 Roles a serem criadas com comandos T-SQL. Para criar as roles da Tabela 6.15, siga os passos indicados a seguir: 1. Se voc no estiver com o SQL Server Management Studio, abra-o. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3300000Curso Completo 2. Na janela Object Explorer, localize a instncia SERVIDOR\SQL2005 e d um clique no sinal de +, ao lado da instncia, para exibir as opes disponveis. 3. Clique com o boto direito do mouse na instncia SERVIDOR\SQL2005 e, no menu de opes que exibido, clique em New Query. Ser aberta a janela para execuo de comandos T-SQL, a qual voc j utilizou diversas vezes neste livro. 4. Para criar as roles indicadas na Tabela 6.15, digite os seguintes comandos: Alterna para o Banco de Dados Exemplo1 use exemplo1 Utilizo sp_addrole para criar as novas roles. exec sp_addrole role1 exec sp_addrole role2 exec sp_addrole role3 5. Pressione Ctrl+E para executar estes comandos. 6. As roles role1, role2 e role3 so adicionadas ao Banco de Dados Exemplo1, da instncia SERVIDOR\SRVINST01, e a seguinte mensagem exibida: Command(s) completed successfully. 7. Feche a janela de execuo de comandos T-SQL. Muito bem, agora temos uma srie de logins e roles adicionados instncia SERVIDOR\SQL2005, do SQL Server 2005. O prximo passo aprendermos a adicionar logins como users de um Banco de Dados e a dar permisses de acesso aos Bancos de Dados e seus objetos, para users e roles. Tambm vamos aprender como se comporta a segurana quando um usurio pertence a uma ou mais roles, e quando, alm das permisses permitidas, temos permisses explicitamente negadas (deny). Tambm aprenderemos a adicionar usurios s roles que criamos. Mas este o assunto do prximo item. KNOW-HOW EM: CONFIGURAO DE ACESSO AOS OBJETOS DE UM BANCO DE DADOS DO SQL SERVER 2005 PR-REQUISITOS Fundamentos apresentados na Parte I. Noes bsicas sobre o modelo de segurana do SQL Server 2005. Noes bsicas sobre o modelo de segurana do Windows 2000 Server e Windows Server 2003. Ter criados os logins de exemplo e roles, dos exemplos dos itens anteriores. Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL. METODOLOGIA Apresentao dos comandos necessrios para a configurao das permisses de acesso aos objetos de um Banco de Dados. TCNICA Configurar o acesso aos objetos de um Banco de Dados do SQL Server 2005, utilizando os comandos apresentados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000331 N O T A Agora que j adicionamos vrios logins, precisamos dar autorizao para que estes logins possam acessar os Bancos de Dados de uma instncia do servidor SQL Server. Em cada Banco de Dados, temos uma opo chamada Users, dentro das opes Security. Nesta opo, por padro, esto adicionados os logins dbo, guest, INFORMATION_SCHEMA e sys. Para darmos permisso de acesso, por exemplo ao usurio SERVIDOR\user1, precisamos adicion-lo a esta lista de usurios. Na hora em que estamos adicionando um usurio, podemos j adicion-lo a uma ou mais roles do Banco de Dados. Aps ter adicionado o usurio, ainda ser possvel inclu- lo e exclu-lo de uma ou mais roles, conforme as necessidades de acesso do usurio. Apenas para manter o foco, vamos recapitular os passos que fizemos at agora: 1. Adicionamos usurios do Windows como logins para a instncia SERVIDOR\SQL2005 do SQL Server. 2. Criamos novos logins no prprio SQL Server 2005, na instncia SERVIDOR\SQL2005, a qual est no modo de autenticao SQL Server and Windows Authentication mode. 3. Criamos algumas roles em alguns Bancos de Dados. O que faremos neste item: 1. Daremos permisso de acesso aos logins anteriormente adicionados, para alguns Bancos de Dados, adicionando os respectivos logins como usurios do Banco de Dados (opo Security - > Users do Banco de Dados). 2. Adicionaremos os usurios a uma ou mais roles. O passo final, que aprenderemos no prximo item, dar permisses sobre os objetos do Banco de Dados para os usurios e roles que tm permisso de acesso ao Banco de Dados. Para uma descrio detalhada do modelo de segurana no SQL Server 2005, consulte o item Uma viso geral da segurana no SQL Server 2005, no incio deste captulo. DANDO PERMISSO DE ACESSO AO BANCO DE DADOS COM O SQL SERVER MANAGEMENT STUDIO Neste item aprenderemos a adicionar logins lista de usurios com permisso de acesso a um Banco de Dados. Vamos dar permisso de acesso para os usurios nos respectivos Bancos de Dados indicados na Tabela 6.16. Login Banco de Dados Instncia user1 e user2 Exemplo1 SERVIDOR\SQL2005 grupo1 e grupo2 Exemplo1 SERVIDOR\SQL2005 user3, user4 e user5 AdventureWorks SERVIDOR\SQL2005 grupo1 e grupo2 AdventureWorks SERVIDOR\SQL2005 Tabela 6.16 Dando permisso de acesso ao Banco de Dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3320000Curso Completo Exemplo prtico: Para adicionar os users indicados na Tabela 6.16, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio. 2. Na janela Object Explorer, d um clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para expandi-la. 3. Nas opes que surgem, d um clique no sinal de + ao lado de Databases para exibir os Bancos de Dados disponveis. 4. D um clique no sinal de + ao lado do Banco de Dados Exemplo1, para exibir os objetos deste Banco de Dados. 5. D um clique no sinal de + ao lado da opo Security, para exibir as opes de segurana, disponveis para o Banco de Dados Exemplo1. 6. D um clique com o boto direito do mouse na opo Users. 7. No menu de opes que surge, d um clique em New User. Surge a janela Database User - New, para adio de um novo usurio ao Banco de Dados. 8. No campo User name voc informa o nome que o usurio ter no Banco de Dados. Todo usurio associado a um login e recomendado que voc use para nome de usurio o mesmo nome de login. Podemos utilizar este campo User name, para que o usurio tenha um nome diferente do seu nome de login. Esta no uma prtica recomendada, por isso vamos manter o nome do usurio no Banco de Dados igual ao seu nome de login no servidor SQL Server. No campo User name e tambm no campo Login name, digite SERVIDOR\user1. Ou seja, estou adicionando o login SERVIDOR\user1, como sendo o usurio SERVIDOR\user1, do Banco de Dados Exemplo1. Com isso, o user SERVIDOR\user1 poder receber permisses de acesso aos objetos do Banco de Dados Exemplo1 e tambm poder ser includo como membro de uma ou mais roles, do Banco de Dados Exemplo1. Na parte debaixo da janela, voc poder incluir o usurio em uma ou mais roles do Banco de Dados. Lembre-se que, ao incluir o usurio em uma role, ele ir herdar todas as permisses da role. Tambm lembre que todo usurio, automaticamente, pertence a role public e voc no pode retir-lo desta role. Observe que a role public nem aparece na lista de roles, pois voc no pode configurar para que o user no pertena role public. Outro detalhe importante que nesta tela voc pode definir qual o schema default, associado ao User que est sendo adiconado. Para isso, basta selecionar o schema na lista Default Schema. Para todos os detalhes sobre schema e default schema, consulte o tpico Modelo de Segurana do SQL Server 2005, no incio do captulo. Vamos incluir o usurio na role consulta. Para isso, na lista Database role membership, marque a role Consulta. Sua tela deve estar conforme indicado na Figura 6.21: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000333 N O T A Figura 6.21 Adicionando o user SERVIDOR\user1. 9. D um clique no boto OK e pronto, o usurio SERVIDOR\user1 adicionado lista de usurios com permisso de acesso ao Banco de Dados Exemplo1. 10. Seguindo as orientaes deste exemplo, adicione a permisso de acesso para os usurios e grupos, aos respectivos Bancos de Dados, indicados na Tabela 6.16. Tambm faa todos os usurios que esto sendo adicionados membros da role Consulta no Banco de Dados Exemplo1. No Banco de Dados AdventureWorks, mantenha os usurios apenas como membros da role public. Na Figura 6.22, temos a lista dos users do Banco de Dados Exemplo1. 11. Feche o SQL Server Management Studio. Adicionamos usurios lista de usurios. No caso do Banco de Dados Exemplo1, tambm fizemos os usurios membros da role Consulta. Porm ainda no definimos as permisses destes usurios aos objetos do Banco de Dados. Por exemplo quem pode consultar quais tabelas? Quem pode consultar e alterar quais tabelas? Quem pode criar novas tabelas e views? Veremos como definir estas permisses mais adiante, neste captulo. Para excluir usurios da lista de usurios com permisso de acesso bastante simples. Para isso basta navegar at a opo Users, onde est o usurio a ser excludo, e clicar com o boto direito do mouse no usurio a ser excludo. No menu que surge, d um clique na opo Delete. Ao excluir um usurio da opo Users, ele deixa de ter permisso de acesso ao Banco de Dados, porm o seu login continua na lista de logins do servidor SQL Server. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3340000Curso Completo Figura 6.22 Usurios com permisso de acesso ao Banco de Dados Exemplo1. DANDO PERMISSO DE ACESSO AO BANCO DE DADOS, USANDO COMANDOS T-SQL Neste item aprenderemos a adicionar logins lista de usurios com permisso de acesso a um Banco de Dados, utilizando comandos T-SQL, na janela de execuo de comandos. Para adicionarmos um login lista de usurios autorizados a acessar um Banco de Dados, utilizamos o comando sp_grantdbaccess. Sintaxe para o comando sp_grantdbaccess: use database exec sp_grantdbaccess nome de login Por exemplo, para adicionar o usurio user1, do domnio SERVIDOR ao Banco de Dados AdventureWorks, podemos utilizar os seguintes comandos: use AdventureWorks exec sp_grantdbaccess SERVIDOR\user1 Algumas observaes sobre o comando sp_grantdbaccess: Somente membros das roles sysadmin e das roles de Banco de Dados db_accessadmin e db_owner que tm permisso para utilizar este comando. Este comando no pode ser executado no contexto de uma transao iniciada pelo usurio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000335 Exemplo prtico: Vamos dar permisso de acesso para os usurios nos respectivos Bancos de Dados indicados na Tabela 6.17. Para dar permisso de acesso, conforme indicado na Tabela 6.17, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio e, na janela Object Explorer, navegue at a instncia SERVIDOR\SQL2005. Clique com o boto direito do mouse na instncia SERVIDOR\SQL2005 e, no menu de opes que exibido, clique em New Query. Ser aberta a janela para execuo de comandos T-SQL. 2. Digite os seguintes comandos: Tornando o Banco de Dados AdventureWorks o banco atual use AdventureWorks Adiciono as permisses de acesso ao Banco de Dados AdventureWorks para isso utilizo o comando sp_grantdbaccess exec sp_grantdbaccess SERVIDOR\jose exec sp_grantdbaccess SERVIDOR\paulo exec sp_grantdbaccess SERVIDOR\jovina exec sp_grantdbaccess SERVIDOR\maria exec sp_grantdbaccess SERVIDOR\pedro Agora adiciono os logins do prprio SQL Server, isto , logins que no so do Windows exec sp_grantdbaccess sqluser1 exec sp_grantdbaccess sqluser2 e por ltimo os grupos do WINDOWS exec sp_grantdbaccess SERVIDOR\grupo1 exec sp_grantdbaccess SERVIDOR\grupo2 3. Pressione Ctrl+E para executar estes comandos. Os usurios da Tabela 6.17 sero adicionados lista Users do Banco de Dados AdventureWorks da instncia SERVIDOR\SQL2005. 4. A seguinte mensagem ser emitida: Command(s) completed successfully. 5. Feche a janela de execuo de comandos T-SQL. Para retirar a permisso de acesso do usurio a um Banco de Dados, podemos utilizar o comando sp_revokedbaccess. Login Permisso no Banco de Dados Instncia jose e paulo AdventureWorks SERVIDOR\SQL2005 jovina e maria AdventureWorks SERVIDOR\SQL2005 pedro, sqluser1 e sqluser2 AdventureWorks SERVIDOR\SQL2005 grupo1 e grupo2 AdventureWorks SERVIDOR\SQL2005 Tabela 6.17 Dando permisso de acesso ao Banco de Dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3360000Curso Completo N O T A Para compatibilidade com verses anteriores, tambm poderamos utilizar o comando sp_dropuser, mas recomendada a utilizao de sp_revokedbaccess sempre que possvel. O comando sp_dropuser no dever mais estar disponvel, nas prximas verses do SQL Server. Por exemplo, para remover o usurio SERVIDOR\user1, do Banco de Dados AdventureWorks, poderamos utilizar os seguintes comandos: use AdventureWorks exec sp_revokedbaccess SERVIDOR\user1 Algumas observaes sobre o comando sp_revokedbaccess: Somente membros da server role sysadmin e das roles de Banco de Dados db_accessadmin e db_owner que tm permisso para utilizar este comando. Com o comando sp_revokedbaccess no possvel remover os seguintes usurios: a. A role public ou o usurio dbo. b As roles fixas do Banco de Dados, como db_owner, db_datareader, etc. c. Os usurios guest, nos Bancos de Dados master e tempdb. ADICIONANDO USURIOS COMO MEMBROS DE UMA OU MAIS ROLES Agora vamos aprender a adicionar usurios como membros de uma ou mais roles. Apenas para recapitular, devemos ter as roles criadas pelo usurio indicadas na Tabela 6.18. Estas roles foram criadas anteriormente, neste captulo. Nome da role Banco de Dados Instncia leitores Exemplo1 SERVIDOR\SQL2005 gerentes Exemplo1 SERVIDOR\SRVINST01 fazbackup Exemplo1 SERVIDOR\SRVINST01 leitores pubs SERVIDOR\SRVINST02 gerentes pubs SERVIDOR\SRVINST02 fazbackup pubs SERVIDOR\SRVINST02 role1 Exemplo1 SERVIDOR\SRVINST01 role2 Exemplo1 SERVIDOR\SRVINST01 role3 Exemplo1 SERVIDOR\SRVINST01 Tabela 6.18 Roles criadas pelo usurio. Vamos utilizar o SQL Server Management Studio para adicionar alguns usurios a algumas das roles anteriormente criadas, conforme indicado na Tabela 6.19. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000337 Exemplo prtico: Para adicionar os usurios indicados na Tabela 6.19, faa o seguinte: 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o. 2. Na janela Object Explorer, localize a instncia SERVIDOR\SQL2005 e d um clique no sinal de +, ao lado da instncia, para exibir as opes disponveis. 3. Clique no sinal de + ao lado da opo Databases. 4. D um clique no sinal de + ao lado do Banco de Dados Exemplo1 para exibir os objetos deste Banco de Dados. 5. Clique no sinal de + ao lado da opo Security. Nas opes que so exibidas, clique no sinal de + ao lado da opo Roles. Devem aparecer, na listagem de roles, dentre outras, as roles role1 e role2 criadas anteriormente, conforme indicado na Figura 6.23: Nome da role Usurios a serem adicionados role1 user1 e user2 role2 grupo1 e grupo2 Tabela 6.19 Adicionando usurios a roles. Figura 6.23 Roles role1 e role2 criadas anteriormente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3380000Curso Completo 6. D um clique duplo na role1 para abrir as suas propriedades. Surge a janela com as propriedades da role. 7. Para adicionar usurios, d um clique no boto Add, na parte de baixo da janela. 8. Ser exibida a janela Select Database User or Role. Voc pode digitar o nome de um ou mais users ou roles, separados por ponto-e-vrgula. Uma opo mais prtica fazer com que seja exibida uma listagem dos users e roles disponveis. Para isso, clique no boto Browse. Ser exibida a janela Browse for Objects, na qual so exibidos os users e roles do Banco de Dados Exemplo1. Marque os usurios SERVIDOR\user1 e SERVIDOR\user2, conforme indicado na Figura 6.24: Figura 6.24 Adicionando usurios. 9. D um clique no boto OK. Voc estar de volta janela Select Database User or role, com os usurios j adicionados: [SERVIDOR\user1]; [SERVIDOR\user2]. Clique em OK. Voc estar de volta janela de propriedades da role1 e os usurios SERVIDOR\user1 e SERVIDOR \user2 j estaro na lista de usurios da role, conforme indicado na Figura 6.25: 10. D um clique em OK e feito: os usurios [SERVIDOR\user1] e [SERVIDOR\user2] tero sido adicionados a role role1. Voc estar de volta ao SQL Server Management Studio com a listagem das roles do Banco de Dados Exemplo1 sendo exibida. 11. D um clique duplo na role role2 para abrir a janela com as suas propriedades. 12. D um clique no boto Add, para adicionar usurios a esta role. 13. Clique no boto Browse para exibir a lista de usurios. Na lista de usurios selecione SERVIDOR\grupo1 e SERVIDOR\grupo2. D um clique em OK. Voc estar de volta janela Select Database User or role, com os usurios j adicionados: [SERVIDOR\grupo1]; [SERVIDOR\grupo2]. Clique em OK. 14. Voc estar de volta janela de propriedades da role2 e os usurios SERVIDOR\grupo1 e SERVIDOR\grupo2 j estaro na lista de usurios da role role2. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000339 Figura 6.25 Usurios j aparecem na lista de users da role. 15. D um clique em OK e feito, os usurios tero si do adicionados role. Voc estar de volta ao SQL Server Management Studio. 16. Feche o SQL Server Management Studio. Exemplo prtico: Para adicionar usurios a uma role de servidor (sysadmin, securityadmin, etc.): 1. Abra o SQL Server Management Studio e na janela Object Explorer clique no sinal de + ao lado da instncia com a qual voc ir trabalhar. 2. Nas opes que surgem, d um clique no sinal de + ao lado da opo Security. 3. Nas opes que surgem, d um clique no sinal de + ao lado da opo Server Roles. Ser exibida a listagem com as roles de servidor. 4. Clique com o boto direito do mouse na role a ser alterada e, no menu de opes que exibido, clique em Manage Members. Surge a janela com as propriedades da role. 5. Para adicionar usurios d um clique no boto Add. Ser exibida a janela Select logins. Para exibir a lista de logins disponvies, clique no boto Browse. Ser exibida a lista de logins disponveis na instncia, conforme exemplo da Figura 6.26: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3400000Curso Completo Figura 6.26 Logins disponveis na instncia SERVIDOR\SQL2005. 6. Selecione os logins a serem adicionados e d um clique em OK. Voc estar de votla janela Select logins. Clique em OK. Voc estar de volta janela de propriedades da role, com os usurios selecionados j adicionados como membros da role. 7. D um clique no boto OK e pronto, os usurios foram adicionados. Para excluir um membro de uma role, basta abrir as propriedades da role, marcar o usurio a ser excludo e dar um clique no boto Remove. Depois d um clique no boto OK. Podemos adicionar logins a roles do servidor, adicionar usurios a roles de um Banco de Dados, excluir logins de uma role do servidor e tambm excluir usurios de uma role de Banco de Dados, utilizando comandos T-SQL. Para adicionar um usurio a uma role de servidor, utilizamos o seguinte comando: exec sp_addsrvrolemember login, role Por exemplo, para adicionar os usurios SERVIDOR\user1 e SERVIDOR\user2 role sysadmin, podemos utilizar os seguintes comandos: exec sp_addsrvrolemember SERVIDOR\user1, sysadmin exec sp_addsrvrolemember SERVIDOR\user2, sysadmin Para excluir um usurio de uma role do servidor, utilizamos o seguinte comando: exec sp_dropsrvrolemember login, role Por exemplo, para excluir os usurios SERVIDOR \user1 e SERVIDOR \user2 da role sysadmin, podemos utilizar os seguintes comandos: exec sp_dropsrvrolemember SERVIDOR\user1, sysadmin exec sp_dropsrvrolemember SERVIDOR\user2, sysadmin proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000341 N O T A Para adicionar um usurio a uma role de Banco de Dados, utilizamos o seguinte comando: use database exec sp_addrolemember role, usurio Por exemplo, para adicionar os usurios SERVIDOR \user1 e SERVIDOR \user2, como membros da role Consulta, do Banco de Dados Exemplo1, utilizamos os seguintes comandos: use exemplo1 exec sp_addrolemember consulta, SERVIDOR\user1 exec sp_addrolemember consulta, SERVIDOR\user2 Para excluir um usurio de uma role de Banco de Dados, utilizamos o seguinte comando: use database exec sp_droprolemember role, usurio Por exemplo, para excluir os usurios SERVIDOR\user1 e SERVIDOR\user2, da role Consulta, do Banco de Dados Exemplo1, utilizamos os seguintes comandos: use exemplo1 exec sp_droprolemember consulta, SERVIDOR\user1 exec sp_droprolemember consulta, SERVIDOR\user2 Observe que, no caso de roles do servidor, o primeiro parmetro o nome do login seguido do nome da role exec sp_addsrvrolemember login, role ou exec sp_dropsrvrolemember login, role. J no caso de roles de Banco de Dados o contrrio, isto , o primeiro parmetro o nome da role e o segundo, o nome do usurio exec sp_addrolemember role, usurio ou exec sp_droprolemember role, usurio. Explicao? No me atrevo a tanto. KNOW-HOW EM: CONFIGURAO, PLANEJAMENTO E TESTE DE PERMISSES DE ACESSO AOS OBJETOS DE UM BANCO DE DADOS DO SQL SERVER 2005 PR-REQUISITOS Fundamentos apresentados na Parte I. Noes bsicas sobre o modelo de segurana do SQL Server 2005. Noes bsicas sobre o modelo de segurana do Windows 2000 Server e do Windows Server 2003. Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL. METODOLOGIA Anlise de diversas situaes envolvendo permisses de acesso. At agora j aprendemos a adicionar logins, criar roles, adicionar usurios ao Banco de Dados, adicionar usurios a roles do Banco de Dados e logins a roles do servidor. O passo final das configuraes de segurana configurar as permisses de acesso aos diversos objetos dos Bancos de Dados, para usurios e roles. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3420000Curso Completo Por exemplo, criamos uma role Consulta, no Banco de Dados Exemplo1. Como fazer com que os membros desta role somente tenham permisso de leitura nos dados do Banco de Dados Exemplo1? Muito simples. Temos que definir as permisses para a role Consulta, de tal forma que esta tenha permisso somente de leitura. E se tivermos dez usurios que pertencem role Consulta, mas por determinao do chefe um deles no deve ter acesso ao Banco de Dados Exemplo1? Como fazer? Muito simples. s negar o direito de leitura para este usurio especificamente. Isto , que chamamos de configurar permisses de acesso. As permisses definem o que um login e as roles de servidor podem fazer no servidor, como por exemplo, criar novos Bancos de Dados, excluir os existentes, etc. e o que os usurios e as roles de Bancos de Dados podem fazer dentro do Banco de Dados, por exemplo, consultar, alterar, excluir, inserir dados, criar novas tabelas, excluir as existentes, criar novas consultas, criar novas triggers, adicionar usurios, etc. Vamos simplificar: Permisses definem quem pode fazer o que e onde. Isto o que aprenderemos neste item, ou seja, configurar permisses. Veremos os seguintes tpicos: Dando permisses no SERVIDOR\instncia. Dando permisses dentro do Banco de Dados. Dando permisses a objetos do Banco de Dados tabelas, views, etc. DEFININDO PERMISSES EM NVEL DE SERVIDOR\INSTNCIA Permisses em nvel de SERVIDOR\instncia definem o que um determinado login pode fazer. Por exemplo, logins que so membros do grupo sysadmin podem fazer qualquer coisa, tais como: Criar novos Bancos de Dados. Excluir Bancos de Dados. Alterar Bancos de Dados. Agendar tarefas. A maneira de darmos permisses em um SERVIDOR\instncia para um determinado login adicionando-o a uma das roles do servidor, de acordo com o nvel de permisso que o login necessita. Por exemplo, se precisamos que um determinado login seja capaz de gerenciar logins, devemos adicion- lo role securityadmin; se queremos dar a um login permisses totais na instncia, basta adicionar este login como membro da role sysadmin. Para adicionar um login a uma role, temos duas opes. Abrir as propriedades da role, clicar no boto Add e adicionar um ou mais usurios. Este procedimento foi descrito no item anterior. Outra maneira acessarmos as propriedades do login. Para isso abra o SQL Server Management Studio, clique no sinal de + ao lado da instncia que voc est trabalhando (por exemplo SERVIDOR\SQL2005). Nas opes que surgem, d um clique no sinal de + ao lado da opo Security para expandi-la. Abaixo de Security d um clique no sinal de + ao lado da opo Logins. Ser exibida uma lista com todos os logins da instncia em questo. Para acessar as propriedades de um determinado login, basta dar um proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000343 clique duplo sobre o login a ser configurado. Na janela de propriedades, temos diversas guias, dentre as quais podemos destacar as seguintes: General: Nesta guia podemos definir se permitimos (Grant server access) ou negamos (Deny server access) o acesso ao login em questo. Tambm podemos definir o Banco de Dados e a linguagem padro para quando o login fizer a conexo com a instncia do servidor SQL Server. Server Roles: Nesta guia podemos adicionar o login a uma ou mais roles do servidor. Lembre que ao adicionar um login a uma role, o login ir herdar todas as permisses atribudas role. Quer ser demitido? Adicione todo mundo role sysadmin. A menos que voc consiga provar que no est em suas plenas capacidades mentais, demisso na certa. Tambm lembre que no possvel adicionar novas roles de servidor, alm das roles criadas durante a instalao do SQL Server 2005. Para adicionar o login a uma ou mais roles, basta marcar as roles desejadas, conforme exemplo indicado na Figura 6.27, onde estou adicionando o login SERVIDOR\user1 e as roles diskadmin e securityadmin. Figura 6.27 Adicionando o login a uma ou mais roles. Database Access: Nesta guia podemos adicionar o login em questo, como usurio de um ou mais Bancos de Dados, da instncia que est sendo configurada. Ao selecionarmos um Banco de Dados nesta janela, na parte inferior da janela surge uma listagem com as roles do Banco de Dados selecionado. Neste momento, alm de adicionar o login como usurio de um ou mais Banco de Dados, podemos inclu-lo em uma ou mais roles do Banco de Dados, conforme as necessidades de acesso do usurio. Na Figura 6.28 o usurio SERVIDOR\user1 tem permisso de acesso ao Banco de Dados Exemplo1 e est sendo adicionado s roles public, db_accessadmin e db_securityadmin. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3440000Curso Completo N O T A Figura 6.28 Adicionando o login como usurio do Banco de Dados Exemplo1. Depois de feitas as configuraes necessrias, s dar um clique no boto OK. Para adicionar um login a uma role do servidor, tambm podemos utilizar o comando sp_addsrvrolemember, conforme descrito anteriormente. DANDO PERMISSES PARA BANCO DE DADOS Para um Banco de Dados, podemos definir, dentre outras, as seguintes permisses: Create Table (Criar Tabela). Create View (Criar Consulta). Create SP (Criar Stored Procedure). Create Default. Create Rule. Create Function. Backup DB (Backup do Banco de Dados). Backup Log (Backup do Log de transaes). proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000345 Podemos atribuir estas permisses para usurios e roles do Banco de Dados. Devemos sempre ter em mente as seguintes regras: Uma permisso pode ser atribuda ou negada. Podemos atribuir ou negar permisses para usurios e roles. O usurio herda todas as permisses das roles s quais ele pertence. Negar tem precedncia sobre permitir. Por exemplo, se um usurio pertencer a trs roles role1, role2 e role3. A role1 tem permisso para criar tabelas Create Table. A role2 tem permisso para criar consultas Create View. Com isso o usurio herda as permisses para criar tabelas e consultas. A role3 tem negadas as permisses para criar tabelas e consultas. Como negar tem precedncia sobre permitir, e o usurio pertence s trs roles, o usurio ter negadas as permisses para criar tabela e consultas. A permisso efetiva deste usurio ser: Negadas as permisses para criar tabelas e consultas. Procure agrupar os usurios que tm necessidades de acesso iguais em uma role. Atribua as permisses para a role em vez de atribuir para os usurios individualmente. Este procedimento ir facilitar bastante a administrao de segurana e da administrao das permisses de acesso no SQL Server 2005. Agora vamos aprender a atribuir permisses para usurios e roles. Depois vamos testar as permisses. Exemplo prtico: Utilizando o SQL Server Management Studio, atribua as seguintes permisses para o Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005: Usurio: SERVIDOR\user1. Permitir: Create Table, Create View. Negar: Backup database, Backup log. Role: role1 Permitir: Create View, Backup database, Backup Log e Create rule. Lembre que o usurio SERVIDOR\user1 membro da role role1. Outro detalhe que esta role ainda no foi adicionada como um user com permisso de acesso ao Banco de Dados Exemplo1. Faremos isso tambm, no decorrer do exemplo prtico a seguir. Para configurar as permisses sugeridas, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio. 2. Na janela Object Explorer, navegue at o Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005. 3. D um clique com o boto direito no Banco de Dados Exemplo1 e, no menu de opes que surge, d um clique em Properties. 4. Na janela de propriedades do Banco de Dados Exemplo1, d um clique na opo Permissions. Surge a janela indicada na Figura 6.29. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3460000Curso Completo Figura 6.29 Definindo permisses para o Banco de Dados Exemplo1. Nesta janela podemos configurar as permisses para o Banco de Dados. Na parte de cima temos uma lista com todos os usurios do Banco de Dados (observe que a Role role1 no faz parte desta lista). Na parte de baixo da janela podemos configurar as diversas permisses disponveis, para o user selecionado na parte de cima. Por padro a permisso vem desmarcada, o que significa que o usurio no tem esta permisso. Antes de configurarmos as permisses, vamos adicionar a role role1 lista de users do Banco de Dados. Para isso, clique no boto Add. Ser aberta a janela Select Users or Roles. No campo Enter the object names, digite role1 e clique em OK. Pronto, agora a role role1 faz parte da lista de users do Banco de Dados Exemplo1. 5. Vamos comear definindo as permisses para o User SERVIDOR\user1. Na parte de cima da janela, clique no User SERVIDOR\user1, para selecion-lo e, na parte de baixo da janela, defina as permisses conforme indicado na Figura 6.30. Observe que a lista de permisses bastante extensa. Voc ter que usar a barra de rolagem, at localizar as permisses Create table e Create view, as quais sero permitidas (Allow), para o usurio SERVIDOR\user1. Observe que esta mesma janela pode ser utilizada para, explicitamente, negar uma ou mais permisses coluna Deny. Localize as permisses Backup database e Backup log e marque a coluna Deny, para negar estas permisses para o usurio SERVIDOR\user1, conforme proposto no nosso exemplo. 6. Agora vamos definir as permisses para a role role1. Clique em role1, na parte de cima da janela, para selecion-la. Na parte de baixo da janela, localize as permisses Create view, Backup database, Backup log e Create rule e marque a coluna Allow, para permitir estas permisses para a role role1, no Banco de Dados Exemplo1. Com estas configuraes, na prtica, todos os membros da role role1, herdaro as permisses que esto sendo atribudas a role role1, ou seja: Create view, Backup database, Backup log e Create rule. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000347 Figura 6.30 Definindo as permisses para o usurio SERVIDOR\user1. 7. D um clique em OK e pronto, as permisses tero sido definidas. 8. A pergunta agora : Qual a permisso efetiva para o usurio SERVIDOR\user1. Vamos analisar com calma. Primeiro: O usurio SERVIDOR\user1 pertence role role1, portanto herdar as permisses desta role. Segundo: Ao analisar as permisses efetivas, gosto de analisar para cada permisso, separadamente. Ento vamos l: Permisso Create table: O usurio tem esta permisso, e na role role1 no negada a permisso. Portanto, o usurio ter esta permisso e poder criar novas tabelas no Banco de Dados Exemplo1. Permisso Create view: O usurio tem a permisso e tambm herda a permisso da role role1. Portanto, o usurio poder criar novas views no Banco de Dados Exemplo1. Permisso Create rules: O usurio herda a mesma da role role1. Portanto o usurio poder criar novas rules no Banco de Dados Exemplo1. Permisso Backup database: Esta permisso negada ao usurio. No preciso nem continuar a minha anlise, pois negar tem precedncia sobre qualquer outra atribuio, ou seja, mesmo que o usurio herdasse de alguma outra role a permisso de fazer o backup do Banco de Dados, o negar teria precedncia. Portanto o usurio no poder fazer o backup do Banco de proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3480000Curso Completo Dados. Se ele tentar fazer um backup, utilizando o comando BACKUP DATABASE, a seguinte mensagem ser exibida: Server: Msg 262, Level 14, State 1, Line 1 BACKUP DATABASE permission denied in database Exemplo1. Server: Msg 3013, Level 16, State 1, Line 1 BACKUP DATABASE is terminating abnormally. Observe que a mensagem indica, claramente, uma falta de permisses para efetuar a operao. Permisso Backup log: So vlidos os mesmos comentrios feitos para a permisso Backup database. Lembrar sempre que negar tem precedncia sobre permitir. Se o usurio tentar fazer um backup do log, a seguinte mensagem ser exibida: Server: Msg 262, Level 14, State 1, Line 1 BACKUP LOG permission denied in database Exemplo1. Server: Msg 3013, Level 16, State 1, Line 1 BACKUP LOG is terminating abnormally. Tambm podemos definir as permisses, utilizando comandos T-SQL. Para atribu-las utilize o comando GRANT. Sintaxe para o comando GRANT: GRANT { ALL | statement [ ,...n ] } TO security_account [ ,...n ] Vamos utilizar alguns exemplos para ilustrar a utilizao do comando GRANT. Exemplo 1: Garantir para o login SERVIDOR\user1 a permisso de criar novos Bancos de Dados: USE Master GRANT CREATE DATABASE TO [GROZA\user1] Usei, primeiro, o comando USE Master, para tornar o Banco de Dados Master o banco atual. Isso necessrio porque a permisso de criar novos Bancos de Dados s pode ser dada, sendo o Banco de Dados Master o banco atual. Na prtica, ao criar um Banco de Dados, o usurio precisa gravar dados nas tabelas do Banco de Dados master, que onde ficam as informaes sobre tudo o que existe em uma instncia do SQL Server 2005. Quando o login for um usurio do domnio do Windows, o nome deve vir entre colchetes, como no exemplo: [SERVIDOR\user1] Podemos atribuir mais do que uma permisso ao mesmo tempo, para um ou mais logins ou usurios. Exemplo 2: Atribuir as permisses CREATE TABLE, CREATE RULE e CREATE VIEW, para o usurio SERVIDOR\user1 no Banco de Dados Exemplo1. USE Exemplo1 GRANT CREATE TABLE, CREATE RULE, CREATE VIEW TO [SERVIDOR\user1] proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000349 N O T A Exemplo 3: Atribuir as permisses CREATE TABLE, CREATE RULE e CREATE VIEW, para os usurios SERVIDOR\grupo1 e SERVIDOR\grupo2, no Banco de Dados Exemplo1. SE Exemplo1 GRANT CREATE TABLE, CREATE RULE, CREATE VIEW TO [SERVIDOR\grupo1], [SERVIDOR\grupo2] As principais permisses de Banco de Dados, possveis de serem atribudas com este comando, so descritas nas Tabelas 6.20 e 6.21. As permisses SELECT, INSERT, DELETE, UPDATE e EXECUTE so definidas para objetos do Banco de Dados. Aprenderemos a utilizar o comando GRANT para definir estas permisses logo em seguida. Exemplo 4: Atribuir todas as permisses para o usurio SERVIDOR\user2, no Banco de Dados Exemplo1. USE Exemplo1 GRANT ALL TO [SERVIDOR\user2] Permisso Se aplica a: CREATE DATABASE Banco de Dados master. CREATE DEFAULT Todos os Bancos de Dados. CREATE PROCEDURE Todos os Bancos de Dados. CREATE RULE Todos os Bancos de Dados. CREATE TABLE Todos os Bancos de Dados. CREATE VIEW Todos os Bancos de Dados. BACKUP DATABASE Todos os Bancos de Dados. BACKUP LOG Todos os Bancos de Dados. Tabela 6.20 Principais permisses de Banco de Dados. Permisso Se aplica a: SELECT Tabelas, views e colunas. INSERT Tabelas e views. DELETE Tabelas e views. UPDATE Tabelas, views e colunas. EXECUTE Stored Procedures. Tabela 6.21 Principais permisses de objetos do Banco de Dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3500000Curso Completo N O T A Observe que utilizamos a palavra ALL, para significar todas as permisses. Para uma descrio completa, de todas as opes do comando GRANT, consulte o tpico Transact SQL Reference, no Books OnLine. Para retirar (revoke) as permisses de Banco de Dados, utilize o comando REVOKE. Sintaxe para o comando REVOKE: REVOKE { ALL | statement [ ,...n ] } FROM security_account [ ,...n ] Vamos a alguns exemplos para ilustrar a utilizao do comando REVOKE. Exemplo 1: Retirar a permisso de criar novos Bancos de Dados, atribuda para o login SERVIDOR\user1, anteriormente. USE MASTER REVOKE CREATE DATABASE TO [SERVIDOR\user1] Podemos retirar mais do que uma permisso ao mesmo tempo, para um ou mais logins. Exemplo 2: Retirar as permisses CREATE TABLE, CREATE RULE e CREATE VIEW, atribudas para o usurio SERVIDOR\user1 no Banco de Dados Exemplo1. USE Exemplo1 REVOKE CREATE TABLE, CREATE RULE, CREATE VIEW TO [SERVIDOR\user1] Exemplo 3: Retirar as permisses CREATE TABLE, CREATE RULE e CREATE VIEW, atribudas para os usurios SERVIDOR\grupo1 e SERVIDOR\grupo2, no Banco de Dados Exemplo1. USE Exemplo1 REVOKE CREATE TABLE, CREATE RULE, CREATE VIEW TO [SERVIDOR\grupo1], [SERVIDOR\grupo2] Exemplo 4: Retirar todas as permisses atribudas ao usurio SERVIDOR\user2, no Banco de Dados Exemplo1. USE Exemplo1 REVOKE ALL TO [SERVIDOR\user2] Observe que utilizamos a palavra ALL, para significar todas as permisses. Agora vamos anlise de mais um estudo de caso e, na seqncia, fica um exerccio para o amigo leitor, onde temos a combinao de permisses em diversas roles e uma combinao entre permitir e negar permisses. Estudo de Caso: Considere a situao descrita na Figura 6.31: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000351 Figura 6.31 Permisses no Banco de Dados Exemplo1. Para definir a permisso efetiva de um usurio devemos lembrar que o usurio herda as permisses das roles s quais ele pertence. Tambm devemos lembrar que estas permisses so cumulativas, isto , se uma das roles s quais o usurio pertence tiver permisso CREATE TABLE e a outra role qual o usurio pertence tiver permisso CREATE VIEW, o usurio herdar as duas permisses. No nosso exemplo, o user1 tem as permisses CREATE TABLE e CREATE VIEW. Alm disso, como pertence a role role1, ele herda as permisses da role role1. Com isso o usurio user1 est acumulando as permisses CREATE TABLE, CREATE VIEW, CREATE RULE e CREATE PROCEDURE, sendo as duas ltimas herdadas da role role1. Qual a permisso efetiva do usurio user1? CREATE TABLE. CREATE VIEW. CREATE RULE. CREATE PROCEDURE. Vamos analisar a situao para o usurio user2. Este usurio tem as permisses CREATE TABLE e CRE- ATE VIEW. Como tambm pertence role role1, ele herda as permisses CREATE RULE e CREATE PROCEDURE. Como o usurio tambm pertence role role2, ele herda as permisses da role2, que so negar CREATE TABLE e negar CREATE VIEW. Como negar tem precedncia sobre permitir, o usurio user2 ter somente as permisses CREATE RULE e CREATE PROCEDURE. Qual a permisso efetiva do usurio user2? CREATE RULE. CREATE PROCEDURE. Exerccio: Considerando a situao descrita na Figura 6.32, determine as permisses efetivas para os usurio user1, user2, user3, user4 e user5. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3520000Curso Completo Figura 6.32 Determine as permisses efetivas para cada usurio. Observe que medida que novas permisses vo sendo atribudas pode ser difcil determinar o real nvel de acesso de cada usurio. Para que voc possa manter um controle sobre a atribuio de permisses, fao as seguintes sugestes: Mantenha uma documentao sobre as atribuies de permisso. chato? . Ningum gosta? Ningum gosta. Porm a documentao de fundamental importncia, pois se no tivermos um controle sobre as atribuies de permisso, podemos chegar a situaes onde usurios que no devem ter acesso esto tendo e usurios que devem ter acesso no esto tendo. Enfim, uma grande baguna. Procure sempre atribuir permisses a roles e no aos usurios individualmente. Isto facilita bastante a administrao das permisses. Procure agrupar os usurios que tm necessidades de acesso iguais em uma role. Atribua as permisses para a role em vez de atribuir para os usurios individualmente. Este procedimento ir facilitar bastante a administrao de segurana no SQL Server 2005. DANDO PERMISSES A OBJETOS DO BANCO DE DADOS As permisses a objetos aplicam-se aos diversos elementos de um Banco de Dados. Por exemplo, em uma tabela podemos ter permisso de leitura dos dados (SELECT), adio de novos registros (INSERT), excluso de registros (DELETE) e assim por diante. As permisses objetos so as que mais diretamente se relacionam com as atividades dirias dos usurios do Banco de Dados. Por exemplo, se um determinado usurio utiliza uma aplicao que acessa o Banco de Dados no servidor SQL Server e este proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000353 usurio deve ter permisso somente de leitura para os dados de uma determinada tabela, o inclumos em uma role com permisso SELECT na tabela e pronto, o usurio somente poder consultar os dados. Na Tabela 6.22, temos a descrio das principais permisses a objetos. Permisso Se aplica : SELECT Tabelas, views e colunas. INSERT Tabelas e views. DELETE Tabelas e views. UPDATE Tabelas, views e colunas. EXECUTE Stored procedures. REFERENCES (DRI) Tabelas e colunas. Tabela 6.22 Principais permisses de objetos do Banco de Dados. Podemos atribuir estas permisses para usurios e roles do Banco de Dados. As consideraes que podemos fazer em relao atribuio de permisses para objetos do Banco de Dados so as mesmas que fizemos para o caso de permisses para o Banco de Dados. Agora vamos aprender a atribuir permisses nos objetos do Banco de Dados Exemplo1, para usurios e roles. Depois vamos testar as permisses. Exemplo prtico: Utilizando o SQL Server Management Studio, atribua as seguintes permisses indicadas na lista a seguir, para a tabela Clientes, do Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005: SERVIDOR\user1: SELECT E INSERT SERVIDOR\user2: INSERT E DELETE role1: UPDATE e DELETE Para configurar as permisses sugeridas, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio, e navegue at o Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005. 2. D um clique no sinal de + ao lado de Exemplo1, para exibir as classes de objetos deste Banco de Dados. 3. D um clique no sinal de + ao lado da opo Tables, para exibir as tabelas do Banco de Dados. 4. D um clique com o boto direito do mouse na tabela Clientes e, no menu que surge, d um clique em Properties. Ser exibida a janela de propriedades da tabela Clientes. 5. Nesta janela d um clique na opo Permissions, no painel da esquerda. Surge a janela para definio de permisses da tabela Clientes. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3540000Curso Completo 6. A lista de users, com permisses, est em branco. Ento, o primeiro passo adicionar os users SERVIDOR\user1, SERVIDOR\user2 e a role role1. Para fazer isso, clique no boto Add. Ser aberta a janela Select User or Roles. Clique no boto Browse., para exibir a lista de User e Roles disponveis. Ser aberta a janela Browse for Objects. Marque os users SERVIDOR\user1, SERVIDOR\user2 e a role role1, conforme exemplo da Figura 6.33. Clique em OK para fechar a janela Browse for Objects. Voc estar de volta janela Select Users and Roles. Clique em OK para fechar esta janela. Voc estar de volta guia Permissions, da janela de propriedades da tabela Clientes, do Banco de Dados Exemplo1. Figura 6.33 Adiconando users e roles que recebero permisses. 7. Para definir as permisses para cada usurio/role, s selecionar o respectivo usurio na lista User or roles e, na parte de baixo da janela, definir as permisses para o usurio/role selecionado. A exemplo do que ocorre com as permisses de Banco de Dados, as permisses para objetos de um Banco de Dados tambm podem ser permitidas (Allow) ou negadas (Denny). 8. Clique no user SERVIDOR\user1, para selecion-lo. Marque as permisses SELECT e INSERT, na coluna Allow, para dar estas permisses para o usurio SERVIDOR\user1. 9. Clique no user SERVIDOR\user2, para selecion-lo. Marque as permisses INSERT e DELETE, na coluna Allow, para dar estas permisses para o usurio SERVIDOR\user2. 10. Clique na role role1, para selecion-la. Marque as permisses UPDATE e DELETE, na coluna Allow, para dar estas permisses para a role role1, conforme indicado na Figura 6.34. 11. Definidas as permisses propostas no nosso exemplo, d um clique em OK para fechar a janela de propriedades da tabela Clientes. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000355 Figura 6.34 Definindo as permisses para a role role1. 12. A pergunta : Qual a permisso efetiva para os usurios SERVIDOR\user1 e SERVIDOR\user2, na tabela Clientes, do Banco de Dados Exemplo1, com base nas permisses atribudas no nosso ltimo exemplo? Vamos analisar com calma. Primeiro: O usurio SERVIDOR\user1 pertence a role role1, portanto o usurio user1 herdar as permisses desta role. Portanto o usurio SERVIDOR\user1 acumular as permisses explicitamente atribudas para ele SELECT e INSERT e as herdadas da role role1 UPDATE e DELETE. Com isso a permisso efetiva do usurio SERVIDOR\user1 ser: SELECT INSERT UPDATE DELETE ou seja, o usurio poder selecionar, inserir, alterar e excluir registros. Exerccio: Determine as permisses efetivas do usurio SERVIDOR\user2 na tabela Clientes. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3560000Curso Completo N O T A Tambm podemos definir as permisses de Banco de Dados, utilizando comandos T-SQL. Para atribuir permisses de objetos do Banco de Dados utilize o comando GRANT. Sintaxe para o comando GRANT: GRANT { ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } TO security_account [ ,...n ] [ WITH GRANT OPTION ] [ AS { group | role } ] Como a sintaxe completa no muito amistosa, vamos utilizar alguns exemplos para ilustrar a utilizao do comando GRANT. Exemplo 1: Garantir para o usurio SERVIDOR\user1 a permisso de selecionar novos registros e atualizar os registros existentes, na tabela Clientes do Banco de Dados Exemplo1: Use Exemplo1 GRANT SELECT, UPDATE ON Clientes TO [SERVIDOR\user1] Quando o login for um usurio do Windows, o nome deve vir entre colchetes, como no exemplo: [SERVIDOR\user1] Podemos atribuir mais do que uma permisso ao mesmo tempo, para um ou mais logins ou usurios. Exemplo 2: Garantir para os usurios SERVIDOR\user1 e SERVIDOR\user2 a permisso de selecionar novos registros, atualiz-los e exclu-los, na tabela Clientes do Banco de Dados Exemplo1: Use Exemplo1 GRANT SELECT, UPDATE, DELETE ON Clientes TO [SERVIDOR\user1], [SERVIDOR\user2] Exemplo 3: Atribuir todas as permisses para o usurio SERVIDOR\user2, na tabela Clientes do Banco de Dados Exemplo1. USE Exemplo1 GRANT ALL ON Clientes TO [SERVIDOR\user2] Observe que utilizamos a palavra ALL, para significar todas as permisses. Para uma descrio completa, de todas as opes do comando GRANT, consulte o tpico Transact SQL Reference, no Books OnLine. Para retirar (revoke) as permisses de objetos do Banco de Dados utilize o comando REVOKE. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000357 Sintaxe para o comando REVOKE: REVOKE [ GRANT OPTION FOR ] { ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } { TO | FROM } security_account [ ,...n ] [ CASCADE ] [ AS { group | role } ] Como a sintaxe completa no muito amistosa, vamos utilizar alguns exemplos para ilustrar a utilizao do comando REVOKE. Exemplo 1: Retirar a permisso UPDATE, atribuda para o usurio SERVIDOR\user1, anteriormente. USE Exemplo1 REVOKE UPDATE ON Clientes TO [SERVIDOR\user1] Podemos retirar mais do que uma permisso ao mesmo tempo, para um ou mais usurios. Exemplo 2: Retirar as permisses SELECT, UPDATE E DELETE, atribudas para o usurio SERVIDOR\user1 na tabela Clientes do Banco de Dados Exemplo1. USE Exemplo1 REVOKE SELECT, UPDATE, DELETE ON Clientes TO [SERVIDOR\user1] Exemplo 3: Retirar todas as permisses atribudas ao usurio SERVIDOR\user2, na tabela Clientes do Banco de Dados Exemplo1. USE Exemplo1 REVOKE ALL ON Clientes TO [SERVIDOR\user2] Observe que utilizamos a palavra ALL, para significar todas as permisses. Para negar (negar) as permisses de objetos do Banco de Dados utilize o comando DENY. Sintaxe para o comando DENY: DENY { ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } TO security_account [ ,...n ] [ CASCADE ] proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3580000Curso Completo Como a sintaxe completa no muito amistosa, vamos utilizar alguns exemplos para ilustrar a utilizao do comando DENY. Exemplo 1: Negar permisso UPDATE, para o usurio SERVIDOR\user1, na tabela Clientes, do Banco de Dados Exemplo1. USE Exemplo1 DENY UPDATE ON Clientes TO [SERVIDOR\user1] Podemos negar mais do que uma permisso ao mesmo tempo, para um ou mais usurios. Exemplo 2: Negar as permisses SELECT, UPDATE E DELETE, para o usurio SERVIDOR\user1, na tabela Clientes do Banco de Dados Exemplo1. USE Exemplo1 DENY SELECT, UPDATE, DELETE ON Clientes TO [SERVIDOR\user1] Exemplo 3: Negar todas as permisses atribudas ao usurio SERVIDOR\user2, na tabela Clientes do Banco de Dados Exemplo1. USE Exemplo1 DENY ALL ON Clientes TO [SERVIDOR\user2] Observe que utilizamos a palavra ALL, para significar todas as permisses. Na Figura 6.35, temos a janela com as permisses da tabela Clientes, aps a execuo do comando do Exemplo 3: Figura 6.35 Todas as permisses negadas para SERVIDOR\user2. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000359 Observe que todas as permisses foram negadas para o usurio SERVIDOR\user2, com exceo de permisses tais como Alter, Control, Take Ownership e outras, as quais no se aplicam a tabelas, e sim a outros objetos de um Banco de Dados, tais como views e stored procedures. E para finalizar, mais um pequeno exerccio. Exerccio: Considerando a situao descrita na Figura 6.36, determine as permisses efetivas para os usurio user1, user2, user3, user4 e user5, na tabela Produtos do Banco de Dados Exemplo1. Figura 6.36 Determine as permisses efetivas para cada usurio. Observe que, medida que novas permisses vo sendo atribudas, pode ser difcil determinar o real nvel de acesso de cada usurio, a cada objeto, de cada um dos Bancos de Dados. Para que voc possa manter um controle sobre a atribuio de permisses, fao as seguintes sugestes: Mantenha uma documentao sobre as atribuies de permisso. chato? . Ningum gosta? Ningum gosta. Porm a documentao de fundamental importncia, pois, se no tivermos um controle sobre as atribuies de permisso, podemos chegar a situaes onde usurios que no devem ter acesso esto tendo e usurios que devem ter acesso no esto tendo. Enfim, uma grande baguna. Procure sempre atribuir permisses a roles e no aos usurios individualmente. Isto facilita bastante a administrao das permisses. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3600000Curso Completo TRABALHANDO COM SCHEMAS No incio do captulo, onde eu falei sobre as novidades na parte de segurana do SQL Server 2005, em relao s verses anteriores do SQL Server, eu salientei que uma das principais mudanas era a separao que foi feita entre usurios e schemas. Tambm mostrei as vantagens desta separao, onde no existe mais o conceito de dono dos objetos de um Banco de Dados, tais como tabelas, views e stored proce- dures. No SQL Server 2005, todos os objetos pertencem a um schema e temos o dono do schema e no mais o dono dos objetos. Neste tpico, mostrarei as aes prticas para trabalhar com schemas, usando o SQL Server Manage- ment Studio. Voc aprender a executar as seguintes aes: Criar novos schemas Atribuir objetos a um schema Alterar o dono de um schema Exemplo1: Os schemas so criados dentro de um Banco de Dados. Neste exemplo, vamos criar um schema chamado Produo, dentro do Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005. Para criar o schema Produo, no Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio. 2. Na janela Object Explorer, navegue at o Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005. 3. Clique no sinal de + ao lado de Exemplo1, para exibir as opes disponveis. Os schemas fazem parte da opo Security. 4. Clique no sinal de + ao lado da opo Security, para exibir as opes disponveis. Observe que uma das opes disponveis Schemas. 5. Clique no sinal de + ao lado da opo schemas e observe a lista de schemas j definidos, no Banco de Dados Exemplo1, conforme indicado na Figura 6.37. 6. Clique com o boto direito do mouse na opo schemas e, no menu de opes que exibido, clique em New schema. 7. Ser aberta a janela schema New. No campo Name digite Produo e, para dono deste schema, vamos selecionar a role Gerentes. No campo schema Owner digite Gerentes. Sua tela deve estar conforme indicado na Figura 6.38. 8. Clique em OK e pronto, o novo schema Produo ter sido criado no Banco de Dados Exemplo1, sendo o dono deste schema a role Gerentes. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000361 Figura 6.37 schemas existentes no Banco de Dados Exemplo1. Figura 6.38 Criando o novo schema Produo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3620000Curso Completo Aps criar um schema voc poder criar novos objetos e adicion-los a este schema, poder alterar as propriedades dos objetos j existentes, para que passem a fazer parte deste schema e poder atribuir permisses de acesso, diretamente ao schema. Ao criar um novo objeto, como por exemplo uma nova tabela, voc pode definir a qual schema a tabela ir pertencer. O SQL Server 2005 atribuir o novo objeto que est sendo criado, ao schema definido como Default schema, para o usurio logado. Na maioria dos casos, o Default schema o schema dbo. Mas, na hora da criao de um objeto, voc pode definir a qual schema o objeto ir pertencer. Por exemplo, para criar uma nova tabela, voc navega at a opo Tabelas, do Banco de Dados onde a tabela ser criada, clica com o boto direito do mouse na opo Tables e, no menu de opes que exibido, clica na opo New Table. Ser aberta a janela para criao de novas tabelas, janela esta que voc aprendeu a utilizar no Captulo 4. A definio de a qual schema ir pertencer a tabela feita na janela Propriedades. Se a janela Propriedades no estiver sendo exibida, tecle F4 para exibir a janela propriedades. Na janela de propriedades, na lista schema, voc seleciona o schema ao qual ir pertencer a tabela que est sendo criada, conforme exemplo da Figura 6.39, onde estou selecionando o schema Produo. Figura 6.39 Selecionando o schema ao qual ir pertencer a tabela Vendas. Aps salvar e fechar a janela de criao da tabela, ela ser exibida, na lista de tabelas do Banco de Dados, com o nome Produo.Vendas, ou seja, seguindo o padro: Nome_do_Schema.Nome_da_Tabela, conforme exemplo da Figura 6.40: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 6 SEGURANA NO SQL SERVER 2005 Curso Completo0000363 Figura 6.40 A tabela Vendas do schema Produo. No incio do captulo, quando falei sobre as vantagens da separao entre schemas e users, falei que uma das principais vantagens que podamos alterar o dono de um schema e isso no mudaria o nome completo para acessar os objetos que pertencem ao schema, pois o que estava mudando era apenas o dono e no o nome do schema. Isso no ocorria nas verses anteriores do SQL Server, porque no havia esta separao entre usurios e schemas. Ao mudar o dono de um schema, mudava tambm o seu nome, o que poderia causar enormes transtornos, tais como aplicaes tendo que ser alteradas, com alterao no cdigo das aplicaes, para atualizar o nome dos objetos que mudaram devido a mudana no dono de um ou mais schemas. Alterar o dono de um schema um processo muito simples, no SQL Server 2005. Basta abrir o SQL Server Management Studio e localizar o schema a ser alterado. D um clique duplo no schema, para abrir a janela de Propreidades do schema. Na janela de propriedades, na guia Geral, no camo schema Owner, basta digitar o nome do novo dono (que pode ser um usurio ou uma role) e clicar em OK. Pronto, o dono do schema foi alterado, sem causar nenhuma alterao no nome completo dos objetos pertencentes ao schema. Todas as aplicaes que utilizavam os objetos do schema continuam funcionando, normalmente, sem nenhuma necessidade de alterao. Bem mais simples e prtico do que nas verses anteriores do SQL Server. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3640000Curso Completo CONCLUSO Neste captulo tratamos, extensivamente, sobre a configurao de segurana no acesso ao servidor e aos dados de um servidor SQL Server 2005. Tambm apresentamos os conceitos bsicos sobre usurios e grupos no Windows 2000 Server e Windows Server 2003. Aprendemos que existem dois modos de autenticao: Windows Authentication mode. SQL Server and Windows Authentication mode. Em seguida ns vimos que existem diversos estgios a serem vencidos at que o usurio possa ter acesso aos dados. O primeiro estgio estar cadastrado com um login no SERVIDOR\instncia. Para gerenciar logins, utilizamos a opo Logins, a qual est dentro da opo Security, em cada instncia. O segundo estgio estar cadastrado na lista de usurios com permisso de acesso ao Banco de Dados. Cada Banco de Dados possui a sua prpria lista de usurios. Para gerenciar usurios, utilizamos a opo Security -> Users, do Banco de Dados. O estgio final dar as devidas permisses de acesso, tanto em nvel do Banco de Dados, quanto em nvel dos objetos do Banco de Dados. As permisses em nvel de Banco de Dados definem quem pode criar novos objetos, alterar os objetos existentes ou at mesmo excluir objetos. J as permisses em nvel de objeto definem o nvel de acesso aos dados, por exemplo somente leitura (SELECT), alterao (UPDATE) e assim por diante. Falamos bastante sobre o papel das roles e a sua semelhana de funcionalidade com os grupos do Windows 2000 e Windows Server 2003. Aprendemos a realizar as tarefas utilizando as seguintes ferramentas: SQL Server Management Studio. Comandos T-SQL, na janela de execuo de comandos. Sei que o captulo foi longo, mas no poderia ser diferente, devido grande importncia do assunto segurana. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Captulo 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3660000Curso Completo N O T A INTRODUO Nos captulos anteriores aprendemos a criar Bancos de Dados, tabelas e ndices. Tambm aprendemos a fazer o backup e o restore de Bancos de Dados. No Captulo 6 aprendemos a configurar a segurana no SQL Server 2005 e a integrao com a segurana do Windows. Agora, j temos um Banco de Dados configurado e razoavelmente seguro. Porm existe uma srie de outras tarefas que devem ser executadas para garantir, alm da disponibilidade e segurana, o desempenho e a confiabilidade do Banco de Dados. Neste captulo aprenderemos a utilizar uma srie de ferramentas que auxiliam o DBA a administrar, monitorar e otimizar os Bancos de Dados de uma ou mais instncias do servidor SQL Server 2005. Iniciaremos o captulo aprendendo a criar um Plano de Manuteno para o Banco de Dados. Iremos criar este plano de manuteno utilizando o assistente Maintenance Plan. Depois aprenderemos a utilizar os chamados comandos DBCC Database Consistency Checker. Estes comandos so utilizados para efetuar uma srie de verificaes de consistncia em um Banco de Dados; em resumo, nos ajudam a diagnosticar e corrigir problemas que possam existir nas tabelas e ndices do banco de dados. Com isso, trabalhamos de maneira proativa, procurando nos antecipar aos problemas, antes mesmo que eles aconteam. Tambm aprenderemos a importar dados para uma tabela do Banco de Dados e exportar dados do SQL Server para fontes externas. Continuaremos o captulo aprendendo a utilizar o DTS Data Transformation Services. Na verdade, DTS o nome da ferramenta que coordena o acesso a diversas fontes de dados no SQL Server 2000. No SQL Server 2005 esta ferramenta bem mais poderosa e mais fcil de utilizar. Esta uma ferramenta que permite a integrao entre fontes de dados nos mais diversos formatos, atravs da tecnologia OLE-DB. Por exemplo, podemos consolidar nas tabelas de um Banco de Dados do SQL Server 2005 dados originados do mainframe, combinados com dados do Microsoft Access e dados do DB2 da IBM. Ou, quem sabe, para misturar um pouco mais, vamos tambm adicionar dados de uma planilha do Excel e de um Banco de Dados no formato Dbase (.dbf). Esta integrao possvel, graas ao Business Intelligence Development Studio, que como conhecido todo o ambiente do DTS, no SQL Server 2005. Mas o mais interessante que no estamos limitados a integrar dados de fontes diversas, tambm podemos transform-los (T de Transformation). Na continuao aprenderemos a utilizar uma ferramenta de monitorao de performance do Windows 2000 Server/Windows Server 2003: o console Desempenho. Atravs deste console podemos medir o desempenho de uma srie de objetos/contadores relacionados com o SQL Server 2005. Por exemplo, podemos determinar o nmero de transaes por segundo, o nmero de logins por segundo, etc. Vamos fazer alguns exemplos prticos para aprender a utilizar este con- sole. O console Desempenho pode ser utilizado para monitorar o desempenho de uma srie de objetos/contadores, no estando limitado a objetos/contadores do SQL Server 2005. Assim, podemos, por exemplo, monitorar o uso de recursos crticos para o servidor Windows, tais como a utilizao do processador, da memria RAM e das operaes de I/O de disco. Porm, neste captulo nos limitaremos anlise de desempenho dos objetos/contadores relacionados com o SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000367 N O T A Explicarei em detalhes o conceito de objetos/contadores na seo sobre desempenho. A prxima e ltima ferramenta a ser analisada neste captulo o Profiler. Esta ferramenta permite a monitorao das atividades de cada instncia do servidor SQL Server 2005, separadamente. Tambm podemos monitorar as atividades de Banco de Dados. Alm de monitorar, a atividade pode ser salva e depois executada novamente contra o Banco de Dados. Tambm podemos salvar os dados capturados em uma tabela, em um arquivo ou em um Script SQL. KNOW-HOW EM: CRIAO DE UM PLANO DE MANUTENO PARA UM BANCO DE DADOS DO SQL SERVER 2005 PR-REQUISITOS Fundamentos apresentados na Parte I. Fundamentos sobre segurana no SQL Server 2005. Saber utilizar o Enterprise Manager. METODOLOGIA Apresentao dos passos necessrios para a criao de um plano de manuteno. TCNICA Criao de um plano de manuteno utilizando o SQL Server Management Studio. Um plano de manuteno define uma srie de tarefas que devem ser executadas no Banco de Dados para garantir o bom funcionamento do banco, com bom desempenho e garantia de disponibilidade dos dados, atravs de uma estratgia adequada de backup/restore. Com o plano de manuteno tambm so definidas as tarefas de backup para evitar a perda de informaes, alm de tarefas que verificam a integridade dos objetos do Banco de Dados. Esta srie de tarefas pode ser criada de uma maneira consolidada, atravs da utilizao da criao de um plano de manuteno (Maintenance Plan). Voc pode criar um plano de manuteno manualmente, mas a maneira mais fcil e prtica criarmos um plano de manuteno do Banco de Dados, utilizando o assistente Maintenance Plan Wizard. Este assistente, ao ser executado, cria e agenda para execuo peridica vrios jobs, sendo que cada job executa uma determinada tarefa. Os jobs, criados pelo assistente Database Maintenance Plan Wizard, executam as seguintes tarefas: Reorganizam os dados nas pginas de dados e ndices atravs da reconstruo dos ndices com um novo valor para o parmetro Fill Factor. Isto garante uma melhor distribuio dos dados, com uma melhora no desempenho. Para maiores informaes sobre o parmetro Fill Factor, consulte o Captulo 4. Fazem a compactao do Banco de Dados, removendo pginas de dados que esto vazias. Atualizam uma srie de informaes sobre os ndices do Banco de Dados. Estas informaes so chamadas de Indexes Statistics. Com essa atualizao, o SQL Server 2005 tem condio proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3680000Curso Completo N O T A de tomar melhores decises na hora de executar uma consulta. O resultado final um desempenho bem melhor. Fazem uma verificao interna na consistncia dos dados, para certificar-se de que os dados no esto corrompidos ou em um estado inconsistente. Agendam o backup do Banco de Dados e do log de transaes. Alm disso, podemos configurar um perodo durante o qual os backups devero ser mantidos. Porm, para manter um histrico dos backups, devemos levar em considerao as necessidades de armazenamento e mdias, no caso de estarmos efetuando o backup em fita magntica. A replicao de dados pode tambm ser utilizada para manter cpias idnticas dos dados em dois ou mais servidores. Aprenderemos sobre replicao no Captulo 8. No Captulo 14 aprenderemos sobre novos recursos do SQL Server 2005, os quais tambm podem ser utilizados para duplicao de dados, tais como Database Snapshot e Database Mirror. Para que voc possa criar um plano de manuteno, usando o Maintenance Plan Wizard, o login que voc est utilizando deve ser um membro da seguinte role: MaintenanceUserRole. Evidentemente que, por padro, a conta sa tem estas permisses, bem como todas as contas pertencentes ao grupo Administradores, do Windows. Voc pode atribuir a permisso de criar planos de manuteno para qualquer login. Para isso, basta navegar at a opo Security, da instncia a ser configurada, expandir a opo Logins, clicar com o boto direito do mouse no login a ser configurado e, no menu de opes que exibido, clicar em Propriedades. Ser aberta a janela de propriedades do login, com a guia Gen- eral selecionada por padro. Clique na guia Database Access. Na lista Databases acessible by this login, marque o banco de dados msdb. Na lista Database roles for: msdb, na parte de baixo da janela, marque a role MaintenanceUserRole e clique em OK. Pronto, o login foi configurado, com permisso de criar um plano de manuteno, usando o assistente. Agora vamos aprender a criar um plano de manuteno, utilizando o Maintenance Plan Wizard, ou melhor, o Assistente de Plano de Manuteno. Exemplo prtico: Para criar um plano de manuteno para o Banco de Dados AdventureWorks, da instncia SERVIDOR\SQL2005, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio (Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Server Management Studio). 2. Na janela Object Explorer, localize a instncia SERVIDOR\SQL2005 e d um clique no sinal de +, ao lado desta instncia, para exibir as opes disponveis. 3. Nas opes que surgem, d um clique no sinal de + ao lado da opo Management, para exibir as opes disponveis. 4. Dentre as opes que so exibidas, clique com o boto direito do mouse na opo Mainte- nance Plans. No menu que surge, clique na opo Maintenance Plan Wizard. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000369 Figura 7.1 Definindo a instncia do SQL Server 2005, na qual ser criado o plano. 6. Nesta etapa voc define em qual instncia do SQL Server 2005 ser criado o plano de manuteno. Por padro, vem selecionada a instncia dentro da qual estava a opo Manage- ment -> Maintenance Plans, na qual voc clicou com o boto direito do mouse. Vamos aceitar a instncia sugerida, pois exatamente nesta que queremos criar um plano de manuteno. D um clique no boto Next, seguindo para a prxima etapa do assistente. 7. Nesta etapa voc define quais tarefas faro parte do plano de manuteno. Por padro, vm selecionadas todas as tarefas: Chek database integrity, Shrink database, Defragment index(es), Re-index, Update statistics, History cleanup, Launxh SQL Server agent job, Backup database (full), Backup database (Differential) e Backup database (Transaction Log). Deixe todas as opes marcadas, com exceo da opo Backup database (Differential). D um clique no boto Next, seguindo para a prxima etapa do assistente. 8. Nesta etapa voc define a ordem em que as tarefas sero executadas. Para alterar a ordem, voc marca uma determinada tarefa e clica no boto Move up, para mov-la para cima na lista, ou Move down, para mov-la para baixo na lista. No vamos alterar a ordem sugerida. D um clique no boto Next, seguindo para a prxima etapa do assistente. 9. Abra a lista Select one or more. Ao abrir esta lista, sero disponibilizadas diversas opes. Nesta etapa podemos definir se o plano de manuteno incluir todos os Bancos de Dados da instncia 5. Ser exibida a tela inicial do assistente, com uma mensagem informando sobre o que pode ser feito com o assistente. D um clique no boto Next, seguindo para a prxima etapa. Surgir a tela indicada na Figura 7.1. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3700000Curso Completo (All databases), ou apenas os do sistema (All system databases (master, model, and msdb)), ou se incluir todos os Bancos de Dados do usurio (All user databases (all databases other than master, model, and msdb)) ou apenas os selecionados (These specific databases). A opo These specific databases j vem selecionada por padro. Na lista de Bancos de Dados podemos selecionar aqueles que queremos incluir no plano de manuteno. No nosso exemplo iremos incluir apenas o Banco de Dados AdventureWorks. Certifique-se de que o Banco de dados AdventureWorks esteja selecionado na lista de Bancos de Dados. Sua janela deve estar semelhante indicada na Figura 7.2: Figura 7.2 Selecionando o banco de dados AdventureWorks. 10. Clique em OK para fechar a lista de opes e certifique-se de que a opo Include indexes, esteja selecionada, para garantir que a otimizao dos ndices do banco de dados AdventureWorks seja includa no plano de manuteno. D um clique no boto Avanar para ir para a prxima etapa do assistente. 11. Nesta etapa, definiremos para quais bancos de dados sero criadas tarefas de otimizao. Abra a lista Select one or more. Ao abrir esta lista, sero disponibilizadas diversas opes, j descritas anteriormente. A opo These specific databases j vem selecionada por padro. Na lista de Bancos de Dados podemos selecionar aqueles que queremos incluir no plano de manuteno. No nosso exemplo iremos incluir apenas o Banco de Dados AdventureWorks. Certifique-se de que o Banco de dados AdventureWorks esteja selecionado na lista de Bancos de Dados. Clique em OK para fechar a lista de opes. Ao selecionar um banco de dados, sero habilitadas as pores de otimizao e recuperao de espao. Aceite as configuraes sugeridas e d um clique no boto Next para ir para a prxima etapa do assistente. 12. Nesta etapa podemos definir uma srie de configuraes a respeito da otimizao dos ndices e das pginas de dados do Banco de Dados. Nesta etapa voc tem trs listas de opes. Na primeira proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000371 lista voc pode ver quais bancos de dados sero includos no plano de manuteno, para terem os ndices de suas tabelas e views desfragmentados. Abra a primeira lista (Database(s):) e selecione somente o banco de dados AdventureWorks. Na segunda lista (Object), voc seleciona a opo Table para otimizar somente os ndices das tabelas, ou a opo View, para otimizar somente os ndices das views, ou a opo Tables and Views, para otimizar os ndices tanto das tabelas quanto das views. Selecione a opo Tables and Views. Ao selecionar a opo Table and Views, automaticamente, sero selecionadas todas as tabelas e views. Se voc selecionar uma opo individual, como por exemplo Table, na terceira lista, voc poder marcar somente determinadas tabelas, para ter os ndices otimizados. Com as opes selecionadas, sua janela deve estar semelhante indicada na Figura 7.3. Figura 7.3 Definindo otimizaes dos ndices. 13. D um clique no boto Next para ir para a prxima etapa do assistente. 14. Nesta etapa voc seleciona para quais bancos de dados sero criadas tarefas, que iro recriar os ndices, quando as tarefas forem executadas. As trs primeiras listas tm funcionamento idntico s trs listas da Figura 7.3. Na primeira lista voc marca um ou mais bancos de dados, na segunda lista voc seleciona as opes Table, Views ou Tables and Views e, na terceira lista, os objetos, individualmente, dependendo de qual opo foi selecionada na segunda lista. Esta tela tem uma srie de opes avanadas, que somente um DBA experiente dever alterar, ou seja, somente altere estas opes se voc conhecer exatamente o que est fazendo. Para o nosso exemplo, na primeira lista, selecione o banco de dados AdventureWorks e, na segunda lista, selecione a opo Tables and Views. Mantenha as demais opes desta etapa inalteradas. D um clique no boto Next para ir para a prxima etapa do assistente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3720000Curso Completo 15. Nesta etapa voc seleciona para quais bancos de dados sero criadas tarefas, para atualizar as estatsticas das tabelas e views, quando as tarefas forem executadas. As trs primeiras listas tm funcionamento idntico s trs listas da Figura 7.3. Na primeira lista voc marca um ou mais bancos de dados, na segunda lista voc seleciona as opes Table, Views ou Tables and Views e, na terceira lista, os objetos, individualmente, dependendo de qual opo foi selecionada na segunda lista. Para o nosso exemplo, na primeira lista, selecione o banco de dados AdventureWorks e, na segunda lista, selecione a opo Tables and Views. Mantenha as demais opes desta etapa inalteradas. D um clique no boto Next para ir para a prxima etapa do assistente. 16. Nesta etapa voc seleciona quais opes de histricos sero limpas, quando as tarefas do plano de manuteno forem executadas e a periodicidade com que estas tarefas (especficas para limpeza dos histricos) devem ser executadas. Nesta etapa, voc pode marcar as opes Backup and Restory history, SQL Server Agent Job history e Database Maintenance Plan History. Por padro, estas trs opes vm selecionadas. Na parte de baixo da janela, voc define quais dados devem ser excludos do histrico. Por padro, vem selecionada a opo 4 Week(s), significando que sero criadas tarefas, no plano de manuteno, para excluir dados que tenham sido gravados a mais de quatro semanas, nos histricos selecionados. Nesta etapa vamos aceitar as configuraes padro, indicadas na Figura 7.4. D um clique no boto Next para ir para a prxima etapa do assistente. Figura 7.4 Definindo opes para limpar dados dos histricos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000373 17. Nesta etapa so exibidos os jobs j existentes, criados anteriormente. Voc pode marcar um ou mais jobs para serem executados, tambm como parte do plano de manuteno. No nosso exemplo, incluiremos todos os jobs j existentes, como parte do plano de manuteno. Certifique-se de que todos os jobs estejam selecionados. D um clique no boto Next para ir para a prxima etapa do assistente. 18. Nesta etapa voc ir definir para quais bancos de dados sero criadas tarefas de backup, como parte do plano de execuo. Abra a lista Databases e, abaixo da opo These specific databases, marque o banco de dados AdventureWorks e clique em OK. As demais opes sero habilitadas. Voc pode definir se o backup ser feito em disco ou em fita, em qual pasta ser feito o backup (no caso de um backup em disco), se os backups j existentes devem ser sobrescritos ou no e assim por diante. Defina as opes desejadas e clique em Next, para seguir para a prxima etapa do assistente. 19. Nesta etapa voc pode criar tarefas que faro o backup diferencial de um ou mais bancos de dados. Vamos incluir um backup diferencial do banco de dados AdventureWorks, como parte do plano de manuteno. Na lista Database(s):, selecione o banco de dados AdventureWorks e clique em OK. Aceite as demais opes e clique em Next, para seguir para a prxima etapa do assistente. 20. Nesta etapa voc pode criar tarefas que faro o backup do log de transaes de um ou mais bancos de dados. Vamos incluir um backup do log do banco de dados AdventureWorks, como parte do plano de manuteno. Na lista Database(s):, selecione o banco de dados AdventureWorks e clique em OK. Aceite as demais opes e clique em Next, para seguir para a prxima etapa do assistente. 21. Nesta etapa voc pode definir uma conta conhecida como Proxy Account. Se for configurada uma conta como Proxy Account, as tarefas sero executadas no contexto desta conta, ou seja, a conta configurada como Proxy Account dever ter todas as permisses necessrias para executar as tarefas do plano de manuteno. Para o nosso exemplo, no irei configurar uma conta como Proxy Account. Clique em Next, para seguir para a prxima etapa do assistente. 22. Nesta etapa voc define em qual pasta ser gravado um relatrio sobre o plano de manuteno. Por padro vem selecionado C:\. Vamos aceitar as configuraes sugeridas. Clique em Next, para seguir para a prxima etapa do assistente. 23. Ser exibida a tela final do assistente. Se voc precisar alterar alguma opo, utilize o boto Back. Para finalizar o assistente e criar o plano de manuteno, clique em Finish. O SQL Server 2005 mostrar o progresso da criao do plano de manuteno, conforme indicado na Figura 7.5. 24. Uma vez concluda a criao do plano de manuteno, ser exibida a janela com o resultado da criao. Clique em Close para fechar esta janela. Pronto, o plano de manuteno foi criado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3740000Curso Completo Figura 7.5 Progresso da criao do plano de manuteno. Voc pode alterar um plano de manuteno quando for necessrio. Para isso basta localizar o plano de manuteno, clicar com o boto direito do mouse no mesmo, e no menu que surge, clicar em Modify. Na Figura 7.6 temos a janela de propriedades do plano de manuteno criado neste exemplo. Observe que, bem no lado esquerdo da tela, exibido o painel Maintenance Tasks. Neste painel, exibida a lista de tarefas que compem o plano de manuteno. No lado direito da tela, so exibidas as guias que do acesso s propriedades do plano de manuteno. D um clique na guia Subplan Editor. Observe que as diversas tarefas que compem o plano de manuteno so representadas na forma de um diagrama de blocos seqencial, onde uma tarefa executada aps a outra, conforme indicado na Figura 7.7. Voc pode, facilmente, acessar os comandos T-SQL associados a cada uma das tarefas. Por exemplo, clique na primeira tarefa Check database, para selecion-la. Estando o retngulo da primeira tarefa selecionado, clique com o boto direito do mouse nele e, no menu de opes que exibido, clique em Edit. Ser aberta a janela de propriedades da tarefa. Clique no boto View T-SQL. Sero exibidos os comandos T-SQL que sero executados, quando a tarefa for executada. Clique em Close para fechar a janela de comandos T-SQL. Clique em OK para fechar a janela de propriedades do job. Para fazer com que todas as tarefas do plano de manuteno sejam executadas, imediatamente, basta clicar no plano de execuo com o boto direito do mouse e, no menu de opes que exibido, clicar em Execute. Para acessar o histrico de execuo, clique com o boto direito do mouse e, no menu de opes que exibido, clique em View History. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000375 Figura 7.6 Propriedades do plano de manuteno. Figura 7.7 Podemos ver os diversos jobs criados pelo plano de manuteno. 25. Feche o SQL Server Management Studio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3760000Curso Completo O assistente para criao de um plano de manuteno um bom auxiliar para ajudar na criao de planos de manuteno bsicos. Claro que, depois que voc j for um DBA mais experiente, mais rodado, voc, provavelmente, utilizar o assistente apenas como um ponto de partida. Depois, com base na sua experincia, ir personalizar as tarefas criadas pelo assistente e, at mesmo, criar novas tarefas. KNOW-HOW EM: COMANDOS DBCC DATABASE CONSISTENCY CHECKER PR-REQUISITOS Noes sobre o log de transaes. Fundamentos apresentados na Parte I. Saber utilizar a janela para execuo de comandos T-SQL. METODOLOGIA Apresentao dos principais comandos DBCC. No SQL Server 2005, atravs da linguagem T-SQL, temos uma srie de comandos para manuteno e otimizao de tabelas e ndices, comandos estes conhecidos como comandos DBCC. Este grupo de comandos conhecido como comandos DBCC, porque todos iniciam com o prefixo DBCC. A grande maioria destes comandos utilizada para verificao da consistncia fsica e lgica de um Banco de Dados e de seus elementos, tais como tabelas e ndices. Em muitas situaes, o comando, alm de fazer a verificao, capaz de corrigir os problemas encontrados. Podemos dividir os comandos DBCC em quatro categorias, conforme descrito na Tabela 7.1. Vamos estudar os principais comandos em cada uma destas categorias. Categoria Descrio Manuteno Executam tarefas de manuteno do Banco de Dados, ndices e filegroups. Status Fazem a verificao de variveis do Banco de Dados. Validao Fazem a validao de determinadas operaes no Banco de Dados, em ndices, tabelas, catlogos, filegroups, tabelas do sistema e alocao de pginas de dados. Diversos Executam uma srie de operaes variadas. Tabela 7.1 Categorias para os comandos DBCC. PRINCIPAIS COMANDOS DBCC DE MANUTENO COMANDO DBCC DBREINDEX Utilizamos este comando para reconstruir um ou mais ndices em uma tabela de um Banco de Dados. Sintaxe conforme Books OnLine: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000377 DBCC DBREINDEX ( [ database.owner.table_name [ , index_name [ , fillfactor ] ] ] ) [ WITH NO_INFOMSGS ] Na nossa misso de simplificar a sintaxe e o entendimento dos comandos da linguagem T-SQL, vamos a alguns exemplos prticos. Porm, antes dos exemplos, vamos fazer algumas observaes a respeito deste comando: No podemos utilizar este comando em tabelas do sistema (master, msdb, etc.). Por padro, somente a role de servidor sysadmin e as roles de Banco de Dados db_owner e db_ddladmin tm permisso para executar este comando. mais vantajosa a utilizao do comando DBCC DBREINDEX do que a utilizao dos comandos DROP INDEX e CREATE INDEX. Por exemplo, em uma tabela com diversos ndices, podemos utilizar o comando DBCC DBREINDEX para reconstruir todos os ndices de uma nica vez, ao invs de utilizar vrios comandos DROP INDEX e CREATE INDEX, um para cada ndice. Alm disso, o comando DBCC DBREINDEX executado com sucesso ou falha como um todo, ou seja, atende o conceito de Atomicidade. Vamos a alguns exemplos prticos. Reconstruir o ndice UPKCL_auidind, da tabela authors do Banco de Dados pubs. Use pubs DBCC DBREINDEX (authors, UPKCL_auidind, 50) Observe que o nome da tabela vai entre apstrofos e o nome do ndice, no. O terceiro parmetro a definio para o FILL FACTOR, que, conforme descrevemos no Captulo 4, uma medida para o percentual de espao a ser deixado em branco, nas pginas do Banco de Dados, quando da construo do ndice. Para reconstruir todos os ndices de uma tabela, basta no especificar um nome para o ndice; apenas coloque dois apstrofos, conforme indicado no exemplo a seguir, onde so reconstrudos todos os ndices da tabela titles do Banco de Dados pubs: Use pubs DBCC DBREINDEX (titles, , 60) Importante: O comando DBCC DBREINDEX ser descontinuado nas futuras verses do SQL Server. importante que voc conhea este comando, para poder entender cdigos e scripts j existentes, porm no recomendado que voc utilize o comando DBCC DBREINDEX, na criao de novos scripts e cdigos. Ao invs do comando DBCC DBREINDEX, voc deve utilizar o comando ALTER INDEX, o qual descreverei logo a seguir. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3780000Curso Completo COMANDO ALTER INDEX Utilizamos este comando para alterar os ndices de uma tabela ou view (quer seja de dados relacionais ou no padro XML). O comando ALTER INDEX pode ser utilizado para desabilitar um ndice, reorganizar ou recriar um ndice. Este comando tambm pode ser utilizado para configurar opes de um ndice. Para poder executar o comando ALTER INDEX voc deve ter, no mnimo, permisso de alterao ALTER, na tabela ou view qual pertence o ndice que est sendo alterado. Esta permisso garantida, por padro, para a role de servidor sysadmin e para as roles de banco de dados db_ddladmin e db_owner. O comando ALTER INDEX no pode ser utilizado para particionar um ndice ou para mover um ndice de um filegroup para outro. Este comando tambm no pode ser utilizado para alterar a definio de um ndice, tal como adicionar ou excluir colunas do ndice ou alterar a ordem das colunas, no ndice. Para executar estas operaes voc deve executar o comando CREATE INDEX, com a opo DROP EXISTING. A seguir apresento alguns exemplos de uso do comando ALTER INDEX. No exemplo a seguir, utilizo o comando ALTER INDEX, para recriar o ndice NmeroPedido_PK, da tabela dbo.Pedidos, do banco de dados NorthWind. USE NorthWind; GO ALTER INDEX NmeroPedido_PK ON dbo.Pedidos REBUILD; GO A seguir apresento um exemplo do Books Online, onde o comando ALTER INDEX utilizado para alterar diversas opes de um ndice. Este comando define as opes STATISTICS_NORECOMPUTE, IGNORE_DUP_KEY e ALLOW_PAGE_LOCKS, do ndice: USE AdventureWorks; GO ALTER INDEX AK_SalesOrderHeader_SalesOrderNumber ON Sales.SalesOrderHeader SET ( STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = ON, ALLOW_PAGE_LOCKS = ON ) ; GO Daria para escrever um captulo inteiro s sobre o comando ALTER INDEX. Mas nada do que eu possa escrever aqui acrescentarei em relao ao que j tem no Books Online. Por isso, para uma referncia completa sobre todas as opes do comando ALTER INDEX e dezenas de outros exemplos de uso deste comando, consulte o BOOKS ONLINE. Voc ver que, na prtica, todos os comandos DBCC que eram utilizados para alterar ndices podem ser substitudos pelas opes do comando ALTER INDEX. COMANDO DBCC DBREPAIR Este comando era utilizado, nas verses anteriores do SQL Server, para excluir um Banco de Dados danificado. Este comando somente era fornecido para compatibilidade com verses anteriores do SQL proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000379 Server. Por exemplo, voc pode ter criado stored procedures ou scripts que utilizam este comando e que no iriam funcionar, sem alteraes, no SQL SERVER 2002. No SQL Server 2005 no existe mais suporte para este comando. Ao invs do comando DBCC DBREPAIR, voc utiliza o comando DROP DATABASE, j descrito no Captulo 3. COMANDO DBCC INDEXDEFRAG Utilizamos este comando para desfragmentar Clustered e Secondary indexes de uma tabela. Este comando tambm ser descontinuado em futuras verses do SQL Server. Ao invs do comando DBCC INDEXDEFRAG, voc pode utilizar o comando ALTER INDEX, conforme mostrarei mais adiante. Sintaxe conforme Books OnLine: DBCC INDEXDEFRAG ( { database_name | database_id | 0 } , { table_name | table_id | view_name | view_id } , { index_name | index_id } ) [ WITH NO_INFOMSGS ] Vamos simplificar a sintaxe e o entendimento dos comandos da linguagem T-SQL atravs de alguns exemplos prticos. Porm, antes dos exemplos, vamos fazer algumas observaes a respeito deste comando: No podemos utilizar este comando em tabelas do sistema (master, msdb, etc.). Por padro, somente a role de servidor sysadmin e as roles de Banco de Dados db_owner e db_ddladmin tm permisso para executar este comando. Este comando, alm de desfragmentar os ndices, compacta suas pginas, levando em conta o valor original do parmetro FILL FACTOR, quando da criao do ndice. Vamos a um exemplo prtico. Desfragmentar o ndice UPKCL_auidind, da tabela authors do Banco de Dados pubs. Use pubs DBCC INDEXDEFRAG (pubs, authors, UPKCL_auidind) Ao ser executado com sucesso, este comando informa, de 5 em 5 minutos, o andamento da desfragmentao dos ndices. Observe que, simplificando a sintaxe, poderamos colocar da seguinte maneira: Use banco_de_dados DBCC INDEXDEFRAG (banco_de_dados, tabela, ndice) COMANDO DBCC SHRINKDATABASE Este comando utilizado para que possamos reduzir o tamanho de um ou mais arquivos de dados de um Banco de Dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3800000Curso Completo Sintaxe conforme Books OnLine: DBCC SHRINKDATABASE ( database_name [ , target_percent ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ) Para simplificar a sintaxe e o entendimento dos comandos da linguagem T-SQL, vamos a alguns exemplos prticos. Porm, antes dos exemplos, vamos fazer algumas observaes a respeito deste comando: No podemos reduzir o tamanho de um Banco de Dados a menos do que o tamanho do Banco de Dados model. Por exemplo, se o model tiver o tamanho de 5 MB, este ser o menor tamanho ao qual um Banco de Dados poder ser reduzido. Por padro, somente a role de servidor sysadmin e a role de Banco de Dados db_owner tm permisso para executar este comando. Este comando no ir reduzir um arquivo do Banco de Dados a um tamanho menor do que o tamanho dos seus dados. Por exemplo, se um arquivo de dados, primrio ou secundrio, contiver 7 MB em dados, este o menor tamanho ao qual este arquivo poder ser reduzido. Vamos a alguns exemplos prticos. Reduzir o tamanho dos arquivos do Banco de Dados Exemplo1, mantendo um espao livre de 25% em cada arquivo. Use Exemplo1 DBCC SHRINKDATABASE (Exemplo1, 25) Ao ser executado com sucesso, este comando emite a seguinte mensagem: DBCC execution completed. If DBCC printed error messages, contact your system administrator. O segundo parmetro 25 indica o percentual de espao livre que deve ser mantido, em cada arquivo de dados, aps a execuo do comando. Por exemplo, um arquivo de dados possui 20 MB, dos quais 10 MB esto ocupados com dados. Aps a execuo do comando, sero mantidos, evidentemente, os 10 MB de dados, mais 2,5 MB (25%) de espao livre. Na verdade o SQL Server ir arredondar para 13 MB. Para os arquivos de log, o valor percentual de espao livre contabilizado como um todo e no para cada arquivo individualmente. No nosso exemplo, aps executado o comando, somando o tamanho de todos os arquivos de log, o espao livre seria de 25%. Com o comando DBCC SHRINKDATABASE, podemos utilizar as opes NOTRUNCATE ou TRUNCATE ONLY. A opo NOTRUNCATE faz com que o espao liberado seja mantido no Banco de Dados e no liberado para o sistema operacional. J com a opo TRUNCATE ONLY, o espao liberado retornado para o sistema operacional. A seguir, temos um exemplo de utilizao da opo TRUNCATE: Use Exemplo1 DBCC SHRINKDATABASE (Exemplo1, 25,NOTRUNCATE) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000381 COMANDO DBCC SHRINKFILE Utilizamos este comando para reduzir o tamanho de um arquivo de dados (primrio ou secundrio), ou de um arquivo de log do Banco de Dados. Sintaxe conforme Books OnLine: DBCC SHRINKFILE ( { file_name | file_id } { [ , target_size ] | [ , { EMPTYFILE | NOTRUNCATE | TRUNCATEONLY } ] } ) Algumas observaes a respeito deste comando: No podemos reduzir o tamanho de um Banco de Dados a menos do que o tamanho do Banco de Dados model. Por exemplo, se o model tiver o tamanho de 5 MB, este ser o menor tamanho ao qual qualquer Banco de Dados poder ser reduzido. Por padro, somente a role de servidor sysadmin e a role de Banco de Dados db_owner tm permisso para executar este comando. Este comando no ir reduzir um arquivo do Banco de Dados a um tamanho menor do que o tamanho dos seus dados. Por exemplo, se um arquivo de dados, primrio ou secundrio, contiver 7 MB em dados, este o menor tamanho ao qual este arquivo poder ser reduzido. Vamos a alguns exemplos prticos. Reduzir o tamanho do arquivo primrio de dados, do Banco de Dados Exemplo1 a 7 MB. USE Exemplo1 DBCC SHRINKFILE (exemplo1-prim, 7) O segundo parmetro 7 j indica o tamanho final do arquivo de dados, em MB. exemplo1-prim o nome lgico associado com o arquivo primrio de dados. Com o comando DBCC SHRINKFILE, podemos utilizar as opes NOTRUNCATE, TRUNCATE ONLY ou EMPTYFILE. A opo NOTRUNCATE faz com que o espao liberado seja mantido no Banco de Dados e no liberado para o sistema operacional. J com a opo TRUNCATE ONLY, o espao liberado retornado para o sistema operacional. A opo EMPTYFILE migra todos os dados do arquivo especificado, para outros arquivos de dados no mesmo Filegroup. Novos dados no podero ser gravados em um arquivo em que a opo EMPTYFILE foi especificada; com isso poderemos excluir o arquivo, utilizando o comando ALTER DATABASE. A seguir, temos um exemplo de utilizao da opo EMPTYFILE. Depois utilizamos o comando ALTER DATABASE para excluir o arquivo: USE Exemplo1 DBCC SHRINKFILE (exemplo1-sec1,EMPTYFILE) GO ALTER DATABASE Exemplo1 REMOVE FILE exemplo1-sec1 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3820000Curso Completo COMANDO DBCC UPDATEUSAGE Este comando informa e corrige erros nas informaes e estatsticas sobre o espao utilizado em disco. Estes erros podem fazer com que o comando sp_spaceused retorne informaes incorretas. Sintaxe conforme Books OnLine: DBCC UPDATEUSAGE ( { database_name | 0 } [ , { table_name | view_name } [ , { index_id | index_name } ] ] ) [ WITH [ COUNT_ROWS ] [ , NO_INFOMSGS ] ] Algumas observaes a respeito deste comando: Se no existirem problemas nas informaes e estatsticas de uso de espao em disco, este comando no retornar nenhuma mensagem. Este comando tenta corrigir erros nas seguintes colunas da tabela sysindexes: rows, used, reserved e dpages. Por padro, somente a role de servidor sysadmin e as roles de Banco de Dados db_owner e db_ddladmin tm permisso para executar este comando. Vamos a alguns exemplos prticos. Utilizar o comando DBCC UPDATEUSAGE no Banco de Dados Northwind. DBCC UPDATEUSAGE (Northwind) Ao ser executado com sucesso, este comando emite a seguinte mensagem: DBCC UPDATEUSAGE: sysindexes row updated for table syscolumns (index ID 2): USED pages: Changed from (4) to (5) pages. RSVD pages: Changed from (8) to (10) pages. DBCC UPDATEUSAGE: sysindexes row updated for table syscolumns (index ID 1): RSVD pages: Changed from (26) to (27) pages. DBCC UPDATEUSAGE: sysindexes row updated for table sysdepends (index ID 2): USED pages: Changed from (2) to (4) pages. RSVD pages: Changed from (2) to (4) pages. DBCC UPDATEUSAGE: sysindexes row updated for table Orders (index ID 4): USED pages: Changed from (2) to (4) pages. RSVD pages: Changed from (2) to (4) pages. DBCC UPDATEUSAGE: sysindexes row updated for table Orders (index ID 5): USED pages: Changed from (2) to (4) pages. RSVD pages: Changed from (2) to (4) pages. DBCC UPDATEUSAGE: sysindexes row updated for table Orders (index ID 6): USED pages: Changed from (2) to (5) pages. RSVD pages: Changed from (2) to (5) pages. DBCC UPDATEUSAGE: sysindexes row updated for table Orders (index ID 7): USED pages: Changed from (2) to (5) pages. RSVD pages: Changed from (2) to (5) pages. DBCC UPDATEUSAGE: sysindexes row updated for table Orders (index ID 8): USED pages: Changed from (2) to (4) pages. RSVD pages: Changed from (2) to (4) pages. DBCC UPDATEUSAGE: sysindexes row updated for table Order Details (index ID 2): USED pages: Changed from (2) to (6) pages. RSVD pages: Changed from (2) to (6) pages. DBCC UPDATEUSAGE: sysindexes row updated for table Order Details (index ID 3): proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000383 N O T A USED pages: Changed from (2) to (6) pages. RSVD pages: Changed from (2) to (6) pages. DBCC UPDATEUSAGE: sysindexes row updated for table Order Details (index ID 4): USED pages: Changed from (2) to (6) pages. RSVD pages: Changed from (2) to (6) pages. DBCC UPDATEUSAGE: sysindexes row updated for table Order Details (index ID 5): USED pages: Changed from (2) to (6) pages. RSVD pages: Changed from (2) to (6) pages. DBCC execution completed. If DBCC printed error messages, contact your system administrator. No exemplo do servidor que estou utilizando, este comando fez uma srie de correes. Isto aconteceu porque fiz muitas alteraes no Banco de Dados Northwind. Na verdade, como dizemos no dia-a-dia: Fucei bastante neste Banco de Dados. Ao rodar este comando em um Banco de Dados que no foi muito alterado, provvel que no existam correes ou que as correes sejam mnimas. Mas, a ttulo de exemplo, foi uma feliz coincidncia, uma vez que a mensagem mostra as diversas correes efetuadas por este comando. PRINCIPAIS COMANDOS DBCC DE STATUS COMANDO DBCC SHOWCONTIG Este comando exibe informaes sobre a fragmentao dos dados e dos ndices de uma determinada tabela. Sintaxe conforme Books OnLine: DBCC SHOWCONTIG [ ( { table_name | table_id | view_name | view_id } [ , index_name | index_id ] ) ] [ WITH { ALL_INDEXES | FAST [ , ALL_INDEXES ] | TABLERESULTS [ , { ALL_INDEXES } ] [ , { FAST | ALL_LEVELS } ] } ] Algumas observaes a respeito deste comando: DBCC SHOWCONTIG utilizado para determinar o quo fragmentada est uma tabela. A fragmentao ocorre devido a operaes que alteram dados, como inseres, alteraes e excluses. Estas modificaes no so distribudas de uma maneira uniforme entre as linhas da tabela, de tal forma que as pginas de dados no apresentam um fator de preenchimento homogneo. Esta fragmentao pode prejudicar o desempenho de pesquisas realizadas nos dados da tabela. A queda no desempenho pode ser pior ainda no caso de consultas que utilizam uma ou mais clusulas Join. Por padro, somente a role de servidor sysadmin e as roles de Banco de Dados db_owner e db_ddladmin tm permisso para executar este comando. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3840000Curso Completo Com o comando DBCC SHOWCONTIG, podemos utilizar as seguintes opes: WITH FAST: Determina que seja feita uma verificao rpida nos ndices. WITH TABLERESULTS: Exibe os resultados da verificao em forma de tabela. WITH ALL_INDEXES: Efetua a verificao em todos os ndices de uma tabela ou view. WITH ALL_LEVELS: Somente pode ser utilizada em conjunto com a opo TABLERESULTS. Faz com que informaes mais detalhadas, para cada nvel dos ndices, sejam retornadas pelo comando DBCC SHOWCONTIG. Vamos a alguns exemplos prticos. Utilizar o comando DBCC SHOWCONTIG para retornar informaes sobre todos os ndices de todas as tabelas, do Banco de Dados Northwind. USE Northwind DBCC SHOWCONTIG WITH TABLERESULTS, ALL_INDEXES Na Figura 7.8 so exibidas as primeiras linhas retornadas como resultado do comando anterior. Figura 7.8 Execuo do comando DBCC SHOWCONTIG com a opo ALL_INDEXES. Tambm poderamos retornar as informaes sobre a fragmentao em uma nica tabela, conforme o exemplo a seguir, onde retornamos informaes sobre a fragmentao na tabela Orders do Banco de Dados Northwind: USE Northwind DBCC SHOWCONTIG (Orders) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000385 N O T A N O T A Este comando ir retornar o seguinte resultado: DBCC SHOWCONTIG scanning Orders table... Table: Orders (21575115); index ID: 1, database ID: 6 TABLE level scan performed. - Pages Scanned................................: 20 - Extents Scanned..............................: 5 - Extent Switches..............................: 4 - Avg. Pages per Extent........................: 4.0 - Scan Density [Best Count:Actual Count].......: 60.00% [3:5] - Logical Scan Fragmentation ..................: 0.00% - Extent Scan Fragmentation ...................: 40.00% - Avg. Bytes Free per Page.....................: 146.5 - Avg. Page Density (full).....................: 98.19% DBCC execution completed. If DBCC printed error messages, contact your system administrator. Para maiores informaes sobre o comando DBCC SHOWCONTIG e sobre os resultados retornados por este comando, consulte a referncia da linguagem T-SQL no Books OnLine. COMANDO DBCC USEROPTIONS Com este comando obtemos informaes sobre as opes definidas para a conexo ativa com o Banco de Dados. Por exemplo, quando acessamos a janela de execuo de comandos T-SQL ou o SQL Server Management Studio, estamos estabelecendo uma conexo com uma instncia do servidor SQL Server 2005. O comando DBCC USEROPTIONS retorna uma srie de informaes sobre esta conexo. Sintaxe conforme Books OnLine: DBCC USEROPTIONS Qualquer usurio tem permisso para executar este comando. Exemplo: DBCC USEROPTIONS Ao ser executado com sucesso, este comando emite a seguinte mensagem: Set Option Value textsize 64512 language us_english dateformat mdy datefirst 7 quoted_identifier SET arithabort SET ansi_null_dflt_on SET ansi_defaults SET ansi_warnings SET ansi_padding SET ansi_nulls SET concat_null_yields_null SET proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3860000Curso Completo PRINCIPAIS COMANDOS DBCC DE VALIDAO COMANDO DBCC CHECKDB Faz a verificao da alocao do espao nas pginas de dados e da integridade estrutural de todos os objetos de um Banco de Dados. Alm da verificao, este comando capaz de reparar problemas com a alocao de espao no Banco de Dados. Dependendo do tamanho do Banco de Dados e do volume de dados, este comando pode demorar um bom tempo para ser executado. Sintaxe conforme Books OnLine: DBCC CHECKDB ( database_name [ , NOINDEX | { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ] ) [ WITH { [ ALL_ERRORMSGS ] [ , [ NO_INFOMSGS ] ] [ , [ TABLOCK ] ] [ , [ ESTIMATEONLY ] ] [ , [ PHYSICAL_ONLY ] ] } ] Algumas observaes a respeito deste comando: Por padro, somente a role de servidor sysadmin e a role de Banco de Dados db_owner que tm permisso para executar este comando. Este comando faz uma verificao da integridade de todos os elementos de um Banco de Dados. Vamos a alguns exemplos prticos. Fazer uma verificao de integridade no Banco de Dados AdventureWorks. Use AdventureWorks DBCC CHECKDB Ao ser executado com sucesso, este comando emite uma longa mensagem. As primeiras linhas desta mensagem esto indicadas a seguir: DBCC results for AdventureWorks. Service Broker Msg 9675, Level 10, State 1: Message Types analyzed: 13. Service Broker Msg 9676, Level 10, State 1: Service Contracts analyzed: 5. Service Broker Msg 9667, Level 10, State 1: Services analyzed: 3. Service Broker Msg 9668, Level 10, State 1: Service Queues analyzed: 3. Service Broker Msg 9669, Level 10, State 1: Conversation Endpoints analyzed: 0. Service Broker Msg 9674, Level 10, State 1: Conversation Groups analyzed: 0. Service Broker Msg 9670, Level 10, State 1: Remote Service Bindings analyzed: 0. DBCC results for sys.sysrowsetcolumns. There are 1257 rows in 10 pages for object sys.sysrowsetcolumns. DBCC results for sys.sysrowsets. There are 239 rows in 2 pages for object sys.sysrowsets. DBCC results for sysallocunits. There are 493 rows in 6 pages for object sysallocunits. DBCC results for sys.sysfiles1. There are 2 rows in 1 pages for object sys.sysfiles1. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000387 N O T A N O T A DBCC results for sys.syshobtcolumns. There are 1257 rows in 11 pages for object sys.syshobtcolumns. DBCC results for sys.syshobts. There are 239 rows in 2 pages for object sys.syshobts. DBCC results for sys.sysftinds. There are 0 rows in 0 pages for object sys.sysftinds. DBCC results for sys.sysserefs. There are 493 rows in 3 pages for object sys.sysserefs. DBCC results for sys.sysowners. There are 29 rows in 1 pages for object sys.sysowners. DBCC results for sys.sysprivs. There are 13 rows in 1 pages for object sys.sysprivs. DBCC results for sys.sysschobjs. There are 536 rows in 10 pages for object sys.sysschobjs. DBCC results for sys.syscolpars. There are 1052 rows in 19 pages for object sys.syscolpars. DBCC results for sys.sysnsobjs. There are 7 rows in 1 pages for object sys.sysnsobjs. DBCC results for sys.syscerts. There are 0 rows in 0 pages for object sys.syscerts. Observe que neste exemplo o comando no encontrou nenhum erro de alocao e tambm no encontrou nenhuma inconsistncia. Tambm podemos utilizar algumas opes com o comando DBCC CHECKDB. Por exemplo, a opo NOINDEX define que os nonclustered indexes das tabelas criadas pelo usurio no devem ser verificados. A seguir temos um exemplo de utilizao desta opo. DBCC CHECKDB (AdventureWorks, NOINDEX) Para informao sobre todas as opes do comando DBCC CHECKDB, consulte a referncia da linguagem T-SQL, no Books OnLine. COMANDO DBCC CHECKTABLE Faz a verificao da integridade das pginas de dados, ndices e pginas com valores de campos do tipo text, ntext e image. Devemos utilizar este comando em tabelas com suspeita de dados corrompidos. Sintaxe conforme Books OnLine: DBCC CHECKTABLE ( table_name | view_name [ , NOINDEX | index_id | { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ] ) [ WITH { [ ALL_ERRORMSGS | NO_INFOMSGS ] [ , [ TABLOCK ] ] [ , [ ESTIMATEONLY ] ] [ , [ PHYSICAL_ONLY ] ] } ] proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3880000Curso Completo N O T A Algumas observaes a respeito deste comando: Por padro, somente a role de servidor sysadmin e a role de Banco de Dados db_owner que tm permisso para executar este comando. feita uma verificao da integridade fsica de tabelas. Vamos a alguns exemplos prticos. Verificar a integridade da tabela Orders do Banco de Dados Northwind. Use Northwind DBCC CHECKTABLE(orders) Ao ser executado com sucesso, este comando emite a seguinte mensagem: DBCC results for Orders. There are 830 rows in 20 pages for object Orders. DBCC execution completed. If DBCC printed error messages, contact your system administrator. Verificar a integridade somente das pginas de dados da tabela Orders do Banco de Dados Northwind, isto , sem fazer a verificao dos ndices. Use Northwind DBCC CHECKTABLE (orders) WITH PHYSICAL_ONLY Para informao sobre todas as opes do comando DBCC CHECKTABLE, consulte a referncia da linguagem T-SQL, no Books OnLine. MAIS UM COMANDO DBCC COMANDO DBCC HELP Retorna a sintaxe para um determinado comando DBCC. Sintaxe conforme Books OnLine: DBCC HELP ( dbcc_statement | @dbcc_statement_var | ? ) Por padro, somente a role de servidor sysadmin que tem permisso para executar este comando. Considere o exemplo: DBCC HELP (CHECKDB) Este comando ir retornar a sintaxe para o comando DBCC CHECKDB. Agora considere o seguinte exemplo: DBCC HELP (?) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000389 Este comando retorna uma listagem de todos os comandos DBCC, sem o prefixo DBCC, para os quais est disponvel ajuda, atravs do comando DBCC HELP. Para uma referncia completa de todos os comandos DBCC, voc pode acessar o item DBCC, na referncia da linguagem T-SQL, no Books OnLine. KNOW-HOW EM: IMPORTAO E EXPORTAO DE DADOS COM O DTS DATA TRANSFORMATION SERVICES PR-REQUISITOS Fundamentos apresentados na Parte I. Saber utilizar o SQL Server Management Studio. METODOLOGIA Aprender a utilizar o DTS Import and Export Wizard. TCNICA Importar e exportar dados utilizando o DTS. Com o SQL Server 2005 podemos, facilmente, importar e exportar dados que esto em outros formatos, como por exemplo: Dados do Microsoft Access. Dados no formato Dbase (.dbf). Dados no formato de planilhas do Excel (.xls). Dados no formato de arquivos de texto delimitado ou largura fixa (.txt). Dados de outros Bancos de Dados como o ORACLE, DB2 da IBM, etc. Tambm podemos importar e exportar dados entre diferentes Bancos de Dados do SQL Server dentro da mesma instncia, entre instncias do mesmo servidor e at mesmo entre instncia de servidores diferentes. As instncias podem ser todas do SQL Server 2005, ou de diferentes verses do SQL Server 2005. Por exemplo, voc pode importar dados de um banco de dados de uma instncia do SQL Server 2000 ( um dos exemplos que faremos neste captulo) para uma instncia do SQL Server 2005. Para ilustrar estas capacidades faremos alguns exemplos prticos, onde importaremos e exportaremos dados. Para situaes em que seja necessria a integrao com fontes mais complexas, como por exemplo dados armazenados no Mainframe, devemos utilizar o Business Intelligence Development Studio. Neste item, trataremos de importaes e exportaes simples, com Bancos de Dados do Microsoft SQL Server, Microsoft Access e no formado .dbf. Tambm veremos um exemplo de transformao dos dados importados, com o auxlio do DTS. IMPORTANDO DADOS DE OUTRAS FONTES DE DADOS A seguir faremos um exemplo, onde importaremos dados de um Banco de Dados do Microsoft Access. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3900000Curso Completo N O T A Exemplo prtico: Neste exemplo vamos criar um novo Banco de Dados chamado ImportAccess, na instncia SERVIDOR\SQL2005. Depois vamos importar algumas tabelas de um banco de dados do Access, para dentro deste Banco de Dados. Procedimento 1 Criar na instncia SERVIDOR\SQL2005 um Banco de Dados chamado ImportAccess, com as seguintes caractersticas: Nome no SQL Server: ImportAccess Arquivo primrio: C:\livrosql\ImportAccess\ImportAccess-prim.mdf, tamanho inicial de 10 MB, tamanho mximo de 50 MB e crescimento automtico habilitado com incrementos de 1 MB. Arquivo secundrio: C:\livrosql\ImportAccess\ImportAccess-sec1.ndf, tamanho inicial de 15 MB, tamanho mximo de 50 MB e crescimento automtico habilitado com incrementos de 10%. Arquivo de log: C:\livrosql\ImportAccess\ImportAccess-log.ldf, tamanho inicial de 5 MB, tamanho mximo de 50 MB e com crescimento automtico habilitado com incrementos de 1 MB. Para criar o Banco de Dados ImportAccess, na instncia SERVIDOR\SQL2005, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio. 2. Na janela Object Explorer, clique com o boto direito do mouse na instncia SERVIDOR\SQL2005 e, no menu de opes que exibido, clique em New Query. Ser aberta a janela para execuo de comandos T-SQL, com a qual voc j trabalhou diversas vezes neste livro. Importante: Antes de executar os comandos indicados a seguir, a pasta C:\Livrosql\ImportAccess j deve ter sido criada, se no os comandos no sero executados e ser gerada uma mensagem de erro. Verifique se a pasta C:\Livrosql\ImportAccess j existe. Caso esta pasta ainda no exista, crie a pasta, antes de executar os comandos indicados no prximo passo. 3. Digite e execute (Ctrl+E) o seguinte comando: CREATE DATABASE ImportAccess ON ************************* Definio do Arquivo Primrio ************************* (NAME= ImportAccess-prim, FILENAME = C:\livrosql\ImportAccess\ImportAccess-prim.mdf, SIZE= 10MB, MAXSIZE= 50MB, FILEGROWTH = 1MB), *************************** Definio do Arquivo Secundrio *************************** proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000391 N O T A (NAME= ImportAccess-sec, FILENAME = C:\livrosql\ImportAccess\ImportAccess-sec.ndf, SIZE= 15MB, MAXSIZE= 50MB, FILEGROWTH = 10%) ************************* Definio do Arquivo de Log ************************* LOG ON (NAME= ImportAccess-log, FILENAME = C:\livrosql\ImportAccess\ImportAccess-log.ldf, SIZE= 5MB, MAXSIZE= 50MB, FILEGROWTH = 1MB) *************************************** Final do comando de criao do Banco de Dados *************************************** Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, o Banco de Dados ImportAccess ter sido criado e a seguinte mensagem ser exibida no painel inferior do Query Analyzer: Command(s) completed successfully. 4. Feche a janela de execuo de comandos e feche o SQL Server Management Studio. Procedimento 2: Importar as tabelas do Banco de Dados C:\Meus Documentos\Northwind.mdb, no formato do Microsoft Access XP, para o Banco de Dados ImportAccess, recm-criado na instncia SERVIDOR\SQL2005 do SQL Server 2005. Voc pode utilizar qualquer banco de dados do Access disponvel no seu computador. Eu estou utilizando, por questes de facilidade, o banco de dados NorthWind.mdb, que um banco de dados de exemplos, que automaticamente instalado junto com o Microsoft Access. Se voc estiver utilizando outro nome para o Banco de Dados, para a instncia do SQL ou para o arquivo teste.mdb, substitua estas opes pelas opes que voc est utilizando, quando estes nomes aparecerem nos procedimentos prticos deste exerccio. Para importar as tabelas do Banco de Dados C:\Meus documentos\NorthWind.mdb, para o banco de dados ImportAccess, da instncia SERVIDOR\SQL2005, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio. 2. Navegue at a opo Databases da instncia SERVIDOR\SQL2005. 3. D um clique no sinal de + ao lado da opo Databases, para exibir os bancos de dados disponveis. O banco de dados ImportAccess j deve estar sendo exibido, conforme exemplificado na Figura 7.9. Se o banco de dados ainda no estiver sendo exibido, pressione a tecla F5 para atualizar a listagem. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3920000Curso Completo Figura 7.9 O banco de dados ImportAccess, recm-criado. 4. D um clique no sinal de + ao lado de ImportAccess e depois d um clique no sinal de + ao lado da opo Tables. Observe que somente existem as chamadas tabelas do sistema System Tables, aquelas criadas automaticamente pelo SQL Server 2005, quando da criao de um Banco de Dados. Conforme descrevemos anteriormente, as tabelas do sistema contm informaes sobre o prprio Banco de Dados. Vamos importar uma srie de tabelas que esto em um arquivo do Microsoft Access. Na Figura 7.10 podemos ver as tabelas que sero importadas. Figura 7.10 Tabelas do arquivo Northwind.mdb. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000393 N O T A 5. D um clique com o boto direito do mouse no Banco de Dados ImportAccess. Nas opes que surgem, clique no comando Tasks -> Impor Data. Ser aberto o Data Transformation Services Import/Export Wizard. 6. A primeira tela do assistente apenas informativa. D um clique no boto Next, seguindo para a prxima etapa do assistente. Na segunda etapa devemos selecionar qual o formato dos dados a serem importados. Por padro vem selecionado, na lista Data Source, o drive para Microsoft OLE DB Provider for SQL Server. Mas existe a possibilidade de se importar dados de vrias outras fontes, como por exemplo: Dbase III, IV e V. Microsoft Access. Microsoft Excel 3, 4, 5, 97 e 2000. Paradox 3, 4 e 5. Fox Pro. Visual Fox Pro. ORACLE. Arquivos de texto. 7. Nesta lista Data source selecione a opo Microsoft Access, pois vamos importar dados de um arquivo .mdb, que um Banco de Dados do Access. Observe que as demais opes desta etapa se modificam, para que voc possa informar onde est o banco de dados do Access, a partir do qual sero importados os dados. Quando escolhemos uma opo na lista Data Source, as demais opes desta etapa mudam para refletir os parmetros que devem ser fornecidos para a fonte de dados escolhida. No caso de uma fonte do Microsoft Access, devemos definir a localizao do arquivo e um nome de usurio e senha, caso o Banco de Dados esteja protegido. 8. No campo File Name, digite C:\Meus documentos\Northwind.mdb. Deixe os campos Username e Password em branco, pois este Banco de Dados no est protegido. Voc tambm pode utilizar o boto Browse, para navegar at a pasta onde est o Banco de Dados com as tabelas a serem importadas. Sua tela deve estar conforme indicado na Figura 7.11. A partir de um Banco de Dados do Microsoft Access, podemos importar somente tabelas e consultas (views). Os formulrios, relatrios, macros e mdulos no podero ser importados. Isto acontece porque estes objetos so objetos de aplicao, isto , que constroem a interface com o usurio e do suporte s funcionalidades da interface. Conforme j salientamos diversas vezes, o Microsoft SQL Server um servidor de Banco de Dados, o qual disponibiliza os dados para aplicativos desenvolvidos com outras ferramentas, como o Visual Basic, Basic.NET, ASP, ASP.NET, C#, Delphi, etc. 9. D um clique no boto Next, para ir prxima etapa do assistente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3940000Curso Completo Figura 7.11 Definindo a origem dos dados. 10. Nesta etapa devemos definir para qual Banco de Dados, os dados sero importados. Como abrimos o assistente, clicando com o boto direito do mouse no Banco de Dados ImportAccess (da instncia SERVIDOR\SQL2005) e selecionando o comando Tasks -> Import data, o banco de dados ImportAccess e a instncia SERVIDOR\SQL2005 j vm selecionados, automaticamente. Aceite esta seleo, pois justamente o que queremos: importar as tabelas do Banco de Dados Northwind.mdb do Access, para o Banco de Dados ImportAccess da instncia SERVIDOR\SQL2005 do SQL Server 2005. Nesta tela, poderamos definir um outro Banco de Dados como o destino, caso fosse necessrio. O mais interessante que o Banco de Dados de destino no precisa, obrigatoriamente, ser um Banco de Dados do SQL Server 2005. Poderamos, por exemplo, importar de um Banco de Dados do Microsoft Access, para um do Paradox ou do Dbase IV. Observe tambm que, quando escolhemos uma opo na lista Destination, as demais opes desta etapa mudam para refletir os parmetros que devem ser fornecidos para a fonte de destino dos dados. Nesta etapa voc tambm define qual o tipo de autenticao que est sendo utilizado, pela instncia onde est o banco de dados de destino. Na lista Server podemos selecionar a instncia do SQL Server, na qual est o Banco de Dados de destino. 11. Certifique-se de que na lista Server esteja selecionada a opo SERVIDOR\SQL2005, e na lista Database esteja selecionada a opo ImportAccess, conforme indicado na Figura 7.12. 12. D um clique no boto Next, para ir para a prxima etapa do assistente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000395 Figura 7.12 Definindo o banco de dados de destino. Nesta etapa, com base nos formatos de origem e destino selecionados, temos duas opes: Copy data from one or more tables or views: Esta opo exibir, na prxima etapa, uma listagem das tabelas e consultas (views), do arquivo de origem (no nosso exemplo C:\Meus documentos\NorthWind.mdb). Salientando o que foi dito anteriormente, somente podemos importar tabelas e consultas, no sendo possvel importar os demais objetos de um banco de dados do Access, tais como formulrios, relatrios e pginas de dados. Use a query to specify the data to transfer: Esta opo exibir, na prxima etapa, uma janela grfica, na qual podemos construir uma instruo SQL que retorna dados de uma ou mais tabelas. A grade a ser exibida praticamente igual grade para criao de consultas no Access, onde voc arrasta tabelas, campos e define critrios de filtragem. 13. Certifique-se de que a opo Copy data from one or more tables or views esteja selecionada. 14. D um clique no boto Next, para ir para a prxima etapa. Nesta etapa, devemos selecionar as tabelas e consultas a serem importadas. No nosso exemplo selecionaremos apenas as tabelas. Observe que, para distinguir entre as tabelas e consultas, podemos observar o cone no lado esquerdo do nome de cada objeto. Para tabelas o cone de uma pequena tabela, j para consultas o cone a figura de um pequeno quadrado com setas para fora, sobrepondo a figura de uma pequena tabela. Ao selecionar uma tabela ou consulta, voc pode clicar no boto Preview, que ser exibida uma listagem dos dados do objeto selecionado. 15. Certifique-se de que todas as tabelas estejam selecionadas, conforme indicado na Figura 7.13. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3960000Curso Completo Figura 7.13 Selecionando todas as tabelas do Banco de Dados de origem NorthWind.mdb. 16. D um clique no boto Next, para ir para a prxima etapa do assistente. Nesta etapa, temos as seguintes opes: Run Immediately: Esta opo faz com que a importao seja executada imediatamente aps finalizarmos o assistente. Schedule DTS package for later execution: Esta opo permite que agendemos a importao para acontecer em intervalos programados, atravs da criao de um job. Observe que esta opo pode ser marcada em conjunto com as demais opes. Por exemplo, podemos executar a importao imediatamente (Run Immediately) e tambm agendar a importao para ocorrer em perodos determinados. Se selecionarmos esta opo, podemos utilizar o boto (...) para alterar o agendamento. Se o agendamento no for alterado, ele ser programado para execuo diria meia-noite (00:00:00 h). Tambm podemos salvar as definies de importao, selecionando a opo Save DTS Package. Temos dois formatos possveis para salvar as configuraes do pacote DTS: SQL Server storage e DTSX File storage. 17. Certifique-se de que apenas a opo Run Immediately esteja selecionada, e d um clique no boto Next, para seguir para a prxima etapa do assistente. Voc estar na tela final do assistente, onde apresentado um resumo das opes selecionadas durante as etapas anteriores do assistente. Caso voc queira alterar alguma opo s utilizar o boto Back. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000397 Figura 7.14 A importao em andamento. 19. Ao final do processo de importao, voc estar de volta janela de progresso indicada na Figura 7.14. D um clique no boto Close para fech-la. 20. Voc estar de volta ao SQL Server Management Studio. D um clique no sinal de + ao lado do Banco de Dados ImportAccess para exibir as opes deste banco de dados. 21. D um clique no sinal de + ao lado da opo Tables, para exibir uma listagem das tabelas do Banco de Dados ImportAccess. Observe, na Figura 7.14, as sete tabelas que foram importadas do Banco de Dados Northwind.mdb. Se as tabelas no estiverem sendo exibidas, clique na opo Tables, para selecion-la e pressione a tecla F5, para atualizar a listagem de tabelas, do banco de dados ImportAccess. 22. Feche o SQL Server Management Studio. 18. Para encerrar o assistente e fazer a importao, d um clique no boto Finish. O SQL Server 2005 exibe uma janela com o progresso da importao, conforme mostra a Figura 7.14. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 3980000Curso Completo Figura 7.15 Tabelas importadas do Banco de Dados NorthWind.mdb. EXPORTANDO DADOS DO SQL SERVER 2005 PARA OUTRAS FONTES DE DADOS Em determinadas situaes pode ser necessria a exportao dos dados que esto em um servidor SQL Server para outros formatos de dados. Por exemplo, podemos exportar uma tabela ou o resultado de uma view para uma planilha do Excel. A pessoa responsvel, por exemplo uma secretria, pode preparar um relatrio a partir da planilha do Excel. A exemplo da importao de dados, podemos exportar dados para uma variedade de formatos. Vamos fazer dois exemplos de exportao de dados. No primeiro, exportaremos dados para uma planilha do Excel; no segundo exemplo, para o formato de um arquivo de dados do Dbase III. Exemplo prtico: Exportar as tabelas Pedidos, Detalhes do pedido e Clientes, do Banco de Dados ImportAccess, da instncia SERVIDOR\SQL2005, para uma planilha do Excel. A planilha ser gravada na pasta C:\Meus documentos, com o nome de ExportadoDoSQLServer.xls. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000399 Importante: Quando exportamos dados para uma planilha do Excel necessrio que o arquivo j tenha sido criado previamente. Caso o arquivo C:\Meus documentos\ ExportadoDoSQLServer.xls no exista, crie este arquivo, pois se no ser gerado um erro, durante a execuo do assistente de exportao. Procedimento: Para exportar as tabelas Pedidos, Detalhes do pedido e Clientes, do Banco de Dados ImportAccess, da instncia SERVIDOR\SQL2005, para uma planilha do Excel, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio. 2. Navegue at a opo Databases da instncia SERVIDOR\SQL2005. 3. D um clique no sinal de + ao lado da opo Databases, para exibir os bancos de dados disponveis. O banco de dados ImportAccess deve estar sendo exibido na listagem. 4. D um clique com o boto direito do mouse no Banco de Dados ImportAccess. Nas opes que surgem, clique no comando Tasks -> Export Data. Ser aberto o Data Transformation Services Import/Export Wizard. 5. A primeira tela do assistente apenas informativa. D um clique no boto Next, seguindo para a prxima etapa do assistente. Na segunda etapa podemos selecionar o formato dos dados a serem exportados. Por padro vem selecionado, na lista Data Source, o drive para SQL Server: Microsoft OLE DB Provider for SQL Server. Mas existe a possibilidade de exportar dados para diversos formatos, como por exemplo: Dbase III, IV e V. Microsoft Access. Microsoft Excel 3, 4, 5, 97 e 2000. Paradox 3, 4 e 5. Fox Pro. Visual Fox Pro. ORACLE. Arquivos de texto. 6. Como estamos exportando dados do SQL Server 2005, certifique-se de que na lista Data Source esteja selecionado Microsoft OLE DB Provider for SQL Server. Quando escolhemos uma opo na lista Data Source, as demais opes desta etapa mudam para refletir os parmetros que devem ser fornecidos, de acordo com a fonte de dados escolhida. No caso de uma fonte do Microsoft OLE DB Provider for SQL Server, devemos definir a instncia e o nome do Banco de Dados e as informaes para conexo. Como acionamos o assistente clicando com o boto direito do mouse no Banco de Dados ImportAccess, da instncia SERVIDOR\SQL2005, estas informaes j vm selecionadas, automaticamente. N O T A proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4000000Curso Completo 7. Para autenticao marque a opo Use Windows Authentication. D um clique no boto Next, para ir prxima etapa do assistente. 8. Nesta etapa devemos definir para qual formato e para qual arquivo, se for o caso, os dados sero exportados. Na lista Destination selecione: Microsoft Excel 97-2000. No campo File Name digite: C:\Meus documentos\ ExportadoDoSQLServer.xls. Sua tela deve estar conforme indicado na Figura 7.16. Figura 7.16 Definindo o formato e o arquivo de destino dos dados. 9. D um clique no boto Next, para ir para a prxima etapa do assistente. Nesta etapa, com base nos formatos de origem e destino selecionados, temos duas opes: Copy data from on or more tables or views: Esta opo exibir, na prxima etapa, uma listagem das tabelas e consultas (views) do banco de dados de origem. Use a query to specify the data to transfer: Esta opo exibir, na prxima etapa, uma janela grfica, na qual podemos construir uma instruo SQL que retorna dados de uma ou mais tabelas. 10. Certifique-se de que a opo Copy data from on or more tables or views esteja selecionada, e clique em Next para seguir para a prxima etapa do assistente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000401 Nesta etapa devemos selecionar as tabelas e consultas a serem exportadas. No nosso exemplo selecionaremos apenas as tabelas Pedidos, Detalhes do Pedido e Clientes. tambm importante observar que o banco de dados no tem views, somente tabelas. Ao selecionar uma tabela (ou consulta), voc pode clicar no boto Preview que sero exibidos os dados do objeto selecionado. Cada tabela ser exportada como uma nova planilha na pasta de trabalho C:\Meus documentos\ ExportadoDoSQLServer.xls. Na coluna Destination voc pode alterar o nome que ser atribudo a cada planilha. Por padro, atribudo o nome da tabela de origem. 11. Certifique-se de que as tabelas Pedidos, Detalhes do Pedido e Clientes estejam selecionadas. Clique no boto Next, para ir para a prxima etapa do assistente. Nesta etapa, temos as seguintes opes: Run Immediately: Esta opo faz com que a exportao seja executada imediatamente aps finalizarmos o assistente. Schedule DTS package for later execution: Esta opo permite que agendemos a exportao para acontecer em intervalos programados, atravs da criao de um job. Observe que esta opo pode ser marcada em conjunto com as demais opes. Por exemplo, podemos executar a importao imediatamente (Run Immediately) e tambm agendar a importao para ocorrer em perodos determinados. Se selecionarmos esta opo, podemos utilizar o boto Edit Schedule para alterar o agendamento. Se o agendamento no for alterado, ele ser programado para execuo diria meia-noite (00:00:00 h). Tambm podemos salvar as definies de exportao, selecionando a opo Save DTS Package. 12. Certifique-se de que apenas a opo Run Immediately esteja selecionada, e d um clique no boto Next, seguindo para a prxima etapa do assistente. 13. Voc estar na tela final do assistente, onde apresentado um resumo das opes selecionadas. Caso voc queira alterar alguma opo, s utilizar o boto Back. Para iniciar a exportao, d um clique no boto Finish. O SQL Server 2005 exibe uma janela com o progresso da exportao. Ao final, exibida uma mensagem informando o nmero de objetos que foram exportados, conforme indicado na Figura 7.17. 14. D um clique no boto Close para fechar esta janela. 15. Voc estar de volta ao SQL Server Management Studio. Feche-o. Abra o Excel e abra o arquivo C:\Meus documentos\ExportadoDoSQLServer.xls. Na Figura 7.18, podemos ver que as tabelas Pedidos, Detalhes do Pedido e Clientes foram exportadas para o arquivo do Excel e que cada tabela foi exportada para uma planilha com o nome da tabela. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4020000Curso Completo Figura 7.17 Exportao concluda com sucesso. Figura 7.18 Dados na planilha do Excel. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000403 KNOW-HOW EM: MONITORAO DE DESEMPENHO NO SQL SERVER 2005 PR-REQUISITOS Fundamentos apresentados na Parte I. Noes bsicas de hardware. Noes bsicas do Windows 2000 Server ou Windows Server 2003. Noes sobre utilizao do MMC. METODOLOGIA Apresentao dos mtodos utilizados para monitorao de desempenho. TCNICA Utilizao do console Desempenho para monitoramento. Um servidor to rpido quanto for o desempenho do seu dispositivo mais lento. Em outras palavras, o desempenho de um servidor pode ser comprometido se um ou mais dos seus dispositivos estiver apresentando problemas de funcionamento ou estiver inadequadamente dimensionado. Por exemplo, no adianta voc ter um servidor multiprocessado, com uma grande quantidade de memria RAM e um sistema de discos lentos. Neste caso, o sistema de discos ir limitar o desempenho do seu servidor. Chamamos o elemento limitador de gargalo do sistema, porm o termo mais conhecido o termo em ingls: Bottleneck. Utilizarei o termo gargalo. Um gargalo causado, normalmente, pelo uso excessivo de um ou mais recursos do sistema. Por exemplo, em um servidor de Bancos de Dados, em que so realizadas consultas complexas, a memria pode se tornar um fator limitador do desempenho do sistema. Neste caso dizemos que a memria o gargalo do sistema. Muitas vezes, ao solucionarmos um gargalo, imediatamente outro componente torna-se um novo gargalo. No exemplo anterior, poderamos adicionar mais memria RAM, a o processador ficaria sobrecarregado, e eis que o processador tornou-se o nosso novo gargalo. Conforme podemos ver, o processo de monitorar o desempenho um processo contnuo, ou seja, resolvemos um gargalo e vamos em busca do prximo. Nesta seo aprenderemos a monitorar os principais elementos de hardware, bem como a monitorar o servidor SQL Server 2005, em busca de informaes que nos ajudem a mant-lo com um desempenho satisfatrio. A monitorao uma maneira de o administrador acompanhar o aumento de carga em um ou mais servidores da rede, acompanhando qual a ocupao/utilizao dos principais elementos de hardware, tais como memria, processadores, interfaces de rede e sistemas de disco. Com o acompanhamento da carga de trabalho em cada um destes elementos, o administrador pode fazer uma estimativa, com antecedncia, de quando ser necessrio o upgrade de um ou mais destes elementos de hardware, como por exemplo adicionar mais memria RAM, trocar a placa controladora de discos por uma mais rpida e assim por diante. Se o administrador no tem este acompanhamento, o que acontece que chega-se a um ponto onde os servios e o acesso aos sistemas tornam-se lentos e os usurios comeam a reclamar. Neste ponto o administrador no sabe exatamente o que est acontecendo (apenas suspeita que pode ser sobrecarga em um ou mais dos itens de hardware do servidor). Como o administrador no fez a lio de casa, isto , no fez um monitoramento preventivo, ter que tentar descobrir quais os elementos de proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4040000Curso Completo hardware que esto sobrecarregados, apresentar um relatrio solicitando recursos, encomendar o hard- ware necessrio para finalmente providenciar a troca. Ou seja, tudo na base do improviso, da pressa. Definitivamente esta no uma boa maneira de trabalhar e administrar a sua rede. O monitoramento sistemtico, isto , com regras bem definidas e com uma metodologia de monitoramento, faz com que o administrador trabalhe de uma maneira proativa (um amigo meu diria que este termo chique), sempre prevendo com boa antecedncia as necessidades de upgrade de hardware, evitando com isso que se chegue ao ponto em que o desempenho caia exponencialmente e os usurios comecem a reclamar. Outro fator que tem que ser considerado que se chega a um ponto onde o limite do servidor atingido, ou seja, no mais possvel expandir a memria, no possvel adicionar novos processadores e assim por diante. Nestas situaes faz-se necessria a troca do servidor por outro com maiores capacidades. Mais uma vez fica clara a importncia do monitoramento para prever, com uma boa antecedncia, uma necessidade de troca de servidor. Principalmente porque servidor e hardware de servidor no como hardware de PC, que voc encontra a pronta entrega no mercado. Normalmente hardware de servidor feito sob encomenda e demora alguns dias (ou at semanas) para estar disponvel. Se o administrador no prever com uma boa antecedncia a necessidade de troca, corre o risco de ter que conviver durante semanas com um ou mais servidores que no atendem as demandas dos usurios, com um desempenho sofrvel e, o que o pior, com um telefone que no pra de tocar, com usurios reclamando (e com toda a razo) do desempenho do sistema. Neste tpico voc aprender a utilizar o console para monitorao de desempenho, de forma a acompanhar a taxa de utilizao dos principais elementos do sistema. Mostrarei uma srie de assuntos relacionados com o monitoramento, otimizao e manuteno do Windows Server 2003 (os exemplos sero baseados no Windows Server 2003, porm se aplicam, praticamente sem modificaes, ao Win- dows 2000 Server). Com os conceitos e exemplos prticos vistos neste tpico, voc ter condies de fazer um monitoramento dos servidores, atuando de maneira proativa. Monitorar a utilizao dos principais recursos de um servidor uma tarefa importante para o administrador do servidor, principalmente em servidores que esto sendo utilizados para o compartilhamento de recursos (por ex. arquivos e impressoras, bancos de dados do SQL Server, sites baseados no IIS e assim por diante) na rede. O desempenho de um servidor fica seriamente comprometido se um dos seguintes elementos estiver sobrecarregado: Memria RAM. Processador. Interface de rede. Sistema de discos. Neste tpico mostrarei como utilizar o console Desempenho, para acompanhar a taxa de ocupao de cada um destes elementos. Tambm mostrarei como configurar o Windows Server 2003 para que faa a coleta automtica, em perodos definidos, da taxa de ocupao de determinados elementos, de tal maneira que voc possa ter uma idia da utilizao destes elementos em condies normais de trabalho. Com este acompanhamento voc tambm ter condies de verificar a evoluo nas taxas de utilizao de cada um dos elementos que esto sendo monitorados. Assim, quando um determinado elemento tiver a sua taxa de utilizao constantemente aumentada, possvel agir preventivamente, normalmente providenciando a substituio do elemento, como por exemplo a instalao de um processador mais proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000405 rpido ou de uma quantidade adicional de memria RAM ou a substituio de discos IDE por um sistema de discos SCSI. Em alguns livros e na documentao oficial do Windows Server 2003, o console Performance tambm chamado de System Monitor (Monitor do Sistema). Neste captulo utilizarei os termos System Moni- tor ou console Performance como sinnimos. Para monitorar estes elementos, utilizamos o console Desempenho: Iniciar -> Todos os programas -> Ferramentas Administrativas -> Desempenho. Antes de aprendermos a utilizar este console, vamos apresentar alguns elementos tericos, necessrios utilizao do console Desempenho. Veremos os conceitos de Objeto, Contador e Instncia. Objeto: No contexto do console Desempenho, um objeto um dos recursos que podem ser mensurados. Exemplos de objetos so: a memria RAM, o processador, a interface de rede e assim por diante. Contador: Cada objeto pode ter um ou mais contadores. Por exemplo, para o objeto processador podemos ter os contadores Interrupes por segundo, %Tempo do usurio, %Tempo privilegiado e assim por diante. Para o objeto memria podemos ter, dentre outros, os contadores Pginas por segundo, Bytes disponveis, etc. Cada contador reflete o nvel de utilizao de um determinado aspecto do objeto. Instncia: Para um mesmo objeto, podemos ter uma ou mais instncias. Por exemplo, em um servidor com mltiplos processadores, cada processador uma instncia do objeto processador. Cada instncia pode apresentar valores diferentes, para os diversos contadores de cada objeto. Por exemplo, em um dos processadores, o percentual de utilizao pode estar em 60% e no segundo processador, em 75%. Alm da memria RAM, Interface de rede, Sistema de discos e Processador, existem diversos outros elementos que podem prejudicar o desempenho de um servidor, como um todo, porm estes quatro so os mais importantes. Podem existir situaes, por exemplo, em que a utilizao da memria RAM e do Processador esteja baixa, porm o Sistema de discos esteja sobrecarregado e, neste caso, o desempenho do sistema como um todo fica bastante prejudicado. Dependendo do tipo de funo que o servidor est exercendo, um recurso de hardware pode ter mais ou menos influncia no desempenho como um todo. Por exemplo, servidores de banco de dados, como o caso de um servidor com uma ou mais instncias do SQL Server 2005, so muito dependentes de bons processadores e de uma boa quantidade de memria RAM; j servidores de arquivos dependem mais de um bom sistema de disco e de uma conexo rpida com a rede. Dependendo do papel que o servidor esteja desempenhando na rede, a utilizao de cada um destes componentes ser maior ou menor. Por exemplo, computadores que atuam como servidores de Banco de dados (com o Microsoft SQL Server, por exemplo) ou servidores de aplicao (como o Microsoft Transaction Server, por exemplo) fazem um uso muito intensivo dos processadores. Neste caso pode ser recomendvel, dependendo do nmero de usurios, a utilizao de servidores multiprocessados. J no caso de servidores de arquivos, a utilizao da interface de rede e do sistema de discos pode ser bastante elevada; neste caso a utilizao de placas mais velozes ou at mesmo de mais de uma placa de rede e de sistemas de discos mais rpidos pode ser uma soluo para melhorar o desempenho. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4060000Curso Completo A monitorao do desempenho ajuda a determinar qual o componente que est sendo o principal limitador do desempenho do sistema (o gargalo do sistema), alm de permitir a anlise da carga de trabalho qual o respectivo componente est submetido (por exemplo, o processador est com 80% de utilizao, o sistema de discos est constantemente com dados na fila de espera para leitura e gravao e assim por diante). O administrador tambm pode utilizar a monitorao do desempenho para fazer uma estimativa do crescimento na utilizao dos componentes do sistema. Com isso fica mais fcil fazer uma previso sobre as necessidades futuras de atualizaes de hardware. Alm disso, de posse de dados de monitorao consistentes, fica mais fcil justificar o gasto envolvido na aquisio e atualizao de componentes de hardware. Conforme mostrarei nos prximos itens, a monitorao feita atravs do console Desempenho, tambm conhecido como System Monitor. Este console acessado atravs da opo Desempenho, no menu Ferramentas administrativas. No console de desempenho voc adiciona Objetos a serem monitorados. Um exemplo de objeto pode ser um Processador, Memria, Disco fsico, Fila de impresso, etc. Um objeto representa um elemento que pode ser monitorado pelo Windows. Para cada objeto, esto disponveis vrios contadores que so indicativos da utilizao dos recursos do respectivo objeto. Por exemplo para o objeto Processador, dentre outros, existem os seguintes contadores: Porcentagem de tempo do processador, Interrupes por segundo e assim por diante. Para o objeto Fila de impresso, existem os contadores Total de pginas impressas, Trabalhos no spool, e assim por diante. Vrios objetos e seus respectivos contadores so instalados durante a instalao do Windows. medida que novos servios ou aplicativos so instalados, novos objetos e contadores so adicionados. Por exemplo, ao instalar o Microsoft SQL Server, novos objetos so adicionados. Outro exemplo, quando instalado o servidor Web IIS, novos objetos so adicionados e assim por diante. Saber exatamente quais objetos e quais contadores utilizar um processo que envolve testes e muita pacincia. Somente com a experincia que o administrador saber quais contadores observar para verificar a existncia de problemas de desempenho. A otimizao do desempenho um processo contnuo. Muitas vezes em uma primeira anlise, o administrador descobre que um dos componentes est sendo o gargalo do sistema, por exemplo, a memria RAM. A mais memria RAM acrescentada ao servidor. Pode ser que outro componente passe a ser o gargalo, por exemplo a placa de rede ou o processador. Monitorar e otimizar o desempenho um desafio bastante grande, porm uma necessidade. No possvel simplesmente trocar de equipamento toda vez que houver problemas de desempenho, pois isso seria um desperdcio de dinheiro. Tambm possvel configurar o console Desempenho para que seja feita a captura de dados automaticamente. O administrador pode configurar a captura de dados para que seja feita a captura apenas de determinados contadores de determinados objetos, ou seja, somente aqueles contadores que interessam ao administrador. Com base nesta captura possvel verificar os limites normais de operao para componentes como o processador, memria RAM e assim por diante. Entenda-se por limites normais de operao as taxas de utilizao dos diversos componentes de hardware e software, durante o horrio normal de expediente. Depois faz-se o agendamento de um monitoramento contnuo e compara-se os resultados obtidos com os limites de operao obtidos durante a primeira captura. Quando um determinado componente comear a apresentar aumento na sua taxa de utilizao deve ser verificado o motivo para este aumento e, se for o caso, providenciar a substituio do dispositivo antes que a sua taxa de utilizao atinja limites que possam comprometer o desempenho do servidor. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000407 N O T A No prximo tpico voc aprender a utilizar o console Performance (Desempenho), atravs de exemplos prticos. MONITORANDO O PROCESSADOR E A MEMRIA DO SEU SERVIDOR Neste item voc aprender a utilizar o console Desempenho. Tambm ver como monitorar alguns contadores dos objetos Memria e Processador. Apresentarei diversos detalhes sobre a utilizao da interface e das funcionalidades do console Desempenho. O console Desempenho j vem configurado para carregar o snap-in para medio de desempenho. No Windows NT Server 4.0 existe um programa chamado Performance Monitor, o qual utilizado para a monitorao de desempenho. A partir do Windows 2000 est disponvel o console Desempenho, o qual tambm est disponvel no Windows XP e no Windows Server 2003. Exemplo: Monitorando o uso da memria e do processador Windows Server 2003. Para utilizar o console Desempenho, para monitorar a memria e o processador, siga os seguintes passos: 1. Faa o logon como administrador, ou com uma conta com permisso de administrador. 2. Abra o console Desempenho: Iniciar -> Ferramentas administrativas -> Desempenho. 3. Ser aberto o console Desempenho, conforme indicado na Figura 7.19: Figura 7.19 O console para monitorao do desempenho. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4080000Curso Completo N O T A Observe que, por padro, os seguintes contadores j esto adicionados e sendo monitorados: O contador Pages/sec do objeto Memory. Comprimento mdio de fila de disco (Avg. Disk Queue Length) do objeto Physical Disk. O objeto %Tempo do processador (%Processor Time) do objeto Processor. Os grficos que vo sendo desenhados na tela do console indicam os valores associados com cada um dos contadores. No exemplo da Figura 7.19 a taxa de ocupao do processador chegou a picos de 100% mas, na mdia, estava abaixo dos 20%. Para o exemplo proposto voc ir excluir os contadores que foram adicionados automaticamente pelo Windows e ir adicionar outros contadores. 4. Clique no contador Pginas/sec (na parte de baixo do painel, abaixo do grfico, onde aparece a lista de contadores) e pressione a tecla Delete. Repita a operao para excluir os demais contadores. 5. Neste console, no painel da esquerda, exibida a opo Monitor do sistema, que a opo utilizada para adicionar novos contadores para os objetos a serem monitorados, no nosso exemplo a memria e o processador. A opo Logs e alertas de desempenho ser vista nos prximos itens. 6. D um clique na opo Monitor do Sistema, para selecion-la. Figura 7.20 Janela para adicionar os contadores a serem monitorados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000409 N O T A N O T A 7. D um clique no boto Adicionar na barra de ferramentas boto com um sinal de + na barra de ferramentas ou pressione Ctrl+I. Ser exibida a janela Adicionar contadores, na qual voc pode selecionar objetos e adicionar os contadores a serem monitorados, conforme indicado na Figura 7.20. Na lista Objeto de desempenho, por padro j vem selecionado o objeto Processador. Nesta lista voc pode selecionar um objeto para o qual sero adicionados contadores a serem monitorados. Ao selecionar um objeto na lista de objetos, na lista Selecionar contadores na lista, sero exibidos os contadores relacionados ao objeto selecionado. Um mesmo contador pode ter uma ou mais instncias. Por exemplo, ao selecionar o contador % tempo de processador, em um computador com dois processadores, na lista Selecionar instncias na lista, sero exibidas as duas instncias do referido contador, uma para cada processador. Voc pode monitorar somente uma das instncias ou ambas. Um detalhe interessante que, no mesmo console, voc pode monitorar contadores de um ou mais servidores. Por exemplo, voc pode monitorar a utilizao do processador de dois ou mais servidores da rede, utilizando um nico console Desempenho. Para isso, na janela da Figura 7.20, digite o nome do computador no campo Selecionar contadores do computador. Digite o nome do computador no formato \\NomeDoComputador. Ao digitar o nome e pressionar Enter sero exibidos os objetos do referido servidor. Selecione um ou mais contadores. Voc pode fazer isso para os diversos servidores que sero monitorados simultaneamente. Com isso, em um mesmo console, voc poder monitorar contadores de diferentes servidores da sua rede. 8. Certifique-se de que o objeto Processador esteja selecionado na lista de Objetos. Na caixa de listagem Selecionar contadores na lista, marque o contador % tempo de processador. Para ver uma explicao detalhada sobre o que significa este contador, d um clique no boto Explicar. Ser exibida uma janela com a descrio do contador selecionado, conforme indicado na Figura 7.21. Voc pode utilizar o boto Explicar para obter um texto explicativo sobre qualquer contador selecionado. Figura 7.21 Janela que exibida com a explicao sobre o contador selecionado. Veja que no campo Selecionar contadores do computador j vem, por padro, o nome do computador local, onde foi aberto o console de desempenho. Podemos monitorar o desempenho de outros computadores da rede. Por exemplo, para acessar contadores de um computador chamado SERVER2, basta digitar \\SERVER2, neste campo e pressionar Enter. Em poucos instantes o Windows Server 2003 exibe uma listagem com os contadores do computador a ser monitorado. Voc pode adicionar, para monitorao, contadores de diferentes computadores, conforme j descrito anteriormente. Por exemplo, voc pode adicionar o percentual de ocupao do processador para os diversos servidores da rede, para determinar qual ou quais esto com utilizao excessiva do processador. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4100000Curso Completo 9. D um clique no boto Adicionar, para adicionar o contador % tempo de processador. 10. Agora hora de adicionar um contador para a memria. Primeiro, na lista Objeto de desempenho, selecione o objeto Memria. Na caixa de listagem Selecionar contadores na lista, so exibidos os contadores disponveis para o objeto Memria. 11. D um clique no contador % de bytes confirmados em uso. Clique no boto Adicionar e depois d um clique no boto Fechar. Voc estar de volta ao console de desempenho, sendo que agora os dois contadores que voc adicionou j esto sendo monitorados, conforme mostrado pelo grfico da Figura 7.22. Figura 7.22 Um contador do processador e outro da memria, sendo monitorados. 12. Observe que o processador teve picos de quase 100% de utilizao. J a memria tem se mantido em torno de 25% de utilizao. Existem alguns indicadores que podem nos levar a certas concluses interessantes. Por exemplo, se a taxa de utilizao do processador permanecer por longos perodos de tempo, sempre prxima ou acima de 80%, pode ser um indicativo de que o processador um gargalo para o sistema. O processador deve ser substitudo por um outro mais rpido, ou a utilizao de mais do que um processador deve ser considerada. Por outro lado picos de 100% so perfeitamente normais. Quando voc abre um aplicativo normal que a utilizao do processador chegue prxima dos 100%. O que no pode acontecer uma alta taxa de utilizao permanente, prxima ou superior a 80%. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000411 13. No nosso exemplo a utilizao da memria (em torno de 25%) est em uma patamar timo. At 60% seria um valor bastante razovel. Lembrando que picos podem acontecer e, o que um indicativo de sobrecarga em um dos componentes de hardware, uma taxa de utilizao constante em patamares elevados. 14. O console de desempenho exibe uma srie de informaes para cada um dos contadores que esto sendo monitorados. Observe que cada um dos contadores possui um grfico com cor diferente. Na parte de baixo do console, ao clicar em um contador, voc ir selecion-lo. Observe que logo abaixo do grfico so exibidas diversas informaes, dependendo do contador selecionado. 15. Ao selecionarmos o contador % tempo de processador, por exemplo, so exibidas diversas informaes, tais como: valor mdio, valor mnimo, valor mximo e assim por diante. 16. Para adicionar novos contadores, basta utilizar novamente o boto (Adicionar - boto com um sinal de +) ou pressionar Ctrl+I. 17. Quando voc est monitorando diversos contadores, pode ser til pr em destaque o contador selecionado. Para isso basta pressionar Ctrl+H, que o contador selecionado ser posto em destaque, isto , ficar com a linha do grfico mais espessa e destacada. 18. Para retirar o destaque do contador, basta pressionar Ctrl+H novamente. Figura 7.23 Alterando as propriedades do grfico e incluindo grades de referncia. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4120000Curso Completo I M P O R T A N T E P R A T I Q U E 19. Voc pode excluir um contador, simplesmente clicando no contador, na parte de baixo do console Desempenho, abaixo do grfico e teclando Delete. 20. Voc pode alterar diversas propriedades do grfico que exibido no console desempenho, como por exemplo: cor da linha, cor de fundo, exibir ou no uma grade de referncia, etc. Para acessar estas propriedades, d um clique com o boto direito do mouse em qualquer parte do grfico. No menu que surge clique em Propriedades. 21. Ser exibida a janela Propriedades de Monitor do sistema, onde, atravs das guias Geral, Fonte, Dados, Grfico e Aparncia, voc pode alterar diversas propriedades da exibio do grfico de desempenho. No exemplo da Figura 7.23, foram includas grades de referncia. Esta configurao feita atravs da guia Grfico, da janela de propriedades. 22. Feche o console de desempenho. Pratique um pouco: Abra novamente o console Desempenho e adicione alguns contadores do processador e da memria. Para o objeto Processador adicione os contadores Interrupes por segundo e % Tempo privilegiado. Utilize o boto Explicao para exibir a descrio destes contadores. Altere algumas propriedades do grfico. Altere o campo atualizar automaticamente a cada 1 segundo para 2 segundos. Este campo acessvel atravs da guia Geral das propriedades do grfico. Para acessar as propriedades clique com o boto direito do mouse em qualquer local do grfico, e no menu que surge d um clique na opo Propriedades. MONITORANDO O ACESSO AO SISTEMA DE DISCOS Neste item mostrarei como monitorar alguns contadores dos objetos Disco fsico e Disco lgico. importante lembrar que o objeto Disco fsico se refere a um disco como um todo, independente de o disco estar dividido em parties (disco bsico) ou volumes (disco dinmico). J o objeto Disco lgico, refere-se s parties ou volumes, independente de estarem localizadas em um nico disco, ou distribudas ao longo de vrios discos, como no caso de um volume RAID-5 ou de um volume set. Nunca demais lembrar que no Windows NT 4.0 os contadores para os objetos Disco fsico e Disco lgico esto desabilitados, por padro. O objeto Disco Lgico nem sequer aparecia na listagem de objetos. O objeto Disco fsico aparecia na listagem, mas se voc adicionasse alguns dos seus contadores, estes ficariam sempre em zero, uma vez que estavam desabilitados. Para habilitar os contadores para os objetos Disco fsico e Disco lgico, no NT 4.0, era necessrio executar o seguinte comando: diskperf y e reinicializar o computador para que os contadores sejam habilitados. NO WINDOWS SERVER 2003 NO NECESSRIO ESTE PROCEDIMENTO, POIS OS CONTADORES, TANTO PARA DISCO FSCIO QUANTO PARA DISCO LGICO, ESTO HABILITADOS, AUTOMATICAMENTE. Agora hora de monitorar alguns contadores dos contadores dos objetos Disco fsico e Disco lgico. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000413 N O T A Para o exemplo proposto estou utilizando um computador com dois discos fsicos, os quais esto divididos em um ou mais volumes. Para este exemplo estou utilizando um servidor com o Windows Server 2003, em ingls, o que pode ser comprovado pelas telas em ingls. Conforme visto no Captulo 5 do livro Windows Server 2003 Curso Completo, 1568 pginas, de minha autoria, possvel criar mais de um volume (disco lgico) em um mesmo disco fsico. Por exemplo, possvel dividir um disco de 40 GB em dois volumes de 20 GB. A cada volume estaria associada uma letra, como por exemplo: C: e E: Cada volume representa um disco lgico, isto , uma unidade. Exemplo prtico: Monitorando a atividade de discos, usando o console de desempenho. Para monitorar a atividade do sistema de discos, siga os passos indicados a seguir: 1. Faa o logon como administrador, ou com uma conta com permisso de administrador. 2. Abra o console Desempenho: Iniciar -> Ferramentas administrativas -> Desempenho. 3. No painel da esquerda, clique na opo Monitor do sistema, para marc-la. 4. D um clique no boto Adicionar, na barra de ferramentas boto com um sinal de + ou pressione Ctrl+I. Ser exibida a janela Adicionar contadores, na qual podemos adicionar os objetos e respectivos contadores que sero monitorados. Figura 7.24 Monitorando o objeto Disco fsico. 5. No campo Objeto de desempenho, selecione o objeto Disco fsico. Ser exibida uma listagem com os discos instalados no seu computador e as parties (ou volumes no caso de discos de proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4140000Curso Completo N O T A Armazenamento dinmico) criadas em cada um dos discos. No exemplo da Figura 7.24, so exibidos dois discos: Disco 0 e Disco 1. O espao do disco 0 todo ocupado pelo volume C: J o espao do disco 1 ocupado pelos volumes D:, E: e F: Observe que tambm exibida uma instncia denominada _Total. A instncia _Total utilizada para monitorar a atividade somada de todos os discos do sistema. Por exemplo, se voc selecionar o contador Gravaes em disco por segundo e selecionar a instncia total, estar sendo monitorada a atividade total combinada de escrita em todos os discos do servidor. 6. Na caixa de listagem Selecionar contadores na lista, selecione o contador Gravaes em disco por segundo. Este contador uma medida da freqncia das operaes de gravao em disco. Ele ir indicar a atividade de gravao de informaes no disco. 7. Na caixa de listagem Selecionar instncias na lista, voc tem a opo de definir se quer monitorar todos os discos fsicos (_Total), ou somente alguns deles. Esta caixa exibe todas as ocorrncias do objeto Disco fsico, isto , exibe todos os discos instalados no computador. Por exemplo, para monitor apenas o Disco 0, clique na opo 0 C: para selecionar esta instncia do contador Gravaes em disco por segundo. Caso existam vrios discos e voc queira monitorar apenas alguns deles, voc deve selecionar apenas os discos a serem monitorados antes de clicar no boto Adicionar. Para selecionar os diversos discos a serem monitorados, pressione a tecla Ctrl e v clicando nos discos a serem monitorados. medida que voc for clicando, os discos sero selecionados. 8. D um clique no boto Adicionar, para incluir este contador para monitorao. 9. Agora voc ir monitorar a freqncia de gravao somente do volume E:. Para isto, na lista Objeto de desempenho, selecione o objeto Disco lgico. 10. Na caixa de listagem Selecionar contadores na lista, selecione o contador Disk Gravaes em disco por segundo. 11. Observe que, na caixa de listagem da direita, exibida uma lista com todos os volumes disponveis. D um clique no volume E: (ou em um volume disponvel no servidor que voc est utilizando) para marc-lo. 12. D um clique no boto Adicionar, para incluir este contador para monitorao. 13. D um clique no boto Fechar. 14. Voc estar de volta ao console Desempenho, com contadores para monitorar a atividade de gravao do Disco 0 e da partio E:, conforme indicado pela Figura 7.25. 15. A monitorao da atividade dos discos, atravs dos diversos contadores disponveis, de grande importncia, principalmente para servidores que atuam como servidores de disco (basicamente com compartilhamento de pastas e arquivos) ou servidores Web para a Internet ou para uma intranet. Normalmente o sistema de discos a parte mais lenta do sistema, a parte que pode proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000415 Figura 7.25 Grfico indicativo da atividade de gravao. 16. Feche o console Desempenho. Exerccio: Abra novamente o console Desempenho e monitore os seguintes contadores para o Disco fsico, para o disco 0: Leituras de disco por segundo e Transferncia de disco por segundo. Utilize o boto Explicar para ver o que representa cada um destes contadores. Feche o console Desempenho. CONTADORES A SEREM MONITORADOS EM SERVIDORES Na tabela a seguir, da ajuda do Windows Server 2003, apresento uma lista de contadores que a Microsoft recomenda que sejam monitorados permanentemente nos servidores da rede. causar os maiores problemas em relao ao desempenho. Muitas vezes pode ser necessria a atualizao para discos mais rpidos ou para a implementao de nveis de RAID-5 ou RAID-10 baseados em hardware. Porm estas utilizaes somente se justificam em servidores com um volume de acesso elevado. Componente Aspecto do desempenho sendo monitorado Contadores a monitorar Disco Uso PhysicalDisk\Leituras de disco/s PhysicalDisk\Gravaes de disco/s LogicalDisk\% de espao livre Interprete cuidadosamente o contador % tempo de disco. Como a instncia _Total desse contador pode no refletir com preciso o uso em sistemas de vrios discos, importante usar tambm o contador % Tempo ocioso. Observe que esses contadores no podem exibir um valor acima de 100%. Tabela 7.2 Contadores recomendados pela Microsoft proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4160000Curso Completo VALORES INDICATIVOS DE LIMITES DE DESEMPENHO PARA CONTADORES Definir exatamente qual o limite aceitvel para o valor de um ou mais contadores no uma cincia exata. Por exemplo, afirmar que sempre que a taxa de utilizao do processador se mantiver em torno de 80%, por longos perodos, um indicativo de queda no desempenho ou um indicativo de que o processador deve ser substitudo no algo preciso. Claro que existem valores para determinados contadores que servem para disparar o alarme, isto , servem para alertar o administrador a que uma parte do sistema pode estar sendo responsvel pela queda de desempenho, ou seja, pode estar sendo o que chamamos de gargalo do sistema. Na tabela a seguir, da Ajuda do Windows Server 2003, apresento alguns valores para determinados contadores, valores estes que, pelas recomendaes da Microsoft, devem servir de alerta ao administrador. Componente Aspecto do desempenho sendo monitorado Contadores a monitorar Disco Gargalos Disco fsico\ Comprimento mdio da fila de disco (todas as instncias) Memria Uso Memria\Bytes disponveis Memria\Bytes de cache Memria Gargalos ou vazamentos Memria\Pginas/s Memria\Leituras de pgina/s Memria\Falhas de transio/s Memria\Bytes de pool paginvel Memria\Bytes de memria no-paginvel Embora no sejam especificamente contadores do objeto Memria, as opes a seguir tambm so teis para anlise de memria: Arquivo de paginao\% uso (todas as instncias) Cache\Acertos de mapa de dados % Servidor\Bytes de pool paginvel e Servidor\Bytes de memria no-paginvel Rede Taxa de transferncia Contadores de transmisso de protocolo (varia de acordo com o protocolo de rede); para TCP/IP: Interface de rede\Total de bytes/s Interface de rede\Pacotes/s Servidor\Total de bytes/s ou Servidor\Bytes transmitidos/s e Servidor\Bytes recebidos/s Processador Uso Processador\% tempo de processador (todas as instncias) Processador Gargalos Sistema\Comprimento da fila de processador (todas as instncias) Processador\Interrupes/s Sistema\Alternncias de contexto/s proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000417 Recurso Objeto\Contador Limite sugerido Comentrios Disco Disco fsico\% de espao livre Disco lgico\% de espao livre 15% Disco Disco fsico\% tempo de disco Disco lgico\% tempo de disco 90% Disco Disco fsico\Leituras de disco/s, Depende das especificaes Verifique a taxa de transferncia especificada Disco fsico\Gravaes de disco/s do fabricante para seus discos, para ter certeza de que ela no ultrapassa as especificaes. Em geral, os discos Ultra Wide SCSI podem gerenciar de 50 a 70 operaes de E/S por segundo. Observe que o fato de a E/S ser seqencial ou aleatria pode ter um forte efeito sobre os valores de leituras de disco/s e gravaes de disco/s. Disco Disco fsico\Comprimento da Nmero de eixos mais 2 Esse contador instantneo. Observe seu fila de disco atual valor durante vrios intervalos. Para obter uma mdia ao longo do tempo, use Disco fsico\ Comprimento mdio da fila de disco. Memria Memria\Bytes disponveis Para computadores com Pesquise o uso da memria e adicione mais memria, mais de 4 MB memria se necessrio. Memria Memria\Pginas/s n pginas/s por arquivo Pesquise a atividade de paginao. de paginao Observe o volume de E/S transferido para os discos com arquivos de paginao. Arquivo de paginao Arquivo de paginao\% uso Acima de 70% Revise este valor juntamente com Bytes disponveis e Pginas/s para entender a atividade de paginao do computador. Processador Processador\% tempo de processador 85% Descubra o processo que est usando uma alta porcentagem do tempo do processador. Atualize para um processador mais rpido ou instale um processador adicional. Processador Processador\Interrupes/s Depende do processador; Um aumento brusco no valor desse um bom ponto de partida contador, sem um aumento 1.000 interrupes correspondente na atividade do sistema, por segundo indica um problema de hardware. Identifique o adaptador de rede, o disco ou outro tipo de hardware que est causando as interrupes. Servidor Servidor\Total de bytes/s Se a soma de Total de bytes/s para todos os servidores for aproximadamente igual s taxas de transferncia mximas de sua rede, convm segmentar a rede. Servidor Servidor\Falta de itens de trabalho 3 Se o valor atingir este limite, considere adicionar as entradas DWORD InitWorkItems (o nmero de itens de trabalho alocados para um processador durante a inicializao) ou MaxWorkItems (o nmero mximo de buffers de recebimento que um servidor pode alocar) ao Registro (em HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\Services\ LanmanServer\Parameters). A entrada InitWorkItems pode variar de 1 a 512, enquanto MaxWorkItems pode variar de 1 a 65.535. Comece por qualquer valor para InitWorkItems e um valor igual a 4.096 para MaxWorkItems e dobre esses valores at que o limite de Servidor\Falta de itens de trabalho fique abaixo de 3. Tabela 7.3 Valores limites recomendados pela Microsoft. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4180000Curso Completo Recurso Objeto\Contador Limite sugerido Comentrios Servidor Servidor\Pico de pool paginvel Quantidade de RAM fsica Esse valor um indicador do tamanho mximo do arquivo de paginao e da quantidade de memria fsica. Servidor Filas de trabalho do 4 Se o valor atingir esse limite, poder servidor\Comprimento da fila haver um gargalo no processador. Esse contador instantneo. Observe seu valor durante vrios intervalos. Vrios processadores Sistema\Comprimento da fila 2 Esse contador instantneo. Observe seu de processador valor durante vrios intervalos. Claro que estes so apenas valores sugeridos, os quais servem como alerta para o administrador. Conforme descrito anteriormente, o processo de monitorao um processo contnuo, de acompanhamento na evoluo dos principais contadores, sugeridos anteriormente. A seguir apresento, de uma forma resumida, os principais contadores e respectivos limites, ou seja, valores que podem indicar que o problema com o respectivo componente: Processador\% tempo de processador: No deve estar por longos perodos acima dos 80%. Sistema\Comprimento da fila de processador: No deve ser maior do que 2. LogicalDisk\Comprimento da fila de disco atual: Se este valor estiver constantemente acima de 2, o sistema de discos deve ser substitudo por um sistema mais rpido. Por exemplo, se os discos forem IDE, voc pode substituir por um sistema SCSI. Outra alternativa implementar um volume Set sem paridade. LogicalDisk\Comprimento da fila de disco atual: Valem os mesmos comentrios do item anterior. Memria\Pginas/s: Um valor maior do que 20 pode indicar a necessidade de um upgrade de memria, normalmente com a adio de mais memria RAM. Memria\Bytes confirmados: Deve ser sempre menor do que a quantidade total de memria instalada. CONFIGURANDO O CONSOLE DESEMPENHO PARA CAPTURAR DADOS AUTOMATICAMENTE Na introduo sobre a monitorao de desempenho, falei sobre a possibilidade de configurar o console Desempenho para efetuar a captura automtica de dados, conforme destacado no trecho a seguir: Tambm possvel configurar o console Desempenho para que seja feita a captura de dados automaticamente. O administrador pode configurar o console desempenho para que sejam capturados dados sobre os objetos/contadores a serem monitorados. Com base nesta captura, o administrador pode verificar os limites normais de operao para componentes como o processador, memria RAM e assim por diante. Depois faz-se um monitoramento contnuo e compara-se os resultados obtidos com os limites de operao obtidos em outras medies. Quando um determinado componente proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000419 N O T A comear a apresentar aumento na sua taxa de utilizao o administrador deve verificar o motivo para este aumento e, se for o caso, providenciar a substituio do elemento que est apresentando elevao em suas taxas de utilizao, antes que a sua taxa de utilizao atinja limites que possam comprometer o desempenho do servidor. Conforme pode ser concludo pelo pargrafo anterior, o principal objetivo em configurar a coleta automtica de dados para determinar quais as taxas normais de utilizao dos componentes a serem monitoradas, em situao normal de uso. Depois so feitas novas observaes para acompanhar a evoluo destas taxas de ocupao, para poder agir preventivamente quando um determinado componente estiver atingindo nveis elevados de utilizao. A captura automtica de dados feita utilizando a opo Logs e alertas de desempenho, do console Desempenho. Com esta opo, voc pode coletar automaticamente dados de desempenho de computadores locais ou remotos. Voc pode visualizar os dados que foram gravados no log usando o console Desempenho ou exportar os dados para programas de planilha ou banco de dados, para fins de anlise e gerao de relatrios. Por exemplo, voc pode importar os dados gravados em um log de desempenho, para um banco de dados do Microsoft Access e utilizar estes dados para a criao de relatrios personalizados. Com a opo Logs e alertas de desempenho, esto disponveis os seguintes recursos: Coleta de dados em formato separado por vrgulas ou por tabulaes para facilitar a importao por programas de planilha ou programas de banco de dados. fornecido tambm um formato de arquivo de log binrio para registro em log circular ou para registro em log de instncias, como segmentos ou processos, que podem comear depois do incio da coleta de dados. (O registro em log circular o processo de registro contnuo de dados em um nico arquivo, sobrescrevendo os dados anteriores com novos dados.) Voc tambm pode coletar dados em formato de banco de dados SQL. Essa opo define o nome de um banco de dados SQL e conjunto de logs existentes dentro do banco de dados em que os dados de desempenho sero lidos ou gravados. Esse formato de arquivo til ao coletar e analisar dados de desempenho de toda a empresa, em vez de servidor por servidor. Por exemplo, a partir de um nico console Desempenho, voc pode obter dados sobre diversos servidores da rede e armazenar estes dados centralizadamente em um nico banco de dados do SQL Server. Importante: Lembre-se que, quando houver a necessidade de capturar dados de desempenho de diversos servidores e consolidar estas dados em um nico banco de dados, a opo mais indicada fazer com que os dados obtidos sejam gravados em um banco de dados do SQL Server. Os dados coletados podem ser visualizados durante a coleta ou aps seu trmino. Como o log funciona da mesma maneira que um servio do Windows Server 2003, a coleta de dados ocorre independentemente de haver um usurio logado ou no, no servidor que est sendo monitorado. Voc pode definir os momentos de incio e parada, nomes de arquivos, tamanho mximo de arquivo e outros parmetros para a gerao automtica do log. Voc pode gerenciar vrias sesses de log em uma nica janela de console. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4200000Curso Completo N O T A Voc pode definir um alerta em um contador, especificando que uma mensagem seja enviada, um programa seja executado e uma entrada seja feita no log de eventos do Win- dows Server 2003 ou um log seja iniciado quando o valor do contador selecionado for superior ou inferior a uma configurao especificada. Por exemplo, voc pode monitorar a taxa de utilizao do processador e solicitar que o administrador seja avisado quando esta taxa ultrapassar um determinado patamar, digamos 85%, ou voc pode monitorar o espao livre em todas as unidades de disco ou em todos os volumes, de todos os servidores da rede e pedir que seja disparado um alerta para o administrador, sempre que uma unidade apresentar espao livre inferior a 20%. Para que a coleta de dados possa funcionar corretamente, o servio Logs e alertas de desempenho deve ter sido inicializado corretamente. Antes de prosseguir voc ir verificar (no exemplo logo a seguir) se este servio est configurado para inicializao automtica. Caso no esteja, ir configur-lo para que seja inicializado automaticamente. Exemplo: Verificando as opes de configurao e inicializao do servio Logs e alertas de desempenho. 1. Faa o logon como administrador ou com uma conta com permisso de administrador. 2. Abra o console Servios que est disponvel no menu Ferramentas administrativas. Figura 7.26 Configurando o servio Logs e alertas de desempenho para iniciar automaticamente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000421 3. Localize o servio Logs e alertas de desempenho e verifique o valor indicado na coluna Tipo de inicializao. Se o valor desta coluna estiver em Manual, significa que o servio no est sendo inicializado automaticamente. Se for este o caso, d um clique duplo no servio para exibir a janela com as propriedades do servio. 4. Na janela de propriedades do servio, na guia Geral, altere o tipo de inicializao para Automtico, conforme indicado na Figura 7.26. 5. Clique no boto Iniciar para fazer com que o servio seja inicializado imediatamente. 6. Surge a mensagem indicada na Figura 7.27. Figura 7.27 Mensagem sobre o servio Logs e alertas de desempenho. Esta mensagem informa que o servio foi inicializado e encerrado, pois no momento no existe nenhuma coleta de dados em andamento. Porm o Windows Server 2003 ir iniciar o servio automaticamente, quando uma coleta de dados for configurada. O Windows Server 2003 detecta que o servio deve estar ativo para que a coleta de dados possa ser feita e inicializa o servio automaticamente. 7. Clique em OK para fechar a mensagem de aviso. Voc estar de volta janela de propriedades do servio. Clique em OK para fech-la. 8. Feche o console Servios. Uma vez estando configurado corretamente o servio Logs e alertas de desempenho, temos disposio as seguintes funcionalidades: Iniciar e parar o log manualmente, por demanda ou automaticamente, com base em um agendamento definido pelo usurio. Definir configuraes adicionais para log automtico, como renomear o arquivo automaticamente e definir parmetros para parar ou iniciar um log com base no tempo decorrido ou no tamanho do arquivo. Criar logs de rastreamento. Usando o provedor de dados do sistema padro do Windows Server 2003 ou outro provedor de aplicativos, os logs de rastreamento registram detalhadamente os eventos de aplicativos do sistema, quando ocorrem certas atividades, como uma operao de entrada/sada (E/S) de disco ou uma falha de pgina. Quando o evento ocorre, o Windows Server 2003 registra os dados em um arquivo de log especificado pelo servio de logs e alertas de desempenho. Isso difere da operao dos logs de contadores. Quando eles esto em uso, o servio obtm dados do sistema no fim do intervalo de atualizao, em vez de esperar por um proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4220000Curso Completo N O T A evento especfico. Uma ferramenta de anlise necessria para interpretar o resultado do log de rastreamento. Definir um programa que seja executado quando um log for parado. Por exemplo, voc pode configurar que seja executado um script que copia os arquivos com os dados para um drive da rede, onde o arquivo ser importado em um banco de dados. O script tambm pode ser configurado para enviar uma mensagem para o administrador. Se voc desejar exportar dados do log para o Microsoft Excel, o servio de logs e alertas de desempenho dever ser parado, porque o Microsoft Excel exige acesso exclusivo ao arquivo de log. No h informaes sobre outros programas que exijam esse acesso exclusivo. Portanto, voc geralmente pode trabalhar com dados de um arquivo de log enquanto o servio estiver coletando dados para esse arquivo. Para parar o servio de logs e alertas utilize o console Servios, conforme descrito no exemplo anterior. Agora voc acompanhar alguns exemplos prticos de coleta de dados. Exemplo 1: Configurar o servio de logs e alertas para monitorar a taxa de ocupao do processador. Sero monitorados os seguintes contadores: % tempo de processador Interrupes/s Os dados devero ser obtidos em intervalos de 5 segundos e salvos em um arquivo do tipo texto. Os dados devero ser gravados no arquivo C:\Monitora o processador_000001.csv. Para fazer o acompanhamento proposto e gerar o arquivo de log, siga os passos indicados a seguir: 1. Faa o logon como administrador, ou com uma conta com permisso de administrador. 2. Abra o console Desempenho: Iniciar -> Ferramentas administrativas -> Desempenho. 3. No painel da esquerda, clique no sinal de + ao lado da opo Logs e alertas de desempenho. Sero exibidas as opes indicadas na Figura 7.28: Figura 7.28 Opes de configurao para logs e alertas de desempenho. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000423 N O T A 4. Clique na opo Logs do contador. Observe que, por padro, j existe um log configurado. Este log, chamado Viso geral do sistema, coleta dados de um conjunto de objetos/contadores, os quais fornecem uma viso geral do desempenho do servidor. Voc pode iniciar a coleta de dados para este log, clicando nele para marc-lo e depois selecionando o comando Ao -> Iniciar ou clicando no boto Iniciar (boto com o desenho de um pequeno tringulo para a direita). 5. Neste exemplo voc ir criar um novo log. Para criar um novo log clique na opo Logs do contador e selecione o comando Ao -> Novas configuraes de log. Surge uma janela solicitando o nome do novo log. Digite Monitora o processador, conforme indicado na Figura 7.29 e clique em OK. Figura 7.29 Definindo um nome para o novo log. No pode haver nenhum log selecionado, se no a opo Novas configuraes de log no ser exibida no menu Ao. Se esta opo no estiver sendo exibida, clique novamente na opo Logs do contador, no painel da esquerda. Isso far com que qualquer log que esteja marcado seja desmarcado. Surge a janela Monitora o processador, na qual ns temos as seguintes guias: Geral: Esta guia utilizada para definir quais objetos/contadores faro parte do log, definir uma descrio para o log, definir o intervalo de coleta dos dados e definir se o log executar no contexto do usurio padro do sistema ou no contexto de uma conta de usurio especfica. Arquivos de log: Nesta guia voc define o formato para o arquivo de log, a forma de nomeao dos arquivos, um comentrio e se os arquivos existentes devem ser sobrescritos ou mantidos. Voc somente poder acessar esta guia se tiver adicionado pelo menos um objeto ou contador, usando a guia Geral. Agendar: Nesta guia o administrador pode definir um agendamento para a coleta. Por exemplo, de segunda a sexta-feira, das 8:00 s 18:00. Agora voc adicionar os contadores % tempo de processador e Interrupes/s, do objeto Processador. 6. Clique na guia Geral. Clique no boto Adicionar contadores. Ser exibida a janela Adicionar contadores, a qual j utilizamos nos exemplos anteriores. Adicione os contadores % tempo de processador e Interrupes/s, do objeto Processador e clique em Fechar. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4240000Curso Completo 7. No campo Intervalo, defina um intervalo de 5 segundos para a coleta dos dados. A guia Geral deve estar conforme indicado na Figura 7.30: Figura 7.30 Configuraes da guia Geral, para o exemplo proposto. 8. Clique na guia Arquivos de log. Para o formato selecione Arquivo de texto (delimitado por vrgulas). Clique no boto Configurar para definir o local onde ser criado o arquvio de log e um tamanho mximo. Figura 7.31 Definindo configuraes para o arquivo de log. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000425 N O T A 9. Ao clicar no boto Configurar ser exibida a janela Configurar Arquivos de log. Defina as configuraes indicadas na Figura 7.31. 10. Clique em OK para fechar a janela Configurar arquivos de log. 11. Voc estar de volta guia Arquivos de log. Clique na guia Agendar. 12. Defina um agendamento para que a coleta seja iniciada e encerrada. Por exemplo, configure o log para iniciar em uma data e horrio especficos, conforme exemplo indicado na Figura 7.32. Nesta guia voc tambm pode definir o que deve ser feito, caso o arquivo de log atinja o seu tamanho mximo. Esto disponveis as seguintes opes: Iniciar um novo arquivo de log ou Executar este comando. Figura 7.32 Definindo um agendamento para a coleta de dados. 13. Clique em OK. Voc estar de volta ao console Desempenho. O log Monitora o processador foi criado e iniciar a coleta de dados no horrio determinado, conforme configuraes definidas na guia Agendar. Observe que o log Monitora o processador j aparece na lista de logs, juntamente com o log Viso geral do sistema, sendo que este ltimo automaticamente criado pelo Windows Server 2003, conforme descrito anteriormente. Se voc precisar alterar alguma configurao de um log, basta dar um clique duplo no respectivo log que ser exibida a janela com as propriedades do log, onde voc ter acesso s guias Geral, Arquivos de log e Agendar. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4260000Curso Completo N O T A 14. O administrador pode fazer com que o log inicie a coleta de dados imediatamente, independente do agendamento definido. Para isso clique no log Monitora o processador, para marc-lo e selecione o comando Ao -> Iniciar. 15. O log ser inicializado e os dados comearo a ser capturados e salvos no arquivo C:\Monitora o processador_000001.csv. Aguarde uma meia hora para que o Windows Server 2003 possa coletar uma boa quantidade de dados. Observe que, aps ser inicializado, o pequeno cone, ao lado do nome do log, alterna para a cor verde. Este um indicativo de que o log est em execuo. 16. Para suspender a execuo do log e a coleta dos dados, basta clicar no log a ser suspenso e depois selecionar o comando Ao -> Parar. Voc tambm pode clicar com o boto direito do mouse no log e, no menu que exibido, clicar na opo Parar. Alm do menu Ao, voc tambm pode utilizar o boto direito do mouse, clicando no respectivo log, para ter acesso aos comandos Iniciar e Parar. Na barra de ferramentas do console Desempenho, existem o boto Iniciar - boto com o desenho de um pequeno tringulo e o boto Parar - boto com o desenho de um pequeno quadrado. 17. Aps meia hora de coleta, suspenda a execuo do log. Agora vamos analisar os dados obtidos, os quais foram gravados no arquivo C:\Monitora o processador_000001.csv. 18. Feche o console Desempenho. Exemplo 2: Analisando os dados obtidos com o log Monitora o processador, criado no exemplo anterior. Para abrir o arquivo com os dados obtidos, faa o seguinte: 1. Faa o logon como administrador ou com uma conta do tipo administrador do computador. 2. Abra o bloco de notas. 3. Abra o arquivo C:\Monitora o processador_000001.csv. 4. Na listagem a seguir temos uma amostra dos dados de monitorao que foram salvos: 05/01/2002 16:31:04.511,99.99991106930112",237.43538236310363",Monitora o processador 05/01/2002 16:31:09.518,3.0029057285789862",281.7091259002674",Monitora o processador 05/01/2002 16:31:14.526,2.2029296933507747",250.63934155863382",Monitora o processador 05/01/2002 16:31:19.533,2.6029177109648804",240.65353587347821",Monitora o processador 05/01/2002 16:31:24.540,2.0029356845437163",233.86324638545705",Monitora o processador 05/01/2002 16:31:29.548,1.0029656405084575",230.06868469153261",Monitora o processador 05/01/2002 16:31:34.555,2.6029177109648804",236.65902223849881",Monitora o processador 05/01/2002 16:31:39.562,3.0029057285789862",245.64630670524917",Monitora o processador 05/01/2002 16:31:44.570,1.0029656405084575",232.46519458083583",Monitora o processador 05/01/2002 16:31:49.577,18.602438415529178",298.36987599426584",Monitora o processador 05/01/2002 16:31:54.584,31.602048987987665",277.20116678260399",Monitora o processador 05/01/2002 16:31:59.592,3.0029057285789862",237.8575213706925",Monitora o processador 05/01/2002 16:32:04.599,3.4028937461930919",238.45647244632733",Monitora o processador 05/01/2002 16:32:09.607,2.0029356845437163",232.46529833970988",Monitora o processador 05/01/2002 16:32:14.614,2.4029237021578331",233.66353396326622",Monitora o processador 05/01/2002 16:32:19.621,2.4029237021578331",235.86035744808296",Monitora o processador proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000427 05/01/2002 16:32:24.629,1.2029596493155048",229.66911893931493",Monitora o processador 05/01/2002 16:32:29.636,2.8029117197719389",237.45805673646964",Monitora o processador 05/01/2002 16:32:34.643,1.802941675736669",235.46093262598629",Monitora o processador 05/01/2002 16:32:39.651,2.6029177109648804",235.26065580456452",Monitora o processador 05/01/2002 16:32:44.658,2.8029117197719389",240.25447283770185",Monitora o processador 05/01/2002 16:32:49.665,6.6027978871059485",330.12472597415723",Monitora o processador 05/01/2002 16:32:54.673,4.4028637902283618",238.25672027892747",Monitora o processador 05/01/2002 16:32:59.680,3.6028877550001503",239.85475287258555",Monitora o processador 05/01/2002 16:33:04.687,2.2029296933507747",235.26124646664911",Monitora o processador 05/01/2002 16:33:09.695,3.0029057285789862",248.0428006830586",Monitora o processador 05/01/2002 16:33:14.702,1.6029476669296105",234.86158573592209",Monitora o processador 05/01/2002 16:33:19.709,1.802941675736669",240.8528989677138",Monitora o processador 05/01/2002 16:33:24.717,1.6029476669296105",237.05892288973411",Monitora o processador 05/01/2002 16:33:29.724,3.0029057285789862",237.25834432542132",Monitora o processador 05/01/2002 16:33:34.731,2.6029177109648804",241.45210288853528",Monitora o processador 05/01/2002 16:33:39.739,2.8029117197719389",242.45101580959104",Monitora o processador 05/01/2002 16:33:44.746,2.2029296933507747",243.8488266800569",Monitora o processador 05/01/2002 16:33:49.754,0.80297163170139907",238.05704786936531",Monitora o processador 05/01/2002 16:33:54.761,2.4029237021578331",237.05864514051027",Monitora o processador 05/01/2002 16:33:59.768,3.2028997373860446",238.65630457220965",Monitora o processador 05/01/2002 16:34:04.776,2.0029356845437163",234.06288045367026",Monitora o processador 05/01/2002 16:34:09.783,2.8029117197719389",236.06013571127014",Monitora o processador 05/01/2002 16:34:14.790,3.6028877550001503",240.25373559434755",Monitora o processador 05/01/2002 16:34:19.798,3.6028877550001503",239.45538124481718",Monitora o processador 05/01/2002 16:34:24.805,1.802941675736669",234.46240981460366",Monitora o processador 05/01/2002 16:34:29.812,2.8029117197719389",235.86018637754623",Monitora o processador 05/01/2002 16:34:34.820,3.8028817638072088",291.58010386253267",Monitora o processador 05/01/2002 16:34:39.827,2.0029356845437163",234.66201751967793",Monitora o processador 05/01/2002 16:34:44.834,2.4029237021578331",236.85895914831343",Monitora o processador 05/01/2002 16:34:49.842,3.2028997373860446",239.8546458154506",Monitora o processador 05/01/2002 16:34:54.849,3.0029057285789862",238.85597698173174",Monitora o processador 05/01/2002 16:34:59.856,3.2028997373860446",242.65053880935429",Monitora o processador 05/01/2002 16:35:04.864,2.6029177109648804",241.85174327309008",Monitora o processador *************************************************************************** A listagem apresenta dados para cerca de 4 minutos, com incio em 16:31:04.511 e trmino em 16:35:04.864. A primeira coluna representa o horrio da coleta do dado, a segunda coluna o valor correspondente ao contador % tempo do processador, a terceira coluna o valor correspondente ao contador Interrupes/s. A quarta e ltima coluna o nome do log, nome este que definido pelo usurio quando da criao do log, conforme visto anteriormente. Observe que existe um intervalo de 5 segundos entre uma linha e outra, que exatamente o intervalo que voc configurou no exemplo de criao do log. 5. Feche o bloco de notas. Com os dados no formato .csv, voc pode import-los facilmente para o Excel ou para o Access, para fazer uma srie de anlises, usando as ferramentas destes programas. Por exemplo, voc pode utilizar os dados para calcular a taxa mdia de ocupao do processador, ou o nmero mdio de interrupes por segundo. O formato .csv pode ser aberto diretamente no Excel e facilmente importado pelo Microsoft Access. A seguir coloco uma lista resumida (em relao lista apresentada anteriormente) dos contadores mais comumente utilizados para verificao do desempenho do computador como um todo e que so candidatos a serem configurados para coleta automtica, utilizando logs de desempenho. Esta lista obtida na documentao oficial do Windows Server 2003. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4280000Curso Completo N O T A I M P O R T A N T E Contadores para identificar gargalos em recursos de memria: Memria\Bytes disponveis Memria\Pginas/s Contadores para identificar gargalos em recursos de disco: PhysicalDisk -> % tempo de disco e % Tempo ocioso PhysicalDisk -> Leituras de disco/seg e Gravaes de disco/seg PhysicalDisk -> Comprimento mdio da fila de disco LogicalDisk -> % de espao livre Monitore contadores de memria para determinar se a paginao excessiva est sobrecarregando o disco. Quando o computador tem pouca memria, o Windows Server 2003 obrigado a utilizar intensivamente os arquivos de paginao (Swap). O arquivo de trocas, por padro, fica na raiz do disco C:, com o nome de pagefile.sys ou pode tambm ficar em outros discos e at mesmo distribudo em dois ou mais discos, conforme configuraes efetuadas pelo administrador. Com o uso intensivo do arquivo de trocas, as taxas de utilizao do disco rgido aumentam significativamente, porm o problema no com o sistema de discos e sim devido falta de memria (que a causa da paginao excessiva). Ao acrescentar mais memria RAM, voc ir reduzir a utilizao do arquivo pagefile.sys e, conseqentemente, reduzir as taxas de utilizao do disco rgido. Contadores para identificar gargalos em recursos do processador: Processador -> Interrupes por segundo Processador -> % tempo de processador Processo (processo) -> % tempo de processador Sistema -> Comprimento da fila de processador Um nmero muito elevado de interrupes por segundo pode ser causado por problemas em um dispositivo de hardware, ou em um driver de hardware, conforme descrito anteriormente. Contadores para identificar gargalos em recursos de rede: Interface de rede ->Total de bytes/segundo, Bytes enviados/s e Bytes recebidos/s Objeto_de_camada_de_protocolo -> Segmentos recebidos/s, Segmentos enviados/s, Quadros enviados/s e Quadros recebidos/s Servidor -> Total de bytes/segundo, Bytes recebidos/s e Bytes enviados/s Contadores para identificar gargalos em recursos de impressora: Fila de impresso -> Bytes impressos/s Fila de impresso -> Erros de trabalhos proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000429 MONTANDO GRFICOS DE DESEMPENHO A PARTIR DE INFORMAES DE ARQUIVOS DE LOG possvel utilizar o console Desempenho para acessar as informaes gravadas em um arquivo de log, como o que criamos no exemplo anterior. Ao abrir o arquivo podemos especificar para quais contadores queremos montar o grfico. Quando abrimos um arquivo de log, evidentemente, somente estaro disponveis os contadores para os quais foram salvas informaes no arquivo. Vamos a um exemplo prtico, onde acessaremos informaes do arquivo C:\Monitora o processador_000001.csv, criado no exemplo anterior. Exemplo: Acessando os dados de um arquivo de log j existente. Para acessar os dados do arquivo C:\Monitora o processador_000001.csv, siga os passos indicados a seguir: 1. Faa o logon como administrador, ou com uma conta com permisso de administrador. 2. Abra o console Desempenho: Iniciar -> Ferramentas administrativas -> Desempenho. 3. Ser aberto o console de monitorao de desempenho, com alguns indicadores j adicionados, conforme descrito anteriormente. 4. Para limpar as configuraes atuais clique no boto Novo conjunto de contadores, que o primeiro boto da barra de ferramentas ou pressione Ctrl+E. Todos os contadores sero excludos. Agora voc ir carregar o arquivo de log C:\Monitora o processador_000001.csv, criado anteriormente. 5. Clique no boto Exibir dados de logs, que o quarto boto da esquerda para a direita, na barra de ferramentas, ou pressione Ctrl+L. Ser exibida a janela Propriedades do Monitor do sistema, com a guia Fonte j selecionada. Voc utiliza a guia Fonte para informar o arquivo de log a ser carregado. Figura 7.33 Selecionando o arquivo de log a ser carregado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4300000Curso Completo 6. Na guia Fonte clique na opo Arquivos de log e depois clique no boto Adicionar. Ser aberta a janela Selecionar arquivo de log. Selecione o arquivo C:\Monitora o processador_000001.csv, conforme indicado na Figura 7.33. 7. Clique no boto Abrir. Voc estar de volta guia Fonte, com o arquivo C:\Monitora o processador_000001.csv j selecionado. 8. Clique em OK e o arquivo de log ser carregado. Por padro ainda no esto sendo exibidas informaes sobre os contadores do arquivo de log. Esta a prxima etapa, dentre os contadores que existem no arquivo de log, para qual ou quais queremos exibir informaes. 9. Clique no boto Adicionar, boto com um sinal de +, ou pressione Ctrl+I. Ser exibida a janela Adicionar contadores. Abra a lista objeto de desempenho. Observe que somente aparece o objeto Processador. Isto acontece porque, no arquivo de log que abrimos, somente existem informaes sobre os contadores % tempo do processador e Interrupes/s do objeto Processador. 10. Na lista Selecione contadores da lista, selecione o contador % tempo do processador e clique no boto Adicionar. 11. Clique em Fechar. 12. Voc estar de volta ao console Desempenho. Observe que foi montado um grfico com os valores do contador % tempo do processador Time, para o perodo contido no arquivo de log, que conforme podemos observar na Figura 7.34 de 20 minutos e 1 segundo. Figura 7.34 Grfico montado com informaes do arquivo de log. Voc pode fazer com que o grfico seja baseado apenas em um determinado perodo e no em toda a janela de tempo do arquivo de log. Agora voc aprender a limitar o perodo de tempo no qual o grfico baseado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000431 Figura 7.35 Definindo uma janela de tempo. 16. Defina uma janela de tempo e clique em OK. 17. Voc estar de volta ao console Desempenho. 18. Observe que o perodo dos dados j foi limitado, conforme pode ser conferido no campo Durao, nos campos logo abaixo do grfico. 19. Agora voc ir configurar algumas propriedades do grfico. 20. Clique com o boto direito do mouse em qualquer parte do grfico. No menu de opes que exibido clique em Propriedades. 21. Na janela de propriedades que exibida, d um clique na guia Grfico. Nesta guia voc pode definir um ttulo para o grfico, se sero exibidas grades verticais e horizontais, bem como definir a escala do eixo vertical. Defina as opes conforme indicado na Figura 7.36: 13. Clique com o boto direito do mouse em qualquer parte do grfico. No menu de opes que exibido clique em Propriedades. 14. Na janela de propriedades que exibida, d um clique na guia Fonte. 15. Na parte de baixo da janela existem dois controles deslizantes, que voc pode deslocar para definir uma janela de tempo na qual o grfico ser baseado, conforme exemplo da Figura 7.35: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4320000Curso Completo Figura 7.36 Configurando opes do grfico. 22. Clique em OK e observe que as alteraes j so aplicadas ao grfico. 23. Veja que o grfico fica com um aspecto bem melhor, conforme indicado na Figura 7.37: Figura 7.37 O grfico aps as formataes. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000433 N O T A 24. Feche o console Desempenho. UTILIZANDO ALERTAS PARA MONITORAR SITUAES LIMITE O administrador pode configurar alertas com base em contadores de desempenho. Por exemplo, posso configurar um alerta que disparado sempre que um determinado contador atinge um valor limite. Podem ser configuradas diferentes aes como resposta a um alerta: Enviar uma mensagem para um usurio, normalmente o administrador, gravar um evento no log de eventos do Windows Server 2003, executar um programa ou iniciar a captura de dados de desempenho, com base nas configuraes de um log predefinido. A seguir apresento um exemplo prtico de criao de um alerta com base no valor limite de um contador. Exemplo: Criar um alerta que ser disparado sempre que o contador % tempo do processador ultrapassar 5%. Como resposta ao alerta, uma mensagem deve ser enviada para o usurio Administrador. Evidentemente que 5% um valor muito baixo. Estou utilizando este valor apenas para forar que o alerta seja disparado e com isso voc possa conferir se a mensagem est realmente sendo enviada para o administrador. Para criar o alerta proposto siga os passos indicados a seguir: 1. Faa o logon como administrador, ou com uma conta com permisso de administrador. 2. Abra o console Desempenho: Iniciar -> Ferramentas administrativas -> Desempenho. 3. No painel da esquerda, clique no sinal de + ao lado da opo Logs e alertas de desempenho. 4. Clique na opo Alertas. Observe que, por padro, nenhum alerta criado. 5. Vou criar um novo alerta para monitorar o contador % tempo de processador. 6. Para criar um novo alerta selecione o comando Ao -> Novas configuraes de alerta. 7. Surge uma janela solicitando que voc digite um nome para o alerta que est sendo criado. Digite Alerta-Teste, conforme indicado na Figura 7.38 e clique em OK. 8. Ser exibida a janela Alerta-Teste com as guias Geral, Ao e Agendar, na qual voc define as caractersticas do alerta que est sendo criado. 9. O primeiro passo adicionar o contador ou os contadores, que sero monitorados. Na guia Geral d um clique no boto Adicionar. Ser exibida a janela Adicionar contadores, a qual j foi utilizada em exemplos anteriores. Na lista de objetos selecione Processador e na lista de contadores selecione % tempo de processador. Clique no boto Adicionar e depois clique no boto Fechar. Voc estar de volta guia Geral da janela do alerta. 10. Na guia Geral voc tambm pode definir um comentrio e o valor limite para o contador que foi adicionado. No nosso exemplo digite 5, no campo Limite e certifique-se de que na lista Alertar quando o valor for esteja selecionado Superior a. Com isso estou configurando o alerta para ser disparado quando o contador % tempo de processador atingir um valor superior a 5%. Suas configuraes devem estar conforme indicado na Figura 7.39. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4340000Curso Completo Figura 7.38 Definindo o nome do alerta que est sendo criado. Figura 7.39 Configuraes da guia Geral. 11. D um clique na guia Ao. Nesta guia voc define uma ou mais aes que sero executadas quando o alerta for disparado. Para o nosso exemplo quero apenas que uma mensagem seja enviada para o usurio Administrador. Defina as configuraes conforme indicado na Figura 7.40. 12. Clique em OK e o alerta ser criado e j ser inicializado. Alertas podem ser iniciados e parados, assim como logs para a captura automtica de dados que tambm podem ser iniciados e parados. Para parar um alerta que est em andamento, clique no boto Parar boto com o desenho de um quadradinho ou clique com o boto direito do mouse no alerta e, no menu de opes que exibido, clique em Parar. A ao associada ao alerta somente ser disparada enquanto o alerta estiver em execuo. 13. Na Figura 7.41 mostro o exemplo da mensagem que enviada para o usurio Administrador quando o alerta deste exemplo disparado, ou seja, quando o contador % tempo de processador proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000435 Figura 7.40 Configuraes da guia Ao. atingir mais do que 5%. Esta mensagem foi enviada na estao de trabalho onde o administrador estava logado, que no exemplo era uma estao de trabalho com o Windows XP Professional. Ou seja, a mensagem enviada para onde o administrador estiver logado, independente do servidor onde est configurado o alerta. Figura 7.41 Mensagem enviada em resposta ao alerta. 14. Feche o console Desempenho. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4360000Curso Completo N O T A UTILIZANDO O CONSOLE DESEMPENHO PARA MONITORAR O SQL SERVER 2005 Agora vamos praticar um pouco. Neste item vamos monitorar alguns dos objetos de desempenho disponibilizados pelo SQL Server 2005. So muitos os objetos e respectivos contadores do SQL Server 2005. Para localizar estes objetos na lista de objetos disponveis, procure por objetos que iniciam com MSSQL. Podemos fazer o monitoramento de objetos independentemente, para cada instncia do SQL Server. Na Tabela 7.4 temos uma relao entre o nome dos objetos e a respectiva instncia do SQL Server. Instncia Nome do objeto inicia com... SERVIDOR\SQL2005 MSSQL$SQL2005 SERVIDOR\SRVINST02 MSSQL$SRVINST02 Tabela 7.4 Relao Objeto x Instncia. Para cada instncia do SQL Server, so disponibilizados, dentre dezenas de outros, os seguintes objetos: Access Methods Backup Device Buffer Manager Buffer Partition Cache Manager Databases General Statistics Latches Locks Memory Manager Replication Agents Replication Distribution Replication Logreader Replication Merge Replication Snapshot SQL Statistics User Settable Para uma descrio completa, de todos estes objetos e todos os contadores de cada objeto, acesse o Books. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000437 Agora vamos a um exemplo prtico, onde iremos monitorar alguns contadores relacionados instncia SERVIDOR\SQL2005. Tambm iremos monitorar contadores do objeto Processador e do objeto Memria. Exemplo: Utilizar o console Desempenho para monitorar os contadores indicados na Tabela 7.5. A seguir temos uma descrio dos contadores do SQL Server para o objeto MSSQL$SQL2005: General Statistics. Logins/sec: O nmero de logins inicializados por segundo na instncia em questo. Logouts/sec: O nmero de logouts inicializados por segundo na instncia em questo. User Connections: Nmero de usurios conectados instncia em questo. Para adicionar os contadores indicados na Tabela 7.5, siga os passos indicados a seguir: 1. Abra o console Desempenho (Iniciar -> Programas -> Ferramentas Administrativas -> Desempenho). 2. D um clique no boto Adicionar (boto com um sinal de +). Surge a janela Adicionar contadores. 3. Na lista de objetos selecione MSSQL$SQL2005: General Statistics. 4. D um clique no contador Logins/sec para marc-lo, depois d um clique no boto Adicionar. 5. D um clique no contador Logouts/sec para marc-lo, depois d um clique no boto Adicionar. 6. D um clique no contador User connections para marc-lo, depois d um clique no boto Adicionar. 7. Na lista de objetos selecione processador. 8. D um clique no contador Porcentagem de tempo do processador para marc-lo, depois d um clique no boto Adicionar. 9. D um clique no contador % Tempo de usurio para marc-lo, depois d um clique no boto Adicionar. 10. Na lista de objetos selecione Memria. Objeto Contadores MSSQL$SQL2005: General Statistics Logins/sec MSSQL$SQL2005: General Statistics Logouts/sec MSSQL$SQL2005: General Statistics User Connections Processador Porcentagem de tempo do processador. Processador % Tempo de usurio Memria Mbytes disponveis. Tabela 7.5 Contadores a serem monitorados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4380000Curso Completo 11. D um clique no contador Mbytes disponveis para marc-lo, depois d um clique no boto Adicionar. 12. D um clique no boto Fechar. Voc estar de volta ao console Desempenho. Na Figura 7.42 temos um exemplo da medio dos contadores adicionados neste exemplo. Figura 7.42 Monitorando diversos contadores. 13. Na parte de baixo do grfico, na listagem de contadores, ao clicarmos em um contador, so exibidos valores Mximos, Mnimos, Mdio, o ltimo valor e o perodo de coleta dos dados. 14. Para pr um contador em destaque, basta clicar sobre o contador e pressionar Ctrl+H. 15. Feche o console Desempenho. UTILIZANDO O PROFILER O Profiler uma ferramenta que podemos utilizar para monitorar a atividade em uma ou mais instncias de um servidor SQL Server. Entenda-se por atividades desde uma conexo efetuada pelo usurio at os comandos T-SQL executados atravs desta conexo. Com a utilizao do Profiler, o DBA pode, por exemplo, monitorar somente as tentativas de conexo sem sucesso ou somente as consultas que demoram mais do que um determinado tempo para executar. Com isso, o DBA pode detectar tentativas de acesso indevido, como no caso de sucessivas tentativas de logon sem sucesso, at consultas mal escritas, com erros de lgica no cdigo T-SQL e que estejam demorando muito para executar. Enfim, uma ferramenta em que o DBA pode ter um acompanhamento do que est sendo executado em uma ou mais instncias do servidor SQL Server. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000439 Tambm temos a possibilidade de filtrar as atividades capturadas. Podemos especificar um filtro para que sejam exibidas apenas as consultas executadas em um determinado Banco de Dados, por exemplo. A atividade capturada pode ser salva em um arquivo ou em uma tabela de um Banco de Dados, para anlise posterior ou em tempo real. Voc pode fazer com que os dados sejam capturados e enviados para uma tabela, e desenvolver consultas que faam pesquisas nesta tabela. O conjunto de eventos e aes capturadas define o que chamamos de um Trace. Podemos criar um trace novo, onde vamos definir quais os eventos queremos acompanhar, ou podemos utilizar alguns modelos de trace que so fornecidos junto com o SQL Server. A seguir descrevemos os principais modelos de trace j existentes. Estes modelos de trace encontram-se na seguinte pasta: C:\Arquivos de programas\Microsoft SQL Server\90\Tools\Profiler\Templates\Microsoft SQL Server\90 Os templates que eram disponibilizados com o SQL Server 2000, esto disponveis em: C:\Arquivos de programas\Microsoft SQL Server\90\Tools\Profiler\Templates\Microsoft SQL Server\80. Os templates de trace do SQL Server 7.0 esto disponveis na pasta: C:\Arquivos de programas\Microsoft SQL Server\90\Tools\Profiler\Templates\Microsoft SQL Server\70 Para os caminhos indicados anteriormente, considerei que o SQL Server 2005 foi instalado no drive C: A seguir a descio dos principais modelos de trace disponveis. SP_Counts.tdf: Monitora o nmero de stored procedures que foram executados. Os resultados so agrupados pelo nome do stored procedure e informa quantas vezes cada um foi executado. Standard.tdf: Captura informaes sobre conexes (login e logout), execuo de stored proce- dures e a execuo de comandos SQL em batch, na ordem em que os comandos vo sendo executados. TSQL.tdf: Coleta informaes sobre todos os comandos T-SQL que foram enviados para o servidor SQL Server e a data e hora em que o comando foi enviado. TSQL_Duration.tdf: Coleta o comando T-SQL e o tempo de durao para a execuo dos comandos. TSQL_Grouped.tdf: Coleta informaes semelhantes s coletadas pelo modelo TSQL.tdf, porm agrupa as informaes pelo nome do usurio que enviou o comando. TSQL_Replay.tdf: Fornece uma srie de informaes detalhadas sobre os comandos que foram executados no servidor e permite que os comandos sejam reexecutados no servidor. TSQL_SPs.tdf: Informa o stored procedure que foi executado, alm de informar os comandos que foram executados dentro do stored procedure. Exibe os comandos na ordem em que fo- ram executados. Tuning.tdf: Coleta dados sobre a execuo de stored procedures e a execuo de comandos em batch. Depois que capturamos uma srie de comandos enviados para uma instncia do SQL Server, podemos enviar novamente estes comandos para a execuo. Na prtica, os mesmos comandos so executados novamente, na ordem em que foram capturados. Este procedimento til para testar alteraes que foram feitas no Banco de Dados, para melhorar o desempenho. Ao executarmos novamente os mesmos comandos, podemos observar se o tempo de execuo melhorou aps as alteraes efetuadas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4400000Curso Completo De uma maneira geral, devemos utilizar o profiler para as seguintes tarefas: Monitorar o desempenho de uma instncia do SQL Server. Depurar a execuo de comandos T-SQL e stored procedures. Identificar consultas que estejam com problemas de desempenho, isto , com um tempo de execuo muito elevado, muito acima do esperado. Testar a execuo de comandos T-SQL e stored procedures durante a fase de desenvolvimento de uma aplicao, de tal forma que possamos conferir se estes esto executando de acordo com o esperado. Testar hipteses. Podemos capturar as atividades normais em um servidor de produo e executar esta atividade contra um servidor de teste, no qual fizemos algumas alteraes. Com isso podemos verificar se as alteraes efetuadas produziro os efeitos desejados. Em caso afirmativo, podemos implementar as alteraes no servidor de produo. Ningum maluco o suficiente para fazer testes no servidor de produo (embora eu conhea muita gente que trabalha exatamente desta maneira, ou seja, sem planejar). Fazer auditoria de segurana nas atividades de uma instncia do servidor SQL Server. Com isso o administrador pode acompanhar, por exemplo, tentativas de acesso indevido ao servidor. Vamos a um exemplo prtico. Exemplo: Vamos utilizar o profiler para fazer o acompanhamento das atividades da instncia SERVIDOR\SQL2005. Utilizaremos o modelo Standard.TDF. Nosso exemplo ser constitudo dos seguintes procedimentos: Procedimento 1: Abrir o profiler e criar um novo trace baseado no modelo Standard.TDF. Procedimento 2: Gerar atividades na instncia SERVIDOR\SQL2005. Iremos gerar atividades utilizando o SQL Server Management Studio. Procedimento 3: Voltar ao profiler, parar a captura e observar a atividade capturada. Depois salvaremos esta atividade em uma tabela chamada TraceEx1, no Banco de Dados Exemplo1 (banco de dados este criado no Captulo 4). Esta tabela ser criada pelo prprio profiler, na hora de salvar a atividade capturada. Ento, mos obra. Procedimento 1: Para abrir o profiler e criar um novo trace baseado no modelo Standard.tdf, siga os passos indicados a seguir: 1. Abra o profiler (Iniciar -> Programas -> Microsoft SQL Server 2005 -> Profiler). Surge a janela do profiler, indicada na Figura 7.43. 2. Para criar um novo trace, selecione o comando File -> New -> Trace, ou pressione Ctrl+N. 3. Surge uma janela perguntando qual instncia do servidor SQL Server queremos monitorar. Na lista SQL Server selecione SERVIDOR\SQL2005. Para autenticao certifique-se de que a opo Windows authentication esteja selecionada. D um clique em Connect, para efetuar a conexo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000441 Figura 7.43 A janela principal do profiler. Surge a janela Trace Properties. Nesta janela podemos definir qual o modelo de trace que ser utilizado e personalizar algumas caractersticas do trace, conforme indicado na Figura 7.44. Figura 7.44 Configurando as propriedades do trace. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4420000Curso Completo 4. A guia General j vem selecionada, por padro. No campo Trace name digite: Trace de teste. 5. Observe que no campo Trace SQL Server j aparece SERVIDOR\SQL2005. Na lista Template name, certifique-se de que esteja selecionado o modelo Standard (default). A guia Events Selection: Nesta guia podemos definir quais os eventos que devem ser registrados no trace. Os eventos que aparecem nesta guia so ligados ao modelo selecionado. Para cada modelo de trace temos um conjunto diferente de eventos a serem monitorados e capturados pelo profiler. Nesta guia podemos adicionar ou excluir eventos, para personalizar o trace de acordo com nossas necessidades. Observe que os eventos esto divididos em uma srie de categorias: Cursors, Databases, Errors and Warnings, etc. Dentro de cada categoria temos uma srie de eventos, que podem ser adicionados ao trace, marcando o evento, ou removidos, simplesmente desmarcando o evento. Para cada evento que seleciona, voc pode marcar uma ou mais colunas, para definir quais informaes sero capturadas para cada evento. No vamos alterar nada nesta guia. 6. D um clique no boto Run para iniciar a captura de eventos pelo profiler. Sua janela deve estar conforme indicado na Figura 7.45. Figura 7.45 A captura foi iniciada. Agora vamos gerar atividades na instncia SERVIDOR\SQL2005, para que sejam capturados eventos no profiler. 7. Minimize o profiler e vamos para o prximo procedimento. Procedimento 2: Gerar atividades na instncia SERVIDOR\SQL2005. Iremos gerar atividades utilizando o Enterprise Manager e a janela de execuo de comandos T-SQL. Faremos algumas tentativas de logon com a senha incorreta, para gerar um evento de falha de logon. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000443 1. SQL Server Management Studio. 2. Navegue at a instncia SERVIDOR\SQL2005 e, depois, at o Banco de Dados Northwind. Clique com o boto direito do mouse na instncia e, no menu de opes que exibido, clique em New Query. Ser aberta a janela de execuo de comandos T-SQL. 3. Execute os seguintes comandos: USE NorthWind SELECT * FROM DBO.ORDERS 4. Restaure o profiler e observe que uma srie de eventos j foi capturada, conforme indicado na Figura 7.46. Figura 7.46 O profiler capturando atividades na instncia SERVIDOR\SQL2005. 5. Observe que na figura aparece em destaque o comando executado quando abrimos a tabela Orders: SELECT * FROM Orders. 6. Minimize o profiler. 7. Feche o SQL Server Management Studio. Procedimento 3: Voltar ao Profiler, parar a captura e observar a atividade capturada. Depois salvaremos esta atividade em uma tabela chamada TraceEx1, no Banco de Dados Exemplo2. Esta tabela ser criada pelo prprio profiler, na hora de salvar a atividade capturada. 1. Restaure o profiler. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4440000Curso Completo Figura 7.47 O evento de parada do trace: Trace Stop. Poderamos reiniciar o trace, utilizando o comando File -> RunTrace. Poderamos localizar um evento especfico utilizando o comando Edit -> Find. Para descartar todos os eventos capturados utilizamos o comando Edit -> Clear Trace Window. Podemos gerar um script com todos os comandos capturados. Este Script pode ser gerado para a verso SQL Server 2002 ou SQL Server 2005. Para isso utilizamos os comandos File -> Export -> Script Trace Definition -> For SQL Server 2005 ou File -> Export -> Script Trace Definition -> For SQL Server 2000, respectivamente. 4. Agora vamos salvar o trace em uma tabela do Banco de Dados Exemplo1, criado no Captulo 3. 5. Selecione o comando File -> Save As -> Trace Table. 6. Surge uma janela solicitando o nome da instncia e o tipo de autenticao. Na lista SQL Server, selecione SERVIDOR\SQL2005, e marque Windows authentication. 7. D um clique no boto Connect para conectar com a instncia selecionada. 8. Na janela Destination Table, que exibida, devemos selecionar o nome do Banco de Dados e o nome da tabela onde sero salvos os dados capturados. 9. Na lista Database selecione Exemplo1. 10. No campo Table, digite TraceEx1, conforme indicado na Figura 7.48. 2. Para parar a captura selecione o comando File -> Stop Trace. 3. No meu caso foram capturados 8261 eventos, sendo que o ltimo evento justamente a parada do trace: TraceStop, conforme indicado na Figura 7.47. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 7 ADMINISTRANDO, MONITORANDO E OTIMIZANDO O SQL SERVER 2005 Curso Completo0000445 Figura 7.48 Salvando os eventos capturados. 11. D um clique no boto OK e pronto. A tabela TraceEx1 ser criada no Banco de Dados Exemplo1, da instncia SERVIDOR\SQL2005 e os dados capturados pelo profiler sero gravados nesta tabela. 12. Voc estar de volta ao profiler. Feche-o. Voc pode abrir o SQL Server Management Studio e acessar a tabela TraceEx1 criada anteriormente. Na Figura 7.49 podemos ver os dados que foram salvos nesta tabela. Figura 7.49 A tabela TraceEx1. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4460000Curso Completo CONCLUSO Neste captulo aprendemos a utilizar uma srie de ferramentas e comandos para administrao, monitoramento e otimizao do SQL Server 2005. Aprendemos a criar um plano de manuteno utilizando o assistente Maintenance Plan Wizard. Tambm aprendemos a utilizar uma srie de comandos, os chamados comandos DBCC. Estes comandos so utilizados para anlise e correo de problemas na estrutura fsica de um Banco de Dados. Monitorar o desempenho de um servidor em busca de gargalos um dos papis do DBA. importante que seja feita uma manuteno peridica para que possamos nos antecipar aos problemas de desempenho que possam surgir. Com um acompanhamento peridico podemos prever quando um determinado componente se tornar um gargalo e a temos condies de tomar as aes necessrias. Na parte final do captulo aprendemos a utilizar o profiler, uma ferramenta bastante poderosa, que permite que seja capturada toda a atividade executada em uma determinada instncia do SQL Server. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Captulo 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4480000Curso Completo N O T A N O T A INTRODUO Replicao o processo de manter duas ou mais rplicas (cpias) dos dados em diferentes instncias do SQL Server 2005 (podendo at mesmo ser diferentes instncias de diferentes servidores). Podemos replicar desde um conjunto de linhas ou colunas de uma tabela at um Banco de Dados inteiro. Com o SQL Server 2005, temos uma srie de funes e assistentes que nos permitem configurar o processo de replicao. Uma vez estabelecida a replicao, o SQL Server 2005 encarrega-se de manter sincronizadas as diversas rplicas. No contexto deste captulo, chamaremos de rplica uma cpia de um conjunto de dados, mantida automaticamente sincronizada pelo SQL Server, em duas ou mais instncias do SQL Server 2005. A necessidade de replicao no exclusiva de ambientes de Bancos de Dados. Podemos citar o caso do Active Directory do Windows 2000 Server ou Windows Server 2003. Em um domnio do Windows 2000, a informao sobre os diversos objetos da rede armazenada em um Banco de Dados hierrquico: Active Directory. Existem servidores chamados DCs (Domain Controlers), os quais tm uma cpia completa do Banco de Dados do Active Directory. Alteraes podem ser feitas em qualquer DC do domnio. Como que o Windows faz para que todos os DCs recebam as alteraes feitas em um determinado DC? Utilizando o mecanismo de replicao. O mecanismo de replicao do Windows controlado pelo prprio Windows, e no tem nenhuma relao com os mecanismos de replicao do SQL Server 2005, os quais iremos tratar neste captulo. Apenas citamos o caso do Active Directory para ilustrar uma situao real onde a replicao utilizada. Tambm poderamos ter citado uma rede com o NDS da Novell, ou uma rede com servidores Lotus Notes ou Microsoft Exchange Server. O processo de replicao bastante confivel, sendo que este capaz de reiniciar do ponto onde foi interrompido, em caso de falhas de comunicao ou outra falha qualquer. Com isso o SQL Server 2005 capaz de garantir a integridade e a confiabilidade dos dados replicados. No incio do captulo veremos que, com a complexidade dos sistemas de informao atuais, a replicao muitas vezes mais do que uma opo, uma necessidade. Analisaremos diferentes cenrios onde o uso da replicao ajuda na manuteno de um ambiente distribudo, onde temos diversos servidores de Banco de Dados, sendo que estes esto distribudos em diferentes localizaes geogrficas. Em seguida, veremos qual a metfora utilizada pelo SQL Server 2005 para viabilizar o processo de replicao. Veremos a definio dos principais termos utilizados quando tratarmos com replicao no SQL Server 2005. Na seqncia, veremos os tipos de replicao existentes no SQL Server 2005. Para diferentes necessidades temos diferentes tipos de replicao que podem ser implementados. Aprenderemos a identificar qual o tipo mais adequado para uma determinada situao. Tambm falaremos sobre os modelos fsicos de replicao e como os diferentes tipos de replicao se encaixam nos diferentes modelos fsicos de replicao. Aps entendidos os conceitos associados com a replicao e apresentados os diferentes tipos e modelos fsicos, estamos aptos a partir para a implementao. Aprenderemos a configurar a replicao, atravs proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000449 de exemplos prticos, passo a passo. Como temos duas instncias do SQL Server 2005 instaladas, vamos configurar a replicao entre as duas instncias e entre dois Bancos de Dados da mesma instncia. KNOW-HOW EM: FUNDAMENTOS BSICOS SOBRE REPLICAO PR-REQUISITOS Fundamentos apresentados na Parte I. METODOLOGIA Apresentao sobre os conceitos bsicos de replicao. A replicao nos permite manter cpias de um conjunto de dados em diferentes localizaes. So muitas, conforme veremos a seguir, as aplicaes prticas para a replicao. Uma vez configurado o processo de replicao, o SQL Server 2005 mantm, automaticamente, sincronizadas as diversas cpias. Vamos imaginar a rede de uma grande empresa, com diversos escritrios espalhados pelo mundo. Em cada um destes escritrios temos uma rede local. As diversas redes locais so conectadas por linhas de comunicao de dados de diferentes velocidades. O que acabamos de descrever nada mais do que uma tpica WAN Wide Area Network. Na Figura 8.1 temos uma representao genrica da WAN da nossa empresa fictcia. Chamaremos esta empresa de ABC Ltda. Figura 8.1 A WAN da empresa ABC Ltda. Agora vamos analisar algumas situaes onde pode ser necessria a utilizao de replicao. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4500000Curso Completo Situao 1: Em cada um dos escritrios da empresa ABC Ltda. temos uma rede local. Em cada rede local temos um servidor SQL Server 2005 com diversos Bancos de Dados. Na Tabela 8.1, temos o nome dos servidores SQL Server 2005 de cada localidade. Os pedidos dos clientes de cada regio so digitados em um aplicativo de vendas, desenvolvido usando VB.NET, o qual armazena as informaes no Banco de Dados Vendas do servidor SQL Server 2005 da respectiva localidade. Durante a noite, uma cpia dos pedidos feitos durante o dia, em cada regio, deve ser enviada para o Banco de Dados do escritrio de So Paulo. Os dados devem ser consolidados em uma segunda instncia do SQL Server 2005 do servidor de So Paulo. Esta instncia denominada SQLSRVSP\CONSOLIDADO e a sua funo conter uma cpia completa dos pedidos realizados em todo o Brasil. Como podemos implementar a soluo solicitada? Na Figura 8.2, temos uma visualizao para o problema proposto. Localidade SERVIDOR\instncia So Paulo SQLSRVSP\PRODUO Rio de Janeiro SQLSRVRJ\PRODUO Porto Alegre SQLSRVPA\PRODUO Belo Horizonte SQLSRVBH\PRODUO Tabela 8.1 Servidores de cada localidade. Figura 8.2 Pedidos digitados em diferentes servidores SQL Server 2005. Para solucionar o problema proposto, a melhor soluo utilizarmos replicao. Podemos configurar os servidores SQL Server, de tal forma que os servidores que receberam os pedidos em So Paulo, Rio de proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000451 Janeiro, Belo Horizonte e Porto Alegre enviem os pedidos do dia para a base consolidada em um Banco de Dados da instncia SQLSRVSP\CONSOLIDADO. Desta maneira, todas as noites os servidores ficam enviando cpias (replicando) dos pedidos recebidos durante o dia, para o Banco de Dados consolidado. Aps feitas as replicaes, uma cpia de todos os pedidos estar disponvel no Banco de Dados consolidado. interessante observar mais uma vez que, aps configurada a replicao, esta continua funcionando automaticamente, ou seja, no precisamos configurar a replicao todos os dias. Poderamos fazer com que esta replicao ocorresse de hora em hora ou de vinte em vinte minutos. O que vai definir o intervalo de replicao so as necessidades da empresa e as velocidades dos links de comunicao disponveis. Na Figura 8.3, temos uma viso deste processo de replicao. Figura 8.3 Escritrios replicando dados para a base consolidada. Situao 2: Agora vamos mudar um pouco as nossas exigncias. Vamos supor que todos os escritrios tambm devam ficar com uma cpia completa de todos os pedidos. Como a replicao pode nos ajudar? Muito simples mais uma vez. Poderamos configurar a replicao de tal maneira que os escritrios enviassem os pedidos para a base consolidada. Aps a replicao ter sido completada com sucesso, poderamos iniciar um novo ciclo de replicao, onde a base consolidada passa a enviar dados para os escritrios regionais. Ao final deste segundo ciclo de replicao, todos os servidores SQL Server ficariam com uma cpia idntica do Banco de Dados de pedidos, cpia esta que contm todos os pedidos. Na Tabela 8.2, temos um exemplo de como poderamos configurar estes dois ciclos de replicao. Neste caso fizemos uma programao da replicao, de tal maneira que todos os Bancos de Dados fiquem com uma cpia completa dos pedidos. A partir das 22h, os escritrios comeam a replicar com a base consolidada em So Paulo, cada um enviando os pedidos do dia. Aps o ltimo escritrio ter replicado, a base consolidada est completa. A partir da zero hora (00:00), a base consolidada comea a replicar com os escritrios. Ao final deste segundo ciclo de replicao, os escritrios tambm tero uma base completa, com todos os pedidos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4520000Curso Completo Na Figura 8.4, temos uma visualizao deste processo de replicao, em que a sincronizao dos dados ocorre em dois sentidos. Hora Descrio 22:00 Porto Alegre envia os pedidos para a base consolidada. 22:30 Rio de Janeiro envia os pedidos para a base consolidada. 23:00 Belo Horizonte envia os pedidos para a base consolidada. 23:30 So Paulo envia os pedidos para a base consolidada. Envia de uma instncia para a outra, no mesmo servidor. 00:00 So Paulo envia a base completa para Porto Alegre. 00:30 So Paulo envia a base completa para Rio de Janeiro. 01:00 So Paulo envia a base completa para Belo Horizonte. Tabela 8.2 Agendamento das replicaes. Figura 8.4 Replicao nos dois sentidos. A replicao pode ser implementada de diferentes maneiras. Por exemplo, em cada replicao pode ser enviada uma cpia completa de todo o Banco de Dados. Outra maneira fazer com que sejam enviados apenas os registros que foram alterados ou inseridos. Neste captulo veremos os diferentes tipos de replicao que podem ser implementados com o SQL Server 2005 e as caractersticas de cada um. FATORES LIGADOS REPLICAO Quando formos planejar um esquema de replicao, como forma de manter sincronizadas duas ou mais cpias de um determinado conjunto de dados, devemos levar em considerao diversos fatores. A seguir descrevemos quais so estes fatores. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000453 N O T A Latncia: o tempo que demora para que dois conjuntos de dados estejam sincronizados. Com a replicao, no temos como garantir que as diversas rplicas estejam exatamente iguais o tempo todo. medida que alteraes vo sendo introduzidas em uma rplica, demora um certo tempo (latncia), at que estas alteraes sejam propagadas para as demais rplicas. Devemos levar em considerao qual o nvel de latncia aceitvel para cada caso: minutos, horas, dias, etc. Existe uma tcnica conhecida como Transaes Distribudas Distributed Transactions. Com esta tcnica, medida que uma transao aplicada em um Banco de Dados, a mesma transao , automaticamente, aplicada nas demais rplicas do Banco de Dados. Desta forma, como se a alterao estivesse sendo feita, ao mesmo tempo, em todos os Bancos de Dados. A grande vantagem desta tcnica que as diversas cpias esto perfeitamente sincronizadas, o tempo todo. O grande problema com Distributed Transactions quando um dos servidores, que contm uma das cpias, est fora do ar. Neste caso no temos como aplicar as transaes neste servidor. Com isso, quando o servidor voltar a estar disponvel, precisamos utilizar uma outra tcnica para sincroniz-lo com os demais, antes que ele volte a ser colocado online, em produo. Autonomia da rplica: Este fator tem a ver com a possibilidade de o servidor em que est uma rplica poder continuar em funcionamento, caso o servidor perca o contato com os demais servidores. A perda de contato pode ser ocasionada, por exemplo, devido a uma falha na linha de comunicao de dados. No caso de replicao, o servidor pode continuar funcionando sem problemas. Quando a comunicao for restabelecida, os dados passaro a ser sincronizados, de acordo com a programao da replicao. Imagine no caso da empresa ABC, que tem escritrios em So Paulo, Rio de Janeiro, Belo Horizonte e Porto Alegre. Um dos escritrios no pode parar de aceitar pedidos porque houve uma falha na linha de comunicao. O escritrio continua aceitando pedidos e, quando a linha de comunicao for restabelecida, os dados so replicados com a base consolidada. Conflitos de atualizao: No caso de diversas rplicas, em que os dados podem ser alterados em qualquer delas, podemos ter uma situao em que o mesmo registro foi alterado em duas rplicas diferentes. Ao replicar este registro, teremos um conflito de replicao. O SQL Server tem alguns mecanismos automticos para resoluo deste tipo de conflitos. Velocidade dos links de WAN: Este um fator de grande importncia. Replicao implica informao sendo enviada pela rede. Devemos fazer uma estimativa do volume de dados a ser replicados e comparar com a capacidade do link disponvel. Isto evita que, devido replicao, o link fique sobrecarregado, impedindo que outras aplicaes crticas, como por exemplo e- mail, tenham um desempenho satisfatrio. BENEFCIOS DA REPLICAO E ONDE UTILIZ-LA O benefcio mais bvio da replicao a possibilidade de mantermos, em diferentes servidores, cpias de um mesmo conjunto de dados. Com base nesta idia bsica, podemos dizer que a replicao deve ser considerada como soluo, nas seguintes situaes: Permitir que diferentes localidades tenham disposio uma cpia atualizada de um Banco de Dados. Por exemplo, podemos ter a matriz replicando um catlogo de produtos e uma lista de preos para suas diversas filiais. Neste caso a replicao uma maneira de manter todas as localidades proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4540000Curso Completo com dados atualizados, pois as alteraes feitas no Banco de Dados original da matriz (conhecido como Banco de Dados mestre) so replicadas automaticamente para as demais localidades. Manter em servidores separados, por questes de desempenho, duas cpias idnticas do mesmo Banco de Dados. Um exemplo tpico a separao do Banco de Dados para ambientes OLTP (On Line Transaction Processing) e OLAP (On Line Analytical Processing). Um ambiente OLTP um ambiente onde so feitas basicamente entradad de dados ou consultas simples, como por exemplo localizar o cadastro de um cliente para consulta ou atualizao. Um exemplo tpico deste ambiente uma central de atendimento ao contribuinte em uma unidade da Receita Federal ou do INSS. Neste caso, h uma srie de terminais dos atendentes. Estes terminais esto conectados a um Banco de Dados centralizado. As operaes realizadas normalmente limitam- se a digitar um novo registro ou buscar um j existente. As aplicaes de um ambiente OLAP, no entanto, realizam consultas bastante complexas, tipicamente consultas de referncia cruzada. Este tipo de ambiente utilizado, normalmente, por gerentes e tomadores de deciso, que necessitam de dados consolidados. Um bom exemplo um gerente que utiliza uma aplicao de Data Mining, procurando padres de crescimento de vendas de um determinado produto em perodos especficos do ano, em regies especficas. Neste caso, so elaboradas consultas bastante complexas que exigem bastante do Banco de Dados, em termos de recursos e de desempenho. Separar aplicaes destes dois ambientes em servidores SQL Server separados uma boa soluo para melhorar o desempenho. A utilizamos a replicao para manter as duas cpias sincronizadas. Nesta situao as alteraes so feitas pelos aplicativos do ambiente OLTP e so replicadas para o Banco de Dados que d suporte ao ambiente OLAP. Sempre que precisamos copiar e distribuir um conjunto de dados para diversas localidades. Permitir que alteraes sejam feitas em diversas rplicas do Banco de Dados e fazer com que estas modificaes sejam repassadas para as demais cpias. Sempre devemos considerar a possibilidade de conflitos de replicao. KNOW-HOW EM: O MODELO DE REPLICAO DO SQL SERVER 2005 PR-REQUISITOS Noes sobre replicao. Fundamentos apresentados na Parte I. METODOLOGIA Apresentao do modelo de replicao do SQL Server 2005 e dos tipos de replicao existentes. O SQL Server 2005 utiliza um modelo de replicao, muitas vezes chamado de metfora de replicao, baseado nos seguintes elementos: Publisher Distributor Subscribers Publicao Article proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000455 N O T A Este praticamente o mesmo modelo de replicao utilizado pelo SQL Server 2000. A replicao foi uma rea onde no houve grandes novidades no SQL Server 2005, em relao ao SQL Server 2000. Foram feitas pequenas melhorias, mas a estrutura bsica e conceitual da replicao permaneceu a mesma do SQL Server 2000. Com uma viso geral, podemos dizer que o publisher quem publica informaes a serem replicadas para um ou mais dubscribers. Sendo que as informaes no so enviadas diretamente do publisher para os subscribers, pois no meio do caminho havia um distributor, havia um distributor no meio do caminho. Drummond que me perdoe pelos direitos autorais. Bem, falando srio, vamos detalhar estes diversos elementos que fazem parte do modelo de replicao do SQL Server 2005. Para melhor explicarmos estes elementos, vamos nos basear na Figura 8.5. Figura 8.5 O modelo de replicao do SQL Server 2005. Um servidor SQL Server 2005 pode representar um ou mais dos papis indicados na Figura 8.5: Pub- lisher, distributor ou subscriber. Em toda replicao, temos a presena destes trs papis. Podemos ter diferentes servidores realizando cada um dos papis ou, em um caso extremo, um nico servidor configurado como publisher, distributor e subscriber. Esta ltima situao pode parecer absurda, mas a configurao que vou utilizar para os exemplos deste livro. No computador que estou utilizando neste livro, vou configurar uma instncia do SQL Server como publisher e distributor e a outra instncia como subscriber. Na empresa comum termos pelo menos as funes de publisher e subscriber em servidores diferentes. Vamos detalhar um pouco mais cada uma destas funes. PUBLISHER Um servidor atuando como publisher um servidor SQL Server 2005 que est disponibilizando dados para serem replicados para outros servidores. O publisher mantm a cpia original dos dados e envia o proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4560000Curso Completo N O T A conjunto de dados a ser replicado para um ou mais distributors. O publisher disponibiliza conjuntos definidos de dados atravs de publicaes. Podemos ter uma ou mais publicaes, cada uma representando um conjunto de dados. Alm de disponibilizar dados para a replicao, o publisher possui mecanismos para detectar quais dados sofreram alteraes e, portanto, definir quais dados devem ser includos no conjunto de dados a ser replicado. Por padro, esta funo no est habilitada em um servidor SQL Server 2005. Esta funo somente ser habilitada quando configurarmos este servidor para atuar como um publisher. Mais uma vez importante lembrar que, quando estamos falando de servidor SQL Server 2005, queremos fazer referncia a uma instncia do SQL Server 2005. Se existirem, por exemplo, duas instncias do SQL Server 2005 instaladas no mesmo computador, como se fossem dois servidores completamente independentes, sendo que um deles pode disponibilizar dados para replicao e o outro no. Ou pode ser que o conjunto de dados disponibilizado pelas diferentes instncias seja completamente distinto. DISTRIBUTOR O distributor recebe do publisher uma cpia dos dados que foram alterados e devem ser replicados e disponibiliza estes dados para um ou mais subscribers. A funo do distributor varia com o tipo de replicao que estamos implementando. No prximo item trataremos dos diferentes tipos de replicao do SQL Server 2005. Figura 8.6 Um distributor com vrios publishers. Podemos ter um distributor local, situao em que o distributor o mesmo servidor que publica os dados (publisher), isto , as duas funes esto configuradas na mesma instncia do mesmo servidor SQL Server 2005. Tambm podemos ter um distributor remoto, onde o servidor que desempenha a funo de distributor no o mesmo que desempenha a funo de publisher. Tambm podemos ter proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000457 N O T A situaes em que um nico distributor recebe dados de vrios publishers e envia estes dados para um ou mais subscribers, conforme indicado na Figura 8.6. SUBSCRIBER Um subscriber um servidor SQL Server que armazena uma rplica dos dados e recebe atualizaes peridicas dos dados. Os dados recebidos pelo subscriber podem ser alterados em determinadas configuraes. O subscriber pode inclusive publicar um outro conjunto de dados, situao na qual estar atuando como publisher para outros servidores. Analisaremos alguns exemplos mais adiante. Ao configurarmos um servidor como subscriber temos que informar em quais publicaes estamos nos inscrevendo. Um conceito fundamental que no devemos esquecer que todo o conjunto de dados a ser replicado somente pode ter um nico publisher, ou seja, no podemos ter o mesmo conjunto de dados, isto , a mesma publicao sendo publicada por dois ou mais publishers diferentes. Bem, voc j deve estar curioso para saber um pouco mais sobre publicaes. Ento, vamos l, agora hora de detalhar os conceitos de artigos (Article) e publicaes. ARTIGO Um artigo pode ser uma tabela de dados ou um objeto do Banco de Dados, como um stored procedure que configurado para replicao. Podemos ter um artigo que engloba uma tabela inteira, ou um artigo que engloba apenas algumas colunas o que chamamos de filtragem vertical. Tambm podemos ter artigos que englobam apenas algumas linhas, o que chamamos de filtragem horizontal. Podemos ter ainda artigos que englobam stored procedures ou views. No caso de um artigo que engloba uma view, podemos publicar dados de vrias tabelas. Vamos considerar o caso de um escritrio que mantm um Banco de Dados com informaes sobre produtos: CdigoDoProduto, DescrioDoProduto, CdigoDaCategoria, Preo, Fornecedor, CdigoEmbalagem, DataDeEntrada, UnidadesEmEstoque, etc. Podemos ter uma situao em que os escritrios regionais necessitem de apenas algumas informaes, como por exemplo: CdigoDoProduto, DescrioDoProduto, Preo e UnidadesEmEstoque. Neste caso podemos criar um artigo que inclua apenas as colunas necessrias. Em vez de replicar a tabela completa, replicamos apenas os campos utilizados pelos escritrios regionais. Neste caso estamos aplicando um filtro vertical, no qual apenas algumas colunas so replicadas. Tambm poderamos ter uma situao especial, onde determinado escritrio somente revendesse produtos de determinadas categorias. Neste caso, devemos aplicar um filtro horizontal, onde o nosso artigo somente incluir as linhas com os produtos que se encaixam nas categorias definidas pelo filtro. Tambm possvel aplicar uma combinao de filtros verticais e horizontais, onde apenas algumas colunas e alguns registros so includos no artigo. Com isso podemos concluir que atravs da criao de um artigo que definimos quais dados devem ser replicados. Isto evita que tenhamos que replicar uma tabela inteira quando apenas um subconjunto dos dados precisa ser replicado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4580000Curso Completo Tambm podemos incluir a definio de um stored procedure como parte de um artigo. Outra possibilidade incluir no artigo a execuo de um Stored Procedure, ao invs de incluir os dados alterados pela execuo do Stored Procedure. Com isso a mesma execuo acontece no Banco de Dados de destino, processando as alteraes neste Banco de Dados da mesma maneira que foram processadas no original. O resultado que os dois conjuntos de dados ficam iguais, porm com um trfego de rede bem menor, pois ao invs de replicar todos os dados que foram alterados, apenas so replicados os comandos que alteraram os dados, para que estes mesmos comandos sejam executados em outras rplicas, nos servidores de destinos (subscribers). Na Figura 8.7, temos um exemplo onde aplicamos um filtro vertical para criar um artigo que inclui apenas algumas colunas da tabela Orders. Incluimos as seguintes colunas: OrderID, CustomerID, OrderDate e ShipCountry. Figura 8.7 Um artigo com filtro vertical. Figura 8.8 Um artigo com filtro horizontal. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000459 N O T A Na Figura 8.8, temos um exemplo onde aplicamos um filtro horizontal, para criar um artigo que inclui apenas alguns registros da tabela Orders. Incluimos apenas os registros para o PasDeDestino = Brazil. Na Figura 8.9, temos um exemplo onde aplicamos um filtro vertical e um filtro horizontal para criar um artigo que inclui apenas alguns registros da tabela Orders. Incluimos apenas as colunas OrderID, CustomerID, OrderDate e ShipCountry, para os registros em que PasDeDestino = Brazil. Na parte prtica deste captulo aprenderemos a criar artigos e a aplicar os diferentes tipos de filtros. Figura 8.9 Um artigo com filtro horizontal e vertical. PUBLICAES Uma publicao um conjunto de um ou mais artigos de um Banco de Dados. A publicao a unidade de replicao. Em outras palavras, o subscriber se inscreve em uma publicao e no em um artigo. Mesmo que somente tenhamos que replicar dados de um nico artigo, devemos criar uma publicao que inclui este nico artigo. Normalmente uma publicao rene os diversos artigos que do suporte a uma determinada aplicao. Vamos supor que, nos escritrios regionais, uma aplicao de atendimento ao cliente necessite dados de diversas tabelas de um determinado Banco de Dados. A maneira mais prtica de distribuir estes dados criar uma srie de artigos, criar uma publicao que inclui os diversos artigos e replic-la para os escritrios regionais. Podemos criar uma ou mais Publicaes em um Banco de Dados, porm uma publicao no pode conter artigos de diferentes Bancos de Dados. Na Figura 8.10 temos uma viso geral da utilizao dos diversos elementos apresentados nesta seo; a representao dos diversos elementos que compem o modelo de replicao do SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4600000Curso Completo Figura 8.10 Publisher, distributors, subscribers, artigos e publicaes. Temos um publisher no qual foram criadas duas Publicaes. Cada publicao contm vrios artigos. Este publisher est enviando suas alteraes para dois distributors. Para cada um dos distributors, temos vrios subscribers, sendo que um dos subscribers est inscrito para receber dados dos dois dis- tributors. Vejam que na rede de uma grande empresa, com filiais em diversos pontos do pas ou at mesmo em diversos pases, podemos chegar a um modelo de replicao bastante sofisticado. Por isso fundamental entender os conceitos que foram apresentados na parte inicial deste captulo, para que possamos fazer um planejamento cuidadoso da replicao. Um pouco mais de pacincia e teoria e logo partiremos para implementar a replicao na prtica. KNOW-HOW EM: SUBSCRIES E TIPOS DE SUBSCRIES PR-REQUISITOS Noes sobre replicao. Conhecer o modelo de replicao do SQL Server 2005. Fundamentos apresentados na Parte I. Saber utilizar o SQL Server Management Studio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000461 METODOLOGIA Apresentao do conceito de subscrio e dos tipos de subscries existentes. Chamamos de subscrio o processo pelo qual um servidor se inscreve para receber cpia dos dados de uma ou mais publicaes. Ao se inscrever para receber cpias dos dados o servidor torna-se um subscriber. Podemos ter dois tipos de subscries: Pull subscription e Push subscription. O tipo de subscrio define como a subscrio criada e administrada e tambm de que maneira os dados sero replicados. PUSH SUBSCRIPTION Este tipo de subscrio feito durante a criao ou administrao de uma publicao. Neste tipo de subscrio, o distributor responsvel por enviar (push = empurrar) as alteraes para um ou mais subscribers. Note que push significa empurrar e no puxar. Uma analogia que pode ser utilizada que neste tipo de subscrio o distributor que empurra, envia as alteraes para um ou mais subscribers. Utilizamos Push subscriptions quando queremos ter um controle centralizado sobre o agendamento das replicaes. muito mais fcil configurar vrias subscries em um nico servidor, no caso o distributor, do que ter que configurar a subscrio em diversos servidores, no caso os diversos subscrib- ers. Neste caso, do distributor a iniciativa de enviar as alteraes para os subscribers ( o distributor que empurra as alteraes para os subscribers). Assim, o Agente de replicao, que o servio responsvel por fazer a replicao, roda no distributor ou no publisher, dependendo de como foi feita a configurao da replicao. Devemos ter em mente que este agente ir consumir recursos como memria e processador no distributor ou no publisher. Caso tenhamos um nmero considervel de subscribers, devemos considerar esta necessidade de recursos de memria e processamento. Lembre push no puxar; push empurrar, ou seja, o distributor o responsvel por enviar as alteraes para os subscribers conforme o agendamento configurado. PULL SUBSCRIPTIONS Este tipo de subscrio feito no subscriber, que tomar a iniciativa de solicitar o incio da replicao e envio dos dados do distributor para o subscriber. Pull significa puxar, ou seja, o subscriber puxa os dados atualizados que esto no distributor. Com este tipo de subscrio deixamos o controle e o agendamento da replicao a cargo de cada subscriber. A administrao fica mais distribuda, e ao mesmo tempos damos maior liberdade para cada subscriber. Por exemplo, localidades ligadas por links mais lentos podem programar a replicao em perodos mais espaados (maior latncia na atualizao dos dados). Este tipo de subscrio tambm indicada para usurios mveis. Por exemplo, um vendedor que, ao atender o cliente, conecta-se rede da empresa atravs da linha telefnica e dispara uma replicao (puxa) para atualizar uma tabela de preos que est no SQL Server 2005 instalado no seu notebook. Para Pull subscriptions o agente de replicao roda no subscriber, consumindo memria e processador deste equipamento. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4620000Curso Completo N O T A KNOW-HOW EM: TIPOS DE REPLICAO PR-REQUISITOS Noes sobre replicao. Conhecer o modelo de replicao do SQL Server 2005. Fundamentos apresentados na Parte I. METODOLOGIA Apresentao dos tipos de replicao existentes no SQL Server 2005. Temos trs tipos de replicao no SQL Server 2005: Snapshot replication, Transactional replication e Merge replication. Neste item veremos as caractersticas de cada um dos tipos de replicao, bem como suas diferenas. Ao criarmos uma publicao, tambm definimos o tipo de replicao que ser utilizado para esta publicao. Em um mesmo Banco de Dados, podemos ter diferentes Publicaes com diferentes tipos de replicao. Vamos analisar as diferentes caractersticas de cada um dos tipos de replicao. SNAPSHOT REPLICATION Com este tipo de replicao, todo o conjunto de dados replicado a cada intervalo programado. Mesmo dados que no foram alterados sero tambm replicados. Um ou mais subscribers so atualizados com uma cpia exata dos dados publicados pelo publisher. So enviados, para os subscribers, todos os dados, quer tenham sido modificados ou no. o tipo mais simples de replicao, pois os servidores envolvidos na replicao no precisam monitorar os dados para verificar quais alteraes foram feitas, uma vez que todos os dados so replicados. A principal desvantagem deste tipo de replicao que ela transmite uma grande quantidade de informaes a cada ciclo de replicao. Em links de WAN, dependendo do volume de dados a ser replicado, pode ser invivel a utilizao de snapshot replication. Algumas caractersticas da snapshot replication: No indicada para grandes volumes de dados. Exige pouco do processador, uma vez que no existe a necessidade de um monitoramento constante para verificao das alteraes efetuadas no conjunto de dados a ser replicado. Possui uma latncia elevada, sendo a latncia igual ao intervalo de replicao. Por exemplo, se uma snapshot replication est programada para ocorrer uma vez ao dia, a latncia ser de at 24 horas. Quando falamos do monitoramento das alteraes, o envio dos dados a serem replicados para o distributor e outras tarefas ligadas replicao, estamos nos referindo a uma srie de agentes de replicao. Os agentes de replicao so programas que rodam como servios e executam uma srie de tarefas que viabilizam a replicao dos dados entre diferentes servidores. Temos, por exemplo, um snapshot agent, um distributor agent e assim por diante. Falarei mais sobre agentes ao longo deste captulo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000463 N O T A N O T A TRANSACTIONAL REPLICATION Neste tipo de replicao somente as alteraes efetuadas no publisher que so replicadas para um ou mais subscribers. Qualquer alterao feita, em um ou mais artigos de uma publicao, imediatamente capturada a partir do log de transaes e replicada para o distributor. Dependendo das configuraes e da velocidade de conexo entre os servidores, podemos manter as diversas rplicas sincronizadas quase que instantaneamente. A principal vantagem que podemos manter as diversas rplicas praticamente idnticas, diminuindo bastante a latncia (questo de segundos) de atualizao entre as diversas rplicas. A grande desvantagem que este monitoramento contnuo em busca das alteraes implica uma maior exigncia de memria e processamento no servidor SQL Server. Um detalhe importante a ser observado a autonomia das rplicas. Para manter-se atualizada, a rplica precisa estar em contato com os demais servidores que participam da replicao, mais especificamente, com o subscriber e o distributor. Este fator pode ser um problema para o caso de servidores em localidades remotas, ligados rede da empresa por links de WAN de baixa velocidade (links de 128 KB ainda so bastante comuns em cidades do interior). Apenas transaes concludas (committed transactions) sero replicadas para os subscribers, e sero aplicadas nas rplicas, na mesma ordem em que foram aplicadas no Banco de Dados original. Este o tipo de replicao que mantm os dados o mais atualizados possvel, com o menor nvel de latncia em relao aos demais tipos de replicao do SQL Server 2005. Tanto a Snapshot replication quanto Transactional replication somente permitem que alteraes sejam feitas no publisher, isto , os dados no podem ser alterados no subscriber. Existe, porm, um mecanismo que combina dois itens: a opo Immediate Update Subscribers Option e Two-phase commit protocol. Com estas duas opes, os dados podem ser alterados nos subscribers e as alteraes sero aplicadas no publisher ao mesmo tempo, atravs da utilizao do protocolo Two-phase commit protocol. A seguir descrevo as situaes, onde indicado o uso da replicao do tipo Transactional Replication: Para fazer com que as alteraes sejam repassadas para os subscribers, com a menor latncia possvel. Os dados replicados sero utilizados por aplicaes que precisam de um tempo de latncia muito baixo, o menor possvel. Em situaes onde existe um grande nmero de operaes de insero, atualizao e excluso no publisher. Quando o publisher ou o subscriber no for um Banco de Dados do SQL Server, tais como o ORACLE ou o DB2 da IBM. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4640000Curso Completo MERGE REPLICATION A principal caracterstica deste tipo de replicao que alteraes podem ser feitas em qualquer uma das rplicas dos dados. As alteraes feitas em uma das rplicas sero repassadas para as demais rplicas. O SQL Server 2005 utiliza um mecanismo prprio para resoluo de conflitos de replicao. Ao iniciarmos o processo de replicao, temos uma snapshot replication na primeira vez que os dados so enviados para um ou mais subscribers. Na seqncia, o mecanismo de replicao fica monitorando as alteraes efetuadas nas diversas rplicas e fica repassando as alteraes para as demais rplicas. No temos a garantia de que todas as rplicas estaro perfeitamente sincronizadas instantaneamente. Porm temos a certeza de que as diversas rplicas iro convergir com o passar do tempo. O SQL Server 2005 adiciona, automaticamente, um coluna com dados do tipo Identificador nico s tabelas que fazem parte da replicao. Os valores desta coluna so criados e mantidos pelo mecanismo de replicao do SQL Server. KNOW-HOW EM: OS AGENTES DE REPLICAO NO SQL SERVER 2005 PR-REQUISITOS Noes sobre replicao. Conhecer o modelo de replicao do SQL Server 2005. Conhecer os tipos de replicao existentes no SQL Server 2005. Fundamentos apresentados na Parte I. METODOLOGIA Apresentao dos agentes de replicao existentes no SQL Server 2005. O suporte replicao no SQL Server 2005 feito por um conjunto de agentes, os chamados SQL Server Replication Agents. Estes agentes so os responsveis por fazer com que os dados sejam passados do publisher para um ou mais distributors e destes para um ou mais subscribers. Um agente nada mais do que um servio rodando no Windows. A seguir, vamos ver um pouco sobre os agentes existentes no SQL Server 2005. Snapshot agent: Este agente responsvel por criar e distribuir o conjunto de dados a ser replicado do publisher para o distributor. Alm da definio do conjunto de dados a ser replicado, o snap- shot agent tambm inclui informaes sobre o conjunto de dados (metadados), as quais so utilizadas pelo distributor para transferir dados para um ou mais subscribers. Este agente tambm mantm informaes sobre o andamento da sincronizao entre as diversas rplicas. Na Figura 8.11, temos uma figura retirada do Books OnLine, onde vemos a utilizao do snapshot agent. Os passos a seguir descrevem o funcionamento deste agente. 1. O snapshot agent executado no distributor. Em perodos determinados este agente conecta com o subscriber e bloqueia os dados das tabelas a serem replicadas, de tal forma que estes dados no podem ser alterados enquanto o agente estiver copiando os dados do publisher para o subscriber. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000465 N O T A Figura 8.11 Snapshot agent em ao. 2. Aps transferir os dados para o distributor, o snapshot agent retira o lock das tabelas no sub- scriber, liberando-as para novas alteraes. Devido ao lock que imposto nas tabelas do sub- scribers, pode ser necessrio que o agente seja configurado para executar fora do horrio de expediente normal. Os dados, que esto no distributor para serem replicados para um ou mais subscribers, so referenciados como os dados do Banco de Dados do distributor, ou o termo mais comum em ingls: The distributor database. Distribution agent: Este agente responsvel por enviar os dados a serem replicados, tanto no caso de Snapshot replication quanto no caso de Transaction replication, da base do distributor para um ou mais subscribers. Cada publicao possui o seu prprio distributor agent. Para Push subscriptions, o distributor agent roda no distributor; para Pull subscriptions, o distribu- tor agent roda no subscriber. Log Reader agent: utilizado em replicaes do tipo Transactional replication. O trabalho deste agente capturar as alteraes no log de transaes no publisher, e passar estas transaes para o distributor. Lembrando que apenas Committed transactions que so replicadas. Cada Banco de Dados, que utiliza Transactional replication, tem o seu prprio Log Reader agent no publisher. Merge agent: responsvel por sincronizar as alteraes entre as diversas rplicas; sincroniza dados nos dois sentidos, entre o publisher e os subscribers, passando evidentemente pelo distribu- tor. Para Push subscriptions, o Merge agent roda no distributor; para Pull subscriptions, o Merge agent roda no subscriber. Este agente no utilizado em Snapshot e Transactional replications. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4660000Curso Completo N O T A Agora que j conhecemos a teoria bsica sobre replicao no SQL Server 2005, estamos preparados para comear a implementar a replicao na prtica. KNOW-HOW EM: CONFIGURANDO A REPLICAO NO SQL SERVER 2005 PR-REQUISITOS Conceitos tericos sobre replicao apresentados nos itens iniciais deste captulo. Conhecer o modelo de replicao do SQL Server 2005. Fundamentos apresentados na Parte I. Saber utilizar o SQL Server Management Studio. METODOLOGIA Apresentao dos comandos e assistentes para implementao da replicao. TCNICA Implementar a replicao no SQL Server 2005. Vamos configurar a replicao entre as duas instncias instaladas no nosso servidor. Apenas para lembrar, o nome do servidor que estou utilizando SERVIDOR e tenho as seguintes instncias instaladas no mesmo: SERVIDOR\SQL2005 SERVIDOR\CURSOSJB Iremos configurar a instncia SERVIDOR\SQL2005 como publisher e distributor. Depois, vamos configurar a instncia SERVIDOR\CURSOSJB como subscriber. Lembrando que, na prtica, como se cada instncia fosse um servidor SQL Server completamente separado. Se voc no tiver duas instncias do servidor SQL Server instaladas, no tem problema, pois possvel configurar uma mesma instncia como sendo publisher, distributor e subscriber. Esta uma situao pouco usual, sendo somente indicada para sala de aula, treinamentos ou para um projeto-piloto onde queremos testar a replicao no SQL Server 2005. Na configurao de um servidor SQL Server para replicao, o primeiro passo a criao do publisher e do distributor. Estes dois passos so executados com a utilizao dos assistentes de replicao do SQL Server 2005. Vamos, finalmente, prtica. Uma diferena importante do SQL Server 2005 em relao ao SQL Server 2000 que no SQL Server 2005 o mesmo assistente que configura a instncia como publisher tambm oferece opes para criar um ou mais artigos. Na verdade no tem um assistente especfico s para configurar a instncia como publisher. O assistente para criar uma publicao, j definindo os artigos que faro parte da publicao (faremos um exemplo, logo a seguir, onde criaremos uma publicao e adicionaremos trs artigos). Ao criar uma publicao, voc j configura a instncia como um publisher. A seguir um exemplo prtico, passo a passo. Exemplo prtico: Configurar a instncia SERVIDOR\SQL2005 como publisher e distributor: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000467 Para configurar a instncia SERVIDOR\SQL2005 como publisher e distributor, siga os seguintes passos: 1. Abra o SQL Server Management Studio (Iniciar -> Programas -> Microsoft SQL Server 2005 -> SQL Server Management Studio). 2. Na janela Object Explorer, d um clique no sinal de + ao lado da instncia SERVIDOR\SQL2005 para expandir esta opo. 3. Nas opes que so exibidas, d um clique no sinal de + ao lado da opo Replication, para exibir as opes disponveis. Sero exibidas as opes Publications e Subscriptions at This Server. 4. Para criar uma nova publicao clique com o boto direito do mouse na opo Publications e, no menu de opes que exibido, clique em New Publication para iniciar o assistente de publicao. 5. Surgir a tela inicial do assistente, na qual so informadas as aes que o assistente ir ajud-lo a executar. 6. A primeira tela apenas informativa. D um clique no boto Next, seguindo para a prxima etapa do assistente. Na segunda etapa devemos selecionar qual servidor\instncia atuar como distributor. Podemos utilizar a instncia SERVIDOR\SQL2005 como publisher e tambm distributor, ou podemos selecionar um outro servidor\instncia para atuar como distributor. Para que possamos selecionar um outro servidor\instncia como distributor, este j deve ter sido previamente configurado como um distributor e tambm deve estar registrado no SQL Server Manage- ment Studio. Figura 8.12 Definindo um novo distributor. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4680000Curso Completo 7. No nosso exemplo, vamos utilizar a instncia SERVIDOR\SQL2005 como publisher e tambm distributor. Para isso, deixe a primeira opo selecionada, conforme indicado na Figura 8.12. Ao criarmos um novo distributor, ao invs de utilizar um j existente, o assistente ir efetuar as configuraes necessrias (Distribution database e log), para preparar o servidor selecionado como distributor. 8. D um clique no boto Next, para seguir para a prxima etapa do assistente. 9. Nesta etapa ser definida a pasta onde sero armazenadas cpias dos dados (Snapshots) recebidas do publisher. Por padro, sugerida a seguinte localizao: C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\ReplData Aqui temos uma questo importante a considerar. Se voc usar um caminho do tipo C:\, D:\, etc., no sero suportadas subscries do tipo Pull Subscriptions, que so Subscries onde a iniciativa de transferncia dos dados feita pelo subscriber (Pull = Puxar, o subscriber quem puxa as alteraes a partir do distributor). Usando uma caminho local, do tipo C:\ , D:\ , etc, somente sero suportadas Subscries do tipo Push Subscriptions, que so subscries onde a iniciativa de transferncia dos dados feita pelo distributor (Push = Empurrar, ou seja, o distributor que empurra os dados para o subscriber). Para que sejam aceitas subscries tanto do tipo Pull Subsciptions quanto Push Subscrip- tions, deve ser utilizado um caminho de rede, como no exemplo a seguir: \\servidor\C$\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\ReplData Figura 8.13 Aviso quando utilizamos um compartilhamento administrativo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000469 N O T A Observe que utilizamos o caminho de rede e no um drive do tipo C:\. No exemplo, temos o SQL Server instalado no drive C:, o qual acessado atravs do compartilhamento administrativo C$. Por padro, o Windows compartilha a raiz de todos os drives com um nome de compartilhamento Drive$ C$, D$, E$, etc. Este compartilhamento somente pode ser acessado por usurios com permisso de administrador. Se mantivermos o caminho padro, o qual utiliza o compartilhamento administrativo, pode ser que agentes rodando em outros servidores no possam acessar este compartilhamento e a replicao venha a falhar. Neste caso, voc deve criar manualmente um novo compartilhamento, atribuir as permisses NTFS necessrias e informar o caminho nesta etapa. Na Figura 8.13 temos a tela de aviso que surge quando utilizamos um compartilhamento administrativo do tipo C$. Para maiores informaes sobre permisses NTFS e permisses de compartilhamento no Windows 2000, consulte o livro Manual de Estudos Para o Exame 70-217, 752 pginas, de minha autoria, publicado pela Axcel Books (www.axcel.com.br). Para maiores informaes sobre segurana no SQL Server 2005 consulte o Captulo 6 do presente livro. Para maiores informaes sobre permisses NTFS e permisses de compartilhamento no Windows Server 2003, consulte o livro Windows Server 2003 Curso Completo, 1568 pginas, de minha autoria, publicado pela editora Axcel Books (www.axcel.com.br). O restante do caminho a pasta onde o SQL Server 2005 instalado por padro: Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\ReplData. Observe que temos a pasta MSSQL.1. Cada instncia do SQL Server 2005 instalada em uma pasta separada. No vamos alterar o caminho sugerido. 10. Altere o caminho para usar um caminho de servidor. \\servidor\C$\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\ReplData 11. D um clique no boto Next, seguindo para a prxima etapa do assistente. 12. Nesta etapa voc deve selecionar o Banco de Dados no qual esto as informaes que sero publicadas. Para o nosso exemplo, vamos selecionar o Banco de Dados AdventureWorks. Selecione o Banco de Dados AdventureWorks e clique em Avanar, para seguir para a prxima etapa do assistente. 13. Nesta etapa voc deve selecionar o tipo de publicao que ser utilizado. Para o nosso exemplo, vamos selecionar Snapshot Publication, conforme indicado na Figura 8.14. 14. D um clique no boto Next, seguindo para a prxima etapa do assistente. 15. Agora voc deve selecionar uma conta de logon que ser utilizada pelo agente de replicao. fundamental que a conta tenha as devidas permisses na pasta de replicao e de acesso aos dados que esto sendo replicados. Se a conta selecionada no tiver as permisses necessrias, o processo de replicao ir falhar. Para selecionar uma conta clique no boto Security Settings. Ser exibida a janela Snapshot Agent Security. Nesta janela voc informa a conta e respectiva senha a ser utilizada pelo Snapshot Agent. Dependendo do modo de autenticao que est configurado para a instncia do SQL Server 2005, voc poder usar somente contas do Windows ou tanto contas do Windows quanto do SQL Server 2005. Para usar uma conta do SQL Server 2005, voc deve marcar a opo Use the following SQL Server login. No nosso exemplo vamos usar uma conta de logon do Win- dows, conforme exemplo indicado na Figura 8.15. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4700000Curso Completo Figura 8.14 Selecionando o tipo Snapshot Replication. Figura 8.15 Informando a conta de logon para o Snapshot Agent. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000471 16. Informe os dados da conta a ser utilizada e clique em OK, para fechar a janela Snapshot Agent Security. 17. Voc estar de volta ao Assistente de publicao. D um clique no boto Next, seguindo para a prxima etapa do assistente. 18. nesta etapa que voc ir definir quais dados sero publicados, ou seja, nesta etapa que voc ir criar um ou mais artigos, os quais faro parte da publicao e sero replicados. No incio deste captulo, voc viu que um artigo pode ser uma tabela inteira, pode ser uma view, um stored procedure (o que ser publicado o resultado da execuo do stored procedure), pode ser apenas algumas linhas de uma tabela (filtro horizontal), pode ser apenas algumas colunas de uma tabela (filtro vertical) e pode ser somente algumas linhas com algumas colunas (filtros horizontal e vertical). Para o nosso exemplo, iremos criar os artigos indicados a seguir: Art_Produtos: Este artigo conter todos os registros da tabela Product. Art_Employee: Este artigo conter apenas algumas das colunas da tabela Employee, ou seja, aplicaremos um filtro Vertical. Este artigo ir replicar somente os seguintes campos da tabela Employee: EmployeeID, NationalIDNumber, DepartmentID, ManagerID e EmergencyContactID. Art_Redmond: Este artigo ser baseado na tabela Person.Address e ir replicar somente os registros onde o campo City=Redmond. Ou seja, vamos aplicar um filtro horizontal, para replicar somente as linhas que atendam a um determinado conjunto de critrios, no nosso exemplo: City=Redmond. Vamos ento tarefa de criar os trs artigos propostos. Para isso vamos usar a tela do assistente, indicada na Figura 8.16: Figura 8.16 Tela para criao dos artigos que faro parte da publicao. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4720000Curso Completo 19. Vamos iniciar pelo artigo Art_Produtos, o qual o mais simples de ser criado. Clique no sinal de + ao lado da opo Tables, para exibir a lista de tabelas do Banco de Dados AdventureWorks. Clique na caixa de seleo ao lado da tabela Product, para selecion-la. Ao selecionar uma tabela, automaticamente, todos os seus campos so selecionados. Isso pode ser comprovado, clicando no sinal de + ao lado da tabela Product. Observe que todos os seus campos foram selecionados. Clique no sinal de ao lado da tabela Product, para ocultar a lista de campos. Pronto, est criado o artigo Art_Produtos. Como no temos nenhum filtro nem horizontal e nem vertical a ser aplicado, est OK o artigo Art_Produtos, o qual ir publicar a tabela Product completa, ou seja, todos os seus campos e todos os seus registros. Vamos para a criao do prximo artigo. 20. Vamos iniciar pelo artigo Art_Employee. Este artigo ir publicar apenas algumas das colunas da tabela Employee, ou seja, vamos aplicar um filtro vertical. Voc deve estar com a opo Tables expandida, com a lista de tabelas sendo exibida. Se no estiver sendo exibida a lista de tabelas, clique no sinal de + ao lado da opo Tables. Clique na caixa de seleo ao lado da tabela Employee, para selecion-la. Ao selecionar uma tabela, automaticamente, todos os seus cam- pos so selecionados. Isso pode ser comprovado, clicando no sinal de + ao lado da tabela Employee. Observe que todos os seus campos foram selecionados. Para o nosso exemplo, somente os seguintes campos devem ficar marcados: EmployeeID, NationalIDNumber, DepartmentID, ManagerID e EmergencyContactID. Certifique-se de que somente estes cam- pos da tabela Employee estejam marcados e desmarque os demais campos. Sua janela deve estar semelhante indicada na Figura 8.17: Figura 8.17 Aplicando um filtro vertical tabela Employee. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000473 21. Agora vamos criar o nosso ltimo artigo: Art_Redmond: Este artigo ser baseado na tabela Person.Address e ir replicar somente os registros onde o campo City=Redmond. Ou seja, vamos aplicar um filtro horizontal, para replicar somente as linhas que atendam a um determinado conjunto de critrios, no nosso exemplo: City=Redmond. Clique na caixa de seleo ao lado da tabela Address, para selecion-la. Ao selecionar uma tabela, automaticamente, todos os seus campos so selecionados. Isso pode ser comprovado, clicando no sinal de + ao lado da tabela Address. Observe que todos os seus campos foram selecionados. Clique no sinal de ao lado da tabela Address, para ocultar a lista de campos. Nesta etapa no temos mais o que fazer. O critrio City=Redmond ser aplicado em uma das prximas etapas do assistente. 22. D um clique no boto Next, seguindo para a prxima etapa do assistente. 23. Eu fui, propositalmente, para a prxima etapa, para que surgisse a mensagem indicada na Figura 8.18: Figura 8.18 Mensagem informando sobre a replicao dos schemas. Esta mensagem informa que um ou mais dos objetos que esto sendo publicados tm como donos schemas que no o schema padro dbo. A messagem continua informando que estes schemas j devero existir nos subscribers, caso contrrio a replicao no ir funcionar. No nosso exemplo prtico criamos trs artigos. O artigo Art_Produtos publica dados da tabela Production.Product, ou seja, da tabela Prod- uct, cujo dono o schema Production. Para garantir que a replicao ir funcionar, sem problemas, o schema dever existir em qualquer subscriber que seja configurado para receber a replicao ou voc proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4740000Curso Completo deve alterar o dono, durante a replicao, para ser o schema dbo, o qual j existe, automaticamente, em toda instncia do SQL Server 2005 (veremos como fazer isso logo em seguida). O artigo Art_Employee, o qual publica dados da tabela Humanresources.Employee, ou seja, da tabela Employee, cujo dono o schema HumanResources. Para garantir que a replicao ir funcionar, sem problemas, este Schema dever existir em qualquer subscriber que seja configurado para receber a replicao ou voc deve alterar o dono, durante a replicao, para ser o Schema dbo, o qual j existe, automaticamente, em toda instncia do SQL Server 2005 (veremos como fazer isso logo em seguida). E, finalmente, o artigo Art_Redmond, o qual publica dados da tabela Person.Address, ou seja, da tabela Address, cujo dono o schema Person. As mesmas consideraes anteriores so vlidas em relao ao schema Person. Muito bem, agora vou mostrar como configurar o schema dbo para ser o dono, no destino, de todos os objetos replicados. Ou seja, no destino, o dono ser o schema dbo, o qual j existe, automaticamente, em toda instncia do SQL Server 2005. 24. D um clique no boto Back, para voltar para a etapa anterior do assistente. isso mesmo, vamos voltar etapa anterior do assistente. Figura 8.19 Definindo o schema dbo como dono no destino nos subscribers. 25. Clique na opo Tables para selecion-la. Clique no boto Article Properties. Dentre as opes que so exibidas clique em Set Properties of all Tables Articles. Ou seja, vamos fazer alteraes que se aplicam a todos os artigos de tabelas, que fazem parte da publicao. Ser aberta a janela proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000475 Properties for all Tables Articles. Clique no campo Destination Object Owner, apague o valor atual e digite o novo valor: dbo, conforme indicado na Figura 8.19. Ou seja, estamos definindo o schema dbo como sendo o dono de todos os objetos replicados, no destino, ou seja, nos subscribers. Como o schema dbo existe, automaticamente, em toda instncia do SQL Server 2005, com isso garantimos que a replicao ir funcionar, sem problemas, independentemente de os schemas que so os donos no publisher existirem ou no nos subscribers. 26. Clique em OK para fechar a janela de propriedades dos artigos. Voc estar de volta ao assistente de publicao. 27. D um clique no boto Next, seguindo para a prxima etapa do assistente. Observe que agora o aviso da Figura 8.18 no mais exibido e o assistente j vai diretamente para a etapa onde voc pode definir filtros horizontais (critrios de filtragem), para os artigos que esto sendo publicados. 28. Agora temos que criar um filtro para o artigo Art_Redmond, no qual colocaremos o seguinte critrio: City=Redmond. D um clique no boto Add. Ser aberta a janela Add Filter. Na lista Select the table to filter, selecione a tabela Address (Person). Observe que no campo Filter state- ment aparece o comando T-SQL adaptado para a publicao: SELECT <published_columns> FROM [Person].[Address] WHERE. Observe a clusula WHER j includa, pronta para receber um ou mais critrios. Na lista Columns clique no campo City, para marc-lo. Clique no boto >, para incluir o campo City no comando T-SQL. Neste momento, o comando T-SQL deve estar assim: SELECT <published_columns> FROM [Person].[Address] WHERE [City]. Agora s falta definirmos o valor do critrio para o campo City. Isso feito digitando diretamente no comando T-SQL. O comando completo deve ficar assim: SELECT <published_columns> FROM [Person].[Address] WHERE [City] = Redmond. A sua janela deve estar conforme indicado na Figura 8.20. Figura 8.20 Definindo um filtro horizontal para um dos artigos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4760000Curso Completo 29. Clique em OK para fechar a janela Add Filter. Voc estar de volta ao assistente de publicao. Observe que a tabela Address j aparece na lista Filtered Tables, conforme indicado na Figura 8.21: Figura 8.21 Lista de tabelas com filtros definidos. 30. D um clique no boto Next, seguindo para a prxima etapa do assistente. 31. Nesta etapa voc define se deve ser criado um snapshot imediatamente (uma cpia integral dos dados que sero replicados). Feita a publicao dos dados, estes estaro disponveis para um ou mais subscribers. Quando um servidor se inscreve para receber os dados, ele recebe, inicialmente, um snapshot, ou seja, uma cpia completa dos dados. Depois, o subscriber passa a receber somente as alteraes efetuadas no publisher. Lembrando que a replicao Snapshot unidirecional, ou seja, no podero ser feitas alteraes nos dados, nos subscribers, somente no publisher. Voc tambm pode criar um agendamento para fazer com que um snapshot seja recriado, de acordo com um agendamento determinado, como por exemplo todos os dias, s 2:00 da madrugada. Para criar um agendamento, marque a opo Schedule the Snapshot Agent to run at the following times e clique no boto Change, para definir um ou mais agendamentos. No nosso exemplo no vamos definir agendamentos. Certifique-se de que somente a opo Create a snapshot immediately esteja marcada e clique em Next, seguindo para a prxima etapa do assistente. 32. Nesta etapa voc pode marcar a opo Create the publication immediately, para que a publicao seja criada imediatamente e tambm pode marcar a opo Generate a script, caso voc queira proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000477 Figura 8.22 Criar a publicao e gerar um arquivo com os comandos T-SQL. 33. D um clique no boto Next, seguindo para a prxima etapa do assistente. 34. Nesta etapa (que s exibida se voc marcar a opo para gerar o script, na etapa anterior), voc definie onde ser gravado o script, o nome do arquivo e as propriedades do arquivo. Selecione as opes indicadas na Figura 8.23. 35. D um clique no boto Next, seguindo para a prxima etapa do assistente. 36. Ser exibida a tela final do assistente, onde apresentado um resumo de todas as opes selecionadas. Caso voc tenha que alterar alguma opo, s utilizar o boto Back. Nesta etapa voc deve digitar um nome para publicao. Digite Minha Publicao, no campo Publication Name e clique em Finish para encerrar o assistente e criar a publicao. que seja criado um arquivo, contendo todos os comandos, necessrios para gerar a publicao, de acordo com as opes que voc selecionou no assistente. Este script pode ser til, por exemplo, para rapidamente recriar a publicao, em caso de problemas. Voc pode gravar estes comandos em um arquivo e, quando for necessrio recriar a publicao, s copiar estes comandos e execut-los na janela de execuo de comandos T-SQL. Marque as duas opes desta etapa, conforme indicado na Figura 8.22: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4780000Curso Completo Figura 8.23 Configuraes do arquivo com os comandos. 37. O SQL Server 2005 comear a criar a publicao e exibir uma janela, indicando o progresso do trabalho, conforme exemplo da Figura 8.24: Figura 8.24 Progresso da criao da publicao. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000479 38. Concludas as diversas etapas de criao da publicao, clique em Close para fechar a janela New Publication Wizard. Muito bem, a publicao foi criada, com os trs artigos que criamos neste exemplo. A seguir veremos como conferir se a publicao foi realmente criada e como podemos fazer configuraes em uma publicao j existente. Antes, apenas a ttulo de curiosidade, coloco a seguir o script gerado pelo assistente (lembre que, em uma das etapas finais, marcamos a opo para gerar um arquivo com todos os comandos T-SQL, necessrios para criao da publicao): ********************************************************************************************************* - Enabling the replication database use master exec sp_replicationdboption @dbname = NAdventureWorks, @optname = Npublish, @value = Ntrue GO Adding the snapshot publication use [AdventureWorks] exec sp_addpublication @publication = NMinha Publicao, @description = NSnapshot publication of database AdventureWorks from Publisher SERVIDOR\SQL2005'., @sync_method = Nnative, @retention = 0, @allow_push = Ntrue, @allow_pull = Ntrue, @allow_anonymous = Ntrue, @enabled_for_internet = Nfalse, @snapshot_in_defaultfolder = Ntrue, @compress_snapshot = Nfalse, @ftp_port = 21, @ftp_login = Nanonymous, @allow_subscription_copy = Nfalse, @add_to_active_directory = Nfalse, @repl_freq = Nsnapshot, @status = Nactive, @independent_agent = Ntrue, @immediate_sync = Ntrue, @allow_sync_tran = Nfalse, @autogen_sync_procs = Nfalse, @allow_queued_tran = Nfalse, @allow_dts = Nfalse, @replicate_ddl = 1 exec sp_addpublication_snapshot @publication = NMinha Publicao, @frequency_type = 1, @frequency_interval = 0, @frequency_relative_interval = 0, @frequency_recurrence_factor = 0, @frequency_subday = 0, @frequency_subday_interval = 0, @active_start_time_of_day = 0, @active_end_time_of_day = 235959, @active_start_date = 0, @active_end_date = 0, @job_login = NSERVIDOR\Administrador, @job_password = null, @publisher_security_mode = 1 GO use [AdventureWorks] exec sp_addarticle @publication = NMinha Publicao, @article = NAddress, @source_owner = NPerson, @source_object = NAddress, @type = Nlogbased, @description = null, @creation_script = null, @pre_creation_cmd = Ndrop, @schema_option = 0x00000000000044F1, @identityrangemanagementoption = Nmanual, @destination_table = NAddress, @destination_owner = Ndbo, @status = 0, @vertical_partition = Nfalse, @filter_clause = N[City] = Redmond Adding the article filter exec sp_articlefilter @publication = NMinha Publicao, @article = NAddress, @filter_name = NFLTR_Address_1__58', @filter_clause = N[City] = Redmond, @force_invalidate_snapshot = 1, @force_reinit_subscription = 1 Adding the article synchronization object exec sp_articleview @publication = NMinha Publicao, @article = NAddress, @view_name = NSYNC_Address_1__58', @filter_clause = N[City] = Redmond, @force_invalidate_snapshot = 1, @force_reinit_subscription = 1 GO use [AdventureWorks] exec sp_addarticle @publication = NMinha Publicao, @article = NEmployee, @source_owner = NHumanResources, @source_object = NEmployee, @type = Nlogbased, @description = null, @creation_script = null, @pre_creation_cmd = Ndrop, @schema_option = 0x00000000000044F1, @identityrangemanagementoption = Nmanual, @destination_table = NEmployee, @destination_owner = Ndbo, @status = 0, @vertical_partition = Ntrue Adding the articles partition column(s) exec sp_articlecolumn @publication = NMinha Publicao, @article = NEmployee, @column = NEmployeeID, @operation = Nadd, @force_invalidate_snapshot = 1, @force_reinit_subscription = 1 exec sp_articlecolumn @publication = NMinha Publicao, @article = NEmployee, @column = NNationalIDNumber, @operation = Nadd, @force_invalidate_snapshot = 1, @force_reinit_subscription = 1 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4800000Curso Completo exec sp_articlecolumn @publication = NMinha Publicao, @article = NEmployee, @column = NDepartmentID, @operation = Nadd, @force_invalidate_snapshot = 1, @force_reinit_subscription = 1 exec sp_articlecolumn @publication = NMinha Publicao, @article = NEmployee, @column = NManagerID, @operation = Nadd, @force_invalidate_snapshot = 1, @force_reinit_subscription = 1 exec sp_articlecolumn @publication = NMinha Publicao, @article = NEmployee, @column = NEmergencyContactID, @operation = Nadd, @force_invalidate_snapshot = 1, @force_reinit_subscription = 1 Adding the article synchronization object exec sp_articleview @publication = NMinha Publicao, @article = NEmployee, @view_name = NSYNC_Employee_1__58', @filter_clause = null, @force_invalidate_snapshot = 1, @force_reinit_subscription = 1 GO use [AdventureWorks] exec sp_addarticle @publication = NMinha Publicao, @article = NProduct, @source_owner = NProduction, @source_object = NProduct, @type = Nlogbased, @description = null, @creation_script = null, @pre_creation_cmd = Ndrop, @schema_option = 0x00000000000044F1, @identityrangemanagementoption = Nmanual, @destination_table = NProduct, @destination_owner = Ndbo, @status = 0, @vertical_partition = Nfalse GO ******************************************************************************************************** Sem dvidas, podemos dizer que temos aqui comandos T-SQL bem avanados. Ainda bem que temos os assistentes para nos ajudar. bem mais fcil usar o assistente do que aprender todos estes comandos e as respectivas sintaxes. KNOW-HOW EM: CONFIGURAO E ADMINISTRAO DE PUBLICAES Aps ter criado uma publicao, voc poder alter-la, conforme for necessrio. Aps ter criado uma publicao, ela passa a ser exibida na opo Replication -> Publications, dentro da instncia onde a publicao foi criada. No exemplo da Figura 8.25, temos a publicao Minha Publicao, do Banco de Dados AdventureWorks, da instncia SERVIDOR\SQL2005, j sendo exibida na lista de publicaes. Para acessar as propriedades de uma publicao, clique com o boto direito do mouse na publicao e, no menu de opes que exibido, clique em Properties. Ser aberta a janela de propriedades da publicao, com a guia General automaticamente selecionada. Na guia General, voc pode alterar a descrio da publicao, mas no pode alterar o nome da publicao. Nesta guia, voc tambm pode definir se as subscries iro expirar ou no. O padro que as subscries no expirem. Na guia General voc pode marcar a opo Subscriptions expire and may be dropped if not synchronized in the following number of hours:, para definir por quantas horas os dados estaro disponveis para serem replicados para os subscribers. Se no houver uma replicao no tempo definido no campo Hours, os dados no sero mais replicados e sero excludos. Somente quando um novo conjunto de dados for gerado, ser feita uma nova replicao. D um clique na guia Articles. As opes desta guia so idnticas s opes da etapa do assistente, onde voc definiu quais artigos fariam parte da publicao. Voc pode usar a guia Articles para alterar os arquivos existentes, excluir artigos e incluir novos artigos na publicao. Voc tambm pode usar o boto Article Properties, para definir as propriedades para um artigo em particular ou para todos os artigos, ao mesmo tempo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000481 Figura 8.25 A publicao Minha Publicao, criada no exemplo anterior. D um clique na guia Filter Rows. Nesta guia voc define os filtros horizontais, definindo critrios de filtragem para um ou mais dos artigos. Apenas para lembrar, no exemplo anterior, ns definimos um filtro para o artigo Art_Redmond. Definimos o seguinte filtro: City=Redmond. Nesta guia voc pode alterar os filtros existentes, adicionar novos filtros ou excluir filtros. D um clique na guia Snapshot. Nesta guia voc define vrias opes, que afetam a maneira como o snapshot dos dados ser efetuado. Inicialmente, voc pode definir o formato dos dados. A opo Native SQL Server deve ser utilizada se os subscribers forem tambm instncias do SQL Server. J a opo Character deve ser utilizada se o publisher ou um ou mais dos subscribers no so uma instncia do SQL Server. Nesta guia voc tambm pode definir se os arquivos, contendo os dados a serem replicados, sero colocados no caminho padro sugerido pelo SQL Server 2005, ou em uma pasta que voc selecionar. Por fim, voc tambm pode configurar scripts que sero executados antes e/ou depois da criao do snapshot. Por exemplo, se voc est replicando dados no formato Character, para serem importados por um outro Banco de Dados que no o SQL Server, voc pode rodar um script aps a criao do snapshot, para adaptar os dados para o formato esperado pelos subscribers. D um clique na guia FTP Snapshot. Nesta guia voc define se o protocolo FTP dever ou no ser utilizado pelos subscribers, para fazer download dos arquivos de dados a serem replicados. Por padro, est desabilitada a opo de usar FTP. Eu recomendo que voc mantenha esta opo desabilitada e deixe os agentes de replicao do SQL Server se encarregarem da transferncia dos dados a serem proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4820000Curso Completo replicados. bem mais seguro do que o uso do FTP, o qual um protocolo bastante frgil, em termos de segurana. D um clique na guia Subscriptions Options. Nesta guia voc pode configurar uma srie de opes que iro definir como sero aceitas as subscries para esta publicao. Por exemplo, voc usa a opo Allow pull subscriptions, para definir se sero ou no aceitas subscries do tipo Pull, nas quais o subscriber que inicia o processo de solicitar a cpia dos dados que esto no distributor, ou seja, na subscrio do tipo Pull o subscriber que puxa os dados (Pull = puxar). D um clique na guia Subscriptions Options. Nesta guia voc pode configurar uns grupos, com permisso para fazerem Subscries nesta publicao. Voc pode usar o boto Add para adicionar novos usurios e/ou grupos; o boto Remove para remover um usurio e/ou grupo e o boto Remove All, para remover todos os usurios/grupos da lista. Se um usurio no estiver nesta lista, ele no conseguir se inscrever para receber os dados desta publicao. Esta lista uma maneira de limitar quais usurios podero receber rplicas dos dados. D um clique na guia Agent Security. Nesta guia voc define a conta e respectiva senha, com a qual ser executado o Agente de Replicao. Para alterar a conta e/ou senha, clique no boto Security Settings. Definidas as configuraes desejadas para a publicao s clicar em OK e pronto, as modificaes sero aplicadas. KNOW-HOW EM: HABILITAO DE SUBSCRIBERS PR-REQUISITOS Conceitos tericos sobre replicao apresentados nos itens iniciais deste captulo. Conhecer o modelo de replicao do SQL Server 2005. Ter criado uma publicao no item anterior. Fundamentos apresentados na Parte I. Saber utilizar o SQL Server Management Studio. METODOLOGIA Apresentao dos comandos e assistentes para configurao de um subscriber. TCNICA Configurar um subscriber utilizando o SQL Server Management Studio. Criamos uma publicao no item anterior. O objetivo da criao de uma publicao para que esta possa ser replicada para um ou mais subscribers. Aprenderemos neste item como habilitar subscribers e configurar subscries. Conforme j descrito anteriormente, podemos configurar dois tipos de subscries: Pull subscriptions Push subscriptions proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000483 Iremos usar o assistente de subscrio, para configurar uma subscrio do tipo Push subscription (push = empurrar, ou seja, o distributor quem empurra os dados para um ou mais subscribers). Este tipo de subscrio configurado no publisher, conforme descrito anteriormente. indicado para situaes nas quais devemos fazer um gerenciamento centralizado das subscries. Porm no devemos esquecer que, neste tipo de subscrio, os agentes responsveis pela replicao rodam no distributor, consumindo memria e processamento deste servidor. Estas necessidades adicionais de memria e processamento devem ser levadas em considerao. Vamos configurar uma subscrio do tipo Push subscription. Conforme descrito na parte terica, no incio deste captulo, este tipo de Subscrio tem as seguintes caractersticas: Com este tipo de subscrio, o distributor responsvel por enviar as alteraes para um ou mais subscribers. Lembre que push significa empurrar e no puxar. Uma analogia que pode ser utilizada que neste tipo de subscrio o distributor que empurra, envia as alteraes para um ou mais subscribers. Utilizamos Push subscriptions quando queremos ter um controle centralizado sobre o agendamento das replicaes. muito mais fcil configurar vrias subscries em um nico servidor, no caso o distributor, do que ter que configurar a subscrio em diversos servidores, no caso, os diversos subscribers. do distributor a iniciativa de enviar as alteraes para os subscribers. Assim como o Agente de replicao, servio responsvel por fazer a replicao, roda no dis- tributor ou no publisher, dependendo de como foi feita a configurao da replicao, devemos ter em mente que este agente estar consumindo recursos como memria e processador no distributor ou no publisher. Caso tenhamos um nmero considervel de subscribers, devemos planejar cuidadosamente esta necessidade de recursos de memria e processamento. Antes de configurarmos a subscrio para a publicao Minha Publicao, vamos excluir o Banco de Dados AdventureWorks, da instncia SERVIDOR2\CURSOSJB. Vamos fazer isso para verificar se realmente s esto sendo replicados os dados definidos pelos trs artigos da publicao Minha Publicao. Para excluir o Banco de Dados AdventureWorks da instncia SERVIDOR2\CURSOSJB: abra o SQL Server Management Studio; navegue at o Banco de Dados AdventureWorks da instncia SERVIDOR2\CURSOSJB; clique com o boto direito do mouse em AdventureWorks e, no menu de opes que exibido; d um clique em Delete. Surge uma mensagem pedindo confirmao d um clique no boto OK para confirmar a excluso. Agora vamos a um exemplo prtico. Exemplo prtico: Configurar a instncia SERVIDOR2\CURSOSJB como subscriber da publicao Minha Publicao, criada no item anterior. Criar uma subscrio do tipo Push subscription, ou seja, configurada a partir do publisher, que no nosso caso a instncia SERVIDOR\SQL2005. Para criar a subscrio solicitada, siga os passos indicados a seguir: 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o. 2. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para exibir as opes disponveis. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4840000Curso Completo 3. Clique no sinal + ao lado da opo Replication, abaixo da instncia SERVIDOR\SQL2005, para exibir as opes disponveis. 4. Clique no sinal de + ao lado da opo Publications, para exibir as publicaes disponveis nesta instncia. No momento, deve estar disponvel somente a publicao Minha Publicao, criada anteriormente. 5. Clique com o boto direito do mouse na publicao Minha publicao e, no menu de opes que exibido, clique em New Subscriptions. 6. Ser aberto o assistente para criao de novas subscries New Subscription Wizard. A primeira tela do assistente somente informativa. Clique em Next, para seguir para a prxima etapa do assistente. 7. Nesta etapa voc deve selecionar a publicao para a qual ser criada uma nova subscrio. Na lista publisher, j deve ter vindo selecionada a instncia SERVIDOR\SQL2005. Se no veio selecionada esta instncia, selecione-a. Na parte de baixo da janela sero exibidas as publicaes disponveis (no nosso exemplo somente ser exibida a publicao Minha Publicao). Clique na publicao Minha Publicao, para selecion-la, conforme indicado na Figura 8.26: Figura 8.26 A publicao Minha Publicao, criada no exemplo anterior. 8. Clique em Next, para seguir para a prxima etapa do assistente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000485 9. Nesta etapa voc ir definir se o assistente ir criar uma ou mais subscries do tipo Push subscriptions (onde os agentes de replicao rodam no distributor), ou se sero subscries do tipo Pull subscriptions (onde os agentes de replicao rodam nos subscribers). Usando o assistente voc pode criar vrias subscries, de uma s vez, mas todas do mesmo tipo, ou seja, ou todas Pull subscriptions ou todas Push subscriptions. Se voc precisar criar subscries de diferentes tipos, ter que rodar o assistente mais de uma vez. Certifique-se de que a opo (push subscrip- tions) esteja selecionada, conforme indicado na Figura 8.27: Figura 8.27 Definindo o tipo de subscrio. 10. Clique em Next, para seguir para a prxima etapa do assistente. 11. Nesta etapa voc pode adicionar uma ou mais instncias do SQL Server 2005, as quais sero subscribers da publicao Minha Publicao. Por padro, somente a prpria instncia, onde foi criada a publicao, exibida na lista. No nosso exemplo, por padro somente a instncia SERVIDOR\SQL2005, que onde foi criada a publicao Minha Publicao, est sendo exibida. Vamos adicionar a instncia SERVIDOR2\CURSOSJB. Para isso, clique no boto Add SQL Server. Ser exibida a janela Connect to server. Na lista Server name, selecione o nome da instncia que ser o subscriber; no nosso exemplo, selecione SERVIDOR2\CURSOSJB. importante salientar que, nesta lista, somente sero exibidos os nomes das instncias registradas no SQL Server Management Studio. Caso a instncia desejada no esteja sendo exibida nesta lista, voc pode cancelar o assistente e, no SQL Server Management Studio, clicar com o boto direito do mouse em Microsoft SQL Servers (na janela Registered Servers) e usar o comando New -> Server Registration, para registrar uma ou mais instncias do SQL Server. Depois s voltar e executar o assistente novamente. Na lista Authentication selecione Windows Authen- tication. Sua janela deve estar conforme indicado na Figura 8.28: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4860000Curso Completo Figura 8.28 Adicionando um novo subscriber. 12 . D um clique no boto Connect. 13 . Voc estar de volta ao assistente e a instncia SERVIDOR2\CURSOSJB j ter sido adicionada lista. Certifique-se de que somente esta instncia esteja selecionada. Na coluna Subscription database, voc deve informar se os dados sero replicados para um Banco de Dados j existente ou para um novo Banco de Dados. Para o nosso exemplo, selecione a opo New database, conforme indicado na Figura 8.29. nesta etapa que voc pode adicionar quantos subscribers forem necessrios. Para adicion-los, basta que eles j tenham sido registrados no SQL Server Management Studio, conforme descrito anteriormente. Figura 8.29 Selecionando o subscriber e o Banco de Dados de destino. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000487 N O T A 14. Ser aberta a janela para criao de um novo Banco de Dados, janela esta que voc aprendeu a utilizar no Captulo 3. Utilizando os conhecimentos do Captulo 3, crie um Banco de Dados com as seguintes caractersticas ( importante salientar que, antes de criar este Banco de Dados, a pasta C:\livrosql\ExReplicacao j deve ter sido criada, caso contrrio ser gerado um erro. Se esta pasta ainda no existe, abra o Windows Explorer e crie a pasta C:\livrosql\ExReplicacao): Arquivo Definies Primrio C:\livrosql\ExReplicacao\ExReplicacao-prim.mdf Crescimento automtico habilitado. Tamanho inicial: 2 MB. Crescimento em incrementos de 5%. Tamanho mximo de 10 MB. Secundrio C:\livrosql\ExReplicacao\ExReplicacao-sec1.ndf Crescimento automtico habilitado. Tamanho inicial: 2 MB. Crescimento em incrementos de 5%. Tamanho mximo de 100 MB. Secundrio C:\livrosql\ExReplicacao\ExReplicacao-sec2.ndf Crescimento automtico habilitado. Tamanho inicial: 2 MB. Crescimento em incrementos de 5%. Tamanho mximo de 10 MB. Arquivo de log C:\livrosql\ExReplicacao\ExReplicacao-log1.ldf Crescimento automtico habilitado. Tamanho inicial: 2 MB. Crescimento em incrementos de 5%. Tamanho mximo de 10 MB. Arquivo de log C:\livrosql\ExReplicacao\ExReplicacao-log2.ldf Crescimento automtico habilitado. Tamanho inicial: 2 MB. Crescimento em incrementos de 5%. Tamanho mximo de 10 MB. Arquivo de log C:\livrosql\ExReplicacao\ExReplicacao-log3.ldf Crescimento automtico habilitado. Tamanho inicial: 2 MB. Crescimento em incrementos de 5%. Tamanho mximo de 10 MB. Tabela 8.3 O Banco de Dados ExReplicacao. A criao de um novo Banco de Dados para receber os dados replicados no , de maneira alguma, necessria. Poderamos utilizar um Banco de Dados j existente. Optamos por criar um novo Banco de Dados para salientar a execuo deste procedimento. 15. A tela de criao do novo Banco de Dados dever estar conforme indicado na Figura 8.30: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4880000Curso Completo Figura 8.30 Definies para criao do Banco de Dados ExReplicacao. 16. Clique em OK para criar o Banco de Dados ExReplicacao. Voc estar de volta ao assistente de subscrio. 17. Clique em Next, para seguir para a prxima etapa do assistente. Figura 8.31 Configuraes de segurana, para o agente de distribuio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000489 18. Nesta etapa voc ir definir as configuraes de segurana (conta de conexo e opes de conexo), para cada agente de distribuio que for utilizado. No nosso exemplo, tem um nico agente de Distribuio, pois configuramos um nico subscriber. Se voc tivesse configurado vrios sub- scribers, seriam listados tantos agentes de distribuio quantos fossem os subscribers configurados. Clique no boto OK, para fazer as configuraes de segurana. Ser aberta a janela Distribution Agent Security. Informe a conta a ser utilizada e a respectiva senha, conforme indicado na Figura 8.31. No altere as demais opes. Clique em OK. Voc estar de volta ao assistente. 19. Clique em Next, para seguir para a prxima etapa do assistente. 20. Nesta etapa voc deve definir um agendamento para cada um dos subscribers que esto sendo configurados. Por exemplo, voc poderia definir uma replicao de duas em duas horas para subscribers remotos, porm ligados por links de alta velocidade, uma replicao de 15 em 15 minutos para subscribers da mesma rede local e uma replicao uma vez por dia, de madrugada, para subscribers remotos, ligados por links de WAN de baixa velocidade. No nosso exemplo, temos um nico subscriber. Vamos configurar uma replicao diariamente, de duas em duas horas. Clique na coluna Agent Schedule, abra a lista e seleicone a opo Define Schedule. 21. Ser aberta a janela para definio do agendamento, janela esta que voc j aprendeu a utilizar no captulo sobre Jobs e Agendamento de tarefas. Para definir uma replicao diria, de duas em duas horas, configure as opes indicadas na Figura 8.32 e clique em OK para criar o agendamento. Figura 8.32 Definindo o agendamento da replicao. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4900000Curso Completo 22. Voc estar de volta ao assistente para criao de novas subscries. Clique em Next, para seguir para a prxima etapa do assistente. 23. Nesta etapa o assistente informa que cada subscrio tem que ser inicializada com uma replicao completa, do tipo snapshot dos dados e do schema. Nesta etapa voc informa, para cada subscrio (no nosso exemplo uma nica subscrio), quando que este snapshot inicial deve ser criado. Voc tem a opo de cri-lo imediatamente opo Immediately na coluna Initial- ize When ou no prximo agendamento opo At firs synchronization. Por padro, vem selecionada a opo Immediately. Vamos manter esta opo selecionada. 24. Clique em Next, para seguir para a prxima etapa do assistente. 25. Nesta etapa voc pode marcar a opo Create the subscription(s) immediately, para que a subscrio seja criada imediatamente e tambm pode marcar a opo Generate a script, caso voc queira que seja criado um arquivo, contendo todos os comandos, necessrios para criar a subscrio, de acordo com as opes que voc selecionou no assistente. Este script pode ser til, por exemplo, para rapidamente recriar a subscrio, em caso de problemas. Voc pode gravar estes comandos em um arquivo de texto e, quando for necessrio recriar a publicao, s copiar estes comandos do arquivo de texto e execut-los na janela de execuo de comandos T-SQL. Marque as duas opes desta etapa, conforme indicado na Figura 8.33: Figura 8.33 Criar a subscrio e gerar um arquivo com os comandos T-SQL. 26. D um clique no boto Next, seguindo para a prxima etapa do assistente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000491 Figura 8.34 Configuraes do arquivo com os comandos. 28. Clique em Next, para seguir para a prxima etapa do assistente. 29. Ser exibida a tela final do assistente, onde apresentado um resumo de todas as opes selecionadas. Caso voc tenha que alterar alguma opo, s utilizar o boto Back. Clique em Finish para encerrar o assistente e criar a subscrio (ou subscries, caso voc tenha configurado mais de uma subscrio). 30. O SQL Server 2005 comear a criar a subscrio e exibir uma janela, indicando o progresso do trabalho, conforme exemplo da Figura 8.35. 31. Concludas as diversas etapas de criao da subscrio, clique em Close para fechar a janela New Subscription Wizard. Muito bem, a subscrio foi criada. A partir deste momento, a instncia SERVIDOR2\CURSOSJB passar a receber os dados da publicao Minha Publicao, da instncia SERVIDOR\SQL2005. Esta replicao ser feita de duas em duas horas e os dados sero gravados no Banco de Dados ExReplicacao. A seguir veremos como conferir se a subscrio foi realmente criada e vamos verificar se os dados esto sendo copiados para o Banco de Dados ExReplicacao, da instncia SERVIDOR\SQL2005. Tambm veremos como forar uma replicao. 27. Nesta etapa (que s exibida se voc marcar a opo para gerar o script, na etapa anterior), voc definie onde ser gravado o script, o nome do arquivo e as propriedades do arquivo. Selecione as opes indicadas na Figura 8.34: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4920000Curso Completo Figura 8.35 Progresso da criao da subscrio. Antes, apenas a ttulo de curiosidade, coloco a seguir o script gerado pelo assistente (lembre que, em uma das etapas finais, marcamos a opo para gerar um arquivo com todos os comandos T-SQL, necessrios para criao da subscrio): ********************************************************************************************************* BEGIN: Script to be run at Publisher SERVIDOR\SQL2005- use [AdventureWorks] exec sp_addsubscription @publication = NMinha Publicao, @subscriber = NSERVIDOR2\CURSOSJB, @destination_db = NExReplicacao, @subscription_type = NPush, @sync_type = Nautomatic, @article = Nall, @update_mode = Nread only exec sys.sp_addpushsubscription_agent @publication = NMinha Publicao, @subscriber = NSERVIDOR2\CURSOSJB, @subscriber_db = NExReplicacao, @job_login = NSERVIDOR\Administrador, @job_password = N, @subscriber_security_mode = 1, @frequency_type = 4, @frequency_interval = 1, @frequency_relative_interval = 0, @frequency_recurrence_factor = 1, @frequency_subday = 8, @frequency_subday_interval = 2, @active_start_time_of_day = 0, @active_end_time_of_day = 235900, @active_start_date = 20050509, @active_end_date = 99991231, @enabled_for_syncmgr = NFalse, @dts_package_location = NDistributor GO END: Script to be run at Publisher SERVIDOR\SQL2005- ********************************************************************************************************* Agora vamos verificar quais modificaes foram introduzidas na instncia SERVIDOR\SQL2005 aps termos configurado a replicao. Veremos quais agentes foram implementados, o histrico de replicao dos agentes. Depois verificaremos se os dados foram realmente replicados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000493 OS AGENTES CRIADOS PARA A REPLICAO EM SERVIDOR\SQL2005 Vamos conferir quais os jobs que foram criados na instncia SERVIDOR\SQL2005, para dar suporte replicao do tipo Snapshot que configuramos nos exerccios anteriores. Para isso utilizaremos a opo SQL Server Agent -> Jobs, da instncia SERVIDOR\SQL2005. Tambm iremos verificar o histrico de execuo destes agentes, para sabermos se a replicao j est sendo efetuada com sucesso. Exemplo prtico: Para verificar quais jobs foram criados e verificar o histrico de execuo dos jobs relacionados com a replicao, siga os passos indicados a seguir: 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o. 2. Na janela Object Explorer, d um clique no sinal de + ao lado da instncia SERVIDOR\SQL2005 para expandir esta opo. 3. D um clique no sinal de + ao lado da opo SQL Server agent, para expandir esta opo. 4. D um clique no sinal de + ao lado da opo Jobs, abaixo de SQL Server Agent, para exibir a lista de jobs disponveis. 5. Observe que temos uma srie de jobs relacioandos com a replicao, conforme pode ser indicado pelo nome dos Jobs. Observe que vrios jobs tm, em alguma parte do nome, termos relacionados replicao, tais como Subscription, Replication, Distribution e assim por diante. 6. Na Figura 8.36 voc pode conferir a lista de jobs da instncia SERVIDOR\SQL2005: Figura 8.36 Lista de jobs criados para dar suporte replicao. Agora vamos verificar o histrico de execuo de um dos jobs Replication agents checkup. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4940000Curso Completo 7. D um clique com o boto direito do mouse no job Replication agents checkup. No menu que surge, d um clique na opo View History. exibida a janela com informaes detalhadas, sobre todo o histrico de execues do job, conforme indicado na Figura 8.37. No nosso exemplo, observe que o job j foi executado diversas vezes. Para cada execuo so informadas a data e a hora de incio da execuo do job (lembrando que um mesmo Job pode conter mais de um comando, para execuo). Figura 8.37 A janela com o histrico de execuo do job. Para ver mais detalhes sobre uma execuo do job, d um clique no sinal de +, ao lado da data e hora de execuo do job. Voc pode filtrar o histrico de execuo, para exibir apenas as ocorrncias que atendam a determinados critrios, tais como uma data inicial e uma data final. Para isso, clique no boto Filter. Ser aberta a janela Filter Settings. Defina os critrios de filtragem desejados, como no exemplo da Figura 8.38, onde estou definindo que sejam exibidas apenas as execues para o perodo de 09/05/2005 a 10/05/2005. Marque a opo Apply Filter e clique em OK. Pronto, o histrico de execuo ser filtrado, para exibir somente as execues que atendam os critrios especificados. 8. D um clique no boto Close para fechar a janela do histrico de execuo do job. 9. Voc estar de volta ao SQL Server Management Studio. Mantenha-o aberto. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000495 Figura 8.38 Opes para filtrar o histrico de execuo do job. Lembre que o nosso agente est programado, ou melhor, agendado para executar de duas em duas horas. Ao executar, o agente transmite toda a publicao Minha publicao do publisher (que no nosso exemplo a instncia SERVIDOR\SQL2005) para o distributor (que no nosso exemplo tambm a instncia SERVIDOR\SQL2005). Devemos observar que transmitida toda a publicao e no somente os dados que foram alterados, pois estamos utilizando uma replicao do tipo Snapshot rep- lication. Ou seja, a cada replicao, o conjunto completo de dados replicado e no somente o que foi alterado, adicionado ou excludo entre uma replicao e outra. Esta a principal caracterstica da replicao Snapshot Replication. Podemos fazer com que um ou mais dos jobs sejam executados imediatamente, antes mesmo do agendamento programado. Para isso basta clicar com o boto direito do mouse no job e, no menu de opes que exibido, clicar em Start Job. Tambm convm lembrar que, para a replicao do tipo Snapshot replication, o Snapshot agent roda no distributor. Quando o agente executado, ele se conecta com o publisher e copia os dados do publisher para o distributor. J vimos que, ao habilitarmos a replicao, uma srie de modificaes foi feita em SERVIDOR\SQL2005. Agora vamos verificar se os dados foram realmente replicados para o Banco de Dados ExReplicacao da instncia SERVIDOR2\CURSOSJB. Os dados j devem ter sido replicados, pois, conforme conferimos no histrico de replicao, os jobs responsveis pela replicao executaram com sucesso. Mas nunca demais dar uma conferida. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4960000Curso Completo Tambm cabe lembrar que, na publicao Minha Publicao, que foi criada para a replicao, temos apenas trs artigos. Somente os dados dos artigos que fazem parte da publicao que so replicados e no todo o Banco de Dados AdventureWorks. Apenas para recordar, os artigos da Publicao1 esto definidos conforme indicado a seguir: Art_Produtos: Este artigo conter todos os registros da tabela Product. Art_Employee: Este artigo conter apenas algumas das colunas da tabela Employee, ou seja, aplicaremos um filtro Vertical. Este artigo ir replicar somente os seguintes campos da tabela Em- ployee: EmployeeID, NationalIDNumber, DepartmentID, ManagerID e EmergencyContactID. Art_Redmond: Este artigo ser baseado na tabela Person.Address e ir replicar somente os registros onde o campo City=Redmond. Ou seja, vamos aplicar um filtro horizontal, para replicar somente as linhas que atendam a um determinado conjunto de critrios, no nosso exemplo: City=Redmond. Exemplo prtico: Para verificar se os dados esto sendo replicados com sucesso, para o Banco de Dados ExReplicacao, da instncia SERVIDOR2\CURSOSJB, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio. 2. Verifique se a instncia SERVIDOR2\CURSOSJB aparece na lista de instncias registradas, na janela Registered Servers. Esta instncia certamente j deve aparecer, se no voc no teria conseguido criar a subscrio, em um dos exemplos anteriores. Se, por algum motivo, esta instncia no estiver aparecendo, clique com o boto direito do mouse em Microsoft SQL Servers, na janela Registered Servers e, no menu de opes que exibido, clique em New -> Server Registration, para registrar a instncia SERVIDOR2\CURSOSJB. 3. Na janela Object Explorer, d um clique no sinal de + ao lado da instncia SERVIDOR2\CURSOSJB, para exibir as opes disponveis. 4. Abaixo de SERVIDOR2\CURSOSJB, d um clique no sinal de +, ao lado da opo Databases. 5. Nas opes que so exibidas, observe que o Banco de Dados ExReplicao j exibido na lista de Banco de Dados, conforme indicado na Figura 8.39. Este um indicativo de que a replicao j foi executada, pelo menos uma vez, com sucesso. Figura 8.39 O Banco de Dados ExReplicacao. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000497 N O T A 6. D um clique no sinal de + ao lado de ExReplicacao, para exibir os objetos deste Banco de Dados. 7. D um clique no sinal de + ao lado da opo Tables, para exibir as tabelas do Banco de Dados ExReplicacao. Observe que, alm da opo System Tables, so exibidas trs outras tabelas, justamente as tabelas criadas pela replicao: dbo.Address dbo.Employee dbo.Product O nome das tabelas no Banco de Dados de destino no precisa ser igual ao nome no Banco de Dados de origem. Lembre que esta opo configurada quando criamos a publicao. Para maiores detalhes, consulte o exerccio, neste captulo, onde criamos a publicao Minha Publicao. 8. Clique com o boto direito do mouse no Banco de Dados ExReplicao e, no menu de opes que exibido, clique em New Query. Ser exibida a janela de execuo de comandos T-SQL. Execute o seguinte comando: SELECT * FROM dbo.Address Observe que somente temos endereos para a cidade de Redmond. Isso confirma que o filtro que colocamos no artigo Art_Redmond est funcionando corretamente. Apenas para lembrar, durante a criao da publicao Minha Publicao, definimos o seguinte filtro, para o artigo que publica a tabela Address: City = Redmond. Observe que o filtro est sendo aplicado, pois somente esto sendo replicados os registros da tabela Address, onde City=Redmond. Pelo jeito funciona mesmo. 9. Mantenha a janela de execuo de comandos T-SQL aberta. Vamos utiliz-la logo em seguida. Vamos tambm conferir se a replicao da tabela Employee est funcionando corretamente. Lembre que, para esta tabela, definimos um filtro vertical, onde somente devem ser replicados os seguintes campos: EmployeeID NationalIDNumber DepartmentID ManagerID EmergencyContactID 10. Execute o seguinte comando: SELECT * FROM dbo.Employee Observe que somente foram replicados os campos EmployeeID, NationalIDNumber, DepartmentID, ManagerID e EmergencyContactID, conforme indicado na Figura 8.40: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 4980000Curso Completo Figura 8.40 Filtro vertical para a tabela Employee. Isto comprova que o nosso filtro vertical est funcionando corretamente. 11. Feche a janela de execuo de comandos T-SQL. Se for emitida uma mensagem, perguntando se voc deseja salvar os comandos, clique em No. 12. Feche o SQL Server Management Studio. KNOW-HOW EM: CONFIGURAR SUBSCRIES DO TIPO PULL SUBSCRIPTIONS PR-REQUISITOS Conceitos tericos sobre replicao apresentados nos itens iniciais deste captulo. Conhecer o modelo de replicao do SQL Server 2005. Ter criado publicaes no item anterior. Fundamentos apresentados na Parte I. Saber utilizar o SQL Server Management Studio. METODOLOGIA Apresentao dos comandos e assistentes para configurao de subscrio do tipo Pull subscription. TCNICA Configurar uma subscrio do tipo Pull subsciption utilizando o SQL Server Management Studio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000499 Pull subscriptions so configuradas no subscriber, ou seja, o subscriber que tomar a iniciativa de solicitar que a replicao seja iniciada e os dados sejam enviados do distributor para o subscriber. Pull significa puxar, ou seja, o subscriber puxa os dados que esto no distributor. Com este tipo de subscrio deixamos o controle e o agendamento da replicao a cargo de cada subscriber. A administrao fica mais distribuda mas, ao mesmo tempo, damos maior liberdade para cada subscriber. Outro fato importante que os agentes de replicao rodam no subscriber, o que alivia a carga no distributor. Por exemplo, localidades ligadas por links mais lentos podem programar a replicao em perodos mais espaados (maior latncia na atualizao dos dados). Este tipo de subscrio tambm indicado para usurios mveis. Por exemplo, um vendedor que, ao atender o cliente, conecta- se rede da empresa, utilizando uma linha telefnica e dispara uma replicao (puxa) para atualizar uma tabela de preos ou um catlogo de produtos e promoes. Para Pull subscriptions o agente de replicao roda no subscriber, consumindo memria e processador deste equipamento. Vamos a um exemplo prtico. Exemplo prtico: Vamos criar uma subscrio do tipo Pull subscription em SERVIDOR2\CURSOSJB. Esta subscrio ser baseada na publicao Minha Publicao, criada anteriormente, no publisher SERVIDOR\SQL2005. Os dados replicados sero armazenados no Banco de Dados ExPullReplication, o qual ser criado durante o processo de configurao da subscrio. Agendaremos esta subscrio para replicar diariamente, de 6 em 6 horas. Neste exemplo o publisher a instncia SERVIDOR\SQL2005 e o subscriber a instncia SERVIDOR2\CURSOSJB. Quem iniciar a replicao a instncia SERVIDOR2\CURSOSJB, pois uma Pull subscription. Dizemos que a instncia SERVIDOR2\CURSOSJB puxa os dados do distributor. Para criar a subscrio do tipo Pull subscription solicitada, siga os passos indicados a seguir: 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o. 2. Certifique-se de que a instncia SERVIDOR2\CURSOSJB esteja registrada no SQL Server Man- agement Studio. Se esta instncia ainda no estiver registrada, registre-a, seguindo os passos j descritos nos exemplos anteriores. 3. Na janela Object Explorer, d um clique no sinal de + ao lado da instncia SERVIDOR2\CURSOSJB, para exibir as opes disponveis nesta instncia. 4. Clique com o boto direito do mouse na opo Replication e, no menu de opes que aberto, clique em New -> Subscriptions. 5. Ser aberto o assistente para criao de novas subscries New Subscription Wizard. A primeira tela do assistente somente informativa. Clique em Next, para seguir para a prxima etapa do assistente. 6. Nesta etapa voc deve selecionar a publicao para a qual ser criada uma nova subscrio. Na lista publisher, selecione a instncia SERVIDOR\SQL2005 (pois nesta instncia que est a publicao Minha Publicao, para a qual estamos criando uma Subscrio). Se no veio selecionada esta instncia, selecione-a. Na parte de baixo da janela sero exibidas as publicaes disponveis (no nosso exemplo somente ser exibida a publicao Minha Publicao). Clique na publicao Minha Publicao, para selecion-la, conforme indicado na Figura 8.41: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5000000Curso Completo Figura 8.41 A publicao Minha Publicao, criada anteriormente. 7. Clique em Next, para seguir para a prxima etapa do assistente. 8. Nesta etapa voc ir definir se o assistente ir criar uma ou mais subscries do tipo Push subscriptions (onde os agentes de replicao rodam no distributor), ou se sero subscries do tipo Pull subscriptions (onde os agentes de replicao rodam nos subscribers). Usando o assistente voc pode criar vrias subscries, de uma s vez, mas todas do mesmo tipo, ou seja, ou todas Pull subscriptions ou todas Push subscriptions. Se voc precisar criar subscries de diferentes tipos, ter que rodar o assistente mais de uma vez. Certifique-se de que a opo (pull subscrip- tions) esteja selecionada. 9. Clique em Next, para seguir para a prxima etapa do assistente. 10. Nesta etapa voc pode adicionar uma ou mais instncias do SQL Server 2005, as quais sero subscribers da publicao Minha Publicao. Por padro, somente a prpria instncia, na qual estamos trabalhando, exibida na lista. No nosso exemplo, por padro somente a instncia SERVIDOR2\CURSOSJB, que onde estamos trabalhando, est sendo exibida. Certifique-se de que somente esta instncia esteja selecionada. Na coluna Subscription data- base, voc deve informar se os dados sero replicados para um Banco de Dados j existente ou para um novo Banco de Dados. Para o nosso exemplo, na coluna Subscription Database, selecione a opo New database. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000501 N O T A 11. Ser aberta a janela para criao de um novo Banco de Dados, janela esta que voc aprendeu a utilizar no Captulo 3. Utilizando os conhecimentos do Captulo 3, crie um Banco de Dados com as seguintes caractersticas ( importante salientar que, antes de criar este Banco de Dados, a pasta C:\livrosql\Ex2Replicacao j deve ter sido criada, caso contrrio ser gerado um erro, quando o SQL Server 2005 tentar criar o Banco de Dados. Se esta pasta ainda no existe, abra o Windows Explorer e crie a pasta C:\livrosql\Ex2Replicacao): A criao de um novo Banco de Dados para receber os dados replicados no , de maneira alguma, obrigatria. Poderamos utilizar um Banco de Dados j existente. Optamos por criar um novo Banco de Dados para salientar a execuo deste procedimento. 12. A tela de criao do novo banco de dados dever estar conforme indicado na Figura 8.42. 13. Clique em OK para criar o Banco de Dados ExReplicacao. Voc estar de volta ao assistente de subscrio. 14 . Clique em Next, para seguir para a prxima etapa do assistente. 15 . Nesta etapa voc ir definir as configuraes de segurana (conta de conexo e opes de conexo), para cada agente de distribuio que for utilizado. No nosso exemplo, h um nico agente de Distribuio, pois configuramos um nico subscriber. Se voc tivesse configurado vrios subscribers, seriam listados tantos agentes de distribuio quantos fossem os subscribers Arquivo Definies Primrio C:\livrosql\Ex2Replicacao\Ex2Replicacao-rim.mdf Crescimento automtico habilitado. Tamanho inicial: 5 MB. Crescimento em incrementos de 5%. Tamanho mximo de 10 MB. Secundrio C:\livrosql\Ex2Replicacao\Ex2Replicacao-sec1.ndf Crescimento automtico habilitado. Tamanho inicial: 5 MB. Crescimento em incrementos de 5%. Tamanho mximo de 100 MB. Arquivo de log C:\livrosql\Ex2Replicacao\Ex2Replicacao-log1.ldf Crescimento automtico habilitado. Tamanho inicial: 5 MB. Crescimento em incrementos de 5%. Tamanho mximo de 10 MB. Arquivo de log C:\livrosql\Ex2Replicacao\Ex2Replicacao-log2.ldf crescimento automtico habilitado. Tamanho inicial: 5 MB. Crescimento em incrementos de 5%. Tamanho mximo de 10 MB. Tabela 8.4 O Banco de Dados NorthwindPull. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5020000Curso Completo configurados. Clique no boto OK, para fazer as configuraes de segurana. Ser aberta a janela Distribution Agent Security. Informe a conta a ser utilizada e a respectiva senha, conforme indicado na Figura 8.43. As contas devem ser informadas no formato NOME-DO- SERVIDOR\NOME-DACONTA ou NOME-DO-DOMNIO\NOME-DA-CONTA. No altere as demais opes. Clique em OK. Voc estar de volta ao assistente. Figura 8.42 Definies para criao do Banco de Dados Ex2Replicacao. Figura 8.43 Configuraes de segurana, para o agente de distribuio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000503 16. Clique em Next, para seguir para a prxima etapa do assistente. 17. Nesta etapa voc deve definir um agendamento para cada um dos subscribers que esto sendo configurados. Por exemplo, voc poderia definir uma replicao de duas em duas horas para subscribers remotos, porm ligados por links de alta velocidade, uma replicao de 15 em 15 minutos para subscribers da mesma rede local e uma replicao uma vez por dia, de madrugada, para subscribers remotos, ligados por links de WAN de baixa velocidade. No nosso exemplo, temos um nico subscriber. Vamos configurar uma replicao diariamente, de seis em seis horas. Clique na coluna Agent Schedule, abra a lista e selecione a opo Define Schedule. 18. Ser aberta a janela para definio do agendamento, janela esta que voc j aprendeu a utilizar no captulo sobre jobs e agendamento de tarefas. Para definir uma replicao diria, de seis em seis horas, configure as opes indicadas na Figura 8.44 e clique em OK para criar o agendamento. Figura 8.44 Definindo o agendamento da replicao. 19. Voc estar de volta ao assistente para criao de novas subscries. Clique em Next, para seguir para a prxima etapa do assistente. 20. Nesta etapa o assistente informa que cada subscrio tem que ser inicializada com uma replicao completa, do tipo Snapshot dos dados e do schema. Nesta etapa voc informa, para cada subscrio (no nosso exemplo uma nica subscrio), quando que este snapshot inicial dever proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5040000Curso Completo ser criado. Voc tem a opo de cri-lo imediatamente opo Immediately na coluna Initial- ize When, ou no prximo agendamento opo At first synchronization. Por padro, vem selecionada a opo Immediately. Vamos manter esta opo selecionada. 21. Clique em Next, para seguir para a prxima etapa do assistente. 22. Nesta etapa voc pode marcar a opo Create the subscription(s) immediately, para que a subscrio seja criada imediatamente e tambm pode marcar a opo Generate a script, caso voc queira que seja criado um arquivo, contendo todos os comandos, necessrios para criar a subscrio, de acordo com as opes que voc selecionou no assistente. Este script pode ser til, por exemplo, para rapidamente recriar a subscrio, em caso de problemas. Voc pode gravar estes comandos em um arquivo de texto e, quando for necessrio recriar a publicao, s copiar estes comandos do arquivo de texto e execut-los na janela de execuo de comandos T-SQL. Marque as duas opes desta etapa. 23. Clique em Next, para seguir para a prxima etapa do assistente. 24. Nesta etapa (que s exibida se voc marcar a opo para gerar o script, na etapa anterior), voc definie onde ser gravado o script, o nome do arquivo e as propriedades do arquivo. Selecione as opes indicadas na Figura 8.45: Figura 8.45 Configuraes do arquivo com os comandos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000505 25. Clique em Next, para seguir para a prxima etapa do assistente. 26. Ser exibida a tela final do assistente, onde apresentado um resumo de todas as opes selecionadas. Caso voc tenha que alterar alguma opo, s utilizar o boto Back. Clique em Finish para encerrar o assistente e criar a subscrio (ou subscries, caso voc tenha configurado mais de uma subscrio). 27. O SQL Server 2005 comear a criar a subscrio e exibir uma janela, indicando o progresso do trabalho. Concludas as diversas etapas de criao da subscrio, clique no boto Close para fechar a janela New Subscription Wizard. Muito bem, a subscrio foi criada. A partir deste momento, a instncia SERVIDOR2\CURSOSJB passar a receber os dados da publicao Minha Publicao, da instncia SERVIDOR\SQL2005. Esta replicao ser feita de seis em seis horas e os dados sero gravados no Banco de Dados Ex2Replicacao. Apenas a ttulo de curiosidade, coloco a seguir o script gerado pelo assistente (lembre que, em uma das etapas finais, marcamos a opo para gerar um arquivo com todos os comandos T-SQL, necessrios para criao da subscrio): ********************************************************************************************************* BEGIN: Script to be run at Publisher SERVIDOR\SQL2005- use [AdventureWorks] exec sp_addsubscription @publication = NMinha Publicao, @subscriber = NSERVIDOR2\CURSOSJB, @destination_db = NEx2Replicacao, @sync_type = NAutomatic, @subscription_type = Npull, @update_mode = Nread only GO END: Script to be run at Publisher SERVIDOR\SQL2005- BEGIN: Script to be run at Subscriber SERVIDOR2\CURSOSJB- use [Ex2Replicacao] exec sp_addpullsubscription @publisher = NSERVIDOR\SQL2005', @publication = NMinha Publicao, @publisher_db = NAdventureWorks, @independent_agent = NTrue, @subscription_type = Npull, @description = N, @update_mode = Nread only, @immediate_sync = 1 exec sp_addpullsubscription_agent @publisher = NSERVIDOR\SQL2005', @publisher_db = NAdventureWorks, @publication = NMinha Publicao, @subscriber = NSERVIDOR2\CURSOSJB, @subscriber_db = NEx2Replicacao, @distributor = NSERVIDOR\SQL2005', @distributor_security_mode = 1, @distributor_login = null, @distributor_password = null, @enabled_for_syncmgr = NFalse, @frequency_type = 4, @frequency_interval = 1, @frequency_relative_interval = 0, @frequency_recurrence_factor = 1, @frequency_subday = 8, @frequency_subday_interval = 6, @active_start_time_of_day = 0, @active_end_time_of_day = 235900, @active_start_date = 20050510, @active_end_date = 99991231, @alt_snapshot_folder = N, @working_directory = N, @use_ftp = NFalse, @job_login = NXYZ\Administrador, @job_password = N, @publication_type = 0 GO END: Script to be run at Subscriber SERVIDOR2\CURSOSJB ********************************************************************************************************* EXCLUINDO ELEMENTOS DA REPLICAO Podemos facilmente remover subscries e publicaes. Para remover uma Publicao, basta abrir o SQL Server Management Studio e navegar at a publicao a ser excluda. Uma vez localizada a publicao, d um clique com o boto direito do mouse na publicao e, no menu de opes que exibido, d um clique na opo Delete. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5060000Curso Completo N O T A Para remover uma subscrio, voc deve navegar at a publicao, na qual est a subscrio a ser removida. Clique no sinal de + ao lado da publicao. Sero exibidas todas as subscries para a publicao, conforme indicado na Figura 8.46, onde esto sendo exibidas as duas subscries da publicao Minha publicao (uma do tipo Pull e outra do tipo Push), que criamos nos exemplos deste captulo. Figura 8.46 As subscries da publicao Minha Publicao. Para excluir uma subscrio, basta clicar com o boto direito do mouse na subscrio a ser excluda e, no menu de opes que exibido, clicar em Delete. Vamos a um exemplo prtico. Vamos remover a subscrio do tipo Pull subscription, que criamos anteriormente. Identificamos esta replicao, facilmente, porque ela faz a replicao com o Banco de Dados Ex2Replicao. O nome dela aparece como: SERVIDOR2\CURSOSJB: Ex2Replicao. O cone, ao lado dela, de uma folha inteira, sem o canto dobrado. Para isso, siga os seguintes passos: 1. Abra o SQL Server Management Studio e navegue at a instncia SERVIDOR\SQL2005. 2. No Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005. 3. Na lista de opes que exibida clique no sinal de + ao lado da opo Replication, para exibir as opes disponveis. 4. Clique no sinal de + ao lado da opo Publications. Sero exibidas as publicaes disponveis, que no nosso exemplo somente a publicao Minha Publicao: AdventureWorks. 5. Clique no sinal ao lado de Minha Publicao: AdventureWorks, para exibir a lista de subscries desta publicao. 6. Na lista de subscries que exibida, clique com o boto direito do mouse em SERVIDOR2\CURSOSJB: Ex2Replicao. No menu de opes que exibido, clique em Delete. 7. Surge uma janela pedindo confirmao da excluso. Nesta janela, indicada na Figura 8.47, voc tambm pode marcar a opo Connect to subscriber and delete Record of this subscrip- proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000507 tion at subscriber also. Se esta opo for marcada, as informaes sobre a subscrio tambm sero excludas na instncia SERVIDOR2\CURSOSJB. importante salientar que somente as informaes e configuraes da subscrio sero excludas. Os dados que j foram replicados no sero excludos. Voc pode confirmar isso, acessando a instncia SERVIDOR2\CURSOSJB e verificando que o Banco de Dados Ex2Replicacao e todas as suas tabelas, bem como os dados que haviam sido replicados, so mantidos, mesmo aps a excluso da subscrio. Ao excluir uma subscrio, apenas deixaro de ser feitas novas replicaes. Porm os dados j replicados sero mantidos. D um clique em Yes para confirmar. Figura 8.47 Confirmando a excluso da subscrio. 8. Ser exibida a janela para voc informar os dados para conexo com a instncia SERVIDOR2\CURSOSJB. Informe os dados de conexo e clique no boto Connect. 9. Muito bem, a subscrio foi excluda. Voc pode confirmar este fato, pois a subscrio SERVIDOR2\CURSOSJB: Ex2Replicao no mais exibida abaixo da publicao Minha Publicao. Ao excluirmos uma subscrio, o Banco de Dados de destino no ser excludo. No nosso exemplo, o Banco de Dados de destino era Ex2Replicaca, no subscriber que, no nosso exemplo, era a instncia SERVIDOR2\CURSOSJB. 10. Feche o SQL Server Management Studio. KNOW-HOW EM: REPLICAO PARA OUTROS TIPOS DE SUBSCRIBERS NO SQL SERVER 2005 PR-REQUISITOS Conceitos tericos sobre replicao apresentados nos itens iniciais deste captulo. Conhecer o modelo de replicao do SQL Server 2005. Configuraes de replicao no SQL Server 2005 apresentadas nos itens anteriores. Fundamentos apresentados na Parte I. Saber utilizar o SQL Server Management Studio. METODOLOGIA Apresentao dos comandos e assistentes para configurao de um subscriber que no seja um SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5080000Curso Completo N O T A TCNICA Configurar um subscriber, que no seja o SQL Server 2005, utilizando o SQL Server Management Studio. Podemos replicar dados para um subscriber que no seja uma instncia do SQL Server 2005. Por exemplo, podemos ter dados em um publisher SQL Server 2005, sendo replicados para um subscriber Microsoft Access. Podemos replicar para diversos tipos de subscribers, como por exemplo: Microsoft Access ORACLE IBM DB2/AS400 IBM DB2/MVS IBM DB2/NT IBM/DB2 6000 Tambm podemos ter subscribers do tipo ODBC ou OLE DB. Com isso, podemos replicar para qualquer formato de dados, para o qual esteja disponvel um drive ODBC ou um OLE DB Provider, o que amplia enormemente as opes disponveis. Um drive ODBC deve atender os seguintes requisitos: Deve ser ODBC level-1 compilant (compatvel com ODBC nvel-1). Deve ser um drive de 32 bits e thread-safe. Deve suportar transaes. Deve suportar DDL Data Definition Language. No pode ser read-only (somente leitura). Deve suportar nomes longos de tabelas, como por exemplo MSreplication_subscriptions. Um OLE DB Provider deve ser capaz de suportar os seguintes objetos para a replicao transacional: Objeto DataSource. Objeto Session. Objeto Command. Objeto Rowset. Objeto Error. Estes objetos so suportados pela grande maioria dos OLE DB Providers disponveis. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000509 N O T A N O T A REPLICANDO DADOS PARA UM SUBSCRIBER DO MICROSOFT ACCESS Para aprendermos a criar subscries para outros tipos de subscribers, iremos fazer um exemplo prtico. Vamos criar uma subscrio para um Banco de Dados do Microsoft Access. Utilizaremos o Banco de Dados C:\livrosql\ExReplicacao.mdb, o qual j deve ter sido criado previamente usando o Access. Use o Access para criar o Banco de Dados ExReplicacao.mdb na pasta C:\livrosql. O passo seguinte ser adicionarmos este Banco de Dados, via configuraes de ODBC, como um subscriber autorizado. Ao adicionarmos um subscriber do Microsoft Access, este passar a aparecer como se fosse mais um servidor registrado no SQL Server Management Studio, quando executamos o assistente para adio de novas Subscries. Depois iremos criar uma subscrio para este Banco de Dados para a publicao Minha Publicao, a qual criamos nos exemplos anteriores. Como estamos configurando a publicao a partir do publisher, ser uma subscrio do tipo Push subscription, pois estaremos empurrando os dados do publisher (SQL Server 2005 SERVIDOR\SQL2005) para o subscriber (Microsoft Access C:\livrosql\ExReplicacao.mdb). Aps criada a subscrio iremos conferir se os dados foram realmente replicados para o Banco de Dados do Microsoft Access. Vamos aos exemplos prticos. Para que possamos criar subscries para outros tipos de subscribers, que no o SQL Server 2005, devemos adicionar estes subscribers previamente, conforme veremos no exemplo prtico, logo a seguir. Voc pode acompanhar este exemplo utilizando tanto o Microsoft Access 97 quanto o Microsoft Access 2000. Exemplo prtico: Criar o Banco de Dados c:\livrosql\ExReplicacao.mdb configurar este Banco de Dados como um subscriber da publicao Minha Publicao. Para criar a subscrio solicitada, executaremos os seguintes procedimentos: Procedimento 1: Criar o Banco de Dados C:\livrosql\ExReplicacao.mdb. Procedimento 2: Registrar o Banco de Dados C:\livrosql\ExReplicacao.mdb. como um sub- scriber autorizado. Procedimento 3: Criar uma subscrio do Banco de Dados do Microsoft Access, para a publicao Minha Publicao da instncia SERVIDOR\SQL2005, do SQL Server. Procedimento 4: Verificar se os dados esto sendo realmente replicados. J havamos criado a pasta C:\livrosql nos captulos anteriores. Caso voc ainda no tenha criado esta pasta, crie antes de iniciar este procedimento. Ento mos obra, que temos bastante trabalho a fazer. Procedimento 1: Para criar o Banco de Dados C:\livrosql\ExReplicacao.mdb, siga os passos indicados a seguir (estou usando o Microsoft Access 2000): 1. Abra o Microsoft Access (Iniciar -> Programas -> Microsoft Access). proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5100000Curso Completo Figura 8.48 Criando um novo Banco de Dados do Access. 3. Surge a janela Novo arquivo de Banco de Dados, onde temos que informar a pasta e o nome do Banco de Dados a ser criado. 4. Na lista Salvar em, selecione C:. 5. Sero exibidas todas as pastas do drive C:. D um clique duplo na pasta livrosql para abri-la. 6. No campo Nome do arquivo, digite ExReplicacao.mdb, e clique no boto Criar. Ser criado o Banco de Dados ExReplicacao.mdb e este ser carregado no Microsoft Access. Observe que criado um Banco de Dados vazio, sem nenhuma tabela. Aps a replicao, ns vamos abrir este Banco de Dados novamente e vamos verificar que os artigos da publicao Minha Publicao foram replicados como tabelas no Banco de Dados ExReplicacao.mdb. 7. Feche o Microsoft Access. Agora vamos registrar este Banco de Dados como um subscriber autorizado no publisher SERVIDOR\SQL2005. Procedimento 2: Para registrar o Banco de Dados C:\livrosql\ ExReplicacao.mdb como um subscriber autorizado no publisher SERVIDOR\SQL2005, siga os passos indicados a seguir: 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o. 2. Na janela que surge, d um clique na opo Banco de Dados vazio, para criar um novo Banco de Dados do Access, conforme indicado na Figura 8.48. Clique no boto OK. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000511 2. No Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005. 3. Clique com o boto direito do mouse na opo Replication. No menu de opes que exibido clique em Publisher Properties. 4. Ser aberta a janela de propriedades do publisher, com a guia General selecionada por padro. Para habilitar um subscriber que no seja SQL Server, vamos utilizar a guia subscribers. D um clique na guia Subscriptions para selecion-la. Sero exibidas as opes indicadas na Figura 8.49: Figura 8.49 A guia subscribers. 5. Clique no boto Add. Nas opes que so exibidas, clique em Add OLE DB subscriber. 6. Ser aberta a janela Propriedades de Vinculao de dados, com a guia Conexo selecionada, por padro. D um clique na guia Provedor. Sero exibidas as opes indicadas na Figura 8.50. Na guia Provedor, voc ir informar o formato dos dados do subscriber, que no nosso exemplo ser Microsoft Access (Microsoft Jet 4.0 OLE DB Provider). Selecione a opo indicada na Figura 8.50. 7. Clique na guia Conexo. No campo Selecione ou insira o nome de um Banco de Dados, digite o seguinte: C:\livrosql\ExReplicacao.mdb. Se o Banco de Dados tiver um usurio e senha, digite o nome do usurio, a respectiva senha e marque a opo Permitir salvamento de senha. No nosso exemplo, no temos usurio e senha. Com isso sero usados os valores padro, que Admin para o usurio, senha em branco, marcar a opo Senha em branco e deixar desmarcada a opo Permitir salvamento de senha. Sua janela deve estar conforme indicado na Figura 8.51. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5120000Curso Completo Figura 8.50 Definindo o formato dos dados do subscriber. Figura 8.51 Definindo o Banco de Dados que ser o subscriber. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000513 Figura 8.52 A conexo com o subscriber est OK. 9. Clique em OK para fechar o aviso. 10. Voc estar de volta janela Propriedades de vinculao de dados. Clique em OK para concluir as configuraes. 11. Voc estar de volta janela Publisher Properites. Obseve que agora j aparece na lista o sub- scriber ExReplicao (o qual est associado ao Banco de Dados C:\livrosql\ExReplicacao.mdb), conforme indicado na Figura 8.53: 8. Para verificar se as configuraes esto OK e o SQL server consegue se comunicar com o Banco de Dados do Access, d um clique no boto Testar conexo. Se estiver tudo OK, ser exibida a janela indicada na Figura 8.52: Figura 8.53 O subscriber do Access j aparece na lista. 12. Clique no boto de reticncias ..., ao lado de ExReplicao e certifique-se de que o nome do usurio esteja como Admin e senha em branco, conforme indicado na Figura 8.54. Esta proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5140000Curso Completo Figura 8.54 Confirmando usurio e senha. 13. Voc estar de volta ao SQL Server Management Studio e o subscriber do ExReplicao j estar habilitado para ser um subscriber. Com isso j vencemos as etapas 1 e 2 do nosso exerccio. Agora s faltam as etapas 3 e 4, as quais repito a seguir: Procedimento 3: Criar uma subscrio do Banco de Dados do Microsoft Access, para a publicao Minha publicao da instncia SERVIDOR\SQL2005, do SQL Server. Procedimento 4: Verificar se os dados esto sendo realmente replicados. Vamos ento executar os procedimentos que esto faltando. Procedimento 3: Para criar uma Subscrio do tipo Push subscription, do Banco de Dados do Microsoft Access, para a publicao Minha Publicao, da instncia SERVIDOR\SQL2005 do SQL Server 2005, siga os passos indicados a seguir: 1. Se voc no estiver com o SQL Server Management Studio aberto, abra-o. 2. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005, para exibir as opes disponveis. confirmao necessria, porque s vezes o campo Login fica em branco e isso ir gerar um erro na hora de criar o subscriber. Clique em OK para fechar esta janela. Voc estar de volta janela Publisher Properties. Clique em OK para fech-la. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000515 3. Clique no sinal + ao lado da opo Replication, abaixo da instncia SERVIDOR\SQL2005, para exibir as opes disponveis. 4. Clique no sinal de + ao lado da opo Publications, para exibir as publicaes disponveis nesta instncia. No momento, deve estar disponvel somente a publicao Minha Publicao, criada anteriormente. 5. Clique com o boto direito do mouse na publicao Minha Publicao e, no menu de opes que exibido, clique em New Subscriptions. 6. Ser aberto o assistente para criao de novas subscries New Subscription Wizard. A primeira tela do assistente somente informativa. Clique em Next, para seguir para a prxima etapa do assistente. 7. Nesta etapa voc deve selecionar a publicao para a qual ser criada uma nova subscrio. Na lista publisher, j deve ter vindo selecionada a instncia SERVIDOR\SQL2005. Se no veio selecionada esta instncia, selecione-a. Na parte de baixo da janela sero exibidas as publicaes disponveis (no nosso exemplo somente ser exibida a publicao Minha Publicao, pois a nica disponvel). Clique na publicao Minha Publicao, para selecion-la. 8. Clique em Next, para seguir para a prxima etapa do assistente. 9. Nesta etapa voc ir definir se o assistente ir criar uma ou mais subscries do tipo Push subscriptions (onde os agentes de replicao rodam no distributor), ou se sero subscries do tipo Pull subscriptions (onde os agentes de replicao rodam nos subscribers). Usando o assistente voc pode criar vrias subscries, de uma s vez, mas todas do mesmo tipo, ou seja, ou todas Pull subscriptions ou todas Push subscriptions. Se voc precisar criar subscries de diferentes tipos, ter que rodar o assistente mais de uma vez. Certifique-se de que a opo (push subscrip- tions) esteja selecionada. Como o subscriber ser um Banco de Dados do Microsoft Access, vamos usar um subscrio do tipo Push Subscription, ou seja, os agentes vo rodar no distribu- tor (que ser o SQL Server 2005), empurrando (push = empurrar) os dados para as tabelas do Banco de Dados do Access. 10. Clique em Next, para seguir para a prxima etapa do assistente. 11. Nesta etapa voc pode adicionar uma ou mais instncias do SQL Server 2005, as quais sero subscribers da publicao Minha Publicao. Observe que, na lista de possveis subscribers, j aparece o subscriber ExReplicao, que justamente o subscriber que configuramos na Etapa 2. Este subscriber est associado ao arquivo C:\livrosql\ExReplicacao.mdb. Selecione o sub- scriber ExReplicacao. Sua janela deve estar conforme indicado na Figura 8.55. A replicao ser feita com o Banco de Dados ExReplicacao.mdb, e cada artigo da pubilcao ser uma tabela no Banco de Dados de destino. 12 . Clique em Next, para seguir para a prxima etapa do assistente. 13. Nesta etapa voc ir definir as configuraes de segurana (conta de conexo e opes de conexo), para cada agente de distribuio que for utilizado. No nosso exemplo, tem um nico agente de Distribuio, pois configuramos um nico subscriber. Se voc tivesse configurado vrios subscribers, seriam listados tantos agentes de distribuio quantos fossem os subscribers configurados. Clique no boto ..., para fazer as configuraes de segurana. Ser aberta a janela Distribution Agent Security. Informe a conta a ser utilizada e a respectiva senha, conforme indicado na Figura 8.56. No altere as demais opes. Clique em OK. Voc estar de volta ao assistente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5160000Curso Completo Figura 8.55 O subscriber ExReplicacao. Figura 8.56 Configuraes de segurana, para o agente de distribuio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000517 14. Clique em Next, para seguir para a prxima etapa do assistente. 15. Nesta etapa voc deve definir um agendamento para cada um dos subscribers que esto sendo configurados. Por exemplo, voc poderia definir uma replicao de duas em duas horas para subscribers remotos, porm ligados por links de alta velocidade, uma replicao de 15 em 15 minutos para subscribers da mesma rede local e uma replicao uma vez por dia, de madrugada, para subscribers remotos, ligados por links de WAN de baixa velocidade. No nosso exemplo, temos um nico subscriber. Vamos configurar uma replicao diariamente, de duas em duas horas. Clique na coluna Agent Schedule, abra a lista e seleicone a opo Define Schedule. 16. Ser aberta a janela para definio do agendamento, janela esta que voc j aprendeu a utilizar no captulo sobre jobs e agendamento de tarefas. Para definir uma replicao diria, de duas em duas horas, configure as opes indicadas na Figura 8.57 e clique em OK para criar o agendamento. Figura 8.57 Definindo o agendamento da replicao. 17. Voc estar de volta ao assistente para criao de novas subscries. Clique em Next, para seguir para a prxima etapa do assistente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5180000Curso Completo 18. Nesta etapa o assistente informa que cada subscrio tem que ser inicializada com uma replicao completa, do tipo Snapshot dos dados e do schema. Nesta etapa voc informa, para cada subscrio (no nosso exemplo uma nica subscrio), quando que este snapshot inicial deve ser criado. Voc tem a opo de cri-lo imediatamente opo Immediately na coluna Initial- ize When, ou no prximo agendamento opo At first synchronization. Por padro, vem selecionada a opo Immediately. Vamos manter esta opo selecionada. 19. Clique em Next, para seguir para a prxima etapa do assistente. 20. Nesta etapa voc pode marcar a opo Create the subscription(s) immediately, para que a subscrio seja criada imediatamente e tambm pode marcar a opo Generate a script, caso voc queira que seja criado um arquivo, contendo todos os comandos, necessrios para criar a subscrio, de acordo com as opes que voc selecionou no assistente. Este script pode ser til, por exemplo, para rapidamente recriar a subscrio, em caso de problemas. Voc pode gravar estes comandos em um arquivo de texto e, quando for necessrio recriar a publicao, s copiar estes comandos do arquivo de texto e execut-los na janela de execuo de comandos T-SQL. Marque as duas opes desta etapa. 21. D um clique no boto Next, seguindo para a prxima etapa do assistente. 22. Nesta etapa (que s exibida se voc marcar a opo para gerar o script, na etapa anterior), voc definie onde ser gravado o script, o nome do arquivo e as propriedades do arquivo. Selecione as opes indicadas na Figura 8.58: Figura 8.58 Configuraes do arquivo com os comandos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000519 23. Clique em Next, para seguir para a prxima etapa do assistente. 24. Ser exibida a tela final do assistente, onde apresentado um resumo de todas as opes selecionadas. Caso voc tenha que alterar alguma opo, s utilizar o boto Back. Clique em Finish para encerrar o assistente e criar a subscrio. 25. O SQL Server 2005 comear a criar a subscrio e exibir uma janela, indicando o progresso do trabalho. 26. Concludas as diversas etapas de criao da subscrio, clique em Close para fechar a janela New Subscription Wizard. Muito bem, a subscrio foi criada. A partir deste momento, o Banco de Dados C:\livrosql\ExReplicacao.mdb passar a receber os dados da publicao Minha Publicao, da instncia SERVIDOR\SQL2005. Esta replicao ser feita de duas em duas horas e os dados sero gravados no Banco de Dados ExReplicacao.mdb. Cada artigo da publicao ser uma tabela no Banco de Dados ExReplicacao.mdb. A seguir veremos como conferir se a subscrio foi realmente criada e vamos verificar se os dados esto sendo copiados para o Banco de Dados ExReplicacao.mdb. Antes, apenas a ttulo de curiosidade, coloco a seguir o script gerado pelo assistente (lembre que, em uma das etapas finais, marcamos a opo para gerar um arquivo com todos os comandos T-SQL, necessrios para criao da subscrio): ********************************************************************************************************* BEGIN: Script to be run at Publisher servidor\sql2005- use [AdventureWorks] exec sp_addsubscription @publication = NMinha Publicao, @subscriber = NExReplicacao, @destination_db = N(default destination), @subscription_type = NPush, @sync_type = Nautomatic, @article = Nall, @update_mode = Nread only exec sys.sp_addpushsubscription_agent @publication = NMinha Publicao, @subscriber = NExReplicacao, @subscriber_db = N(default destination), @job_login = NSERVIDOR\Administrador, @job_password = N, @subscriber_security_mode = 0, @subscriber_login = NAdmin, @frequency_type = 4, @frequency_interval = 1, @frequency_relative_interval = 0, @frequency_recurrence_factor = 1, @frequency_subday = 8, @frequency_subday_interval = 2, @active_start_time_of_day = 0, @active_end_time_of_day = 235900, @active_start_date = 20050512, @active_end_date = 99991231, @enabled_for_syncmgr = NFalse, @dts_package_location = NDistributor GO END: Script to be run at Publisher servidor\sql2005- ********************************************************************************************************* Muito bem. J criamos o Banco de Dados C:\livrosql\ExReplicacao.mdb Procedimento 1. Depois habilitamos um subscriber que aponta para este Banco de Dados, com o nome de ExReplicacao Procedimento 2. Na seqncia, criamos uma subscrio do tipo Push subscription para o subscriber ExReplicacao Procedimento 3. Agora vamos abrir o Banco de Dados C:\livrosql\ExReplicacao.mdb, para verificar se os dados foram realmente replicados. Procedimento 4: Para verificar se os dados foram realmente replicados, faa o seguinte: 1. Abra o Windows Explorer (Iniciar -> Programas -> Acessrios -> Windows Explorer) e navegue at a pasta C:\livrosql. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5200000Curso Completo 2. D um clique duplo no arquivo ExReplicacao.mdb para abri-lo no Microsoft Access. J devem aparecer as tabelas: Orders, Products e Customers. 3. Feche o Microsoft Access. Neste item podemos ver, na prtica, a possibilidade de replicar dados entre diferentes formatos. Esta possibilidade facilita a integrao de Bancos de Dados do SQL Server, com diversos outros formatos de Bancos de Dados. Esta uma funcionalidade de grande valor, principalmente para as empresas que trabalham com diferentes formatos de dados, e que precisam acessar estes dados de uma maneira consolidada. CONCLUSO Neste captulo aprendemos sobre os princpios bsicos de replicao com o SQL Server 2005. Iniciamos o captulo apresentando uma srie de conceitos sobre a replicao no SQL Server 2005. Aprendemos sobre a metfora Publisher -> subscriber utilizada no SQL Server. Tambm aprendemos que no meio do caminho existe um tal de distributor. Analisamos algumas situaes onde a replicao pode ser aplicada com sucesso. Tambm aprendemos sobre os diversos tipos de replicao existentes: Snapshot, Transaction e Merge. Uma vez apresentada a teoria, partimos para uma srie de exemplos prticos, os quais ilustram os conceitos apresentados. Iniciamos o nosso estudo prtico pela criao de uma publicao Minha Publicao. Utilizamos um assistente passo a passo para a criao de uma nova publicao. Vimos que uma publicao composta de um ou mais artigos. Um artigo pode ser uma tabela inteira, somente algumas colunas de uma tabela (filtro horizontal), ou somente as linhas que atendam determinados critrios (filtro vertical). Um artigo tambm pode ser uma view ou outros elementos, cuja execuo gere um conjunto de dados a ser replicado. Aps a criao da publicao, voc aprendeu a criar uma ou mais subscries para esta publicao. Mostrei como criar subscries do tipo Pull Subscriptions, onde o agente de replicao roda no sub- scriber, puxando os dados a partir do distributor. Tambm mostrei como criar uma subscrio do tipo Push Subscription, onde o agente de replicao executado no distributor, empurrando os dados para um ou mais subscribers. O assunto Replicao bastante extenso. Sem nenhuma dvida, daria para escrever um livro inteiro, com 500 ou 600 pginas, s sobre Replicao no SQL Server 2005. A Microsoft fez um bom trabalho de documentao, especialmente neste tpico de Replicao. A parte sobre Replicao, no Books Online, est realmente muito boa. Com os fundamentos apresentados neste captulo, voc ter condies de acompanhar, sem problemas, a documentao sobre Replicao do Books Online. Para acessar esta documentao, abra o Books Online: Iniciar -> Programas -> Microsoft SQL Server 2005 -> Books Online. Clique no sinal de + ao lado de SQL Server Books Online. Dentre as opes que so exibidas, clique no sinal de + ao lado de Replication. Voc ter acesso a centenas de pginas, com excelentes informaes sobre a Replicao no SQL Server 2005. No site http://www.microsoft.com/sql, voc tambm proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 8 REPLICAO: CONCEITO, IMPLEMENTAO E MANUTENO Curso Completo0000521 encontra artigos detalhados e sempre atualizados sobre a Replicao e sobre as demais funcionalidades do SQL Server 2005. um site de visita obrigatria para quem trabalha com o SQL Server 2005 ou com as verses anteriores do SQL Server. Muto bem, a partir do prximo captulo, comearei a tratar de assuntos relacionados com o desenvolvimento de aplicaes que utilizam o SQL Server 2005 como Banco de Dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Captulo 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5240000Curso Completo N O T A INTRODUO Neste captulo aprenderemos tpicos relacionados ao desenvolvimento de aplicaes no SQL Server 2005. Tratarei de elementos que so criados em um Banco de Dados do SQL Server 2005 e podem ser acessados por aplicaes desenvolvidas em Visual Basic, Delphi, ASP, ASP.NET, etc. Iniciaremos o captulo falando sobre integridade de dados. No Captulo 1 apresentei os conceitos de chave primria, Chave Estrangeira, relacionamentos e tipos de relacionamentos e integridade referencial. No SQL Server 2005, a integridade de dados configurada atravs do uso de constraints, rules, stored procedures e defaults. Aprenderemos sobre os tipos de constraints existentes e tambm aprenderemos a criar os diversos tipos de constraints que do suporte integridade de dados no SQL Server 2005. Aps implementada a integridade de dados, vamos testar o funcionamento, atravs de tentativas de inseres e alteraes que no respeitem as regras impostas, para verificar se o SQL Server ir aplicar as regras que ns definimos. Para implement-la, iremos fazer uma cpia do Banco de Dados Pubs. Chamaremos a cpia de PubsIntF. Ao efetuarmos a cpia, iremos copiar apenas as tabelas e views, sendo que no copiaremos as diversas constraints j existentes neste Banco de Dados. Depois passaremos a implementar a integridade de dados na cpia PubsIntF. O banco de dados Pubs no fornecido com o SQL Server 2005. Ele era um banco de dados de exemplos, que era instalado com o SQL Server 2000. Vamos importar o banco de dados Pubs de uma instncia do SQL Server 2000 para a instncia SERVIDOR\SQL2005, do SQL Server 2005. Uma vez implementada a integridade de dados atravs de constraints, aprenderemos a criar views. Uma view nada mais do que uma consulta, a qual pode ser baseada em um ou mais critrios e pode acessar dados de uma ou mais tabelas. Com a utilizao de views, podemos criar listagens consolidadas dos dados. Por exemplo, em um Banco de Dados de vendas, corretamente modelado, de acordo com as regras do Modelo Relacional de Dados, as informaes sobre o cabealho do pedido esto na tabela Pedidos e as informaes sobre os itens de cada pedido esto na tabela Detalhes do pedido. Podemos utilizar uma view, por exemplo, para obter uma listagem com o nmero do pedido, a data de envio, o nome do cliente e o valor total, o qual calculado atravs da soma dos itens individuais de cada pedido. Observe que, neste caso, estamos acessando dados das tabelas Pedidos e Detalhes do Pedido. Isto possvel de ser feito atravs da utilizao de uma view. Alm disso devemos ter definido um relacionamento do tipo um para vrios entre a tabela Pedidos (lado Um no campo NmeroDoPedido) e a tabela Detalhes do Pedido (lado Vrios no campo NmeroDoPedido), ou seja, um pedido pode conter vrios itens ou utilizar uma clusula Join no comando T-SQL que define a view. No final do captulo aprenderemos a definir permisses de acesso a views e testaremos as permisses. Para acompanhar os tpicos apresentados neste captulo, o amigo leitor deve ter um bom entendimento dos conceitos de: chave primria, Relacionamentos, tipos de relacionamentos, chave estrangeira, normalizao e noes bsicas da linguagem T-SQL. Estes conceitos foram apresentados no Captulo 1. Caso voc tenha dvida em algum destes conceitos, revise o Captulo 1 antes de iniciar o estudo dos tpicos deste captulo. Voc tambm deve ter acesso a uma instncia do SQL Server 2000, para poder importar o banco de dados Pubs. Caso voc no tenha acesso a uma instncia do banco de dados Pubs, utilize qualquer outro banco de dados disponvel. No exemplo, altere as referncias ao banco de dados Pubs, por referncias ao banco de dados que voc est utilizando. O mesmo deve ser feito em relao s tabelas e campos referenciados nos exemplos, os quais devero ser substitudos pelos nomes de tabelas e campos do banco de dados que voc estiver utilizando. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000525 KNOW-HOW EM: IMPORTANDO O BANCO DE DADOS PUBS, DE UMA INSTNCIA DO SQL SERVER 2000 PR-REQUISITOS Fundamentos apresentados na Parte I. METODOLOGIA Utilizao do DTS Import/Export Wizard, apresentada nos captulos anteriores. Neste tpico, mostrarei, passo a passo, como usar o DTS Import/Export Wizard, para importar o banco de dados Pubs, de uma instncia do SQL Server 2000, para a instncia SERVIDOR\SQL2005, do SQL Server 2005. Exemplo prtico: Para importar o banco de dados Pubs, de uma instncia do SQL Server 2000 para a instncia SERVIDOR\SQL2005, do SQL Server 2005, siga os passos indicados a seguir: 1. Faa o logon com uma conta de administrador, no servidor onde est instalada a instncia SERVIDOR\SQL2005. 2. Abra o assistente de Importao/Exportao: Iniciar -> Programas -> Microsoft SQL Server 2004 -> DTS Import and Export Wizard. 3. Ser aberto o assistente de importao e exportao de dados. 4. A primeira tela do assistente apenas informativa. Clique em Next, para seguir para a prxima etapa do assistente. 5. Nesta etapa voc deve informar a fonte dos dados, ou seja, de onde sero copiados os dados. No meu exemplo, irei copiar os dados da instncia padro do SQL Server 2000, instalada em um servidor chamado microxp-01. No campo Server name, digite microxp-01 e pressione Tab. Aguarde alguns instantes at que o assistente conecte com o servidor microxp-01 e consiga trazer a lista de tabelas da instncia padro. Aps aguardar alguns instantes, abra a lista Data- base e selecione o banco de dados Pubs. 6. Clique em Next, para seguir para a prxima etapa do assistente. 7. Nesta etapa voc deve informar o destino dos dados. O nosso objetivo copiar o banco de dados Pubs, de uma instncia do SQL Server 2000 para a instncia SERVIDOR\SQL2005. Ou seja, o destino um banco de dados do SQL Server 2005, na instncia SERVIDOR\SQL2005. Selecione as opes indicadas na Figura 9.1. 8. J definimos para qual instncia o banco de dados Pubs ser importado. Agora temos que definir o nome do banco de dados. Poderamos importar os objetos do banco de dados Pubs para dentro de um banco de dados j existente. Para isso, bastaria selecionar o banco de dados na lista Database. No nosso exemplo, queremos criar um novo banco de dados, que ser chamado Pubs e, dentro deste novo banco de dados, importar todos os objetos do banco de dados Pubs, de uma instncia do SQL Server 2000. D um clique no boto New. Ser exibida a janela Create Database. Defina as configuraes indicadas na Figura 9.2. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5260000Curso Completo Figura 9.1 Definindo o destino dos dados. Figura 9.2 Criando um novo banco de dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000527 9. D um clique em OK. Voc estar de volta ao assistente de importao, com o banco de dados Pubs j selecionado, na lista Database. 10. Clique em Next, para seguir para a prxima etapa do assistente. 11. Nesta etapa marque a opo Copy data from one or more tables or views e clique em Next, para seguir para a prxima etapa do assistente. 12. Clique em Next, para seguir para a prxima etapa do assistente. 13. Nesta etapa ser exibida a lista de todos os objetos do banco de dados Pubs, os quais podem ser importados. Clique no boto Select All, para selecionar todos os objetos. 14. Clique em Next, para seguir para a prxima etapa do assistente. 15. Nesta etapa, certifique-se de que a opo Run immediately esteja selecionada e clique em Next, para seguir para a prxima etapa do assistente. Figura 9.3 Confirmando a importao do banco de dados Pubs. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5280000Curso Completo 16. Ser exibida a tela final do assistente, com um resumo das opes selecionadas. Caso voc precise alterar alguma opo s clicar em Back, para voltar para as etapas anteriores. Clique em Finish para iniciar a importao dos dados. 17. O assistente inicia a importao e, uma vez concluda, o boto Close ser habilitado. Clique em Close para encerrar o assistente. 18. Pronto, o banco de dados Pubs foi importado para a nossa instncia SERVIDOR\SQL2005. Agora poderemos utilizar este banco de dados em nossos exemplos, deste captulo. Voc pode abrir o SQL Server Management Studio e navegar at a opo Databases, da instncia SERVIDOR\SQL2005, para confirmar que o banco de dados Pubs e seus objetos foram realmente importados, conforme indicado na Figura 9.3. KNOW-HOW EM: IMPLEMENTAO DE INTEGRIDADE DOS DADOS NO SQL SERVER 2005 PR-REQUISITOS Fundamentos apresentados na Parte I. METODOLOGIA Apresentao terica sobre a implementao da integridade dos dados no SQL Server 2005. Apresentao dos tipos de integridade existentes no SQL Server 2005. Implementar a integridade de dados, na prtica, significa evitar que os dados de um Banco de Dados estejam em um estado inconsistente. Um exemplo de dados em um estado inconsistente termos itens de um pedido, na tabela Detalhes do pedido, porm o cabealho do pedido no existe na tabela Pedidos. Outro tipo de problema que temos que evitar a entrada de valores fora da faixa permitida em uma coluna. Por exemplo, se tivermos um campo Oramento, em uma tabela Projetos, podemos fazer com que este campo aceite um valor mximo, digamos de R$ 25.000. Se for digitado um valor superior a R$25.000, o SQL Server 2005 no deve aceitar e o registro no deve ser gravado. Neste item, voc aprender a definir diversos elementos que ajudam a manter a integridade e a confiabilidade dos dados, no SQL Server 2005. Conforme descrito na introduo deste captulo, iniciaremos fazendo uma cpia do Banco de Dados Pubs (o qual foi importado no exemplo do item anterior), da instncia SERVIDOR\SQL2005. Os exemplos sero feitos na cpia do banco de dados Pubs. Criaremos esta cpia em um Banco de Dados chamado PubsIntF, o qual ser criado neste item. Exemplo prtico: Criar o Banco de Dados PubsIntF, na instncia SERVIDOR\SQL2005, e copiar as tabelas e views do Banco de Dados Pubs para o BANCO DE DADOS PubsIntF, o qual deve ser criado conforme indicado na Tabela 9.1. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000529 N O T A Arquivo Definies Primrio C:\livrosql\PubsIntF\PubsIntF-prim.mdf. Crescimento automtico habilitado. Tamanho inicial: 10 MB. Crescimento em incrementos de 10%. Tamanho mximo de 20 MB. Secundrio C:\livrosql\PubsIntF\PubsIntF-sec.ndf. Crescimento automtico habilitado. Tamanho inicial: 10 MB. Crescimento em incrementos de 10%. Tamanho mximo de 20 MB. Arquivo de log C:\livrosql\PubsIntF\PubsIntF-log1.ldf. Crescimento automtico habilitado. Tamanho inicial: 10 MB. Crescimento em incrementos de 10%. Tamanho mximo de 20 MB. Arquivo de log C:\livrosql\PubsIntF\PubsIntF-log2.ldf. Crescimento automtico habilitado. Tamanho inicial: 10 MB. Crescimento em incrementos de 10%. Tamanho mximo de 20 MB. Tabela 9.1 O Banco de Dados PubsIntF. Vamos dividir o nosso exerccio em dois procedimentos. Antes de criar o Banco de Dados PubsIntF, a pasta C:\livrosql\PubsIntF j deve ter sido criada, caso contrrio ser gerada uma mensagem de erro. Crie esta pasta. Procedimento 1: Para criar o Banco de Dados PubsIntF, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio. 2. Na janela Object Explorer, clique com o boto direito do mouse na instncia SERVIDOR\SQL2005 e, no menu de opes que exibido, clique em New Query. Ser aberta a janela de execuo de comandos T-SQL. 3. Digite o seguinte conjunto de comandos: CREATE DATABASE PubsIntF ON ************************* Definio do Arquivo Primrio ************************* (NAME= PubsIntF_prim, FILENAME = C:\livrosql\PubsIntF\PubsIntF-prim.mdf , SIZE= 10MB, proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5300000Curso Completo MAXSIZE= 20MB, FILEGROWTH = 10%), *************************** Definio do Arquivo Secundrio *************************** (NAME= PubsIntF_sec, FILENAME = C:\livrosql\PubsIntF\PubsIntF-sec.ndf , SIZE= 10MB, MAXSIZE= 20MB, FILEGROWTH = 10%) ************************* Definio dos Arquivos de Log ************************* LOG ON (NAME= PubsIntF_log1, FILENAME = C:\livrosql\PubsIntF\PubsIntF-log1.ldf , SIZE= 10MB, MAXSIZE= 20MB, FILEGROWTH = 10%), ************************* Segundo arquivo de log ************************* (NAME= PubsIntF_log2, FILENAME = C:\livrosql\PubsIntF\PubsIntF-log2.ldf , SIZE= 10MB, MAXSIZE= 20MB, FILEGROWTH = 10%) *************************************** Final do comando de criao do Banco de Dados *************************************** Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, o Banco de Dados PubsIntF ter sido criado e a seguinte mensagem ser: Command(s) completed successfully. Com isso o nosso Banco de Dados PubsIntF foi criado, na instncia SERVIDOR\SQL2005. 4. Feche a janela de execuo de comandos T-SQL. Agora vamos ao segundo procedimento, onde iremos copiar as tabelas e dados do Banco de Dados Pubs da instncia SERVIDOR\SQL2005, para o Banco de Dados PubsIntF, desta mesma instncia, criado no Procedimento 1. Procedimento 2: Para copiar as tabelas e views do Banco de Dados Pubs da instncia SERVIDOR\SQL2005, para o Banco de Dados PubsIntF, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000531 2. Navegue at o banco de dados Pubs, da instncia SERVIDOR\SQL2005. 3. D um clique com o boto direito do mouse no Banco de Dados Pubs. No menu de opes que surge, selecione o comando Tasks -> Export Data. Ser iniciado o assistente DTS Import/Export Wizard. Na tela inicial exibida uma mensagem com um resumo das funcionalidades do assistente. 4. D um clique no boto Next para ir para a prxima etapa do assistente. 5. Nesta etapa definimos a origem dos dados. Como abrimos o assistente clicando com o boto direito do mouse no Banco de Dados Pubs e selecionando o comando Tasks -> Export Data, o Banco de Dados Pubs j vem definido como origem dos dados a serem exportados. 6. D um clique no boto Next, seguindo para a prxima etapa do assistente. 7. Nesta etapa, devemos definir o destino dos dados. No nosso caso o destino o Banco de Dados PubsIntF, da instncia SERVIDOR\SQL2005. Na lista Server selecione SERVIDOR\SQL2005, e na lista Database selecione PubsIntF, conforme indicado na Figura 9.4: Figura 9.4 Definindo o destino dos dados. 8. D um clique no boto Next para ir para a prxima etapa do assistente. 9. Nesta etapa, certifique-se de que a opo Copy data from one or more tables or views esteja selecionada, e clique em Next, para seguir para a prxima etapa do assistente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5320000Curso Completo 10. Nesta etapa podemos selecionar quais tabelas e views sero copiadas para o Banco de Dados de destino. D um clique no boto Select All, para copiar todas as tabelas e views, e depois clique em Next, para seguir para a prxima etapa do assistente. 11. Nesta etapa podemos definir um agendamento, para que a cpia seja efetuada em perodos determinados. No o nosso caso, somente queremos que a cpia seja efetuada uma vez. Certifique-se de que a opo Run immediately esteja selecionada e que as demais opes estejam desmarcadas. D um clique no boto Next, seguindo para a prxima etapa do assistente. Voc estar na tela final do assistente. Um resumo das opes selecionadas apresentado nesta tela. Caso voc queira alterar alguma opo, utilize o boto Back. 12. D um clique no boto Finish. exibida uma tela com o progresso da cpia dos diversos objetos tabelas e views. 13. No final, exibida uma mensagem indicando que a cpia foi efetuada com sucesso. D um clique em Close para fechar esta mensagem. Voc estar de volta ao SQL Server Management Studio; e todas as tabelas e views do Banco de Dados Pubs foram copiadas para o PubsIntF. 14. Feche o SQL Server Management Studio. Agora que j preparamos o Banco de Dados PubsIntF, vamos aprender a criar diversos elementos que garantem a integridade e consistncia dos dados, neste Banco de Dados. OS TIPOS DE INTEGRIDADE DE DADOS EXISTENTES NO SQL SERVER 2005 Garantir a integridade dos dados significa termos dados confiveis armazenados no Banco de Dados, em resumo, dados de qualidade. No Books OnLine, encontramos a seguinte definio de integridade de dados: Integridade dos dados um estado no qual todos os dados armazenados no Banco de Dados esto corretos. Se valores incorretos foram armazenados no Banco de Dados, dizemos que o banco de dados perdeu a integridade dos dados. Por exemplo, no devemos permitir que sejam inseridos dois pedidos com o mesmo nmero de pedido ou dois funcionrios com o mesmo nmero de matrcula. Tambm no devemos aceitar que sejam cadastrados produtos para uma categoria de produtos que no existe na tabela Categorias. Outro exemplo de dado incorreto um dado que est fora de uma faixa permitida. Por exemplo, a entrada de um valor 1.000.000.000 em um campo valor da hora extra. Para garantir que estes tipos de incorrees no aconteam que o SQL Server 2005 disponibiliza uma srie de elementos que nos ajudam a garantir a integridade dos dados. No SQL Server 2005, temos os seguintes tipos de integridade de dados: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000533 Integridade de Domnio (Domain Integrity): Este tipo de integridade tambm conhecido como integridade de Coluna e define o conjunto ou faixa de valores que so aceitveis para um determinado campo de uma tabela. Temos vrios mecanismos para impor este tipo de integridade. Por exemplo, ao definirmos o tipo de um campo como sendo numrico, j estamos impedindo que sejam digitados valores de texto neste campo. O tipo de campo integer, double, etc. tambm define uma faixa de valores aceitveis. Tambm podemos utilizar con- straints para impor integridade de domnio. Podemos definir uma constraint que somente aceita, os valores 1, 2 ou 3 em um determinado campo. O conceito de constraint semelhante ao conceito de regra de validao, o qual utilizado no Microsoft Access. Integridade de Entidade (Entity Integrity): Este tipo de integridade est relacionado com a definio de uma chave primria para a tabela. Lembrando que um campo do tipo chave primria no pode conter valores repetidos. Por exemplo, se definimos o campo CPF como sendo a chave primria da tabela Clientes, no podemos cadastrar dois clientes com o mesmo nmero de CPF, isto , no podemos ter valores repetidos neste campo. Integridade Referencial: Conforme explicamos no Captulo 1, a integridade referencial faz com que o SQL Server impea que algumas aes sejam executadas e fora a execuo de outras aes. Para clarear este conceito, vamos considerar o exemplo da Figura 9.5. Figura 9.5 Relao entre as tabelas Pedidos, Clientes e Detalhes do pedido. Temos dois relacionamentos. Um relacionamento do tipo Um para Vrios entre as tabelas Pedidos e Detalhes do pedido, ou seja, Um pedido pode conter Vrios itens. Temos um outro relacionamento do tipo Um para Vrios entre as tabelas Clientes e Pedidos, ou seja, um cliente pode fazer vrios pedidos. A integridade referencial pode evitar as seguintes situaes: Que sejam adicionados registros em uma tabela relacionada (lado Vrios), sem que tenha sido adicionado o registro relacionado na tabela primria (lado Um). No nosso exemplo, isto evita que sejam adicionados itens na tabela Detalhes do pedido, para um pedido que ainda no tenha sido cadastrado na tabela Pedidos. Ou que seja adicionado um pedido para um Cliente que ainda no foi cadastrado na tabela Clientes. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5340000Curso Completo Alterao de valores na tabela primria (lado Um), deixando registros rfos na tabela relacionada (lado Vrios). No nosso exemplo, ao alterarmos o nmero do pedido na tabela Pedidos, o campo NmeroDoPedido dos itens relacionados, na tabela Detalhes do pedido, ser tambm atualizado. Este mecanismo conhecido como Atualizao em Cascata, no Microsoft Access. Ou ao alterarmos o cdigo do cliente, na tabela Clientes, o respectivo cdigo tambm ser atualizado em todos os pedidos efetuados pelo cliente, na tabela Pedidos. Impedir que sejam excludos registros na tabela primria (lado Um), se existirem registros correspondentes na tabela relacionada (lado Vrios). Por exemplo, impedir que seja excludo um pedido na tabela Pedidos, para o qual ainda existam itens na tabela Detalhes do pedido. No Microsoft Access, existe um mecanismo chamado Excluso em Cascata. Quando este mecanismo ativado, se excluirmos o registro na tabela primria, todos os registros correspondentes, na tabela relacionada, sero tambm excludos. Uma outra caracterstica interessante que a integridade pode ser definida pelo usurio. O usurio pode definir regras personalizadas de integridade, em atendimento s necessidades de uma ou mais aplicaes. Por exemplo, podemos definir uma regra que impea funcionrios de uma determinada categoria de aprovarem parcelamentos acima de um determinado valor. Estas regras podem ser implementadas com o uso de constraints, stored procedures e triggers. Aprenderemos sobre constraints e triggers neste captulo e sobre stored procedures no prximo captulo. KNOW-HOW EM: CRIAO E TESTE DE CONSTRAINTS NO SQL SERVER 2005 PR-REQUISITOS Fundamentos apresentados na Parte I. Saber utilizar a janela de execuo de comandos T-SQL. Noes sobre integridade de dados e os tipos de integridade de dados existentes no SQL Server 2005. METODOLOGIA Apresentao do conceito de Constraint e dos procedimentos para a criao e teste de constraints. TCNICA Utilizao da janela de execuo de comandos T-SQL para a criao e teste de constraints. A utilizao de constraints, para garantir a integridade dos dados, o mtodo recomendado pela prpria Microsoft. Com a utilizao de constraints, a integridade dos dados garantida automaticamente. Podemos utilizar constraints para limitar os valores que podem ser inseridos em uma determinada coluna (integridade de domnio) e tambm para garantir o relacionamento entre tabelas (integridade referencial). Uma constraint que atua somente sobre uma coluna chamada de column Constraint, j uma constraint que atua sobre duas ou mais colunas; conhecida como table Constraint. Na Tabela 9.2, temos um resumo dos diversos tipos de constraints. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000535 N O T A Agora vamos a alguns exemplos prticos de criao dos diversos tipos de constraints. Podemos criar constraints no momento de criao de uma tabela, quando utilizamos o comando CREATE TABLE. Tambm podemos criar constraints em uma tabela j existente, utilizando o comando ALTER TABLE. constraints podem estar associadas com uma ou mais colunas. Considere os seguintes fatos: Uma constraint associada com uma nica coluna conhecida como column-level Constraint. Uma constraint associada com mltiplas colunas conhecida como table-level Constraint. DEFAULT constraints somente podem ser associadas com um nico campo, isto , so col- umn-level constraints. constraints no so definidas na tabela do Banco de Dados, isto , uma constraint no pode referenciar colunas de outras tabelas. Por exemplo, no podemos definir uma constraint para um campo da tabela Clientes, a qual acessa valores em outras tabelas. Podemos adicionar, alterar e excluir constraints, sem termos que excluir e recriar a tabela. Quando adicionamos uma constraint, o SQL Server 2005 verifica se os dados da tabela se enquadram na constraint que est sendo adicionada. Por exemplo, se tentarmos adicionar uma constraint do tipo UNIQUE, em um campo onde existem valores repetidos, a constraint no ser adicionada e uma mensagem de erro ser emitida. Ao criar uma constraint, devemos definir um nome para a constraint, pois caso contrrio o SQL Server 2005 ir gerar um nome. O problema que o nome gerado, automaticamente, pelo SQL Server 2005, no nada amistoso e, tampouco, indicativo da funo da constraint. Tipo Descrio DEFAULT Define um valor a ser atribudo a uma coluna, caso no tenha sido digitado nenhum valor para esta coluna. Por exemplo, se a maioria dos clientes da cidade de So Paulo, podemos definir um valor padro So Paulo para o campo Cidade. Com isso se no for especificado um valor diferente, o campo cidade conter o valor So Paulo, para cada novo registro que for criado na tabela Clientes. Este um tipo de Integridade de domnio. No Microsoft Access, esta propriedade chamada de Valor padro. CHECK Define uma regra de validao para o campo. Por exemplo, podemos definir que o campo Salrio no pode conter valores maiores do que R$ 7.000,00. Este um tipo de Integridade de domnio. No Microsoft Access, esta propriedade chamada de Regra de Validao. PRIMARY KEY Define um campo como sendo chave primria da tabela. No sero permitidos valores repetidos ou nulos (NULL), neste campo. Ao definirmos um campo como chave primria, criado um clustered index neste campo. FOREIGN KEY Define um campo como chave estrangeira. Lembrando que a chave estrangeira um campo ou conjunto de campos em uma tabela secundria, relacionados com uma chave primria em uma tabela primria. Por exemplo, o campo CdigoCliente, na tabela Pedidos, uma chave estrangeira, relacionada com o campo chave primria CdigoCliente, na tabela Clientes. UNIQUE No permite valores duplicados em um determinado campo, porm valores nulos so aceitos. Um ndice criado para melhorar o desempenho. A diferena entre a constraint UNIQUE e a PRIMARY KEY que a UNIQUE aceita valores nulos e a PRIMARY KEY no. Tabela 9.2 Tipos de constraints e utilizao de cada uma delas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5360000Curso Completo CRIANDO CONSTRAINTS COM COMANDOS T-SQL Para criar constraints com a janela de execuo de comandos T-SQL, utilizamos os comandos CREATE TABLE, caso estejamos definindo uma ou mais constraints no momento da criao da tabela. Para definirmos uma ou mais constraints, em uma tabela j existente, utilizamos o comando ALTER TABLE. Vamos revisar a sintaxe destes comandos, focando apenas nas opes para criao de constraints: Sintaxe para o comando CREATE TABLE: CREATE TABLE table_name ( { < column_definition > | Constraint constraint_name TIPO (coluna1, coluna2,..., coluna_n } [ ,...n ] ) Sintaxe para o comando ALTER TABLE, para excluir uma constraint existente: ALTER TABLE nome_tabela DROP CONSTRAINT nome_da_constraint Sintaxe para adicionar uma constraint: ALTER TABLE nome_tabela ADD CONSTRAINT nome_da_constraint TIPO FOR nome(s)_do(s)_campo(s) Vamos fazer alguns exemplos prticos para que possamos entender melhor a sintaxe e o funcionamento destes comandos. NOT NULL CONSTRAINT Este o tipo mais simples de constraint. Ele evita que sejam aceitos valores nulos em um determinado campo. Exemplo: No exemplo a seguir, criamos uma tabela chamada Clientes, onde os campos Nome, CPF e Endereo no podem conter valores nulos. CREATE TABLE Clientes ( CPF char(14) NOT NULL, Nome char(50) NOT NULL, Endereo char(50) NOT NULL, Fone char(20), Cidade char(20), e_mail char(50), Empresa char(50) ) Se tentarmos inserir um registro, onde temos um valor NULL para um dos campos CPF, Nome ou Endereo , o SQL Server 2005 no insere o registro e emite uma mensagem de erro. Por exemplo, vamos utilizar o seguinte comando: INSERT INTO Clientes (CPF,Nome,Endereo,fone,cidade,e_mail,empresa) VALUES (111.111.111-11, Jos da Silva, NULL, 2222222,Santa Maria,,) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000537 Este comando tenta inserir um registro na tabela Clientes. Porm estamos definindo um valor NULL para o campo Endereo, o que no permitido. Ao tentarmos executar este comando, ser emitida a seguinte mensagem de erro: Server: Msg 515, Level 16, State 2, Line 1 Cannot insert the value NULL into column Endereo, table PubsIntF.dbo.Clientes; column does not allow nulls. INSERT fails. The statement has been terminated. DEFAULT CONSTRAINTS Uma constraint do tipo DEFAULT associada com uma nica coluna. Quando inserimos um registro, se no for fornecido um valor para uma determinada coluna, e esta coluna no tiver uma constraint DE- FAULT associada, ser atribudo o valor NULL para o campo associado coluna. Caso tenha sido definida uma constraint NOT NULL para a coluna, a insero do registro falha e uma mensagem de erro ser exibida. Quando definimos uma constraint do tipo DEFAULT, estamos especificando qual valor ser definido para uma determinada coluna, em caso de no ter sido definido, explicitamente, um valor para a coluna. Por exemplo, podemos definir como valor padro para a coluna cidade o valor SO PAULO. Sempre que for inserido um registro, sem que tenha sido definido um valor para a coluna Cidade, a coluna assumir o valor SO PAULO, ao invs de NULL. Conforme descrevemos anteriormente, este mecanismo chamado de Valor padro, no Microsoft Access. DEFAUTL Constraint um tipo de integridade de domnio. No podemos definir DEFAULT constraints para colunas que contenham o seguinte tipo de dados: timestamp IDENTITY ROWGUIDCOL Os valores para este tipo de coluna so gerados automaticamente pelo SQL Server 2005. DEFAULT constraints so aplicadas quando utilizamos um comando INSERT. No so aplicadas para comandos UPDATE. Podemos utilizar funes internas do SQL Server 2005 para definir o valor de uma DEFAULT Constraint. Por exemplo, se quisermos que o valor DEFAULT de um campo data seja a data do sistema, poderamos utilizar a funo GETDATE. Vamos a alguns exemplos. Vamos adicionar uma DEFAULT Constraint associada com a coluna Cidade da tabela Clientes, criada nos exemplos do item anterior. Definiremos So Paulo como valor padro para a coluna Cidade. Para definir a constraint podemos executar o seguinte comando: ALTER TABLE dbo.Clientes ADD CONSTRAINT DefCidade DEFAULT So Paulo FOR Cidade Agora vamos inserir um registro onde no fornecido o valor para o campo Cidade: INSERT INTO dbo.Clientes (CPF,Nome,Endereo,fone) VALUES (222.222.222-22, Jos da Silva, Rua abc - 20, 2222222) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5380000Curso Completo No informamos um valor para o campo Cidade. Como existe uma DEFAUTL Constraint definida para este campo, ele assume o valor So Paulo, que o valor definido na constraint. Como ns gostamos de ver para crer, vamos dar um SELECT na tabela clientes, para conferir. Conferindo o funcionamento da constraint DefCidade: CPF Nome Endereo Fone Cidade e-mail Empresa 222.222.222-22 Jos da Silva Rua abc - 20 2222222 So Paulo NULL NULL Observe que para os campos e-mail e Empresa, para os quais no foram informados valores e tambm no existe DEFAUTL Constraint, foi definido como valor NULL. Utilizamos os comandos sp_helpconstraint nome_da_tabela e sp_help nome_da_constraint para obter informaes a respeito de uma constraint. Considere os exemplos. Obtendo informaes sobre constraints na tabela Clientes: exec sp_helpconstraint Clientes Obtendo informaes sobre a constraint DefCidade: exec sp_help DefCidade Na Figura 9.6, temos o resultado da execuo deste comando. Figura 9.6 Resultado do comando exec sp_help DefCidade. CHECK CONSTRAINTS Uma CHECK Constraint permite que seja definido um conjunto ou uma faixa de valores aceitveis para um determinado campo. Por exemplo, podemos definir que o campo Cidade somente deve aceitar os valores So Paulo, Rio de Janeiro e Belo Horizonte. Ou podemos definir uma faixa de valores; por exemplo, uma coluna Salrio deve estar na faixa de 1000 a 5000. Este mecanismo conhecido como Regra de Validao no Microsoft Access. Considere o seguinte sobre CHECK constraints: feita uma verificao dos dados toda vez que executamos um comando INSERT ou um comando UPDATE. A definio da constraint pode referenciar outras colunas na mesma tabela, porm no pode referenciar colunas de outras tabelas. No podemos definir CHECK constraints para colunas que contenham o seguinte tipo de dados: timestamp proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000539 IDENTITY unique-identifier No pode conter subconsultas. Para exemplificar o uso de CHECK constraints, vamos adicionar uma coluna financiamento, do tipo float, a nossa tabela Clientes. Depois vamos criar duas constraints do tipo CHECK. Uma que define que o financiamento deva estar na faixa de entre 1000 e 5000 reais e outra que defina que o campo Bairro somente pode ser Centro, Itarar ou Camobi. Para adicionar o campo Financiamento, utilizamos o seguinte comando: ALTER TABLE Clientes ADD Financiamento Float Para definir que o campo Financiamento deve ser maior ou igual a 1000 e menor ou igual a 5000, utilizamos o seguinte comando: ALTER TABLE Clientes ADD CONSTRAINT FaixaFinanciamento CHECK (Financiamento>=1000 AND Financiamento<= 5000) Vamos testar esta constraint. Tentaremos inserir um registro, onde o financiamento maior do que 5000. Tentaremos executar o seguinte comando: INSERT INTO Clientes (CPF,Nome,Endereo,fone,cidade,e_mail,empresa,financiamento) VALUES (666.333.333-33, Para Pedro, XYZ, 2222222,Santa Maria,,,7000) Este comando no ser executado e a seguinte mensagem de erro ser exibida: Msg 547, Level 16, State 0, Line 1 INSERT statement conflicted with CHECK constraint FaixaFinanciamento. The conflict occurred in database PubsIntF, table Clientes, column Financiamento. The statement has been terminated. Agora vamos alterar o nosso comando, reduzindo o financiamento a 3000,00. Com isso, o comando ser executado com sucesso: INSERT INTO Clientes (CPF,Nome,Endereo,fone,cidade,e_mail,empresa,financiamento) VALUES (333.333.333-33, Para Pedro, XYZ, 2222222,Santa Maria,,,3000) Vamos adicionar um campo chamado Bairro e depois vamos definir um conjunto de valores possveis para este campo. Para adicionar o campo Bairro, utilizamos o seguinte comando: ALTER TABLE Clientes ADD Bairro Char(25) Para definir que o campo Bairro somente deve aceitar os valores Centro, Itarar e Camobi, utilizamos o seguinte comando: ALTER TABLE Clientes ADD CONSTRAINT ValoresBairro CHECK (Bairro=Centro or Bairro=Itarar or Bairro=Camobi) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5400000Curso Completo Vamos testar esta constraint. Tentaremos inserir um registro, onde o bairro igual a Urlndia. Tentaremos executar o seguinte comando: INSERT INTO Clientes (CPF,Nome,Endereo,fone,cidade,e_mail,empresa,financiamento,bairro) VALUES (444.444.444-44, Pedro Para, KKK, 2222222,Santa Maria,,,2300,Urlndia) Este comando no ser executado e a seguinte mensagem de erro ser exibida: Msg 547, Level 16, State 0, Line 1 INSERT statement conflicted with CHECK constraint ValoresBairro. The conflict occurred in database PubsIntF, table Clientes, column Bairro. The statement has been terminated. Agora vamos alterar o nosso comando, alterando o bairro para Centro, que um dos valores permitidos pela constraint. O seguinte comando ser executado com sucesso: INSERT INTO Clientes (CPF,Nome,Endereo,fone,cidade,e_mail,empresa,financiamento,bairro) VALUES (444.444.444-44, Pedro Para, KKK, 2222222,Santa Maria,,,2300,Centro) Podemos construir CHECK constraints mais elaboradas. Por exemplo, podemos construir uma que somente aceite o CPF se este for digitado no formato nnn.nnn.nnn-nn, onde n um nmero entre 0 e 9. Vamos a um exemplo. Definir uma constraint que fora o CPF a ser digitado no formato nnn.nnn.nnn-nn; caso contrrio, o registro no ser aceito. Podemos utilizar o seguinte comando: ALTER TABLE Clientes ADD CONSTRAINT FormatCPF CHECK (CPF like [0-9][0-9][0-9].[0-9][0-9][0-9].[0-9][0-9][0-9]-[0-9][0-9]) Vamos tentar inserir um registro em que o CPF no atende a regra definida na constraint FormatCPF. Iremos trocar o tracinho por um ponto. Tente executar o seguinte comando: INSERT INTO Clientes (CPF,Nome,Endereo,fone,cidade,e_mail,empresa,financiamento,bairro) VALUES (555.555.555.55, Maria Silva, POP, 4445566,Santa Maria,,,2300,Centro) O comando no ser executado e a seguinte mensagem de erro ser emitida: Msg 547, Level 16, State 0, Line 1 INSERT statement conflicted with CHECK constraint FormatCPF. The conflict occurred in database PubsIntF, table Clientes, column CPF. The statement has been terminated. Tambm podemos utilizar os comandos sp_helpconstraint nome_tabela e sp_help nome_da_constraint para obter informaes sobre uma CHECK Constraint. PRIMARY KEY CONSTRAINTS Este tipo de constraint utilizado para definir qual campo ou campos formam a chave primria de uma tabela. Este campo no poder conter valores repetidos ou NULL. O valor da chave primria, identifica de maneira nica cada registro de uma tabela, conforme j descrevemos no Captulo 1, onde falei sobre o Modelo Relacional de Dados. Ao definirmos uma chave primria automaticamente criado um ndice associado ao campo chave primria. Por padro, criado um clustered index, desde proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000541 que ainda no exista um na tabela, uma vez que cada tabela somente pode conter um clustered index. Tambm podemos definir que seja criado um nonclustered index. Lembrando que PRIMARY KEY um tipo de Entity integrity, conforme j descrito anteriormente. Somente podemos ter uma chave primria em cada tabela. Os valores da chave primria devem ser nicos e no so permitidos valores NULL. Podemos definir um campo como sendo chave primria, no momento da criao da tabela, como no exemplo a seguir, onde criamos a tabela Pedidos e definimos o campo NmeroPedido, como sendo a chave primria da tabela: CREATE TABLE Pedidos ( NmeroPedido char(14) PRIMARY KEY, CPF char(14) NOT NULL, DataPedido datetime NOT NULL, DataEnvio datetime NOT NULL, MatrFunc char(20), CNPJ char(20), Empresa char(50) ) O mtodo utilizado neste exemplo no o mais adequado, pois no atribumos um nome a esta chave primria, o que faz com que o SQL Server 2005 atribua, automaticamente, um nome nada intuitivo. O ideal que, ao criar a chave primria, tambm seja definido um nome para a chave. Vamos excluir a tabela Pedidos e cri-la novamente, agora definindo um nome para a chave primria. Para isso utilizamos o seguinte comando: DROP TABLE Pedidos GO CREATE TABLE Pedidos ( NmeroPedido char(14) CONSTRAINT Num_Ped PRIMARY KEY, CPF char(14) NOT NULL, DataPedido datetime NOT NULL, DataEnvio datetime NOT NULL, MatrFunc char(20), CNPJ char(20), Empresa char(50) ) Tambm podemos definir uma chave primria em uma tabela j existente, desde que esta tabela ainda no tenha uma chave primria, j definida. Para isto, utilizamos o comando ALTER TABLE. No exemplo a seguir, utilizaremos este comando para definir o campo CPF da tabela Clientes como sendo a chave primria: ALTER TABLE Clientes ADD CONSTRAINT PrimCPF PRIMARY KEY CLUSTERED(CPF) Se voc tentar definir um campo como chave primria e j existir uma chave primria definida na tabela, a seguinte mensagem de erro ser exibida: Server: Msg 1779, Level 16, State 1, Line 1 Table Clientes already has a primary key defined on it. Server: Msg 1750, Level 16, State 1, Line 1 Could not create Constraint. See previous errors. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5420000Curso Completo N O T A UNIQUE CONSTRAINTS Ao definirmos uma UNIQUE Constraint em uma coluna, estamos garantindo que no existam valores repetidos para esta coluna. Porm a coluna pode aceitar valores NULL, sendo esta uma das diferenas da UNIQUE Constraint em relao PRIMARY KEY Constraint. Outra diferena que podemos ter vrias UNIQUE constraints em uma mesma tabela, diferentemente de PRIMARY KEY Constraint, que somente pode existir uma por tabela. Somente podemos criar uma UNIQUE Constraint em uma coluna que no faa parte de uma chave primria. Uma UNIQUE Constraint pode ser formada por uma ou mais colunas, caso em que teremos uma UNIQUE CONSTRAINT composta. Uma coluna com uma UNIQUE Constraint pode ser referenciada por uma chave estrangeira, definida por uma FOREIGN KEY Constraint. A unicidade de um campo associado a uma UNIQUE CONSTRAINT garantida atravs da criao de um ndice que no permite valores duplicados. Este ndice, por padro, criado como um nonclustered index. Porm, podemos definir que o ndice seja criado como um clustered index, desde que no exista outro clustered index j definido na tabela. Podemos definir uma UNIQUE Constraint, no momento de criao de uma tabela. No exemplo a seguir, estamos definindo o campo NmMatrcula como chave primria e o campo NmeroIdentidade como sendo nico, atravs de uma UNIQUE Constraint neste campo, ao criarmos a tabela Funcionrios: CREATE TABLE Funcionrios ( NmMatrcula char(14) CONSTRAINT Num_Matr PRIMARY KEY, NmeroIdentidade char(14) CONSTRAINT Num_Iden UNIQUE NONCLUSTERED, DataEntrada datetime NOT NULL, DataAniversrio datetime NOT NULL, Nome char(50), Cargo char(20), Funo char(50), Salrio float ) Outra possibilidade adicionarmos uma UNIQUE Constraint a uma tabela j existente, utilizando o comando ALTER DATABASE. Vamos criar uma UNIQUE Constraint composta, a qual associada aos campos Nome, Cargo e Salrio. Este exemplo no tem muito sentido prtico. Iremos utiliz-lo apenas para exemplificar a sintaxe de criao de uma UNIQUE Constraint composta. ALTER TABLE Funcionrios ADD CONSTRAINT Constr_Comp UNIQUE NONCLUSTERED (Nome,Cargo,Salrio) Observe que neste caso especificamos que seja criado um nonclustered index. FOREIGN KEY CONSTRAINTS Utilizamos FOREIGN KEY constraints para implementar a integridade referencial no Banco de Dados. Ao definirmos uma FOREIGN KEY associada a uma coluna (ou um conjunto de colunas), estamos proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000543 N O T A definindo esta coluna como uma chave estrangeira. A chave estrangeira representa o lado vrios de um relacionamento do tipo Um para Vrios. muito importante, eu diria at indispensvel, que voc tenha entendido todos os conceitos sobre o Modelo Relacional de dados, apresentados no Captulo 1. Se voc tiver qualquer dvida sobre um destes conceitos chave primria, Chave estrangeira, relacionamentos, tipos de relacionamentos e integridade referencial, por favor volte ao Captulo 1 e revise estes conceitos, antes de seguir adiante. Por exemplo, temos um relacionamento do tipo Um para Vrios entre a tabela Fornecedores (lado Um) e a tabela Produtos (lado Vrios). Na tabela Fornecedores, o campo CdigoDoFornecedor uma chave primria. Na tabela Produtos, o campo CdigoDoFornecedor uma chave estrangeira. O campo CdigoDoFornecedor o lado vrios, na tabela Produtos, pois um mesmo fornecedor pode fornecer vrios produtos. Por exemplo, se um fornecedor fornecer 50 produtos diferentes, haver 50 registros na tabela Produtos, onde o campo CdigoDoFornecedor ter o cdigo do respectivo fornecedor, nos 50 registros. Observe que, neste exemplo, o campo ir aparecer 50 vezes, ou genericamente vrias vezes. Sendo que as duas tabelas so relacionadas atravs de um relacionamento do tipo Um para Vrios, significando que Um fornecedor pode fornecer Vrios produtos. Uma chave estrangeira pode ser relacionada com um campo em que temos uma PRIMAY KEY Con- straint ou uma UNIQUE Constraint. Para que possamos estabelecer o relacionamento entre uma chave estrangeira e uma chave primria, algumas regras devem ser observadas: O nmero de colunas da chave estrangeira e os tipos de dados especificados no comando FOREIGN KEY devem coincidir com os especificados na clusula REFERENCE. Porm, o nome das colunas no precisa ser o mesmo. Veja a sintaxe do comando mais adiante e exemplos de uso destes comandos. Quando criamos uma FOREIGN KEY Constraint no criado, automaticamente, um ndice. Porm, na prtica, pode ser til a criao de um ndice associado chave estrangeira. Para aprender sobre a criao e manuteno de ndices consulte o Captulo 4. Para modificar dados em uma tabela que possui uma constraint do tipo FOREIGN KEY, o usurio deve ter permisses SELECT ou REFERENCE na tabela primria. Por exemplo, vamos considerar o relacionamento entre as tabelas Categorias (lado Um) e Produtos (lado Vrios), relacionadas atravs do campo CdigoDaCategoria. Na tabela Categorias, o campo CdigoDaCategoria uma chave primria; j na tabela Produtos, o campo CdigoDaCategoria uma Chave Estrangeira. Para que o usurio possa alterar dados na tabela Produtos, ele precisa ter permisso SELECT ou REFERENCE, na tabela Categorias, que a tabela relacionada com produtos. Podemos criar uma referncia entre duas colunas da mesma tabela. Neste caso, utilizamos apenas a clusula REFERENCES, sem a clusula FOREIGN KEY. Vamos pr em prtica toda esta teoria. Nos exemplos anteriores criamos uma tabela Clientes e uma tabela Pedidos, com os campos indicados na Figura 9.7. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5440000Curso Completo Figura 9.7 Tabelas Clientes e Pedidos, criadas nos exemplos anteriores. Observe que o campo CPF existe nas duas tabelas e, na tabela Clientes, este campo uma chave primria indicado por uma pequena chave amarela ao lado do campo. Vamos criar um relacionamento entre estas duas tabelas. O relacionamento ser do tipo Um (tabela Clientes) para Vrios (tabela Pedidos). Para definirmos este relacionamento, vamos criar uma FOREIGN KEY Constraint no campo CPF da tabela Pedidos, sendo que esta FOREIGN KEY ir fazer referncia (em bom portugus vai se relacionar com) ao campo CPF da tabela Clientes. Para criar uma FOREIGN KEY no campo CPF da tabela Pedidos, vamos executar o seguinte comando: ALTER TABLE Pedidos ADD CONSTRAINT Rel_Ped_Cli FOREIGN KEY(CPF) REFERENCES Clientes(CPF) Uma vez executado este comando, teremos criado um relacionamento entre as tabelas Clientes e Pedidos, conforme indicado na Figura 9.8. Figura 9.8 Relacionamento criado entre as tabelas Clientes e Pedidos. Observe que definimos uma constraint do tipo FOREIGN KEY em uma tabela j existente. Porm podemos definir este tipo de constraint no momento da criao da tabela. Vamos supor que foi solicitada a criao de uma tabela chamada Dependentes. Um cliente poder autorizar um ou mais dependentes, para que faam compras em seu nome. Neste caso, teremos um relacionamento do tipo Um para Vrios entre a tabela Clientes e a tabela Dependentes. O campo que ir relacionar as duas tabelas o campo CPF. A tabela Clientes o lado um do relacionamento e a tabela Dependentes o lado vrios. Neste caso, a constraint do tipo FOREIGN KEY ser criada na tabela proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000545 Dependentes. Como a tabela Dependentes ainda no existe, iremos cri-la e, durante a criao, especificar uma FOREIGN Constraint no campo CPF, a qual referencia o campo CPF da tabela Clientes. A tabela Dependentes ter os seguintes campos: CPF Char(14) FOREIGN KEY relacionada com o campo CPF da tabela Clientes. Nome Char(50) Fone Char(25) e_mail Char(50) Para criar a tabela Dependentes e definir o relacionamento solicitado, devemos executar o seguinte comando: CREATE TABLE Dependentes ( CPF Char(14) NOT NULL, Nome Char(50) NOT NULL, Fone Char(25) NOT NULL, e_mail Char(50), CONSTRAINT Rel_Cli_Dep FOREIGN KEY(CPF) REFERENCES Clientes(CPF) ) Aps a execuo deste comando teremos o relacionamento entre as tabelas Clientes e Dependentes j definido. A Figura 9.9 mostra as tabelas Clientes, Pedidos e Dependentes e os respectivos relacionamentos. Figura 9.9 Mais um relacionamento criado: Clientes e Dependentes. Vamos fazer alguns testes referentes integridade referencial. Uma vez definido o relacionamento entre as tabelas Clientes e Dependentes, o SQL Server 2005 no deve deixar que seja adicionado um registro na tabela Dependentes, para um cliente que ainda no tenha sido cadastrado na tabela Clientes. Vamos proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5460000Curso Completo fazer o seguinte teste: tentaremos adicionar um dependente para o cliente com o CPF 999.999.999-99. Acontece que este cliente no existe na tabela Clientes. Tente executar o seguinte comando: INSERT INTO Dependentes (CPF,Nome,fone,e_mail) VALUES (999.999.999-99, Faustino da Silva, 2222222,faustino@abc.com) O comando no ser executado e a seguinte mensagem de erro ser exibida: Msg 547, Level 16, State 0, Line 1 INSERT statement conflicted with FOREIGN KEY constraint Rel_Cli_Dep. The conflict occurred in database PubsIntF, table Clientes, column CPF. The statement has been terminated. Observe o seguinte trecho desta mensagem: The conflict occurred in database pubs, table Clientes, column CPF. Este trecho, embora no muito claramente, est nos dizendo que no existe o CPF 999.999.999-99, na tabela Clientes, ou seja, que estamos tentando cadastrar um dependente para um cliente que ainda no existe. Agora vamos alterar o comando anterior, substituindo o CPF inexistente pelo CPF de um cliente cadastrado nos exerccios anteriores. Execute o seguinte comando: INSERT INTO Dependentes (CPF,Nome,fone,e_mail) VALUES (666.333.333-33, Faustino da Silva, 2222222,faustino@abc.com) Agora sim, o comando executado com sucesso e um dependente adicionado na tabela Dependentes. Com este exemplo, podemos observar como o SQL Server gerencia, automaticamente, a integridade referencial, uma vez definidos os relacionamentos. Quando trabalhamos com o SQL Server 2005, ou qualquer outro Banco de Dados que segue o modelo Relacional, de fundamental importncia que entendamos os conceitos apresentados no Captulo 1 e aqui exemplificados. Sem o domnio destes conceitos, iremos projetar Bancos de Dados com problemas, ou melhor, com muitos problemas. Muitas vezes, estes problemas somente aparecem quando colocamos uma ou mais aplicaes em produo. Surgem desde consultas com desempenho sofrvel at inconsistncia e falta de integridade dos dados. VERIFICAO DOS DADOS QUANDO UMA CONSTRAINT ADICIONADA Por padro, o SQL Server 2005 verifica os dados existentes em uma tabela, quando uma constraint adicionada. Caso os dados no se enquadrem nas definies da constraint, esta no ser criada. Por exemplo, se voc tentar definir uma constraint do tipo UNIQUE em uma coluna que contm valores repetidos, o comando no ser executado e uma mensagem de erro ser exibida. Embora no seja recomendado, esta verificao automtica pode ser desabilitada. Somente podemos desabilitar a verificao dos dados, quando uma Constraint adicionada para constraints dos tipos CHECK e FOR- EIGN KEY. A verificao sempre ser feita para constraints dos tipos PRIMARY KEY e UNIQUE. Para desabilitar a verificao, utilizamos a opo WITH NOCHECK, com o comando ALTER DATA- BASE, conforme o exemplo a seguir: ALTER TABLE Produtos WITH NOCHECK ADD CONSTRAINT Constr_1 CHECK (Preo >= 0) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000547 N O T A Neste exemplo estamos adicionando uma constraint do tipo CHECK, definindo que o campo Preo, da tabela Teste, deve ter um valor maior ou igual a zero. A clusula WITH NOCHECK faz com que os dados existentes na tabela Produtos no sejam verificados e, mesmo que existam valores negativos na coluna Preo, a constraint ser adicionada. A nica situao em que pode ser admissvel a utilizao da opo WITH NOCHECK seria em uma situao em que temos um grande volume de dados, e estes j esto, comprovadamente, depurados. Nesta situao, desabilitaramos a verificao ao adicionar a constraint, para poupar tempo. A opo WITH NOCHECK no desabilita a verificao para os registros que so adicionados aps a definio da constraint. Se formos adicionar um registro que no atende a definio de uma ou mais constraints definidas na tabela, o registro no ser inserido e uma mensagem de erro ser exibida. DESABILITANDO E HABILITANDO NOVAMENTE CONSTRAINTS Podemos desabilitar, temporariamente, uma ou mais constraints. Por exemplo, quando formos importar um grande volume de dados, estando estes dados em um estado consistente, podemos desabilitar uma ou mais constraints, para agilizar a importao dos dados. Uma vez encerrada a importao, voltamos a habilit-las. Somente podemos desabilitar constraints dos tipos CHECK e FOREIGN KEY. Para desabilitar uma constraint utilizamos a clusula NOCHECK CONSTRAINT nome_constraint, com o comando ALTER DATABASE. Para reabilitar a constraint, utilizamos a clusula CHECK CONSTRAINT nome_constraint, com o comando ALTER DATABASE. Para desabilitarmos a constraint FaixaFinanciamento, criada na tabela Clientes, utilizamos o seguinte comando: ALTER TABLE Clientes NOCHECK CONSTRAINT FaixaFinanciamento Para voltar a habilitar esta constraint, utilizamos o seguinte comando: ALTER TABLE Clientes CHECK CONSTRAINT FaixaFinanciamento EXCLUINDO CONSTRAINTS Podemos excluir uma constraint, utilizando o comando ALTER TABLE. Utilizamos a seguinte sintaxe: ALTER TABLE nome_da_tabela DROP CONSTRAINT nome_da_constraint Por exemplo, para excluir uma constraint chamada Teste, da tabela Clientes, do Banco de Dados Vendas, utilizamos o seguinte comando: USE Vendas ALTER TABLE Clientes DROP CONSTRAINT Teste proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5480000Curso Completo Exerccio: Vamos propor um exerccio, para que voc possa revisar os diversos comandos vistos neste item. O exerccio ser baseado no Banco de Dados PubsIntF, que criamos no incio do captulo. Lembrando que este uma cpia do Banco de Dados Pubs, importado a partir de uma instncia do SQL Server 2000. Vamos criar alguns relacionamentos neste Banco de Dados. Das diversas tabelas que compem este Banco de Dados, vamos nos concentrar nas quatro tabelas mostradas na Figura 9.7. Figura 9.10 Algumas tabelas do Banco de Dados PubsIntF. Primeiro, vamos fazer uma anlise sobre os relacionamentos que devem ser definidos para as tabelas apresentadas, e depois partimos para a definio das constraints a serem implementadas em cada tabela. Os seguintes campos sero definidos como chaves primrias: Campo au_id na tabela authors. Campo pub_id na tabela publishers. Campo title_id na tabela titles. Definiremos os seguintes relacionamentos: Relacionamento do tipo Um para Vrios entre as tabelas authors (lado Um) e a tabela titleauthor (lado Vrios), atravs do campo au_id. Relacionamento do tipo Um para Vrios entre as tabelas titles (lado Um) e a tabela titleauthor (lado Vrios), atravs do campo title_id. Relacionamento do tipo Um para Vrios entre as tabelas publishers (lado Um) e a tabela titles (lado Vrios), atravs do campo pub_id. Ento vamos prtica. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000549 1. Abra o SQL Server Management Studio, navegue at o banco de dados PubsInf. Clique com o boto direito do mouse no banco de dados PubsInf e, no menu de opes que exibido, clique em New Query. Ser aberta a janela de execuo de comandos T-SQL. 2. Torne PubsIntF o Banco de Dados atual, utilizando o seguinte comando: USE PubsIntF 3. Para definir o campo au_id, da tabela authors, como uma chave primria, execute o seguinte comando: ALTER TABLE authors ADD CONSTRAINT Prim_authors PRIMARY KEY CLUSTERED(au_id) 4. Para definir o campo pub_id, da tabela publishers, como uma chave primria, execute o seguinte comando: ALTER TABLE publishers ADD CONSTRAINT Prim_publishers PRIMARY KEY CLUSTERED(pub_id) 5. Para definir o campo title_id, da tabela titles, como uma chave primria, execute o seguinte comando: ALTER TABLE titles ADD CONSTRAINT Prim_titles PRIMARY KEY CLUSTERED(title_id) Neste ponto, o nosso Banco de Dados j possui definidas trs chaves primrias, conforme indicado na Figura 9.11, na qual o campo chave primria indicado pela pequena chave amarela. Figura 9.11 Chaves primrias j definidas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5500000Curso Completo Agora vamos para a definio dos relacionamentos. Lembrando que um relacionamento definido atravs de uma constraint do tipo FOREIGN KEY. 6. Crie uma constraint do tipo FOREIGN KEY, associada com o campo au_id da tabela titleauthor, a qual referencia o campo au_id da tabela authors. Para criar este relacionamento, utilize o seguinte comando: ALTER TABLE titleauthor ADD CONSTRAINT FK_author FOREIGN KEY(au_id) REFERENCES authors(au_id) 7. Crie uma constraint do tipo FOREIGN KEY, associada com o campo title_id da tabela titleauthor, a qual referencia o campo title_id da tabela titles. Para criar este relacionamento, utilize o seguinte comando: ALTER TABLE titleauthor ADD CONSTRAINT FK_title FOREIGN KEY(title_id) REFERENCES titles(title_id) 8. Crie uma constraint do tipo FOREIGN KEY, associada com o campo pub_id da tabela titles, a qual referencia o campo pub_id da tabela publishers. Para criar este relacionamento, utilize o seguinte comando: ALTER TABLE titles ADD CONSTRAINT FK_pub FOREIGN KEY(pub_id) REFERENCES publishers(pub_id) Aps executados estes comandos, os relacionamentos propostos tero sido criados, conforme indicado na Figura 9.12: Figura 9.12 Relacionamentos propostos j definidos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000551 Muito bem, com isso conclumos o exerccio proposto. KNOW-HOW EM: CONCEITOS E CRIAO DE VIEWS NO SQL SERVER 2005 PR-REQUISITOS Fundamentos apresentados na Parte I. Conhecer os comandos bsicos da linguagem T-SQL. Saber utilizar a janela de execuo de Comandos T-SQL e o SQL Server Management Studio. Conhecimento sobre relacionamentos e o modelo relacional de dados. METODOLOGIA Apresentao dos procedimentos necessrios para a criao de views com comandos T-SQL e usando o SQL Server Management Studio. TCNICA Criao e teste de views, utilizando comandos T-SQL e o SQL Server Management Studio. INTRODUO Quando executamos um comando T-SQL na janela de execuo de comandos, este processado e uma mensagem exibida. Por exemplo, quando executamos um comando CREATE TABLE, uma tabela criada no Banco de Dados atual e uma mensagem, dizendo que o comando foi executado com sucesso, emitida. Tambm podemos executar consultas, como por exemplo: SELECT * FROM Orders WHERE ShipCountry = Brazil O comando executado e ser retornada uma listagem com todos os registros da tabela Orders, em que o campo ShipCountry for igual a Brazil. Se fecharmos a janela de execuo de comandos T-SQL e abrirmos novamente, teremos que digitar o comando mais um vez para execut-lo. Este tipo de consulta conhecido com Consulta Ad-hoc. Alguns autores traduzem a expresso Ad-hoc como sendo sob demanda. A mim, parece uma traduo aceitvel, uma vez que a consulta executada no momento em que solicitada; depois, ao fechar a janela de execuo de comando T-SQL, os comandos e o resultado so descartados. Porm, para aplicativos que executam repetidamente um determinado conjunto de consultas este mtodo de consultas Ad-hoc no o mais adequado. No SQL Server 2005, temos a opo de salvar uma instruo SQL que retorna dados. A instruo salva e um nome atribudo instruo (ou ao conjunto de instrues). Com isso, podemos definir view de uma maneira bastante simples: View uma instruo T-SQL que retorna dados e salva no Banco de Dados com um nome, ou seja, passa a ser um objeto do Banco de Dados. Quando uma view executada, esta retorna um conjunto de dados no formato de uma tabela. Uma view pode retornar dados de uma ou mais tabelas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5520000Curso Completo N O T A Para criar uma view, utilizamos o comando CREATE VIEW. Vamos criar uma view, chamada Ped_USA, a qual seleciona os registros da tabela Pedidos em que o campo ShipCountry igual a USA. USE Northwind GO CREATE VIEW Ped_USA AS SELECT * FROM ORDERS WHERE ShipCountry = USA Este exemplo baseado no banco de dados Northwind. Este banco de dados fornecido como exemplo, no SQL Server 2000. Ele no instalado com o SQL Server 2005. Mas voc pode utilizar o DTS Import/Export Wizard, para importar o banco de dados Northwind, de uma instncia do SQL Server 2000, para uma instncia do SQL Server 2005. Para um passo-a-passo sobre como importar o banco de dados Northwind, consulte o Anexo, no final deste livro. Agora, ao executarmos a view, basta darmos um SELECT * Nome_da_view. A view ser executada e todos os registros, por ela selecionados, sero retornados. No caso, sero retornados os pedidos onde o campo ShipCountry = USA. Para executar a view Ped_USA, execute o seguinte comando: SELECT * FROM Ped_USA Sero retornados os resultados indicados na Figura 9.13. Figura 9.13 Resultado da execuo da view Ped_USA. TIPOS DE VIEWS QUANTO AO CONJUNTO DE DADOS RETORNADOS Podemos ter diversos tipos de views, dependendo do conjunto de dados retornados. Uma view que retorna apenas algumas colunas de uma tabela conhecida como Sub-set of table columns. Podemos utilizar este tipo de view para fazer com que o usurio somente receba o conjunto de dados que lhe proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000553 N O T A interessa. Por exemplo, uma consulta feita por um vendedor pode retornar apenas a descrio do produto, o preo, o valor do frete e o prazo de entrega. J uma consulta feita pelo responsvel pelo estoque pode retornar somente o cdigo do produto e o nvel de estoque do produto, bem como o nvel mnimo de estoque aceitvel. Uma view, que retorna apenas um subconjunto das linhas de uma tabela, conhecida como Subset of table rows. o caso tpico da consulta onde utilizada a clusula WHERE, para filtrar o conjunto de dados. Tambm podemos criar views que retornam dados de diversas tabelas, atravs de uma ou mais clusulas Join. Alm disso, tambm podemos utilizar as chamadas funes de agregao como por exemplo SUM para calcular a soma em um determinado campo ou AVG para calcular a mdia. Tambm podemos definir uma clusula SELECT dentro de outra, o que mais conhecido como SUBCONSULTA. Aprenderemos a criar subconsultas, bem como os demais tipos de views mais adiante, neste item. Quando trabalhamos com subconsultas, devemos considerar, seriamente, questes relacionadas ao desempenho. POR QUE UTILIZAR VIEWS? Existem vrios motivos que justificam a utilizao de views. Vamos falar sobre os principais. Com a utilizao de views, podemos ocultar a complexidade no acesso aos dados. Se um usurio ou aplicao precisa de acesso a um conjunto de dados, o qual obtido a partir de vrias tabelas, podemos simplificar este acesso, criando uma view que consolida e retorna os dados necessrios. Depois s fazer com que o usurio ou aplicao acesse e execute esta view. Simplifica a atribuio de permisses. Podemos definir permisses na view, o que simplifica bastante o gerenciamento de permisses, uma vez que temos que gerenciar um nmero menor de objetos e permisses. Uma Banco de Dados normalizado apresenta um grande nmero de tabelas. Com isso, as consultas executadas pelos usurios precisam acessar dados de diversas tabelas. Este meio-campo pode ser feito, com grandes vantagens, com a criao de views. O desenvolvimento e manuteno de aplicaes tambm fica simplificado. Se existirem alteraes na estrutura de uma ou mais tabelas e a aplicao tiver sido desenvolvida para acessar os dados diretamente das tabelas, a aplicao ter que ser reescrita quando fizermos alteraes nas tabelas. Podemos evitar este problema criando uma view e fazendo com que a aplicao acesse a view. Se houver alteraes nas tabelas, alteramos a view para que o mesmo conjunto de dados seja retornado, evitando, com isso, que a aplicao tenha que ser alterada. Existem outras tcnicas que simplificam a manuteno de aplicaes. Falaremos mais sobre estas tcnicas nos Captulos 10 e 11. LIMITAES NA CRIAO DE VIEWS Ao criarmos views, devemos considerar as seguintes limitaes: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5540000Curso Completo Somente podemos criar uma view no Banco de Dados atual, embora esta possa acessar dados de tabelas de outros Bancos de Dados ou at mesmo de outros servidores, quer seja outras instncias do SQL Server ou os chamados linked servers. Uma view pode ter, no mximo, 1024 colunas. O usurio, que est criando a view, deve ter permisso de acesso a todas as colunas includas na view, caso contrrio o usurio no conseguir cri-la. Podemos aninhar views, isto , uma view pode referenciar outra, at um nvel de 32 views aninhadas. Uma vez apresentada a teoria, vamos prtica. Seguindo a metodologia utilizada at o momento, aprenderemos a criar views utilizando as seguintes ferramentas: Janela de execuo de comandos T-SQL. SQL Server Management Studio. CRIANDO VIEWS COM O SQL SERVER MANAGEMENT STUDIO Este um ponto em que tenho que ser sincero com o amigo leitor. Na minha modesta opinio, era bem mais simples criar uma view no SQL Server 2000 do que no SQL Server 2005. No SQL Server 2000, tnhamos um assistente, que nos conduzia, passo a passo, na criao de views. Era extremamente simples de usar e muito semelhante interface de criao de consultas do Access. Uma verdadeira barbada. J com o SQL Server 2005 simplesmente no tem esta opo. Para criar um view em um banco de dados do SQL Server 2005, temos que digitar, na mo, o comando T-SQL para a criao da view. Sinceramente, no consegui entender o que a Microsoft tentou fazer nesta rea, pois no ajudou e nem facilitou, em nada. Bem pelo contrrio, atrapalha bastante para quem est iniciando seus estudos sobre o SQL Server. Figura 9.14 O Diagrama Entidade x Relacionamentos do banco de dados NorthWind.mdb. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000555 N O T A Como no temos mais o bom e velho assistente, no formato parecido com o que tnhamos no Access, no adianta chorar. O que temos que fazer procurar algo de bom nesta mudana. O que eu encontrei de bom, para passar para os amigos leitores, fazermos um estudo mais detalhado dos comandos da linguagem T-SQL, comandos utilizados para a criao de views, de tal forma que possamos aprimorar mais ainda os nossos conhecimentos da linguagem T-SQL. Depois, aplicaremos estes conhecimentos para a criao de views. Basicamente isso. No Captulo 1 voc aprendeu os fundamentos bsicos da linguagem T-SQL. Seria importante que, neste momento, voc voltasse ao Captulo 1 e revisasse os pontos onde voc tem dvidas sobre os tpicos que foram apresentados. Neste tpico sobre a criao de views, eu utilizarei o que foi apresentado no Captulo 1 e adicionarei tpicos novos. Os novos tpicos sero apresentados atravs de exemplos. Nos exemplos eu irei propor uma consulta, apresentarei os comandos para a criao da view e depois irei explicar, detalhadamente, os comandos utilizados. Para os exemplos deste tpico, voc deve criar um banco de dados chamado NwindAccess. Este banco de dados ser criado na instncia SERVIDOR\SQL2005 e ter um nico arquivo primrio, com tamanho inicial de 100 MB e autocrescimento permitido em incrementos de 10%. Este banco de dados ter um nico arquivo de log, com tamanho inicial de 50 MB e com autocrescimento permitido em incrementos de 10%. Em caso de dvidas sobre como criar um banco de dados, consulte o Captulo 3, onde apresentei exemplos prticos, passo a passo, sobre a criao de banco de dados. Aps criar o banco de dados NwindAccess, utlize o DTS Import/Export Wizard, para importar todas as tabelas do banco de dados Northwind.mdb, do Access, para dentro do banco de dados NwindAccess, do SQL Server 2005. O banco de dados NorthWind.mdb instalado juntamente com o Microsoft Access, desde as verses antigas at a verso mais atual. Os exemplos de views, que criaremos, sero baseadas neste banco de dados. Na Figura 9.14, apresento o diagrama Entidades x Relacionamentos, do banco de dados Northwind.mdb. CRIANDO VIEWS COM O SQL SERVER MANAGEMENT STUDIO Neste item vamos fazer um exemplo prtico, de criao de view com o SQL Server Management Stu- dio. Vamos iniciar com uma view bem simples, apenas para ilustrar os passos para a criao de uma view, usando o SQL Server Management Studio. Logo em seguida, mostrarei como acessar as propriedades de uma view, para alter-la. Tambm mostrarei como executar uma view, para conferir se esta est retornando os resultados esperados. O nosso primeiro exemplo ser a criao de uma view, que lista alguns campos da tabela Clientes. Feito este primeiro exemplo, bastante simples, iremos apresentar uma srie de situaes prticas, e mostraremos como resolv-las, atravs da utilizao de views. Farei diversos exemplos, porque este um tpico muito importante, tanto para o administrador do banco de dados, quanto para a equipe de desenvolvimento. Exemplo prtico 01: Criar uma view chamada ListaContatos, no banco de dados NwindAccess, da instncia SERVIDOR\SQL2005. Esta view dever listar somente os campos NomeDaEmpresa, NomeDoContato, Pas, Cidade e Telefone, da tabela Clientes. Classificar a listagem em ordem alfabtica do campo Nome da Empresa. Executar a view para observar se os resultados retornados so os esperados. Para resolver o exemplo proposto, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio, navegue at o banco de dados PubsInf. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5560000Curso Completo 2. Na janela Object Explorer, clique no sinal de + ao lado da instncia SERVIDOR\SQL2005. 3. Clique no sinal de + ao lado da opo Databases. 4. Clique no sinal de + ao lado do banco de dados NwindAccess (veja as orientaes anteriores, para criao deste banco de dados e importao das tabelas do banco de dados NorthWind.mdb, do Access). 5. Dentre as opes que so exibidas, observe que temos uma opo chamada views. Esta a opo que utilizaremos para criar novas views. Clique com o boto direito do mouse em views e, no menu de opes que exibido, clique em New view. Ser exibida a janela view New, indicada na Figura 9.15. Figura 9.15 A janela para criao de uma nova view. 6. No campo view name voc informa o nome da view. Digite ListaContatos. O campo Data- base name j vem preenchido com NwindAccess, que o banco de dados onde a view ser criada. Na lista Schema, voc define qual schema ser o dono da view. Por padro selecionado o schema dbo. Para mais detalhes sobre segurana no SQL Server 2005 e schemas, consulte o Captulo 6. 7. Abaixo da lista Schemas, est disponvel uma srie de opes que podem ser habilitadas para a view que est sendo criada. A principal opo deste grupo a opo Encrypt text. Se esta opo for marcada, os comandos que formam a view sero gravados no banco de dados, na forma criptografada. importante no fazer confuso neste ponto. O que ser criptografado so os comandos que formam a view e no os dados, por ela retornados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000557 8. A view criada na parte de baixo. Criar a view , basicamente, digitar o comando T-SQL que ser executado, quando a view for executada. Observe que a parte inicial do comando, que a parte que cria a view, j automaticamente criada. No nosso exemplo, temos o seguinte comando: CREATE VIEW [dbo].[ListaContatos] AS 9. O nosso trabalho, agora, digitar, na linha abaixo do AS, o restante do comando. No nosso exemplo, ser uma instruo SELECT, que retorna somente os campos NomeDaEmpresa, NomeDoContato, Pas, Cidade e Telefone, da tabela Clientes. E classifica a listagem em ordem alfabtica do campo Nome da Empresa. 10. Complete o comando com a seguinte instruo SELECT: SELECT Clientes.NomeDaEmpresa, Clientes.NomeDoContato, Clientes.Pas, Clientes.Cidade, Clientes.Telefone FROM Clientes 11. Voc deve estar se perguntando se eu no esqueci a clusula ORDER BY NomeDaEmpresa, para fazer a ordenao pelo nome da empresa. Acontece que no permitido o uso da clusula Order By em views. Por isso, para fazer a ordenao, teremos que usar a clusula Order By, na hora de executar a view, mais adiante A janela de criao da view deve estar conforme indicado na Figura 9.16. Figura 9.16 Comando para a criao da view. 12. Antes de salvar a view, voc pode verificar se existe algum erro de sintaxe. Clique com o boto direito do mouse na rea em branco, abaixo da ltima linha da instruo SELECT. No menu de opes que exibido, d um clique em Check Sintax. Se a instruo SQL estiver correta, ser exibida uma mensagem informando que tudo est OK. Clique em OK para fechar esta mensagem. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5580000Curso Completo 13. Pressione Ctrl+S para salvar a view. 14. Para fechar a janela de criao da view, clique com o boto direito do mouse na rea em branco, abaixo da ltima linha da instruo SELECT. No menu de opes que exibido, d um clique em Close. 15. Agora a view ListaContatos foi criada. 16. Clique no sinal de +, ao lado da opo views, abaixo do banco de dados NwindAccess. Clique na opo views. Se a view ListaContatos ainda no estiver sendo exibida, pressione a tecla F5 para atualizar a listagem. A view Lista contatos j dever estar sendo exibida, abaixo da opo views. 17. Caso voc precise alterar a view, futuramente, s clicar com o boto direito do mouse na view e, no menu de opes que exibido, clique em Modify view. A janela com as configuraes da view ser exibida e voc poder alter-las. Faa as alteraes desejadas, salve pressionando Ctrl+S e feche a janela de configuraes da view. 18. Agora vamos a etapa final do exemplo proposto. Vamos executar a view ListaContatos e ordenar os resultados em ordem alfabtica do campo NomeDaEmpresa. 19. Clique com o boto direito do mouse no banco de dados NwindAccess e, no menu de opes que exibido, clique em New Query. Ser aberta a janela de execuo de comandos T-SQL. Para executar a view ListaContatos e ordenar os resultados em ordem alfabtica do campo NomeDaEmpresa, execute o seguinte comando: SELECT * FROM ListaContatos Order By NomedaEmpresa 20. A view ListaContatos ser executada e os resultados ordenados pelo campo NomeDaEmpresa, conforme exemplificado na Figura 9.17. Figura 9.17 Executando a view ListaContatos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000559 Muito bem, com isso conclumos o nosso primeiro exemplo. Agora j sabemos como criar uma view, como alter-la e como executar uma view. Agora vamos estudar mais alguns exemplos prticos, os quais sero solucionados com o uso de views. Nos prximos exemplos, no irei repetir, cada vez, todos os passos necessrios para criar, alterar e executar uma view, uma vez que todos estes passos j foram descritos neste primeiro exemplo. Nos prximos exemplos, vou me concentrar em exemplos prticos, os quais so resolvidos atravs de views. Farei os exemplos passo a passo, mostrando quais os comandos T-SQL a serem utilizados em cada etapa, at chegarmos soluo pretendida. Estude com bastante ateno estes exemplos, pois eles sero de grande utilidade na sua vida prtica, como administrador e desenvolvedor do SQL Server 2005. EXEMPLO PRTICO 01: USANDO VIEWS PARA CRIAR CAMPOS CALCULADOS E TOTALIZAES No Captulo 1, eu apresentei os fundamentos do Modelo Relacional de Dados, que o modelo utilizado pelo SQL Server 2005. Dentre outras, apresentei duas regras fundamentais: Cada assunto em uma tabela. No se misturam assuntos, na mesma tabela. No se armazenam valores calculados, a no ser em casos especficos, de bancos de dados utilizados para dados consolidados, para suporte a sistemas de deciso ou Data Mining. Neste nosso primeiro exemplo, vamos analisar um caso que se encaixa bem com estas duas regras bsicas. Vamos continuar trabalhando com o banco de dados NwindAccess, o qual voc importou para o SQL Server 2005, no incio deste captulo. Neste banco de dados, temos uma tabela Pedidos, na qual esto armazenadas as informaes do cabealho do pedido, tais como: Nmero do Pedido, Cdigo do Cliente, Cdigo do Funcionrio, Data do Pedido, Valor do frete e assim por diante. Neste banco de dados, foi criada uma segunda tabela, chamada Detalhes do Pedido. Figura 9.18 As tabelas Pedidos e Detalhes do Pedido. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5600000Curso Completo Esta tabela contm os itens individuais, de cada pedido. Esta separao foi necessria, porque um mesmo pedido pode ter vrios itens. Se no tivesse sido feita esta separao, as informaes do cabealho do pedido teriam que ser repetidas tantas vezes quantos fossem os itens do pedido. Vimos que esta repetio vai contra todos os princpios do Modelo Relacional e s causaria problemas. Por isso a separao em duas tabelas. Na Figura 9.18, temos uma viso geral das tabelas Pedidos e Detalhes do Pedido, os campos de cada tabela e o relacionamento que existe entre elas, atravs do campo NmeroDoPedido. Muito bem, o nosso primeiro problema prtico diretamente relacionado com as tabelas Pedidos e Detalhes do Pedido. Note que no temos um campo que calcula o valor total para cada pedido. Este ser justamente o nosso trabalho, neste exemplo. Vamos criar uma view que nos d o resultado indicado na Figura 9.19. Figura 9.19 O resultado que deve ser retornado pela nossa view. Neste exemplo, ser exibido o nmero do pedido, a data do pedido, o nome do cliente e o valor total para o pedido. Observe que no temos armazenado, nas tabelas, o valor total para o pedido. Mas, por outro lado, temos todas as informaes necessrias para calcular este total. Se fssemos calcular, manualmente, o total do pedido, o que teramos que fazer? Muito simples. Primeiro devemos calcular o valor individual de cada item do pedido. Depois, somar os valores de todos os itens do pedido. Para o clculo do valor de cada item, vamos usar uma frmula bem simples, na qual utilizaremos o PreoUnitrio do item, a quantidade e o percentual de desconto. A frmula que utilizaremos, para o total de cada item, individualmente, ser a seguinte: ([Quantidade]*[PreoUnitrio])*(1-[Desconto]) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000561 N O T A Bem, a questo que fica : Como chegar a este resultado, usando uma view, no SQL Server 2005? A resposta est logo a seguir. Continue acompanhando. Exemplo prtico: Criar uma view que retorne os resultados indicados na Figura 9.19. Para criar esta view, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio e navegue at o banco de dados NwindAccess. 2. Clique no sinal de + ao lado do banco de dados NwindAccess. 3. Clique com o boto direito do mouse na opo views, abaixo de NwindAccess e, no menu de opes que exibido, clique em New View. 4. Ser exibida a janela para criao de uma nova view, a qual voc aprendeu a utilizar no exemplo anterior. No campo view name, digite Con - Total por Pedido. 5. Na parte do comando da view, aps o AS que vem o comando T-SQL para a criao da view. Vamos iniciar bem light, onde criaremos um comando que exibe os campos NmeroDoPedido da tabela Pedidos, DataDoPedido da tabela Pedidos e NomeDoDestinatrio da tabela Pedidos. Para criar esta view inicial, digite o seguinte comando, na linha abaixo do AS: SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.NomeDoDestinatrio FROM Pedidos 6. Pressione Ctrl+S para salvar a view e feche a janela de criao da view. 7. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando: SELECT * FROM [Con - Total por Pedido] Observe que o nome da view vem entre colchetes. Isso necessrio porque existem espaos em branco no nome da view. 8. Voc dever obter os resultados indicados na Figura 9.20. 9. Muito bem. Agora vamos comear a alterar nossa view. O primeiro passo ser adicionar tambm campos da tabela Detalhes do Pedido. Com isso, veremos como fica o comando para criar uma view que retorna dados de duas ou mais tabelas relacionadas. 10. Localize a view Con - Total por Pedido, clique com o boto direito do mouse na view e, no menu de opes que exibido, clique em Delete. Ser exibida uma janela solicitando confirmao. Clique em OK para confirmar a excluso da view. preciso excluir a view e cri- la novamente, pois vamos adicionar novas colunas na view. 11. Clique com o boto direito do mouse na opo views, abaixo de NwindAccess e, no menu de opes que exibido, clique em New View. 12. Ser exibida a janela para criao de uma nova view. No campo view name, digite Con - Total por Pedido. 13. Na parte do comando da view, aps o AS que vem o comando T-SQL para a criao da view. Vamos agora usar um comando que, alm dos campos que j existiam na verso anterior da view, ir adicionar tambm os campos PreoUnitrio, Quantidade e Desconto, da tabela detalhes proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5620000Curso Completo N O T A do pedido. O objetivo desta etapa mostrar como representar, atravs de comandos T-SQL, o relacionamento entre duas ou mais tabelas. Para criar esta view, digite o seguinte comando, na linha abaixo do AS: SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.NomeDoDestinatrio, [Detalhes do Pedido].PreoUnitrio, [Detalhes do Pedido].Quantidade, [Detalhes do Pedido].Desconto FROM Pedidos INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do Pedido].NmeroDoPedido O detalhe realmente importante, nesta verso da view, o seguinte trecho do comando: INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do Pedido].NmeroDoPedido Este o trecho que faz o relacionamento entre as tabelas Pedidos e Detalhes do pedido, atravs do campo NmeroDoPedido. O nome da tabela Detalhes do Pedido vem sempre entre colchetes, porque h espaos no nome da tabela. 14. Pressione Ctrl+S para salvar a view e feche a janela de criao da view. 15. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando: SELECT * FROM [Con - Total por Pedido] Observe que o nome da view vem entre colchetes. Isso necessrio porque existem espaos em branco no nome da view. 16. Voc dever obter os resultados indicados na Figura 9.20: Figura 9.20 Resultados da verso 2.0 da nossa view. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000563 Observe que j so exibidos os campos PreoUnitrio, Quantidade e Desconto, da tabela Detalhes do Pedido. Ainda estamos longe do resultado final desejado, mas estamos caminhando na direo certa. Um detalhe interessante a observar que, na listagem, so exibidas vrias linhas para cada um dos pedidos. Por exemplo, para o primeiro pedido 10248 so exibidas trs linhas. Isso ocorre porque este pedido tem trs itens. Cada linha tem informao de um dos itens do pedido. Muito bem. Qual o prximo passo? Agora vamos alterar novamente o comando T-SQL. Vamos retirar os campos PreoUnitrio, Quantidade e Desconto. No lugar destes trs campos, vamos criar um nico campo calculado, o qual nos fornecer o total por item de cada pedido. Vamos ao trabalho ento. 17. Localize a view Con Total por Pedido, clique com o boto direito do mouse na view e, no menu de opes que exibido, clique em Delete. Ser exibida uma janela solicitando confirmao. Clique em OK para confirmar a excluso da view. preciso excluir a view e cri- la novamente, pois vamos retirar colunas e adicionar uma nova coluna (calculada) na view. 18. Clique com o boto direito do mouse na opo Views abaixo de NwindAccess e, no menu de opes que exibido, clique em New View. 19. Ser exibida a janela para criao de uma nova view. No campo view name, digite Con - Total por Pedido. 20. Na parte do comando da view, aps o AS que vem o comando T-SQL para a criao da view. Vamos agora usar um comando que, alm dos campos NmeroDoPedido, DataDoPedido e NomeDoDestinatrio, da tabela Pedidos, exiba tambm um campo calculado, que chamaremos de TotalDoPedido. O valor deste campo ser calculado na frmula que indicamos anteriormente: ([Quantidade]*[PreoUnitrio])*(1-[Desconto]). Para criar a verso 3.0 da nossa view, digite o seguinte comando, na linha abaixo do AS: SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.NomeDoDestinatrio, ([Quantidade]*[PreoUnitrio])*(1-[Desconto]) AS TotalDoPedido FROM Pedidos INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do Pedido].NmeroDoPedido A novidade, nesta verso da view, o seguinte trecho do comando: ([Quantidade]*[PreoUnitrio])*(1-[Desconto]) AS TotalDoPedido Este o trecho onde criamos um campo calculado. O campo calculado vem junto com os demais campos. Observe que, logo aps o campo NomeDoDestinatrio, coloco a frmula de clculo e depois da frmula, uma clusula AS para dar nome ao campo calculado. Neste exemplo, a frmula ([Quantidade]*[PreoUnitrio])*(1-[Desconto]) e o nome atribudo a esta coluna TotalDoPedido. 21. Pressione Ctrl+S para salvar a view e feche a janela de criao da view. 22. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando: SELECT * FROM [Con - Total por Pedido] 23. Voc dever obter os resultados indicados na Figura 9.21. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5640000Curso Completo Figura 9.21 Resultados da verso 3.0 da nossa view. Observe que agora, com a verso 3.0 da nossa view, j estamos bem mais prximos do resultado final proposto. Ainda no estamos l, mas falta muito pouco. Observe que j exibido o total de cada item de cada pedido. Porm, ainda no est sendo totalizado por pedido. Por exemplo, o pedido 10248 tem trs itens. Esto sendo exibidas trs linhas para este pedido, uma para cada item. Em cada linha exibido o total do item. Ns temos que fazer com que o SQL Server 2005 junte todos os itens do mesmo pedido em uma nica linha e, ao invs do total por item, some os valores dos itens do pedido, exibindo o total do pedido. Conforme voc ver, logo a seguir, bastante simples fazer esta totalizao. Vamos continuar modificando a nossa view. Agora iremos criar a verso 4.0, que ser a nossa verso final. Ento mos obra. 24. Localize a view Con - Total por Pedido, clique com o boto direito do mouse na view e, no menu de opes que exibido, clique em Delete. Ser exibida uma janela solicitando confirmao. Clique em OK para confirmar a excluso da view. preciso excluir a view e cri- la novamente, pois vamos fazer alteraes. 25. Clique com o boto direito do mouse na opo Views abaixo de NwindAccess e, no menu de opes que exibido, clique em New view. 26. Ser exibida a janela para criao de uma nova view. No campo view name, digite Con - Total por Pedido. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000565 27. Na parte do comando da view, aps o AS que vem o comando T-SQL para a criao da view. Vamos criar um comando que, alm de retornar os resultados da verso 3.0 da nossa view, faa tambm a totalizao por pedido. Para criar a verso 4.0 da nossa view, digite o seguinte comando, na linha abaixo do AS: SELECT Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.NomeDoDestinatrio, Sum(([Quantidade]*[PreoUnitrio])*(1-[Desconto])) AS TotalDoPedido FROM Pedidos INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do Pedido].NmeroDoPedido GROUP BY Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.NomeDoDestinatrio; Aqui temos diversas novidades a serem consideradas. Vamos coment-las por partes. A primeira novidade o uso da funo SUM, para fazer a soma do campo Calculado TotalDoPedido: Sum(([Quantidade]*[PreoUnitrio])*(1-[Desconto])) AS TotalDoPedido Porm temos que orientar o SQL Server em como agrupar as linhas. Pois dentro de cada agrupamento que a soma ser efetuada. No nosso exemplo, vamos agrupar por pedidos. Dentro de um mesmo pedido, os campos NmeroDoPedido, DataDoPedido e NomeDoDestinatrio so iguais, para todos os itens de um pedido. Com isso, vamos pedir que estes itens sejam agrupados em um nico e que os diferentes valores de cada item sejam somados. Ou seja, o resultado prtico obter cada pedido listado uma nica vez com o respectivo total. Para fazer este agrupamento, utilizamos a clusula GROUP BY, conforme trecho de cdigo a seguir: GROUP BY Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.NomeDoDestinatrio Observe que utilizamos a clusula GROUP BY nos trs campos da tabela Pedidos, ou seja, justamente os campos que so iguais, para todos os itens de um mesmo pedido. 28. Pressione Ctrl+S para salvar a view e feche a janela de criao da view. 29. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando: SELECT * FROM [Con - Total por Pedido] ORDER BY NmeroDoPedido 30. Voc dever obter os resultados indicados na Figura 9.22. Observe que agora cada pedido aparece uma nica vez e, na ltima coluna, exibido o total para o pedido, total este que nada mais do que a soma dos itens do pedido. 31. Muito bem, com isso conclumos o exerccio proposto, ou seja, criar uma view que retornasse o total por pedido. Vimos que, basicamente, criar um view, saber criar o comando T-SQL para retornar o resultado desejado. Por isso que venho insistindo, ao longo de todo o captulo, na importncia de conhecer os comandos T-SQL. Pois tudo no SQL Server 2005 se resume a comandos T-SQL. Mesmo quando voc est usando a interface grfica, apenas uma interface mais amigvel, que o est ajudando a criar um comando T-SQL o qual ser executado. Com comandos T-SQL voc cria e modifica bancos de dados, cria tabelas, views, triggers, stored procedures, configura a segurana e a replicao, enfim, faz tudo no SQL Server 2005. A seguir voc aprender um pouco mais sobre as views chamadas de Referncia Cruzada, as quais usam as clusulas TRANSFORM e PIVOT. Voc ver que possvel fazer pequenas maravilhas com estas clusulas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5660000Curso Completo Figura 9.22 Resultados da verso 4.0 da nossa view verso final. Muito bem. Para no perdermos o ritmo, vamos a mais alguns exemplos. EXEMPLO PRTICO 02: USANDO VIEWS PARA CRIAR CAMPOS CALCULADOS E TOTALIZAES Neste nosso segundo exemplo, vamos analisar um caso que se encaixa bem no uso das diversas opes da linguagem T-SQL, para a criao de listagens personalizadas, com valores calculados. Vamos continuar trabalhando com o banco de dados NwindAccess, o qual voc importou para o SQL Server 2005, no incio deste captulo. Neste banco de dados, temos uma tabela Pedidos, na qual esto armazenadas as informaes do cabealho do pedido, tais como: Nmero do Pedido, Cdigo do Cliente, Cdigo do Funcionrio, Data do Pedido, Valor do frete e assim por diante. Neste banco de dados, foi criada uma segunda tabela, chamada Detalhes do Pedido. Esta tabela contm os itens individuais, de cada pedido, conforme j descrito anteriormente. Para este segundo exemplo, tambm vamos utilizar dados da tabela Funcionrios. Na Figura 9.23, temos uma viso geral das tabelas Pedidos, Detalhes do Pedido e Funcionrios, os campos de cada tabela e o relacionamento que existe entre elas. Muito bem, o nosso segundo problema prtico diretamente relacionado com as tabelas Pedidos, Detalhes do pedido e Funcionrios. O nosso objetivo listar o total de vendas por PasDeDestino e, dentro de cada PasDeDestino, por funcionrio. Novamente teremos que criar um campo calculado, para ter o total por cada item de cada pedido. Depois teremos que agrupar por PasDeDestino e, dentro do pas, agrupar por Funcionrio. Este ser justamente o nosso trabalho, neste exemplo. Vamos criar uma view que nos d o resultado indicado na Figura 9.24. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000567 Figura 9.23 As tabelas Pedidos, Detalhes do Pedido e Funcionrios. Figura 9.24 O resultado que deve ser retornado pela nossa view. Neste exemplo, sero exibidos os totais por pas e, dentro do pas, por funcionrio. Por exemplo, a primeira linha exibe o total de vendas feitas para clientes da Alemanha, pelo funcionrio Andrew; a segunda linha apresenta o total de vendas para clientes da Alemanha, feitas pelo funcionrio Anne e assim por diante. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5680000Curso Completo Bem, a questo que fica : Como chegar a este resultado, usando uma view, no SQL Server 2005? A resposta est logo a seguir. Continue acompanhando. Exemplo prtico: Criar uma view que retorne os resultados indicados na Figura 9.25. Para criar esta view, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio e navegue at o banco de dados NwindAccess. 2. Clique no sinal de + ao lado do banco de dados NwindAccess. 3. Clique com o boto direito do mouse na opo Views abaixo de NwindAccess e, no menu de opes que exibido, clique em New View. 4. Ser exibida a janela para criao de uma nova view, a qual voc aprendeu a utilizar no exemplo anterior. No campo view name, digite Con - Total por Pas e Funcionario. 5. Na parte do comando da view, aps o AS, que vem o comando T-SQL para a criao da Para esta view. Digite o seguinte comando, na linha abaixo do AS: SELECT Pedidos.PasDeDestino, Funcionrios.Nome, Sum(([Quantidade]*[PreoUnitrio])*(1- [Desconto])) AS TotalDeVendas FROM (Funcionrios INNER JOIN Pedidos ON Funcionrios.CdigoDoFuncionrio = Pedidos.CdigoDoFuncionrio) INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do Pedido].NmeroDoPedido GROUP BY Pedidos.PasDeDestino, Funcionrios.Nome Este comando no tem grandes novidades em relao ao que j aprendemos. Mas vale a pena comentar os trechos utilizados neste cdigo. O primeiro trecho a ser analisado o seguinte: SELECT Pedidos.PasDeDestino, Funcionrios.Nome, Sum(([Quantidade]*[PreoUnitrio])*(1- [Desconto])) AS TotalDeVendas Este trecho define os campos que sero retornados. No nosso exemplo so retornados os campos PasDeDestino da tabela Pedidos, Nome da tabela Funcionrios e um campo calculado, o qual chamamos de total de vendas. A frmula de clculo a seguinte: (([Quantidade]*[PreoUnitrio])*(1-[Desconto]). Voc pode estar se perguntando: Mas e a funo SUM, o que est fazendo neste comando?. Muito bem, para entender o que a funo SUM est fazendo, temos que nos deslocar para a parte final da instruo SQL: GROUP BY Pedidos.PasDeDestino, Funcionrios.Nome Esta parte orienta o SQL Server a agrupar os resultados por pas e, dentro do pas, por Nome do funcionrio. A ordem definida pela posio dos campos. Como primeiro vem o campo PasDeDestino, primeiro feito o agrupamento por pas e, dentro do pas, por funcionrios. Se invertssemos esta ordem, seria feito primeiro o agrupamento por puncionrio e, dentro das vendas de um mesmo funcionrio, por pas. Bem, agrupamos por pas e, dentro do pas, por funcionrio. E o que devemos fazer para obter os totais de vendas, dentro destes agrupamentos? Somar os valores do campo TotalDeVendas. exatamente por isso que foi utilizada a funo SUM. Agora voc j sabe o porqu de utilizar o SUM. Um detalhe importante que voc deve ter observado (ou talvez no) que no fizemos a ordenao dos resultados, no comando de criao da view. Ou seja, no usamos uma clusula ORDER BY para ordenar por pas e depois pelo nome. Isso porque no permitido o uso desta clusula, dentro da view. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000569 N O T A A pergunta natural que surge : Ento, como faremos para ordenar os resultados? Muito simples. Na hora de executar a view (conforme mostrarei logo a seguir), utilizaremos a clusula ORDER BY, para ordenar os resultados retornados pela view. O restante do comando onde feito o relacionamento entre as tabelas Pedidos e Detalhes do Pedido, atravs do campo NmeroDoPedido e entre as tabelas Pedidos e Funcionrios, atravs do campo CdigoDoFuncionrio. Basicamente so duas clusulas INNER JOIN, conforme indicado no trecho de cdigo a seguir. FROM (Funcionrios INNER JOIN Pedidos ON Funcionrios.CdigoDoFuncionrio = Pedidos.CdigoDoFuncionrio) INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do Pedido].NmeroDoPedido Muito bem, vamos salvar e testar a nossa view. 6. Pressione Ctrl+S para salvar a view e feche a janela de criao da view. 7. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando: SELECT * FROM [Con - Total por Pas e Funcionario] ORDER BY PasDeDestino, Nome Observe que o nome da view vem entre colchetes. Isso necessrio porque existem espaos em branco no nome da view. 8. Voc dever obter os resultados indicados na Figura 9.25: Figura 9.25 Resultados da execuo da nossa view em conjunto com ORDER BY. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5700000Curso Completo Eu estou insistindo, bastante, no entendimento dos comandos T-SQL, pois eles so o que h de mais importante no SQL Server 2005. Para salientar o poder e flexibilidade destes comandos, vamos fazer uma pequena alterao na nossa view. 9. Muito bem. Agora vamos comear a alterar nossa view. Vamos alterar o comando SQL da view para que, ao invs da soma das vendas por pas e por funcionrio, seja exibido o nmero de pedidos por pas de destino e por funcionrio. Para isso, vamos substituir o campo calculado TotalDeVendas pelo campo NmeroDoPedido, pois esse o campo que nico para cada pedido. Por isso indicado para ser utilizado em uma contagem. Alm disso, vamos trocar a funo SUM pela funo COUNT. Mos obra. 10. Localize a view Con - Total por Pas e Funcionario, clique com o boto direito do mouse na view e, no menu de opes que exibido, clique em Delete. Ser exibida uma janela solicitando confirmao. Clique em OK para confirmar a excluso da view. preciso excluir a view e cri- la novamente, pois vamos adicionar novas colunas na view e retirar colunas. 11. Clique com o boto direito do mouse na opo views, abaixo de NwindAccess, e, no menu de opes que exibido, clique em New view. 12. Ser exibida a janela para criao de uma nova view. No campo view name, digite Con - Total por Pas e Funcionario. 13. Na parte do comando da view, aps o AS, que vem o comando T-SQL para a criao da view. Vamos agora alterar o comando, em relao ao que foi utilizado anteriormente. Vamos retirar a coluna calculada TotalDeVendas. No seu lugar, vamos inserir o campo NmeroDoPedido, da tabela Pedidos e, neste campo, vamos usar a funo COUNT. Para criar esta view, digite o seguinte comando, na linha abaixo do AS: SELECT Pedidos.PasDeDestino, Funcionrios.Nome, Count(Pedidos.NmeroDoPedido) AS ContarDeNmeroDoPedido FROM (Funcionrios INNER JOIN Pedidos ON Funcionrios.CdigoDoFuncionrio = Pedidos.CdigoDoFuncionrio) INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do Pedido].NmeroDoPedido GROUP BY Pedidos.PasDeDestino, Funcionrios.Nome 14. Pressione Ctrl+S para salvar a view e feche a janela de criao da view. 15. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando: SELECT * FROM [Con - Total por Pas e Funcionario] ORDER BY PasDeDestino, Nome 16. Voc dever obter os resultados indicados na Figura 9.26. Observe que, agora, ao invs do total de vendas por pas e por funcionrio, temos o nmero de pedidos por pas e por funcionrio. Observe como o conhecimento dos comandos T-SQL nos d uma vantagem muito grande, permitindo a criao de views, para a obteno dos resultados desejados. Conhecer bem os comandos T-SQL mais do que uma obrigao do administrador e do desenvolvedor que trabalha com o SQL Server 2005: INDISPENSVEL. Vamos continuar analisando casos de usos dos comandos T-SQL para a criao de views. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000571 Figura 9.26 Resultados da execuo da nossa view, aps as alteraes. EXEMPLO PRTICO 03: CRIANDO UMA VIEW BASEADA EM OUTRA VIEW Neste nosso terceiro exemplo, vamos usar um conceito de grande importncia, o qual muito pouco utilizado, talvez por falta de conhecimento ou por falta de hbito: a criao de uma view baseada em outra view. Este um recurso realmente muito poderoso. Muitas vezes, no conseguimos obter os resultados desejados, com uma nica view. Nestas situaes, podemos dividir o nosso problema em partes, onde cada parte solucionada com a criao de uma view. Criamos uma view para solucionar uma parte do problema. Depois criamos uma segunda view, baseada na primeira, para solucionar a segunda parte do problema. Depois, criamos uma terceira view, baseada na segunda, para solucionar mais uma parte do problema. E assim por diante, at chegarmos ao resultado final. Vamos imaginar que estamos criando uma view chamada view2, a qual ser baseada em uma view j existente, chamada view1. Quando a view2 for executada, primeiro o SQL Server 2005 executa a view1. O conjunto de dados retornados pela view1 ser utilizado para a execuo da view2. Todo esse processo transparente para o usurio. Neste nosso exemplo, apenas para ilustrar, didaticamente, este conceito, vamos criar uma seqncia de trs views (na verdade a primeira que utilizaremos j foi criada no Exemplo Prtico 01). A segunda view ser baseada na primeira e a terceira ser baseada na segunda. Nota: Poderamos solucionar este exemplo usando uma nica view. Mas para salientar o conceito de view baseada em view, vamos dividir o problema em trs views. Neste exemplo, o nosso objetivo listar o total de vendas por ano. Vamos criar uma view, que nos d o resultado indicado na Figura 9.27. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5720000Curso Completo Figura 9.27 O resultado que deve ser retornado pela nossa view. Bem, a questo que fica : Como chegar a este resultado, usando views, no SQL Server 2005? A resposta esta logo a seguir. Continue acompanhando. Exemplo prtico: Criar uma view que retorne os resultados indicados na Figura 9.28. Para criar esta view, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio e navegue at o banco de dados NwindAccess. 2. Clique no sinal de + ao lado do banco de dados NwindAccess. 3. Clique com o boto direito do mouse na opo Views, abaixo de NwindAccess, e, no menu de opes que exibido, clique em New View. 4. Ser exibida a janela para criao de uma nova view, a qual voc aprendeu a utilizar no exemplo anterior. A primeira view que ns precisamos j existe. a view Con - Total por Pedido, a qual calcula o total por pedido. Nos criaremos a segunda view, a qual ser baseada nesta primeira view e que exibir duas colunas calculadas adicionais. Uma que exibe somente o ano do campo DataDoPedido e outra que exibe somente o ms, do campo DataDoPedido. No campo view name, digite Con Totais com Ano e Ms. 5. Na parte do comando da view, aps o AS que vem o comando T-SQL para a criao da Para desta view. Digite o seguinte comando, na linha abaixo do AS: SELECT [Con - Total por Pedido].NmeroDoPedido, [Con - Total por Pedido].DataDoPedido, Year([DataDoPedido]) AS AnoPedido, Month([DataDoPedido]) AS MsPedido, [Con - Total por Pedido].TotalDoPedido FROM [Con - Total por Pedido]; Este comando tem algumas novidades em relao ao que j aprendemos. Vamos comentar estas novidades. O primeiro trecho a ser analisado o seguinte: Year([DataDoPedido]) AS AnoPedido, Month([DataDoPedido]) AS MsPedido Neste trecho, utilizei a funo Year, para criar um campo que retorna apenas o ano do campo DataDoPedido. Chamei este campo de AnoPedido. Tambm utilizei a funo Month, para criar um campo que retorna apenas o ms do campo DataDoPedido. Observe tambm que estamos selecionando o campo TotalDoPedido, o qual um campo calculado da view Con - Total por Pedido. Muito bem, vamos salvar e testar a nossa view. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000573 N O T A 6. Pressione Ctrl+S para salvar a view e feche a janela de criao da view. 7. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando: SELECT * FROM [Con Totais com Ano e Ms] ORDER BY AnoPedido, MsPedido Observe que o nome da view vem entre colchetes. Isso necessrio porque existem espaos em branco no nome da view. 8. Voc dever obter os resultados indicados na Figura 9.28: Figura 9.28 Resultados da execuo da nossa view, com campos para o ano e ms. Observe que agora temos uma view, baseada em outra view. Ou seja, criamos a view Con Totais com Ano e Ms, a qual por sua vez baseada na view Con Total por Pedido. Quando a view Con Totais com Ano e Ms executada, primeiro ser executada a view Con Total por Pedido. Os resultados retornados pela view Con - Total por Pedido que sero utilizados como base para a view Con Totais com Ano e Ms. 9. Muito bem. Agora vamos criar uma terceira view. Vamos cham-la de Com Totais Anuais de Venda. Esta view ser baseada na view Con Totais com Ano e Ms. Ento mos obra. 10. Clique com o boto direito do mouse na opo views, abaixo de NwindAccess, e, no menu de opes que exibido, clique em New view. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5740000Curso Completo 11. Ser exibida a janela para criao de uma nova view, a qual voc aprendeu a utilizar no exemplo anterior. No campo view name, digite Con Totais Anuais de Venda. 12. Na parte do comando da view, aps o AS que vem o comando T-SQL para a criao desta view. Digite o seguinte comando, na linha abaixo do AS: SELECT [Con Totais com Ano e Ms].AnoPedido, Sum([Con Totais com Ano e Ms].TotalDoPedido) AS TotalAnualDeVendas FROM [Con Totais com Ano e Ms] GROUP BY [Con Totais com Ano e Ms].AnoPedido Observe que, basicamente, estamos selecionando os campos AnoPedido e TotalDoPedido, da view Con Totais com Ano e Ms. No campo TotalDoPedido estamos fazendo uma soma e chamando esta soma de TotalAnualDeVendas. Por ltimo, agrupamos pelo campo AnoPedido. Mais uma vez s o uso do bom e velho T-SQL, nada de mais. Muito bem, vamos salvar e testar a nossa view. 13. Pressione Ctrl+S para salvar a view e feche a janela de criao da view. 14. Abra a janela de execuo de comandos T-SQL e execute o seguinte comando: SELECT * FROM [Con Totais Anuais de Venda] ORDER BY AnoPedido 15. Pronto, solucionado o exemplo proposto. Voc dever obter os resultados indicados na Figura 9.29: Figura 9.29 Totais anuais de vendas. Muito bem, com estes exemplos, podemos ver o valor dos comandos T-SQL. Ao dominarmos estes comandos, poderemos criar views que atendam demandas reais, por listagens com totalizaes, filtragens e uma srie de outros requisitos. CRIANDO VIEWS COM A JANELA DE EXECUO DE COMANDOS T-SQL Criar views com janela de execuo de comandos T-SQL simplesmente uma questo de utilizar o comando CREATE VIEW. Vamos estudar este comando neste item. A sintaxe para o comando CRETE VIEW a seguinte: CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] ) ] [ WITH < view_attribute > [ ,...n ] ] AS select_statement [ WITH CHECK OPTION ] proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000575 N O T A Simplificando a sintaxe apresentada no Books OnLine, teramos o seguinte: CREATE VIEW Nome_da_view AS Comando SQL Por exemplo, para criar uma view chamada Pedidos_Teste, que retorna os campos OrderID, OrderDate, ShipCountry e ShipCity da tabela Orders do Banco de Dados Northwind, utilizamos o seguinte comando: USE Northwind GO CREATE VIEW Pedidos_Teste AS SELECT OrderID, OrderDate, ShipCountry FROM Orders importante que voc coloque o comando GO, antes do comando CREATE VIEW, caso o comando CREATE VIEW no seja o primeiro comando. Se no utilizarmos o comando GO, ser emitida a seguinte mensagem de erro: Server: Msg 111, Level 15, State 1, Line 2 CREATE VIEW must be the first statement in a query batch. O mais importante para a criao de views, utilizando a janela de execuo de comandos T-SQL, conhecer a linguagem T-SQL. Pois uma view nada mais do que um comando T-SQL gravado em um Banco de Dados. Isso s refora o que eu insisti, exaustivamente, nos exemplos anteriores, ou seja, a importncia de conhecer e dominar os comandos T-SQL. Quando criamos uma view, o que gravado no Banco de Dados apenas o comando T-SQL, alm de informaes sobre permisses de acesso. Os dados que a view retornar so obtidos a partir das tabelas do Banco de Dados, toda vez que a view for executada. A permisso para utilizar o comando CREATE VIEW atribuda para as roles de Banco de Dados db_owner e db_ddladmin, alm da role de servidor sysadmin. Podemos fazer com que o texto da view, que armazenado na tabela syscomments, seja criptografado. Isto impede que o cdigo seja acessado simplesmente atravs de um SELECT na tabela syscomments. Ou melhor, o cdigo at que pode ser acessado, s que o texto estar criptografado, impedindo que seja lido, a menos que a criptografia seja quebrada. A seguir, um exemplo de criao de uma view com a utilizao da opo WITH ENCRYPTION: CREATE VIEW Pedidos_Criptografada WITH ENCRYPTION AS SELECT OrderID, OrderDate, ShipCountry, ShipCity FROM Orders WHERE ShipCountry = Alemanha Vamos a um exemplo: criar uma view chamada Mdia_Vendas_por_Ano. Esta view ser criada no banco de dados NwindAccess. Esta view deve exibir um registro para cada ano em que existem pedidos e o valor mdio de vendas para cada ano. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5760000Curso Completo N O T A O detalhe nesta view que temos que utilizar dados da tabela Pedidos e da tabela Detalhes do Pedido. Pois os clculos do total por pedido, os quais vo possibilitar o clculo da mdia anual, so realizados a partir dos campos da tabela Detalhes do pedido. Alm disso, teremos que utilizar a funo Year, para extrair apenas o ano do campo DataDoPedido. Depois, agrupamos o campo ano e utilizamos a funo AVG na coluna que calcula o valor das vendas. Para criar esta view, siga os passos indicados a seguir: 1. Abra a janela de execuo de comandos T-SQL. 2. Digite e execute o seguinte comando: USE NwindAccess GO CREATE VIEW Mdia_Vendas_por_Ano AS SELECT YEAR(DataDoPedido) AS [Ano do Pedido], AVG(([Quantidade] * [PreoUnitrio])* (1 -[Desconto])) AS [Mdia Anual] FROM [Pedidos] INNER JOIN [Detalhes do Pedido] ON [Pedidos].[NmeroDoPedido] = [Detalhes do Pedido].[NmeroDoPedido] GROUP BY YEAR(DataDoPedido) Agora vamos testar se a view Mdia_Vendas_por_Ano est retornando os resultados desejados. 3. Execute o seguinte comando: SELECT * FROM Mdia_Vendas_por_Ano Voc deve obter os resultados indicados na Figura 9.30. Figura 9.30 Mdia anual de vendas. J que estamos com a janela de execuo de comandos T-SQL aberta, vamos aprender a atribuir permisses para views e depois testar estas permisses. Para uma discusso aprofundada sobre o modelo de segurana e atribuio de permisses, consulte o Captulo 6 deste livro. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 9 DESENVOLVIMENTO NO SQL SERVER 2005 ELEMENTOS BSICOS Curso Completo0000577 No Captulo 6, havamos dado permisso para os usurios SERVIDOR\user1 e SERVIDOR\user2 acessar a instncia SERVIDOR\SQL2005. Agora, vamos adicion-los como usurios com permisso de acesso ao Banco de Dados NwindAccess, da instncia SERVIDOR\SQL2005. 1. Voc ainda deve estar com a janela de execuo de comandos T-SQL aberta e logado na instncia SERVIDOR\SQL2005. Execute o seguinte comando: USE NwindAccess GO exec sp_grantdbaccess SERVIDOR\user1 exec sp_grantdbaccess SERVIDOR\user2 Agora vamos dar permisso de acesso para o usurio SERVIDOR\user1 para a view Mdia_Vendas_por_Ano, e vamos negar permisso de acesso a esta view, para o usurio SERVIDOR\user2. 2. Para dar permisso de acesso ao usurio SERVIDOR\user1, execute o seguinte comando: GRANT SELECT ON Mdia_Vendas_por_Ano TO [SERVIDOR\user1] 3. Para negar permisso de acesso ao usurio SERVIDOR\user2, execute o seguinte comando: DENY SELECT ON Mdia_Vendas_por_Ano TO [SERVIDOR\user2] Se o usurio SERVIDOR\user2 tentar executar o seguinte comando: SELECT * FROM Mdia_Vendas_por_Ano ele obter a seguinte mensagem de erro: Server: Msg 229, Level 14, State 5, Line 1 SELECT permission denied on object Mdia_Vendas_por_Ano, database NwindAccess, A mensagem nos informa que o usurio no tem permisso de acesso. Isto confere com as configuraes de permisses que fizemos. 4. Feche a janela de execuo de comandos T-SQL e feche o SQL Server Management Studio. No prximo captulo e no Apndice, falarei ainda mais sobre a linguagem T-SQL e tambm sobre funes disponveis. No exemplo anterior, utilizamos a funo Year, para extrair apenas o ano do campo OrderDate. No prximo captulo, veremos uma srie de funes que podem ser utilizadas em comandos T-SQL. CONCLUSO Neste captulo apresentamos os elementos bsicos para o desenvolvimento de aplicaes que se baseiam no SQL Server 2005. Iniciamos o captulo tratando sobre integridade de dados e como o SQL Server 2005 faz para mant-la. Falamos sobre os diferentes tipos de integridade e aprendemos a implement-los, utilizando constraints. Vimos diversos exemplos de construo de constraints. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 2: KNOW-HOW 5780000Curso Completo Depois, passamos a tratar da criao de views. Atravs de uma view, podemos facilitar e simplificar o acesso aos dados. Podemos ocultar a complexidade de determinadas consultas, atravs da construo de uma view. Tudo o que a aplicao precisa fazer chamar a view, ao invs de ter que entender toda a complexidade necessria para acessar os dados. Com a view, tambm podemos atribuir permisses de uma maneira centralizada, o que facilita a administrao da segurana. No prximo captulo, continuaremos tratando de desenvolvimento, tendo como base elementos do prprio SQL Server 2005. Nos captulos seguintes Captulo 11 e Captulo 12 , passaremos a tratar do desenvolvimento de aplicaes que acessam os Bancos de Dados do SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Parte 3 DESENVOLVIMENTO proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 5800000Curso Completo N O T A proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000581 Captulo 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 5820000Curso Completo INTRODUO Neste captulo aprenderemos tpicos avanados de desenvolvimento de aplicaes no SQL SERVER 2005. Tratarei de elementos que so criados em um Banco de Dados do SQL SERVER 2005 e podem ser acessados por aplicaes desenvolvidas em Visual Basic, Delphi, ASP, ASP.NET, VB.NET, C#, etc. Iniciaremos o captulo falando sobre stored procedures. Conforme veremos, existem muitas aplicaes prticas e vantagens de utilizarmos stored procedures. A linguagem que utilizamos para criar stored procedures, como no poderia deixar de ser em se tratando de SQL SERVER 2005, a linguagem T-SQL. Stored procedures so semelhantes a procedimentos e sub-rotinas em outras linguagens. Por exemplo: Podem ser chamados por outro stored procedures ou por programas desenvolvidos em ASP, Visual Basic, Delphi, ASP.NET, C#, VB.NET, etc. Podem receber um ou mais parmetros de entrada e retornar um ou mais parmetros de sada. Podem conter lgica de programao, como instrues de controle e de lao. A utilizao de stored procedures nos fornece vantagens, como por exemplo: programao modular, execuo mais rpida, reduo de trfego de rede e, ainda, podem ser utilizados como um mecanismo de segurana. Depois, passaremos a estudar o mecanismo de Triggers. Triggers so uma classe especial de stored procedures. Uma trigger pode ser programada para executar sempre que um comando UPDATE, INSERTE ou DELETE for executado em um Banco de Dados. A principal utilizao de triggers para impor Regras de Negcio ao Banco de Dados. Uma regra de negcio uma regra do mundo real que deve ser respeitada pelas operaes efetuadas sobre os dados do Banco de Dados. Vamos supor que um gerente de um determinado banco no possa aprovar mais do que R$ 50.000,00 em emprstimos por ms. Ao inserir um novo emprstimo no Banco de Dados, podemos fazer com que seja verificado o total de emprstimos j aprovados pelo gerente, no ms corrente. Se o total exceder o valor mximo para o gerente, o novo emprstimo no ser aprovado. Podemos inclusive fazer com que o chefe imediato do gerente receba um e- mail avisando desta situao. Tambm mostraremos um exemplo de triggers que atualizam, automaticamente, uma pgina HTML com dados de uma ou mais tabelas. Veremos passo a passo como construir esta pgina e testaremos a atualizao automtica da pgina. Na parte final do captulo, tratarei de alguns comandos avanados da linguagem T-SQL. Falaremos sobre joins avanados e os diferentes tipos de joins existentes, sobre Sumarizao de dados. Tambm trataremos das diversas funes que podem ser utilizadas em uma instruo SELECT. Tambm veremos criao de subconsultas e os cuidados em relao ao desempenho, quando utilizamos subconsultas. Este captulo apresenta uma srie de conceitos de fundamental importncia para o desenvolvimento de aplicaes com o SQL Server 2005 ou baseadas no SQL Server 2005. Nos prximos captulos, falaremos um pouco mais sobre aplicaes, principalmente utilizando pginas ASP para acessar um Banco de Dados no SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000583 DESENVOLVIMENTO EM: TEORIA E DESENVOLVIMENTO DE STORED PROCEDURES NO SQL SERVER 2005 PR-REQUISITOS Fundamentos apresentados na Parte I. Saber utilizar o SQL Server Management Studio e o Query Analyzer. Noes sobre Integridade de Dados e os tipos de integridade existentes no SQL Server 2005. Noes sobre os comandos bsicos da linguagem T-SQL. METODOLOGIA Apresentao do conceito de stored procedures e dos principais comandos para a criao e teste de stored procedures. TCNICA Utilizao da janela de execuo de comandos T-SQL e do SQL Server Management Studio para a criao e teste de stored procedures. A primeira pergunta que temos que responder a seguinte: O que um stored procedure? Resposta formal: Um stored procedure uma coleo de comandos, qual atribudo um nome, sendo que esta coleo nomeada de comandos salva no Banco de Dados. Resposta descomplicada: Podemos gravar um conjunto de comandos, que realiza uma funo especfica no Banco de Dados. Ao salvarmos este conjunto de comandos damos um nome a ele. Pronto, acabamos de criar um stored procedure. Uma vez criado, o stored procedure pode ser executado sempre que for necessrio, simplesmente chamando o stored procedure pelo nome, o que evita que tenhamos que digitar o conjunto de comandos repetidamente, cada vez que ele tiver que ser utilizado. A utilizao de stored procedures uma tcnica eficiente quanto temos que executar o mesmo conjunto de comandos, repetidas vezes. Ao invs de digitar os comandos cada vez que a operao precisa ser executada, criamos um stored proce- dure e executamos o stored procedure, sempre que for necessrio. Isso evita que o mesmo conjunto de comandos tenha que ser inserido em diversos locais no Banco de Dados. Se tivermos que alterar o conjunto de comandos de uma determinada operao, basta alter-lo no stored procedures e todos os objetos que chamam o stored procedure passaro a ter acesso nova verso. Isto facilita muito as alteraes na lgica do Banco de Dados. ou no muito parecido com a idia de Procedimentos e Funes de linguagens como o Pascal e o C. Em um stored procedure tambm podemos ter estruturas de controle e deciso, tpicas das linguagens de programao. Em termos de desenvolvimento de aplicaes, tambm temos vantagens com a utilizao de stored procedures. Vamos imaginar que estamos criando uma aplicao em Visual Basic e que a aplicao acessa dados de um Banco de Dados do SQL Server 2005. Sem a utilizao de stored procedures, a aplicao precisa enviar o conjunto de comandos T-SQL necessrios execuo de cada tarefa. Pode ser que, em diversas partes do programa, seja necessria a execuo da mesma tarefa. A pior tcnica possvel seria codificar estes comandos, nos diversos pontos do programa, onde os comandos so necessrios. Qualquer proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 5840000Curso Completo N O T A alterao iria demandar que todo o cdigo do programa fosse revisado e as ocorrncias dos comandos alteradas. Simplesmente um pesadelo. Poderamos melhorar um pouco esta situao isolando o conjunto de comandos em uma funo e chamando a funo onde os comandos so necessrios. Isso faria com que apenas tivssemos que modificar a funo, sempre que houvesse alterao na lgica de processamento dos dados. Mas imagi- ne uma empresa grande, com milhares de usurios utilizando a aplicao em Visual Basic. Modificar uma funo interna da aplicao significa ter que reinstalar a aplicao em milhares de estaes de trabalho. A tarefa de manuteno da aplicao atualizada torna-se bastante complicada e dispendiosa em termos de custos e tempo. Se, ao invs de uma funo interna da aplicao, criarmos um stored procedure e fizermos com que o programa chame o stored procedure, para executar os comandos necessrios, teremos mais facilidades no momento de atualizar a aplicao. Pois, neste caso, bastaria alterar o stored procedure no servidor SQL Server 2005 e pronto, a aplicao j passaria a ter acesso a verso modificada, evitando uma reinstalao da aplicao cliente em milhares de estaes de trabalho. Existem solues ainda mais sofisticadas do que a utilizao de stored procedures. So as chamadas aplicaes em n camadas. Este o modelo recomendado pela Microsoft. Falaremos sobre aplicaes de n camadas no Captulo 11. Alm de facilitar a manuteno e alterao das aplicaes, a utilizao de stored procedures nos fornece outras vantagens, dentre as quais destacamos as seguintes: Ocultar a complexidade de acesso ao Banco de Dados: Quando utilizamos a normalizao de tabelas, a tendncia que tenhamos um nmero elevado de tabelas no Banco de Dados. Porm, do ponto de vista do usurio, as consultas por ele executadas envolvem dados de diversas tabelas. Ao invs de fazer com que a aplicao tenha que tratar desta complexidade acessando e consolidando dados de diversas tabelas para exibi-los de uma maneira consolidada para o usurio podemos ocultar esta complexidade num stored procedure. O stored procedure contm todos os comandos necessrios para buscar os dados necessrios e fornece os dados para o usurio. A nica coisa que a nossa aplicao precisa fazer chamar o stored procedure e receber os resultados. Veja que isto simplifica, enormemente, o desenvolvimento de aplicaes. Pode receber parmetros de entrada e retornar resultados, atravs de parmetros de sada: Com isso um stored procedure pode ser desenvolvido, de tal forma que receba parmetros de entrada e, com base nos parmetros recebidos, execute diferentes comandos ou retorne diferentes conjuntos de dados. Reduo no trfego de rede gerado pela aplicao: Esta reduo acontece porque, ao invs de a aplicao enviar um grande nmero de comandos, enviado para o servidor apenas o pedido de execuo do stored procedure e os parmetros de entrada necessrios. O stored procedure executa e retorna somente os resultados, na forma de parmetros de sada. Facilita e centraliza o gerenciamento de permisses: Podemos atribuir permisses em nvel de usurio ou role para a execuo de um stored procedure. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000585 Melhoria na velocidade de execuo: O SQL Server 2005 compila os comandos do stored procedure, na primeira vez que este executado, e mantm estes comandos na memria cache, para agilizar as prximas execues. Isto faz com que as chamadas subseqentes executem bem mais rpido. Temos diversos tipos de stored procedures. Neste captulo aprenderemos a criar os chamados User- defined stored procedures, ou seja, stored procedures criados (definidos) pelo usurio. Podemos criar User-defined stored procedures em qualquer Banco de Dados do usurio. Os tipos de stored procedures existentes so os seguintes: User-defined stored procedures: So criados nos Bancos de Dados do usurio. So utilizados para execuo de tarefas repetitivas, facilitando a manuteno e alterao destas tarefas. Temporary stored procedures: So criados e mantidos pelo prprio SQL Server 2005, no Banco de Dados tempdb. Normalmente, esto associados a tarefas de manuteno e gerenciamento de conexes de usurios com o servidor SQL Server 2005. Podemos ter dois tipos: stored procedures temporrios locais: O nome inicia com o sinal # e somente a conexo que criou um stored procedure temporrio poder execut-lo; ao ser encerrada a conexo, o stored procedure eliminado. Stored procedures temporrios globais: O nome inicia com ## e podem ser executados por todas as conexes ativas com o Banco de Dados, at que a conexo que criou o stored proce- dure seja encerrada, quando ento o stored procedure excludo. System stored procedures: J falamos e utilizamos bastante este tipo de stored procedures. So criados no momento da instalao do SQL Server 2005 e ficam gravados no Banco de Dados master. Iniciam com sp_. So utilizados para uma srie de tarefas de manuteno e gerenciamento dos diversos objetos e configuraes do servidor SQL Server 2005. Extended stored procedures: Executam funes externas ao servidor SQL Server 2005, normalmente funes tpicas do sistema operacional. So criados no momento da instalao do SQL Server 2005 e tem o nome iniciando com xp_. Alguns System stored procedures tm sua funcionalidade baseada na chamada a Extended stored procedures. Ao criarmos um stored procedure, os comandos do stored procedure so verificados em busca de erros de sintaxe. Se houver erros, uma mensagem emitida e o stored procedure no poder ser salvo enquanto os erros no forem corrigidos. Na Figura 10.1, temos um exemplo de uma mensagem de erro, na verificao da sintaxe dos comandos de um stored procedure. Figura 10.1 Erro nos comandos de um stored procedure. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 5860000Curso Completo Agora que j conhecemos o que e quais as vantagens, podemos partir para a criao de stored procedures. CRIANDO STORED PROCEDURES Criar um stored procedure consiste, basicamente, em definir o conjunto de comandos do stored proce- dure e salvar este conjunto com um nome, no Banco de Dados. A exemplo de outros objetos de Banco de Dados, podemos criar um stored procedure, utilizando duas maneiras diferentes: A janela de execuo de comandos T-SQL SQL Server Management Studio Vamos comear pela janela de execuo de comandos T-SQL, para que possamos aprender os diversos comandos que podem ser includos em um stored procedure. CRIANDO STORED PROCEDURES COM A JANELA DE EXECUO DE COMANDOS T-SQL Para criar um stored procedure, utilizamos o comando CREATE PROCEDURE. Ao criarmos stored pro- cedures devemos lembrar dos seguintes detalhes: O tamanho mximo de um stored procedure 128 MB. Convenhamos que mais do que suficiente. Se voc tiver que escrever um stored procedure e este for muito grande, provvel que deva ser adotada outra soluo, como a criao de um objeto COM+ ou um Web Service, na nova arquitetura .net da Microsoft. Somente usurios que so membros da role de servidor sysadmin ou das roles de Banco de Dados db_owner e db_ddladmin tm permisso para executar o comando CREATE PROCE- DURE. Esta permisso pode ser atribuda por membros da role sysadmin, para outros usurios. Em um stored procedures podemos referenciar tabelas, views, outros stored procedures e tabelas temporrias. Podemos incluir, em um stored procedure, qualquer comando T-SQL, com exceo dos seguintes comandos: CREATE PROCEDURE, CREATE DEFAULT, CREATE RULE, CREATE TRIGGER e CREATE VIEW. Sintaxe para o comando CREATE PROCEDURE: CREATE PROCEDURE nome_do_stored_procedure [ {@nome_parmetro1 tipo_de_dados_do_parmetro} [=valor_default] [OUTPUT] ] [,..n] AS comando 1 comando 2 ... comando n proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000587 N O T A Vamos a um exemplo simples. Exemplo prtico: Criar e testar um stored procedure que retorna todos os registros da tabela Pedidos, do Banco de Dados NwindAccess (para detalhes sobre a criao e importao de dados para este Banco de Dados, consulte o Captulo 9), em que o campo PasDeDestino igual a Brasil. Gravar o stored procedure com o nome usp_PedidosDoBrasil. Este stored procedure ser criado no Banco de Dados NwindAccess da instncia SERVIDOR\SQL2005. Estamos utilizando o prefixo usp_ para indicar user stored procedure. Porm esta no uma conveno obrigatria, apenas uma recomendao. Para criar o stored procedure usp_PedidosDoBrasil, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio e navegue at o Banco de Dados NwindAccess, da instncia SERVIDOR\SQL2005. 2. Clique com o boto direito do mouse no Banco de Dados NwindAccess e, no menu de opes que exibido, clique em New Query. 3. Ser aberta a janela de execuo de comandos T-SQL, sendo o Banco de Dados NwindAccess, o Banco de Dados atual. Execute o seguinte comando: USE NwindAccess GO CREATE PROCEDURE usp_PedidosDoBrasil AS SELECT * FROM Pedidos WHERE PasDeDestino = Brasil O comando executado e a seguinte mensagem exibida: Command(s) completed successfully. Figura 10.2 A execuo do stored procedure usp_PedidosDoBrasil. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 5880000Curso Completo 4. Agora podemos executar o stored procedure sempre que for necessrio. Para execut-lo, exe- cute o seguinte comando: exec usp_PedidosDoBrasil O stored procedure executado, os comandos que o compem so executados e os resultados, retornados (somente os pedidos para o Brasil), conforme indicado na Figura 10.2. Muito bem, acabamos de criar e de executar o nosso primeiro stored procedures. Vamos continuar avanando no nosso estudo. No prximo tpico, tratarei sobre a criao de stored procedures que aceitam parmetros de entrada. CRIANDO STORED PROCEDURES COM PARMETROS DE ENTRADA A utilizao de parmetros de entrada permite a criao de stored procedures mais flexveis. Vamos considerar o stored procedure usp_PedidosDoBrasil, criado no exemplo anterior. Da maneira como foi criado, sem parmetros de entrada, o critrio de pesquisa ser sempre o mesmo: PasDeDestino = Brasil. Podemos criar um stored procedure mais genrico, o qual aceita o nome do Pas de Destino como parmetro de entrada e retorna somente os pedidos para o pas passado como parmetro de entrada. Para criar um stored procedure com um ou mais parmetros de entrada, utilizamos a seguinte sintaxe: CREATE PROCEDURE nome_StorProc @nome_parmetro tipo_parmetro AS comando 1 comando 2 ... comando n Caso tenhamos mais do que um parmetro de entrada, devemos separ-los por vrgula, conforme indicado a seguir: CREATE PROCEDURE @nome_parmetro1 tipo_parmetro1, @nome_parmetro2 tipo_parmetro2, ... @nome_parmetron tipo_parmetron AS comando 1 comando 2 ... comando n Para utilizar o parmetro nos comandos do stored procedure, basta utilizar @nome_do_parmetro. Vamos a alguns exemplos prticos, os quais facilitaro o entendimento desta sintaxe. Exemplo 1: Criar um stored procedure chamado usp_Pedidos_PaisParametro. Este store procedure ser criado no Banco de Dados NwindAccess, da instncia SERVIDOR\SQL2005. O stored procedure deve aceitar um parmetro de entrada chamado Pais, o qual do tipo nvarchar(25), e usar o valor passado proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000589 neste parmetro como critrio de pesquisa, para retornar apenas os pedidos para o pas passado como parmetro de entrada. Para criar o stored procedure usp_Pedidos_PaisParametro, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio e navegue at o Banco de Dados NwindAccess, da instncia SERVIDOR\SQL2005. 2. Clique com o boto direito do mouse no Banco de Dados NwindAccess e, no menu de opes que exibido, clique em New Query. 3. Ser aberta a janela de execuo de comandos T-SQL, sendo o Banco de Dados NwindAccess o Banco de Dados atual. Execute o seguinte comando: 4. Digite o seguinte comando: USE NwindAccess GO CREATE PROCEDURE usp_Pedidos_PaisParametro @Pais nvarchar(25) AS SELECT * FROM Pedidos WHERE PasDeDestino = @Pais 5. Para executar o stored procedure usp_Pedidos_PaisParametro, passando Campinas como parmetro, utilizamos o seguinte comando: Execute usp_Pedidos_PaisParametro EUA Na Figura 10.3, temos os resultados da execuo do stored procedure, com EUA sendo passado como parmetro de entrada. Figura 10.3 Execuo de um stored procedure com valor do parmetro de entrada = EUA. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 5900000Curso Completo 6. Para executar o stored procedure usp_Pedidos_PaisParametro, passando Frana como parmetro, utilizamos o seguinte comando: Execute usp_Pedidos_PaisParametro Frana Na Figura 10.4, temos os resultados da execuo do stored procedure, com Frana sendo passado como parmetro de entrada. Figura 10.4 Execuo de um ptored procedure com valor do parmetro de entrada = Frana. Observe que agora temos um stored procedure bem mais flexvel, onde podemos informar o critrio de pesquisa para o campo PasDeDestino, simplesmente passando um valor para o parmetro de entrada. 7. Mantenha a janela de execuo de comandos T-SQL aberta, pois vamos continuar a utiliz-la, no prximo exemplo. Exemplo prtico 02: Criar um stored procedure chamado usp_Ped_Cid_Pas. Este ser criado no Banco de Dados NwindAccess, da instncia SERVIDOR\QL2005. O stored procedure deve aceitar dois parmetros de entrada: um chamado cidade, o qual do tipo nvarchar(15), e outro chamado pas, o qual do tipo nvarchar(15). O stored procedure usar os valores passados nestes parmetros como critrios de pesquisa, para retornar apenas os pedidos para a cidade e pas de destino passados como parmetros. Para criar o stored procedure usp_Ped_Cid_Pas, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio e navegue at o Banco de Dados NwindAccess, da instncia SERVIDOR\SQL2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000591 2. Clique com o boto direito do mouse no Banco de Dados NwindAccess e, no menu de opes que exibido, clique em New Query. 3. Ser aberta a janela de execuo de comandos T-SQL, sendo o Banco de Dados NwindAccess o Banco de Dados atual. Execute o seguinte comando: 4. Digite o seguinte comando: USE NwindAccess GO CREATE PROCEDURE usp_Ped_Cid_Pas @cidade nvarchar(15), @pas nvarchar(15) AS SELECT * FROM Orders WHERE (CidadeDeDestino = @cidade) and (PaisDeDestino=@pas) 5. Para executar o stored procedure usp_Ped_Cid_Pas, passando Buenos Aires como valor para o parmetro cidade, e Argentina como valor para o parmetro pas, utilizamos o seguinte comando: Execute usp_Ped_Cid_Pas Buenos Aires, Argentina 6. Para executar o stored procedure usp_Ped_Cid_Pas, passando Sao Paulo como valor para o parmetro cidade, e Alemanha como valor para o parmetro pas, utilizamos o seguinte comando: Execute usp_Ped_Cid_Pas Sao Paulo, Alemanha Evidentemente que esta ltima execuo no ir retornar nenhum registro, apenas a seguinte mensagem ser exibida: (0 row(s) affected) Se passarmos apenas o parmetro cidade, ignorando o parmetro pas, conforme indicado no seguinte comando: Execute usp_Ped_Cid_Pas Sao Paulo iremos obter a seguinte mensagem de erro: Msg 201, Level 16, State 4, Procedure usp_Ped_Cid_Pas, Line 0 Procedure or Function usp_Ped_Cid_Pas expects parameter @pas, which was not supplied.. Observe que a mensagem informa que esperado um parmetro chamado pas (@pas) e que este parmetro no foi informado, ao ser feita a execuo do stored procedure. Se passarmos parmetros a mais, conforme indicado no seguinte comando: Execute usp_Ped_Cid_Pas Sao Paulo, Alemanha, 12/06/2001 iremos obter a seguinte mensagem de erro: Msg 8144, Level 16, State 2, Procedure usp_Ped_Cid_Pas, Line 0 Procedure or function usp_Ped_Cid_Pas has too many arguments specified. 7. Feche a janela de execuo de comandos T-SQL. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 5920000Curso Completo UTILIZANDO ESTRUTURAS DE DECISO EM UM STORED PROCEDURE A linguagem que utilizamos para os comandos de um stored procedure a linguagem T-SQL. Como toda linguagem que se preza, temos estruturas de deciso na linguagem T-SQL. A seguir, vamos apresentar as principais estruturas de controle disponveis. A ESTRUTURA IF...ELSE Este o bom e velho IF que existe em qualquer linguagem. A estrutura do IF...ELSE a seguinte: IF Teste_booleano Comandos se o teste for verdadeiro ELSE Comandos se o teste for falso Vamos a um exemplo prtico: Criar um stored procedure que recebe o nome de dois pases como parmetros de entrada. O stored procedure conta o nmero de pedidos enviados para cada pas. O nmero de pedidos de cada pas armazenado em uma varivel local do stored procedure. Depois, um teste efetuado, utilizando a clusula IF...ELSE e diferentes mensagens sero emitidas, dependendo de o teste ser verdadeiro ou falso. O stored procedure ser criado como o nome usp_ExIF e ser gravado no Banco de Dados NwindAccess. As pesquisas sero feitas na tabela Pedidos do Banco de Dados NwindAccess, da instncia SERVIDOR\SQL2005. O comando para criar o stored procedure proposto o seguinte: USE NwindAccess GO CREATE PROCEDURE usp_ExIF @pas1 nvarchar(15), @pas2 nvarchar(15) AS Cria as variveis locais DECLARE @TotPed1 int, @TotPed2 int DECLARE @mensagem1 Char(100), @mensagem2 Char(100) Define o valor de cada varivel SET @TotPed1 = (SELECT Count(NmeroDoPedido) FROM Pedidos WHERE PasDeDestino=@pas1) SET @TotPed2 = (SELECT Count(NmeroDoPedido) FROM Pedidos WHERE PasDeDestino=@pas2) Executo o teste, utilizando IF...ELSE IF (@TotPed1) > (@TotPed2) BEGIN SET @mensagem1= O Nmero de pedidos do primeiro pas maior Print(@mensagem1) END ELSE BEGIN SET @mensagem2= O Nmero de pedidos do segundo pas maior Print(@mensagem2) END Para executarmos este stored procedure, utilizamos o seguinte comando: exec usp_ExIF Brasil,EUA proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000593 O stored procedure usp_ExIF executado e a seguinte mensagem emitida: O Nmero de pedidos do segundo pas maior Como somos um pouco desconfiados, vamos conferir se o stored procedure est funcionando corretamente. Para isso, vamos simplesmente inverter os dois parmetros, conforme indicado no comando a seguir: exec usp_ExIF EUA,Brasil O stored procedure usp_ExIF executado e a seguinte mensagem emitida: O Nmero de pedidos do primeiro pas maior Isto confirma o funcionamento do nosso stored procedure. Como ns estamos com ms intenes, vamos tentar confundir o stored procedure usp_ExIF. Vamos passar o mesmo pas para os dois parmetros, conforme indicado no comando a seguir: exec usp_ExIF EUA,EUA O stored procedure usp_ExIF executado e a seguinte mensagem emitida: O Nmero de pedidos do segundo pas maior Opa !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Um pequeno bug no nosso stored procedure? isso mesmo. Observe o seguinte trecho de cdigo: IF (@TotPed1) > (@TotPed2) BEGIN SET @mensagem1= O Nmero de pedidos do primeiro pas maior Print(@mensagem1) END ELSE BEGIN SET @mensagem2= O Nmero de pedidos do segundo pas maior Print(@mensagem2) END Veja que apenas testamos se o nmero de pedidos do pas 1 maior do que o nmero de pedidos do pas 2 (IF (@TotPed1) > (@TotPed2)). Se o nmero de pedidos for igual o que aconteceu quando passamos o mesmo pas para os dois parmetros de entrada , o teste falha e sero executados os comandos da parte ELSE. Para corrigir este pequeno bug, temos que alterar o stored procedure, prevendo uma terceira situao, na qual o nmero de pedidos dos dois pases igual. Bem, digamos que este foi um bug introduzido de propsito. Pois agora aprenderemos dois novos detalhes: A estrutura IF com mais do que um ELSE. O comando ALTER PROCEDURE, para alterar um stored procedure j existente. Exemplo prtico: Utilizar o comando ALTER PROCEDURE, para alterar o stored procedure usp_ExIF e corrigir o bug existente. Para fazer esta alterao, utilizamos o seguinte comando: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 5940000Curso Completo N O T A USE NwindAccess GO ALTER PROCEDURE usp_ExIF @pas1 nvarchar(15), @pas2 nvarchar(15) AS Cria as variveis locais DECLARE @TotPed1 int, @TotPed2 int DECLARE @mensagem1 Char(100), @mensagem2 Char(100) DECLARE @mensagem3 Char(100) Define o valor de cada varivel SET @TotPed1 = (SELECT Count(NmeroDoPedido) FROM Pedidos WHERE PasDeDestino=@pas1) SET @TotPed2 = (SELECT Count(NmeroDoPedido) FROM Pedidos WHERE PasDeDestino=@pas2) Executo o teste, utilizando IF...ELSE IF (@TotPed1) > (@TotPed2) BEGIN SET @mensagem1= O Nmero de pedidos do primeiro pas maior Print(@mensagem1) END ELSE IF (@TotPed1)<(@TotPed2) BEGIN SET @mensagem2= O Nmero de pedidos do segundo pas maior Print(@mensagem2) END ELSE BEGIN SET @mensagem3= O Nmero de pedidos dos dois pases igual Print(@mensagem3) END Observe que, para alterar o stored procedure, utilizamos o comando ALTER PROCEDURE e, aps a clusula AS, temos que informar todos os comandos que iro redefinir o stored procedure. Os comandos informados iro substituir o conjunto de comandos existentes. Somente o dono do stored procedure e as roles sysadmin, db_owner e db_ddladmin que tm permisso para executar o comando ALTER PROCEDURE. Esta permisso no pode ser atribuda a outros usurios ou roles. Vamos testar novamente o stored procedure. Para executarmos este stored procedure, utilizamos o seguinte comando: exec usp_ExIF Brazil,EUA O stored procedure usp_ExIF executado e a seguinte mensagem emitida: O Nmero de pedidos do segundo pas maior OK. Este o resultado esperado. Vamos continuar nossos testes. Execute o seguinte comando: exec usp_ExIF EUA,Brasil proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000595 O stored procedure usp_ExIF executado e a seguinte mensagem emitida: O Nmero de pedidos do primeiro pas maior Maravilha. Estamos quase l. S falta o derradeiro teste. Execute o seguinte comando: exec usp_ExIF EUA,EUA O stored procedure usp_ExIF executado e a seguinte mensagem emitida: O Nmero de pedidos dos dois pases igual Maravilha !!!!!!!!!!!!!!! Isto comprova que o bug foi corrigido. Mais alguns comentrios sobre o exemplo anterior: Utilizamos a clusula DECLARE, para declarar variveis locais, que so utilizadas pelo stored procedure. A sintaxe para o comando DECLARE a seguinte: DECLARE @varivel1 tipo, @varivel2 tipo Para atribuir valores a uma varivel local, utilizamos o comando SET. A sintaxe para o comando SET a seguinte: SET @varivel = valor Observe que o resultado retornado, por um comando SELECT, foi atribudo a uma varivel local, como no exemplo: SET @TotPed1 = (SELECT Count(NmeroDoPedido) FROM Pedidos WHERE PasDeDestino=@pas1) SET @TotPed2 = (SELECT Count(NmeroDoPedido) FROM Pedidos WHERE PasDeDestino=@pas2) Agora vamos aprender mais uma estrutura de controle. A ESTRUTURA WHILE...CONTINUE Esta estrutura faz com que um conjunto de comandos continue sendo executado, enquanto uma determinada condio for verdadeira. A sintaxe para este comando a seguinte: WHILE Teste BEGIN Comando1 Comando2 ... Comandon END Enquanto o teste for verdadeiro, os comandos dentro do bloco BEGIN...END continuaro a ser executados. Quando a condio tornar-se falsa, a execuo continua no primeiro comando aps o CONTINUE. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 5960000Curso Completo N O T A Os comandos dentro do bloco BEGIN...END devem modificar o valor da varivel (ou variveis) que est sendo testada no incio do lao WHILE; caso contrrio, a condio nunca se tornar falsa e o lao continuar executando sem parar. Veja o exemplo a seguir. Exemplo: Vamos criar uma tabela chamada SomaNaturais. Esta tabela ser criada no Banco de Dados NwindAccess e ter a seguinte estrutura: Campo Tipo Nmero float SomaAcumulada float Tabela 10.1 Estrutira da tabela SomaNaturais. Aps criar a tabela SomaNaturais, vamos criar um stored procedure chamado usp_CalculaSoma, o qual calcula a soma dos n primeiros nmeros inteiros e armazena a soma nas respectivas colunas, conforme indicado no exemplo a seguir: Nmero Soma Acumulada 1 1 2 3 3 6 4 10 5 15 Tabela 10.2 Valores da Soma no campo Soma Acumulada. E assim por diante. O valor de n ser passado como parmetro de entrada para o stored procedure. O primeiro passo criar a tabela SomaNaturais. Para isto utilizamos o seguinte comando: USE NwindAccess GO CREATE TABLE SomaNaturais ( Nmero float, SomaAcumulada float ) Agora vamos criao do stored procedure: USE NwindAccess GO CREATE PROCEDURE usp_CalculaSoma @numero int AS Cria uma varivel para controle do lao proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000597 N O T A e inicializa a varivel com o valor 1. DECLARE @contador int SET @contador = 1 Cria uma varivel para a soma e inicializa a varivel com o valor 0. DECLARE @soma float SET @soma = 0 WHILE (@contador<=@numero) BEGIN SET @soma = @soma + @contador INSERT INTO SomaNaturais VALUES (@contador,@soma) SET @contador = @contador + 1 END Observe o comando SET @contador = @contador + 1, no interior da estrutura WHILE. Se no colocssemos este comando, a varivel @contador jamais se tornaria igual ao parmetro @numero e o lao WHILE entraria em execuo infinita. A criao de laos infinitos uma das causas mais comuns para o travamento de programas. Agora vamos testar o stored procedure usp_CalculaSoma. Vamos passar como parmetro o nmero 10. Para isso utilizamos o seguinte comando: EXEC usp_CalculaSoma 10 A execuo deste comando retorna a seguinte mensagem: (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) Agora vamos dar um SELECT na tabela SomaNaturais. Utilize o seguinte comando: SELECT * FROM SomaNaturais Voc obter o seguinte resultado: Nmero SomaAcumulada 1.0 1.0 2.0 3.0 3.0 6.0 Tabela 10.3 Resultado da execuo do Stored Procedure. Continua proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 5980000Curso Completo Isto comprova que o stored procedure usp_CalculaSoma est funcionando corretamente. Poderamos fazer uma pequena modificao nele. Se executarmos novamente o usp_CalculaSoma, os registros existentes na tabela SomaNaturais sero mantidos e novos registros sero includos. O ideal que somente sejam mantidos os registros da ltima execuo. Para isso, basta excluirmos os registros j existentes. Isto feito com um comando SQL que exclui todos os registros da tabela SomaNaturais, antes de entrar na estrutura WHILE. Vamos alterar o stored procedure usp_CalculaSoma para inserir este comando SQL. Para isso, utilizamos o seguinte comando: USE NwindAccess GO ALTER PROCEDURE usp_CalculaSoma @numero int AS Elimina os registros da tabela SomaNaturais DELETE SomaNaturais Cria uma varivel para controle do lao e inicializa a varivel com o valor 1. DECLARE @contador int SET @contador = 1 Cria uma varivel para a soma e inicializa a varivel com o valor 0. DECLARE @soma float SET @soma = 0 WHILE (@contador<=@numero) BEGIN SET @soma = @soma + @contador INSERT INTO SomaNaturais VALUES (@contador,@soma) SET @contador = @contador + 1 END DEFININDO PARMETROS DE SADA (OU DE RETORNO) PARA UM STORED PROCEDURE Assim como podemos passar valores, na forma de parmetros de entrada, tambm podemos receber valores do stored procedure, na forma de parmetros de sada. Para definir que um Nmero SomaAcumulada 4.0 10.0 5.0 15.0 6.0 21.0 7.0 28.0 8.0 36.0 9.0 45.0 10.0 55.0 Continuao proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000599 parmetro de sada, basta colocar a palavra OUTPUT aps a definio do tipo do parmetro, como no exemplo a seguir: CREATE PROCEDURE usp_ParamSaida @paramsaida int OUTPUT Podemos ter um ou mais parmetros de sada. Nos comandos que definem o stored procedure atribumos um valor ao parmetro de sada, utilizando o comando SET. Ao ser executado o stored procedure, o SQL Server retorna o valor associado com um ou mais parmetros de sada. Vamos a um exemplo prtico. Exemplo: Criar um stored procedure que retorna o valor mdio dos pedidos para um pas que passado como parmetro de entrada. Criar o stored procedure no Banco de Dados NwindAccess, com o nome de usp_MdiaPedidosPas. Para criar o stored procedure usp_MdiaPedidosPas, utilizamos o seguinte comando: USE NwindAccess GO CREATE PROCEDURE usp_MdiaPedidosPas @pas varchar(15), @mdia float OUTPUT AS SET @mdia= (SELECT AVG(([Quantidade]*[PreoUnitrio]) * (1-[Desconto])) AS Media FROM [Pedidos]INNER JOIN [Detalhes do Pedido] ON [Pedidos].[NmeroDoPedido] = [Detalhes do Pedido].[NmeroDoPedido] WHERE ([PasDeDestino]=@pas)) Observe que executamos um comando SELECT que calcula a mdia para o pas passado no parmetro de entrada @pas. O resultado deste comando SELECT atribudo varivel de sada @mdia. Vamos execuo deste stored procedure: DECLARE @Resultado float EXEC usp_MdiaPedidosPas Brasil, @Resultado OUTPUT PRINT (@Resultado) Ser retornado o seguinte resultado: 526.728 Algumas observaes importantes, sobre este exemplo: Temos que especificar o parmetro de sada tanto na criao como na execuo do stored procedure, conforme indicado no exemplo: EXEC usp_MdiaPedidosPas Brasil, @Resultado OUTPUT O stored procedure executado e o valor de retorno armazenado na varivel @resultado. Depois utilizamos o comando Print para exibir o valor desta varivel. O nmero mximo de parmetros incluindo parmetros de entrada e sada 1024. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6000000Curso Completo Agora execute o seguinte comando: DECLARE @Resultado float EXEC usp_MdiaPedidosPas EUA, @Resultado OUTPUT PRINT (@Resultado) Ser retornado o seguinte resultado: 697.684 EXCLUINDO UM STORED PROCEDURE Para excluir um stored procedure, executamos o comando DROP PROCEDURE. Por exemplo, para excluir o stored procedure usp_MdiaPedidosPas, criado no exemplo anterior, utilizamos o seguinte comando: DROP PROCEDURE usp_MdiaPedidosPas Podemos excluir mais do que um stored procedure, passando o nome dos vrios stored procedures a serem excludos, separando o nome por vrgulas, conforme indicado no exemplo a seguir: DELETE PROCEDURE proc1, proc2, ..., procn CRIANDO STORED PROCEDURES COM O SQL SERVER MANAGEMENT STUDIO Podemos utilizar o SQL Server Management Studio para criar stored procedures. CRIANDO STORED PROCEDURES COM A OPO NEW STORED PROCEDURES O menu New stored procedure acessado clicando com o boto direito do mouse na opo Program- mability -> stored procedures, do Banco de Dados onde ser criado o stored procedure. Ao clicarmos na opo New stored procedure, surge a janela indicada na Figura 10.5. Nesta janela definimos o nome do stored procedure, no campo Stored procedure name. A criao do stored procedure se resume a definio de seus comandos. Assim, temos que conhecer a linguagem T-SQL, pois, mesmo utilizando a opo New stored procedure, teremos que digitar os comandos, no tem outro jeito. Por exemplo, para criar um stored procedure chamado usp_PedidosBrAlAr, definiramos os comandos de criao, conforme indicado na Figura 10.6. Para verificar se a sintaxe dos comandos est correta, clique com o boto direito do mouse em qualquer uma das linhas de comando e, no menu de opes que exibido, clique em Check Sintax. Se os comandos estiverem corretos, ser emitida a mensagem indicada na Figura 10.7. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000601 Figura 10.5 Janela para criao de um novo stored procedure. Figura 10.6 Criando o stored procedure usp_PedidosBrAlAr. Figura 10.7 Syntax dos comandos OK. Uma vez definidos os comandos que faro parte do stored procedure, pressione Ctrl+S para salv-lo e feche a janela de criao do stored procedure (clique no boto x mais de baixo). O stored procedure, recm-criado, j deve aparecer na lista de stored procedures do Banco de Dados. Caso isso no acontea, d um clique na opo stored procedures e pressione a tecla F5 para atualizar a listagem. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6020000Curso Completo N O T A No temos como executar o stored procedure utilizando a interface do Enterprise Manager. Para testar o usp_PedidosBrAlAr, abra a janela de execuo de comandos T-SQL e execute o seguinte comando: USE NwindAccess EXEC usp_PedidosBrAlAr Sero retornados apenas os pedidos para o Brasil, Alemanha e Argentina. Voc pode renomear um stored procedure. Para isso, d um clique com o boto direito do mouse no stored procedure e, no menu que surge, d um clique em Rename. Digite o novo nome e pressione ENTER. Se voc renomear um stored procedure que est sendo chamado dentro de outros stored procedures, ou que est sendo chamado dentro de uma aplicao, os stored procedures e as aplicaes que chamam o stored procedure renomeado tero que ser atualizados, caso contrrio deixaro de funcionar corretamente. VERIFICANDO INFORMAES SOBRE OS STORED PROCEDURES DE UM BANCO DE DADOS Existem algumas System stored procedures que nos fornecem informaes sobre os stored procedures existentes em um Banco de Dados. O COMANDO SP_HELP Podemos utilizar o stored procedure sp_help, para obter informaes sobre qualquer objeto do Banco de Dados. A sintaxe para este comando a seguinte: exec sp_help nome_do_stored_procedure. Por exemplo, para obter informaes sobre o stored procedure usp_PedidosBrAlAr, utilizamos o seguinte comando: USE NwindAccess exec sp_help usp_PedidosBrAlAr Sero retornadas as seguintes informaes: Name Owner Type Created_datetime usp_PedidosBrAlAr dbo stored procedure 2005-05-28 19:48:32.123 O COMANDO SP_HELPTEXT Podemos utilizar o stored procedure sp_helptext, para exibir os comandos do stored procedure, desde que este no tenha sido criado com a opo WITH ENCRYPTION. A sintaxe para este comando a seguinte: exec sp_helptext nome_do_stored_procedure proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000603 Por exemplo, para obter informaes sobre os comandos do stored procedure usp_PedidosBrAlAr, utilizamos o seguinte comando: USE NwindAccess exec sp_helptext usp_PedidosBrAlAr Sero retornadas as seguintes informaes: Text CREATE PROCEDURE [usp_PedidosBrAlAr] AS SELECT * From Pedidos WHERE PasDeDestino IN (Brasil,Argentina,Alemanha) ORDER BY PasDeDestino ou seja, exatamente os comandos que definem o stored procedure. O COMANDO SP_STORED_PROCEDURES Este comando simplesmente retorna uma listagem dos stored procedures existentes no Banco de Dados atual. Por exemplo, para obter uma listagem de todos os stored procedures do Banco de Dados NwindAccess, execute o seguinte comando: USE Northwind exec sp_stored_procedures Com isto, encerramos o nosso estudo bsico sobre stored procedures. Existem livros inteiros sobre a criao de stored procedures e a linguagem T-SQL. No Books OnLine, existe uma referncia completa da linguagem T-SQL, a qual acessada atravs da opo: SQL Server Language Reference -> Transact-SQL Reference. Agora vamos ao estudo de triggers. DESENVOLVIMENTO EM: TEORIA E DESENVOLVIMENTO DE TRIGGERS NO SQL SERVER 2005 PR-REQUISITOS Fundamentos apresentados na Parte I. Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL. Noes sobre integridade de dados e os tipos de integridade de dados existentes no SQL Server 2005. Noes sobre os comandos bsicos da linguagem T-SQL. METODOLOGIA Apresentao do conceito de triggers e dos principais comandos para a criao e utilizao de triggers. TCNICA Utilizao da janela de execuo de comandos T-SQL e do SQL Server Management Studio para a criao e execuo de triggers. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6040000Curso Completo Uma trigger um tipo especial de stored procedure, que executado automaticamente, quando ocorrem operaes INSERT, UPDATE ou DELETE, na tabela na qual a trigger foi configurada. Chamamos este executar automaticamente de disparar a trigger. Podemos ter triggers associadas com uma ou mais das operaes que alteram dados. Por exemplo, podemos ter uma trigger associada com a operao INSERT, porm no ter nenhuma trigger associada com as operaes UPDATE e DELETE. Triggers somente so executadas automaticamente, no podendo ser executadas atravs da utilizao do comando Exec. Uma trigger sempre associada a uma tabela, porm os comandos que formam a trigger podem acessar dados de outra tabela do mesmo Banco de Dados. Por exemplo, podemos criar uma trigger para a operao INSERT na tabela Detalhes do Pedido. Sempre que for inserido um novo item de pedido (operao INSERT) ser disparada uma trigger que atualiza o nvel de estoque do produto que est sendo vendido. Com o uso de triggers, podemos definir regras mais complexas do que com a utilizao de uma constraint do tipo CHECK. Estas regras mais complexas so conhecidas como Regras do Negcio, ou seja, um conjunto de regras que define relaes entre os dados do Banco de Dados. Estas relaes representam regras do mundo real. Por exemplo, podemos ter uma regra que impea um gerente de aprovar financiamentos maiores do que um determinado valor. Neste caso, quando o gerente for inserir um novo financiamento no Banco de Dados, podemos criar uma trigger que verifica se o valor do financiamento est dentro do limite definido pela empresa, para este gerente. Caso o valor esteja dentro do limite, o registro inserido no Banco de Dados; caso contrrio, o registro rejeitado e uma ao, como por exemplo enviar um e-mail para o chefe imediato, pode ser automaticamente executada pela trigger. Vamos tornar um pouco mais complexa a nossa regra de negcio do exemplo anterior. Vamos supor que o gerente no tenha um limite individual para cada financiamento que aprova, mas sim um limite mensal, isto , a soma de todos os emprstimos aprovados por um gerente, dentro do ms corrente, no pode ultrapassar um determinado valor. Esta regra, aparentemente complexa, tambm pode ser implementada atravs de uma trigger. Quando o gerente tenta inserir um novo emprstimo, a trigger faz a totalizao dos emprstimos j feitos pelo gerente, durante o ms corrente, j incluindo o valor do emprstimo que est sendo inserido. Se o somatrio estiver abaixo do limite definido pelo gerente, o novo emprstimo inserido, caso contrrio o novo emprstimo ser rejeitado e uma ao ser tomada pela trigger. Alm de regras de negcios, podemos utilizar triggers para modificaes em cascata, em tabelas do Banco de Dados. Por exemplo, suponha que voc esteja excluindo um cliente da tabela Clientes. Podemos criar uma trigger associada ao DELETE da tabela Clientes, a qual exclui todos os pedidos (na tabela Pedidos) do cliente que est sendo excludo. Na tabela Pedidos, podemos ter uma trigger associada ao DELETE, que exclui todos os itens, na tabela Detalhes do Pedido, do pedido que est sendo excludo da tabela Pedidos. Estes itens esto gravados em uma tabela Detalhes do pedido. Alm da excluso, tambm podemos criar triggers que faam atualizao em cascata. Por exemplo, se alterarmos o cdigo de um cliente, na tabela Clientes (ao UPDATE), podemos fazer com que uma trigger altere o cdigo nos pedidos do cliente, na tabela Pedidos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000605 N O T A Uma trigger somente executada aps o comando que a disparou ter sido completado. Por exemplo, se tivermos uma trigger associada com uma ao INSERT, a trigger no ser disparada enquanto a ao INSERT no tiver sido concluda. Porm, uma trigger includa como parte de uma transao, juntamente com o comando que a disparou. No nosso exemplo, o comando INSERT e a trigger estariam no contexto de uma transao. Se o comando INSERT violar alguma regra definida pela trigger, podemos utilizar um roll back na trigger, para cancelar a insero dos dados feitos pelo comando INSERT. Este mecanismo ilustrado na Figura 10.8. Figura 10.8 Trigger no contexto de uma transao. Se o comando, que est sendo executado (INSERT, DELETE ou UPDATE), violar a definio de uma constraint definida para uma das colunas da tabela, a trigger no ir disparar. Alm disso, uma trigger dispara uma nica vez para cada comando, mesmo que o comando altere dados em diversos registros. Por exemplo, um comando UPDATE que aumenta em 20% o valor do campo PreoUnitrio de todos os registros. Para este comando, a trigger associada ir disparar uma nica vez e no uma vez para cada registro que for alterado. Podemos ter mais do que uma trigger definida para uma mesma ao INSERT, UPDATE ou DELETE. No existe uma ordem definida para a execuo de mltiplas triggers associadas com o mesmo comando. A utilizao de mltiplas triggers para o mesmo comando no uma prtica muito comum e no recomendada, pois torna difcil o acompanhamento e o gerenciamento da lgica associada ao Banco de Dados. O usurio dono da tabela (dbo) e membros das roles sysadmin, db_owner e db_ddladmin tm permisso para criar e excluir triggers. Estas permisses no podem ser transferidas para outros usurios e roles. Alm disso, o usurio dono da trigger deve ter permisso para executar todos os comandos que fazem parte da trigger. Por exemplo, se a trigger precisa excluir dados em uma determinada tabela, o usurio que a cria precisa ter permisso para excluir dados nesta tabela. Se o usurio que criou a trigger no tiver permisso para executar qualquer um dos comandos que a compem, a trigger ir falhar e um roll back ser utilizado para reverter as alteraes feitas pela trigger e pelo comando que disparou. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6060000Curso Completo No SQL Server 2005, temos cinco tipos de triggers, conforme o comando com a qual a mesma associada: DELETE. INSERT. UPDATE. INSTEAD OF. AFTER. .NET (novidade no SQL Server 2005). Uma trigger dos tipos DELETE, INSERT e UPDATE disparada quando os respectivos comandos so executados. Uma trigger do tipo INSTEAD OF disparada em substituio a uma das triggers DELETE, INSERT ou UPDATE. Podemos criar triggers INSTEAD OF relacionadas com qualquer um dos comandos DELETE, INSERT ou UPDATE. J uma trigger do tipo AFTER disparada aps todos os comandos de uma trigger associada com um DELETE, INSERT ou UPDATE terem sido executados. Se tivermos mltiplas triggers AFTER definidas em uma determinada tabela, para um determinado conjunto de comandos, podemos especificar a ordem de execuo das diversas triggers do tipo AFTER. Uma novidade introduzida com o SQL Server 2000 que podemos especificar triggers em views que alteram dados. J o SQL Server 2005 introduziu as chamadas .NET Triggers. Este tipo de trigger pode ser tanto do tipo INSTEAD OF quanto do tipo AFTER. A novidade que um .NET Trigger, ao invs de executar comandos T-SQL, capaz de chamar cdigo de um mdulo .NET, o qual foi instalado no SQL Server 2005. A integrao do SQL Server 2006 com o Framework .NET , sem dvidas, a principal novidade de programao do SQL Server 2005. Foge ao escopo deste livro abordar todas as possibilidades de desenvolvimento da integrao entre o SQL Server 2005 e o .NET. Existem livros inteiros, s sobre esta integrao. Para comear a estudar esta integrao, eu sugiro o seguinte livro: A First Look at SQL Server 2005 for Developers, Editora Addison Wesley, autores: Bob Beauchemin, Niels Berglund e Dan Sullivan. Os comandos que compem uma trigger tm acesso a duas tabelas especiais. Estas tabelas so chamadas de deleted table e inserted table. Estas tabelas somente existem na memria do servidor, no sendo gravadas em disco. Os registros destas tabelas somente so acessveis durante a execuo da trigger. Para fazer referncia a estas tabelas, dentro de uma trigger, utilizamos os nomes deleted e inserted. A tabela deleted armazena cpias dos registros afetados por um comando DELETE ou UPDATE (armazena o registro antes das alteraes). Quando um comando DELETE ou UPDATE executado, os registros so excludos da tabela em questo e armazenados na tabela deleted. No caso de registros que esto sendo alterados, na tabela deleted fica uma cpia do registro antes das alteraes. Desta forma, a tabela que est sendo alterada e a tabela deleted jamais tero registros coincidentes. A tabela inserted armazena cpias dos registros afetados por um comando INSERT ou UPDATE. Os registros na tabela inserted so cpias dos novos registros da tabela que disparou a trigger. Bem, j vimos bastante teoria, agora o momento de aprendermos a criar e a testar o funcionamento de triggers. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000607 N O T A CRIANDO TRIGGERS COM COMANDOS T-SQL Para criar triggers utilizamos o comando CREATE TRIGGER. Sintaxe bsica para o comando CREATE TRIGGER: CREATE TRIGGER nome_da_trigger ON {tabela ou view} [WITH ENCRYPTION] {FOR | AFTER | INSTEAD OF} {[DELETE] [,] [INSERT] [,] [UPDATE]} [WITH APPEND] [NOT FOR REPLICATION] AS comando 1 comando 2 comando 3 ... comando n Com este comando podemos criar triggers associadas com qualquer dos comandos bsicos DELETE, INSERT ou UPDATE , e tambm triggers do tipo INSTEAD OF e AFTER. Uma trigger pode ser associada com mais de uma opo, por exemplo, podemos criar uma trigger que dispara em resposta a um comando INSERT e tambm a um comando UPDATE. Nos comandos que definem a trigger (comando 1, ..., comando n), podemos incluir a maioria dos comandos, inclusive as estruturas IF...ELSE e WHILE. No so permitidos os seguintes comandos: ALTER DATABASE CREATE DATABASE DISK INIT DISK RESIZE DROP DATABASE LOAD DATABASE LOAD LOG RECONFIGURE RESTORE DATABASE RESTORE LOG Ao criarmos uma trigger, informaes sobre a trigger so armazenadas nas tabelas de sistema, sysobjects e syscomments. Vamos ver alguns exemplos prticos. medida que formos implementando os exemplos, vou explicando novos conceitos e comandos que forem sendo utilizados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6080000Curso Completo N O T A Exemplo prtico 1: Vamos iniciar com um exemplo simples. Vamos criar uma trigger que evita que sejam inseridos novos clientes na tabela Clientes, do Banco de Dados NwindAccess, em que o campo Pas seja igual a China ou Indonsia. Esta trigger ser criada para a ao INSERT. Vamos cham-la de tg_ExcluiChinaIndonsia. Esta trigger verifica se o campo Pas igual a China ou Indonsia. Em caso afirmativo, um roll back ser chamado para cancelar a insero do registro, caso contrrio a transao ser concluda. Para criar a trigger tg_ExcluiChinaIndonsia, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio e navegue at o Banco de Dados NwindAccess, da instncia SERVIDOR\SQL2005. 2. Clique com o boto direito do mouse no Banco de Dados NwindAccess e, no menu de opes que exibido, clique em New Query. 3. Ser aberta a janela de execuo de comandos T-SQL, sendo o Banco de Dados NwindAccess o Banco de Dados atual. 4. Execute o seguinte comando: USE NwindAccess GO CREATE TRIGGER tg_ExcluiChinaIndonsia ON Customers FOR INSERT AS IF EXISTS(SELECT * FROM inserted WHERE Country IN (China,Indonsia)) PRINT PAS PROIBIDO !!! ELSE PRINT PAS PERMITIDO Observe a utilizao da funo EXISTS(comando SQL). Esta funo retorna verdadeiro, caso o comando SQL retorne algum registro, e falso, caso contrrio. Agora vamos testar o funcionamento da trigger, utilizando um comando INSERT. 5. Execute o seguinte comando: USE NwindAccess GO INSERT INTO [Clientes] ( [CdigoDoCliente],[NomeDaEmpresa],[NomeDoContato],[CargoDoContato], [Endereo],[Cidade],[Regio],[CEP], [Pas], [Telefone], [Fax]) VALUES (xxxxx,Empresa ABC Ltda.,Jos da Silva,Gerente, Rua Riachuelo 80,Santa Maria,Centro,97050-010,China,220-1335,220-1314) Ao executarmos este comando recebemos a seguinte mensagem: PAS PROIBIDO !!! (1 row(s) affected) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000609 Mas, ao invs da mensagem PAS PROIBIDO !!!, ns queremos que a insero do registro seja cancelada, caso o pas seja China ou Indonsia. Para isso, vamos alterar a trigger tg_ExcluiChinaIndonsia. Ao invs da mensagem, vamos dar um roll back. Como a operao INSERT e a trigger ocorrem no contexto de uma transao, conforme descrito anteriormente, ao cancelarmos a transao iremos tambm cancelar a trigger e tambm o comando INSERT. Para alterar uma trigger, utilizamos o comando ALTER TRIGGER. A sintaxe bsica para este comando a seguinte: USE NwindAccess GO ALTER TRIGGER nome_trigger ON nome_tabela FOR { INSERT | UPDATE | DELETE } AS comando 1 comando 2 comando 3 ... comando n 6. Para alterar a trigger tg_ExcluiChinaIndonsia, utilizamos o seguinte comando: USE NwindAccess GO ALTER TRIGGER tg_ExcluiChinaIndonsia ON Clientes FOR INSERT AS IF EXISTS(SELECT * FROM inserted WHERE Pas IN (China,Indonsia)) BEGIN PRINT INSERO DO REGISTRO CANCELADA !!!!!! ROLLBACK END ELSE PRINT PAS PERMITIDO Agora vamos tentar inserir um cliente em que o campo Country igual a Indonsia. Vamos verificar se a trigger foi disparada e depois daremos um SELECT para verificar se a insero do registro foi realmente cancelada. Para inserir um registro em que o pas Indonsia, execute o seguinte comando: USE NwindAccess GO INSERT INTO [Clientes] ( [CdigoDoCliente],[NomeDaEmpresa],[NomeDoContato],[CargoDoContato], [Endereo],[Cidade],[Regio],[CEP], [Pas], [Telefone], [Fax]) VALUES (ABC12,Empresa 123 Ltda.,Para Pedro,Gerente, Rua Riachuelo 444,Porto Alegre,Centro,97051-230,Indonsia,220-4444,223-1344') Este comando retorna a seguinte mensagem: INSERO DO REGISTRO CANCELADA !!!!!! proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6100000Curso Completo 7. Vamos conferir se o comando INSERT realmente foi cancelado. Para verificar se o registro para a Indonsia no foi inserido, execute o seguinte comando: USE Northwind GO SELECT * FROM Customers WHERE CustomerID=ABC12 O resultado ser: (0 row(s) affected) Isto comprova que o comando INSERT, para o cliente ABC12, foi realmente cancelado. Veja que agora temos uma trigger, que dispara sempre que tentarmos inserir um registro na tabela Clientes. Esta trigger verifica se o registro que est sendo inserido possui um valor igual a China ou Indonsia, no campo Pas. Caso o registro tenha um destes valores no campo Pas, a insero do novo registro ser cancelada atravs da utilizao de um comando ROLLBACK. O comando ROLLBACK cancela a execuo da transao, da qual fazem parte a trigger e o comando INSERT que disparou a trigger. Como o comando INSERT faz parte da transao que est sendo cancelada, este cancelado e a insero do registro tambm. 8. Mantenha aberta a janela de execuo de comandos T-SQL. Com este exemplo vimos, na prtica, a ao de uma trigger. Agora, vamos a mais alguns exemplos, para ilustrar outros tipos de triggers. Exemplo prtico 2: Vamos supor que, por ordem da administrao, no devem ser feitas alteraes nem inseres na tabela Clientes. Para garantir que esta norma seja respeitada, voc deve implementar uma trigger, que dispare em resposta aos comandos INSERT e UPDATE na tabela Clientes. Esta trigger deve emitir um aviso de que as alteraes e inseres de clientes esto suspensas e registrar em uma tabela, chamada TentouAlterar, o nome do cliente que se tentou alterar ou inserir e tambm o nome do usurio logado que tentou fazer a insero ou alterao. Vamos chamar esta trigger de tg_NoAlteraInsereCliente. A tabela TentouAlterar ter a estrutura indicada na Tabela 10.4. Campo Tipo Cliente nvarchar(50) Usurio char(30) Tabela 10.4 Estrutura da tabela TentouAlterar. Para criar a trigger tg_NoAlteraInsereCliente, siga os passos indicados a seguir: 1. Voc j deve estar com a janela de execuo de comandos T-SQL aberta. O primeiro passo criar a tabela TentouAlterar. Para isso, execute o seguinte comando: USE NwindAccess CREATE TABLE TentouAlterar ( proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000611 N O T A Cliente nvarchar(50) NOT NULL, Usurio char(30) NOT NULL ) 2. Para criar a trigger tg_NoAlteraInsereCliente, utilize o seguinte comando: USE NwindAccess GO CREATE TRIGGER tg_NoAlteraInsereCliente ON Clientes FOR INSERT,UPDATE AS Varivel que ser utilizada na trigger DECLARE @NomeCliente nvarchar(50) Verificamos se foi feita uma alterao. IF EXISTS(SELECT * FROM deleted) BEGIN Defino o valor da varivel @NomeCliente SET @NomeCliente = (SELECT NomeDaEmpresa FROM deleted) INSERT INTO [TentouAlterar] ([Cliente],[Usurio]) VALUES (@NomeCliente,CURRENT_USER) PRINT VOC NO PODE ALTERAR O REGISTRO DE UM CLIENTE !!!! ROLLBACK END Verifico se foi feita uma insero. ELSE IF EXISTS(SELECT * FROM inserted) BEGIN Defino o valor da varivel @NomeCliente SET @NomeCliente = (SELECT NomeDaEmpresa FROM inserted) INSERT INTO [TentouAlterar] ([Cliente],[Usurio]) VALUES (@NomeCliente,CURRENT_USER) PRINT VOC NO PODE INSERIR NOVOS CLIENTES!!!! ROLLBACK END ELSE BEGIN PRINT ESTA MENSAGEM NUNCA SER EXIBIDA !!!! END Observe que, na definio da trigger, associamos a trigger com as aes INSERT e UPDATE FOR INSERT,UPDATE. Tambm observe a utilizao, novamente, da funo EXISTS. Tambm utilizamos a funo CURRENT_USER para capturar o nome do usurio atualmente logado no SQL Server e que executou o comando INSERT ou UPDATE. Agora vamos testar o funcionamento da trigger, utilizando um comando INSERT. 3. Execute o seguinte comando: USE NwindAccess GO proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6120000Curso Completo INSERT INTO [Clientes] ( [CdigoDoCliente],[NomeDaEmpresa],[NomeDoContato],[CargoDoContato], [Endereo],[Cidade],[Regio],[CEP], [Pas], [Telefone], [Fax]) VALUES (123hh,Empresa hhh Ltda.,Jos Pereira,Gerente, Rua Riachuelo 80,Santa Maria,Centro,97050-010,China,220-1335,220-1314) Voc receber a seguinte mensagem: INSERO DO REGISTRO CANCELADA !!!!!! E agora, Jos? A mensagem no deveria ser: VOC NO PODE INSERIR NOVOS CLIENTES!!!! 4. Acontece que temos uma outra trigger, criada anteriormente, chamada tg_ExcluiChinaIndonsia, a qual tambm est associada com a ao INSERT. Foi esta trigger que disparou, emitiu a mensagem INSERO DO REGISTRO CANCELADA !!!!!! e deu um roll back na transao. Vamos excluir esta trigger. Para excluir uma trigger, utilizamos o comando DROP TRIGGER nome_trigger. Execute o seguinte comando: USE NwindAccess GO DROP TRIGGER tg_ExcluiChinaIndonsia 5. Agora execute novamente o seguinte comando INSERT: USE NwindAccess GO INSERT INTO [Clientes] ( [CdigoDoCliente],[NomeDaEmpresa],[NomeDoContato],[CargoDoContato], [Endereo],[Cidade],[Regio],[CEP], [Pas], [Telefone], [Fax]) VALUES (123hh,Empresa hhh Ltda.,Jos Pereira,Gerente, Rua Riachuelo 80,Santa Maria,Centro,97050-010,China,220-1335,220-1314) Agora a mensagem a seguinte: (1 row(s) affected) VOC NO PODE INSERIR NOVOS CLIENTES!!!! Esta mensagem emitida pela trigger tg_NoAlteraInsereCliente, a qual detectou que tentamos executar uma operao INSERT, na tabela Clientes e impediu que a operao fosse executada. 6. Vamos conferir se a operao realmente foi cancelada. Execute o seguinte comando: USE NwindAccess GO SELECT * FROM Clientes WHERE NomeDaEmpresa=123hh O resultado deve ser: (0 row(s) affected) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000613 Isto comprova que o registro no foi inserido. Agora vamos testar se a trigger est realmente funcionando para alteraes UPDATE. 7. Execute o seguinte comando: USE NwindAccess GO Executo o UPDATE para disparar a trigger. UPDATE [Clientes] SET [CdigoDoCliente] = XXX12, [NomeDaEmpresa] = XXX Ltda., [NomeDoContato] = Jos Costa, [CargoDoContato] = Gerente, [Endereo] = Rua ABC 123, [Cidade] = Lajeado, [Regio] = Central, [CEP] = 11111-111, [Pas] = Brazil, [Telefone] = 111-1111, [Fax] = 111-1111 WHERE [CdigoDoCliente]=RICAR O comando executado e a seguinte mensagem exibida: (1 row(s) affected) VOC NO PODE ALTERAR O REGISTRO DE UM CLIENTE !!!! Esta mensagem emitida pela trigger tg_NoAlteraInsereCliente, a qual detectou que tentamos executar uma operao UPDATE e impediu que a operao fosse executada. 8. Vamos conferir se a operao realmente foi cancelada. Execute o seguinte commando: USE NwindAccess GO SELECT * FROM Clientes WHERE CdigoDoCliente=XXX12 O resultado deve ser: (0 row(s) affected) 9. Isto comprova que o registro no foi alterado. Neste caso inclusive as alteraes em cascata, feitas na tabela Pedidos, foram canceladas. Para comprovar este fato, execute o seguinte comando: USE NwindAccess GO SELECT * FROM Pedidos WHERE CdigoDoCliente=XXX12' O resultado deve ser: (0 row(s) affected) 10. Mantenha a janela de execuo de commandos T-SQL aberta. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6140000Curso Completo Com estes exemplos, podemos ver como uma trigger disparada e como a trigger interage com as tabelas de um Banco de Dados. A utilizao de triggers abre um leque de opes para a implementao de regras de negcio. Quanto mais conhecermos da linguagem T-SQL, mais resultados prticos poderemos obter com a utilizao de triggers. Para uma referncia completa da linguagem T-SQL, consulte o tpico SQL Server Language Reference -> Transact-SQL Reference, no Books OnLine. Agora vamos aprender a criar triggers utilizando o SQL Server Management Studio. CRIANDO TRIGGERS COM O SQL SERVER MANAGEMENT STUDIO Podemos criar, alterar e excluir triggers, utilizando o SQL Server Management Studio. Por exemplo, para gerenciar as triggers da tabela Clientes, do Banco de Dados NwindAccess, da instncia SERVIDOR\SQL2005, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio. 2. Na janela Object Explorer, navegue at a tabela Clientes, do Banco de Dados NwindAccess, da instncia SERVIDOR\SQL2005. 3. D um clique no sinal de + lado da tabela Clientes, para exibir as opes disponveis. Observe que uma das opes Triggers. 4. Clique no sinal de + ao lado da opo Triggers, para exibir as triggers da tabela Clientes. Figura 10.9 Janela para a criao de uma nova trigger. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000615 5. Para criar uma nova trigger, clique com o boto direito do mouse na opo Triggers. No menu de opes que exibido clique em New Trigger. Ser aberta a janela para a criao de uma nova trigger, conforme indicado na Figura 10.9. Nesta janela voc informa o nome da Trigger, o tipo After ou Instead of, e a qual ou quais eventos ela ir responder: INSERT, UPDATE ou DELETE. Voc tambm define algumas outras opes da trigger, tais como se ela ser habilitada ou no, se os comandos sero criptografados ou no e se ela deve ser replicada ou no. Alm destas opes, na parte de baixo, voc define os comandos da trigger. 6. Aps definir as opes e os comandos da trigger, pressione Ctrl+S para salvar a trigger e feche a janela de criao (clique no boto x mais de baixo). 7. Voc tambm pode excluir uma trigger usando o SQL Server Management Studio. Para isso basta clicar na trigger e, no menu de opes que exibido, clicar em Delete. Ser exibida uma janela de confirmao. Clique em OK para confirmar a excluso. 8. Voc tambm pode modificar uma trigger usando o SQL Server Management Studio. Para isso basta clicar na trigger e, no menu de opes que exibido, clicar em Modify. Ser aberta a janela com as configuraes e os comandos da trigger. Faa as modificaes desejadas, pressione Ctrl+S para salvar e feche a janela da trigger. Conforme podemos constatar, a criao, excluso e modificao de triggers com o SQL Server Manage- ment Studio no difere muito da criao com a janela de comandos T-SQL. Em resumo, temos que conhecer a linguagem T-SQL para que possamos criar ou modificar uma trigger. MAIS ALGUNS COMANDOS RELACIONADOS COM TRIGGERS Vamos ver mais alguns comandos relacionados com triggers. Podemos executar estes comandos na janela de execuo de comandos T-SQL. O COMANDO SP_HELPTEXT Este comando retorna o cdigo da trigger. A sintaxe para este comando a seguinte: exec sp_helptext nome_trigger1 Se executarmos o seguinte comando: USE NwindAccess GO exec sp_helptext tg_NoAlteraInsereCliente obteremos o seguinte resultado: CREATE TRIGGER tg_NoAlteraInsereCliente ON Clientes FOR INSERT,UPDATE AS Varivies que sero utilizadas na trigger DECLARE @NomeCliente nvarchar(50) Verificamos se foi feita uma alterao. IF EXISTS(SELECT * FROM deleted) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6160000Curso Completo BEGIN Defino o valor da varivel @NomeCliente SET @NomeCliente = (SELECT NomeDaEmpresa FROM deleted) INSERT INTO [TentouAlterar] ([Cliente],[Usurio]) VALUES (@NomeCliente,CURRENT_USER) PRINT VOC NO PODE ALTERAR O REGISTRO DE UM CLIENTE !!!! ROLLBACK END Verifico se foi feita uma insero. ELSE IF EXISTS(SELECT * FROM inserted) BEGIN Defino o valor da varivel @NomeCliente SET @NomeCliente = (SELECT NomeDaEmpresa FROM inserted) INSERT INTO [TentouAlterar] ([Cliente],[Usurio]) VALUES (@NomeCliente,CURRENT_USER) PRINT VOC NO PODE INSERIR NOVOS CLIENTES!!!! ROLLBACK END ELSE BEGIN PRINT ESTA MENSAGEM NUNCA SER EXIBIDA !!!! END Este exatamente o cdigo da trigger. O COMANDO SP_HELPTRIGGER Este comando retorna o nome das triggers existentes em uma tabela. A sintaxe para este comando a seguinte: exec sp_helptrigger nome_tabela Se executarmos o seguinte comando: USE NwindAccess GO exec sp_helptrigger Clientes obteremos o seguinte resultado: trigger_name trigger_owner isupdate isdelete isinsert isafter isinsteadof tg_NoAlteraInsereCliente dbo 1 0 1 1 0 As colunas is... indicam o tipo de trigger. Por exemplo, isupdate=1 indica que a trigger disparada por um comando UPDATE; isdelete=1 indica que a trigger disparada por um comando DELETE e assim por diante. HABILITANDO E DESABILITANDO TRIGGERS Podemos desabilitar temporariamente uma trigger. Para desabilitar uma trigger utilizamos o comando: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000617 ALTER TABLE nome_da_tabela DISBLE TRIGGER nome_da_trigger Por exemplo, para desabilitar a trigger tg_NoAlteraInsereCliente, da tabela Customers, utilizamos o seguinte comando: USE NwindAccess GO ALTER TABLE Clientes DISABLE TRIGGER tg_NoAlteraInsereCliente Para habilitar novamente a trigger tg_NoAlteraInsereCliente, utilizamos o seguinte comando: USE NwindAccess GO ALTER TABLE Clientes ENABLE TRIGGER tg_NoAlteraInsereCliente Poderamos desabilitar uma trigger, por exemplo, quando estamos fazendo uma importao de um grande volume de dados para uma determinada tabela. Se estivermos certos de que os dados atendem s regras do negcio, podemos desabilitar a trigger durante a importao, para evitar que a trigger seja disparada a cada novo registro que importado, o que pode agilizar, bastante, a importao. Uma vez finalizada a importao, voltamos a habilitar a trigger. Com isso encerramos o nosso estudo de triggers. Vamos agora estudar alguns comandos avanados da linguagem T-SQL. DESENVOLVIMENTO EM: COMANDOS AVANADOS DA LINGUAGEM T-SQL PR-REQUISITOS Fundamentos apresentados na Parte I. Saber utilizar o SQL Server Management Studio e a janela de execuo de comandos T-SQL. Noes sobre os comandos bsicos da linguagem T-SQL. METODOLOGIA Apresentao de alguns comandos avanados da linguagem T-SQL. TCNICA Criao de exemplos que utilizam os comandos avanados apresentados. Neste item, vamos tratar de alguns comandos e tcnicas avanadas da linguagem T-SQL. Falaremos sobre os seguintes itens: Pesquisando mltiplas tabelas. Utilizando subconsultas. PESQUISANDO DADOS EM MLTIPLAS TABELAS comum a situao em que, para construir uma view (consulta), temos que acessar dados de duas ou mais tabelas. Por exemplo, se quisermos uma listagem com o nome do funcionrio, o nmero do proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6180000Curso Completo N O T A pedido, a data do pedido e o pas de destino, teremos que acessar dados das seguintes tabelas do Banco de Dados NwindAccess. Clientes Pedidos Detalhes do Pedido Para que possamos acessar dados de duas ou mais tabelas, em uma consulta, utilizamos uma clusula JOIN. Um JOIN uma operao que nos permite acessar dados de duas ou mais tabelas. O JOIN efetuado com base em uma coluna que seja comum a duas ou mais tabelas. Por exemplo, se fizermos um join entre as tabelas Pedidos e Detalhes do Pedido, o join ser efetuado atravs do campo NmeroDoPedido, que o campo que relaciona estas duas tabelas. Na tabela Detalhes do Pedido, o campo NmeroDoPedido utilizado para indicar a qual pedido pertence cada um dos itens. Vamos a um exemplo de utilizao de uso da clusula JOIN. Exemplo: Escrever um comando SQL que retorne os campos indicados na Tabela 10.5. Campo Tabela NmeroDoPedido Pedidos DataDoPedido Pedidos CdigoDoProduto Detalhes do Pedido PreoUnitrio Detalhes do Pedido Quantidade Detalhes do Pedido Tabela 10.5 Campos Tabelas. Esta listagem ir retornar uma linha para cada item de cada pedido, com os campos indicados na Tabela 10.3. Por exemplo, se um campo tiver cinco itens, sero retornadas cinco linhas, com o mesmo valor para os campos NmeroDoPedido e DataDoPedido (que so as informaes do cabealho do pedido), e diferentes valores para os demais campos (que so as informaes dos itens do pedido). Para construir a listagem solicitada, utilizamos o seguinte comando: SELECT [Pedidos].[NmeroDoPedido], [Pedidos].[DataDopedido], [Detalhes do Pedido].[CdigoDoproduto], [Detalhes do Pedido].[PreoUnitrio],[Detalhes do Pedido].[Quantidade] FROM [Detalhes do Pedido] JOIN [Pedidos] ON [Detalhes do Pedido].[NmeroDoPedido] = [Pedidos].[NmeroDoPedido] Observe que estamos utilizando a sintaxe [NomeDaTabela].[NomeDoCampo]. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000619 O resultado parcial, da execuo deste comando, indicado na listagem a seguir: NmeroDoPedido DataDoPedido CdigoDoProduto PreoUnitrio Quantity 10248 4/7/1996 11 14 12 10248 4/7/1996 42 9,8 10 10248 4/7/1996 72 34,8 5 10249 5/7/1996 14 18,6 9 10249 5/7/1996 51 42,4 40 10250 8/7/1996 41 7,7 10 10250 8/7/1996 51 42,4 35 10250 8/7/1996 65 16,8 15 Observe que, para cada pedido, aparecem tantas linhas quantos forem os itens do pedido. Vamos analisar a sintaxe bsica do join. SELECT Campo1, Campo2, ..., Campon FROM Tabela1 JOIN Tabela2 ON [Tabela1].[CampoComun]= [Tabela2].[CampoComun] Alm do join ligando as duas tabelas, devemos especificar qual o campo em comum nas duas tabelas. Isto feito pela clusula ON. TIPOS DE JOIN Existem trs tipos de join, conforme listado a seguir: INNER JOIN: Este o join padro, isto , se no especificarmos o tipo a ser utilizado, ser utilizado um INNER JOIN. A caracterstica do INNER JOIN que somente so retornados os registros que tm valores coincidentes nas duas ou mais tabelas, relacionadas atravs de uma ou mais clusulas JOIN. Por exemplo, se tivermos um INNER JOIN ligando as tabelas Clientes e Pedidos, somente sero retornados os registros para os clientes que tm algum pedido na tabela Pedidos. Clientes que no efetuaram pedidos (portanto, no tm registros coincidentes na tabela Pedidos) no faro parte do resultado da operao INNER JOIN. A seguir, um exemplo de utilizao de um INNER JOIN, entre as tabelas Clientes e Pedidos: SELECT [Clientes].[CdigoDoCliente], [Clientes].[NomeDaEmpresa], [Clientes].[Cidade],[Pedidos].[NmeroDoPedido], [Pedidos].[DataDoPedido] FROM [Clientes] INNER JOIN [Pedidos] ON [Clientes].[CdigoDoCliente]= [Pedidos].[CdigoDoCliente] Este comando retorna todos os clientes que tm pedidos e os respectivos pedidos. Se um cliente tiver dez pedidos, retornaro dez registros para este cliente, um para cada pedido. Clientes que no tm pedido no aparecero na listagem. LEFT OUTER JOIN: Este tipo retorna todos os registros da primeira tabela e os registros relacionados da segunda tabela. No nosso exemplo, na listagem anterior, se trocarmos o IN- NER JOIN por um LEFT OUTER JOIN, sero retornados todos os Clientes e os pedidos relacionados, e tambm os clientes que no possuem pedidos. Para os que no possuem pedidos, os campos NmeroDoPedido e DataDoPedido tero o valor Null. A seguir, temos o comando que utiliza um LEFT OUTER JOIN: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6200000Curso Completo N O T A SELECT [Clientes].[CdigoDoCliente], [Clientes].[NomeDaEmpresa], [Clientes].[Cidade],[Pedidos].[NmeroDoPedido], [Pedidos].[DataDoPedido] FROM [Clientes] INNER JOIN [Pedidos] ON [Clientes].[CdigoDoCliente]= [Pedidos].[CdigoDoCliente] ORDER BY [Clientes].[CdigoDoCliente] Na Figura 10.21, podemos observar que foram retornados inclusive os clientes que no possuem pedidos, o que indicado pelos valores NULL nos campos NmeroDoPedido e DataDoPedido. Se voc utilizar o Banco de Dados NwindAccess, o qual importamos para o SQL SERVER 2005 em um exemplo anterior, sero retornados todos os clientes, pois existem pedidos para todos. Para poder exemplificar neste exerccio, eu exclu os pedidos para os clientes com os seguintes cdigos: ALFKI ANATR ANTON AROUT Figura 10.10 Utilizando LEFT OUTER JOIN. RIGHT OUTER JOIN: Este tipo retorna todos os registros da segunda tabela e os registros relacionados da primeira tabela. Um exemplo de RIGHT OUTER JOIN: SELECT [Clientes].[CdigoDoCliente], [Clientes].[NomeDaEmpresa], [Clientes].[Cidade],[Pedidos].[NmeroDoPedido], [Pedidos].[DataDoPedido] FROM [Clientes] RIGHT OUTER JOIN [Pedidos] ON [Clientes].[CdigoDoCliente]= [Pedidos].[CdigoDoCliente] ORDER BY [Clientes].[CdigoDoCliente] Na Figura 10.11, podemos observar que foram retornados todos os pedidos da tabela pedidos, e apenas os clientes que possuem pedidos, isto , todos os registros da segunda tabela (Pedidos) e apenas os registros relacionados da primeira tabela (Clientes). proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000621 Figura 10.11 Utilizando RIGHT OUTER JOIN. JOIN COM MAIS DO QUE DUAS TABELAS Tambm podemos fazer um join com mais do que duas tabelas. Sempre o nmero de joins ser igual ao nmero de tabelas menos um. Por exemplo, se estivermos relacionando quatro tabelas, teremos trs joins; se estivermos relacionando trs tabelas, teremos dois joins, e assim por diante. Exemplo: Criar uma listagem com os campos indicados na Tabela 10.6. Campo Tabela CdigoDoCliente Clientes NomeDaEmpresa Clientes NmeroDoPedido Pedidos DataDoPedido Pedidos TotalPedido ([Quantidade]*[PreoUnitrio])*(1-[Desconto]) da tabela Detalhes do pedido. Tabela 10.6 Campos Tabelas. Teremos uma listagem com o cdigo e o nome do cliente, o nmero, a data e o total do pedido, sendo que o total calculado a partir de dados da tabela Detalhes do Pedido. Com isso estamos acessando campos de trs tabelas: Clientes, Pedidos e Detalhes do Pedido. Trs tabelas = dois joins. A seguir temos o comando que retorna a listagem solicitada: SELECT [Clientes].[CdigoDoCliente], [Clientes].[NomeDaEmpresa], [Pedidos].[NmeroDoPedido],[Pedidos].[DataDoPedido], SUM(([Detalhes do Pedido].[Quantidade] * [Detalhes do Pedido].[PreoUnitrio]) * (1 - [Detalhes do Pedido].Desconto)) AS TotalPedido FROM [Detalhes do Pedido] proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6220000Curso Completo INNER JOIN [Pedidos] ON [Detalhes do Pedido].[NmeroDoPedido] = [Pedidos].[NmeroDoPedido] INNER JOIN [Clientes] ON [Pedidos].[CdigoDoCliente] = [Clientes].[CdigoDoCliente] GROUP BY [Clientes].[CdigoDoCliente], [Clientes].[NomeDaEmpresa], [Pedidos].[NmeroDoPedido],[Pedidos].[DataDoPedido] ORDER BY [Clientes].[CdigoDoCliente] Na Figura 10.12, temos a parte inicial do resultado retornado: Figura 10.12 Utilizando dois Joins no mesmo comando. Vamos fazer alguns comentrios sobre o comando anterior. Vamos considerar o trecho onde feito o join entre as trs tabelas. Na verdade, o join feito sempre entre duas tabelas; fizemos duas a duas, conforme indicado no trecho a seguir: FROM [Detalhes do Pedido] INNER JOIN [Pedidos] ON [Detalhes do Pedido].[NmeroDoPedido] = [Pedidos].[NmeroDoPedido] INNER JOIN [Clientes] ON [Pedidos].[CdigoDoCliente] = [Clientes].[CdigoDoCliente] Fizemos o join entre as tabelas [Detalhes do Pedido] e [Pedidos], atravs do campo [NmeroDoPedido]. Depois feito o join entre as tabelas [Pedidos] e [Clientes], atravs do campo CdigoDoCliente. Tambm utilizamos GROUP BY, para agrupar os diversos itens de cada pedido e a funo SUM, para calcular a soma de todos os itens de um mesmo pedido. No final, ordenamos pelo cdigo do cliente [CdigoDoCliente]. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000623 N O T A No Apndice, veremos mais alguns detalhes sobre operaes join. UTILIZANDO SUBCONSULTAS Uma subconsulta um comando SELECT dentro de outro comando SELECT, ou seja, uma consulta dentro da outra. Uma consulta pode ser utilizada em qualquer local onde uma expresso seja aceita. Em alguns casos, podemos obter os mesmos resultados utilizando joins ao invs de subconsultas. Um detalhe a que devemos estar atentos quando utilizamos subconsultas em relao ao desempenho. De uma forma geral, devemos utilizar subconsultas quando quisermos dividir uma consulta complexa, em uma srie de passos mais simples, mas que combinados geram o resultado da consulta complexa. Alguns detalhes a serem considerados quando utilizamos subconsultas: Subconsultas devem estar dentro de parnteses. Podemos ter diversos nveis de subconsultas, isto , uma consulta dentro da outra, dentro da outra e assim por diante. Porm, mais uma vez quero chamar ateno para a questo do desempenho. Para vermos as subconsultas em ao, vamos a um exemplo prtico. Exemplo: Criar uma listagem onde so exibidos os campos NmeroDoPedido da tabela Pedidos, o campo DataDoPedido da tabela Pedidos e o maior preo unitrio dentre os itens que fazem parte do pedido. Para criar esta consulta, utilizamos o seguinte comando: SELECT [Pedidos].[NmeroDoPedido], [Pedidos].[DataDoPedido], (SELECT MAX([Detalhes do Pedido].[PreoUnitrio]) FROM [Detalhes do Pedido] WHERE [Pedidos].[NmeroDoPedido] = [Detalhes do Pedido].[NmeroDoPedido]) AS MaiorPreoUnitrio FROM [Pedidos] Na Figura 10.13, temos a parte inicial do resultado retornado. Observe a subconsulta: (SELECT MAX([Detalhes do Pedido].[PreoUnitrio]) FROM [Detalhes do Pedido] WHERE [Pedidos].[NmeroDoPedido] = [Detalhes do Pedido].[NmeroDoPedido]) AS MaiorPreoUnitrio Esta consulta pesquisa os diversos itens para cada pedido e retorna o maior preo unitrio. Outro uso tpico de uma subconsulta como parmetro da filtragem da consulta principal. Considere o comando a seguir: SELECT NmeroDoPedido, CdigoDoCliente,DataDoPedido As MaisRecente FROM Pedidos WHERE DataDoPedido=(Select MAX(DataDoPedido) FROM Pedidos) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6240000Curso Completo Figura 10.13 O primeiro exemplo com subconsultas. Este comando retorna os pedidos mais recentes, ou seja, para o valor mximo da data. O valor mximo da data significa a data mais recente no Banco de Dados. O resultado desta consulta o seguinte: NmeroDoPedido CdigoDoCliente MaisRecente 11074 SIMOB 1998-05-06 00:00:00.000 11075 RICSU 1998-05-06 00:00:00.000 11076 BONAP 1998-05-06 00:00:00.000 11077 RATTC 1998-05-06 00:00:00.000 A subconsulta determina a data mais recente, data esta que utilizada como critrio para a clusula WHERE. Em resumo, o resultado retornado pela subconsulta passado como critrio de filtragem para a clusula WHERE. Se trocarmos o MAX por MIN, teremos uma listagem dos pedidos mais antigos. Execute o seguinte comando: SELECT NmeroDoPedido, CdigoDoCliente,DataDoPedido As MaisAntigo FROM Pedidos WHERE DataDoPedido=(Select MIN(DataDoPedido) FROM Pedidos) Com este comando obtemos o seguinte resultado: NmeroDoPedido CdigoDoCliente MaisAntigo 10248 VINET 1996-07-04 00:00:00.000 Temos um tipo especial de subconsulta chamada de Subconsulta correlacionada (Correlated subqueries). Neste tipo de subconsulta, so utilizadas informaes da consulta principal e executada para cada linha retornada pela consulta externa. Neste tipo de subconsulta que temos que tomar cuidados com o desempenho. Por exemplo, se a consulta principal retorna 5000 registros, a subconsulta ser executada 5000 vezes. Mais uma vez vamos utilizar um exemplo para ilustrar este conceito. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 10 DESENVOLVIMENTO NO SQL SERVER 2005 STORED PROCEDURES E TRIGGERS Curso Completo0000625 Exemplo: Criar uma consulta que liste o nome de todos os funcionrios que fizeram pedidos para o Brasil, em que o campo DataDoPedido para o ano de 1997. Para obter esta listagem, utilizamos o seguinte comando: SELECT [Funcionrios].[Nome]+ +[Funcionrios].[Sobrenome] As NomeCompleto, CdigoDoFuncionrio FROM Funcionrios WHERE EXISTS ( SELECT * FROM [Pedidos] WHERE [Funcionrios].[CdigoDoFuncionrio]=[Pedidos].[CdigoDoFuncionrio] AND Year([DataDoPedido])=1997) ORDER BY [Funcionrios].[Nome] Vamos explicar o funcionamento desta subconsulta em quatro passos: 1. Os valores obtidos pela consulta externa (primeiro SELECT) so passados para a consulta interna. Lembre que, para cada registro obtido pela consulta externa, a consulta interna executada. 2. A consulta interna (segundo SELECT) utiliza o valor passado pela consulta externa e executa o comando SELECT da subconsulta interna. 3. Aps a execuo, a subconsulta interna retorna o seu resultado para a consulta principal. 4. Com base no valor retornado pela subconsulta, em conjunto com a funo EXITS, o registro retornado pela consulta externa includo ou descartado do resultado final. O prximo registro retornado pela consulta externa passado para a consulta interna, a qual executa novamente. E o processo continua, at que todos os registros da consulta principal tenham sido passados para a consulta interna. Desta maneira vemos que a consulta interna executada tantas vezes quantos forem os registros retornados pela consulta externa. A seguir, temos os resultados do comando deste exemplo: NomeCompleto CdigoDoFuncionrio Andrew Fuller 2 Anne Dodsworth 9 Janet Leverling 3 Laura Callahan 8 Margaret Peacock 4 Michael Suyama 6 Nancy Davolio 1 Robert King 7 Steven Buchanan 5 A correta utilizao de subconsultas pode facilitar a obteno de resultados aparentemente complexos de se obter com um nico comando SELECT. Porm, mais uma vez, vou ressaltar o cuidado em relao ao desempenho quando tratamos com subconsultas. CONCLUSO Neste captulo, tratamos de assuntos importantes relacionados ao desenvolvimento de aplicativos com o SQL Server 2005. Tratamos de elementos que so criados no prprio Banco de Dados, como por exemplo: Stored procedures Triggers proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6260000Curso Completo Um stored procedure, de uma maneira simples, um conjunto de comandos que gravado no Banco de Dados com um determinado nome. Uma vez gravado, o stored procedure pode ser executado a qualquer momento, utilizando a seguinte sintaxe: exec nome_stored_procedure parmetros Uma das grandes vantagens dos stored procedures que estes ficam na memria cache aps a primeira execuo. Isso faz com que as execues subseqentes sejam bem mais rpidas, o que melhora o desempenho em relao, por exemplo, utilizao de consultas. Triggers so um tipo especial de stored procedure executado em resposta a um comando SELECT, INSERT ou UPDATE, em uma tabela do Banco de Dados. Quando uma trigger executada, dizemos que a trigger foi disparada. A principal funo das triggers impor as chamadas Regras de Negcio ao Banco de Dados. Na parte final do captulo, vimos algumas tcnicas avanadas dos comandos T-SQL. Tratamos da clusula join, a qual utilizada quando temos um comando que acessa dados de vrias tabelas. Tambm tratamos e apresentamos alguns exemplos sobre utilizao de subconsultas. Com uma subconsulta, podemos estruturar um comando SQL complexo, em partes menores e mais simples de entender. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Captulo 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6280000Curso Completo N O T A INTRODUO Desenvolver aplicativos que acessam dados em um servidor SQL Server 2005 bastante simples. Com as tecnologias para acesso de dados, ficou mais fcil criar aplicaes que acessam dados de variadas fontes: SQL Server 2005, ORACLE, Mainframe, dados no formato Dbase, dados no estruturados, etc. Neste captulo, veremos os modelos para o desenvolvimento de aplicativos e tambm as tecnologias da Microsoft para acesso a dados. Vamos falar sobre modelos de desenvolvimento em uma, duas, trs ou n camadas. Veremos a definio e as vantagens de cada modelo. Neste captulo abordarei as tecnologias clssicas, tais como ODBC, ADO e a linguagem de programao ASP. No Captulo 13 abordarei o .NET e a criao de pginas ASP.NET que acessam banco de dados do SQL Server 2005. A integrao com o .NET (assunto do Captulo 15) , sem dvidas, a grande novidade do SQL Server 2005 para o desenvolvimento de aplicaes, em relao s verses anteriores do SQL Server. A maioria das ferramentas de desenvolvimento modernas so capazes de trabalhar com as tecnologias de acesso a dados da Microsoft. Poderamos citar o Visual Basic, Delphi, Power Builder, Visual C++, VB.NET, C#, C++.NET, a linha Visual Age da IBM, Microsoft Access, Lotus Notes, etc. Seria mais fcil listar quais ferramentas no do suporte s tecnologias de acesso a dados da Microsoft. De uma maneira geral, o conjunto destas tecnologias chamado de UDA Universal Data Access. Dentro deste bojo de tecnologias, temos como principais componentes o ODBC Open Database Connectivity (uma tecnologia mais antiga, mas ainda presente em muitas aplicaes) e OLE DB no vou traduzir, pois a sigla mais do que consagrada e no existe uma traduo que reflita exatamente o que OLE DB. O ODBC mantido para compatibilidade com aplicaes mais antigas, porm, para novas aplicaes, a Microsoft aconselha a utilizao de OLE DB. Falaremos mais sobre estas tecnologias, no decorrer deste captulo. A tecnologia OLE DB utilizada em conjunto com a tecnologia ADO Activex Data Objects. Tambm veremos detalhes sobre ADO, neste captulo. Neste captulo darei nfase em como acessar os dados do servidor SQL Server 2005, dentro de uma aplicao. Apresentarei exemplos de acesso a dados, utilizando a tecnologia de pginas ASP Active Server Pages. De maneira alguma este captulo tem a pretenso de ensinar sobre o desenvolvimento de aplicaes em ASP. O objetivo ilustrar a parte referente ao acesso dos dados do servidor SQL Server 2005, atravs de pginas ASP. No Captulo 12 tratarei do acesso aos dados de um servidor SQL Server 2005, utilizando o Microsoft Access. Para maiores informaes sobre a criao de aplicaes utilizando ASP, consulte o e-book Criando Sites Dinmicos com ASP 3.0, de minha autoria, o qual pode ser adquirido em http://www.juliobattisti.com.br/ebooksdoautor Uma vez apresentada a teoria bsica sobre os modelos de aplicaes e sobre as tecnologias para acesso a dados, partiremos para alguns exemplos prticos. Nos exemplos, aprenderemos a estabelecer conexes com o servidor SQL Server 2005 e a enviar comandos para serem executados no servidor. Aps a execuo dos comandos, os resultados so retornados para a aplicao que, no nosso caso, ser ou uma pgina ASP (Captulo 11), ou um Banco de Dados do Microsoft Access (Captulo 12) ou uma pgina ASP.NET (Captulo 13). proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000629 N O T A Veremos que, mais uma vez, um bom entendimento dos comandos bsicos da linguagem SQL de fundamental importncia. Para um tutorial sobre os comandos bsicos da linguagem SQL, consulte o Apndice, no final do livro. Para que voc possa acompanhar todos os exemplos deste captulo, preciso um conhecimento bsico da linguagem HTML, principalmente no referente criao de formulrios com HTML e da linguagem VBScript da Microsoft. Maiores informaes sobre estes tpicos podem ser encontradas no e-book sobre ASP 3.0, de minha autoria, citado anteriormente http://www.juliobattisti.com.br/ebooksdoautor DESENVOLVIMENTO EM: UMA INTRODUO AO DESENVOLVIMENTO DE APLICAES EM N CAMADAS PR-REQUISITOS No h. METODOLOGIA Apresentao dos principais modelos de desenvolvimento de aplicaes e sua evoluo. As aplicaes atuais so, sem nenhuma dvida, muito mais complexas de projetar, desenvolver, implementar e manter do que as aplicaes de uma ou duas dcadas atrs. So as mais diversas aplicaes e para as mais diversas finalidades, tais como: Comrcio Eletrnico, BI Business Intelligence, CRM Customer Relationship Management (Gerenciamento das Relaes com o cliente), ERP Enterprise Resource Planning, etc. So muitas siglas, muitas necessidades e, conseqentemente, muita complexidade no desenvolvimento e, principalmente, na manuteno e atualizao das aplicaes empresariais. Por isso novos modelos de desenvolvimento vm sendo propostos para facilitar o desenvolvimento e, o mais importante, a atualizao e manuteno de aplicaes. Neste tpico, farei uma retrospectiva desde o modelo em duas camadas, o tradicional Cliente/Servidor, at os modelos mais atuais, em n camadas. O objetivo que o amigo leitor possa identificar, claramente, os problemas do modelo tradicional de desenvolvimento em duas camadas e quais as solues propostas pelos modelos em trs ou mais camadas. MODELO EM DUAS CAMADAS CLIENTE/SERVIDOR TRADICIONAL O modelo Cliente/Servidor foi criado tendo como objetivo bsico a descentralizao dos dados e recursos de processamento, em oposio ao modelo centralizado utilizado na poca em que o mainframe dominava absoluto. Neste modelo, conforme indicado pela Figura 11.1, em uma rede de computadores, existem uma ou mais mquinas que atuam como servidores, disponibilizando recursos para as demais mquinas, as quais atuam como clientes. Conforme pode ser visto na Figura 11.1, temos servidores de arquivos, servidores de Banco de Dados e outras funes, tais como: servidores de impresso, servidores de segurana (Firewall, Proxy, Sistemas de Deteco de Invases), servidores Web, servidores FTP, etc. Estas redes, tipicamente, so formadas proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6300000Curso Completo por servidores, os quais so equipamentos com um maior poder de processamento e armazenamento, e pelos clientes, os quais, na maioria dos casos, so microcomputadores PCs, ligados em rede. Figura 11.1 O modelo Cliente/Servidor tradicional. APLICAES EM DUAS CAMADAS No incio da utilizao do modelo Cliente/Servidor (na primeira metade da dcada de 90), as aplicaes foram desenvolvidas utilizando-se um modelo de desenvolvimento em duas camadas. Neste modelo, um programa, normalmente criado em um ambiente de desenvolvimento, como o Visual Basic, Delphi ou Power Builder, instalado em cada cliente. Este programa acessa dados em um servidor de Banco de Dados, conforme ilustrado na Figura 11.2. Figura 11.2 O modelo de desenvolvimento em duas camadas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000631 No modelo em duas camadas, temos um programa que instalado no cliente, programa esse que faz acesso a um Banco de Dados que fica residente no servidor de Banco de Dados (no nosso caso, evidentemente, este servidor o SQL Server 2005). Na maioria dos casos, a mquina do cliente um PC rodando Windows, e a aplicao cliente desenvolvida utilizando-se um dos ambientes conhecidos, conforme citado anteriormente. Sendo a aplicao cliente, um programa para Windows (na grande maioria dos casos), a aplicao deve ser instalada em cada um dos computadores da rede, que faro uso da aplicao. o processo de instalao normal, para qualquer aplicao Windows. No modelo de duas camadas, a aplicao cliente responsvel pelas seguintes funes: Apresentao: O cdigo que gera a interface visvel do programa faz parte da aplicao cliente. Todos os formulrios, menus e demais elementos visuais, de interao com o usurio final, esto contidos no cdigo da aplicao cliente. Caso sejam necessrias alteraes na interface do programa, faz-se necessria a gerao de uma nova verso do programa, e todos os computadores que possuem a verso antiga devem receber a nova verso, para que o usurio possa ter acesso s alteraes da interface. A que comeam a surgir os problemas no modelo de duas camadas. Uma simples alterao de interface suficiente para gerar a necessidade de atualizar a aplicao em centenas ou milhares de computadores, dependendo do porte da empresa. O gerenciamento desta tarefa algo extremamente complexo e que envolve custos elevados. Lgica do Negcio: As regras, que definem a maneira como os dados sero acessados e processados, so conhecidas como Regras de Negcio. Fazem parte das regras de negcio desde funes simples para validao da entrada de dados, como o clculo do dgito verificador de um CPF, at funes mais complexas, como descontos escalonados para os maiores clientes, de acordo com o volume da compra. Questes relativas legislao fiscal e escrita contbil tambm fazem parte das regras de negcio. Por exemplo, um programa para gerncia de recursos humanos, desenvolvido para a legislao dos EUA, evidentemente, no pode ser utilizado, sem as devidas adaptaes, por uma empresa brasileira. Isso acontece porque a legislao dos EUA diferente da legislao brasileira. Em sntese, as regras para o sistema de recursos humanos so diferentes. Alm isso, alteraes nas regras de negcio so bastante freqentes, ainda mais com as repetidas mudanas na legislao do nosso pas. Com isso, faz-se necessria a gerao de uma nova verso do programa, cada vez que uma determinada regra muda, ou quando regras forem acrescentadas ou retiradas. Desta forma, todos os computadores que possuem a verso anterior devem receber a nova verso, para que o usurio possa ter acesso s alteraes. A que se agravam os problemas no modelo de duas camadas. Qualquer alterao nas regras do negcio, suficiente para gerar a necessidade de atualizar a aplicao, em centenas ou milhares de computadores. O gerenciamento desta tarefa algo extremamente complexo e de custo elevado. Alis, j dissemos isso no pargrafo anterior, s que to importante que sempre bom repetir. Com a evoluo do mercado e as alteraes da legislao, mudanas nas regras do negcio so bastante freqentes. Com isso, o modelo de duas camadas demonstrou-se de difcil manuteno e gerenciamento, alm de apresentar um TCO Total Cost Ownership (Custo Total de Propriedade) muito elevado. O TCO uma medida que leva em conta diversos fatores, para calcular qual o custo em se manter uma estao em rede e funcionando no perodo de um ano. Alguns clculos apontam para valores prximos de 10.000 dlares, por estao, por ano. Convenhamos que um custo considervel. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6320000Curso Completo A outra camada vem a ser o Banco de Dados, o qual fica armazenado em servidor da rede. Uma aplicao desenvolvida em Visual Basic, a qual acessa um Banco de Dados em um servidor Microsoft SQL Server, um tpico exemplo de uma aplicao em duas camadas. Em busca de solues para os problemas e para os custos do modelo de duas camadas que surge a proposta do modelo de trs camadas, conforme analisaremos a seguir. APLICAES EM TRS CAMADAS Como uma evoluo do modelo de duas camadas, surge o modelo de trs camadas. A idia bsica do modelo de trs camadas retirar as regras de negcio do cliente e centraliz-las em um determinado ponto, ponto este que chamado de servidor de aplicaes. O acesso ao Banco de Dados feito atravs das regras contidas no servidor de aplicaes. Ao centralizar as Regras do Negcio em um servidor de aplicaes, fica muito mais fcil a atualizao destas regras. A Figura 11.3 nos d uma idia geral do modelo em trs camadas. Figura 11.3 O modelo de desenvolvimento em trs camadas. Todo o acesso do cliente, ao Banco de Dados, feito de acordo com as regras contidas no servidor de aplicaes. O cliente no tem acesso direto ao Banco de Dados, sem antes passar pelo servidor de aplicaes. Neste modelo, as trs camadas so as seguintes: Apresentao: Continua no programa instalado no cliente. Alteraes na interface do programa continuam gerando a necessidade de atualizar a aplicao em todos os computadores, onde a aplicao est sendo utilizada. Porm, cabe ressaltar que alteraes na interface so menos freqentes do que alteraes nas regras de negcio. Lgica: So as regras de negcio, as quais determinam de que maneira os dados sero utilizados. Esta camada foi deslocada para o servidor de aplicaes. Desta maneira, quando uma regra de negcio for alterada, basta atualiz-la no servidor de aplicaes. Aps a atualizao, a qual s precisa ser feita no servidor de aplicaes, todos os usurios passaro a ter acesso nova verso, proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000633 sem que seja necessrio reinstalar o programa cliente em cada um dos computadores da rede. Vejam que, ao centralizar as regras do negcio em um servidor de aplicaes, estamos facilitando, enormemente, a tarefa de manter a aplicao atualizada. Dados: Nesta camada, temos o servidor de Banco de Dados, no qual reside toda a informao necessria para o funcionamento da aplicao. Cabe ressaltar que os dados somente so acessados atravs do servidor de aplicao, e no diretamente pela aplicao cliente. Com a introduo da uma camada de lgica, resolvemos o problema de termos que atualizar a aplicao, em centenas ou milhares de computadores, cada vez que uma regra de negcio for alterada. Porm, continuamos com o problema de atualizao da aplicao, cada vez que sejam necessrias mudanas na interface. Por isso que surgiram os modelos de n-camadas. No prximo tpico, iremos falar um pouco sobre o modelo de quatro camadas. APLICAES EM QUATRO CAMADAS Como uma evoluo do modelo em trs camadas, surge o modelo em quatro camadas. A idia bsica do modelo em quatro camadas retirar a camada de apresentao do cliente e centraliz-la em um determinado ponto, o qual na maioria dos casos um servidor Web. Com isso, o prprio cliente deixa de existir como um programa que precisa ser instalado em cada computador da rede. O acesso aplicao feito atravs de um navegador, como o Internet Explorer ou o Netscape Navigator. A Figura 11.4 nos d uma idia geral do modelo em quatro camadas. Figura 11.4 O modelo de desenvolvimento em quatro camadas. Para acessar a aplicao, o cliente acessa o endereo da aplicao, utilizando o seu navegador. Por exemplo http://www.empresa-abc.com.br/sistemas/cadastro.asp. Todo o acesso do cliente ao Banco de Dados feito de acordo com as regras contidas no servidor de aplicaes. O cliente no tem acesso direto ao Banco de Dados, sem antes passar pelo servidor de aplicaes. Com isso, as quatro camadas so as seguintes: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6340000Curso Completo Cliente: Neste caso, o cliente o navegador utilizado pelo usurio, quer seja o Internet Ex- plorer, quer seja o Netscape Navigator, FireFox ou outro navegador qualquer. Apresentao: Passa para o servidor Web. A interface pode ser composta de pginas HTML, ASP, ASP.NET, PHP ou qualquer outra tecnologia capaz de gerar contedo para o navegador, dinamicamente a partir do contedo contido em um banco de dados. Com isso, alteraes na interface da aplicao so feitas diretamente no servidor Web, sendo que estas alteraes estaro, automaticamente, disponveis para todos os clientes. Atualizar uma aplicao , basicamente, atualizar as pginas da aplicao, no servidor Web. Desta maneira, no existe a necessidade de reinstalar a aplicao em todos os computadores da rede, cada vez que forem feitas alteraes na interface da aplicao. Fica muito mais fcil garantir que todos esto tendo acesso verso mais atualizada da aplicao. A nica coisa que o cliente precisa ter instalado na sua mquina o navegador. O acesso ao Banco de Dados feito atravs do servidor de aplicaes, o qual por sua vez faz e gerencia todas as conexes com o Banco de Dados. Lgica: So as regras de negcio, as quais determinam de que maneira os dados sero utilizados. Esta camada est no servidor de aplicaes. Desta maneira, quando uma regra de negcio for alterada, basta atualiz-la no servidor de aplicaes. Aps a atualizao, todos os usurios passaro a ter acesso nova verso, sem que seja necessrio reinstalar o programa em cada um dos computadores da rede. Vejam que, ao centralizar as regras do negcio em um servidor de aplicaes, estamos facilitando a tarefa de manter a aplicao atualizada. Dados: Nesta camada, temos o servidor de Banco de Dados, no qual reside toda a informao necessria para o funcionamento da aplicao. Com o deslocamento da camada de apresentao para um servidor Web, resolvemos o problema de termos que atualizar a aplicao, em centenas ou milhares de computadores, cada vez que houver alguma alterao na interface da aplicao. Neste ponto, a atualizao das aplicaes uma tarefa bem mais gerencivel, muito diferente do que acontecia no caso do modelo em duas ou trs camadas. Os servidores de aplicao, Web e Banco de Dados no precisam, necessariamente, ser servidores separados, isto , uma mquina para fazer o papel de cada um dos servidores. O conceito de servidor de aplicao, Web ou Banco de Dados um conceito relacionado com a funo que o servidor desempenha. Podemos ter, em um mesmo equipamento, um servidor de aplicaes, um servidor Web e um servidor de Banco de Dados. Claro que questes de desempenho devem ser levadas em considerao, conforme analisaremos no prximo tpico. QUESTES A CONSIDERARMOS NOS MODELOS DE TRS OU MAIS CAMADAS Muitas so as vantagens dos modelos de trs ou mais camadas, em relao facilidade de gerenciamento, reduo de custos, facilidade de implementao e atualizao das aplicaes. Porm, consideraes devem ser feitas em relao a desempenho e dimensionamento dos equipamentos que atuaro como servidores. A partir do momento em que estamos deslocando funcionalidades (tipicamente lgica e apresentao), do cliente para um ou mais servidores, tambm estamos deslocando capacidade de processamento em termos de memria RAM e processador. Funes que antes eram executadas pelos clientes, utilizando memria e processador da estao cliente, agora foram deslocadas para os servidores, com isso proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000635 consumindo memria e processador do servidor. Por isso, um dos fatores mais importantes a considerar o correto dimensionamento dos equipamentos servidores. Para fazer o dimensionamento dos servidores, precisamos estimar o nmero de usurios que iro acessar cada aplicao simultaneamente, o nvel de exigncia de cada usurio, os recursos necessrios pelos software do servidor, dentre outros. Para determinar o nvel de recursos necessrios em cada um dos servidores, voc precisa fazer um estudo bem detalhado, de tal forma que o servidor no fique sub- dimensionado. Quando o servidor no est corretamente dimensionado, a tendncia que o acesso aplicao fique bastante lento, causando insatisfao entre os usurios. Dentro deste modelo de desenvolvimento para a Web, em trs ou mais camadas, existem diversos pontos, nos quais podemos utilizar a tecnologia ASP (assunto deste captulo). Para desenvolver a interface da aplicao, combinamos cdigo HTML com cdigo ASP. Utilizando ASP, podemos desenvolver pginas que acessam o Banco de Dados, atravs do servidor de aplicaes. Questes como autenticao de usurios, determinao do nvel de acesso e segurana da aplicao podem ser desenvolvidas com a utilizao de ASP. Neste captulo vamos utilizar a tecnologia ASP para acessar dados no servidor SQL Server 2005. DESENVOLVIMENTO EM: PREPARAO DO SERVIDOR PARA ACOMPANHAR OS EXEMPLOS DESTE CAPTULO PR-REQUISITOS Noes bsicas do Windows. Noes bsicas de aplicaes Web. Noes bsicas do Windows 2000 Server ou Windows Server 2003. METODOLOGIA Preparao de um servidor Windows 2000 e configurao do IIS. Antes que voc possa acompanhar os exemplos deste captulo, precisamos verificar se o servidor que voc est utilizando est configurado corretamente. Os dados do servidor que estou utilizando esto indicados na Tabela 11.1. Caracterstica Descrio Sistema Operacional Windows 2000 Server em portugus. Nome Servidor SQL Server SQL Server 2005 Instncias SERVIDOR\SQL2005 SERVIDOR\CURSOSJB Endereo Web http://servidor (*) ou www.groza.com Tabela 11.1 Caractersticas do equipamento que estou utilizando. (*) Este endereo faz parte da minha intranet residencial. No um endereo que possa ser acessado pela Internet, a no ser que algum tenha criado um site com este endereo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6360000Curso Completo N O T A Se as configuraes do equipamento que voc est utilizando forem diferentes, utilize as configuraes do seu equipamento, ao invs das indicadas na Tabela 11.1. Neste tpico, vamos fazer duas configuraes. A primeira criar uma pasta onde colocaremos os exemplos deste captulo. A segunda configurar esta pasta como uma pasta virtual do servidor IIS Internet Information Services. Para que possamos testar as pginas ASP de exemplo, precisamos que o IIS esteja instalado e testado. Para maiores informaes sobre a instalao e teste do IIS, consulte a introduo deste livro. CRIANDO A PASTA ONDE IREMOS GRAVAR OS EXEMPLOS DESTE CAPTULO Utilizando o Windows Explorer, crie uma pasta chamada LivroSQL2005, no drive C:. Dentro da pasta LivroSQL2005, crie uma subpasta chamada Capitulo11 (Capitulo sem acento), conforme indicado na Figura 11.5. Figura 11.5 Criando a pasta C:\LivroSQL2000\Capitulo11. Agora vamos fazer com que a pasta LivroSQL2005 (e, conseqentemente, todas as suas subpastas; no nosso exemplo temos somente a subpasta Capitulo 11) passe a fazer parte do servidor Web que estou utilizando para os exemplos deste captulo -> http://www.groza.com. Lembrando mais uma vez, estou utilizando os parmetros da Tabela 11.1, em que o nome do servidor Servidor. Se o nome do seu equipamento for diferente, substitua Servidor pelo nome que voc est utilizando. O servidor tambm pode ser acessado com o endereo www.groza.com. Para associar o nome www.groza.com com o seu servidor (este tipo de associao s pode ser feito para um servidor interno, o qual no esteja como servidor na Internet. Voc no pode usar um nome na Internet, sem antes t-lo registrado no site http://www.registro.br), vamos configurar o arquivo hosts. O arquivo hosts fica na pasta C:\Winnt\system32\drivers\etc. Substitua C: pela pasta onde o Windows est instalado e Winnt, pela pasta onde o Windows est instalado. Voc deve editar o arquivo hosts ( hosts mesmo, sem nenhuma extenso) e acrescentar a seguinte linha, no final do arquivo: 127.0.0.1 www.groza.com Muito cuidado ao salvar o arquivo, pois se ele for salvo com uma extenso, como por exemplo hosts.txt, esta configurao no ir funcionar. O nome do arquivo tem que ser somente hosts, sem nenhuma extenso. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000637 TORNANDO A PASTA LIVROSQL2005, PARTE DO SERVIDOR IIS Agora vamos aprender, passo a passo, como tornar a pasta LivroSQL2005 parte do servidor IIS. Para isso utilizaremos o console Gerenciador do Internet Services, do Windows 2000 Server. Para maiores informaes sobre MMC, Snap-in e Consoles administrativos, consulte a Unidade IV, do seguinte e- book de minha autoria: Microsoft Windows 2000 Server Curso Bsico & Rpido, o qual pode ser adquirido atravs do endereo http://www.juliobattisti.com.br/cursos Para tornar a pasta LivroSQL2005 parte do servidor IIS http://servidor (tornar parte significa que a pasta LivroSQL2005 passar a ser uma pasta virtual do servidor IIS), siga os passos indicados a seguir: 1. Faa o logon com uma conta com direitos de administrador no Windows 2000 Server. 2. Clique em Iniciar -> Programas -> Ferramentas administrativas -> Gerenciador do Internet Services. 3. Ser aberta a janela Internet Information Services. D um clique duplo no nome do computador para abri-lo. No exemplo da Figura 11.6, o nome do computador Servidor. So exibidas, dentre outras opes disponveis, trs opes padro, conforme indicado pela Figura 11.6. Figura 11.6 Opes de gerenciamento para o IIS 5.0. 4. D um clique no sinal de +, ao lado da opo Site da Web padro, para expandir esta opo. As opes que aparecem so as pastas virtuais que j fazem parte do site padro. 5. D um clique com o boto direito do mouse, sobre Site da Web padro. No menu que surge, aponte para Novo. Nas opes que surgem, d um clique na opo Pasta virtual, conforme indicado pela Figura 11.7. 6. Esta pasta virtual ser associada pasta LivroSQL2005, criada anteriormente. Ser exibida a primeira tela do assistente para a criao de pasta virtual. A primeira etapa apenas informativa. D um clique no boto Avanar, seguindo para a prxima etapa do assistente. Nesta segunda etapa, voc precisa definir um nome (Alias) para esta pasta virtual. Utilizaremos o mesmo nome da pasta: LivroSQL2005. Porm no obrigatrio que seja utilizado o mesmo nome. Por proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6380000Curso Completo questo de facilidade de administrao e gerenciamento, sempre utilizo nomes iguais para o nome da pasta no disco rgido e o nome/apelido a ser utilizado no IIS. Figura 11.7 Criando uma nova pasta virtual no servidor IIS. 7. Digite LivroSQL2005, conforme indicado pela Figura 11.8. D um clique no boto Avanar. Figura 11.8 Digitando um nome para a pasta no IIS. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000639 Nesta etapa, o assistente pergunta qual a pasta a ser associada com o nome virtual informado na etapa anterior. Podemos digitar o caminho completo para a pasta, ou utilizar o boto Procurar, para localizar a pasta desejada. No nosso exemplo, vamos digitar C:\LivroSQL2005. Com isso estamos associando a pasta C:\LivroSQL2005, com a pasta virtual LivroSQL2005, do servidor IIS. 8. Digite C:\LivroSQL2005, conforme indicado na Figura 11.9, e d um clique no boto Avanar, para ir para a prxima etapa do assistente. Figura 11.9 Informando o caminho da pasta C:\LivroSQL2005. Nesta etapa do assistente, podemos configurar as permisses de acesso pasta LivroSQL2005. Certifique- se de que as opes Leitura e Executar Scripts (ASP por exemplo) estejam marcadas, conforme indicado pela Figura 11.10. Se a opo Executar Scripts (ASP por exemplo) no estiver marcada, o cdigo ASP ser ignorado pelo IIS e, com isso, os exemplos deste captulo no iro funcionar. 9. D um clique em Avanar. Surge a tela final do assistente. 10. D um clique no boto Concluir, para finalizar o assistente. Voc estar de volta ao gerenciador do Internet Services. Observe que um novo diretrio virtual chamado LivroSQL2005 j aparece como parte integrante Site da Web Padro. 11. Feche o gerenciador do Internet Services. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6400000Curso Completo N O T A Figura 11.10 Configurando as opes de segurana. Uma vez criado o diretrio virtual LivroSQL2005, o qual est associado pasta C:\LivroSQL2005, como posso acessar, atravs do navegador, o contedo que for colocado dentro da pasta C:\LivroSQL2005, ou em uma das suas subpastas? A resposta para a questo acima bastante simples, basta que entendamos como so formados os endereos em um servidor como o IIS. No nosso exemplo, o endereo do servidor http://servidor. Ao digitarmos este endereo, estamos acessando a pgina principal do servidor. Vamos supor que dentro da pasta virtual LivroSQL2005 (associada com a pasta C:\LivroSQL2005) fosse colocada uma pgina chamada index.asp. Como faramos para acessar esta pgina, atravs do navegador? O endereo da pgina em questo seria o seguinte: http://servidor/LivroSQL2005/index.asp. A Figura 11.11 descreve em detalhes a formao deste endereo. Figura 11.11 A formao de endereos no servidor IIS. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000641 N O T A Observe que, primeiro, vem o nome do servidor (http://servidor), depois o nome do diretrio virtual (LivroSQL2005) e, finalmente, o nome da pgina a ser acessada (index.asp). Como que fica o endereo, quando eu quero acessar uma pgina que est dentro de uma subpasta da pasta LivroSQL2005? Seguindo o mesmo raciocnio anterior, fica fcil responder a esta pergunta. Vamos supor que voc queira acessar uma pgina chamada cep.asp, que est na subpasta Capitulo11, a qual est na pasta LivroSQL2005. Como fica o endereo para acessar esta pgina? A Figura 11.12 responde esta questo. Figura 11.12 A formao de endereos em subpastas do diretrio virtual, no servidor IIS. Com isso, podemos ver que existe uma lgica bem definida para a formao dos endereos. Apenas para confirmar, vamos dar mais alguns exemplos de formao de endereos. Considere os casos abaixo indicados: Qual o endereo de uma pgina chamada teste.htm, gravada na subpasta Testes (que ainda no existe), da pasta virtual LivroSQL2005? Resposta: http://servidor/LivroSQL2005/Tes- tes/teste.htm Qual o endereo de uma pgina chamada cadastro.asp, gravada no diretrio Capitulo10? Resposta: http://servidor/LivroSQL2005/Capitulo10/cadastro.asp importante que voc entenda bem a maneira como o servidor IIS constri os endereos de acesso para as pginas gravadas em suas pastas virtuais. Observe que a pasta virtual simplesmente um nome que nos leva at o diretrio real, gravado no HD. Podemos criar diversos diretrios virtuais, em um nico servidor IIS. Agora estamos com o nosso servidor quase pronto para acompanhar os exemplos deste captulo. S falta configurarmos algumas fontes ODBC, que sero utilizadas nos exemplos prticos. Mas antes de configurarmos as fontes ODBC, vamos fazer um estudo sobre ODBC, OLE DB e ADO. Com isso, ficaremos sabendo o que uma fonte ODBC, bem como uma srie de outros conceitos importantes para a criao de aplicaes que acessam dados no servidor SQL Server 2005, a partir de pginas ASP. Ento, mos obra. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6420000Curso Completo DESENVOLVIMENTO EM: UM POUCO SOBRE ODBC, OLE DB E ADO PR-REQUISITOS Noes sobre os modelos de desenvolvimento de aplicaes. Noes sobre o modelo relacional de Banco de Dados. METODOLOGIA Apresentao das tecnologias ODBC, ADO/OLE DB. A Microsoft vem, h muito tempo, desenvolvendo tecnologias que permitam acesso s mais variadas fontes de dados, quer sejam dados estruturados em Bancos de Dados tradicionais como o Microsoft SQL Server, dados nos formatos mais tradicionais como os armazenados em mainframes, at dados no estruturados, como mensagens de correio eletrnico e arquivos com contedo multimdia, como som e imagem. A expresso por trs deste esforo conhecida como Acesso Universal aos Dados ou UDA, do ingls Universal Data Access. Porm, na tentativa de disponibilizar o acesso universal aos dados, muitas tecnologias foram criadas, o que muitas vezes causa uma certa confuso e at desconforto para quem trabalha com desenvolvimento de aplicaes. A cada nova tecnologia anunciada, um novo ciclo de aprendizado tem incio, sem contar que muitas vezes a comunicao entre as diferentes tecnologias no exatamente a esperada. Neste mundo de tecnologias, j nos deparamos com siglas como: DAO Data Access Objects. RDS Remote Data Access. ADO Activex Data Object. ODBC Open Database Connectivity. OLE DB prefiro no traduzir. ADO.NET A tecnologia de acesso a dados do .NET. Veremos no Captulo 13. normal que o desenvolvedor fique um pouco confuso com esta sopa de letrinhas (na verdade bem confuso). Mais importante do que decorar o significado de cada sigla entender a tecnologia que fornece acesso aos dados e saber utiliz-las corretamente. Hoje, a tecnologia mais utilizada e recomendada pela Microsoft a dobradinha ADO/OLE DB. A utilizao de ODBC bastante forte e deve se manter por um bom perodo digamos por mais trs ou quatro anos ainda teremos que, no mnimo, dar suporte a aplicaes que utilizam ODBC (escrevi o texto entre aspas no ano 2000, quando eu estava escrevendo o livro SQL Server 2000 Curso Completo. Porm como toda boa previso, errei feio, ou seja, hoje, cinco anos depois, continuamos tendo que trabalhar com aplicaes baseadas em ODBC. No vou arriscar uma nova previso; s sei que todo profissional de banco de dados continua tendo que conhecer sobre ODBC. Por isso que veremos esta tecnologia tambm neste livro de SQL Server 2005). Por isso, analisaremos estas duas opes neste captulo ODBC e ADO/OLE-DB , sendo que muitas vezes utilizaremos as duas ao mesmo tempo. Agora vamos procurar entender um pouco melhor estas tecnologias. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000643 N O T A UM POUCO SOBRE ODBC OPEN DATABASE CONNECTIVITY ODBC um padro da indstria de informtica para acesso a Bancos de Dados estruturados. Um Banco de Dados estruturado utiliza o modelo Relacional (veja o Captulo 1 para um estudo detalhado sobre o Modelo Relacional de Dados), onde temos tabelas e relacionamentos entre tabelas. So exemplos de Bancos de Dados relacionais: MS SQL Server, ORACLE, MS Access, Sybase, DB2 da IBM, etc. Para uma reviso dos fundamentos do modelo Relacional, consulte o Captulo 1. ODBC uma interface que permite que os aplicativos acessem qualquer base de dados para a qual existe um driver ODBC. Utilizando ODBC, podemos criar pginas ASP que acessem dados para os quais existam drives ODBC, de uma maneira simples e rpida. Com a utilizao de ODBC, podemos criar aplicaes que se tornam independentes do sistema de Banco de Dados que est sendo utilizado. Por exemplo, desenvolvemos uma aplicao para acessar uma fonte de dados ODBC. Esta fonte de dados est ligada a um Banco de Dados do Microsoft Access. Em determinado momento, resolvemos migrar do Microsoft Access para o Microsoft SQL Server 2005. Sem problemas. Basta alterar nossa fonte de dados ODBC para que a fonte passe a referenciar o Banco de Dados no Microsoft SQL Server 2005 e, pronto, a nossa aplicao passa a utilizar a nova fonte de dados de maneira transparente, atravs do driver ODBC. Na Figura 11.13, temos uma viso geral do acesso aos dados utilizando ODBC. Figura 11.13 ODBC para acesso a dados. Para que uma fonte ODBC possa ser utilizada, a fonte precisa ser previamente criada, utilizando-se o gerenciador ODBC, o qual acessvel atravs da opo Ferramentas administrativas do menu Iniciar - > Programas -> Ferramentas Administrativas -> Fontes de dados (ODBC). Agora aprenderemos a criar fontes de dados ODBC, na prtica. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6440000Curso Completo N O T A N O T A Ao desenvolver um aplicativo, o desenvolvedor far referncia fonte ODBC criada. A ttulo de exemplo, iremos criar duas fontes, uma para um Banco de Dados Microsoft Access e outra para um Banco de Dados Microsoft SQL Server 2005. A fonte ODBC para o SQL Server 2005 ser utilizada neste captulo e a fonte para o Microsoft Access, no Captulo 12. CRIANDO UMA FONTE ODBC PARA UM BANCO DE DADOS DO MICROSOFT ACCESS Vamos criar uma fonte para um Banco de Dados do Microsoft Access. Utilizaremos uma base de exemplo que j vem com o Microsoft Access Northwind.mdb. No nosso exemplo, o banco de dados Northwind.mdb estar localizado em C:\Meus documentos. A estrutura (tabelas e relacionamentos) deste Banco de Dados praticamente igual ao Northwind instalado com o SQL Server 2000, o qual pode ser importado para o SQL Server 2005, usando o DTS Import/Export Wizard, o qual j foi exemplificado, anteriormente, neste livro. Para criar uma fonte ODBC chamada nwind, associada com o banco de dados Northwind.mdb, siga os passos indicados a seguir: Dependendo da verso do ODBC instalada em seu computador, as telas apresentadas podem ser um pouco diferentes das aqui apresentadas. 1. Abra o gerenciador de fontes ODBC (Iniciar -> Programas -> Ferramentas administrativas -> Fontes de dados (ODBC). Surge a janela indicada na Figura 11.14. Figura 11.14 O gerenciador de fontes ODBC. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000645 N O T A Uma fonte de dados chamada de DSN (Data Source Name), a qual pode ser de trs tipos: DSN de Usurio (User DSN): Este tipo de fonte ODBC contm as informaes necessrias para se conectar com um determinado Banco de Dados. Somente pode ser utilizada pelo usurio que criou a fonte e no computador onde a fonte foi criada. um tipo pouco utilizado. DSN de Sistema (System DSN): Este , sem dvidas, o tipo mais utilizado. Este tipo de fonte ODBC contm as informaes necessrias para se conectar com um determinado Banco de Dados. visvel para todos os usurios que acessam o servidor, inclusive para os servios do Windows 2000. DSN de Arquivo (File DSN): Este tipo de fonte ODBC contm as informaes necessrias para se conectar com um determinado Banco de Dados. As informaes so gravadas em um arquivo e podem ser compartilhadas por vrios usurios. No nosso exemplo, vamos trabalhar, sempre, com uma fonte ODBC do tipo System DSN. Para maiores informaes sobre os diferentes tipos de DSN consulte o site http://msdn.microsoft.com. 2. D um clique na guia DNS de Sistema. Surge a janela indicada na Figura 11.15. Figura 11.15 Criando uma fonte do tipo System DSN. 3. D um clique no boto Adicionar para criar uma nova fonte ODBC. 4. Surge uma janela perguntando qual o tipo de Banco de Dados que a fonte ODBC ir selecionar. Selecione Driver do Microsoft Access (*.mdb), conforme indicado na Figura 11.16. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6460000Curso Completo Figura 11.16 Selecionando o Banco de Dados a ser usado. 5. D um clique no boto Concluir. aberta a janela Configurar ODBC para Microsoft Access, conforme indicado na Figura 11.17. Figura 11.17 Definies para a fonte ODBC para o Microsoft Access. Nesta janela, devemos fornecer diversas informaes, tais como o nome para a fonte ODBC, a localizao do arquivo .mdb, etc. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000647 6. No campo Nome da fonte de dados, digite nwind. 7. No campo Descrio, digite Dados do Microsoft Access. A janela Configurar ODBC para Microsoft Access deve estar conforme indicado na Figura 11.18. Figura 11.18 Definindo a fonte ODBC. 8. D um clique no boto Selecionar. Utilizamos este boto para selecionar o arquivo .mdb que ser acessado pela fonte ODBC que est sendo criada. Surgir a janela Selecionar Banco de Dados do sistema. 9. Navegue at a pasta onde est o arquivo .mdb. No nosso exemplo vamos navegar at a pasta Meus documentos do drive C:, e dentro da pasta Meus documentos vou selecionar Northwind.mdb, conforme indicado na Figura 11.19. Figura 11.19 Selecionando o arquivo C:\Meus documentos\Northwind.mdb proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6480000Curso Completo N O T A N O T A N O T A 10. D um clique no boto OK e voc estar de volta janela Configurar ODBC para Microsoft Access. 11. D um clique no boto OK para fechar a janela Configurar ODBC para Microsoft Access. 12. Voc estar de volta janela do gerenciador de fontes ODBC, com a fonte ODBC nwind j criada. Feche o gerenciador. Vamos utilizar esta fonte ODBC em diversos exemplos do Captulo 12. CRIANDO UMA FONTE ODBC PARA UM BANCO DE DADOS PUBS, DA INSTNCIA SERVIDOR\SQL2005 Vamos criar uma fonte para um Banco de Dados do Microsoft SQL Server 2005. Utilizaremos o banco de dados Pubs, o qual era instalado automaticamente com o SQL Server 2000. No SQL Server 2005 no est disponvel este banco de dados. Para os exemplos deste captulo, eu utilizei o DTS Import/Export Wizard, para importar o banco de dados Pubs de uma instncia do SQL Server 2000 para a instncia SERVIDOR\SQL2005, do SQL Server 2005. Voc aprendeu a utilizar o DTS Import/Export Wizard nos Captulos 7 e 9. Nestes Captulos voc encontra exemplos prticos, passo a passo, de como usar o DTS Import/Export Wizard. No nosso exemplo, o nome do Servidor SQL SERVIDOR e a instncia SERVIDOR\SQL2005. Caso voc esteja trabalhando em um servidor com um nome diferente, utilize o nome do servidor no qual voc est trabalhando. O Banco de Dados pubs modelado com base em uma editora fictcia. Existe tabela para cadastro de autores, ttulos de livro, etc. Para criar uma fonte ODBC chamada ST1_pubs, fonte esta associada ao banco de dados Pubs, da instncia SERVIDOR\SQL2005, siga os passos indicados a seguir: Dependendo da verso do ODBC instalado em seu computador, as telas apresentadas podem ser um pouco diferentes das aqui apresentadas. 1. Abra o gerenciador de fontes ODBC (Iniciar -> Programas -> Ferramentas administrativas -> Fontes de dados ODBC). 2. D um clique na guia DSN de Sistema. 3. D um clique no boto Adicionar, para criar uma nova fonte ODBC. 4. Surge uma janela perguntando qual o tipo de Banco de Dados que voc deseja acessar. Selecione SQL Server, conforme indicado na Figura 11.20. 5. D um clique no boto Concluir. aberta a janela Criar uma nova fonte de dados para o SQL Server. 6. No campo Nome, digite ST1_pubs. 7. No campo Descrio, digite Banco pubs no SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000649 Figura 11.20 Selecionando o Banco de Dados a ser usado. 8. Na lista Servidor, selecione o nome do Servidor SQL a ser utilizado. No nosso exemplo SERVIDOR\SQL2005. A janela Criar uma nova fonte de dados para o SQL Server deve estar conforme indicado na Figura 11.21. Figura 11.21 Definies para a fonte ODBC. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6500000Curso Completo 9. D um clique no boto Avanar para ir para a prxima etapa. 10. Nesta etapa, definimos o tipo de autenticao a ser utilizado. Como estamos nos conectando com SERVIDOR\SQL2005, certifique-se de que a opo Com a identificao do Windows NT usando ident. de logon na rede esteja selecionada, conforme indicado na Figura 11.22. Figura 11.22 Definindo o tipo de autenticao. 11. D um clique no boto Avanar, seguindo para a prxima etapa do assistente. Nesta tela, vamos definir com qual Banco de Dados nos conectamos por padro, ao estabelecer a conexo com SERVIDOR\SQL2005, usando a fonte ODBC que est sendo crida. Clique na opo Alterar o banco de dados padro para. A lista abaixo desta opo habilitada. Nesta lista, selecione Pubs, conforme indicado na Figura 11.23. Em um servidor SQL Server, podem existir diversos Bancos de Dados. Neste caso, estamos definindo a qual Banco de Dados a nossa fonte ODBC ir conectar-se. 12. D um clique no boto Avanar para ir para a ltima etapa. Nesta etapa podemos definir diversas opes, tais como: O idioma para as mensagens do SQL Server. Se devemos ou no utilizar criptografia dos dados para aumentar a segurana. Se devemos utilizar as configuraes regionais, tais como hora, data e formato para nmeros em geral e para valores monetrios. 13. Selecione as opes conforme indicado na Figura 11.24. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000651 Figura 11.23 Definindo a qual Banco de Dados a fonte ODBC se conecta. Figura 11.24 Finalizando a configurao da fonte ODBC. 14. D um clique no boto Concluir para finalizar a criao da fonte ODBC. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6520000Curso Completo Figura 11.25 Resumo das opes selecionadas para a fonte ODBC. 15. D um clique no boto Testar fonte de dados. Deve surgir uma janela indicando que o teste foi realizado com sucesso, conforme indicado na Figura 11.26. Surge a janela Instalao do ODBC para Microsoft SQL Server, a qual informa as diversas opes selecionadas, conforme indicado na Figura 11.25. Nesta janela, podemos clicar no boto Testar fonte de dados, para verificar se a conexo com o Banco de Dados est OK. Figura 11.26 Teste indicando que a conexo est OK. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000653 N O T A 16. D um clique em OK para fechar a janela de teste. 17. D um clique em OK para fechar a janela de resumo. 18. Voc estar de volta janela do gerenciador de fontes ODBC, com a fonte ODBC ST1_pubs j criada. D um clique em OK para fechar o gerenciador. Utilizaremos esta fonte ODBC nos exemplos deste captulo. Agora que j sabemos um pouco sobre ODBC, vamos falar sobre a dobradinha ADO/OLE DB. UM POUCO SOBRE OLE DB E ADO OLE DB uma tecnologia, baseada na tecnologia COM Common Object Model da Microsoft, para acesso a Bases de dados. Uma das grandes novidades trazidas pela tecnologia OLE DB a possibilidade de acesso a bases de dados no estruturadas, como por exemplo arquivos de mensagens de correio eletrnico, arquivos de texto, e Bancos de Dados de documentos como o Lotus Notes ou o Microsoft Exchange. Alm disso, a tecnologia OLE DB foi construda tendo a performance como uma de suas diretivas. Diferente do ODBC, no existe um Driver OLE DB para cada fonte de dado. Na tecnologia OLE DB, o conector para uma fonte de dados chamado de OLE DB Provider. Por exemplo, existe um OLE DB Provider para Microsoft Access, um OLE DB Provider para Microsoft SQL Server, um para mensagens de correio do Microsoft Exchange, um para Bancos de Dados Oracle e assim por diante. Figura 11.27 Acessando fontes de dados com OLE DB. Jet Provider SQL Server Provider OLE DB Gerenciador ODBC OLE DB Providers Drivers ODBC Fontes de dados: Estruturadas e No estruturadas. Driver ODBC SQL Server Driver ODBC Microsoft Access Driver ODBC Oracle ORACLE Microsoft Access Microsoft Access Microsoft SQL Server Microsoft SQL Server Microsoft Exchange Server Exchange Server Provider proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6540000Curso Completo Muitos usurios pensam que OLE DB veio para substituir completamente o padro ODBC. Na verdade isto pode at acontecer daqui a algum tempo. Porm, na prtica, existe um OLE DB Provider para ODBC. Com isso, utilizando OLE DB podemos ter acesso a qualquer fonte de dados ODBC. Na prtica, ODBC funciona como se fosse um subconjunto de OLE DB, uma vez que OLE DB fornece acesso a todas as fontes de dados ODBC (atravs da utilizao do OLE DB Provider para ODBC), mais as fontes de dados no estruturadas para as quais existem OLE DB Provider disponveis. Na Figura 11.27, temos uma viso geral do acesso a fontes de dados, utilizando OLE DB. Veja que possvel o acesso a qualquer fonte de dados ODBC. Tambm possvel o acesso sem a utilizao de ODBC, utilizando-se o OLE DB Provider adequado para cada situao. Quando estamos utilizando OLE DB, temos a figura da fonte de dados e do consumidor de dados. Um OLE DB Provider a fonte de dados, j o aplicativo o consumidor de dados. No prximo item, criaremos pginas ASP que acessam dados de um Banco de Dados do Microsoft SQL Server 2005. Com isso, nossas pginas ASP atuaro como consumidores de dados. Porm OLE DB, na verdade, uma API (Application Programming Interface) baseada na tecnologia COM da Microsoft. Utilizar diretamente uma API algo que requer conhecimentos avanados de programao, tais como o domnio das linguagens C e C++. Embora seja factvel utilizar diretamente OLE DB, muito pouco produtivo, alm de exigir profissionais com conhecimentos avanados de programao. ADO Jet Provider SQL Server Provider OLE DB Gerenciador ODBC OLE DB Providers Drivers ODBC Fontes de dados: Estruturadas e No estruturadas. Driver ODBC SQL Server Driver ODBC Microsoft Access Driver ODBC Oracle ORACLE Microsoft Access Microsoft Access Microsoft SQL Server Microsoft SQL Server Microsoft Exchange Server Exchange Server Provider Figura 11.28 Acessando fontes de dados com ADO/OLE DB. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000655 N O T A N O T A Para solucionar o problema de utilizao direta de OLE DB foi criada uma camada adicional de programao, a qual conhecida como ADO Activex Data Objects. Com a utilizao de ADO, temos acesso a uma srie de objetos e seus mtodos. A utilizao dos objetos ADO bem mais simples do que a utilizao direta da API OLE DB. Com a utilizao de ADO, a produtividade do desenvolvedor aumenta bastante, pois os objetos de ADO so de fcil aprendizagem e utilizao, principalmente para quem j programa em Visual Basic ou Delphi. Quando utilizamos um objeto ADO, o prprio objeto sabe como converter a chamada feita, para comandos que a API OLE DB entende e capaz de executar. Neste e no prximo captulos sempre que formos fazer acesso a bases de dados, vamos utilizar objetos ADO. Por exemplo, para estabelecer uma conexo com um Banco de Dados, estaremos utilizando o objeto Connec- tion; para acessar registros de uma ou mais tabelas do Banco de Dados, utilizaremos um objeto chamado RecordSet e assim por diante. No Captulo 13, passaremos a utilizar o ADO.NET, que a tecnologia de acesso a dados do .NET. Por exemplo, para criar uma pgina ASP.NET que consulta dados em um banco de dados do SQL Server 2005, utilizaremos objetos do ADO.NET. Bem, mas este j assunto para o Captulo 13. Na Figura 11.28, representamos o acesso a dados atravs de ADO, o qual se comunica com a API OLE DB. Com isso terminamos nosso estudo sobre os aspectos tericos necessrios ao entendimento da conexo de pginas ASP com Bancos de Dados. A partir do prximo item aprenderemos, na prtica, a criar pginas ASP que fazem conexo com Banco de Dados. Grande parte do nosso trabalho ser estudar os objetos, mtodos, propriedades e eventos da tecnologia ADO. Nunca demais salientar que ADO a forma de acesso a dados indicada pela Microsoft, para as tecnologias anteriores ao .NET, tais como ASP e Visual Basic 6.0. No site http:// msdn.microsoft.com existem diversos documentos que ensinam como migrar de outras tecnologias mais antigas (como DAO por exemplo), para a tecnologia ADO/OLE DB. Alm disso a Microsoft vem anunciando que as tecnologias mais antigas (como DAO e RDO) sero descontinuadas, isto , sero substitudas por ADO. Outro ponto importante a salientar que ADO no somente para uso em aplicaes Web. Podemos utilizar ADO para qualquer aplicao, como as tradicionais aplicaes Cliente/Servidor de duas ou trs camadas desenvolvidas em Visual Basic ou qualquer outra linguagem com suporte a ADO/OLE DB. Neste captulo, criaremos as pginas ASP utilizando um editor de textos padro, como o Bloco de Notas. Existem ambientes de desenvolvimento do tipo RAD (Rapid Application Development), para a criao de pginas ASP. Dois dos mais conhecidos so o Visual Interdev, da prpria Microsoft, e o Dreamweaver, da Macromedia. DESENVOLVIMENTO EM: O MODELO DE OBJETOS DO ADO ACTIVEX DATA OBJECTS PR-REQUISITOS Fundamentos apresentados na Parte I. Noes sobre os modelos de desenvolvimento. Conhecimento bsico de ODBC e OLE DB. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6560000Curso Completo METODOLOGIA Apresentao dos principais objetos do ADO, para acesso aos dados do servidor SQL Server 2005. Neste item, teremos uma viso geral do Modelo de Objetos do ADO. Nos demais itens deste captulo, vamos utilizar, na prtica, alguns destes objetos. Para um estudo detalhado dos objetos do modelo ADO, consulte o e-book Criando Sites Dinmicos com ASP 3.0, de minha autoria, disponvel para venda no meu site, em http://www.juliobattisti.com.br/ebooksdoautor Na Figura 11.29, temos uma viso geral dos principais objetos do Modelo de Objetos ADO. Figura 11.29 O Modelo de Objetos ADO. Abaixo uma descrio resumida dos principais objetos: Connection: Este objeto utilizado para estabelecer uma conexo com uma fonte de dados, seja atravs de um driver ODBC ou de um OLE DB Provider. O primeiro passo para acessar uma fonte de dados estabelecer uma conexo com esta fonte. Uma vez estabelecida esta conexo, podemos utilizar outros objetos para extrair, alterar e inserir dados ou qualquer outra operao que seja permitida pela fonte de dados. Quando estabelecemos a conexo, tambm podemos passar informaes de autenticao, tais como o nome do usurio e senha, de tal forma que seja dado acesso aos dados de acordo com as permisses de cada usurio. Por exemplo, podem existir usurios que devam ter permisso somente para leitura dos dados, j outros usurios podem necessitar de permisso para leitura e alterao e assim por diante. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000657 N O T A Um detalhe importante a ser salientado que a criao de uma conexo com um Banco de Dados, atravs da utilizao do objeto Connection, no obrigatria. Podemos utilizar diretamente os objetos Command, RecordSet e Record, pois, cada vez que utilizarmos um destes objetos, uma conexo ser automaticamente criada. Porm pode ser mais prtica a criao explcita de uma conexo, principalmente em situaes em que muitos comandos so executados contra a fonte de dados. Neste caso, a criao de uma conexo, com a utilizao do objeto Connection, pode melhorar o desempenho da aplicao Web. Se deixarmos que cada objeto crie a sua prpria conexo, teremos um nmero grande de conexes com o banco de dados. Cada conexo consome recursos, principalmente memria RAM, no servidor. Se criarmos um objeto Connection e os demais objetos utilizarem esta conexo, teremos um nmero reduzido de conexes, o que melhora bastante o desempenho. Pode parecer pouco significativo para uma nica pgina ASP. Agora imagine uma pgina ASP que acessada por milhares de usurios. Multiplique o nmero de usurios pelo nmero de conexes que a pgina ASP cria com o Banco de Dados, e voc ter um bom motivo para utilizar o objeto Connection, ao invs de deixar cada objeto criar a sua prpria conexo. Command: Este objeto pode ser utilizado para executar um comando (uma instruo SQL por exemplo) em uma fonte de dados. Podemos utilizar este objeto para efetuar uma consulta em uma ou mais tabelas de um Banco de Dados e retornar o resultado em um objeto RecordSet. Tambm podemos utilizar este objeto para alterar a estrutura de um Banco de Dados, desde que tenhamos permisso para isso. Um dos usos mais comuns do objeto Command para executar um stored procedure em um Banco de Dados. Com o uso deste objeto podemos, inclusive, passar parmetros de entrada e receber parmetros de sada de um Stored Procedure. RecordSet: Este objeto representa um conjunto de registros obtidos a partir de um Banco de Dados. Este conjunto de registros pode, por exemplo, ter sido retornado devido a uma operao do objeto Command. Todo objeto RecordSet formado por linhas e colunas, como se fosse uma tabela de um Banco de Dados. Record: Este objeto representa uma nica linha (ou seja, um nico registro) de um objeto RecordSet. Stream: Este objeto utilizado para manipular dados no estruturados, normalmente organizados em formas de rvores hierrquicas. Pode ser utilizado para acessar informaes de um sistema de arquivos ou um sistema de correio eletrnico. Cada um destes objetos apresenta uma srie de mtodos, propriedades, eventos e colees. Na maioria das situaes utilizamos os objetos Connection e RecordSet juntos em uma mesma pgina ASP. No prximo item vamos estudar o objeto Connection, porm j fazendo uso do objeto RecordSet. Nos exemplos prticos ser apresentado apenas o bsico sobre o objeto RecordSet. Nos prximos itens deste captulo, estudaremos mais detalhes sobre o objeto RecordSet. Antes do primeiro exemplo prtico, vamos definio do que uma pgina ASP. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6580000Curso Completo N O T A DESENVOLVIMENTO EM: APLICAES COM ASP ACTIVE SERVER PAGES PR-REQUISITOS Fundamentos apresentados na Parte I. Noes sobre os modelos de desenvolvimento. Conhecimento bsico de ODBC e OLE DB. Modelo de Objetos do ADO. Noes sobre os comandos bsicos da linguagem T-SQL. METODOLOGIA Apresentao dos objetos, mtodos e propriedades do modelo ADO para acesso aos dados do servidor SQL Server 2005, atravs de pginas ASP. TCNICA Utilizao dos objetos, mtodos e propriedades do modelo ADO para a criao de pginas ASP que acessam aos dados do servidor SQL Server 2005. Definir exatamente o que ASP uma tarefa que pode gerar controvrsias. Eu, particularmente, gosto de definir ASP, como sendo: Uma tecnologia que permite a criao de pginas dinmicas, nas quais, alm de cdigo HTML, temos cdigo ASP. justamente este cdigo que fornece toda a funcionalidade que torna os sites criados em ASP dinmicos, possibilitando a criao de aplicaes Web. Uma pgina ASP uma mistura de cdigo HTML tradicional com cdigo ASP. O cdigo ASP colocado entre os marcadores <% (incio de um bloco de cdigo ASP) e %> (final de um bloco de cdigo ASP). Em uma pgina, podemos ter diversos blocos de cdigo ASP. Desta forma, posso ir intercalando cdigo ASP e cdigo HTML padro. O cdigo ASP que fornece a capacidade de execuo de comandos que fazem conexes com Banco de Dados, retornam resultados e executam clculos e operaes que tornam as pginas mais dinmicas. A seguir, um exemplo simples de um arquivo em que temos cdigo ASP e cdigo HTML na mesma pgina: Exemplo 11.1 A primeira pgina ASP!! 1 <HTML> 2 <HEAD> 3 <TITLE>Minha primeira pgina ASP !!</TITLE> 4 </HEAD> 5 <BODY> 6 <% 7 Response.Write <H1>Data de hoje: & Date( ) & </H1> 8 Response.Write <H1>Hora atual: & Time( ) & </H1> 9 %> 10 </BODY> 11 </HTML> No digite o nmero das linhas. A numerao apenas aparece na listagem, para servir como referncia na hora de explicarmos o cdigo ASP. Ao abrir esta pgina no navegador, obtemos o resultado indicado na Figura 11.30. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000659 N O T A N O T A Figura 11.30 Nossa primeira pgina ASP. Salvei este arquivo na pasta Captulo11 criada anteriormente, com o nome de Exemplo11-1.asp. Por isso o endereo para esta pgina o seguinte: http://servidor/LivroSQL2005/Capitulo11/Exemplo11-1.asp Se voc pressionar F5 para recarregar a pgina, ser exibida a data e hora, j atualizadas. Em resumo, cada vez que voc carregar a pgina, as funes Date( ) e Time( ) retornaro a data e hora atualizadas. Veja que o cdigo ASP que torna a pgina dinmica. No defino ASP como uma linguagem de script, porque, para a criao de pginas ASP, podemos utilizar diferentes linguagens de script, tais como VBScript e Java Script. Neste captulo, utilizaremos o VBScript. Para maiores detalhes sobre o VBScript consulte o endereo http://msdn.microsoft.com/scriptin ou o endereo http://www.serachvb.com. Voc tambm encontrar informaes sobre VBScript e-book Criando Sites Dinmicos com ASP 3.0, citado anteriormente. Melhor do que definies formais entender como funciona uma pgina ASP. Vamos nos basear na Figura 11.31. Vamos fazer alguns comentrios sobre esta figura. O servidor Web, no nosso caso o IIS da Microsoft, reconhece que a pgina solicitada uma pgina ASP, pela extenso da pgina. As pginas ASP devem ter a extenso .asp. Se criarmos uma pgina ASP e salvarmos a pgina com a extenso .htm ou .html, o IIS simplesmente ignora o cdigo ASP. A criao de pginas ASP est ligada utilizao do IIS. No podemos, por exemplo, criar pginas ASP e disponibiliz-las utilizando outros servidores Web, como o Netscape Web Server ou o Apache. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6600000Curso Completo Figura 11.31 Como funciona o ASP. O usurio digita o endereo http://www.abc.com/cep.asp e tecla Enter. Feito isso, o pedido enviado para o servidor www.abc.com. O servidor identifica a extenso do arquivo .asp. Como a extenso .asp, a pgina cep.asp passada para o Interpretador ASP, o qual faz parte do IIS. O interpretador percorre toda a pgina, executando o cdigo ASP e retornando o cdigo HTML, resultante deste processamento. Com isso, o que retornado para o usurio que solicitou a pgina ASP apenas o cdigo HTML resultante do processamento do cdigo ASP da pgina. Este fato pode ser comprovado, pedindo para que o navegador exiba o cdigo-fonte da pgina. No caso do Internet Explorer, basta selecionar a opo Cdigo-fonte, do menu Exibir. O fato de o retorno ser HTML puro traz diversos benefcios, dentre os quais podemos destacar: Os algoritmos, bem como o prprio cdigo ASP, ficam protegidos. Isto significa que o usurio no tem acesso ao cdigo das aplicaes Web, desenvolvidas em ASP. Isto bastante desejvel, uma vez que no seria interessante que qualquer usurio pudesse copiar, livremente, os algoritmos e cdigos da sua empresa. O acesso a pginas ASP independente do navegador utilizado. No importa se estamos utilizando o Netscape Navigator, o Internet Explorer, ou qualquer outro navegador. Uma vez que o que retorna cdigo HTML, qualquer navegador capaz de acessar uma pgina ASP. Em contrapartida, o servidor precisa ser o IIS da Microsoft. Outros servidores ainda no possuem um interpretador ASP. Outra questo importante a considerar o fato de uma pgina ASP ser interpretada no servidor. Isto significa que voc no pode criar uma pgina ASP e test-la localmente, simplesmente abrindo-a no navegador. Se voc criar uma pgina ASP, salv-la no seu disco rgido local e tentar abri-la no navegador, Servidor Web www.abc.com Internet http://www.abc.com/cep.asp A pgina ASP processada no servidor. O resultado do processamento uma pgina HTML. O que retorna para o cliente a pgina HTML, j resultante do processamento no servidor Web. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000661 N O T A todo o cdigo ASP ser ignorado, uma vez que no existe o interpretador ASP. Para poder testar as suas pginas ASP, voc ter que salv-las em um servidor Web, que esteja rodando o IIS. J conversamos bastante e agora hora de ao. No prximo item, vamos estudar o objeto Connection e criar uma pgina ASP que utiliza este objeto para retornar dados de uma tabela de um Banco de Dados do SQL Server 2005. O OBJETO CONNECTION Conforme descrevemos anteriormente, o primeiro passo para conectar uma pgina ASP com uma fonte de dados estabelecer uma conexo com a fonte de dados. Para estabelecermos uma conexo com um Banco de Dados, utilizamos o objeto Connection. Podemos criar uma conexo utilizando uma fonte ODBC ou um OLE DB Provider. Neste tpico, vamos estudar o objeto Connection, e aprender a criar conexes utilizando ODBC e tambm OLE DB. Tambm veremos alguns exemplos prticos, onde criaremos pginas .asp que fazem conexo com Bancos de Dados no servidor SQL Server 2005. CRIANDO CONEXES ODBC Vamos aprender a criar conexes com um Banco de Dados, utilizando fontes ODBC. O cdigo a seguir cria uma conexo com a fonte ODBC nwind criada anteriormente: Set conn = Server.CreateObject(ADODB.Connection) conn.Open nwind O primeiro passo criar a conexo com o Banco de Dados. Para isto, crio um objeto do tipo ADODB.Connection, depois abro a conexo utilizando o mtodo Open. Como parmetro para o mtodo Open, passo o nome da fonte de dados ODBC. No nosso exemplo, o nome da fonte nwind. Lembre que esta fonte nwind est associada com o Banco de Dados C:\Meus documentos\Northwind.mdb, do Microsoft Access. Os objetos ADO tm diversos mtodos e propriedades. Um mtodo executa uma ao especfica, ao esta representada por um verbo abrir, fechar, retornar, etc. As propriedades de um objeto retornam valores ou caractersticas do objeto. Para acessarmos um mtodo ou propriedade de um objeto, utilizamos a seguinte sintaxe: Para mtodos: nome_objeto.nome_mtodo parmetros Para propriedades: nome_objeto.propriedade Um objeto tambm pode conter eventos. Um evento uma determinada ao que acontece com o objeto, como, por exemplo, ao encerrar uma conexo, gerado o evento Disconnect do objeto Con- nection. Podemos escrever cdigo ASP que deve ser executado quando um evento disparado. O cdigo a seguir cria uma conexo com a fonte ODBC ST1_pubs, criada anteriormente, a qual est associada ao banco de dados Pubs, da instncia SERVIDOR\SQL2005: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6620000Curso Completo Set conn = Server.CreateObject(ADODB.Connection) conn.Open ST1_pubs Observe que apenas trocamos o nome da fonte ODBC, em relao ao exemplo anterior. Neste exemplo, o nome da fonte ST1_pubs. Lembre que esta fonte ST1_pubs est associada com o Banco de Dados pubs da instncia SERVIDOR\SQL2005, do servidor SQL Server 2005. O OBJETO CONNECTION MTODOS, PROPRIEDADES E EVENTOS Ao estabelecermos uma conexo, estamos informando para a nossa pgina ASP uma srie de detalhes que a pgina necessita para poder acessar os dados. Utilizando o objeto Connection podemos definir qual o OLE DB Provider a ser utilizado, qual a fonte de dados e demais informaes tais como nome de usurio e senha, caso sejam necessrios. Na Tabela 11.2, temos uma breve descrio dos principais mtodos do objeto Connection. Mtodo Descrio BeginTrans Inicia uma nova transao. Cancel Cancela a execuo assncrona dos comandos Execute e Open. Close Fecha uma conexo que esteja aberta e quaisquer objetos que sejam dependentes desta conexo. CommitTrans Salva as alteraes que foram feitas e encerra a transao corrente. Execute Executa um consulta, um comando ou uma instruo SQL e retorna um objeto do tipo Recordset. Por exemplo, pode ser utilizado para obter uma listagem de vendas de um Banco de Dados, ou qualquer outra listagem que possa ser obtida a partir de uma instruo SQL. Open Abre uma conexo com uma fonte de dados. Feito isso, comandos podem ser executados atravs desta conexo. OpenSchema Utilizado para obter informao sobre a estrutura de uma fonte de dados, tais como as definies de tabelas e relacionamentos de um Banco de Dados Relacional. RoolbackTrans Cancela quaisquer alteraes que tenham sido feitas pela transao e finaliza a transao. Tabela 11.2 Os principais mtodos do objeto Connection. Na Tabela 11.3, temos uma breve descrio das principais propriedades do objeto Connection. Propriedade Descrio Attributes Indica uma ou mais caractersticas de um objeto Connection. Retorna um valor Long. CommandTimeout Indica o tempo mximo de execuo de um comando. Caso o comando demore mais do que o tempo definido nesta propriedade, ser gerado um erro. O valor padro 30 segundos. ConnectionString Contm todas as informaes utilizadas para estabelecer a conexo com a fonte de dados. ConnectionTimeout Indica o tempo mximo para tentativa de estabelecer uma conexo. Caso a conexo no seja estabelecida em um tempo menor ou igual ao definido em ConnectionTimeout, a conexo ser encerrada e um erro gerado. Por padro este valor definido em 15 segundos. CursorLocation Define ou retorna a localizao do cursor, se no servidor ou no cliente. Tabela 11.3 As principais propriedades do objeto Connection. continua proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000663 Na Tabela 11.4, temos uma breve descrio dos principais eventos do objeto Connection. Propriedade Descrio DefaultDatabase Indica qual o Banco de Dados padro para um objeto Connection. Por exemplo, quando estamos conectando com um Servidor SQL precisamos definir qual o Banco de Dados que ser acessado. Fazemos isso definindo qual o Banco de Dados padro, atravs da utilizao da propriedade DefaultDatabase. Errors Contm todos os objetos Error criados em resposta a falhas envolvendo o provedor de dados. IsolationLevel Define o nvel de isolamento das transaes para um objeto Connection. Mode Indica as permisses disponveis para modificao de dados atravs de uma conexo. Properties Contm todos os objetos Property de um determinado objeto Connection. Provider Retorna o nome do provedor para uma determinada conexo. State Indica se a conexo est aberta ou fechada. Version Retorna a verso da tecnologia ADO. Por exemplo, 2.0 ou 2.5. continuao CRIANDO CONEXES UTILIZANDO OLE DB Vamos aprender a criar conexes com um Banco de Dados, utilizando fontes da tecnologia OLE DB. Ao utilizarmos OLE DB, no precisamos criar uma fonte OLE DB; ao invs disso, todo o cdigo necessrio para estabelecer a conexo est na prpria pgina ASP que, conforme veremos a seguir, simplesmente a definio da propriedade ConnectionString, do objeto Connection. Conforme ilustrado na Figura 11.27, possvel o acesso a uma fonte de dados, sem a utilizao de ODBC. Este um ponto de confuso entre muitos programadores iniciantes em ASP. Em diversas conversas com colegas que estavam iniciando o estudo de ASP, surgiu esta dvida: possvel conectar com uma fonte de dados, como, por exemplo, um Banco de Dados do Microsoft Access ou do SQL Server 2005, sem a utilizao de um driver ODBC? Evento Descrio BeginTransComplete Ocorre aps o trmino de uma operao BeginTrans. CommitTransComplete Ocorre aps o trmino de uma operao CommitTrans. ConnectComplete Ocorre aps o incio de uma conexo. Disconnect Ocorre aps o trmino de uma conexo. ExecuteComplete Ocorre aps o trmino da execuo de um comando. InfoMessage Ocorre toda vez que a operao ConnectionEvent ocorre com sucesso e informao adicional retornada pelo provedor de dados. RollBackTransComplete Ocorre aps a execuo da operao RollbackTrans. WillConnect Ocorre antes do incio de uma conexo. WillExecute Ocorre antes que um comando pendente executado em uma determinada conexo. Tabela 11.4 Os principais eventos do objeto Connection. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6640000Curso Completo N O T A A resposta sim; perfeitamente possvel, e para isto basta criar um objeto Connection e configurar corretamente a sua propriedade ConnectionString. A propriedade ConnectionString deve conter as informaes necessrias para estabelecer a conexo com uma fonte de dados. Atravs desta propriedade, devemos fornecer informaes tais como: Provedor Nome do usurio Senha do usurio Nome do arquivo (como no caso de um Banco de Dados do Microsoft Access) Nome do servidor\instncia (como no caso de um Servidor SQL Server) Nome do Banco de Dados no servidor. So informaes necessrias para que a pgina ASP possa estabelecer a conexo com a fonte de dados, utilizando o OLE DB Provider correto. Pode at ser que seja utilizado o OLE DB Provider para ODBC, mas isto no obrigatrio. Agora aprenderemos um pouco mais sobre a propriedade ConnectionString. Tambm veremos alguns exemplos de utilizao desta propriedade. A PROPRIEDADE CONNECTIONSTRING Esta propriedade configurada de diferentes maneiras, de acordo com a fonte de dados que estiver sendo utilizada. Por exemplo, a configurao para acessar um Banco de Dados do Microsoft Access diferente da configurao para acessar um Banco de Dados do Microsoft SQL Server ou do Oracle. Vamos estudar como configurar esta propriedade para acessar algumas das principais fontes de dados: Microsoft Access, Microsoft SQL Server e Oracle. A propriedade ConnectionString tem uma srie de parmetros no formato: argumento = valor onde argumento pode ser a informao sobre o provedor, o nome do usurio, etc. Apenas a ttulo de exemplo, mostramos a seguir a propriedade ConnectionString para conexo com um Banco de Dados do Microsoft Access: Provider=MSDASQL.1;Data Source=nwind; Extended Properties=DSN=nwind; DBQ=C:\MEUS DOCUMENTOS\NWIND.MDB;DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5; Exibimos a propriedade em diversas linhas, por questo de espao. Quando estiver criando uma pgina .asp, coloque, sempre, um comando em cada linha. Agora vamos decifrar o que significam estes parmetros e aprender a utilizar esta propriedade, configurando conexes OLE DB, com um Banco de Dados do Microsoft Access. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000665 N O T A N O T A Vamos configurar a propriedade ConnectionString para estabelecer uma conexo com um Banco de Dados do Microsoft Access. Para tal, devemos configurar os parmetros indicados na Tabela 11.5. Por padro, o OLE DB Provider para Microsoft Access (tambm chamado de Jet OLE DB Provider) abre o Banco de Dados com permisso de leitura e escrita, isto , os dados tambm podem ser modificados. Para alterar o modo de abertura para, por exemplo, somente escrita, devemos utilizar a propriedade Mode, do objeto Connection. A seguir, temos um exemplo de uma conexo com um Banco de Dados do Microsoft Access, utilizando a propriedade ConnectionString: Set conn=Server.CreateObject(ADODB.Connection) conn.Open PROVIDER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE=c:\meus documentos\Northwind.mdb Primeiro, criamos um objeto do tipo Connection. Depois, utilizamos o mtodo Open, para abrir esta conexo. Observe que, aps o mtodo Open, passada uma string de conexo como parmetro para o mtodo Open. Este parmetro a propriedade ConnectionString. Poderamos obter o mesmo resultado de uma maneira diferente: primeiro, vamos definir a propriedade ConnectionString, depois simplesmente chamamos o mtodo Open. Ao chamar o mtodo Open, este verifica se a propriedade ConnectionString j est definida e utiliza esta propriedade. Nosso exemplo ficaria assim: 1 Set conn=Server.CreateObject(ADODB.Connection) 2 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=c:\meus documentos\Northwind.mdb 3 conn.Open Neste caso, na linha 1, foi definida a propriedade ConnectionString e, depois, na linha 3, utilizamos o mtodo Open. Utilizamos os nmeros de linha apenas para referncia. Quando criamos nossas pginas ASP, no devemos utilizar nmeros de linhas. Parmetro Descrio Provider Deve ser especificado o OLE DB Provider para o Microsoft Access. Para esta propriedade, utilizamos o seguinte valor: Microsoft.Jet.OLEDB.4.0. Data Source Informamos o caminho para o arquivo .mdb. Por exemplo, C:\Arquivos de programas\office\nwind.mdb. User ID Especifica o nome do usurio com o qual a conexo ser estabelecida. Caso esta propriedade no seja informada, esta ser definida como admin, o qual o usurio padro. Password Informa a senha para o usurio que far a conexo. Caso esta propriedade no seja informada, a senha ser definida como . Tabela 11.5 Definindo a propriedade ConnectionString para uma fonte do Microsoft Access. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6660000Curso Completo N O T A N O T A A linha 2 aparece quebrada em duas linhas por questes de espao para exibio, mas os comandos devem ser digitados em uma nica linha. No exemplo a seguir, temos um caso onde foi fornecido o nome do usurio e a senha para conexo. 1 Set conn=Server.CreateObject(ADODB.Connection) 2 conn.ConnectionString = PROVIDER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE=c:\meus documentos\nwind.mdb; User ID=jsilva;Password=senha12" 3 conn.Open Para maiores detalhes sobre segurana de Bancos de Dados do Microsoft Access, consulte o curso Access Avanado e VBA 550 pginas, de minha autoria. Maiores detalhes no meu site, em http://www.juliobattisti.com.br CONFIGURANDO CONEXES COM BANCOS DE DADOS DO MICROSOFT SQL SERVER 2005 Para configurar a propriedade ConnectionString para estabelecer uma conexo com um Banco de Dados de uma instncia do Microsoft SQL Server 2005, configuramos os parmetros indicados na Tabela 11.6. Tabela 11.6 Definindo a propriedade ConnectionString para uma fonte do Microsoft SQL Server 2005. Parmetro Descrio Provider Deve ser especificado o OLE DB Provider para o Microsoft SQL Server. Para esta propriedade utilizamos o seguinte valor: SQLOLEDB. Data Source ou Server Informamos o nome do servidor SQL, no formato Servidor\Instncia. Por exemplo: SERVIDOR\SQL2005 ou SERVIDOR\CURSOSJB Initial Catalog ou Database Nome do Banco de Dados a ser utilizado. Em um Servidor SQL Server, podem existir vrios Bancos de Dados. User ID ou uid Especifica o nome do usurio com o qual a conexo ser estabelecida. Password ou pwd Informa a senha para o usurio que far a conexo. Caso esta propriedade no seja informada, a senha ser definida como . O PRIMEIRO EXEMPLO CONECTANDO COM O BANCO DE DADOS NORTHWIND, DA INSTNCIA SERVIDOR\SQL2005 importante lembrar que o banco de dados Northwind no instalado juntamente com o SQL Server 2005. Ns importamos o banco de dados Northwind, de uma instncia do SQL Server 2000, para a instncia SERVIDOR\SQL2005, do SQL Server 2005. Fizemos isso usando o DTS Import/Export Wizard, o qual voc aprendeu a utilizar, na prtica, nos Captulos 7 e 9. No Exemplo 11.2, temos um exemplo de uma conexo com um Banco de Dados do Microsoft SQL Server, utilizando a propriedade ConnectionString. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000667 N O T A Crie este exemplo utilizando o editor de textos de sua preferncia. No inclua o nmero das linhas, os quais servem apenas para referncia. Salve este exemplo na pasta C:\LivroSQL2005\Capitulo11, com o nome de Exemplo11-2.asp. Exemplo 11.2 Conectando com um Banco de Dados do Microsoft SQL Server 2005 Exemplo11-2.asp. 1 <%@ Language=VBScript %> 2 <HTML> 3 <HEAD> 4 <TITLE>Conectando com o SQL Server 2005</TITLE> 5 </HEAD> 6 <BODY> 7 <H1> 8 <FONT color=navy>Registros da tabela Orders !!!!</FONT> 9 </H1> 10 <% 11 O primeiro passo criar a conexo com o Banco de Dados 12 Para isto crio um objeto do tipo Connection 13 Cria um objeto do tipo ADODB.Connection 14 Set conn=Server.CreateObject(ADODB.Connection) 15 Agora defino a propriedade ConnectionString do objeto Connection 16 criado anteriormente. 17 conn.ConnectionString = PROVIDER=SQLOLEDB; Data Source=SERVIDOR\SQL2005 ;Initial Catalog=Northwind; User ID=sa;Password=abc123" 18 conn.Open 19 O prximo passo criar uma instruo SQL 20 inst_sql=SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCity, Orders.ShipCountry FROM Orders ORDER BY Orders.OrderDate 21 Esta instruo SQL retorna os campos OrderID, OrderDate, ShipCity e ShipCountry, da tabela Orders, do Banco de Dados NorthWind. 22 Agora criamos um objeto RecordSet. 23 Este objeto ir executar a instruo SQL e 24 receber o resultado da consulta. 25 Set Pedidos = Server.CreateObject(ADODB.Recordset) 26 Agora executamos a instruo SQL 27 Pedidos.Open inst_sql, conn, 3, 3 28 Neste ponto, j tenho todos os registros retornados 29 pela instruo SQL. Estes registros esto armazenados 30 no objeto Clientes, que um objeto do tipo Recordset. 31 Agora, passo a montar a pgina que ser retornada para o 32 navegador do Cliente. Vamos montar uma tabela com o 33 resultado da consulta. 34 %> 35 <P> proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6680000Curso Completo N O T A 36 <HR> 37 <TABLE bgColor=gray border=1 borderColor=navy cellPadding=1 cellSpacing=1 width=100%> 38 <TR> 39 <TD align=middle bgColor=gray>Cdigo </TD> 40 <TD align=middle bgColor=gray>Data </TD> 41 <TD align=middle bgColor=gray>Cidade </TD> 42 <TD align=middle bgColor=gray>Pas </TD> 43 </TR> 44 <% 45 Inicio um Loop para percorrer todos os registros 46 do RecordSet Clientes, exibindo um registro em 47 cada linha da tabela. 48 Do Until Pedidos.eof %> 49 <TR> 50 <TD align=middle bgColor=gray><%=Pedidos.Fields(OrderID)%></TD> 51 <TD align=middle bgColor=gray><%=Pedidos.Fields(OrderDate)%></TD> 52 <TD align=middle bgColor=gray><%=Pedidos.Fields(ShipCity)%></TD> 53 <TD align=middle bgColor=gray><%=Pedidos.Fields(ShipCountry)%></TD> 54 </TR> 55 <% 56 Pedidos.MoveNext 57 loop 58 %> 59 </TABLE> 60 </P> 61 <HR> 62 </BODY> 63 </HTML> Ao acessarmos este arquivo, obtemos o resultado indicado na Figura 11.32. Para que voc possa utilizar a conta sa para login no servidor SQL Server, o modo de segurana precisa estar configurado para SQL Server and Windows Authentication Mode. Para informaes sobre como alterar o modo de segurana de uma instncia do servidor SQL Server 2005, consulte o Captulo 6 Segurana no SQL Server 2005. Vamos comentar alguns detalhes sobre o cdigo do Exemplo 11.2. Primeiro, vamos considerar o seguinte fragmento de cdigo: 17 conn.ConnectionString = PROVIDER=SQLOLEDB; Data Source=SERVIDOR\SQL2005 ;Initial Catalog=Northwind; User ID=sa;Password=abc123 18 conn.Open Observe que, neste caso, primeiro definimos a propriedade ConnectionString. Depois, utilizamos o mtodo Open, para abrir a conexo. Como a propriedade ConnectionString j estava definida, o mtodo Open utiliza as informaes da propriedade ConnectionString para estabelecer a conexo com o Banco de Dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000669 Figura 11.32 Registros da tabela Orders do Banco de Dados Northwind da instncia SERVIDOR\SQL2005 do servidor SQL Server 2005. Segundo, vamos considerar a string de conexo: PROVIDER=SQLOLEDB; Data Source=SERVIDOR\SQL2005; Initial Catalog=Northwind; User ID=sa;Password=abc123 Observe que estamos informando os parmetros indicados na Tabela 11.7. Parmetro Valor fornecido Provider SQLOLEDB Data Source ou Server SERVIDOR\SRVINST01 Initial Catalog/Database Northwind User ID ou uid sa Password ou pwd senha123 Tabela 11.7 Parmetros para a string de conexo com o servidor SQL Server 2005. Temos dois parmetros que merecem comentrios. O parmetro Data Source ou Server foi informado da seguinte maneira: SERVIDOR\SQL2005 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6700000Curso Completo Este formato, conforme descrito nos captulos iniciais do livro, uma novidade que foi introduzida no SQL Server 2000 e que tambm faz parte do Microsoft SQL Server 2005. O valor antes da barra (\) o nome do servidor e o valor depois da barra o nome da instncia do SQL Server a ser utilizada. Com o Microsoft SQL Server 2005, posso ter vrias instncias do servidor SQL em um nico servidor, isto , como se eu tivesse vrios servidores SQL Server 2005 diferentes no mesmo servidor, sendo que cada um deles deve possuir um nome diferente. Neste livro estamos utilizando um servidor com duas instncias, conforme indicado a seguir: SERVIDOR\SQL2005 SERVIDOR\CURSOSJB Quando vou definir a string de conexo, preciso definir qual a instncia que quero conectar pgina ASP. Se voc estiver utilizando o Microsoft SQL Server 7.0 ou verso inferior, basta fornecer o nome do servidor. Neste caso definiramos a propriedade ConnectionString da seguinte maneira: PROVIDER=SQLOLEDB; Data Source=SERVIDOR; Initial Catalog=Northwind; User ID=sa;Password=abc123 Observe que estamos conectando com o Banco de Dados Northwind. Dentre deste Banco de Dados, a nossa instruo SQL acessa dados da tabela Orders, conforme indicado pelo seguinte fragmento de cdigo: 20 inst_sql=SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCity, Orders.ShipCountry FROM Orders ORDER BY Orders.OrderDate Com esta instruo so retornados os campos OrderID, OrderDate, ShipCity e ShipCountry. Alm disso, a listagem obtida classificada pelo campo OrderDate, conforme pode ser confirmado pelos resultados exibidos na Figura 11.32. O restante do cdigo para a construo da tabela e exibio de um registro em cada linha. CONFIGURANDO CONEXES OLE DB, COM BANCOS DE DADOS ORACLE Para configurar a propriedade ConnectionString para estabelecer uma conexo com um Banco de Dados de um servidor ORACLE, podemos configurar os parmetros indicados na Tabela 11.8. Propriedade Descrio Provider Deve ser especificado o OLE DB Provider para o ORACLE. Para esta propriedade utilizamos o seguinte valor: MSDAORA. Data Source Informamos o nome do Servidor ORACLE. User ID Especifica o nome do usurio com o qual a conexo ser estabelecida. Password Informa a senha para o usurio que far a conexo. Tabela 11.8 Definindo a propriedade ConnectionString para uma fonte ORACLE. A seguir, temos um exemplo de uma conexo com um Banco de Dados, utilizando a propriedade ConnectionString: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000671 N O T A 1 Set conn=Server.CreateObject(ADODB.Connection) 2 conn.Open Provider=MSDAORA;Data Source=SERVIDOR;User ID=admin; Password=admin123 Primeiro, criamos um objeto do tipo Connection. Depois, utilizamos o mtodo Open, para abrir esta conexo. Observe que, aps o mtodo Open, passada uma string de conexo como parmetro para este mtodo. Este parmetro a propriedade ConnectionString. Poderamos obter o mesmo resultado de uma maneira diferente: primeiro, vamos definir a propriedade ConnectionString, depois simplesmente chamamos o mtodo Open. Ao chamar o mtodo Open, este verifica se a propriedade ConnectionString j est definida e utiliza o valor definido nesta propriedade. Nosso exemplo ficaria assim: 1 Set conn=Server.CreateObject(ADODB.Connection) 2 conn.ConnectionString = Provider=MSDAORA;Data Source=SERVIDOR; User ID=admin; Password=admin123 3 conn.Open Neste caso, na linha 2 foi definida a propriedade ConnectionString e, na linha 3, utilizamos o mtodo Open. Utilizamos os nmeros de linha apenas para referncia. Quando criamos nossas pginas ASP, no devemos utilizar nmeros de linhas. A linha 2 aparece quebrada em duas linhas por questes de espao para exibio, mas a mesma deve ser digitada em uma nica linha. Para detalhes sobre o ORACLE, consulte a documentao do produto. Microsoft Access, Microsoft SQL Server e ORACLE so os casos mais comuns de conexes de pginas ASP com fontes de dados. Porm, conforme descrito no Captulo 5, atravs de OLE DB podemos estabelecer conexes com qualquer fonte de dados, para a qual esteja disponvel um OLE DB Provider, inclusive fontes de dados no estruturadas no formato de Bancos de Dados Relacionais. Como exemplos de fontes que no possuem o tradicional formato dos Bancos de Dados Relacionais, poderamos citar os arquivos de mensagens de correio eletrnico do Microsoft Exchange ou do Lotus Notes, um catlogo de indexao do Microsoft Index Server ou, at mesmo, uma fonte de dados residente em um mainframe. COMENTRIOS FINAIS SOBRE O OBJETO CONNECTION Agora veremos mais alguns detalhes importantes sobre o objeto Connection. Conforme mostrado no Exemplo 11.2, para conectar uma pgina ASP com uma fonte de dados, estamos utilizando os seguintes passos: Criamos um objeto do tipo Connection e conectamos este objeto com uma fonte de dados, seja via ODBC, seja via OLE DB. Criamos um objeto do tipo RecordSet e executamos uma instruo SQL. Feito isto, o objeto RecordSet conter os dados retornados pela fonte de dados. Uma vez obtidos os dados, utilizamos cdigo ASP para exibir os resultados desejados. Esta metodologia funciona sem maiores problemas, porm existem alguns aspectos importantes a serem considerados, tais como o encerramento de uma conexo e o nvel de acesso aos dados oferecido por uma determinada conexo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6720000Curso Completo O MTODO CLOSE O mtodo Close utilizado para fechar/encerrar uma conexo e quaisquer outros objetos que sejam dependentes da conexo. Por exemplo, se criamos um objeto RecordSet que obteve dados a partir da conexo que est sendo encerrada, o objeto RecordSet tambm ser encerrado. A sintaxe deste mtodo bastante simples. Vamos supor que tenhamos criado uma conexo chamada clientes; para encerr-la, poderamos utilizar o seguinte cdigo: <% Clientes.Close %> Ao fecharmos um objeto, estaremos liberando os recursos computacionais que o objeto utilizava no servidor, tais como memria e processador. Porm, o objeto continua na memria, e com isso podemos utilizar o mtodo Open para abrir novamente a conexo e voltar a utiliz-lo. No exemplo abaixo, fechamos o objeto clientes e depois voltamos a abri-lo, utilizando o mtodo Open. <% Clientes.Close Clientes.Open %> Neste caso poderamos voltar a utilizar o objeto clientes. Para remover um objeto, em definitivo, da memria, devemos definir o seu valor como Nothing, conforme indicado no exemplo: <% Set Clientes = Nothing %> Feito isso, somente poderemos voltar a utilizar o objeto se este for novamente criado, utilizando o seguinte cdigo: Set Clientes = Server.CreateObject(ADODB.Connection) Observe que, pelo fato de clientes ser um objeto (do tipo Connection) e no simplesmente uma varivel, devemos utilizar o operador Set. Se tentarmos criar ou remover um objeto, sem a utilizao do operador Set, obteremos uma mensagem de erro e a pgina no ser exibida. POOL DE CONEXES Quando um usurio fecha uma conexo, atravs da utilizao do mtodo Close, conforme descrito anteriormente, esta conexo mantida na memria e a conexo adiciona a um pool de conexes inativas. Da prxima vez que o mesmo usurio, ou qualquer outro usurio, for abrir uma nova conexo, o OLE DB primeiro verifica se, no pool de conexes inativas, existe uma conexo exatamente igual que o usurio est solicitando. Se for encontrada, esta conexo ser utilizada, caso contrrio uma nova conexo ser criada e enviada para o usurio que solicitou. O OLE DB mantm um pool de conexes, porque o processo de criar uma conexo o que mais exige recursos do servidor Web. Sempre que uma conexo puder ser reaproveitada, a partir do pool de conexes, economizaremos preciosos recursos do servidor. As conexes inativas no permanecem indefinidamente no pool de conexes. Aps um perodo padro sem utilizao, estas so removidas, de tal forma a no onerar os recursos do servidor Web, sem que as conexes estejam sendo utilizadas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000673 N O T A A utilizao de pool de conexes de grande importncia, principalmente para servidores Web muito acessados, em que novas conexes esto sendo criadas e fechadas a todo instante. Neste caso, o pool de conexes representa um alvio na carga de recursos de hardware do servidor, tais como memria RAM e processador. Com isso, encerramos nosso estudo bsico sobre conexes com a utilizao de OLE DB. Na seqncia, vamos ver um exemplo simples de conexo com Banco de Dados, utilizando uma fonte ODBC. UM EXEMPLO UTILIZANDO ODBC Neste item, vamos utilizar a fonte ODBC, nwind, criada anteriormente, para criar uma pgina ASP que conecta o Banco de Dados Northwind.mdb do Access e mostra uma listagem de clientes com as seguintes informaes da tabela clientes: Cdigo do cliente (CdigoDoCliente). Cargo (CargoDoContato). Endereo (Endereo). Telefone (Telefone). O nome entre parnteses o nome do campo na tabela clientes do Banco de Dados C:\Meus documentos\Northwind.mdb, o qual o banco associado fonte ODBC nwind.mdb. Caso voc esteja utilizando outro Banco de Dados ou outra tabela, utilize os nomes de campo adequados. Na Figura 11.33, podemos ver a estrutura da tabela clientes que est sendo utilizada no nosso exemplo. Figura 11.33 A tabela clientes do Banco de Dados Northwind. No Exemplo 11.3 apresentamos uma pgina ASP que faz a conexo com o Banco de Dados Northwind.mdb e exibe uma listagem de clientes. Aps a listagem explicaremos cada um dos comandos utilizados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6740000Curso Completo N O T A Crie este exemplo utilizando o editor de textos de sua preferncia. No inclua o nmero das linhas, os quais servem apenas para referncia. Salve este exemplo na pasta C:\LivroSQL2005\Capitulo11, com o nome de Exemplo11-3.asp. Exemplo 11.3 Uma pgina ASP que conecta com o Banco de Dados Northwind Exemplo11-3.asp. 1. <%@ Language=VBScript %> 2 <HTML> 3 <HEAD> 4 <TITLE>Clientes no Banco de Dados Northwind !</TITLE> 5 </HEAD> 6 <BODY> 7 <H1> 8 <FONT color=navy>Listagem de Clientes !!!</FONT> 9 </H1> 10 <% 11 O primeiro passo criar a conexo com o Banco de Dados 12 Para isto crio um objeto do tipo Connection 13 Cria um objeto do Tipo ADODB.Connection 14 Set conn = Server.CreateObject(ADODB.Connection) 15 Agora abro uma conexo com a fonte ODBC nwind 16 criada anteriormente. 17 conn.Open nwind 18 O prximo passo criar uma instruo SQL 19 a qual utilizada para criar a listagem de Clientes. 20 inst_sql=SELECT Clientes.CdigoDoCliente, Clientes.CargoDoContato, Clientes.Endereo,Clientes.Telefone FROM Clientes 21 Esta instruo SQL retorna os campos CdigoDoCliente, CargoDoContato, 22 Endereo e Telefone, da tabela Clientes. 23 Agora criamos um objeto RecordSet. 24 Este objeto ir executar a instruo SQL e 25 receber o resultado da consulta. 26 Set Clientes = Server.CreateObject(ADODB.Recordset) 27 Agora executamos a instruo SQL 28 retornando os registros da tabela Clientes. 29 Clientes.Open inst_sql, conn, 3, 3 30 Os dois ltimos parmetros sero discutidos 31 no prximo item, quando estudarmos o objeto RecordSet em detalhes. 32 Neste ponto j tenho todos os registros retornados 33 pela instruo SQL. Estes registros esto armazenados 34 no objeto Clientes, que um objeto do tipo RecordSet. 35 Agora passo a montar a pgina que ser retornada para o 36 navegador do Cliente. Vamos montar uma tabela com o 37 resultado da consulta. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000675 38 %> 39 <P> 40 <HR> 41 <TABLE bgColor=gray border=1 borderColor=navy cellPadding=1 cellSpacing=1 width=100%> 42 <TR> 43 <TD align=middle bgColor=gray>Cdigo</TD> 44 <TD align=middle bgColor=gray>Cargo</TD> 45 <TD align=middle bgColor=gray>Endereo</TD> 46 <TD align=middle bgColor=gray>Telefone</TD> 47 </TR> 48 <% 49 Inicio um Loop para percorrer todos os registros 50 do RecordSet Clientes, exibindo um registro em 51 cada linha da tabela. 52 Do Until Clientes.eof %> 53 <TR> 54 <TD align=middle bgColor=gray><%=Clientes.Fields(CdigoDoCliente)%></TD> 55 <TD align=middle bgColor=gray><%=Clientes.Fields(CargoDoContato)%></TD> 56 <TD align=middle bgColor=gray><%=Clientes.Fields(Endereo)%></TD> 57 <TD align=middle bgColor=gray><%=Clientes.Fields(Telefone)%></TD> 58 </TR> 59 <% 60 Clientes.MoveNext 61 loop %> 62 </TABLE> 63 </P> 64 <HR> 65 </BODY> 66 </HTML> Ao carregar esta pgina no Internet Explorer, o usurio recebe uma listagem conforme indicado na Figura 11.34. Antes de comentarmos esta listagem gostaria, mais uma vez, de salientar a natureza dinmica das pginas criadas com ASP. Neste exemplo, qualquer alterao que seja feita nos dados da tabela clientes refletir na listagem de clientes, na prxima vez que o usurio carregar a pgina Exemplo11-3.asp. Isto acontece porque a listagem montada, a partir do Banco de Dados, cada vez que a pgina carregada. Com isso, ao carregar a pgina, todos os dados existentes na tabela clientes sero exibidos. Por isso que dizemos que a pgina criada dinamicamente, ou seja, cada vez que a pgina solicitada, o cdigo ASP estabelece a conexo com o Banco de Dados, solicita a listagem atualizada de clientes e apresenta a listagem no formato de uma tabela, conforme definimos. Agora vamos s explicaes a respeito do cdigo do Exemplo11.3. Embora existam diversos comentrios na prpria listagem, cabem aqui alguns esclarecimentos. Vamos detalhar diversos trechos de cdigo deste exemplo. Trecho 1: Considere o seguinte trecho de cdigo: 14 Set conn = Server.CreateObject(ADODB.Connection) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6760000Curso Completo Figura 11.34 A listagem de clientes do Banco de Dados Northwind.mdb Esta linha cria um objeto Connection chamado conn. Poderamos utilizar qualquer nome vlido para este objeto. Um ponto importante a salientar a utilizao da instruo Set. Sempre que formos criar um objeto (Connection, Recordset, etc.), devemos usar a instruo Set. Se no utilizarmos a instruo Set na criao de objetos, obteremos um erro na hora de carregar a pgina. Tambm importante observarmos o seguinte: Server.CreateObject(ADODB.Connection) Este cdigo cria um objeto no servidor, sendo que este objeto do tipo ADODB.Connection, ou seja, uma conexo ADO para Banco de Dados. Aps a execuo deste comando, um objeto Connection foi criado, porm o objeto ainda no faz referncia a nenhum Banco de Dados especfico. Trecho 2: Considere o seguinte trecho de cdigo: 15 Agora abro uma conexo com a fonte ODBC nwind 16 criada anteriormente. 17 conn.Open nwind Na linha 17, estou associando a conexo conn a uma fonte ODBC nwind. Lembrando que esta fonte ODBC foi criada previamente. Caso voc esteja utilizando uma fonte ODBC diferente, utilize o nome adequado. Esta associao feita atravs do mtodo Open, do objeto Connection. A partir deste proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000677 momento, a minha conexo conn est associada ao Banco de Dados Northwind.mdb, conforme definido pela fonte ODBC nwind. Uma vez estabelecida a conexo, hora de retornar dados, isto , registros, a partir do Banco de Dados. Isto feito pelo trecho de cdigo a seguir. Trecho 3: Considere o seguinte trecho de cdigo. 20 inst_sql=SELECT Clientes.CdigoDoCliente, Clientes.CargoDoContato, Clientes.Endereo,Clientes.Telefone FROM Clientes 21 Esta instruo SQL retorna os campos CdigoDoCliente, CargoDoContato, 22 Endereo e Telefone, da tabela Clientes. 23 Agora criamos um objeto RecordSet. 24 Este objeto ir executar a instruo SQL e 25 receber o resultado da consulta. 26 Set Clientes = Server.CreateObject(ADODB.Recordset) 27 Agora executamos a instruo SQL 28 retornando os registros da tabela Clientes. 29 Clientes.Open inst_sql, conn, 3, 3 30 Os dois ltimos parmetros sero discutidos 31 durante o estudo do objeto Recordset. Na linha 20, simplesmente, criamos uma varivel chamada inst_sql, a qual contm a instruo SQL que ser executada no Banco de Dados Northwind.mdb. Observe que uma instruo SQL bastante simples, a qual, basicamente, seleciona os campos CdigoDoCliente, CargoDoContato, Endereo e Telefone da tabela clientes do Banco de Dados Northwind.mdb. Uma vez definida a instruo SQL, partimos para a criao de um objeto RecordSet. A criao deste objeto feita na linha 26, onde criado um RecordSet chamado clientes. Poderamos ter escolhido qualquer nome para este objeto. Observe a utilizao da instruo Set. Como estamos criando um objeto (do tipo RecordSet), devemos utilizar a instruo Set. Agora devemos executar a instruo SQL, para que o objeto Recordset contenha os registros retornados pela instruo SQL. Isto feito pelo seguinte cdigo: 29 Clientes.Open inst_sql, conn, 3, 3 Neste caso, utilizamos o mtodo Open do objeto RecordSet Clientes. O primeiro parmetro a instruo SQL a ser utilizada inst_sql. O segundo parmetro o nome da conexo a ser utilizada conn. O terceiro e quarto parmetros definem comportamentos para o objeto RecordSet, tais como se possvel mover-se para frente e para trs, avanando e voltando pelos registros, se os registros retornados so apenas para leitura ou para leitura e alteraes e assim por diante. Estudaremos estas opes no prximo tpico. Bem, neste momento j temos um objeto RecordSet chamado clientes, o qual possui uma srie de registros obtidos a partir da tabela clientes do Banco de Dados Northwind. Cada registro tem quatro campos, conforme foi definido pela nossa instruo SQL, que somente retorna os campos CdigoDoCliente, CargoDoContato, Endereo e Telefone. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6780000Curso Completo Uma vez que o RecordSet Clientes foi criado com sucesso, hora de criarmos uma tabela que exibe os dados do objeto RecordSet. Comeamos criando a primeira linha da tabela, a qual ir conter o ttulo das colunas. Isto feito pelo cdigo descrito a seguir. Trecho 4: Considere o seguinte trecho de cdigo. 41 <TABLE bgColor=gray border=1 borderColor=navy cellPadding=1 cellSpacing=1 width=100%> 42 <TR> 43 <TD align=middle bgColor=gray>Cdigo</TD> 44 <TD align=middle bgColor=gray>Cargo</TD> 45 <TD align=middle bgColor=gray>Endereo</TD> 46 <TD align=middle bgColor=gray>Fone</TD> 47 </TR> Observe que, para criar o cabealho da tabela, utilizamos cdigo HTML puro. Veja que estamos criando uma tabela com quatro colunas. Vamos exibir um registro por linha; como cada registro tem quatro campos, precisamos de uma tabela com quatro colunas. Esta tabela ter tantas linhas quantos forem os registros do objeto Clientes. A construo do corpo da tabela feita com o seguinte trecho de cdigo: 52 Do Until Clientes.eof %> 53 <TR> 54 <TD align=middle bgColor=gray><%=Clientes.Fields(CdigoDoCliente)%></TD> 55 <TD align=middle bgColor=gray><%=Clientes.Fields(CargoDoContato)%></TD> 56 <TD align=middle bgColor=gray><%=Clientes.Fields(Endereo)%></TD> 57 <TD align=middle bgColor=gray><%=Clientes.Fields(Telefone)%></TD> 58 </TR> 59 <% 60 Clientes.MoveNext 61 loop %> 62 </TABLE> Na linha 52, iniciamos um lao Do Until Condio... Loop. Como condio utilizamos a propriedade Eof do objeto Clientes. O lao continua sendo executado, at que a condio Clientes.eof se torne verdadeira. Esta condio somente ir tornar-se verdadeira quando o indicador de registro j estiver alm do ltimo registro, ou seja, aps ter sido atingido o ltimo registro do objeto RecordSet. Com isso, o lao somente ser encerrado depois que tivermos percorrido todos os registros do objeto Clientes, que exatamente o que queremos. Para cada registro criada uma nova linha na tabela. Isto feito pelo seguinte trecho de cdigo: 53 <TR> 54 <TD align=middle bgColor=gray><%=Clientes.Fields(CdigoDoCliente)%></TD> 55 <TD align=middle bgColor=gray><%=Clientes.Fields(CargoDoContato)%></TD> 56 <TD align=middle bgColor=gray><%=Clientes.Fields(Endereo)%></TD> 57 <TD align=middle bgColor=gray><%=Clientes.Fields(Telefone)%></TD> 58 </TR> Observe o fragmento de cdigo: <%=Clientes.Fields(CdigoDoCliente)%> proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000679 Este fragmento retorna o valor do campo CdigoDoCliente do registro atual do RecordSet Clientes. Com isso, vamos preenchendo cada coluna com os respectivos valores de cada campo de cada registro. A primeira coluna com o campo CdigoDoCliente, a segunda com o campo CargoDoContato e assim por diante. Neste caso, utilizamos a coleo Fields do RecordSet Clientes, a qual nos d acesso aos campos individuais de cada registro. As linhas seguintes so de grande importncia: 59 <% 60 Clientes.MoveNext 61 loop %> 62 </TABLE> Se no colocssemos a linha 60, esta pgina ASP entraria em Loop infinito e somente o primeiro registro seria exibido repetidamente, at congelar a pgina. Quando criamos um objeto RecordSet, por padro, o indicador de registro posicionado no primeiro registro. Utilizamos o mtodo MoveNext para mover o indicador para o prximo registro. Com isso, a cada passagem do lao Do Until, o indicador posicionado no prximo registro, at o momento em que todos os registros foram percorridos. Se no houvesse esta linha, o indicador ficaria sempre no primeiro registro e o lao nunca seria encerrado, pois a condio Clientes.eof seria sempre verdadeira, impedindo que o lao fosse encerrado. A linha 62 simplesmente a tag HTML de fechamento da tabela. J vimos alguns exemplos nos quais utilizamos o objeto RecordSet. Agora vamos estud-lo em detalhes. Vamos falar sobre seus mtodos, propriedades e eventos. Tambm veremos exemplos de utilizao do objeto RecordSet. O OBJETO RECORDSET Nos exemplos que foram apresentados at aqui, j utilizamos o objeto RecordSet. Agora chegou o momento de fazer um estudo mais aprofundado deste objeto. O objeto RecordSet contm o resultado de uma instruo SQL, executada em um Banco de Dados. Um objeto RecordSet contm um conjunto de registros. como se fosse uma tabela, onde cada linha um registro, sendo que cada registro formado por um conjunto de campos (colunas da tabela). Por exemplo, ao executarmos a seguinte instruo SQL: Select * from Pedidos Com este comando selecionamos todos os registros da tabela Pedidos, os quais podero ser acessados atravs de um objeto do tipo RecordSet. Existem detalhes importantes que devemos conhecer a respeito do acesso aos dados. Devemos considerar questes como: O acesso deve ser somente para leitura dos dados ou devem ser permitidas alteraes e inseres de novos registros? proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6800000Curso Completo Como tratar questes sobre o acesso simultneo aos dados, por exemplo, como tratar a situao em que dois usurios tentam alterar o mesmo registro, ao mesmo tempo? Estas so questes importantes e devem ser consideradas sempre que formos disponibilizar acesso aos dados da nossa empresa, para usurios da Internet. Tambm precisamos conhecer o que so cursores, quais os tipos de cursores disponveis e para que utilizamos cursores. Vamos estudar estes pontos neste tpico. Para criar um objeto RecordSet, utilizamos a seguinte sintaxe: Set Pedidos = Server.CreateObject(ADODB.RecordSet) Neste exemplo, estamos criando um RecordSet chamado Pedidos. Uma vez criado o RecordSet, o prximo passo utilizarmos o mtodo Open. O mtodo Open possui a seguinte sintaxe: recordset.Open Source, ActiveConnection, CursorType, LockType, Options Considere o exemplo: Pedidos.Open inst_sql, conn, 3, 3 Os parmetros a serem passados para o mtodo Open esto descritos na Tabela 11.9. Parmetro Descrio Source Pode ser o nome de um objeto Command, uma instruo SQL ou o nome de uma varivel que contm uma instruo SQL, o nome de uma tabela ou de um stored procedure do Banco de Dados ou at uma URL que aponta para uma fonte de dados. ActiveConnection O nome da conexo a ser utilizada ou a string de conexo para uma fonte de dados ODBC ou OLE DB. opcional. CursorType um valor que determina o tipo de cursor que ser utilizado pelo provedor de dados na abertura do RecordSet. opcional. Falaremos mais sobre tipos de cursores ainda neste item. LockType um valor que determina o tipo de lock que ser utilizado pelo provedor de dados na abertura do RecordSet. opcional. Falaremos mais sobre tipos de lock ainda neste item. Options Um valor do tipo Long, o qual define como o provedor de dados deve avaliar o argumento Source, quando este argumento for algo diferente de um objeto Command ou quando o RecordSet deve ser recuperado a partir de um arquivo salvo previamente. Tabela 11.9 Parmetros do mtodo Open do objeto RecordSet. UM POUCO SOBRE CURSORES Um cursor o mecanismo utilizado pela tecnologia ADO para gerenciar o conjunto de registros de um objeto RecordSet. Somente podemos ter acesso a um registro por vez. Este registro chamado de registro corrente. Quando utilizamos o mtodo Open, por padro, o primeiro registro o registro corrente. Um cursor tambm utilizado para determinar qual o registro corrente, bem como para movimentar o indicador de registro entre os diversos registros do objeto RecordSet. O mecanismo que identifica qual o registro corrente chamado de Record pointer. Quem lida com a manipulao do Record pointer o cursor. Por isso, quando utilizamos os mtodos MoveNext (mover para o prximo registro), MovePrevious (mover para o registro anterior) ou qualquer outro mtodo de movimentao, estamos utilizando o cursor. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000681 O mecanismo do cursor tambm gerencia situaes em que tentamos avanar alm do ltimo registro ou voltar alm do primeiro registro, ou quando acessamos o valor de um campo de um registro. De uma maneira simples, podemos afirmar que grande parte da funcionalidade de um objeto RecordSet fornecida pelo mecanismo do cursor. Quando utilizamos o mtodo Open, podemos definir diferentes formas de comportamento para o mecanismo do cursor. Estas formas de comportamento que determinam os tipos de cursores disponveis, os quais esto descritos na Tabela 11.10. O tipo do cursor pode ser definido com um valor numrico ou atravs de uma constante, conforme indicado na Tabela 11.10. Valor/Constante Tipo/Descrio 3 adOpenStatic Define um cursor do tipo Static. Um cursor deste tipo contm uma cpia esttica dos registros. O contedo do RecordSet definido no momento da criao do objeto. Caso sejam feitas alteraes no Banco de Dados, estas alteraes no sero visveis para o RecordSet que utiliza um cursor do tipo Static. Somente recriando o RecordSet que poderemos ter acesso s alteraes efetuadas. Podemos movimentar o ponteiro de registro em ambas as direes, isto , podemos utilizar os mtodos MoveNext, MovePrevious e assim por diante. 0 adOpenForwardOnly Cria um cursor do tipo Forward Only. Este o valor padro que ser utilizado caso no seja definido nenhum outro tipo. Somente podemos utilizar o mtodo MoveNext. Se tentarmos utilizar um outro mtodo de movimentao, ser gerado um erro e a pgina no ser carregada. Tambm um cursor do tipo Static, com a diferena de que somente podemos nos movimentar para a frente. 2 adOpenDynamic Cria um cursor do tipo Dynamic. Um cursor deste tipo no possui um conjunto fixo de registros. Quaisquer alteraes, adies e excluses feitas por outros usurios sero visveis para o objeto RecordSet, sem que o objeto tenha que ser eliminado e recriado. Podemos nos movimentar em ambas as direes dentro do RecordSet. 1 adOpenKeyset Cria um cursor do tipo Keyset. Um cursor deste tipo parecido com um cursor Dynamic, com a exceo de que o conjunto de registros fixo. O RecordSet enxerga as alteraes feitas por outros usurios, porm a adio de novos registros no visvel para um RecordSet do tipo Keyset. Caso algum registro seja eliminado por outros usurios, o respectivo registro estar inacessvel no RecordSet. Podemos nos movimentar em ambas as direes dentro do RecordSet. Tabela 11.10 Tipos de cursores disponveis. O tipo de cursor a ser utilizado depende da aplicao que estamos desenvolvendo. Por exemplo, se estamos desenvolvendo uma pgina ASP apenas para exibir um conjunto de registros, podemos utilizar um cursor do tipo Static. Cursores mais simples, como o do tipo Static, consomem menos recursos de hardware no servidor. Cursores mais sofisticados, como o do tipo Dynamic, consomem mais recursos computacionais. Estes recursos podem ser consumidos na estao do cliente ou no servidor Web, dependendo da localizao do cursor. Veremos como definir a localizao do cursor atravs da utilizao da propriedade CursorLocation, no prximo item. Agora alguns exemplos de utilizao do mtodo Open. Este exemplo cria um RecordSet chamado Clientes e define um cursor do tipo Static. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6820000Curso Completo <% inst_sql=Select * from Clientes Set Clientes = Server.CreateObject(ADODB.Recordset) Clientes.Open inst_sql, conn, 3, 3 %> Ao invs de utilizarmos o valor 3, podemos utilizar a constante correspondente adOpenStatic , conforme o exemplo: <% inst_sql=Select * from Clientes Set Clientes = Server.CreateObject(ADODB.Recordset) Clientes.Open inst_sql, conn, adOpenStatic, 3 %> O prximo exemplo cria um RecordSet chamado Clientes e define um cursor do tipo Keyset. <% inst_sql=Select * from Clientes Set Clientes = Server.CreateObject(ADODB.Recordset) Clientes.Open inst_sql, conn, 1, 3 %> Ao invs de utilizarmos o valor 1, podemos utilizar a constante correspondente adOpenKeyset , conforme o exemplo: <% inst_sql=Select * from Clientes Set Clientes = Server.CreateObject(ADODB.Recordset) Clientes.Open inst_sql, conn, adOpenKeyset, 3 %> LOCALIZAO DO CURSOR O cursor pode estar localizado no servidor Web ou no cliente que est acessando os dados. Algumas fontes de dados, como o Microsoft SQL Server, podem oferecer servios de cursor no servidor. O Microsoft Access no oferece servios de cursor, e com isso o cursor fica localizado no cliente. Quando acessamos fontes de dados, utilizando OLE DB, podemos utilizar o servio de cursor oferecido pelo prprio OLE DB. A opo padro, caso no seja definido nada em contrrio, que o cursor esteja no servidor. Para definir a localizao do cursor, devemos utilizar a propriedade CursorLocation do objeto RecordSet. Definimos esta propriedade antes da utilizao do mtodo Open do objeto RecordSet. A Tabela 11.11 descreve os valores possveis para esta propriedade. Valor/Constante Tipo/Descrio 3/adUseClient Utiliza servios de cursor no cliente. 1/adUseNone No utiliza servios de cursor. Somente mantido por questes de compatibilidade com as verses anteriores. 2/adUseServer Utiliza servios de cursor do servidor ou do provedor OLE DB. Tabela 11.11 Valores para a propriedade CursorLocation. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000683 No prximo exemplo, definimos o cursor no cliente: <% inst_sql=Select * from Clientes Set Clientes = Server.CreateObject(ADODB.Recordset) Clientes.CursorLocation = 3 Clientes.Open inst_sql, conn, 3, 3 %> A propriedade CursorLocation deve ser definida antes da utilizao do mtodo Open. Ao tentarmos definir a propriedade CursorLocation, com o RecordSet aberto, obteremos a seguinte mensagem de erro: Tipo de erro: ADODB.Recordset (0x800A0E79) Operation is not allowed when the object is open. A mensagem indica que a operao (definir a localizao do cursor) no permitida quando o objeto est aberto. Ao invs de utilizarmos o valor 3, podemos utilizar a constante correspondente adUseClient , conforme o exemplo: <% inst_sql=Select * from Clientes Set Clientes = Server.CreateObject(ADODB.Recordset) Clientes.CursorLocation = adUseClient Clientes.Open inst_sql, conn, adOpenStatic, 3 %> Quando criamos um objeto RecordSet com o cursor no servidor, responsabilidade do servidor gerenciar a navegao e as atualizaes do RecordSet, sendo que sero consumidos recursos no servidor. Ao utilizar o cursor no cliente, todo o contedo do RecordSet copiado para a estao do cliente e gerenciado por um cursor local. Devemos considerar a questo da velocidade da conexo do usurio com a Internet ou com a intranet da empresa, pois se o RecordSet for muito grande, isto , um grande nmero de registros, o tempo para copiar todo o RecordSet pode ser inaceitvel. Porm uma vez copiado o RecordSet para a estao do cliente, a utilizao do RecordSet mais rpida, pois no preciso acessar o Servidor para simples operaes, tais como movimentar-se para o prximo registro. Quando uma aplicao Web desenvolvida, a localizao dos cursores deve ser discutida na fase de projeto, sempre procurando propiciar o melhor desempenho possvel para a aplicao. Em uma mesma aplicao posso ter pginas que utilizam o cursor no servidor e outras que utilizam o cursor no cliente, dependendo apenas da natureza de cada pgina. No prximo exemplo, definimos o cursor no servidor: <% inst_sql=Select * from Clientes Set Clientes = Server.CreateObject(ADODB.Recordset) Clientes.CursorLocation = 2 Clientes.Open inst_sql, conn, 3, 3 %> N O T A proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6840000Curso Completo Ao invs de utilizarmos o valor 2, podemos utilizar a constante correspondente adUseServer , conforme o exemplo: <% inst_sql=Select * from Clientes Set Clientes = Server.CreateObject(ADODB.Recordset) Clientes.CursorLocation = adUseServer Clientes.Open inst_sql, conn, adOpenStatic, 3 %> Lembrando que no necessrio definir o cursor no servidor, pois essa a definio padro, ou seja, se no for definida, explicitamente, a propriedade CursorLocation assume o valor adUseServer. LOCK DE REGISTROS Os Bancos de Dados utilizam o lock de registros como uma maneira de garantir a integridade dos dados. Com a utilizao do lock, garantimos que um mesmo registro no esteja sendo alterado, simultaneamente, por mais do que um usurio. Quando um usurio acessa um registro para fazer alguma alterao, o registro bloqueado, de tal forma que outros usurios no possam ter acesso ao registro. O acesso ao registro somente ser liberado aps as alteraes terem sido salvas no Banco de Dados. O tipo de lock definido pela propriedade LockType do objeto RecordSet. Existem diferentes maneiras de se fazer o lock dos registros, conforme descrito na Tabela 11.12. Valor/Constante Tipo/Descrio 1/adLockReadOnly Cria um lock do tipo Read Only. o tipo padro de lock. O RecordSet somente leitura, isto , os registros no podem ser modificados, logo no precisam ser bloqueados. Com isso tenho um processamento mais rpido, porm perco a capacidade de fazer alteraes nos registros. 2/adLockPessimistic Cria um lock do tipo Pessimistic. O provedor OLE DB tenta bloquear o registro no momento em que o registro comea a ser editado. Isso feito para tentar garantir que o registro ser editado com sucesso. 3/adLockOptimistic Cria um lock do tipo Optimistic. O registro no bloqueado enquanto as alteraes no registro no forem salvas no Banco de Dados atravs da utilizao do mtodo Update do RecordSet. 4/adLockBatchOptimistic Cria um lock do tipo Batch Optimistic. Este tipo de lock permite que vrios registros sejam modificados. Os registros somente sero bloqueados quando for chamado o mtodo UpdateBatch do objeto RecordSet. -1/adLockUnspecified No define o tipo de lock. Quando utilizamos o mtodo Clone, para criar uma cpia do RecordSet, o Clone ser criado com o mesmo tipo de lock do RecordSet original. Tabela 11.12 Tipos de lock. A maneira e os tipos de lock possveis de serem utilizados tambm dependem da fonte de dados que est sendo utilizada. Quando no existe a necessidade de fazer alteraes nos registros, devemos utilizar, sempre um lock do tipo Read Only (ou seja, como o RecordSet apenas leitura, os registros no precisam ser bloqueados), pois isso evita que o provider tenha que fazer verificaes ao acessar cada registro, para verificar se o registro no est bloqueado no momento. Com isso teremos um processamento bem mais rpido. Um registro bloqueado no pode nem sequer ser visualizado pelos usurios, e com isso evita-se que seja exibido um registro que est sendo alterado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000685 N O T A Para definir o tipo de lock, utilizamos a propriedade LockType, conforme indicado no exemplo a seguir, onde definimos o tipo de lock como Optimistic: <% inst_sql=Select * from Clientes Set Clientes = Server.CreateObject(ADODB.Recordset) Clientes.LockType = 3 Clientes.Open inst_sql, conn, 3, 3 %> A propriedade LockType deve ser definida antes da utilizao do mtodo Open. Ao tentarmos definir a propriedade LockType, com o RecordSet aberto, obteremos a seguinte mensagem de erro: Tipo de erro: ADODB.Recordset (0x800A0E79) Operation is not allowed when the object is open. A mensagem indica que a operao (definir o tipo de lock) no permitida quando o objeto est aberto. Ao invs de utilizarmos o valor 3, podemos utilizar a constante correspondente adLockOptimistic , conforme o exemplo: <% inst_sql=Select * from Clientes Set Clientes = Server.CreateObject(ADODB.Recordset) Clientes.LockType = adLockOptimistic Clientes.Open inst_sql, conn, adOpenStatic, 3 %> Agora que j discutimos um pouco sobre cursores, localizao do cursor e lock de registros, podemos partir para o estudo de mais alguns detalhes do objeto RecordSet. PROPRIEDADES DO OBJETO RECORDSET Atravs da utilizao de propriedades de um objeto podemos definir algumas caractersticas do objeto e tambm retornar as caractersticas do objeto. Algumas propriedades so somente para leitura, o que significa que apenas podemos verificar o valor da propriedade. Outras propriedades so de leitura e escrita, isto , podemos definir o valor da propriedade. Para definir o valor de uma propriedade, utilizamos a seguinte sintaxe: <% RecordSet.nome_da_propriedade = valor %> Na Tabela 11.13 esto listadas as principais propriedades do objeto RecordSet. Propriedade Descrio AbsolutePage Retorna a pgina do registro corrente. Pgina um conceito de armazenamento de Banco de Dados. AbsolutePosition Indica a posio do registro corrente, dentro do RecordSet. ActiveCommand Retorna o objeto Command utilizado para criar o RecordSet, caso tenha sido utilizado um objeto Command. Esta propriedade somente leitura. Tabela 11.13 Principais propriedades do objeto RecordSet. continua proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6860000Curso Completo Propriedade Descrio BOF Esta propriedade torna-se verdadeira quando estivermos no primeiro registro e utilizarmos o mtodo MovePrevious, ou seja, indica uma tentativa de voltarmos alm do primeiro registro. somente leitura. Bookmark Retorna um marcador (bookmark) que identifica de maneira nica cada registro do RecordSet. Tambm pode ser utilizado para tornar o registro identificado pelo bookmark como o registro corrente. Nem todos as fontes de dados e seus respectivos OLE DB Providers oferecem esta propriedade. CacheSize Indica o nmero de registros do RecordSet que devem ser mantidos no cache local de memria. Tambm pode ser utilizada para definir este nmero de registros. CursorLocation Pode ser utilizada para definir ou retornar a posio do cursor. CursorType Indica o tipo de cursor utilizado em um objeto RecordSet. Tambm pode ser utilizado para definir o tipo de cursor. Deve ser usado antes do mtodo Open, caso contrrio ir provocar um erro quando a pgina for carregada. EditMode Retorna um valor que indica o status de edio do registro atual. Este valor pode ser: 0 indica que no existe edio em andamento; 1 indica que os dados do registro atual foram modificados, porm ainda no foram salvos; 2 indica que o mtodo AddNew foi chamado e o registro que est sendo criado ainda no foi salvo no Banco de Dados; 4 indica que o registro atual foi deletado. somente leitura. EOF Esta propriedade torna-se verdadeira quando estivermos no ltimo registro e utilizarmos o mtodo MoveNext, ou seja, indica uma tentativa de avanarmos alm do ltimo registro. somente leitura. Filter Pode ser utilizado para filtrar os registros de um RecordSet de acordo com um critrio definido. LockType Indica o tipo de lock que est sendo utilizado. Tambm pode ser utilizado para definir o tipo de lock, antes que o mtodo Open tenha sido utilizado. MaxRecords Define o nmero mximo de registros que uma consulta deve retornar para o objeto RecordSet. O valor padro zero, o que significa sem limite de registros. PageCount Indica quantas pginas de dados o objeto RecordSet contm. somente leitura. PageSize Indica o nmero de registros por pgina. RecordCount Indica o nmero de registros do objeto RecordSet. somente leitura. Sort Especifica um ou mais campos para ordenao do RecordSet, alm do tipo de ordenao, se ascendente ou descendente. Para utilizarmos esta propriedade devemos utilizar o cursor no cliente. Source Indica as fontes dos dados de um objeto RecordSet. Por exemplo, exibe a instruo SQL que deu origem aos dados ou o nome da tabela ou consulta que originou os dados do objeto RecordSet. State Indica o estado do objeto RecordSet. Indica se o mesmo est aberto, fechado ou executando uma operao de maneira assncrona. somente leitura. MTODOS DO OBJETO RECORDSET O objeto RecordSet nos fornece diversos mtodos, os quais podem ser utilizados para nos deslocar atravs dos registros, fazer uma cpia do RecordSet, etc. Para utilizarmos um mtodo do objeto RecordSet, utilizamos a seguinte sintaxe: <% RecordSet.nome_do_mtodo parmetro1, parmetro2, ..., parmetron %> Na Tabela 11.14 esto listados os principais mtodos do objeto RecordSet. continuao proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000687 Agora vamos aprender a executar algumas operaes bastante comuns em aplicaes Web do dia-a- dia. Aprenderemos a inserir registros, excluir registros e alterar um determinado registro. UMA PGINA ASP PARA INSERIR INFORMAES NO BANCO DE DADOS Neste exemplo, aprenderemos a construir uma pgina ASP que recebe os dados digitados em um formulrio HTML e armazena estes dados no registro de uma tabela. Tambm faremos a validao para verificar se todos os campos obrigatrios foram preenchidos; caso algum campo obrigatrio no tenha sido preenchido, devolvemos o formulrio para o usurio informando qual ou quais campos obrigatrios no foram preenchidos. Caso todos os campos tenham sido preenchidos corretamente, os valores digitados sero gravados no Banco de Dados. Podemos utilizar este exemplo para criar um formulrio de cadastro de usurios ou qualquer outra aplicao que necessite armazenar os dados digitados em um formulrio. Mtodo Descrio AddNew Utilizado para adicionar um novo registro em um RecordSet que seja atualizvel. Cancel Cancela a execuo de uma operao Open assncrona. CancelBatch Cancela uma operao de atualizao em batch. CancelUpdate Cancela qualquer alterao feita no registro corrente, ou alteraes feitas em um novo registro antes da chamada ao mtodo Update. Clone Cria uma cpia do objeto RecordSet. Close Fecha o objeto RecordSet e todos os objetos dele dependentes. Delete Elimina o registro corrente ou um grupo de registros selecionados. Find Pesquisa no RecordSet por um registro que atende um critrio especificado. GetRows Retorna registros de um RecordSet e os armazena em um array. GetString Retorna todo o RecordSet como uma string. Move Movimenta o indicador de registro a partir de uma posio especificada um determinado nmero de registros. Por exemplo, posso movimentar o indicador dez registros a partir do registro 10, com isso o indicador fica no registro 20. MoveFirst Movimenta o indicador para o primeiro registro. MoveLast Movimenta o indicador para o ltimo registro. MoveNext Movimenta o indicador para o prximo registro. MovePrevious Movimenta o indicador para o registro anterior. Open Abre o objeto RecordSet. Requery Atualiza o conjunto de registros do RecordSet, executando novamente a consulta que deu origem ao RecordSet. Resync Atualiza os dados do RecordSet, buscando os dados a partir do Banco de Dados. Save Salva o contedo do RecordSet em um arquivo. Update Salva quaisquer alteraes que tenham sido feitas para o objeto RecordSet. Tabela 11.14 Principais mtodos do objeto RecordSet. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6880000Curso Completo N O T A Eu, por exemplo, utilizo uma aplicao deste tipo para fazer a avaliao dos treinamentos que ministro em todo o pas. Ao final do treinamento os usurios, sem se identificar, preenchem um formulrio com as opinies sobre o treinamento, o material e o desempenho do instrutor. Estes dados so armazenados diretamente em um Banco de Dados do Microsoft Access; a partir do qual fao uma srie de estatsticas. Nos exemplos, estarei utilizando a linguagem VBScript. Para maiores informaes sobre VBScript, consulte um dos seguintes sites: msdn.microsoft.com/vbscript; www.searchvb.com; e www.vbscripts.com. Voc tambm pode consultar o e-book Criando Sites Dinmicos com ASP 3.0, j citado anteriormente. Neste e-book, voc tambm encontrar informaes sobre a criao de formulrios utilizando HTML. No Exemplo 11.4, temos o cdigo HTML para a criao do formulrio de cadastro, no qual o usurio poder digitar os dados. Os dados digitados neste formulrio sero inseridos na tabela Customers, do Banco de Dados Northwind, da instncia SERVIDOR\SQL2005. O exemplo da Listagem 11.4 tem apenas o cdigo HTML para a criao do formulrio, com os campos para digitao dos dados. Ao clicar no boto Enviar dados, os dados digitados sero enviados para a pgina cadastro.asp. O nome da pgina ASP que ir processar os dados definido na propriedade ACTION, do boto de comando Enviar dados. Aps o cdigo, apresentarei mais explicaes sobre este exemplo. Este exemplo deve ser salvo com o nome Cadastro.htm, na pgina C:\LivroSQL2005\Capitulo11 Exemplo 11.4 O formulrio para digitao dos dados Cadastro.htm. 1 <HTML> 2 <HEAD> 3 <TITLE>Cadastro de novos Clientes !!</TITLE> 4 </HEAD> 5 <BODY bgColor=#c0c0c0> 6 <P> 7 <FONT color=white size=6 style=BACKGROUND-COLOR: navy> 8 <B>Tabela Customers Northwind </B> 9 </FONT> 10 </P> 11 <P> 12 <FONT color=#ffffff size=5 style=BACKGROUND-COLOR: darkred> 13 <B><EM>Cadastro de Clientes !</EM></B> 14 </FONT> 15 </P> 16 <P> 17 <FONT color=navy size=4> 18 <EM>Digite os dados solicitados e clique no boto Enviar.</EM> 19 </FONT> 20 </P> 21 <P> 22 <FORM ACTION=cadastro.asp METHOD=POST> 23 <TABLE bgColor=#ffffff border=1 cellPadding=1 cellSpacing=1 width=100% style=HEIGHT: 161px; WIDTH: 340px> 24 <TR> 25 <TD>Cdigo:</TD> proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000689 26 <TD><INPUT id=CustomerID maxLength=50 name=CustomerID size=35> 27 <FONT color=red><B>(*)</B></FONT></TD> 28 </TR> 29 <TR> 30 <TD>Nome:</TD> 31 <TD><INPUT id=CompanyName maxLength=30 name=CompanyName size=35> 32 <FONT color=red><B>(*)</B></FONT></TD> 33 </TR> 34 <TR> 35 <TD>Contato:</TD> 36 <TD><INPUT id=ContactName maxLength=20 name=ContactName > 37 <FONT color=red><B>(*)</B></FONT></TD> 38 </TR> 39 <TR> 40 <TD>Cargo:</TD> 41 <TD><INPUT id=ContactTitle maxLength=25 name=ContactTitle size=25> 42 <FONT color=red><B>(*)</B></FONT></TD> 43 </TR> 44 <TR> 45 <TD>Endereo:</TD> 46 <TD><INPUT id=Address maxLength=20 name=Address></TD> 47 </TR> 48 <TR> 49 <TD>Cidade:</TD> 50 <TD><INPUT id=City maxLength=20 name=City></TD> 51 </TR> 52 <TR> 53 <TD>Regio:</TD> 54 <TD><INPUT id=Region maxLength=20 name=Region></TD></TR> 55 <TR> 56 <TR> 57 <TD>CEP:</TD> 58 <TD><INPUT id=PostalCode maxLength=20 name=PostalCode></TD></TR> 59 <TR> 60 <TR> 61 <TD>Pas:</TD> 62 <TD><INPUT id=Country maxLength=20 name=Country></TD></TR> 63 <TR> 64 <TR> 65 <TD>Telefone:</TD> 66 <TD><INPUT id=Phone maxLength=20 name=Phone></TD></TR> 67 <TR> 68 <TR> 69 <TD>FAX:</TD> 70 <TD><INPUT id=Fax maxLength=20 name=Fax></TD></TR> 71 <TR> 72 <TR> 73 <TD colSpan=2> 74 <INPUT id=enviar name=enviar style=HEIGHT: 24px; WIDTH:109px type=submit value=Enviar dados.> 70 <INPUT id=limpar name=limpar type=submit value=Limpar Formulrio.> proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6900000Curso Completo 71 </TD> 72 </TR> 73 </TABLE> 74 </FORM> 75 </P><BR> 76 <FONT color=red><B>(*) 77 <FONT color=navy>Campos de preenchimento obrigatrio.</FONT></B></FONT> 78 </BODY> 79 </HTML> Ao carregarmos o Exemplo 11.4, obteremos o resultado indicado na Figura 11.35. Figura 11.35 O formulrio cadastro.htm, para digitao dos dados. Agora precisamos construir a pgina Cadastro.asp, a qual ir verificar se todos os campos obrigatrios foram preenchidos. Se todos os campos obrigatrios foram preenchidos, os dados sero gravados em um Banco de Dados, caso contrrio o formulrio enviado de volta para o usurio, solicitando que o usurio preencha os campos que esto faltando. Para armazenar os dados, utilizaremos a tabela Customers, do Banco de Dados Northwind, da instncia SERVIDOR\SQL2005. A estrutura da tabela Customers est indicada na Figura 11.36. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000691 Figura 11.36 Tabela Customers do Banco Northwind no SQL Server 2005. Para acessar este Banco de Dados utilizaremos OLE DB, sem a necessidade da criao de uma fonte ODBC. Faremos isto atravs da utilizao da propriedade ConnectionString, j descrita neste captulo. A pgina cadastro.asp far o seguinte: Estabelece uma conexo com o Banco de Dados Northwind e cria um RecordSet chamado Cadastro, o qual est ligado tabela Customers. Depois, a pgina verifica se algum campo obrigatrio no foi preenchido. Caso todos os campos obrigatrios tenham sido preenchidos, os dados so gravados na tabela Customers. Caso algum campo obrigatrio no tenha sido preenchido, a pgina ASP informa quais cam- pos obrigatrios no foram preenchidos, retorna o formulrio para o usurio, mantendo os campos que j haviam sido preenchidos, para que o usurio possa preencher somente os que esto faltando. No Exemplo 11.5, temos o cdigo para a pgina Cadastro.asp. Exemplo 11.5 Pgina ASP para processamento dos dados Cadastro.asp. 1 <%@ Language=VBScript %> 2 <HTML> 4 <HEAD> 5 </HEAD> 6 <BODY> 7 <% 8 O primeiro passo criar a conexo com o Banco de Dados 9 Para isto crio um objeto do tipo Connection 10 Cria um objeto do Tipo ADODB.Connection 11 Set conn=Server.CreateObject(ADODB.Connection) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6920000Curso Completo 12 Agora abro uma conexo com o Banco de Dados Northwind 13 da instncia SERVIDOR\SQL2005, utilizando OLE DB. 14 conn.ConnectionString = PROVIDER=SQLOLEDB; Data Source=SERVIDOR\SQL2005;Initial Catalog=Northwind; User ID=sa;Password=abc123 15 conn.Open 16 Agora criamos um objeto RecordSet. 17 Este objeto ir acessar a tabela Customers. 18 Set Cadastro = Server.CreateObject(ADODB.Recordset) 19 Cadastro.Open Customers, conn, 3, 3 20 Neste ponto tenho o objeto Cadastro ligado com a tabela 21 Cadastro do Banco de Dados clientes.mdb. 22 ************************************************** 23 Inicia a verificao para saber se todos 24 os campos obrigatrios foram preenchidos. 25 Atribuo os campos obrigatrios a variveis, para facilitar a verificao. 26 Os dados recebidos pelo formulrio so acessados atravs do objeto Request e do 27 seu mtodo Form. Por exemplo, Request.Form(CustomerID) contm o valor digitado no campo CustomerID do formulrio Cadastro.htm. 28 Codigo = Request.Form(CustomerID) 29 Nome = Request.Form(CompanyName) 30 Contato = Request.Form(ContactName) 31 Cargo = Request.Form(ContactTitle) 32 Verifica se os campos obrigatrios foram preenchidos. 33 Qualquer dado obrigatrio que no tenha sido preenchido, 34 definir a varivel faltou_dado em Sim. 35 If (Codigo=)Then 36 mensagem_codigo=Preencha o campo Cdigo: 37 faltou_dado=Sim 38 faltou_codigo=Sim 39 End If 40 If (Nome=)Then 41 mensagem_nome=Preencha o campo Nome: 42 faltou_dado=Sim 43 faltou_nome=Sim 44 End If 45 If (Contato=)Then 46 mensagem_contato=Preencha o campo Contato: 47 faltou_dado=Sim 48 faltou_contato=Sim 49 End If 50 If (Cargo=)Then 51 mensagem_cargo=Preencha o campo Cargo: 52 faltou_dado=Sim 53 faltou_cargo=Sim 54 End If 55 Caso todos os campos obrigatrios tenham sido 56 preenchidos, gravo os dados no Banco de Dados. 57 e informo que a operao foi realizada com sucesso. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000693 58 If faltou_dado<>Sim Then 59 Cadastro.AddNew 60 Cadastro.Fields(CustomerID)= Request.Form(CustomerID) 71 Cadastro.Fields(CompanyName)= Request.Form(CompanyName) 72 Cadastro.Fields(ContactName)= Request.Form(ContactName) 73 Cadastro.Fields(ContactTitle)= Request.Form(ContactTitle) 74 Cadastro.Fields(Address)= Request.Form(Address) 75 Cadastro.Fields(City)= Request.Form(Region) 76 Cadastro.Fields(Region)= Request.Form(Region) 77 Cadastro.Fields(PostalCode)= Request.Form(PostalCode) 78 Cadastro.Fields(Country)= Request.Form(Country) 79 Cadastro.Fields(Phone)= Request.Form(Phone) 80 Cadastro.Fields(Fax)= Request.Form(Fax) 81 Cadastro.Update 82 Cadastro.Close 83 Set Cadastro = Nothing 84 Response.Write CLIENTE CADASTRADO COM SUCESSO<BR> 85 Response.Write <A href=cadastro.htm>Clique aqui para Cadastrar outro Cliente</A> 86 Response.Write <HR> 87 End If 88 Caso algum dado obrigatrio no tenha sido digitado 89 Envia o formulrio de volta para o Cliente, 90 preservando os valores que o mesmo j digitou. 91 Observe que utilizamos Response.Write para ir 92 recriando todo o formulrio. Tambm observe que o formulrio enviado de volta 93 na pgina cadastro.asp e que o atributo action da tag FORM definido como 94 cadastro.asp, ou seja a pgina cadastro.asp chama a si mesma aps o 95 usurio clicar no boto Enviar. Esta uma tcnica bastante interessante. 96 Antes de enviar o formulrio, informamos quais 97 os campos obrigatrio que no foram preenchidos. 98 If faltou_codigo=Sim Then 99 Response.Write <B>O campo Cdigo deve ser preenchido.</B> <br> 100 End If 101 If faltou_nome=Sim Then 102 Response.Write <B>O campo Nome deve ser preenchido.</B> <br> 103 End If 104 If faltou_contato=Sim Then 105 Response.Write <B>O campo Contato deve ser preenchido.</B> <br> 106 End If 107 If faltou_cargo=Sim Then 108 Response.Write <B>O campo cargo deve ser preenchido.</B> <br> 109 End If 110 %> 111 <% 112 Comeo a reenviar o formulrio para o usurio, utilizando Response.Write. 113 Caso esteja faltando algum dado, envio o formulrio. 114 para o usurio preencher os campos que esto faltando. 115 Os valores j digitados so preservados. 116 %> 117 <% If faltou_dado=Sim Then proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6940000Curso Completo 118 Response.Write <BODY bgColor=#c0c0c0> 119 Response.Write <P><FONT color=white size=6 style=BACKGROUND-COLOR: navy><STRONG>Cadastro de Clientes 120 Response.Write CLIENTES:</EM></STRONG></FONT> <BR></FONT><FONT color=navy size=4><EM>Digite os dados solicitados e clique no boto 121 Response.Write Enviar.</EM></FONT></P> 122 Response.Write <P> 123 Response.Write Caso queira alterar algum dado 124 Response.Write digite no formulrio abaixo.<HR> 125 Response.Write <FORM ACTION=cadastro.asp METHOD=post id=form1 name=form1> 126 Response.Write <TABLE bgColor=#ffffff border=1 cellPadding=1 cellSpacing=1 width=100% style=HEIGHT: 161px; WIDTH: 340px> 127 Response.Write <TR> 128 Response.Write <TD>Cdigo:</TD> 129 Response.Write <TD><INPUT id=CustomerID maxLength=50 name=CustomerID size=35 value= & Chr(34) & Request.Form(CustomerID) & Chr(34) & > <FONT 130 Response.Write color=red><B>(*)</B></FONT></TD></TR> 131 Response.Write <TR> 132 Response.Write <TD>Nome:</TD> 133 Response.Write <TD><INPUT id=CompanyName maxLength=50 name=CompanyName size=35 value= & Chr(34) & Request.Form(CompanyName) & Chr(34) & > <FONT 134 Response.Write color=red><B>(*)</B></FONT></TD></TR> 135 Response.Write <TR> 136 Response.Write <TD>Contato:</TD> 137 Response.Write <TD><INPUT id=ContactName maxLength=50 name=ContactName size=35 value= & Chr(34) & Request.Form(ContactName) & Chr(34) & > <FONT 138 Response.Write color=red><B>(*)</B></FONT></TD></TR> 139 Response.Write <TR> 140 Response.Write <TD>Cargo:</TD> 141 Response.Write <TD><INPUT id=ContactTitle maxLength=50 name=ContactTitle size=35 value= & Chr(34) & Request.Form(ContactTitle) & Chr(34) & > <FONT 142 Response.Write color=red><B>(*)</B></FONT></TD></TR> 143 Response.Write <TR> 144 Response.Write <TD>Endereo:</TD> 145 Response.Write <TD><INPUT id=Address maxLength=50 name=Address size=35 value= & Chr(34) & Request.Form(Address) & Chr(34) & > 146 Response.Write </TD></TR> 147 Response.Write <TR> 148 Response.Write <TD>Cidade:</TD> 149 Response.Write <TD><INPUT id=City maxLength=50 name=City size=35 value= & Chr(34) & Request.Form(City) & Chr(34) & > 150 Response.Write </TD></TR> 151 Response.Write <TR> 152 Response.Write <TD>Regio:</TD> 153 Response.Write <TD><INPUT id=Region maxLength=50 name=Region size=35 value= & Chr(34) & Request.Form(Region) & Chr(34) & > 154 Response.Write </TD></TR> 155 Response.Write <TR> 156 Response.Write <TD>CEP:</TD> 157 Response.Write <TD><INPUT id=PostalCode maxLength=50 name=PostalCode size=35 value= & Chr(34) & Request.Form(PostalCode) & Chr(34) & > 158 Response.Write </TD></TR> 159 Response.Write <TR> proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000695 N O T A 160 Response.Write <TD>Pas:</TD> 161 Response.Write <TD><INPUT id=Country maxLength=50 name=Country size=35 value= & Chr(34) & Request.Form(Country) & Chr(34) & > 162 Response.Write </TD></TR> 163 Response.Write <TR> 164 Response.Write <TD>Telefone:</TD> 165 Response.Write <TD><INPUT id=Phone maxLength=50 name=Phone size=35 value= & Chr(34) & Request.Form(Phone) & Chr(34) & > 166 Response.Write </TD></TR> 167 Response.Write <TR> 168 Response.Write <TD>Fax:</TD> 169 Response.Write <TD><INPUT id=Fax maxLength=50 name=Fax size=35 value= & Chr(34) & Request.Form(Fax) & Chr(34) & > 170 Response.Write </TD></TR> 171 Response.Write <FONT color=red><B>(*)</B></FONT></TD></TR> 172 Response.Write <TR> 173 Response.Write <TD colSpan=2><INPUT id=enviar name=enviar style=HEIGHT: 24px; WIDTH: 109px type=submit value=Enviar_dados.> 174 Response.Write <INPUT id=limpar name=limpar type=submit value=Limpar_formulrio.></TD></TR> 175 Response.Write </TABLE> 176 Response.Write </FORM> 177 Response.Write </P><FONT color=red><B>(*) <FONT color=navy>Campos de preenchimento 178 Response.Write obrigatrio.</FONT></B></FONT> 179 End If 180 %> 181 </BODY> 182 </HTML> Algumas linhas aparecem divididas em duas ou mais linhas. Nunca demais lembrar que estas linhas devem ser digitadas como uma linha nica. As linhas esto exibidas em duas ou mais linhas apenas por questo de espao. Algumas observaes sobre o Exemplo 11.5: A primeira observao a ser feita a respeito do cdigo que insere um novo registro na tabela Customers do Banco de Dados Northwind. O cdigo ASP que realiza esta tarefa o seguinte: 58 If faltou_dado<>Sim Then 59 Cadastro.AddNew 60 Cadastro.Fields(CustomerID)= Request.Form(CustomerID) 71 Cadastro.Fields(CompanyName)= Request.Form(CompanyName) 72 Cadastro.Fields(ContactName)= Request.Form(ContactName) 73 Cadastro.Fields(ContactTitle)= Request.Form(ContactTitle) 74 Cadastro.Fields(Address)= Request.Form(Address) 75 Cadastro.Fields(City)= Request.Form(Region) 76 Cadastro.Fields(Region)= Request.Form(Region) 77 Cadastro.Fields(PostalCode)= Request.Form(PostalCode) 78 Cadastro.Fields(Country)= Request.Form(Country) 79 Cadastro.Fields(Phone)= Request.Form(Phone) 80 Cadastro.Fields(Fax)= Request.Form(Fax) 81 Cadastro.Update 82 Cadastro.Close 83 Set Cadastro = Nothing proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6960000Curso Completo 81 Response.Write CLIENTE CADASTRADO COM SUCESSO<BR> 82 Response.Write <A href=cadastro.htm>Clique aqui para Cadastrar outro Cliente</ A> 83 Response.Write <HR> 84 End If Neste cdigo, utilizamos o mtodo AddNew do objeto RecordSet Cadastro. Depois vamos preenchendo cada novo campo do registro, com o respectivo valor preenchido pelo usurio no formulrio. No final, utilizamos o mtodo Update para salvar o registro na tabela. O mtodo Close utilizado para fechar o RecordSet Cadastro e, por fim, tiramos o objeto Cadastro da memria. Isto feito atribuindo-se o valor Nothing para o objeto Cadastro. importante lembrar que, para atribuir valor para um objeto, devemos utilizar o operador Set, caso contrrio obteremos uma mensagem de erro. Tambm gostaria de observar a situao em que o usurio deixa de preencher algum campo obrigatrio. Neste caso, o usurio informado a respeito de qual ou quais campos no foram preenchidos. O formulrio retornado para o usurio, juntamente com os valores j digitados, para que ele no precise digitar todos os valores novamente. Observe que todo o cdigo HTML que gera o formulrio retornado utilizando-se Response.Write. Vamos testar o funcionamento da pgina Cadastro.asp. Na Figura 11.37, o usurio preencheu alguns campos, porm no preencheu os campos obrigatrios Contato e Cargo. Figura 11.37 Os campos obrigatrios Contato e Cargo no foram preenchidos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000697 Figura 11.38 O usurio informado quais campos obrigatrios no foram preenchidos. Agora o usurio preenche os campos obrigatrios que esto faltando, conforme indicado na Figura 11.39. Ao clicar no boto Enviar dados, as informaes sero salvas no Banco de Dados. A pgina Cadastro.asp informa que os dados foram salvos com sucesso e retorna um link para que o usurio possa voltar ao formulrio de cadastro e cadastrar outro cliente, conforme indicado na Figura 11.40. Na Figura 11.41, acessamos a tabela Customers e podemos constatar que o cliente foi realmente cadastrado. Ao clicar no boto Enviar dados, a pgina Cadastro.asp detecta que alguns campos obrigatrios no foram preenchidos e informa o usurio a este respeito, conforme indicado na Figura 11.38. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 6980000Curso Completo Figura 11.39 O usurio preenche os campos que esto faltando. Figura 11.40 O cliente foi cadastrado com sucesso. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000699 Figura 11.41 Os dados enviados pela pgina ASP foram gravados na tabela Customers. DEMAIS OPERAES UTILIZANDO ASP Neste tpico, veremos como efetuar as demais operaes utilizando ASP. Veremos quais os mtodos utilizados para efetuar as seguintes operaes: Localizar um registro. Editar um registro. Excluir um registro. PARA LOCALIZAR UM REGISTRO Para que possamos localizar um registro, ou um conjunto de registros com base em um ou mais critrios, basta construirmos uma instruo SQL que retorna os dados desejados. Por exemplo, se quisermos pesquisar um determinado produto na tabela Products, do Banco de Dados Northwind, criamos um formulrio HTML onde o usurio pode digitar o cdigo do produto. O valor digitado passado para uma pgina ASP, utilizando a opo Action, da tag FORM. A pgina ASP recebe o valor digitado, utilizando Request.Form(NomeDoCampoNoFormulrio). Com o valor recebido, a pgina ASP monta uma instruo SQL, utilizando o cdigo digitado como filtro. Os resultados so exibidos em uma tabela criada com cdigo HTML. Vamos a um exemplo bastante simples. O nosso exemplo ser composto de duas pginas ASP. A primeira pgina ser chamada ListaPaises.asp. Esta pgina obtm uma lista de todos os pases para os quais existe pedidos na tabela Orders do Banco de Dados Northwind da instncia SERVIDOR\SQL2005. Selecionamos um dos pases da lista e clicamos em um boto Pesquisar. Ao clicarmos no boto Pesquisar, ser chamada uma segunda pgina ASP PaisesObtidos.asp. Esta segunda pgina exibe uma listagem proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7000000Curso Completo com os campos OrderID, OrderDate, ShipCity e ShipCountry para todos os pedidos do pas selecionado na pgina ListaPaises.asp. No Exemplo 11.6, temos a listagem que cria a pgina ListaPaises.asp. Exemplo 11.6 Pgina ASP que cria a listagem de pases ListaPaises.asp. 1 <%@ Language=VBScript %> 2 <HTML> 3 <HEAD> 4 </HEAD> 5 <TITLE>Selecione o Pas de destino.</TITLE> 6 <BODY> 7 <% 8 O primeiro passo criar a conexo com o Banco de Dados. 9 Para isto crio um objeto do tipo Connection. 10 Cria um objeto do tipo ADODB.Connection 11 Set conn=Server.CreateObject(ADODB.Connection) 12 Agora abro uma conexo com o Banco de Dados Northwind 13 utilizando OLE DB. 14 conn.ConnectionString = PROVIDER=SQLOLEDB; Data Source=SERVIDOR\SQL2005;Initial Catalog=Northwind; User ID=sa;Password=abc123 15 conn.Open 16 Agora criamos um objeto RecordSet. 17 Este objeto ir acessar o campo ShipCountry 18 da tabela Produtos 19 Set Paises = Server.CreateObject(ADODB.Recordset) 20 Paises.Open Select ShipCountry from Orders Group By ShipCountry Order By ShipCountry, conn, 3, 3 21 Neste ponto tenho o objeto Paises com uma listagem 22 em ordem ascendente, dos pases para os quais existem 23 pedidos efetuados. 24 %> 25 <P><B>Selecione o pas a ser pesquisado.</B></P> 26 <P><B><I>Depois clique no boto Pesquisar.</I></B></P> 27 <FORM action=PaisesObtidos.asp method=post id=form1 name=form1> 28 <SELECT id=listapaises name=listapaises> 29 <% 30 Agora construo a lista de opes a partir dos 31 dados obtidos da tabela Orders. 32 Para cada pas obtido, crio uma nova opo 33 na lista. 34 Do While Not Paises.EOF 35 Response.Write <OPTION value= & Chr(34) & Paises.Fields(ShipCountry) & Chr(34) & > & Paises.Fields(ShipCountry)& </OPTION> proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000701 36 Paises.MoveNext 37 Loop 38 %> 39 </SELECT> 40 <BR> 41 <HR> 42 <INPUT type=submit value=Pesquisar id=Pesquisar name=Pesquisar> 43 </FORM> 44 </BODY> 45 </HTML> Ao carregarmos a pgina ListaPaises.asp, obtemos o resultado indicado na Figura 11.42. Figura 11.42 A pgina ListaPaises.asp. Agora precisamos construir a pgina PaisesObtidos.asp. Esta pgina receber o valor selecionado na lista, e utilizar este valor como critrio de pesquisa. O nome da lista na pgina ListaPaises.asp listapaises. O que define o nome de um campo em um formulrio a opo id, como indicado no fragmento de cdigo a seguir: 28 <SELECT id=listapaises name=listapaises> A pgina PaisesObtidos.asp tambm exibir os resultados obtidos. Na Listagem 11.7, temos o cdigo que cria a pgina PaisesObtidos.asp. Exemplo 11.7 Utilizando o pas selecionado como critrio de pesquisa PaisesObtidos.asp. 1 <%@ Language=VBScript %> 2 <HTML> proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7020000Curso Completo 3 <HEAD> 4 </HEAD> 5 <TITLE>Resultados da pesquisa para <%=Request.Form(listapaises) %>.</TITLE> 6 <BODY> 7 <% 8 O primeiro passo criar a conexo com o Banco de Dados. 9 Para isto crio um objeto do tipo Connection. 10 Cria um objeto do tipo ADODB.Connection 11 Set conn=Server.CreateObject(ADODB.Connection) 12 conn.ConnectionString = PROVIDER=SQLOLEDB; Data Source=SERVIDOR\SQL2005;Initial Catalog=Northwind; User ID=sa;Password=abc123 13 conn.Open 14 Agora criamos um objeto RecordSet. 15 Este objeto ir utilizar o pas selecionado como critrio de pesquisa 18 na tabela Orders. Feito isso teremos os pedidos para o pas selecionado na lista. 19 Set Pedidos = Server.CreateObject(ADODB.Recordset) 20 Pedidos.Open Select OrderID, OrderDate, ShipCity, ShipCountry from Orders WHERE ShipCountry= & Request.Form(listapaises) & , conn, 3, 3 21 Vamos exibir novamente a lista de pases para que o usurio 22 possa selecionar outro pas e fazer outra pesquisa. 23 Agora criamos um objeto RecordSet. 24 Este objeto ir acessar o campo ShipCountry 25 da tabela Orders. 26 Set Paises = Server.CreateObject(ADODB.Recordset) 27 Paises.Open Select ShipCountry from Orders Group By ShipCountry Order By ShipCountry, conn, 3, 3 28 Neste ponto tenho o objeto Paises com uma listagem 29 em ordem ascendente, dos pases para os quais existem 30 pedidos efetuados. 31 %> 32 <B>Selecione outro pas para fazer uma nova pesquisa.</B><BR> 33 <B><I>Depois clique no boto Pesquisar.</I></B><BR> 34 <FORM action=PaisesObtidos.asp method=post id=form1 name=form1> 35 <SELECT id=listapaises name=listapaises> 36 <% 37 Agora construo a lista de opes a partir dos 38 dados obtidos da tabela Orders. 39 Para cada pas obtido, crio uma nova opo 40 na lista. 41 Do While Not Paises.EOF 42 Response.Write <OPTION value= & Chr(34) & Paises.Fields(ShipCountry) & Chr(34) 43 If Paises.Fields(ShipCountry)= Request.Form(listapaises) Then 44 Response.Write SELECTED 45 End If proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000703 46 Response.Write > & Paises.Fields(ShipCountry)& </OPTION> 47 Paises.MoveNext 48 Loop 49 %> 50 </SELECT> 51 52 <HR> 53 <INPUT type=submit value=Pesquisar id=Pesquisar name=Pesquisar> 54 </FORM> 55 <% 56 Exibo os resultados obtidos. 57 %> 58 <B>Relao de pedidos para: <% =Request.Form(listapaises) %>.</B> 59 <HR> 60 <% Agora exibo os resultados utilizando uma tabela. %> 61 <TABLE border=1> 62 <TR> 63 <TD><B>Cdigo</B></TD> 64 <TD><B>Data</B></TD> 65 <TD><B>Cidade</B></TD> 66 <TD><B>Pas</B></TD> 67 </TR> 68 <% 69 Do While Not Pedidos.EOF 70 %> 71 <TR> 72 <TD><% =Pedidos.Fields(OrderID) %></TD> 73 <TD><% =Pedidos.Fields(OrderDate) %></TD> 74 <TD><% =Pedidos.Fields(ShipCity) %></TD> 75 <TD><I><% =Pedidos.Fields(ShipCountry) %></I></TD> 76 </TR> 77 <% Pedidos.MoveNext 78 Loop 79 %> 80 </TABLE> 81 <BR> 82 <HR> 83 </BODY> 84 </HTML> UTILIZANDO O NOSSO EXEMPLO Agora vamos utilizar o nosso exemplo para comprovar o correto funcionamento do mesmo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7040000Curso Completo Figura 11.43 Exibindo os pedidos para a Norway. Observe que novamente exibida a lista de pases e o pas selecionado anteriormente aparece selecionado na lista. Para pesquisar os pedidos para outro pas s selecionar o pas desejado na lista, e clicar no boto Pesquisar. Veja que com isso construmos um formulrio de pesquisa bastante interativo. O usurio seleciona o pas desejado, e manda pesquisar. Cada vez que o usurio seleciona um pas diferente na lista e clica no boto Pesquisar; o novo valor selecionado utilizado como critrio de filtragem e somente os registros que atendem ao critrio sero retornados. EDITANDO E EXCLUINDO REGISTROS Para editar um registro, em primeiro lugar devemos localiz-lo, isto , o registro a ser editado deve ser o registro atual. Uma vez localizado, comeamos a alterar os seus campos, utilizando a seguinte sintaxe: Ao carregar a pgina ListaPaises.asp, obtemos o resultado indicado na Figura 11.42, indicada anteriormente. Vamos supor que o usurio selecionou Norway, na lista de pases. Ao clicar no boto Pesquisar, sero exibidos apenas os pedidos para o pas selecionado, conforme indicado na Figura 11.43. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 11 DESENVOLVENDO APLICAES QUE ACESSAM DADOS NO SQL SERVER 2005 Curso Completo0000705 NomeObjeto.Fields(Campo1) = valor NomeObjeto.Fields(Campo2) = valor NomeObjeto.Fields(Campo3) = valor ... NomeObjeto.Fields(Campon) = valor onde Campo1, Campo2, etc. o nome de cada campo, conforme definido na estrutura da tabela. Depois, utilizamos o mtodo Update, para gravar as alteraes na tabela no Banco de Dados: NomeObjeto.Update. No trecho de cdigo a seguir, estamos alterando um registro da tabela Customers do Banco de Dados Northwind. Neste fragmento, o objeto Clientes deve ser um objeto do tipo RecordSet que est ligado tabela Customers do Banco de Dados Northwind. Para alterar o registro atual, utilizaramos os seguintes comandos: Clientes.Fields(CustomerID)=XXXXX Clientes.Fields(CompanyName)=Empresa ABC Ltda. Clientes.Fields(ContactName)=Jos da Silva Pereira Clientes.Fields(ContactTitle)=Gerente Clientes.Fields(Address)=Rua das amoreiras 999 Clientes.Fields(City)=Cafund Clientes.Fields(Region)=Fim do Mundo Clientes.Fields(PostalCode)=12345-678 Clientes.Fields(Country)=Brasil Clientes.Fields(Phone)=(55)222-2222 Clientes.Fields(Fax)=(55)333-4455 Clientes.Update Para excluir o registro atual, utilizamos o mtodo Delete, do objeto RecordSet. Por exemplo, para excluir o registro atual do RecordSet Clientes, utilizamos o seguinte comando: Clientes.Delete O registro atual ser excludo, l na tabela do Banco de Dados, tabela que est associada com o objeto RecordSet Clientes. CONCLUSO Neste captulo, tratamos de uma srie de assuntos relacionados com o acesso aos dados de um servidor SQL Server 2005, utilizando a dobradinha ADO/OLE DB. Tambm falamos sobre a utilizao de ODBC, porm salientando que esta uma tecnologia mais antiga (porm ainda utilizada em muitas aplicaes; at mesmo novas aplicaes tm sido desenvolvidas usando ODBC, por falta de conhecimentos sobre as novas tecnologias, por parte dos projetistas e programadores). Iniciamos o captulo falando do modelo de desenvolvimento em duas, trs ou n camadas. Vimos os problemas com o modelo tradicional Cliente/Servidor em duas camadas. Tambm aprendemos sobre o modelo de n camadas e como este modelo se prope a minimizar ou at eliminar a maioria dos problemas relacionados manuteno e atualizao de aplicaes. Na seqncia, aprendemos a preparar o servidor para que o amigo leitor pudesse acompanhar os exemplos deste captulo. Aprendemos a criar uma pasta virtual no IIS e a acessar arquivos criados dentro desta pasta. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7060000Curso Completo Em seguida, estudamos um pouco de OLE DB e ADO. Vimos qual o modelo de acesso atravs da utilizao de OLE DB Providers. Tambm vimos qual o papel do ADO no acesso aos dados. No restante do captulo, estudamos alguns objetos do Modelo de Objetos do ADO e mostramos alguns exemplos prticos, atravs da utilizao de pginas ASP para acesso a dados no servidor SQL Server 2005. Aprendemos a realizar as operaes bsicas com os dados do servidor, tais como: Pesquisar Inserir novos registros Alterar registros Excluir registros No prximo captulo, falaremos um pouco sobre o acesso aos dados do SQL Server 2005 utilizando o Microsoft Access 2000. Tambm apresentaremos uma noo bsica sobre XML e como o SQL Server 2005 d suporte ao padro XML. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Captulo 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7080000Curso Completo INTRODUO Neste captulo, vamos tratar de dois assuntos relacionados ao desenvolvimento de aplicaes: Utilizando o Microsoft Access 2000 como Front-End para os dados do SQL Server 2005. Uma Introduo ao padro XML. Na primeira parte do captulo, tratarei sobre a utilizao do Microsoft Access para acessar os dados do SQL Server 2005. A idia bsica utilizar as facilidades de desenvolvimento do Microsoft Access, em conjunto com as facilidades de manipulao e armazenamento de dados do SQL Server. Para que isso seja possvel o Microsoft Access precisa ter acesso aos dados armazenados no SQL Server. Iremos apresentar uma breve introduo ao Microsoft Access e a seus elementos principais. Esta introduo ser importante para que possamos prosseguir com os prximos tpicos, onde iremos analisar diversas maneiras de conectar um Banco de Dados do Access com dados de um Banco de Dados do SQL Server. Veremos que existem diversas maneiras de estabelecer esta comunicao. Tratarei, dentre outras, das seguintes formas de comunicao entre o Microsoft Access e o SQL Server: Importando dados do SQL Server em tabelas do Microsoft Access. Anexando tabelas no Microsoft Access. Criando consultas no Microsoft Access, baseadas em tabelas do SQL Server 2005. Sempre focaremos a conexo dos elementos de um Banco de Dados do Microsoft Access com dados do SQL Server 2005. De maneira alguma este captulo um tratado completo sobre o desenvolvimento de aplicaes utilizando o Microsoft Access e o SQL Server 2005. Tambm aconselhvel que o leitor j tenha alguma experincia com o Microsoft Access e com a linguagem de programao VBA. Em seguida, veremos como acessar dados do SQL Server 2005 utilizando simplesmente o nosso navegador. Veremos quais as condies necessrias para que possamos acessar dados, simplesmente utilizando o protocolo HTTP Hypertext Transfer Protocol. Veremos como executar um comando SQL embutido em uma URL, atravs do protocolo HTTP. Esta uma das novidades do SQL Server 2002 em relao s verses anteriores, a qual tambm faz parte do SQL Server 2005. Na parte final do captulo, falaremos um pouco sobre o padro (muitos classificam como linguagem) XML Extensible Markup Language. Veremos o que o XML, qual a sua importncia e qual o suporte do SQL Server 2005 em relao a este padro. Tambm veremos como fazer com que uma consulta retorne os resultados no formato XML, utilizando a clusula FOR XML. Esta clusula mais uma das novidades do SQL Server 2005. Sem dvida que a capacidade de trabalhar de forma nativa com o XML uma grande vantagem do SQL Server 2005. S o uso do XML no SQL Server 2005 daria, certamente, um livro. Est fora do escopo deste livro abordar o uso do XML no SQL Server 2005. No Books Online voc encontra informaes detalhadas sobre o uso do XML no SQL Server 2005. Para maiores informaes sobre XML, consulte os seguintes endereos: www.xml.org. www.wdvl.com/Software/XML. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000709 N O T A www.w3.org/xml. www.internet.com. xml101.com. www.xmlpitstop.com/. www.xml.com. DESENVOLVIMENTO EM: UMA RPIDA REVISO SOBRE A ESTRUTURA DE UM BANCO DE DADOS DO MICROSOFT ACCESS PR-REQUISITOS Fundamentos apresentados na Parte I. Noes sobre o Microsoft Access. METODOLOGIA Apresentao dos objetos que compem um Banco de Dados do Microsoft Access. Neste tpico, vamos fazer uma rpida reviso sobre a estrutura de um Banco de Dados do Microsoft Access: como armazenado e do que composto. O Microsoft Access 2000, XP e 2003, a exemplo das verses anteriores, armazena todos os elementos de um Banco de Dados, em um nico arquivo com a extenso .mdb. Quer o Banco de Dados tenha uma ou dezenas de tabelas e outros elementos, sempre ser criado um nico arquivo com a extenso .mdb, arquivo este onde esto gravados todos os elementos deste Banco de Dados. Esta forma de armazenamento difere de sistemas mais antigos, como por exemplo o Dbase III e Dbase IV, onde cada tabela era armazenada em um arquivo separado, cada ndice em um arquivo diferente, cada formulrio em um arquivo diferente e assim por diante. Esta estrutura tambm diferente da utilizada pelo SQL Server 2005, o qual cria, no mnimo, um arquivo primrio (.mdf) e um arquivo de log (.log), podendo ter zero ou mais arquivos secundrios (.ndf), para cada Banco de Dados. Para maiores informaes sobre a maneira como o SQL Server 2005 armazena um Banco de Dados e sobre arquivos primrios, secundrios e de log, consulte o Captulo 3 Trabalhando com Banco de Dados no Microsoft SQL Server 2005. Um Banco de Dados do Microsoft Access 2000 pode conter diversos elementos. Os principais so: Tabelas Consultas Formulrios Relatrios Pginas de Dados (novidade a partir do Microsoft Access 2000) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7100000Curso Completo Macros Mdulos Na Figura 12.1, vemos o arquivo de exemplo Northwind.mdb carregado no Microsoft Access. No painel da esquerda vemos as opes para os principais elementos que formam um Banco de Dados do Access 2000. Se clicarmos, por exemplo, na opo Consultas, ser exibida uma listagem das consultas do Banco de Dados Northwind; se clicarmos na opo Relatrios, ser exibida uma listagem com os relatrios do Banco de Dados Northwind e assim por diante. Estes diversos elementos so tambm conhecidos como objetos do Banco de Dados. Uma tabela um objeto, uma consulta um objeto e assim por diante. Para acessar um determinado objeto basta dar um clique duplo no objeto. Figura 12.1 Elementos bsicos de um Banco de Dados do Microsoft Access. A seguir, vamos a uma descrio bsica dos diversos elementos que compem um Banco de Dados do Microsoft Access. TABELAS As tabelas so os objetos onde ficam gravados os dados inseridos pelos usurios. Uma tabela um conjunto de dados sobre um tpico especfico, como produtos, clientes, pedidos ou fornecedores. Utilizar uma tabela separada para cada tpico significa armazenar os dados somente uma vez, o que torna o Banco de Dados mais eficiente e reduz os erros de entrada de dados, conforme descrito no Captulo 1, quando falamos do modelo Relacional de dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000711 importante salientar que o nico local onde ficam gravados os dados em objetos do tipo tabela. Para criar novas tabelas podemos utilizar a opo Criar tabela no modo estrutura ou a opo Criar tabela usando assistente. Todo objeto no Microsoft Access 2000 possui um modo chamado modo estrutura. No modo estrutura que definimos as caractersticas e propriedades do objeto. Por exemplo, no modo estrutura de uma tabela definimos quais os campos que faro parte da tabela e quais as caractersticas de cada campo. Na Figura 12.2, temos uma viso do modo estrutura da tabela Clientes, onde so exibidas as propriedades para o campo CdigoDoCliente. Figura 12.2 Modo estrutura da tabela Clientes. Para acessar o modo estrutura de um objeto, d um clique com o boto direito do mouse no objeto e, no menu que surge, selecione a opo Modo Estrutura. CONSULTAS Utilizamos consultas para poder visualizar os dados de diversas maneiras diferentes. Por exemplo, podemos querer uma listagem onde so acessados dados de duas ou mais tabelas. Tambm podemos querer uma listagem onde somente so exibidos registros que atendam um ou mais critrios. Tudo o que falamos sobre views, no Captulo 9, tambm vlido para consultas no Microsoft Access 2000. Na verdade views so consultas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7120000Curso Completo O tipo mais comum de consulta a consulta seleo. Uma consulta seleo recupera dados de uma ou mais tabelas atravs de critrios especificados e exibe os dados na ordem escolhida. Tambm podemos criar consultas para alterar e excluir dados, para fazer uma referncia cruzada entre os dados ou para criar uma nova tabela com base nos resultados obtidos. importante salientar que as consultas no armazenam dados. Quando uma consulta gravada no Banco de Dados, a nica coisa que salva no banco de dados o comando SQL que define a consulta. Quando for executada, a consulta busca os dados em uma ou mais tabelas e exibe os resultados para o usurio. A exemplo das tabelas, uma consulta tambm possui um modo estrutura. Na Figura 12.3, temos o modo estrutura da consulta Consulta Pedidos. Este modo conhecido por QBE Query By Example. Figura 12.3 Modo estrutura da consulta Consulta Pedidos. Para consultas, alm do modo estrutura, temos o modo SQL, onde exibido o comando SQL que define a consulta. Para exibir o modo SQL, estando no modo estrutura, selecione o comando Exibir -> Modo SQL. Na Figura 12.4, temos o modo SQL da consulta Consulta Pedido do Banco de Dados Northwind.mdb. O comando que aparece nesta figura o que gravado no Banco de Dados. Em resumo, o que define uma consulta um comando SQL e este comando que salvo no Banco de Dados. No modo estrutura que definimos as caractersticas e propriedades do objeto. Por exemplo, no modo estrutura de uma consulta, definimos quais os campos que faro parte da consulta, quais os critrios de proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000713 Figura 12.4 Modo SQL da consulta Consulta Pedidos. FORMULRIOS Um formulrio permite que sejam criadas telas grficas mais fceis de utilizar. Com a utilizao de formulrios podemos criar um aplicativo com aparncia profissional, onde podemos inserir botes de comando, menus e todos os elementos de desenvolvimento do ambiente Windows. Os formulrios tambm expem um modelo de eventos, os quais facilitam uma srie de operaes, como por exemplo a validao de dados. Podemos criar formulrios para executar diversas aes, dentre as quais podemos destacar as seguintes: Servir para entrada de dados em uma ou mais tabelas. Servir como interface de navegao do aplicativo. Servir como uma caixa de dilogo onde o usurio pode inserir informaes. Um formulrio obtm dados a partir de uma tabela ou a partir de uma consulta. No caso de um formulrio baseado em uma consulta, quando o formulrio aberto, a consulta associada executada. A consulta obtm dados de uma ou mais tabelas e retorna os dados obtidos para o formulrio. O formulrio pode exibir os dados e pode ou no permitir que os dados sejam alterados ou que novos dados sejam inseridos. O formulrio possui um modo estrutura que onde construmos o formulrio. A criao de um formulrio semelhante criao de formulrios em ferramentas de desenvolvimento como o Visual Basic ou Delphi. Basicamente, vamos arrastando e configurando elementos em uma tela grfica. Tambm podemos escrever cdigo para responder a eventos que acontecem no formulrio. Na Figura 12.5, temos o modo estrutura do formulrio Pedidos, do banco de dados Northwind.mdb. Observe que temos uma Caixa de Ferramentas, a partir da qual podemos arrastar elementos para a construo do formulrio. filtragem e ordenao e assim por diante. Ao fazermos alteraes neste modo, o Microsoft Access altera o comando SQL para refletir as mudanas efetuadas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7140000Curso Completo Figura 12.5 Modo estrutura do formulrio Pedidos. Na Figura 12.6, temos o formulrio carregado, j no modo Formulrio, para ser utilizado pelo usurio. Este modo conhecido como Modo Formulrio. Observe que temos um formulrio onde so exibidas (e podem ser inseridas) informaes, de duas tabelas diferentes: Pedidos e Detalhes do Pedido. Esta facilidade de podermos digitar as informaes do cabealho do pedido (tabela Pedidos) e dos itens do pedido (tabela Detalhes do Pedido), em uma mesma tela, ilustra bem a utilidade dos formulrios. Figura 12.6 Modo formulrio do formulrio Pedidos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000715 RELATRIOS Com a utilizao de consultas podemos obter diversas listagens, inclusive com a especificao de um ou mais critrios de pesquisa/filtragem. Porm no temos como formatar com um layout mais profissional a listagem retornada por uma consulta. Para solucionar este problema podemos utilizar relatrios. Por exemplo, um relatrio pode ser baseado em uma consulta. Ao abrir o relatrio, a consulta executada, os dados so retornados a partir das tabelas e so passados para o relatrio. O relatrio recebe os dados retornados pela consulta e acrescenta elementos de formatao que deixam a aparncia da listagem bem mais profissional. Quero salientar novamente que os dados somente ficam armazenados nas tabelas. O relatrio baseado na consulta, e esta por sua vez executada ao abrirmos o relatrio. A consulta busca os dados em uma ou mais tabelas e retorna a listagem obtida, para o relatrio. Este, por sua vez, d uma aparncia profissional aos resultados. Tambm podemos ter um relatrio baseado em uma tabela. Neste caso, ao abrirmos o relatrio, este vai buscar dados diretamente na tabela associada. Figura 12.7 Modo estrutura do relatrio Resumo de Vendas por Ano. O relatrio tem um modo estrutura que onde construmos e definimos a formatao do relatrio. A criao de um relatrio semelhante criao de relatrios em ferramentas de desenvolvimento como o Visual Basic ou Delphi. Basicamente, vamos arrastando e configurando elementos em uma tela grfica. Tambm podemos escrever cdigo para responder a eventos que acontecem no formulrio. Na proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7160000Curso Completo Figura 12.7, temos o relatrio aberto no modo estrutura do relatrio Resumo de Vendas por Ano. Observe que temos uma Caixa de Ferramentas, a partir da qual podemos arrastar elementos para a construo do relatrio. Na Figura 12.8, temos o relatrio aberto no modo de visualizao de impresso. Este modo permite que o usurio visualize o relatrio na tela do micro, antes de enviar o relatrio para a impressora. Figura 12.8 Modo visualizar impresso do relatrio Resumo de Vendas por Ano. Tambm gostaria de comentar que este relatrio baseado na consulta Resumo de Vendas por Ano. Esta consulta que consolida os dados de vendas anuais, por trimestre. Esta consolidao feita a partir de dados das tabelas Pedidos e Detalhes do Pedido. Este exemplo demonstra bem o inter- relacionamento entre os diversos objetos que compem um banco de dados do Access. PGINAS Uma pgina de acesso a dados um tipo especial de pgina da Web, projetado para exibir e trabalhar com dados da Internet ou de uma intranet dados que so armazenados em um Banco de Dados do Microsoft Access ou do Microsoft SQL Server. A pgina de acesso a dados tambm pode incluir dados de outras fontes como, por exemplo, o Microsoft Excel. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000717 N O T A Esta uma das novidades do Microsoft Access 2000 em relao s verses anteriores. Podemos estruturar as pginas de acesso a dados no modo estrutura de pgina no Microsoft Access. A pgina um arquivo separado armazenado fora do Microsoft Access; entretanto, quando voc cria o arquivo, o Microsoft Access automaticamente adiciona um atalho ao arquivo na janela Banco de Dados. Estruturar uma pgina de acesso a dados semelhante a estruturar formulrios e relatrios voc usa uma lista de campos, a caixa de ferramentas, os controles, a caixa de dilogo Classificar e agrupar etc. Entretanto, h algumas diferenas significativas na maneira como voc estrutura e interage com as pginas de acesso a dados, em oposio a formulrios e relatrios. A forma como voc estrutura a pgina depende para que ela ser usada: Relatrio interativo: Este tipo de pgina de acesso a dados freqentemente usado para consolidar e agrupar informaes armazenadas no Banco de Dados e, em seguida, publicar resumos dos dados. Por exemplo, uma pgina poderia publicar o desempenho de vendas de cada regio em que voc faz negcios. Usando indicadores de expanso, voc pode ir de um resumo geral das informaes como, por exemplo, uma lista de todas as regies e suas vendas combinadas totais, a detalhes especficos sobre vendas individuais dentro de cada regio. Embora a pgina de acesso a dados tambm possa fornecer botes da barra de ferramentas para classificar e filtrar os dados, voc no pode editar dados nesse tipo de pgina. Entrada de dados: Este tipo de pgina de acesso a dados usado para exibir, adicionar e editar registros. Anlise de dados: Este tipo de pgina de acesso a dados pode incluir uma lista de tabelas dinmicas, semelhante a um formulrio de tabela dinmica do Microsoft Access ou um relatrio de tabela dinmica do Microsoft Excel, que permite que voc reorganize os dados para analis- los de maneiras diferentes. A pgina poderia conter um grfico que voc usaria para analisar tendncias, detectar padres e comparar dados em seu Banco de Dados. Ou a pgina poderia conter uma planilha na qual voc poderia inserir e editar dados, e usar frmulas para calcular como voc faz no Microsoft Excel. Na Figura 12.9, temos a pgina de dados Analisar Vendas, no modo estrutura. Como usar pginas de acesso a dados no Internet Explorer? Uma pgina de acesso a dados conectada diretamente a um Banco de Dados. Quando usurios exibem a pgina de acesso a dados no Microsoft Internet Explorer, eles esto exibindo sua prpria cpia da pgina. O que significa que qualquer filtragem, classificao e outras alteraes que eles fazem na maneira com que os dados so exibidos incluindo alteraes que eles fazem dentro de uma lista de tabelas dinmicas ou planilha afetam somente sua cpia da pgina de acesso a dados. Entretanto, alteraes feitas nos prprios dados como, por exemplo, modificar valores e adicionar ou excluir dados so armazenadas no Banco de Dados base e, portanto, esto disponveis para qualquer pessoa que exiba a pgina de acesso a dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7180000Curso Completo N O T A Figura 12.9 Modo estrutura da pgina Analisar Vendas. Para exibir e trabalhar com a pgina de acesso a dados na Internet ou em uma intranet, os usurios precisam do Microsoft Internet Explorer 5 ou Superior. Na Figura 12.10, temos a pgina de dados Analisar Vendas, carregada no Internet Explorer. Observe o sinal de + ao lado do nome do cliente. Se dermos um clique no sinal de + ao lado do nome do cliente, sero exibidos detalhes sobre as vendas para este cliente. Como usar pginas de acesso a dados no Microsoft Access? Voc tambm pode trabalhar com uma pgina de acesso a dados no modo pgina no Microsoft Access. As pginas de acesso a dados podem suplementar os formulrios e relatrios que voc usa em seu aplicativo de Banco de Dados. Na Figura 12.11, temos a pgina de dados Analisar Vendas, carregada no Microsoft Access. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000719 Figura 12.10 Pgina Analisar Vendas no Internet Explorer. Figura 12.11 Pgina Analisar Vendas no Microsoft Access. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7200000Curso Completo MACROS Macros so utilizadas em diversos programas para automatizar tarefas repetitivas. Por exemplo, se para obter um determinado resultado temos que executar uma srie de quatro consultas em seqncia, e depois exportar os dados para uma planilha do Microsoft Excel, podemos criar uma macro que faa estas aes para ns, de uma maneira automatizada. Existem diversas aes de macros predefinidas que podem ser utilizadas no Microsoft Access. Por exemplo, temos macros para abrir tabelas, consultas e formulrios, para exportar dados para o Excel, para o Dbase III e assim por diante. A exemplo de outros objetos, uma macro tambm tem um modo estrutura. Neste modo, vamos definindo uma ou mais aes que faro parte da macro. Se houver mais do que uma ao, estas sero executadas na ordem em que foram definidas, na estrutura da macro. Na Figura 12.12, temos a estrutura da macro Fornecedores do Banco de Dados Northwind. Esta macro possui diversas aes. Figura 12.12 Modo estrutura da macro Fornecedores. Podemos fazer com que uma macro seja executada em resposta a um evento de um formulrio ou de um relatrio. Tambm podemos executar macros com a utilizao de comandos da linguagem VBA. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000721 MDULOS Os mdulos contm cdigo VBA Visual Basic for Application. Com a utilizao do VBA, podemos criar aplicaes profissionais, utilizando o Microsoft Access. Para se ter uma idia, atravs do VBA temos acesso a todos os objetos do modelo ADO Activex Data Object. Com isso podemos criar objetos dos tipos Connection e RecordSet, como os que criamos com pginas ASP, no captulo anterior. A linguagem VBA bastante poderosa. Atravs dela podemos ter acesso a todos os objetos do ambiente do Microsoft Access. Por exemplo, utilizando VBA podemos criar tabelas, configurar a segurana, criar e executar consultas, e assim por diante. A exemplo de outros objetos, um mdulo tambm tem um modo estrutura. Na verdade, o modo estrutura de um mdulo o ambiente de desenvolvimento onde podemos escrever cdigo VBA. Neste ambiente, temos algumas facilidades para a escrita e depurao de cdigo em VBA. Na Figura 12.13, podemos ver o modo estrutura do mdulo Funes Utilitrias do Banco de Dados Northwind.mdb. Figura 12.13 Modo estrutura do mdulo Funes Utilitrias. Podemos fazer com que um mdulo seja executado em resposta a um evento de um formulrio ou de um relatrio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7220000Curso Completo Com isso encerramos a nossa breve viso sobre os principais elementos de um Banco de Dados do Microsoft Access. Maiores informaes sobre o Microsoft Access 2000 podem ser encontradas com a documentao do produto. DESENVOLVIMENTO EM: COMO ACESSAR DADOS DO SERVIDOR SQL SERVER 2005 UTILIZANDO O MICROSOFT ACCESS PR-REQUISITOS Noes sobre os elementos que compem um Banco de Dados do Microsoft Access. Noes sobre os modelos de desenvolvimento. Conhecimento bsico de ODBC. METODOLOGIA Apresentao de diferentes maneiras, para acessar os dados do SQL Server 2005, a partir do Microsoft Access. TCNICA Utilizao dos comandos apresentados para acessar os dados no Servidor SQL Server 2005. Temos vrias opes para, a partir do Microsoft Access, ter acesso aos dados do SQL Server 2005. Iremos aprender a utilizar as seguintes opes: Importando dados do SQL Server em tabelas do Microsoft Access. Anexando tabelas no Microsoft Access. Criando consultas no Microsoft Access, baseadas em tabelas do SQL Server 2005. Cada uma destas abordagens tem suas vantagens, desvantagens e se aplica em situaes especficas. Vamos estud-las individualmente. IMPORTANDO DADOS DO SQL SERVER EM TABELAS DO MICROSOFT ACCESS Podemos importar os dados que esto em tabelas de um Banco de Dados do SQL Server 2005, para tabelas em um Banco de Dados do Microsoft Access. Com a importao, os dados so copiados das tabelas de um Banco de Dados para as do outro. Uma das vantagens da importao que os dados ficam gravados no arquivo .mdb, do Banco de Dados do Microsoft Access. Desta forma os dados so acessados localmente, o que pode propiciar um melhor desempenho. Outra vantagem que os dados podem ser acessados, mesmo que a conexo de rede com o servidor SQL Server 2005 tenha sido temporariamente interrompida. Como nem tudo so vantagens, temos a desvantagem da falta de sincronizao dos dados. Explicando melhor, com a importao, no existe nenhuma vinculao entre as tabelas no Microsoft Access e no SQL Server 2005. Em outras palavras, se os dados no SQL Server 2005 forem alterados, as alteraes no sero repassadas para as tabelas do Microsoft Access. A nica maneira de receber as alteraes excluir as tabelas no Microsoft Access e fazer a importao novamente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000723 Por isso no muito comum a utilizao de importao. Uma situao especfica em que pode ser aconselhada a importao quando algum (por exemplo, um auditor) precisa ter uma cpia dos dados em sua estao de trabalho ou notebook, para depois trabalhar nestes dados e realizar consultas especficas. Nesta situao, pode ser interessante fazer uma importao dos dados e trabalhar localmente. No caso de um notebook que ser utilizado, por exemplo, em casa, sem comunicao com a rede da empresa, a importao durante o horrio do expediente, enquanto o notebook est conectado rede, pode ser a nica soluo. Para que possamos fazer a importao, uma fonte ODBC deve ter sido previamente criada. Alm disso, deve ser uma fonte ODBC de um dos seguintes tipos: File DSN. Machine DSN. Se a importao tiver que ser feita por vrios usurios em vrias estaes ou notebooks diferentes, pode ser mais interessante utilizar uma fonte do tipo File DSN. Nesta situao, o administrador cria a fonte ODBC, a qual ser gravada em um arquivo e envia este arquivo, por disquete ou por e-mail, para todos os usurios que precisam fazer a importao dos dados. Estes, por sua vez, utilizam a fonte ODBC para proceder importao dos dados. Uma fonte ODBC do tipo File DSN gravada em um arquivo, o que facilita a distribuio da fonte para vrios usurios. J uma fonte ODBC do tipo Machine DSN somente pode ser utilizada na estao de trabalho onde foi criada. Antes de aprendermos a importar dados do SQL Server 2005 para o Microsoft Access, vamos criar uma fonte ODBC do tipo File DSN. Exerccio: Criar uma fonte ODBC do tipo File DSN, a qual aponta para a instncia SERVIDOR\SQL2005 e faz conexo com o Banco de Dados pubs. Vamos salvar esta fonte com o nome de Instancia2.dsn, na pasta C:\Meus documentos. Para criar a fonte ODBC Instancia2.dsn, siga os passos indicados a seguir: 1. Abra o gerenciador de fontes ODBC (Iniciar -> Programas -> Ferramentas administrativas -> Fontes de dados (ODBC)). 2. D um clique na guia DSN de arquivo. Ir surgir uma lista com as fontes do tipo File DSN j existentes. Por padro, so exibidas as fontes do tipo File DSN gravadas na pasta X:\Arquivo de Programas\Arquivos comuns\Data Sources\ODBC, onde X: o drive onde est instalado o Windows. 3. D um clique no boto Adicionar, para criar uma nova fonte ODBC. 4. Surge uma janela perguntando qual o tipo de Banco de Dados que voc deseja acessar. Selecione SQL Server, conforme indicado na Figura 12.14, e d um clique no boto Avanar. 5. Surge a janela para voc definir a pasta e o nome do arquivo onde sero salvas as informaes sobre a fonte que est sendo criada. Digite C:\Meus documentos\Instancia2.dsn, conforme indicado na Figura 12.15, e clique no boto Avanar. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7240000Curso Completo Figura 12.14 Definindo uma fonte para o SQL Server. Figura 12.15 Definindo a pasta e o nome da fonte do tipo File DSN. 6. Ser exibido um resumo sobre as informaes selecionadas at o momento. D um clique no boto Concluir. aberta a janela Criar uma nova fonte de dados para o SQL Server, conforme indicado na Figura 12.16. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000725 Figura 12.16 Definies para a fonte ODBC para o SQL Server. Nesta janela, devemos fornecer diversas informaes, tais como um comentrio para a fonte que est sendo criada e a instncia qual queremos que a mesma faa conexo. 7. No campo Descrio, digite Conexo ODBC com a instncia SQL2005. 8. Na lista Server, selecione o nome do Servidor SQL a ser utilizado. No nosso exemplo, SERVIDOR\SQL2005-06-11. A janela deve estar conforme indicado na Figura 12.17. Figura 12.17 Definies para a fonte ODBC. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7260000Curso Completo 9. D um clique no boto Avanar, seguindo para a prxima etapa. 10. Nesta etapa definimos o tipo de autenticao a ser utilizado. Como estamos nos conectando com SERVIDOR\SQL2005, certifique-se de que Com autenticao do SQL Server usando ident. de logon e senha inseridos pelo usurio esteja selecionada; para o campo Login ID digite sa e para o campo Password digite a senha para o usurio sa. 11. D um clique no boto Avanar para ir para a prxima etapa. Nesta etapa, vamos definir com qual Banco de Dados nos conectamos por padro, ao estabelecer a conexo com SERVIDOR\SQL2005. Clique na opo Alterar banco de dados padro para. A lista abaixo desta opo habilitada. Nesta lista, selecione Pubs. Em um servidor SQL Server podem existir diversos Bancos de Dados. Neste caso, estamos definindo a qual Banco de Dados a nossa fonte ODBC ir conectar-se. 12. D um clique no boto Avanar, seguindo para a ltima etapa. Nesta etapa, podemos definir diversas opes, tais como: O idioma para as mensagens do SQL Server. Se devemos ou no utilizar criptografia dos dados para aumentar a segurana. Se devemos utilizar as configuraes regionais tais como hora, data e formato para nmeros em geral e para valores monetrios. 13. Selecione as opes conforme indicado na Figura 12.18. Figura 12.18 Finalizando a configurao da fonte ODBC. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000727 14. D um clique no boto Concluir para finalizar a criao da fonte ODBC. Surge a janela Instalao do ODBC para Microsoft SQL Server, a qual informa as diversas opes selecionadas. Nesta janela, podemos clicar no boto Testar fonte de dados, para verificar se a conexo com o Banco de Dados est OK. 15. D um clique no boto Testar fonte de dados. Deve surgir uma janela indicando que o teste foi realizado com sucesso. 16. D um clique em OK para fechar a janela de teste. 17. D um clique em OK para fechar a janela de resumo. 18. Voc estar de volta janela do gerenciador de fontes ODBC. D um clique em OK para fech-lo. Agora que temos a nossa fonte DSN de Arquvio Instancia2.dsn, vamos criar um novo Banco de Dados do Microsoft Access, na pasta C:\Meus documentos, com o nome de pubs.mdb. Aps criarmos o Banco de Dados, vamos utilizar a fonte Instancia2.dsn, para importar os dados das tabelas do Banco de Dados pubs de SERVIDOR\SQL2005, para tabelas do Banco de Dados pubs.mdb do Microsoft Access. Exerccio: Importar os dados do Banco de Dados pubs da instncia SERVIDOR\SQL2005, do servidor SQL Server 2005, para o pubs.mdb do Microsoft Access, o qual ser criado neste exerccio. Procedimento 1: Criar o Banco de Dados C:\Meus documentos\pubs.mdb. Para criar o Banco de Dados C:\Meus documentos\pubs.mdb, faa o seguinte: 1. Abra o Microsoft Access (Iniciar -> Programas -> Microsoft Access). 2. Na janela que surge, d um clique na opo Banco de Dados vazio do Access, conforme indicado na Figura 12.19 e clique em OK. Surge a janela Novo arquivo de Banco de Dados. 3. Utilize a lista Salvar em, para navegar at a pasta C:\Meus documentos. No campo Nome do arquivo, digite pubs.mdb e, depois, d um clique no boto Criar. O Banco de Dados pubs.mdb criado e aberto no Microsoft Access. Por padro, vem a guia Tabelas selecionada. Observe que, como o banco acaba de ser criado, ainda no existe nenhuma tabela. Com isso criamos o Banco de Dados pubs.mdb, vazio. 4. Mantenha o Microsoft Access aberto. Procedimento 2: Importar as tabelas do Banco de Dados pubs, da instncia SERVIDOR\SQL2005, do SQL Server 2005. Para importar as tabelas do Banco de Dados pubs, de SERVIDOR\SQL2005, siga os passos indicados a seguir. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7280000Curso Completo Figura 12.19 Criando um novo Banco de Dados no Microsoft Access. 1. Estando com o Microsoft Access aberto e com o arquivo pubs.mdb carregado, selecione o seguinte comando: Arquivo -> Obter dados externos -> Importar. Surge a janela Importar, indicada na Figura 12.20. Figura 12.20 A janela Importar. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000729 Na lista Arquivos do tipo, devemos selecionar em qual formato esto os dados a serem importados para o Microsoft Access. Podemos importar dados de diversos formatos, como por exemplo de outros arquivos do Microsoft Access, de arquivos do Dbase, etc. Para importar arquivos do SQL Server, temos que utilizar uma fonte ODBC. 2. Na lista Arquivos do tipo, selecione ODBC Databases( ). Surge a janela Selecione a fonte de dados. Nesta janela, podemos selecionar uma fonte ODBC do tipo DSN de arquivo ou fonte de dados de mquina. 3. D um clique na guia DSN de Arquivo e, no campo Nome da fonte, digite C:\Meus documentos\Instancia2. dsn, conforme indicado na Figura 12.21. Figura 12.21 Utilizando a fonte Instancia2.dsn criada anteriormente. 4. D um clique no boto OK. Surge a janela Logon do SQL Server. Nesta janela, devemos fornecer o nome de usurio e senha para fazer a conexo com o servidor SQL Server 2005. 5. Digite sa para usurio e a senha para este usurio, conforme indicado na Figura 12.22. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7300000Curso Completo N O T A Figura 12.22 Informaes de login. 6. D um clique no boto OK. Surge a janela Importar Objetos, onde podemos selecionar quais tabelas sero importadas. 7. D um clique no boto Selecionar Tudo, para selecionar todas as tabelas. Sua tela estar conforme indicado na Figura 12.23. Figura 12.23 Selecionando todas as tabelas. Voc tambm pode selecionar as tabelas individualmente, caso no queira importar todas. Para ir selecionando as tabelas individualmente, mantenha a tecla Ctrl pressionada e v clicando nas tabelas a serem selecionadas. 8. D um clique no boto OK. Surge uma janela informando o progresso da importao. Uma vez encerrada a importao voc estar de volta ao Microsoft Access, onde j so exibidas as tabelas importadas, conforme indicado na Figura 12.24. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000731 N O T A Figura 12.24 Tabelas importadas com sucesso. Observe que as tabelas so importadas com o nome no seguinte formato: dono_da_tabela_Nome_da_Tabela Podemos renomear as tabelas caso seja necessrio. Para renomear uma tabela, clique com o boto direito do mouse na tabela e, no menu que surge, d um clique na opo Renomear. Digite o novo nome e pressione Enter. Ao importar as tabelas no definido nenhum tipo de relacionamento entre as tabelas. Caso voc precise definir relacionamentos do tipo Um para Vrios ou do tipo Um para Um, ter que fazer isso manualmente. Para definir relacionamentos no Microsoft Access, utilizamos o comando Ferramentas -> Relacionamentos. 9. Feche o Microsoft Access. ANEXANDO TABELAS NO MICROSOFT ACCESS Anexar diferente de importar. Ao anexarmos uma tabela, os dados no sero copiados para o Banco de Dados .mdb, do Microsoft Access. Ao anexarmos uma tabela do SQL Server 2005, o Microsoft Access cria uma referncia tabela que est sendo anexada, ao invs de copiar os dados da tabela. A referncia proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7320000Curso Completo contm as informaes necessrias para que o Banco de Dados do Microsoft Access possa acessar os dados da tabela do SQL Server 2005. Os demais elementos do Microsoft Access consultas, formulrios, relatrios, pginas, macros e mdulos podem acessar a tabela anexada, como se ela fosse uma tabela local do prprio Access. Uma das grandes vantagens da anexao que os dados mantm-se atualizados, ou seja, sempre que alteraes forem feitas nos dados no SQL Server, estas alteraes tornam-se imediatamente visveis no Microsoft Access, utilizando o gerenciador de tabelas vinculado, o qual acessado atravs do menu Ferramentas -> Utilitrios de Banco de Dados. Em contrapartida, se o servidor SQL Server estiver em um computador da rede e perdermos o acesso rede, tambm perderemos o acesso s tabelas anexadas. Questes de desempenho tambm devem ser consideradas, uma vez que, ao utilizarmos tabelas anexadas, poderemos ter uma grande quantidade de dados trafegando pela rede. Esta considerao torna-se mais importante em situaes de acesso remoto, onde o Banco de Dados do Microsoft Access e o servidor SQL Server esto ligados atravs de um link de WAN de baixa velocidade. Para aprendermos a anexar tabelas vamos criar um Banco de Dados chamado pubs_anexado.mdb, na pasta C:\Meus documentos. Depois iremos anexar as tabelas (o Microsoft Access 2000 chama de vincular) do Banco de Dados pubs, da instncia SERVIDOR\SQL2005. Para que possamos anexar tabelas, precisamos de uma fonte ODBC que faa a conexo com o Banco de Dados do SQL Server 2005, onde esto as tabelas a serem anexadas. Ns j temos esta fonte ODBC, que foi criada no exemplo anterior: C:\Meus documentos\Instancia2.dsn. Utilizaremos esta fonte no nosso exemplo prtico. Exerccio: Utilizando as orientaes do item anterior, crie um Banco de Dados chamado pubs_anexado.mdb, na pasta C:\Meus documentos. Ao criar este Banco de Dados, este ser, automaticamente, carregado no Microsoft Access. Mantenha aberto o Banco de Dados pubs_anexado.mdb. Para anexar tabelas do Banco de Dados pubs, da instncia SERVIDOR\SQL2005, ao banco de dados pubs_anexado.mdb do Microsoft Access, siga os passos indicados a seguir: 1. Estando com o Microsoft Access 2000 aberto, e com o arquivo pubs_anexado.mdb carregado, selecione o seguinte comando: Arquivo -> Obter dados externos -> Vincular tabelas. Surge a janela Vincular, indicada na Figura 12.25. Na lista Arquivos do tipo, devemos selecionar em qual formato esto os dados cujas tabelas sero anexadas ao Microsoft Access. Podemos anexar dados de diversos formatos, como por exemplo de outros arquivos do Microsoft Access, de arquivos do Dbase, etc. Para anexar arquivos do SQL Server, temos que utilizar uma fonte ODBC. 2. Na lista Arquivos do tipo selecione ODBC Databases( ). Surge a janela Selecione a fonte de dados. Nesta janela, podemos selecionar uma fonte ODBC do tipo Fonte de dados de Arquivo ou Fonte de dados de mquina. 3. D um clique na guia Fonte de dados de arquivo e, no campo Nome da fonte, digite C:\Meus documentos\Instancia2.dsn, conforme indicado na Figura 12.26. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000733 Figura 12.25 A janela Vincular. Figura 12.26 Utilizando a fonte Instancia2.dsn criada anteriormente. 4. D um clique no boto OK. Surge a janela Logon do SQL Server. Nesta janela, devemos fornecer o nome de usurio e senha para fazer a conexo com o servidor SQL Server 2005. 5. Digite sa para usurio e a senha para este usurio, conforme indicado na Figura 12.27. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7340000Curso Completo N O T A Figura 12.27 Informaes de login. 6. D um clique no boto OK. Surge a janela Vincular tabelas, onde podemos selecionar quais tabelas sero anexadas, ou no idioma do Microsoft Access, vinculadas. 7. D um clique no boto Selecionar Tudo, para selecionar todas as tabelas. Sua tela estar conforme indicado na Figura 12.28. Figura 12.28 Selecionando todas as tabelas. Voc tambm pode selecionar as tabelas individualmente, caso no queira anexar todas. Para ir selecionando as tabelas individualmente, mantenha a tecla Ctrl pressionada e v clicando nas tabelas a serem vinculadas. 8. D um clique no boto OK. Surge uma janela informando o progresso da vinculao. 9. Caso o Microsoft Access no consiga definir qual o relacionamento entre as tabelas, ser exibida uma janela solicitando que voc defina informaes adicionais para cada tabela na qual existem dvidas. No exemplo da Figura 12.29, o Microsoft Access est nos pedindo que informemos qual o campo, ou conjunto de campos, que formam a chave primria para a tabela Dependentes. Selecione os campos CPF e Nome, e d um clique no boto OK. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000735 N O T A N O T A Figura 12.29 Definindo uma chave primria composta por dois campos. 10. D um clique no boto OK. Podem surgir mais janelas pedindo que sejam definidas informaes adicionais. Se no informarmos todos os dados solicitados, pode acontecer de algumas tabelas no poderem ter seus dados atualizados atravs do Microsoft Access. Uma vez encerrada a anexao voc estar de volta ao Microsoft Access, onde j so exibidas as tabelas anexadas. Observe que o cone ao lado das tabelas anexadas a figura de um pequeno globo. Este cone o indicativo que permite diferenciar entre tabelas anexadas e as que fazem parte do Banco de Dados do Access. Agora voc pode utilizar as tabelas anexadas como se estas fizessem parte do banco de dados. Podemos criar consultas, formulrios, relatrios e demais objetos do Microsoft Access, os quais utilizam dados das tabelas anexadas. 11. Feche o Microsoft Access 2000. Ao clicar com o boto direito do mouse em uma tabela anexada e selecionar o comando Excluir, voc no ir excluir a tabela no Banco de Dados do Microsoft SQL Server 2005; voc ir apenas excluir as informaes de vinculao com a tabela. A tabela no SQL Server 2005 no ser afetada. Ao fazer esta excluso no Microsoft Access, voc receber uma mensagem semelhante indicada na Figura 12.30. Figura 12.30 Excluindo informaes de vnculo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7360000Curso Completo CRIANDO CONSULTAS NO MICROSOFT ACCESS, BASEADAS EM TABELAS DO SQL SERVER 2005 Vamos iniciar o nosso estudo, aprendendo a criar consultas baseadas em tabelas do SQL Server 2005, ou seja, criamos uma consulta normalmente no Microsoft Access, porm a consulta acessa dados diretamente em tabelas de um banco de dados do SQL Server 2005. importante diferenciar que, neste caso, no estamos acessando dados de uma tabela anexada, mas sim diretamente do SQL Server 2005. Para que uma consulta do Microsoft Access possa acessar tabelas no SQL Server 2005, precisamos configurar a propriedade SourceConnectStr (Seq de conexo da origem). Nesta propriedade informamos uma string para que a consulta consiga estabelecer uma conexo ODBC com o SQL Server 2005. Outro detalhe que devemos observar que, uma vez estabelecida a conexo, as tabelas do SQL Server sero acessadas com o nome no formato NomeDoSchemaDonoDaTabela.NomeDaTabela. Porm, no Microsoft Access, o ponto (.) no um caracter permitido como nome de tabela. Por isso, antes de executarmos a consulta, iremos criar aliases para as tabelas. Criaremos aliases sem o ponto. Vamos fazer um exemplo prtico. Exemplo: Criar um novo Banco de Dados chamado BuscaDadosNoSQL.mdb e salv-lo na pasta C:\Meus documentos. Neste Banco de Dados, criar uma consulta baseada nas tabelas Orders e Order Details do Banco de Dados Northwind da instncia SERVIDOR\SQL2005, do SQL Server 2005. Esta consulta deve retornar os campos OrderID, OrderDate, ShipCountry e um campo calculado que fornea o valor total do pedido. Este exerccio ser composto de dois procedimentos. No Procedimento 1, iremos criar o Banco de Dados BuscaDadosNoSQL.mdb. No Procedimento 2, iremos criar a consulta Relao de Pedidos a partir do SQL. Procedimento 1: Para criar o Banco de Dados BuscaDadosNoSQL.mdb, faa o seguinte: 1. Abra o Microsoft Access (Iniciar -> Programas -> Microsoft Access). 2. Na janela que surge, d um clique na opo Banco de Dados vazio do Access, e depois d um clique no boto OK. 3. Surge a janela Novo arquivo de Banco de Dados. Utilize a lista Salvar em, para navegar at a pasta C:\Meus documentos. No campo Nome do arquivo, digite BuscaDadosNoSQL.mdb. 4. D um clique no boto Criar. O Banco de Dados BuscaDadosNoSQL.mdb criado e aberto no Microsoft Access 2000. Por padro, vem a guia Tabelas selecionada. Observe que, como o banco acaba de ser criado, ainda no existe nenhuma tabela. Com isso, criamos o Banco de Dados BuscaDadosNoSQL.mdb. 5. Mantenha o Microsoft Access aberto. Procedimento 2: Para criar a consulta Relao de Pedidos, a partir do SQL, siga os passos indicados a seguir: 1. D um clique na guia Consultas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000737 N O T A 2. D um clique na opo Criar consulta, no modo Estrutura. Surge a janela Mostrar tabela, indicada na Figura 12.31. Como acabamos de criar o Banco de Dados BuscaDadosNoSQL.mdb, a lista de tabelas est vazia. Neste caso, faremos com que a nossa consulta busque dados no servidor SQL Server 2005. Figura 12.31 A janela Mostrar tabela, sem nenhuma tabela na lista. 3. D um clique no boto Fechar. A janela Mostrar tabela ser fechada e voc estar no modo estrutura para a criao de uma nova consulta. Para maiores informaes sobre a criao de views, consulte o Captulo 9. Para maiores informaes sobre a criao de consultas no Microsoft Access 2000, consulte a documentao do produto. Para fazer com que a consulta possa acessar tabelas em um Banco de Dados do servidor SQL Server, precisamos configurar as propriedades da consulta. Mais especificamente, temos que definir a propriedade Seq da conexo da origem. 4. Para acessar as propriedades da consulta, selecione o comando Exibir -> Propriedades. Surge a janela Propriedades da consulta, indicada na Figura 12.32. Nesta janela, podemos definir a propriedade Seq da conexo da origem. 5. Nesta propriedade temos que definir uma string de conexo ODBC para o Banco de Dados Nortwhind, da instncia SERVIDOR\SQL2005. Digite a seguinte string: ODBC;DRIVER=SQL Server;UID=sa;PWD=abc123 LANGUAGE=Portugus (Brasil);DATABASE=Northwind;WSID=SERVIDOR;APP=Microsoft Open Database Connectivity;SERVER=SERVIDOR\SQL2005; Uma string de conexo ODBC informa os parmetros necessrios para a conexo. Os parmetros so informados na forma de pares Nome_parmetro = valor e os pares so separados por ponto-e-vrgula (;). A nica exceo o primeiro parmetro ODBC , o qual no no formato de um par. Este parmetro informa que o que vem a seguir a definio de uma string de conexo ODBC. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7380000Curso Completo Figura 12.32 A janela de propriedades da consulta. Na Tabela 12.1, temos a descrio dos parmetros informados na string anterior. Parmetro Descrio DRIVER=SQL Server Este parmetro informa o driver que ser utilizado pela conexo ODBC. No caso, estamos informando que iremos conectar utilizando o drive para o SQL Server. UID Informa o nome do usurio, com o qual faremos a conexo com o servidor SQL Server. No nosso exemplo o usurio as. PWD Informa a senha para o usurio informado no parmetro UID. LANGUAGE Informa o idioma para as mensagens de retorno, caso acontea algum erro durante a conexo. DATABASE Define com qual Banco de Dados iremos nos conectar, uma vez que podemos ter diversos Bancos de Dados em uma instncia do SQL Server 2005. APP Informa que estamos utilizando ODBC. Connectivity Define a qual instncia iremos nos conectar. No nosso exemplo, estamos conectando com SERVIDOR\SQL2005. Tabela 12.1 Parmetros para a string de conexo ODBC. 6. Uma vez definida esta propriedade, feche a janela de propriedades da consulta. Para isso clique no boto Fechar (x), da janela de propriedades. Voc estar de volta consulta. Antes de testar se a nossa conexo ODBC est funcionando, vamos salvar a consulta. 7. Selecione o comando Arquivo -> Salvar, ou d um clique no boto Salvar (boto com o desenho de um disquete). 8. Surge uma janela pedindo que voc digite o nome da consulta. Digite Relao de Pedidos a partir do SQL. 9. D um clique no boto OK e pronto, a consulta salva. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000739 O prximo passo adicionar as tabelas Order e Order Details, para que possamos criar a consulta proposta. 10. Para adicionar tabelas, selecione o comando Consulta -> Mostrar tabela, ou d um clique no boto Mostrar tabela (boto com um sinal de + amarelo). exibida a janela Mostrar tabela, porm agora com a listagem das tabelas disponveis no Banco de Dados Northwind da instncia SERVIDOR\SQL2005, conforme indicado na Figura 12.33. Figura 12.33 Consulta no Microsoft Access acessando tabelas do SQL Server 2005. 11. D um clique duplo na tabela dbo.Orders para adicion-la consulta. 12. D um clique duplo na tabela dbo.Order Details para adicion-la consulta. 13. D um clique no boto Fechar para voltar consulta. As tabelas dbo.Orders e dbo.Order Details j estaro adicionadas. Conforme comentado anteriormente, o Microsoft Access no aceita um ponto no nome das tabelas. Se tentarmos criar uma consulta mantendo os nomes como esto, ao executarmos a consulta, receberemos a mensagem de erro indicada na Figura 12.34. Figura 12.34 Mensagem de erro devido ao ponto (.) no nome das consultas. No podemos renomear as tabelas no SQL Server 2005, at porque o dbo. significa o usurio dono da tabela. O que podemos fazer criar um alias (apelido) para a tabela. Este apelido vlido na consulta. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7400000Curso Completo 14. Para criar um apelido para a tabela Orders, clique com o boto direito no nome da tabela (dbo.Orders) e, no menu que surge, selecione Propriedades. Na janela que surge digite um alias, no nosso caso, digite Orders, conforme indicado na Figura 12.35. Aps digitar o alias, clique no boto Fechar (x), para voltar consulta. Figura 12.35 Criando um alias para a tabela Orders. 15. Repita o passo 14 e crie o alias OrderDetails para a tabela dbo.Order Details. A sua tela deve estar conforme indicado na Figura 12.36. Figura 12.36 J foram definidos aliases para as duas tabelas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000741 Agora precisamos definir o relacionamento entre as duas tabelas. As tabelas Orders e Orders Details so relacionadas atravs do campo OrderID. Ao criarmos um relacionamento em uma consulta, o relacionamento somente vlido na consulta, ou seja, no estaremos definindo um relacionamento no Banco de Dados Northwind da instncia SERVIDOR\SQL2005. Na verdade, ao criarmos um relacionamento, estamos utilizando uma clusula Join, no comando T-SQL que define a consulta. 16. Para criar o relacionamento entre as duas tabelas, na consulta, clique no campo OrderID na tabela Orders, mantenha o mouse pressionado e arraste o campo OrderID da tabela Orders sobre o campo OrderID da tabela Order Details. Ao largar o mouse, surge uma linha unindo os dois campos. Esta linha um indicativo do relacionamento, conforme indicado na Figura 12.37. Figura 12.37 Relacionamento definido na consulta. De agora em diante como se estivssemos construindo uma consulta no Microsoft Access. Vamos adicionar os campos OrderID, OrderDate e ShipCountry, alm de um campo calculado. 17. Adicione o campo OrderID da tabela Orders. Para fazer isso voc pode dar um clique duplo no campo OrderID ou pode arrast-lo da tabela Orders at a primeira coluna da consulta.Tambm adicione os campos OrderDate e ShipCountry, da tabela Orders. A consulta deve estar conforme indicado na Figura 12.38. 18. Agora vamos adicionar um campo calculado. Na coluna em branco, ao lado do campo ShipCountry, digite a seguinte frmula, na primeira linha: Total: ([Quantity]*[UnitPrice])*(1-[Discount]) A parte antes dos dois-pontos um alias para o campo calculado, e o que vm depois dos dois-pontos a frmula para o clculo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7420000Curso Completo Figura 12.38 Adicionando campos consulta. Esta frmula calcula o total para cada item do pedido. Para calcular o total do pedido, temos que agrupar os diversos itens de cada pedido e som-los. Para fazer este agrupamento, temos que exibir a linha de totais, na estrutura da consulta. 19. Para exibir a linha de totais, selecione o comando Exibir -> Total. Uma nova linha chamada Total aparecer abaixo da linha Tabela. 20. Agora vamos s configuraes finais. Na linha de totais selecione Agrupar Por, para os campos OrderID, OrderDate e ShipCountry. Para o campo calculado, selecione Soma. Estamos quase prontos para executar a consulta e observar os resultados obtidos. Antes de executarmos a consulta, vamos formatar os dados da coluna calculada. 21. Clique com o boto direito do mouse em qualquer linha da coluna calculada Total. No menu que surge, selecione Propriedades. aberta a janela de propriedades desta coluna. 22. Defina a propriedade Formato como sendo Moeda e a propriedade Casas decimais, como sendo 2, conforme indicado na Figura 12.39. 23. Clique no boto Fechar (x) da janela de propriedades para voltar estrutura da consulta. Classifique o campo OrderId em ordem crescente. Agora estamos em condies de executar a consulta e observar os resultados obtidos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000743 Figura 12.39 Definindo as propriedades do campo calculado. 24. Para executar a consulta, selecione o comando Consulta -> Executar, ou d um clique no boto Executar (boto com uma exclamao vermelha). Na Figura 12.40, temos os resultados da consulta. Figura 12.40 Resultados da consulta. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7440000Curso Completo N O T A 25. Para voc ter uma idia do comando SQL associado consulta, selecione o comando Exibir -> Modo SQL. Dever ser exibido o seguinte comando: SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry, Sum(([Quantity]*[UnitPrice])*(1-[Discount])) AS Total FROM dbo.Orders AS Orders INNER JOIN dbo.[Order Details] AS [Orde Details] ON Orders.OrderID = [Orde Details].OrderID IN
[ODBC;DRIVER=SQL Server;UID=sa;PWD=abc123;LANGUAGE=Portugus (Brasil);DATABASE=Northwind;WSID=SERVIDOR;APP=Microsoft Open Database Connectivity;SERVER=SERVIDOR\SQL2005;] GROUP BY Orders.OrderID, Orders.OrderDate, Orders.ShipCountry; Observe a utilizao da clusula IN. Esta clusula recebe dois parmetros. O primeiro um parmetro vazio ( ), no caso de estarmos utilizando uma conexo ODBC como o segundo parmetro. Observe que a string de conexo ODBC faz parte do comando SQL que retorna os dados, ou seja, a informao para acessar o Banco de Dados Northwind da instncia SERVIDOR\SQL2005 passada no prprio comando SQL. 26. Clique no boto Salvar para salvar a consulta. 27. Selecione o comando Arquivo -> Fechar para sair da consulta. 28. Feche o Microsoft Access. Neste tpico procurei mostrar algumas maneiras de acessar os dados do SQL Server 2005 de dentro do Microsoft Access. Falar sobre o desenvolvimento de aplicaes, utilizando o Microsoft Access como Front End e o SQL Server 2005 como Back End, assunto para um livro inteiro. Alis um dos projetos nos quais estou pensando com carinho. DESENVOLVIMENTO EM: ACESSANDO DADOS DO SERVIDOR SQL SERVER 2005 COM O NAVEGADOR E O PADRO XML PR-REQUISITOS Noes sobre os modelos de desenvolvimento. Conhecimento bsico de ODBC e OLE DB. Noes sobre os comandos bsicos da linguagem T-SQL. Saber utilizar o SQL Server Management Studio. METODOLOGIA Apresentao dos passos necessrios para a configurao e acesso aos dados do servidor SQL Server 2005 atravs do navegador. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000745 N O T A TCNICA Utilizao do SQL Server Management Studio para configurar o acesso via navegador, aos dados do SQL Server 2005 e utilizao do navegador para testar o acesso. Uma das grandes novidades do SQL Server 2000 e que tambm est disponvel no SQL Server 2005 a possibilidade de acessarmos dados do SQL Server 2005, utilizando apenas um navegador. Antes que isto seja possvel, precisamos fazer algumas configuraes para habilitar o acesso aos dados, atravs do navegador. Por padro, os dados so retornados no formato XML. Falaremos um pouco sobre XML na parte final deste captulo. Para configurar o acesso a um Banco de Dados do SQL Server 2005, atravs do navegador, empregamos o utilitrio IIS Virtual Directory Management for SQL Server. Este utilitrio permite a criao de um diretrio virtual no servidor IIS, pasta esta que faz conexo com o servidor SQL Server. Para que possamos configurar esta pasta virtual, as seguintes condies devem ser atendidas: O servidor deve estar rodando Windows NT 4.0, Windows 2000 Server ou Windows Server 2003. Para o caso do Windows NT, temos algumas condies adicionais. Deve estar instalado o IIS 4.0 ou superior ou o PWS (Personal Web Server), para o caso do Windows NT Workstation 4.0. Tambm deve estar instalado o MMC (Microsoft Management Console) 1.2. Esta verso do MMC instalada com o Option Pack 4.0 ou com o SQL Server 2005. Para computadores rodando Windows 2000 Professional, deve ser instalado o pacote de ferramentas administrativas Adminpak.msi. Este arquivo pode ser encontrado na pasta %Windir%\System32 de computadores onde est instalado o Windows 2000 Server. Onde %Windir% deve ser substitudo pela pasta onde est instalado o Windows 2000 Server. Este arquivo tambm pode ser encontrado na pasta I386 do CD de instalao do Windows 2000 Server. Para instalar este pacote de ferramentas administrativas, s localizar o arquivo Adminpak.msi, clicar com o boto direito do mouse no arquivo e, no menu de opes que surge, clicar em Instalar. Conforme citado anteriormente, precisamos usar o utilitrio IIS Virtual Directory Management for SQL Server, para criar um diretrio virtual no IIS. Este utilitrio cria uma associao entre o diretrio virtual do IIS e um Banco de Dados de uma instncia do SQL Server 2005. Para acessar este utilitrio empregamos o seguinte caminho: Iniciar -> Programas -> SQLXML 4.0 -> Configure IIS Support. O nome do servidor IIS e o nome do diretrio virtual devem ser informados como parte da URL de acesso. As informaes definidas para o diretrio virtual (como login, senha e permisses de acesso) so utilizadas para estabelecer uma conexo com um Banco de Dados de uma instncia do servidor SQL Server 2005 e executar uma consulta. Atravs do navegador, fazer os seguintes tipos de acessos: Acessar diretamente uma tabela do Banco de Dados. Neste caso, a URL deve incluir um nome virtual do tipo dbobject. Veremos exemplos mais adiante. URL Uniform Resource Locattor nada mais do que um endereo da Web. Por exemplo: http:www.microsoft.com/windows2000/ library/default.asp uma URL. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7460000Curso Completo Executar um arquivo de modelo. Um arquivo de modelo um documento no formato XML, no qual temos um ou mais comandos SQL. Quando um arquivo de modelo especificado em uma URL, os comandos SQL armazenados no arquivo de modelo so executados. Tambm podemos especificar uma consulta SQL (normalmente um comando SELECT), diretamente na URL, porm esta no uma prtica recomendada por questes de segurana. CONFIGURANDO O ACESSO ATRAVS DO NAVEGADOR Agora chega de conversa e vamos ver este acesso via navegador funcionar na prtica. O primeiro passo criar um diretrio virtual associado a um Banco de Dados de uma instncia do SQL Server 2005. Vamos fazer isto no exemplo a seguir. Exemplo: Criar um diretrio virtual chamado NorthwindSQL, o qual associado ao Banco de Dados Northwind, da instncia SERVIDOR\SQL2005. Para criar o diretrio virtual NorthwindSQL, faa o seguinte: 1. Antes de configurarmos o diretrio virtual NorthwindSQL no IIS, precisamos criar a estrutura de pastas que d suporte a este diretrio virtual. Esta estrutura de pastas e subpastas deve ser criada abaixo do diretrio raiz do servidor IIS. Por padro, o diretrio raiz D:\Inetpub\wwwroot. Caso o seu diretrio esteja em outra unidade, troque o D:\ pela unidade correspondente. Dentro da pasta wwwroot vamos criar uma pasta chamada NorthwindSQL. Dentro da pasta NorthwindSQL vamos criar duas subpastas schema e template, conforme indicado na Figura 12.41. Figura 12.41 Criando a estrutura de pastas e subpastas para o diretrio virtual. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000747 N O T A Figura 12.42 O console IIS Virtual Directory Management for SQL Server. 3. Clique no sinal de + ao lado do nome do servidor. No meu exemplo, o nome Servidor. 4. Surgem as opes Site da Web padro e Site de administrao na Web. Clique com o boto direito do mouse na opo Site da Web padro. No menu que surge, aponte para Novo -> Virtual Directory. Ao clicar em Virtual Directory, surge a janela Propriedades de New Virtual Directory, indicada na Figura 12.43. 5. Na guia General, vamos definir o nome do diretrio virtual (NorthwindSQL) e a pasta qual est associado o diretrio virtual (C:\InetPub\wwwroot\NorthwindSQL), conforme indicado na Figura 12.44. Mais uma vez quero lembrar que C:\Inetpub\wwwroot a localizao do diretrio raiz, para o servidor IIS que eu estou utilizando. Caso voc esteja utilizando outras configuraes, utilize-as no lugar das configuraes apresentadas neste exemplo. 6. D um clique na guia Security. Nesta guia, temos que fornecer informaes sobre o tipo de autenticao que ser utilizado e o nome e senha do usurio para conexo com o servidor SQL Server. 7. Selecione SQL Server, na opo Account Type, digite sa no campo User Name e a senha do usurio sa, no campo Password, conforme indicado na Figura 12.45. Uma vez criada esta estrutura de pastas e subpastas, vamos criao do diretrio virtual. 2. Abra o utilitrio Configure IIS Support (Iniciar -> Programas -> SQLXML 4.0 -> Configure IIS Support). Surge o console IIS Virtual Directory Management for SQLXML 4.0, indicado na Figura 12.42. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7480000Curso Completo Figura 12.43 Criando um novo diretrio virtual. Figura 12.44 Definindo o nome e a localizao. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000749 Figura 12.45 Informaes de login. 8. D um clique na guia Data Source. 9. Nesta guia definimos a instncia do SQL Server 2005 associada com o diretrio virtual que est sendo criado e dentro da instncia qual o Banco de Dados. Para instncia, vamos selecionar SERVIDOR\SQL2005 e, para o Banco de Dados, Northwind, conforme indicado na Figura 12.46. 10. D um clique na guia Settings. 11. Nesta guia, selecione todas as opes: Allow URL Queries. Allow template queries. Allow XPath. Allow POST. 12. Clique na guia Virtual Names. Nesta guia, associaremos nomes s subpastas template e schema. 13. Clique em New virtual name. No lado direito voc define as opes para o novo nome virtual que est sendo criado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7500000Curso Completo Figura 12.46 O Banco de Dados Northwind da instncia SERVIDOR\SQL2005. 14. No campo Name, digite template. Na lista type, selecione template. No campo Path, digite: C:\Inetpub\wwwroot\NorthwindSQL\template. Sua janela deve estar conforme indicado na Figura 12.47. 15. D um clique no boto Save. O nome template j aparece na lista da esquerda. 16. Clique em New virtual name. No lado direito voc define as opes para o novo nome virtual que est sendo criado. 17. No campo Name, digite dbobject. Na lista type, selecione dbobject. 18. D um clique no boto Save. 19. D um clique no boto OK para salvar as configuraes e criar o diretrio virtual NorthwindSQL. Feito isso o nosso diretrio virtual ter sido criado, conforme indicado na Figura 12.48. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000751 Figura 12.47 Associando nomes virtuais pasta template. Figura 12.48 O diretrio virtual NorthwindSQL. 20. Feche o console IIS Virtual Directory Management for SQL Server. No prximo tpico, iremos testar o acesso aos dados do SQL utilizando o navegador. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7520000Curso Completo TESTANDO O ACESSO AOS DADOS DO SQL SERVER 2005, ATRAVS DO NAVEGADOR Aps termos configurado um diretrio virtual associado com o Banco de Dados Northwind, podemos testar o acesso aos dados utilizando HTTP. O nosso diretrio virtual chamado NorthwindSQL, conforme configurado no exemplo anterior. Lembre que estou utilizando um computador com o nome de Servidor. Se voc estiver utilizando um nome diferente, substitua pelo nome correspondente. Outro detalhe a ser observado que os dados so retornados no formato XML Extensible Markup Language. No prximo item, falaremos um pouco sobre este padro que vem sendo utilizado cada vez mais na indstria de informtica. Para testar o acesso via HTTP, abra o Internet Explorer e digite o seguinte endereo: http://servidor/NorthwindSQL?sql=SELECT * FROM Orders FOR XML AUTO&root=root Este endereo envia o comando SELECT * FROM Orders para o Banco de Dados Northwind, associado com o diretrio virtual NorthwindSQL. Os dados so retornados no formato XML, conforme indicado na Figura 12.49. Figura 12.49 Dados no formato XML. Ainda no conhecemos o formato XML, mas posso adiantar que um documento no formato XML contm apenas dados, sem nenhuma informao a respeito do formato de exibio dos dados. A seguir, temos a parte inicial do documento, onde retornado o registro para o Pedido 10248: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000753 <Orders OrderID=10248" CustomerID=VINET EmployeeID=5" OrderDate=1996-07-04T00:00:00" RequiredDate=1996-08-01T00:00:00" ShippedDate=1996-07-16T00:00:00" ShipVia=3" Freight=32.38" ShipName=Vins et alcools Chevalier ShipAddress=59 rue de lAbbaye ShipCity=Reims ShipPostalCode=51100" ShipCountry=France /> Tambm temos a clusula FOR XML, a qual faz com que os dados sejam retornados no formato XML. Podemos executar, praticamente, qualquer comando SELECT, com todas as suas clusulas. Por exemplo, o endereo a seguir retorna apenas os pedidos da tabela Orders, em que o pas Brazil: http://servidor/NorthwindSQL?sql=SELECT * FROM Orders WHERE ShipCountry=Brazil FOR XML AUTO&root=root Alterando um pouco o endereo, podemos ordenar o resultado pela data do pedido, isto , pelo campo OrderDate http://servidor/NorthwindSQL?sql=SELECT * FROM Orders WHERE ShipCountry=Brazil Order By OrderDate FOR XML AUTO&root=root Vejam que apenas uma questo de utilizar o comando T-SQL correto. Ser que podemos utilizar uma clusula Join? A melhor maneira de descobrir tentando. Tente utilizar o seguinte endereo: http://servidor/NorthwindSQL?sql=SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry, SUM(([Quantity]*[UnitPrice])*(1-[Discount])) As Total FROM Orders INNER JOIN [Order Details] ON [Orders].[OrderID]=[Order Details].[OrderID] GROUP BY Orders.OrderID, Orders.OrderDate, Orders.ShipCountry HAVING (Orders.ShipCountry = Brazil) FOR XML AUTO&root=root A sintaxe para o nosso comando est correta e ir rodar sem problemas no SQL Server 2005. J no SQL Server 2000, se voc tentasse executar este comando, iria receber a seguinte mensagem de erro: MSSQLError HResult=0x80040e14 Source=Microsoft OLE DB Provider for SQL Server Description=GROUP BY and aggregate functions are currently not supported with FOR XML AUTO. A mensagem nos informa que a clusula GROUP BY e funes de agregao (no nosso exemplo utilizamos o SUM) no so suportadas com a clusula FOR XML AUTO, do SQL Server 2000. Esta foi uma das melhorias introduzidas pelo SQL Server 2005 em relao ao SQL Server 2000. Para que este comando funcione no SQL Server 2000, voc ter que alter-lo. Vamos modificar um pouco o comando; ao invs de agrupar e totalizar vamos, simplesmente, calcular o total de cada item de cada pedido. Para isso, utilize o seguinte endereo: http://servidor/NorthwindSQL?sql=SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry, (([Quantity]*[UnitPrice])*(1-[Discount])) As Total FROM Orders INNER JOIN [Order Details] ON [Orders].[OrderID]=[Order Details].[OrderID] WHERE Orders.ShipCountry = Brazil FOR XML AUTO&root=root A seguir, temos a parte inicial dos resultados obtidos: <Orders OrderID=10250OrderDate=1996-07-08T00:00:00ShipCountry=BrazilTotal=77 /> <Orders OrderID=10250OrderDate=1996-07-08T00:00:00ShipCountry=BrazilTotal=1261.4 /> <Orders OrderID=10250OrderDate=1996-07-08T00:00:00ShipCountry=BrazilTotal=214.20001 /> <Orders OrderID=10253OrderDate=1996-07-10T00:00:00ShipCountry=BrazilTotal=200 /> <Orders OrderID=10253OrderDate=1996-07-10T00:00:00ShipCountry=BrazilTotal=604.79999 /> <Orders OrderID=10253OrderDate=1996-07-10T00:00:00ShipCountry=BrazilTotal=640 /> proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7540000Curso Completo <Orders OrderID=10256OrderDate=1996-07-15T00:00:00ShipCountry=BrazilTotal=393 /> <Orders OrderID=10256OrderDate=1996-07-15T00:00:00ShipCountry=BrazilTotal=124.8 /> <Orders OrderID=10261OrderDate=1996-07-19T00:00:00ShipCountry=BrazilTotal=160 /> <Orders OrderID=10261"OrderDate=1996-07-19T00:00:00"ShipCountry=BrazilTotal=288" /> <Orders OrderID=10287"OrderDate=1996-08-22T00:00:00"ShipCountry=BrazilTotal=472.60001" /> Voc j deve ter observado que o navegador converte o endereo digitado para um formato diferente. Por exemplo, os espaos em branco so substitudos por %20. Isto acontece porque existem alguns caracteres especiais que no podem fazer parte de um endereo. Por isso, estes caracteres especiais so substitudos pelos correspondentes permitidos. Na Tabela 12.2, temos a descrio dos caracteres especiais e os correspondentes pelos quais so substitudos. Agora que j vimos como acessar dados do servidor SQL Server 2005, atravs de um navegador, vamos ver uma breve introduo sobre o padro XML. O tpico XML assunto para vrios livros. O SQL Server vem melhorando o suporte ao XML, desde o SQL Server 2000. Est fora do escopo deste livro tratar sobre o uso do XML no SQL Server 2005. No tpico a seguir, eu farei apenas uma breve apresentao do XML. No Books Online, voc encontra grande quantidade de informaes sobre o uso do XML no SQL Server 2005. Pesquise no tpico: Database Engine -> Using XML in SQL Server. Alm disso, certamente, sero publicados livros inteiros sobre o uso do XML no SQL Server 2005. UM POUCO SOBRE EXTENSIBLE MARKUP LANGUAGE XML Neste tpico vamos entender por que tanto se fala em XML e a que veio este, que alguns classificam como linguagem e outros como um padro. No endereo http://www-106.ibm.com/developerworks/ education/xmlintro/xmlintro-1-1.html, eu encontro trs definies que muito me agradam. A primeira diz que XML uma nova tecnologia para desenvolvimento de aplicaes Web. Em seguida, o texto afirma que XML um padro, que permite que o desenvolvedor crie suas prprias tags. E, por ltimo, temos que XML simplifica as transaes business-to-business na Web. Na seqncia, vamos procurar entender por que cada uma destas afirmaes verdadeira. Este caracter substitudo por este (em hexadecimal) Espao em branco %20 / %2F ? %3F % %25 # %23 & %26 Tabela 12.2 Caracteres especiais em endereos HTTP. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000755 PRIMEIRO UM POUCO DE HISTRIA Nos primeiros tempos da informatizao nas empresas, tnhamos, basicamente, aplicativos baseados em mainframe. O aplicativo e o Banco de Dados ficavam no mainframe, sendo que estes eram acessados atravs dos famosos terminais verdes que, com o advento da arquitetura Cliente/Servidor, vieram a ser, pejorativamente, chamados de terminais burros. O formato dos dados dependia do fornecedor do mainframe que, na grande maioria dos casos, era a IBM. Um dos formatos mais conhecidos o formato de arquivos seqenciais, que nada tem a ver com o formato dos Bancos de Dados Relacionais como o utilizado pelo SQL Server 2005. Este era um ambiente centralizado e com maiores facilidades de gerenciamento, segurana e controle. No final da dcada de 80 e incio dos anos 90, surgiu com toda a fora a arquitetura Cliente/Servidor. Junto com esta arquitetura, comearam a ser utilizados os chamados Bancos de Dados Relacionais. Podemos citar como exemplos de Bancos de Dados Relacionais os seguintes produtos: Microsoft SQL Server. ORACLE. DB2 da IBM. Sybase. Ingress. Neste momento, j comeavam a surgir algumas dificuldades de convivncia com diferentes formatos de dados. Muitas empresas comeavam a migrar sistemas de grande porte (mainframe) para a arquitetura Cliente/Servidor, porm, durante um bom tempo, as duas arquiteturas precisavam conviver. Em muitas empresas, a convivncia entre sistemas em mainframe e sistemas em arquitetura Cliente/Servidor de duas ou mais camadas perdura at hoje. Mas o problema comea a se agravar, pois hoje, na rede da empresa, temos dados nos mais diferentes formatos. So dados no formato de planilhas, de texto, de mensagens de e-mail, etc. Para piorar um pouco mais, com o advento da Internet, as empresas passaram a trocar informaes entre si, cada vez mais intensamente. Como possvel trocar informaes entre sistemas que utilizam diferentes formatos para os dados? Uma srie de solues foi proposta de maneira que os sistemas possam acessar dados em diversos formatos. A prpria Microsoft apresentou solues como ODBC e mais recentemente OLE DB. Aqui, temos o primeiro ponto onde o XML pode ser de grande valor. O padro XML pode vir a ser e eu at diria que est se tornando o formato comum para troca de dados entre diferentes sistemas e diferentes empresas. Neste ponto, comea a fazer sentido a afirmao colocada na introduo deste tpico: XML simplifica as transaes business-to-business na Web. Simplifica pelo fato de servir como um formato padro para os dados a serem trocados entre as diferentes empresas. Por exemplo, imagine uma empresa que vende pela Internet. O sistema que suporta o site de comrcio eletrnico desenvolvido no mainframe. Esta empresa precisa trocar dados com fornecedores e com empresas de carto de crdito, as quais, no nosso exemplo, utilizam sistemas mais modernos com formatos de dados diferentes do existente no mainframe. Antes do XML, fazer esta comunicao seria um grande desafio, talvez at invivel, devido aos custos de implementao. Com o XML, o site transforma os dados para o padro XML e os envia neste formato para os fornecedores e empresas de carto de crdito. Estas empresas recebem os dados no formato XML e convertem para o formato dos sistemas internos da empresa. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7560000Curso Completo Vejam que, desta forma, o XML funciona como uma espcie de formato universal para troca de dados entre diferentes sistemas. Trocar dados no formato .xml muito mais simples e prtico do que utilizar uma srie de gateways e drivers de converso de dados entre diferentes formatos. Que seja bem vindo o XML. O que acontece, hoje, que a maioria dos sistemas j tem a capacidade de exportar e importar dados no formato XML. Porm, uma tendncia que notamos que os sistemas esto sendo adaptados para trabalhar diretamente com dados XML. No momento em que escrevo este captulo, a Microsoft anuncia que a prxima verso do Office ter suporte a arquivos no formato XML. J pensou que maravilha, nada de arquivos proprietrios no formato .doc ou .xls, apenas arquivos .xml? Os documentos que definem o padro XML podem ser encontrados nos seguintes endereos: http://www.w3.org/XML. http://www.xml.com/axml/axml.html. Mas o padro XML no apenas um formato comum para troca de dados. Veremos o que mais XML no prximo item. O QUE MAIS TEM A OFERECER ESTE TAL DE XML? Em primeiro lugar, XML uma linguagem que utiliza tags, semelhante ao HTML. Um dos principais pontos a favor do XML o fato de ser extensvel (Extensible). Isto significa que no estamos limitados a um conjunto fixo de tags. Podemos criar tags de acordo com a nossa necessidade. Podemos utilizar XML para descrever a estrutura e a semntica de um conjunto de dados. Por exemplo, at hoje, no existem tags HTML para tipos especficos de dados, como por exemplo equaes matemticas (smbolos de integral, derivada, matriz, etc.), escalas musicais (sustenidos, claves de sol, etc.), frmulas qumicas, etc. Com HTML, estamos limitados s tags que fazem parte da definio original da linguagem. Por exemplo, para representar uma equao matemtica, temos que utilizar uma figura, pois no existe uma tag para o smbolo da integral ou da derivada. Com XML, podemos ir um muito mais adiante. No existe a tag que precisamos, ento vamos cri-la. neste ponto que o XML comea a se diferenciar das demais linguagens. Podemos utilizar XML para definir tags associadas com um domnio especfico. Por exemplo, as operadoras de carto de crdito podem se reunir e criar um conjunto especfico de tags para troca de informaes no formato XML, em operaes de comrcio eletrnico na Web. Um documento HTML contm informaes sobre como o seu contedo deve ser exibido, e facilmente interpretado por um navegador que foi desenvolvido para entender HTML. J seres humanos dificilmente conseguem extrair alguma informao til de um documento no formato HTML. J um documento no formato XML no contm qualquer informao sobre como os dados devem ser exibidos ou formatados; ao invs disso, o documento XML contm os dados e informaes sobre a estrutura dos dados. Ao lermos um documento XML conseguimos extrair informaes teis do documento. A estrutura dos dados est descrita no prprio documento XML. Tags de documentos XML so mais amistosas. Por exemplo, considere o seguinte trecho do exemplo anterior: <Orders OrderID=10253OrderDate=1996-07-10T00:00:00ShipCountry=BrazilTotal=604.79999 /> <Orders OrderID=10253OrderDate=1996-07-10T00:00:00ShipCountry=BrazilTotal=640 /> proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 12 ACESSANDO DADOS COM O MICROSOFT ACCESS E O PADRO XML Curso Completo0000757 Podemos identificar que temos informaes sobre o campo OrderID da tabela Orders. Na seqncia, tambm podemos identificar os campos OrderDate, ShipCountry e Total. Veja que as tags XML so mais amistosas do que as tradicionais tags HTML, como por exemplo <TD>, <TR> <STRONG>, etc. Voc deve estar pensando que, em contrapartida, os dados no formato XML no so muito apresentveis. Para resolver esta situao, podemos associar uma folha de estilo a um documento XML. As folhas de estilo fornecem um layout mais profissional a um documento XML. Podemos utilizar a tecnologia de CSS (Cascading Style Sheets), para formatar os dados de um documento XML. Com isto, obtemos um efeito interessante. Observe que estamos separando o contedo (que est no documento XML) da apresentao (que est definida no arquivo .css). Com isso podemos, facilmente, apresentar os dados de diferentes maneiras para diferentes usurios, simplesmente associando diferentes folhas de estilo. Em resumo, XML extensvel, ou seja, podemos criar as tags que forem necessrias e pode ser utilizado como um formato padro para troca de informaes, uma vez que um documento XML contm, alm dos dados, informaes sobre a estrutura dos dados, o que facilita a leitura do documento, por qualquer sistema que entenda o padro XML. Uma coisa certa. o XML veio para ficar e cada vez mais solues so baseadas neste padro. Para se ter uma idia da fora do XML, empresas como Microsoft, IBM, Sun, ORACLE e outras gigantes da indstria de informtica abraaram este padro e anunciam produtos com suporte a XML. Com o SQL Server 2005 j temos suporte ao padro XML, conforme vimos neste captulo. Aprendemos a retornar dados no formato XML, utilizando o navegador. XML assunto para um livro inteiro. Quem sabe um Curso Completo de XML. Com os links do incio do captulo, voc pode ter uma boa idia do que capaz o padro XML. CONCLUSO Neste captulo, tratamos de mais alguns assuntos relacionados com o desenvolvimento de aplicaes com base nos dados de um servidor SQL Server 2005. Iniciamos o captulo aprendendo diferentes maneiras de utilizar o Microsoft Access para interagir com os dados do SQL Server 2005. Aprendemos a importar dados do SQL Server 2005 para tabelas do Microsoft Access, utilizando fontes ODBC. Vimos que a vantagem deste mtodo que os dados esto disponveis localmente, e a grande desvantagem que no existe uma sincronizao dos dados. Quando dados so alterados ou novos registros so inseridos no Banco de Dados do SQL Server 2005, estas alteraes no so sincronizadas com as tabelas importadas no Microsoft Access. Outro mtodo que aprendemos foi anexar tabelas do SQL Server 2005 utilizando fontes ODBC. Com a anexao os dados continuam no servidor SQL Server 2005 e podem ser facilmente sincronizados. A desvantagem que posso perder o acesso aos dados se o servidor estiver fora do ar ou houver algum problema de comunicao com a rede. Depois, aprendemos a criar consultas baseadas, diretamente, em tabelas do SQL Server 2005. Para isso configuramos uma string ODBC de conexo com o SQL Server 2005. Em seguida, aprendemos a configurar um diretrio virtual associado com um Banco de Dados de uma instncia do SQL Server 2005. Para isso empregamos o utilitrio Configure IIS Support. Criamos um proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7580000Curso Completo diretrio virtual chamado NorthwindSQL e depois testamos o acesso aos dados do SQL Server 2005, utilizando o navegador. Vimos que os dados so retornados no formato XML. Encerramos o captulo falando um pouco sobre o que o XML e quais as caractersticas do XML que o tornam um padro de grande aceitao para a criao de aplicaes de comrcio eletrnico e troca de dados em geral. No prximo captulo voc aprender sobre o .NET (ou Framework .NET, como tambm conhecida esta nova tecnologia/modelo de desenvolvimento de aplicaes) e sobre a criao de pginas ASP.NET que fazem conexo com dados do SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Captulo 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7600000Curso Completo INTRODUO Na rea de desenvolvimento de aplicaes, sem dvida, a grande novidade do SQL Server 2005, em relao s verses anteriores, foi a integrao entre o SQL Server 2005 e o .NET. Com o SQL Server 2005 voc pode criar funes de usurio, stored procedures e outras rotinas, facilmente, usando a sua linguagem de programao preferida e depois utilizar estas rotinas no SQL Server 2005. Este captulo dedicado a explicar o que o Framework .NET, qual a sua proposta, como instalar o Framework .NET e os demais componentes de suporte ao desenvolvimento de aplicativos no .NET. Tambm mostrarei como criar pginas ASP.NET, as quais acessam dados de Bancos de Dados do SQL Server 2005. No Captulo 15 mostrarei como criar funes usando as linguagens do .NET e como utilizar estas funes no SQL Server 2005. Neste captulo apresentarei, em detalhes, o.NET, o qual tambm chamarei de Framework .NET. Mostrarei qual a proposta da Microsoft com mais esta iniciativa. Iniciarei o captulo com uma viso geral, sobre as propostas do Framework .NET. Em outras palavras: A que veio e a que se prope o .NET?. Vou mostrar quais os principais componentes e quais solues pode nos oferecer o Framework .NET. Antes de entrar nos detalhes sobre cada elemento e das funes de cada elemento importante entendermos como este novo modelo poder ajudar no desenvolvimento de software e, em conseqncia, ajudar as empresas a terem sistemas melhores, mais rpidos, mais econmicos, mais seguros e mais sintonizados com as reais necessidades de cada empresa. Uma vez devidamente apresentado o Framework .NET, falarei sobre os modelos atuais de desenvolvimento e utilizao de software. Mostrarei quais os problemas do modelo atual e quais as solues propostas pelo Framework .NET para estes problemas. Um novo paradigma de desenvolvimento tem que mostrar que capaz de resolver, se no todos, pelo menos a grande maioria dos problemas dos modelos atualmente existentes. J passou o tempo, se que um dia esta prtica foi aceitvel, de mudar de tecnologia somente para estar atualizado com o mercado. Aprender novas tcnicas e ferramentas envolve tempo, um longo aprendizado e, principalmente, pesados investimentos financeiros. Para que uma empresa esteja disposta a fazer todos estes investimentos, o Framework .NET ter que demonstrar que realmente capaz de apresentar solues para os grandes problemas dos modelos atuais de desenvolvimento de software. Em seguida passaremos a apresentar os principais elementos que compem o Framework .NET: CLR Common Language Runtime metadata Assemblies Linguagens habilitadas ao .NET Common Type System Interoperabilidade entre diferentes linguagens Web Services Os servidores .NET ADO.NET proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000761 Apresentarei, de uma maneira genrica, o papel de cada um destes componentes no Framework .NET. Apresentarei uma viso geral de cada um deles, para que o leitor possa ter uma boa idia do Framework .NET e de seus principais componentes, bem como da funo de cada um. Na segunda metade do captulo vou apresentar mais alguns detalhes sobre o elemento principal, o motor do Framework .NET: CLR Common Language Runtime. O CLR o componente principal do Framework .NET. Apresentarei mais alguns detalhes sobre a estrutura de uma aplicao .NET e a maneira como os diversos elementos so empacotados, atravs do uso de assemblies. Vou apresentar informaes detalhadas sobre o uso de assemblies, os benefcios da utilizao dos assemblies, questes de segurana, questes sobre verso e utilizao de um cache de assemblies para acelerar a execuo dos programas .NET. Falarei um pouco sobre as linguagens habilitadas ao .NET, a gerao do cdgio MSIL, a compilao do cdigo MSIL para cdigo nativo JIT Compile e a execuo deste cdigo. Estes aspectos so importantes para que o amigo leitor possa entender a maneira como as aplicaes .NET so executadas e gerenciadas pelo CLR. Detalharei o conceito e a funo dos assemblies. Mostrarei que estes formam os blocos bsicos para a construo de aplicaes .NET. Tambm mostrarei quais os componentes de um assembly, com destaque para a importncia do manifesto contido em um assembly. Na seqncia apresentarei mais detalhes sobre o CTS Common Type System. Voc ver quais os principais benefcios de termos um sistema de tipos comum a todas as linguagens habilitadas ao .NET. Tambm falarei sobre as diferenas entre value types e reference types. Tambm apresentarei as principais classes e tipos da Biblioteca de Classes do Framework .NET (.NET Framework Class Library). Veremos os tipos bsicos, bem como as principais classes disponveis para utilizao em programas criados com o Framework .NET. Na seqncia do captulo faremos uma reviso dos conceitos bsicos de orientao a objetos. Uma vez que o Framework .NET fortemente baseado em conceitos de orientao a objetos, tambm a linguagem C#, que uma das novidades do Framework .NET, baseada nos conceitos de orientao a objetos. Por isso bastante oportuno que revisemos os seguintes conceitos: O que um objeto? Mtodos e propriedades O que so classes? Herana Polimorfismo e funes virtuais Encapsulamento e visibilidade Todo o Framework .NET foi criado com base nos conceitos de Orientao a Objetos. A linguagem C# totalmente orientada a objetos, onde tudo so classes. Claro que alguns puristas poderiam dizer que o C# no completamente orientado a objetos porque no suporta herana mltipla. Na verdade veremos que o C# foi projetado para conciliar os benefcios da orientao a objetos e ao mesmo tempo proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7620000Curso Completo ser simples e prtico. Para isso foram eliminadas algumas caractersticas da orientao a objetos, caractersticas estas que mais causavam problemas do que propriamente forneciam solues. Uma vez que o Framework .NET tenha sido devidamente apresentado e explicado, mostrarei como utilizar o ASP.NET, para criar pginas que acessam, editam e alteram dados em tabelas de um Banco de Dados do SQL Server 2005. Voc ver que o uso do ASP.NET to ou mais fcil do que o uso do ASP 3.0 (visto no Captulo 11) e que o ASP.NET apresenta dezenas de novos recursos e facilidades. Seguindo a metodologia utilizada nos demais captulos, mostrarei, atravs de exemplos prticos, os principais comandos do ASP.NET, para a conexo com Bancos de Dados do SQL Server 2005. DESENVOLVIMENTO EM: O PRIMEIRO CONTATO COM O FRAMEWORK .NET PR-REQUISITOS Conhecimento bsico do Windows 2000 Server ou Windows Server 2003 e do SQL Server 2005. METODOLOGIA Apresentao do Framework .NET. Definir exatamente o que o Framework .NET no uma tarefa das mais simples. Como no sou muito afeito a definies formais, vou mostrar qual a proposta do Framework .NET, quais os componentes e qual a funo de cada componente. Em primeiro lugar podemos afirmar que, com a iniciativa .NET, a Microsoft est mudando radicalmente o modelo de desenvolvimento e utilizao de software. No livro Introducint .NET, da editora Wrox (www.wrox.com), encontramos duas afirmaes interessantes sobre o Framework .NET: uma mudana to grande ou at maior do que a mudana do DOS para o Windows; O Framework .NET foi todo projetado j tendo a Internet como objetivo, diferente de outras plataformas que foram adaptadas para a Internet, medida que a rede mundial crescia em importncia. APRESENTANDO O CONCEITO DE SERVIOS WEB SERVICES Realmente a mudana bastante grande. Programadores, analistas e gerentes de projeto precisaro de muito estudo e tempo para absorver os conceitos desta nova plataforma. Tambm verdade que, desde a sua concepo, o .NET foi projetado para a Internet. Em muitas publicaes especializadas aparece a seguinte afirmao: A iniciativa .NET a viso da Microsoft de um mundo, onde o software se transforma em servios, na verdade pequenos componentes que podem ser utilizados por qualquer aplicao. Por exemplo, um software de uma empresa brasileira pode utilizar um servio que est residente em um servidor de uma empresa do Japo, desde que tenha permisses para isso. Este servio pode oferecer, por exemplo, a funcionalidade para validao de uma transao via carto de crdito. Um dispositivo mvel, como um celular WAP ou um Handled, pode utilizar um servio de cotao de aes de um servidor da bolsa de valores de Londres. E como todos estes componentes fazem para se comunicar? Evidentemente que atravs da Internet. Por isso a Internet vista como ponto principal do projeto .NET. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000763 Conforme veremos mais adiante, estes servios, que podem ser acessados via Internet ou atravs de qualquer intranet, so chamados de Web Services. Ao invs de programas monolticos, em que toda a funcionalidade necessria est contida no cdigo do prprio programa, construiremos programas como se fosse um jogo de montar. As diversas funcionalidades necessrias ao programa podem ser oferecidas atravs do acesso a servios j implementados. Na Figura 13.1 temos uma pequena ilustrao deste conceito. Figura 13.1 Um programa que utiliza diversos servios. No site da empresa www.minhaempresa.com, criamos, por exemplo, uma pgina ASP.NET para venda de livros. O preo dos livros est em dlares e deve ser convertido, para a moeda do pas do cliente, no momento da compra. No exemplo da Figura 13.1, a pgina ASP.NET utiliza um Web Service do servidor www.cotacoes.com, para obter a cotao atualizada do dlar em relao moeda do pas do cliente. A pgina ASP.NET recebe esta informao, faz os clculos necessrios e exibe para o cliente. O prximo passo efetivar a venda. Agora o cliente digita o nmero do seu carto de crdito. Para validar o nmero do carto de crdito do cliente, acessado um outro Web Service, o qual est instalado no servidor www.validacao.com. Com esta arquitetura, a criao de software fica bastante simplificada, uma vez que podemos agregar ao nosso programa funcionalidades disponibilizadas atravs de Web Services que esto instalados em qualquer servidor da Internet. Desta maneira somente precisamos criar o cdigo que especfico do nosso programa. Isto reaproveitamento de cdigo ou como preferem os puristas: reutilizando cdigo, um dos pilares da Programao Orientada a Objetos. Como diferentes Web Services, criados por diferentes empresas, podero se comunicar e trocar informaes? Esta comunicao possvel, porque todo programa criado para a plataforma .NET utiliza um padro para troca de informaes. No caso temos dois padres: INTERNET www.validacao.com www.cotacoes.com www.minhaempresa.com Criamos uma pgina ASP.NET que utili- za o servio de validao de nmero de carto de crdito que est no servi- dor www.validacao.com e tambm utili- za o servio que fornece cotaes atualizadas de diversas moedas e que est no servidor www.cotacoes.com. Oferece um Web Service para validao do nmero de carto de crdito. Oferece um Web Service com cotaes atualizadas de diversas moedas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7640000Curso Completo Para o formato dos dados, o Framework .NET utiliza XML: Extensible Markup Language. Conforme veremos mais adiante, o XML vem ganhando fora como um padro para troca de informaes na Internet, principalmente para troca de informaes entre empresas em sites de comrcio eletrnico. No Captulo 12 voc encontra uma breve introduo ao XML. Voc tambm encontra livros inteiros s sobre o uso do XML no SQL Server 2005. Como protocolo de transporte, o Framework .NET utiliza o SOAP: Single Object Access Protocol. Com SOAP podemos fazer com que toda a comunicao entre diferentes Web Ser- vices e demais componentes de um programa seja feita atravs do protocolo padro da Internet que o HTTP. O SOAP no um protocolo criado pela Microsoft para ser utilizado pelo .NET. O SOAP um padro da indstria, sendo utilizado por produtos de diversas empresas, tais como IBM, Sun e ORACLE. Pode parecer que no existe nada de novo nesta abordagem, pois tecnologias para criar programas a partir de componentes prontos j existem h um bom tempo: COM+, CORBA, etc. Porm a grande vantagem dos Web Services, no Framework .NET, que estes podem ser acessados, facilmente, atravs da utilizao de um protocolo padro: SOAP, e trocando informaes em um formato padro: XML. Esta abordagem torna a criao e utilizao dos Web Services uma tarefa muito mais simples do que, por exemplo, a criao de componentes COM+ ou CORBA, os quais utilizam formatos de dados e protocolos de comunicao proprietrios e de difcil implementao. APRESENTANDO O CLR COMMON LANGUAGE RUNTIME O CLR um ambiente de execuo, poderamos at dizer que o Corao do .NET, o qual d suporte a todas as linguagens de programao habilitadas para o .NET. Ao instalarmos o Microsoft .NET Frame- work SDK, temos disponveis as seguintes linguagens: VB.NET (Visual Basic .NET) C# (leia-se C Sharp) ASP.NET Jscript.NET O Runtime (ambiente de execuo) o ambiente que d suporte execuo das aplicaes .NET. Quando um programa .NET executado, todo o controle do programa feito atravs do CLR. Para aplicaes anteriores, desenvolvidas utilizando a tecnologia COM/COM+, o programador era responsvel por inserir no cdigo do programa uma srie de funes necessrias ao correto funcionamento do programa, como por exemplo o gerenciamento de memria, criao e destruio de objetos e assim por diante. A codificao destas funes no era uma tarefa fcil, o que exigia muito tempo do programador, alm de conhecimentos avanados. Com aplicaes .NET, todas estas funes so executadas pelo CLR, ou seja, o programador no precisa preocupar-se com a codificao destas funes. Desta forma somente precisamos nos preocupar com a funcionalidade do nosso programa, o que poupa tempo e agiliza o processo de desenvolvimento. As aplicaes criadas em uma das linguagens habilitadas para o .NET (como VB.NET, C# ou ASP.NET), ao serem compiladas, geram um cdigo intermedirio conhecido como MSIL Microsoft Intermediate proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000765 Figura 13.2 O ambiente de execuo do CLR. A partir da Figura 13.2 temos algumas observaes importantes para apresentar: Para que uma linguagem seja habilitada ao .NET, o seu compilador deve ser capaz de gerar cdigo MSIL. O cdigo MSIL gerado executado pelo CRL. A prpria Microsoft no nega que a idia bastante semelhante ao ambiente de execuo para aplicaes desenvolvidas em Java, onde temos um ambiente de execuo comum a Mquina Virtual Java, a qual executa byte code, que o cdigo gerado pelas aplicaes Java. Todas as linguagens habilitadas ao .NET tm a sua disposio um rico conjunto de classes e objetos, os quais fornecem desde conexo com Banco de Dados at funes mais especficas, como funes grficas, funes de gravao em disco e assim por diante. Este conjunto de classes e objetos conhecido como .NET Framework class library. Todo cdigo habilitado a rodar no CLR, ou seja, que pode ser compilado para MSIL conhecido como managed code ou cdigo gerenciado. Cdigo antigo, como por exemplo COM ou COM+, os quais no esto habilitados para rodar sob controle do CLR, so chamados de unmanaged code ou cdigo no gerenciado. Veremos mais aspectos a respeito destas definies mais adiante neste captulo, onde trataremos sobre o CLR em mais detalhes. Language, o qual abreviado simplesmente como IL Intermediate Language. Este cdigo que executado pelo CRL. Vamos analisar o diagrama apresentado na Figura 13.2: ASP.NET VB.NET C# COMPILA MSIL CLR COMMON LANGUAGE RUNTIME proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7660000Curso Completo N O T A .NET FRAMEWORK CLASS LIBRARY Este o segundo elemento fundamental do Framework .NET. A .NET Framework class library (biblioteca de classes do Framework .NET), como o prprio nome sugere, uma coleo (uma gigantesca coleo) de classes ou tipos completamente integrada com o ambiente de execuo CLR. Quando falamos em um conjunto de classes, estamos utilizando o conceito originado no modelo de Programao Orientado a Objetos. O Framework .NET fortemente baseado nos conceitos de orientao a objetos, principalmente nos conceitos de Classes, Herana e Polimorfismo. Os programas criados em qualquer linguagem habilitada ao .NET podem utilizar este conjunto de tipos e classes. Por exemplo, existe uma classe chamada System.Data, a qual oferece uma srie de objetos e mtodos para acesso s mais variadas fontes de dados. Vamos a um exemplo mais especfico: Existe uma classe chamada System.SqlCliente, a qual fornece uma srie de mtodos para acesso nativo aos dados de um servidor Microsoft SQL Server. Podemos utilizar a classe System.SqlCliente em um programa feito em VB.NET, C#, ou em uma pgina ASP.NET ou qualquer linguagem que venha a ser habilitada para o .NET. Ao fornecer um conjunto de classes e tipos, o Framework .NET est facilitando a vida do programador, uma vez que grande parte da funcionalidade necessria fornecida diretamente pelas classes do Frame- work .NET e, o principal, utilizada de uma maneira padronizada (mesmos parmetros para cada chamada de classe, mesmo tipo de parmetro e assim por diante) pois a maneira de utilizar uma classe da biblioteca de classes do .NET a mesma, independente da linguagem que estamos utilizando (evidentemente, desde que seja uma linguagem habilitada ao .NET). J existem diversos fabricantes trabalhando para habilitar suas linguagens de desenvolvimento para o Framework .NET. O Delphi, que um dos maiores concorrentes do Visual Basic, j est habilitado ao .NET. So muitas as funes disponibilizadas pela biblioteca de classes do .NET. Apenas a ttulo de exemplo, vamos citar algumas funes disponibilizadas: Manipulao de string Conectividade com Banco de Dados Acesso a arquivos Configuraes de segurana Manipulao de dados Na Figura 13.3, apresento uma viso geral dos principais elementos que formam o Framework .NET. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000767 Figura 13.3 Principais elementos do Framework .NET. DESENVOLVIMENTO EM: UM PEQUENO PARNTESES PARA FALAR MAL DOS MODELOS ANTERIORES PR-REQUISITOS Conhecimento bsico do Framework .NET. METODOLOGIA Comparao com modelos anteriores de desenvolvimento de aplicaes. Vamos falar um pouco sobre o modelo de desenvolvimento anterior ao .NET, mais especificamente sobre o modelo baseado em COM/COM+ da Microsoft. Para falar sobre este assunto vamos fazer um histrico sobre o desenvolvimento de aplicaes, desde os bons e velhos tempos do MS-DOS. AI QUE SAUDADE DO MS-DOS! No, no saudade da poca do MS-DOS, apenas uma breve recapitulao. Para desenvolver aplicaes para o ambiente MS-DOS, utilizamos diversas linguagens de programao, tais como: Clipper Pascal Turbo Pascal Basic C Turbo C C++ ASP.NET VB.NET C# CLR COMMON LANGUAGE RUNTIME XYZ ... .NET Framework Class Library System.Data Microsoft.CSharp System.Io System.Net System.Security ... proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7680000Curso Completo Um programa para o ambiente MS-DOS, na grande maioria das vezes, era composto por um arquivo executvel (.exe). Os demais arquivos necessrios ao funcionamento do programa, tais como imagens grficas ou arquivos de dados, eram salvos, normalmente, no mesmo diretrio (na poca do MS-DOS no falvamos em pastas) do arquivo executvel e tudo funcionava perfeitamente bem (ou to bem quanto possvel para a poca). Para instalar o programa em outro computador, bastava copiar o diretrio do programa e pronto, nada mais precisava ser feito nada de entradas na Registry, nada de DLLs e outros problemas que tanto nos atormentam. Podemos ver que o processo de instalao era bastante simplificado, mas em contrapartida o desenvolvimento era todo manual e as funcionalidades bastante limitadas. As redes locais ainda no eram realidade e a grande maioria dos programas era feito para trabalhar em um nico computador, acessando dados locais. Comunicao entre programas, reaproveitamento de cdigo e acesso via rede, eram coisas raras ou inexistentes. Para as necessidades da poca, era um modelo plenamente satisfatrio. A maior prova disso que, ainda hoje, facilmente encontramos programas feitos em Clipper, para o ambiente MS- DOS, rodando em pequenos estabelecimentos, dando suporte a todas as operaes dirias. Tente voc propor que estas pessoas substituam seus programas em Clipper, que atendem perfeitamente s necessidades destes pequenos estabelecimentos, por programas para Windows com interface grfica. Com certeza voc receber um sonoro NO. Porm logo as redes comeariam a invadir as empresas, os programas a tornarem-se mais complexos. Com o advento das redes e do sucesso dos PCs, mais e mais pessoas comearam a utilizar computadores. A velha interface a caractere do MS-DOS no atendia mais as necessidades. Neste momento que o Windows comea a surgir no mercado. PRAZER. EU SOU O WINDOWS! Com a chegada doWindows tivemos a popularizao das interfaces grficas e de termos como: mouse, cone, atalho e janelas. As ferramentas para desenvolvimento no ambiente Windows custaram a chegar. No incio a programao tinha que ser feita em linguagem C, utilizando as APIs (Application Program Interface) do Windows. Com o lanamento do Visual Basic 1.0 teve incio a era das ferramentas grficas para desenvolvimento de programas para o ambiente Windows. Com o Windows j passou a existir o conceito de instalar o programa. A instalao do programa no se limita a uma simples cpia de arquivos. Ao instalar um programa no Windows, o programa gravava uma srie de informaes de configurao: no Windows 3.x em arquivos .ini e no Windows 9x na Registry do sistema operacional. Alm destas informaes de configurao, partes do programa eram disponibilizadas no formato de arquivos .DLL (Dynamic Link Library). Falando assim parecia um modelo, digamos, bastante elegante. Um local centralizado para informaes sobre configurao e o programa dividido em partes menores, que no conjunto forneciam a funcionalidade do programa. Porm o modelo de programao para o Windows comeou a apresentar uma srie de inconvenientes. Vamos falar destes inconvenientes, atravs de exemplos: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000769 N O T A Se alguma das configuraes, necessrias ao funcionamento do programa, fossem alteradas, o programa deixava de funcionar. Isto gerava uma chamada ao pessoal de suporte que, na maioria das vezes, somente conseguia resolver a situao reinstalando o programa. Os arquivos .DLL poderiam ser utilizados por mais do que um programa. Pode acontecer uma situao em que um programa que esteja sendo instalado substitua uma determinada .DLL por uma verso mais nova do que a verso da .DLL atualmente existente no sistema. O problema que podem existir programas que dependam da verso mais antiga. Nesta situao os programas que dependem da situao mais antiga simplesmente deixaro de funcionar. Pode tambm acontecer o contrrio, ou seja, um programa que est sendo instalado substitui uma .DLL por uma verso mais antiga, fazendo com que outros programas deixem de funcionar. Em situaes mais crticas poderia acontecer de o programa que est sendo instalado substituir uma .DLL vital para o Windows. Nestas situaes todo o sistema deixaria de funcionar e, em alguns casos, somente uma reinstalao poderia resolver o problema. Vejam que o que parecia uma boa soluo acabou se mostrando um verdadeiro pesadelo para gerenciar e manter em funcionamento. Neste poco surge, inclusive, a expresso DLL Hell, que poderamos traduzir por: O Inferno das DLLs. Cada vez que um programa fosse alterado, o programa precisaria ser reinstalado em todos os computadores onde fosse necessria a nova verso. E se, ao fazer a atualizao para a nova verso, fosse substituda alguma .DLL necessria ao funcionamento de algum outro programa? Novos problemas para o pessoal do suporte tcnico. Vejam que este modelo gera uma grande carga de suporte, o que encarece muito a manuteno em funcionamento de uma estao de trabalho da empresa. Para mais detalhes sobre esta questo, consulte o Captulo 2, onde falo sobre os modelos de aplicao Cliente/Servidor e a soluo para esta questo, usando o modelo em n Camadas. REDES E INTERNET MAIS PROBLEMAS (OU SOLUES) VISTA! Com o advento das redes como uma realidade nas empresas e com a exploso da Internet como uma plataforma vivel para fazer negcios, os modelos de desenvolvimento de aplicaes sofreram profundas mudanas. Primeiro, com as redes, foi a poca da febre em descentralizar as estruturas de TI e migrar para o modelo Cliente/Servidor, baseado em redes locais. Neste modelo, tambm conhecido como modelo de duas camadas, temos um ou mais equipamentos de maior capacidade de processamento, atuando como servidores. Nas estaes de trabalho dos usurios, conhecidas como clientes, so instalados programas, que fazem acesso a recursos residentes nos servidores. O exemplo mais tpico de aplicao Cliente/Servidor seria uma aplicao desenvolvida em Visual Basic ou Delphi, a qual acessa dados de um servidor SQL Server, instalado em um servidor da rede. Na Figura 13.4, temos uma viso geral do modelo Cliente/Servidor. Para uma descrio detalhada do modelo de duas camadas e de seus problemas, consulte o Captulo 2. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7700000Curso Completo Figura 13.4 O modelo Cliente/Servidor. Sempre que um determinado modelo apresenta problemas, aparentemente intransponveis, a indstria de informtica parte para a criao de novos modelos. Em busca de solues para os problemas do modelo de duas camadas que surgiu a proposta do modelo de 3 camadas, conforme analisaremos, brevemente, a seguir. Para uma descrio detalhada sobre o modelo de desenvolvimento em 3 camadas, consulte o Captulo 2. APLICAES EM 3 CAMADAS. Como uma evoluo do modelo de 2 camadas, surge o modelo de trs camadas. A idia bsica do modelo de 3 camadas retirar as regras do negcio, da aplicao Cliente e centraliz-las em um determinado ponto, o qual chamado de Servidor de Aplicaes. O acesso ao Banco de Dados feito atravs das regras contidas no Servidor de Aplicaes. Ao centralizar as regras do negcio em um nico ponto, fica muito mais fcil a atualizao das mesmas. A Figura 13.5 nos d uma viso geral do modelo em 3 camadas: Servidor de Arquivos Outros Servidores Banco de Dados Cliente Cliente Cliente Cliente Cliente Servidor de Banco de Dados Servidor de Aplicaes Cliente Cliente Cliente Cliente Cliente No modelo de 3 camadas, toda a Lgica do negcio fica no Servidor de Aplicaes. Com isso, a atualizao das regras do negcio fica mais fcil. Figura 13.5 O Modelo de desenvolvimento em trs camadas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000771 N O T A Para uma descrio detalhada do modelo em trs camadas, consulte o Captulo 2. Com a introduo da camada de Lgica, resolvemos o problema de termos que atualizar a aplicao, em centenas ou milhares de estaes de trabalho da rede da empresa, toda vez que uma regra do negcio for alterada. Porm continuamos com o problema de atualizao da interface da aplicao, cada vez que forem necessrias mudanas na interface. Por isso que surgiram os modelos de n-camadas. No prximo tpico, iremos falar, brevemente, sobre o modelo de 4 ou mais camadas APLICAES EM QUATRO CAMADAS Como uma evoluo do modelo de trs camadas, surge o modelo de quatro camadas. A idia bsica do modelo de 4 camadas retirar a apresentao do cliente e centraliz-las em um determinado ponto, o qual na maioria dos casos um servidor Web. Com isso o prprio cliente deixa de existir como um programa que precisa ser instalado em cada computador da rede da empresa. O acesso aplicao, feito atravs de um navegador, como por exemplo o Internet Explorer, Firefox ou o Netscape Naviga- tor. A Figura 13.6 nos d uma viso geral do modelo em quatro camadas: Figura 13.6 O modelo de desenvolvimento em quatro camadas. Para acessar a aplicao, o cliente acessa o endereo da aplicao, utilizando o seu navegador, como no exemplo a seguir: http://intranet.minhaempresa.com/sistemas/vendas.aspx. Todo o acesso do cliente ao Banco de dados feito de acordo com as regras contidas no servidor de aplicaes. O cliente no tem acesso ao Banco de dados, sem antes passar pelo servidor de aplicaes. Servidor de Banco de Dados Servidor Web Servidor de Aplicaes Cliente Cliente Cliente Cliente Cliente O cliente s precisa de um navegador para ter acesso aplicao. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7720000Curso Completo N O T A Para uma descrio detalhada do modelo em quatro camadas, consulte o Captulo 2. UM MODELO BASEADO EM COMPONENTES O modelo de programao anterior ao .NET, para o ambiente Windows, fortemente baseado no conceito de componentes. No exemplo do modelo em 4 camadas, quando uma aplicao cliente acessa uma regra de negcio, esta regra de negcio implementada na forma de um componente COM/ COM+. o regra de negcio pode utilizar um outro componente para fazer a conexo com o Banco de Dados e retornar os dados solicitados pela aplicao. Para que os diversos componentes possam comunicar-se e trocar informaes, eles precisam de um padro para a troca de mensagens. O padro determina a estrutura interna do componente e a maneira como cada componente expe suas funcionalidades. O padro para o ambiente Windows chamado, a partir do Windows 2000, de COM+. Para o Windows NT 4.0 e verses anteriores, tnhamos o COM/DCOM trabalhando em conjunto com o MTS Microsoft Transaction Server. Mas se existe um padro para troca de mensagens qual o problema? Acontece que a implementao de componentes utilizando COM/COM+ nunca foi tarefa fcil. Se utilizarmos linguagens como o Visual C++, a criao e disponibilizao de componentes uma tarefa que exige programadores altamente especializados. J com ferramentas como o Visual Basic e Delphi, a criao de componentes para o padro COM+ um pouco mais fcil. Porm a grande dificuldade fazer com que componentes implementados em diferentes linguagens sejam capazes de trabalhar em conjunto e trocar mensagens entre si. Agora imagine as dificuldades em um ambiente onde devemos criar aplicaes para a Internet e deve existir uma maneira padronizada para que os diversos componentes sejam capazes de se comunicar. A Microsoft, com a sua iniciativa DNA, procurou disponibilizar informaes para que seja possvel tirar o mximo do modelo COM+, na criao de aplicaes em n-camadas para a Internet. Porm a prpria Microsoft reconheceu as limitaes e dificuldades deste modelo, ao propor uma nova revoluo nos mtodos e prticas de desenvolvimento, revoluo essa que atende pelo singelo nome de .NET (ou Framework .NET, como venho tambm utilizando neste livro). Outro fator importante a considerar que o padro COM/COM+ um padro proprietrio, desenvolvido pela Microsoft. Como fazer com que um padro proprietrio possa ser utilizado, sem maiores problemas para aplicaes distribudas na Internet? Fica muito difcil, para no dizer impraticvel. J com o .NET, conforme comentamos anteriormente, utiliza-se padres no proprietrios, como XML para os dados e SOAP sobre HTTP como protocolo de transporte. Desta forma a comunicao entre Web Services acontece de uma maneira fcil, sem maiores problemas. Para que um componente COM/COM+ possa ser utilizado, este precisa ser registrado no servidor que ir disponibilizar o componente. Ao registrar o componente, so gravadas informaes sobre o componente, na registry do sistema operacional. O programador precisa preocupar-se em garantir que o componente seja registrado corretamente, pois, caso contrrio, este no poder ser acessado. J os servios do .NET no necessitam de registro, sendo que toda a informao necessria para que estes funcionem corretamente est contida no prprio servio, no formato de metadados metadata. Mais adiante falaremos um pouco mais sobre metadata. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000773 N O T A Com componentes COM/COM+, o programador precisa preocupar-se em carregar o componente na memria, retirar o componente da memria quando este no for mais utilizado e uma srie de outras funes necessrias ao correto funcionamento de cada componente. Com o .NET, todas estas preocupaes foram transferidas para o Framework .NET. Isto faz com que o programador somente tenha que codificar a funcionalidade do servio que est sendo desenvolvido, a parte mais, digamos assim, chata ser de responsabilidade do Frame- work .NET, mais especificamente do CLR. Isso aumenta a produtividade do programador e evita erros mais graves, os quais normalmente fazem com que o componente no funcione corretamente. J apresentamos os principais problemas do modelo atual e, no restante deste captulo, veremos os demais elementos que compem o Framework .NET e como cada um destes elementos procura solucionar problemas que os modelos anteriores no foram capazes de resolver. Tambm mostrarei como utilizar pginas ASP.NET, para conectar com Bancos de Dados do SQL Server 2005. DESENVOLVIMENTO EM: OS ELEMENTOS DO FRAMEWORK .NET EM DETALHES PR-REQUISITOS Conhecimento bsico do Windows 2000 ou 2003 e do Framework .NET. METODOLOGIA Descrio dos elementos que compem o Framework .NET. Agora vamos falar um pouco mais sobre os diversos componentes do Framework .NET e como cada um destes componentes/funcionalidades se prope a solucionar problemas do modelo de desenvolvimento baseado em componentes COM/COM+. LINGUAGENS DE PROGRAMAO HABILITADAS AO .NET O que significa uma linguagem ser habilitada ao .NET? Significa que a linguagem capaz de gerar, como resultado da compilao, cdigo MSIL. Uma vez gerado o cdigo MSIL, este executado sob o controle do CLR. Ou seja, para o Framework .NET, uma vez gerado o cdigo MSIL, no importa a partir de qual linguagem o cdigo foi gerado, pois a maneira como o cdigo MSIL executado sempre a mesma. Juntamente com o Framework .NET, a Microsoft disponibiliza as seguintes linguagens: Visual Basic .NET (VB.NET) C++.NET C# No endereo a seguir, voc encontra uma listagem atualizada de todas as linguagens que j esto habilitadas ao .NET: http:// www.jasonbock.net/dotnetlanguages.html proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7740000Curso Completo Podemos criar nossos programas em qualquer uma destas linguagens. Ao compilarmos o programa, o resultado ser a gerao de cdigo MSIL, o qual passa a ser executado pelo CLR. Quando a Inprise lanou o Delphi habilitado ao .NET, o que foi feito fazer com que o Compilador Delphi seja capaz de gerar cdigo MSIL. Uma vez gerado o cdigo MSIL, para o CLR no importa em qual linguagem o programa foi codificado. UMA RPIDA APRESENTAO DO VB.NET. Com exceo do C#, que uma nova linguagem, o VB.NET a linguagem que mais sofreu modificaes em relao s verses anteriores (VB 6.0). Foram introduzidas algumas caractersticas a muito tempo esperadas, tais como: Foram adicionadas mais caractersticas de orientao a objetos, tais como herana verdadeira, construtores parametrizados e overriding de mtodos e propriedades. Mais facilidades para o desenvolvimento de aplicaes Internet. Por exemplo, para criar pginas ASP.NET, ao invs de VBScript, utilizado com ASP, utilizamos diretamente o VB.NET ou o C# e a criao de pginas Web com o Visual Studio .NET ficou bem mais simples do que usando o Visual InterDev, que era a ferramenta para programao Web antes da disponibilidade do Vi- sual Studio .NET. Herana visual: Esta uma caractersticas que os desenvolvedores do Delphi j tinham a algum tempo. Com o VB.NET podemos criar um formulrio com as caractersticas bsicas para todos os formulrios da aplicao. Quando precisarmos de um formulrio com caractersticas adicionais, podemos construir este novo formulrio baseado, isto , herdando as caractersticas do formulrio bsico, e depois s adicionar os elementos necessrios. Ao criarmos o nosso formulrio, herdando do formulrio bsico, o formulrio que est sendo criado ter, automaticamente, todos os elementos do formulrio bsico. Alm dos elementos, o cdigo para tratamento de eventos tambm herdado. O melhor de tudo, ao alterarmos o formulrio bsico, todas as alteraes so refletidas nos formulrios herdados. A herana visual facilita, enormemente, a criao de aplicaes que tenham uma interface consistente, padronizada e de fcil manuteno. Tratamento estruturado de excees: com o VB.NET, temos muito mais recursos para o tratamento de erros e excees do que o bom e velho On Error do Visual Basic. Isso faz com que possamos criar programas mais confiveis. Falar sobre as novidades do VB.NET assunto para um captulo inteiro. Ensinar o VB.NET: assunto para um livro inteiro. UM RPIDA APRESENTAO DO C# O C# a nova linguagem da Microsoft, apresentada juntamente com o Framework .NET. O C# foi construdo com base nos conceitos de orientao a objetos. As diretivas bsicas para a criao do C# foram as seguintes: Uma linguagem orientada a objetos e to poderosa quanto o C++ Uma linguagem to fcil de utilizar quanto o VB proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000775 N O T A N O T A O pessoal da Microsoft realmente conseguiu aliar estas duas caractersticas em uma s linguagem: Poder e Simplicidade. Conforme voc pode conferir nos captulos 3, 4 e 5, do seguinte e-book de minha autoria: ASP.NET: Uma Nova Revoluo na Criao de Sites e Aplicaes Web (mais detalhes em http://www.juliobattisti.com.br/ebooksdoautor), o C# de fcil aprendizagem e utilizao, ao mesmo tempo que nos fornece poderosos mecanismos, antes s encontrados no C++. Como no poderia deixar de ser, vamos dar o tradicional exemplo do Hello Word!!!, utilizando o C#. Apresentarei o cdigo e os passos para compilar e rodar o nosso primeiro programa em C#. Para criar o nosso primeiro programa, utilizaremos o Bloco de Notas do Windows. Esse programa s poder ser executado se voc j tiver o Framework .NET instalado em seu computador. Por padro, ao instalar o SQL Server 2005, o Framework .NET tambm instalado. Abra o Bloco de notas e digite o texto indicado na Listagem 1.1. Listagem 13.1 Hello Word ! using System; class primeiroprograma { // Meu primeiro programa em C# // O tradicional Hello Word!! public static void Main() { string umamensagem = Hello Word!!!; Console.WriteLine(umamensagem); } } Salve este programa em uma pasta no HD com o nome de primeiroprograma.cs. Agora vamos compilar o programa e execut-lo. Para compilar o programa, abra um prompt de comando. Na janela do prompt v para a pasta onde voc salvou o arquivo primeiroprograma.cs e execute o seguinte comando: csc primeiroprograma.cs Se der um erro, informando que no foi possvel localizar o comando csc, use o recurso Iniciar -> Pesquisar -> Arquivos ou pastas, para localizar a pasta onde est o compilador do C#, que o arquivo csc.exe. Uma vez localizado o compilador do C#, salve o arquivo primeiroprograma.cs na mesma pasta do compilador, abra um prompt de comando, navegue at a pasta onde est o arquivo csc.exe e execute novamente o comando: csc primeiroprograma.cs Com este comando compilamos o arquivo fonte primeiroprograma.cs, para gerar um executvel .exe. O resultado deste comando indicado na Figura 13.7, onde utilizamos o comando dir, para mostrar que a compilao gerou o executvel primeiroprograma.exe. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7760000Curso Completo N O T A Figura 13.7 Compilando o primeiro programa em C#. Para executar o nosso programa, basta digitar primeiroprograma e pressinar Enter. O programa ser executado, conforme indicado na Figura 13.8: Figura 13.8 Executando o primeiro programa em C#. Apenas um ltimo detalhe ao qual gostaria de chamar a ateno: Observe, para aqueles que conhecem Java ou C++, a semelhana entre a estrutura de um programa em C# e um programa em uma destas linguagens. COMMON TYPE SYSTEM O Framework .NET disponibiliza, na forma de objetos, um conjunto de tipos de dados comuns, os quais podem ser utilizados por todas as linguagens habilitadas ao .NET. Isso significa, por exemplo, que uma varivel do tipo Long ter a mesma estrutura e ocupar o mesmo nmero de bytes, quer seja no VB.NET, no C#, no C++ ou em qualquer outra linguagem habilitada ao .NET. Este conjunto de tipos comuns, que pode ser utilizado por qualquer linguagem habilitada ao .NET, chamado de Common Type System, que a partir de agora abreviaremos por CTS. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000777 N O T A Dentre outras coisas, o CTS que facilita a integrao entre os programas e servios criados, utilizando- se diferentes linguagens habilitadas ao .NET. No modelo antigo, uma das dificuldades de fazer com que um componente COM+ criado com o Visual C++ pudesse ser utilizado por um programa escrito em Visual Basic que as linguagens possuam um conjunto diferente de tipos bsicos. Para que os componentes, escritos em diferentes linguagens, pudessem se comunicar, o programador tinha que mapear os tipos de uma linguagem, para os tipos correspondentes em outra linguagem, fazendo as converses necessrias. Vejam o quanto este procedimento trabalhoso. Com o CTS do .NET simplesmente esta preocupao deixa de existir, uma vez que todas as linguagens tm acesso a um conjunto de tipos comum e padronizado. Conforme descrito na documentao do Framework .NET, so as seguintes as principais funes do CTS: Fornece uma estrutura que possibilita a integrao entre diferentes linguagens habilitadas ao .NET, com uma execuo mais rpida, uma vez que a sobrecarga para a converso entre os diferentes tipos de diferentes linguagens deixa de existir. Fornece uma estrutura de tipos com base em um modelo orientado a objetos, o que facilita a criao de novas linguagens habilitadas ao .NET, favorecendo a utilizao de boas prticas de programao, como por exemplo a herana. Uma vez que os tipos so objetos, podemos criar tipos derivados (herdados) dos objetos bsicos, os quais herdam todas as caractersticas dos objetos bsicos. O CTS define algumas regras que toda linguagem deve seguir, para ser habilitada ao .NET. Por seguir um conjunto de regras comum, a interao entre programas escritos em diferentes linguagens fica bem mais fcil. Mais adiante, farei uma descrio detalhada do CLR e dos seus componentes, dentre os quais est o CTS. METADATA Na seo Questes a considerarmos nos modelos de 3 ou mais camadas utilizados atualmente, descrevemos, como uma das inconvenincias do modelo de componentes baseados em COM/COM+, o fato de que estes, para poderem ser utilizados, precisam ser registrados. Ao registrarmos um componente COM/COM+, uma srie de informaes sobre o componente gravada na Registry do sistema. Estas informaes so utilizadas pelos programas que precisam acessar o componente. Se alguma destas informaes estiver errada ou tiver sido alterada, o componente no poder ser acessado e os programas que utilizam o componente deixaro de funcionar corretamente. No Framework .NET, para utilizarmos os componentes .NET (.NET Componentes), no necessrio que estes sejam registrados. O prprio componente .NET possui todas as informaes necessrias ao seu funcionamento, bem como as informaes necessrias para que outros aplicativos possam utiliza- los. Estas informaes fazem parte do prprio componente .NET e ficam gravadas no arquivo que compe componente, na forma de Metadados metadata (dados sobre si mesmo). Uma traduo popularmente conhecida para metadata seria: dados sobre dados. No nosso caso, metadata seriam as informaes que o componente .NET possui a respeito de si mesmo, informaes estas que podem ser utilizadas por outros componentes e servios, para utilizar o componente em questo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7780000Curso Completo Alm de fazer com que no seja necessrio o registro do componente, as informaes de metadata facilitam a interoperabilidade entre diferentes componentes, mesmo entre componentes escritos em diferentes linguagens. Estas informaes so geradas, automaticamente, no momento da compilao do componente e so gravadas no arquivo .DLL ou .EXE do componente. So muitas as informaes que podem ser inseridas no componente, na forma de metadata, tais como: Nome e verso do componente. Uma chave pblica para verificao da origem e da autenticidade do componente. Informaes sobre todas as classes ou componentes, dos quais o componente depende para funcionar corretamente. Tipos disponibilizados (exportados) pelo componente. Permisses de segurana para o acesso ao componente, seus mtodos e propriedades. Classes bsicas e interfaces do Framework .NET, utilizadas pelo componente. Atributos personalizados, implementados no componente. Membros do componente (mtodos, campos, propriedades, eventos, etc.). Quando o componente acessado, o CLR carrega os metadados do componente na memria e faz referncia a estes metadados, para obter informaes sobre as classes, membros, herana e dependncias do componente. So diversos os benefcios do uso de metadados, dentre os quais podemos destacar os seguintes: Mdulos de cdigo autodescritivos: O prprio componente contm toda a informao necessria para interagir com outros componentes. Desta forma o componente pode ser implementado como um nico arquivo, o qual contm a sua definio (na forma de metadados) e a sua implementao, o cdigo do componente. Nunca demais repetir: A utilizao de metadados facilita, enormemente, a interoperabilidade entre componentes criados usando diferentes linguagens. ASSEMBLIES Uma aplicao .NET constituda de um conjunto de blocos chamados Assembly. Atravs dos as- semblies (plural de assembly) que podemos controlar a distribuio de uma aplicao, fazer o controle de verses, alm de definir as configuraes de segurana. Um assembly uma coleo de tipos e recursos que foram construdos para trabalharem juntos, formando, com isso, uma unidade com funcionalidade e escopos bem definidos. Um assembly fornece ao CLR importantes informaes sobre a implementao de tipos da aplicao. Para o CLR, um tipo somente existe no contexto de um assem- bly. De uma maneira mais simples, poderamos dizer que um assembly o mecanismo utilizado pelo .NET, para empacotar todos os elementos e informaes necessrias ao funcionamento de uma aplicao ou componente. Vamos simplificar mais ainda: o assembly uma maneira de juntar e organizar os diversos elementos que formam uma aplicao ou componente. Os assemblies foram criados para simplificar a distribuio de aplicaes e resolver o problema de verses, existentes em aplicaes baseadas em componentes. Lembram que no incio deste captulo proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000779 N O T A falamos sobre o termo DLL Hell (Inferno das DLL). Com este termo estvamos nos referindo ao problema de um programa, ao ser instalado, substituir uma DLL por uma verso mais nova ou mais antiga, fazendo com que programas que dependiam da verso anterior da DLL deixassem de funcionar. Atravs do uso de assemblies e dos metadados contidos em cada componente, possvel que diferentes verses, do mesmo componente, estejam disponveis, ao mesmo tempo, em um mesmo computador. Desta forma, cada programa utiliza a verso do componente para o qual o programa foi criado. Ao instalarmos uma nova verso do componente, o qual vem embutido em um assembly, as verses anteriores sero mantidas, se estas estiverem sendo utilizadas por outros programas. Isso faz com que o inferno das DLLs (DLL Hell) seja coisa do passado. Para resolver o problema de verses e evitar o inferno das DLLs, o CLR utiliza assemblies da seguinte maneira: Permite que o desenvolvedor defina regras sobre o uso de diferentes verses entre diferentes componentes .NET. Fornece a infra-estrutura necessria para que as regras de verso definidas pelo desenvolvedor, sejam respeitadas. Fornece a infra-estrutura necessria, para que diferentes verses de um mesmo componente de software possam rodar, simultaneamente. Esta execuo simultnea conhecida como syde- by-syde execution. Um assembly composto de dois elementos bsicos: Manifesto Um conjunto de mdulos. Voc aprender mais detalhes sobre assemblies e seus elementos mais adiante neste captulo, onde apresentarei mais detalhes sobre o CLR Common Language Runtime. DESENVOLVIMENTO EM: INTERFACES COM O USURIO PR-REQUISITOS Conhecimento bsico do Windows 2000 e 2003 e do Framework .NET. METODOLOGIA Descrio dos elementos para criao da interface dos programas. No Framework .NET a nomenclatura utilizada para representar os elementos que compem uma aplicao Web diferente dos termos utilizados para representar uma aplicao tradicional para o Windows, tambm conhecidas como aplicaes Win32. Alis este um dos pontos que gostaria de destacar, pois o Framework .NET no foi concebido apenas para a criao de aplicaes Web. Com Framework .NET, podemos criar qualquer tipo de aplicao, desde aplicaes Web, passando por aplicaes Win32 tradicionais, at aplicaes de Console, tambm conhecidas como aplicaes de linha de comando. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7800000Curso Completo Em termos de interface com o usurio, temos dois elementos a considerar: Windows Forms Web Forms WINDOWS FORMS Que o Framework .NET foi todo projetado tendo em vista a Internet ns j sabemos. Porm nem todas as aplicaes so ou sero desenvolvidas para a Web. A utilizao de Windows Forms (Win Forms ou, se preferirem formulrios do Windows) o mecanismo que nos permite criar as tradicionais aplicaes para Windows. Windows Forms o novo mecanismo para construo de aplicaes Windows, baseadas no Frame- work .NET. Um Windows Form bastante semelhante ao conceito de formulrio utilizado pelas verses atuais do VB e do Delphi. O formulrio o elemento bsico, sobre o qual adicionamos controles e cdigo para determinados eventos associados com o formulrio e seus controles. O Windows Form tudo isso, porm com a diferena de poder utilizar todos os mecanismo do Framework .NET. Dentre os principais mecanismos disponveis, destaca-se o mecanismo de herana, o qual chamado, para o caso dos Windows Forms, de herana visual. Anteriormente havamos comentado sobre herana visual. Windows Forms Controles e demais elementos constituintes do Windows Form CLR COMMON LANGUAGE RUNTIME .NET Framework Class Library System.Data Microsoft.CSharp System.Io System.Net System.Security ... Figura 13.9 Uma aplicao Win32 com o Framework .NET. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000781 Um Windows Form, como tudo no Framework .NET, um objeto, o qual obtido a partir da instncia de uma classe bsica. Todos os formulrios no Framework .NET so baseados em uma das seguintes classes: System.Windows.Forms. So baseadas em um formulrio padro criado pelo usurio, atravs do mecanismo de herana. Em resumo, o Windows Form o elemento bsico de criao de interfaces para interao do usurio com a aplicao; em outras palavras, o Windows Form o elemento visual das aplicaes, elemento este com o qual o usurio ir trabalhar. Na Figura 13.9, temos uma viso geral dos elementos que compem uma aplicao Win32 tpica, construda com o Framework .NET. WEB FORMS Para aplicaes Win32 a interface com o usurio so os Windows Forms, vistos no item anterior. Para aplicaes Web, criadas com ASP.NET, as pginas so construdas utilizando-se Web Forms. Um dos objetivos da utilizao de Web Forms trazer para o desenvolvimento Web as facilidades de arrastar e soltar, existentes no desenvolvimento de aplicaes tradicionais. Com isso poderemos, com o uso do Visual Studio .NET, criar pginas Web, simplesmente arrastando componentes sobre um Web Form. Com o uso de Web Forms, uma pgina ASP.NET dividida em dois componentes bsicos: Um modelo (template), o qual contm os elementos visuais e de formatao da pgina, normalmente contedo baseado em HTML, ou HTML gerado pelo cdigo ASP.NET. Uma seo de cdigo, a qual responsvel por todo o processamento lgico dos elementos da pgina. Por exemplo, na seo de cdigo podemos colocar os comandos necessrios para estabelecer uma conexo com um Banco de Dados do SQL Server 2005 e um comando para retornar os dados que sero utilizados pela pgina. Tambm podemos colocar comandos que atualizam os dados no Banco de Dados, de acordo com as informaes digitadas na pgina. Observe que com estes dois elementos: template e seo de cdigo, temos uma separao entre o cdigo de processamento e o contedo da pgina propriamente dito. Isso evita a criao de cdigos do tipo macarro, onde temos sees de cdigo alternadas com sees de HTML, sucessivamente. O cdigo macarro bastante comum nas verses anteriores do ASP (ASP 2.0 e ASP 3.0). Com o Framework .NET disponibilizada uma srie de novos controles para utilizao em pginas ASP.NET. Estes novos controles apresentam novas caractersticas e propriedades que facilitam a criao de pginas, digamos, mais inteligentes, onde podemos inserir cdigo em resposta a uma srie de eventos. O melhor disso tudo que o funcionamento destes controles independente do navegador utilizado pelo cliente, uma vez que os controles so processados no servidor Web e o que retorna para o cliente o cdigo HTML puro, resultante do processamento do cdigo no servidor. A seo de cdigo de um Web Form pode ser criada utilizando qualquer linguagem do Framework .NET, como por exemplo: VB.NET, C# ou Jscript.NET. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7820000Curso Completo Com a utilizao de Web Forms bem mais simples manter o estado de uma pgina, entre diferentes requisies do usurio, isso tudo sem a necessidade de implementar a manuteno de estado utilizando os objetos Session e Application, como era necessrio no ASP 3.0. Alm disso, com o uso de Web Forms, podemos construir aplicaes Web com interfaces bastante sofisticadas e funcionais, de uma maneira fcil atravs da utilizao de ferramentas de desenvolvimento como o Visual Studio .NET e outras que j esto disponveis, como Delphi 7.0, Webmatrix, Dreamweaver MX 2004 e assim por diante. Na Figura 13.10, temos uma viso geral dos elementos que compem uma aplicao Web tpica, criada com ASP.NET, com a utilizao de Web Forms. Figura 13.10 Uma aplicao Web com ASP.NET e Web Forms. DESENVOLVIMENTO: OS SERVIDORES .NET PR-REQUISITOS Conhecimento bsico do Windows 2000 ou 2003 e do Framework .NET. METODOLOGIA Descrio dos servidores que do suporte ao desenvolvimento de aplicaes .NET. ASP.NET CLR COMMON LANGUAGE RUNTIME .NET Framework Class Library System.Data Microsoft.CSharp System.Io System.Net System.Security ... Web Forms: 1. Apresentao 2. Cdigo proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000783 Alm do Framework .NET, a Microsoft vem disponibilizando novas verses dos servidores da famlia Back Office. Estas novas verses vm sendo adaptadas para dar suporte ao modelo de desenvolvimento .NET. Por exemplo, os servidores esto sendo adaptados para o padro de dados XML, que o padro de dados para troca de informaes entre componentes e servios do Framework .NET. Outra preocupao para esta linha de servidores com a escalabilidade. Estes servidores foram projetados para atender um grande volume de usurios, alm de terem a capacidade de utilizar a tecnologia de Cluster e Balanceamento de Cargas do Windows 2000 e do Windows Server 2003. Outras diretivas bsicas para estes servidores so as seguintes: Interoperabilidade: Ao contrrio do que muitos anunciaram, os mainframes continuam vi- vos. Alm disso, o ambiente de TI das empresas bastante heterogneo, onde convivem diferentes sistemas operacionais e diferentes fontes e formatos de dados. O Framework .NET e os servidores .NET facilitam a tarefa de integrar dados das mais variadas fontes, desde o tradicional mainframe, passando por fontes de dados estruturados como o SQL Server 2005 (este voc, certamente, j conhece bem) ou ORACLE e chegando a fontes no estruturadas, como mensagens de correio eletrnico, arquivos de vdeo e imagens grficas. Facilidade de gerenciamento: Dentro da filosofia da Microsoft de construir interfaces de administrao intuitivas e fceis de utilizar. Todos os servidores utilizam interfaces padronizadas, atravs do uso do MMC Microsoft Management Console e snap-ins especficos para a administrao de cada servidor. Neste tpico descreveremos, rapidamente, quais os servidores .NET e qual a funo de cada um no ambiente empresarial. Veremos uma breve descrio dos seguintes servidores: SQL Server 2005 Exchange Server 2000 BizTalk Server 2000 Commerce Server 2000 Application Center 2000 Host Integration Server 2000 Internet Security and Acceleration Server 2000 Mobile Information 2001 Server SQL SERVER 2000 O SQL Server 2005. Este, certamente, dispensa maiores comentrios, pois o objeto de estudos de todo este livro. EXCHANGE SERVER 2003 um servidor de mensagens e correio eletrnico, completamente integrado com o Active Directory e com o Framework .NET, alm de ser uma plataforma para desenvolvimento de aplicaes do Workflow. Cada vez mais o Exchange vem ganhando mercado de concorrentes como o Lotus Notes da IBM e o Novel Groupwise da Novel. O Exchange 2003 completamente integrado com o Active Directory, o proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7840000Curso Completo que facilita a criao e manuteno de contas de usurios. O suporte ao XML tambm est presente nesta verso do Exchange. Maiores informaes sobre Exchange podem ser encontradas nos seguintes endereos: http://www.microsoft.com/exchange http://www.swynk.com BIZTALK SERVER Com a consolidao do comrcio eletrnico, principalmente do chamado B2B Business to Business que o comrcio entre empresas, cada vez faz-se mais necessria a integrao entre sistemas de informao de diferentes empresas. Um dos maiores problemas que estes diferentes sistemas de informao utilizam diferentes formatos de dados e diferentes mecanismos para troca de informaes. Durante muito tempo, uma das solues adotadas foi o EDI Exchange Data Interchange. Porm o EDI apresenta algumas limitaes, alm de um custo elevado. Com o advento da Internet e do padro XML, a troca de informaes entre empresas tem migrado para solues onde o XML o formato universalmente aceito, o que facilita a troca de informaes. O Biztalk Server a soluo da Microsoft que facilita a criao, desde o modelo conceitual at a implementao, de aplicaes baseadas em XML, para troca de informaes entre diferentes empresas ou at mesmo entre diferentes sistemas, da mesma empresa. Maiores informaes e uma verso de avaliao para download podem ser encontradas no seguinte endereo: http://www.microsoft.com/biztalk COMMERCE SERVER 2000 O Commerce Server trabalha em conjunto com o IIS. Na verdade o Commerce Server facilita a criao de um site para comrcio eletrnico, quer seja B2C Business to Consumer, quer seja B2B Business to Business. Atravs de uma srie de modelos prontos e atravs da utilizao de assistentes, podemos rapidamente criar um site para comrcio eletrnico. Aps a criao, possvel personalizar o site de acordo com as necessidades da empresa. Pode trabalhar integrado com os demais servidores .NET. Por exemplo, pode utilizar o SQL Server 2000 para armazenar informaes sobre o catlogo de produtos, preos e estoque. Maiores informaes e uma verso de avaliao para download podem ser encontradas no seguinte endereo: http://www.microsoft.com/commerceserver APPLICATION CENTER 2000 O Application Center 2000 a ferramenta da Microsoft para a implementao e gerenciamento de Web sites que devero suportar uma elevada carga de acesso, com um grande nmero de acessos simultneos. Tambm oferece ferramentas para a distribuio de um site entre diversos servidores, com o objetivo de distribuir a carga entre diversos equipamentos. Com o uso do Application Center fica mais fcil realizar tarefas como por exemplo manter sincronizado o contedo dos diversos servidores, bem como fazer o gerenciamento e a distribuio de cargas. HOST INTEGRATION SERVER 2000 Esta a nova verso do antigo SNA Server da Microsot, s que com o nome alterado. O Host Integra- tion Server possibilita a integrao de redes Windows com outros ambientes, como, por exemplo, proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000785 mainframes baseados na arquitetura SNA da IBM. Maiores informaes e uma verso de avaliao para download podem ser encontradas no seguinte endereo: http://www.microsoft.com/hiserver INTERNET SECURITY AND ACCELERATION SERVER 2004 ISA SERVER 2004 De certa maneira o successor do Proxy Server 2.0 da Microsoft, com algumas melhorias. utilizado para conectar a rede local da empresa, de uma maneira segura, Internet. Suas funes bsicas so as seguintes: Firewall Cache de pginas Maiores informaes e uma verso de avaliao para download podem ser encontradas no seguinte endereo: http://www.microsoft.com/isaserver MOBILE INFORMATION 2001 SERVER O Framework .NET no foi concebido apenas para o desenvolvimento de aplicaes que sero acessadas atravs de PCs ligados em rede ou computadores tradicionais. Com o Framework .NET, a Microsoft pretende fornecer uma slida plataforma de desenvolvimento, tambm para os diversos dispositivos mveis existentes, tais como telefones celulares, assistentes pessoais, Palm Pilots, etc. Dentro desta estratgia, o Mobile Information 2001 Server desempenha um papel fundamental, fornecendo suporte ao protocolo WAP 1.1. Usando o Mobile Information 2001 Server possvel, por exemplo, fazer com que as suas mensagens do Exchange sejam convertidas para o formato em que possam ser lidas por um celular ou qualquer outro dispositivo habilitado ao WAP. Maiores informaes e uma verso de avaliao para download podem ser encontradas no seguinte endereo: http://www.microsoft.com/servers/miserver/default.htm DESENVOLVIMENTO EM: ADO.NET PR-REQUISITOS Conhecimento bsico do Framework .NET. METODOLOGIA Descrio do ADO.NET. Com o ASP 3.0, a tecnologia preferida para o acesso a diferentes fontes de dados a tecnologia ADO Activex Data Objects, trabalhando em conjunto com OLE-DB, conforme ilustrado na Figura 13.11. O Activex Data Objects para o Framework .NET (ADO.NET) um conjunto de classes que expem servios para acesso a diversas fontes e formatos de dados, para os programadores, utilizando qualquer linguagem habilitada ao .NET. Cabe ressaltar que ADO.NET no um substituto para o ADO, pois as duas verses de componentes para acesso a dados podem continuar existindo em um mesmo servidor Web, por exemplo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7860000Curso Completo Ao instalarmos o Framework .NET, instalado, alm do suporte a pginas ASP.NET, todo o conjunto de classes do Framework .NET. Porm o acesso a pginas ASP tradicionais continua disponvel, o que significa que mesmo aps instalar o Framework .NET, todas as aplicaes criadas com ASP 3.0 ou verses anteriores do ASP, continuaro funcionando sem problemas, at que voc possa migr-las para ASP.NET. Ento em um mesmo servidor Web podemos ter uma pgina ASP, que acessa dados de um arquivo .mdb do Access utilizando ADO, convivendo com um aplicativo criado com ASP.NET, o qual acessa informaes de uma caixa de correio do Exchange e em Bancos de Dados do SQL Server 2005, utilizando ADO.NET. Figura 13.11 Acessando dados com ASP 3.0. ADO.NET foi projetado pensando nos desafios de criar programas baseados no modelo de n camadas, para a Internet, os quais precisam acessar dados de diferentes fontes. Alm disso, as aplicaes Internet atuais esto bem mais sofisticadas, onde necessrio manter o conceito de estado, o que difcil em um mundo como o da Internet, conhecido como Connection Less. Na Internet o usurio faz a conexo com o servidor, requisita a pgina, recebe o resultado e desfaz a conexo. Para manter o estado entre uma conexo e outra, no ASP 3.0, utilizvamos os objetos Session e Application. Manter o estado ficou muito mais simples com ASP.NET e ADO.NET. Outro fator importante a ser considerado que, cada vez mais, as aplicaes esto utilizando dados no padro XML. ADO.NET fornece meios de utilizar dados no padro XML. Os objetos e mtodos de ADO.NET so bastante diferentes dos utilizados com ADO. Um dos primeiros objetos de que sentiremos falta do tradicional Recordet, o qual era muito utilizado no ASP 3.0. Na Figura 13.12 temos uma viso geral da arquitetura do ADO.NET. ADO Jet Provider SQL Server Provider OLE DB Gerenciador ODBC OLE DB Providers Drivers ODBC Fontes de dados: Estruturadas e No estruturadas. Driver ODBC SQL Server Driver ODBC Microsoft Access Driver ODBC Oracle ORACLE Microsoft Access Microsoft Access Microsoft SQL Server Microsoft SQL Server Microsoft Exchange Server Exchange Server Provider proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000787 N O T A Esta figura foi retirada da documentao do Framework .NET. Figura 13.12 Uma viso geral da arquitetura do ADO.NET. Observe que no temos o tradicional objeto Recordet. No prximo item voc aprender mais detalhes sobre o corao do Framework .NET: CLR Common Language Runtime. DESENVOLVIMENTO EM: CLR COMMON LANGUAGE RUNTIME PR-REQUISITOS Conhecimento bsico do Framework .NET. METODOLOGIA Descrio detalhada do CLR. Nos tpicos anteriores falei rapidamente sobre o CLR. Agora chegou o momento de apresentar mais alguns detalhes sobre este, que, com certeza, o principal elemento do Framework .NET. O CLR o ambiente de execuo do Framework .NET. O CLR gerencia a execuo de qualquer aplicativo .NET, alm de fornecer uma srie de servios que facilitam e agilizam o desenvolvimento de aplicaes. Conforme discutido anteriormente, o maior benefcio do CLR que ele fornece uma srie de servios e funcionalidades, que nos modelos de desenvolvimento anteriores ao .NET tinham que ser codificados na prpria aplicao. Ao fornecer este conjunto de servios e funcionalidades, evita-se que o programador tenha que se preocupar com a maneira com a aplicao vai ser executada, com a alocao de memria, com liberao de memria e tantos outros aspectos que dificultavam o desenvolvimento de aplicaes. Com o suporte fornecido pelo CLR, o programador somente precisa se preocupar com a lgica da sua aplicao e no com a infra-estrutura necessria para a aplicao funcionar corretamente e sem problemas isso delegado ao CLR. .NET Data Provider Connection Transaction Command Parameters DataReader DataAdapter SelectCommand DeleteCommand UpdateCommand InsertCommand DataSet DataTable DataTableCollection ConstrainCollection DataRowCollection DataColumnCollection DataRelationCollection Database XML proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7880000Curso Completo O cdigo que executado sob o controle do CLR chamado de Managed Code. Vamos arriscar uma traduo: Cdigo Gerenciado. Este gerenciado significa: Sob o controle do CLR. Em contrapartida, cdigo que no for executado sob o controle do CLR, no caso de programas no .NET, chamado de no Managed Code, que traduziremos por cdigo no gerenciado. Os programas criados com linguagens habilitadas ao .NET e, portanto, executados sob o comando do CLR, podem se beneficiar das seguintes vantagens: Fcil integrao e interoperabilidade entre programas criados em diferentes linguagens. Fcil implementao e controle da segurana da aplicao. Utilizar a biblioteca de classes do Framework .NET. Melhor gerenciamento das diferentes verses de um mesmo componente, inclusive com a possibilidade de execuo simultnea de diferentes verses do mesmo componente, o que conhecido por: Syde-by-syde execution. Gerenciamento automtico da alocao e liberao da memria. COMPILAR OU NO COMPILAR, EIS A QUESTO? Outro ponto importante a esclarecer se os programas .NET so compilados ou interpretados. Con- fesso que, na opinio deste autor, pouca importncia tem se compilado ou interpretado, desde que o desempenho final seja satisfatrio. Mas como todo programador que se preza um pouco teimoso, e apaixonado por uma discusso acalorada, vamos esclarecer este assunto antes que os nimos se exaltem. Ao criarmos um programa, utilizando uma linguagem habilitada ao .NET, como por exemplo o VB.NET ou o C#, o cdigo-fonte do programa, ao ser compilado-gera cdigo MSIL Microsoft Intermediate Language. Senhores! Com calma. Ainda no hora de comear a malhar o .NET. O CLR, que ser responsvel pela execuo e controle do cdigo MSIL gerado, COMPILA o cdigo MSIL para cdigo nativo. Com isso, o cdigo que executado pelo CLR cdigo COMPILADO nativo da plataforma onde est instalado o Framework .NET. At o momento, a nica plataforma compatvel a dobradinha Windows/Intel. Porm a Microsoft est tornando disponvel, publicamente, as especificaes para CLR e MSIL, o que possibilita que outras empresas desenvolvam um Framework .NET para outras plataformas, como, por exemplo, o UNIX ou LINUX. Nos veremos mais adiante que, mesmo uma pgina ASP.NET, compilada no servidor Web, antes de ser enviada para o navegador do cliente. Em resumo, todo e qualquer cdigo executado pelo CLR, cdigo compilado nativo. Agora sim. Fiquem vontade para discutir, dizer que no bem assim, que esse tal de MSIL no tem nada a ver, mais um chope e assim por diante. O PAPEL DOS METADADOS (METADATA). Para que o CLR possa fornecer uma srie de servios ao managed code, os compiladores das linguagens habilitadas ao .NET devem ser capazes de criar metadados. Os metadados contm informaes sobre os tipos, membros e referncias contidas no cdigo do programa. Os metadados so gravados com o prprio cdigo do programa. Desta maneira toda a informao necessria para que o programa funcione est contida no seu prprio cdigo, o que faz com que no seja necessrio o registro dos componentes proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000789 N O T A do programa, diferente do que acontecia com os componentes COM/COM+. O CLR utiliza metadados para localizar e carregar programas ou componentes, organizar as vrias instncias de um mesmo componente na memria, resolver a chamada de mtodos, gerar cdigo nativo, garantir a segurana de acesso e definir os limites para o contexto de execuo de um componente ou programa. O CLR automaticamente gerencia a alocao de objetos na memria, bem como as referncias aos objetos. Quando no houver mais nenhuma referncia ao objeto, o que significa que este no est mais sendo utilizado, o CLR automaticamente remove o objeto, liberando mais memria para o sistema. Com isso os tradicionais problemas de memory leaks programas que alocam recursos de memria e no liberam, fazendo com que a quantidade de memria disponvel fique reduzida, at o ponto de fazer com que o prprio sistema operacional fique instvel e a mquina tenha que ser reinicializada deixam de existir ou, mais realisticamente, so bastante minimizados. Vejam o quanto fica simplificada a tarefa de desenvolvimento, uma vez que o programador no precisa preocupar-se com alocao e liberao de memria, apenas com a lgica do seu programa. INTEGRAO ENTRE DIFERENTES LINGUAGENS: PROMESSA OU REALIDADE? Com o CLR fica fcil a criao de componentes e aplicaes nas quais os objetos sejam capazes de interagir, mesmo que codificados em diferentes linguagens. Por exemplo, podemos criar uma classe chamada Clientes, em VB.NET. Podemos criar uma classe Clientes Especiais, em C#, herdada da classe Clientes, que foi criada em VB.NET. Com isso a nossa classe Clientes Especiais ir herdar todas as propriedades e mtodos da classe Clientes. Mais adiante apresentarei os principais conceitos de orientao a objetos, como por exemplo: classes e herana. Essa integrao entre diferentes linguagens possvel, pois todas as linguagens habilitadas ao .NET, tm acesso a um sistema de tipos comuns CTS Common Type System. Falaremos um pouco mais sobre o CTS mais adiante, neste captulo. Alm disso cada componente ou aplicativo possui informaes, na forma de metadados, sobre a sua estrutura, sobre os mtodos e propriedades que o objeto possui e que podem ser acessados por outros componentes. DESENVOLVIMENTO EM: O PROCESSO DE EXECUO DE CDIGO DO CLR PR-REQUISITOS Conhecimento bsico do Framework .NET e do CLR. METODOLOGIA Descrio detalhada do processo de execuo de cdigo no CLR. Vamos ver quais os passos envolvidos, desde a criao de uma aplicao utilizando uma das linguagens habilitadas ao .NET, at a execuo da aplicao, sob o controle do CLR. Os passos para a criao e execuo de uma aplicao .NET podem ser resumidos da seguinte maneira: Criar a aplicao ou componente utilizando uma linguagem habilitada ao .NET (VB.NET, C#, etc.). proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7900000Curso Completo Compile o cdigo da sua aplicao ou componente para gerar cdigo MSIL. O compilador da linguagem que voc est utilizando compila o seu cdigo fonte para MSIL e acrescenta os metadados necessrios. Em tempo de execuo, um compilador JIT (Just In Time) do CLR transforma o cdigo MSIL em cdigo nativo, COMPILADO. O cdigo nativo executado, utilizando toda a infra-estrutura disponibilizada pelo CLR. Na Figura 13.13, temos uma ilustrao destes passos. Figura 13.13 O processo de execuo de cdigo do CLR. Conforme ilustrado na Figura 13.13, quando compilamos o cdigo-fonte criado por uma linguagem habilitada ao .NET, geramos cdigo MSIL, a qual um conjunto de instrues, independente da CPU, conjunto este que pode ser convertido (pelo JIT) para cdigo nativo. O cdigo MSIL inclui instrues para carregar, armazenar, inicializar e chamar mtodos, instrues para operaes aritmticas e lgicas, controle de fluxo do programa, acesso direto a memria, tratamento de excees e demais operaes necessrias execuo do programa. Antes que o cdigo MSIL possa ser executado ele precisa ser convertido para cdigo especfico da CPU em questo. Isto feito pelo JIT Just in time compiler. O CLR disponibiliza compiladores JIT para cada arquitetura suportada pelo CLR; desta maneira o mesmo conjunto de instrues MSIL pode ser compilada e executada em qualquer arquitetura para a qual exista um compilador JIT. CDIGO-FONTE DA APLICAO (VB.NET, C#, etc.) Compilador VB.NET, C#, etc. MSIL Compilador JIT - Just In Time do CLR CDIGO NATIVO PARA EXECUO proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000791 Esta a estratgia da Microsoft para fazer com que o cdigo MSIL de aplicaes .NET possa ser executado em diferentes plataformas, desde servidores Windows ou no Windows, at dispositivos mveis para os quais esteja disponvel um compilador JIT. claro que a implementao em outras plataformas que no o Windows, como por exemplo o UNIX, depender da implementao de terceiros. Por exemplo, a HP pode querer implementar um compilador JIT que rode no HP-UX, fazendo com que aplicaes .NET possam rodar nesta plataforma. Se surgiro implementaes para outras plataformas uma questo que somente o tempo e o mercado diro. Quando o compilador de uma linguagem habilitada ao .NET produz o cdigo MSIL, este tambm cria os metadados necessrios. O cdigo MSIL e os metadados esto contidos em um arquivo PE portable executable. O portable significa que este arquivo pode, em tese, ser compilado e executado em qualquer plataforma para a qual existe um compilador JIT. A presena dos metadados, juntamente com o cdigo MSIL, torna o cdigo autodescritivo, o que significa que no temos mais a necessidade de bibliotecas de tipo (type libraries) ou IDL Interface Definition Language dispositivos que eram necessrios ao funcionamento de componentes baseados no modelo COM/COM+. Voltamos a salientar este ponto, o componente criado para o .NET possui, na forma de metadados, toda a informao necessria ao seu funcionamento e necessria para que possa ser acessado por outros componentes. O CLR localiza e extrai os metadados do arquivo PE durante a execuo, medida que isso vai sendo necessrio. MAIS ALGUMAS OBSERVAES SOBRE O JIT O processo de compilao utilizado pelo JIT procura fazer uma srie de otimizaes, para tornar o cdigo nativo gerado, o mais enxuto e com o melhor desempenho possvel. O JIT detecta se algum mtodo ou propriedade no ser utilizado durante a execuo do programa. Ao invs de converter todo o cdigo MSIL, contido no arquivo PE, o JIT converte apenas o cdigo que realmente ser necessrio para a execuo do programa. Isso faz com que a compilao seja mais rpida, com que sejam poupados recursos como por exemplo memria e o cdigo resultante otimizado, tanto em termos de tamanho quanto em termos de velocidade de execuo. Como parte da compilao do MSIL para cdigo nativo, o cdigo deve passar por um processo de verificao, a no ser que tenha sido definida uma poltica de segurana que permite ao cdigo passar pela verificao. O processo de verificao faz uma anlise do cdigo MSIL e dos metadados, para definir se o cdigo pode ser definido como type safe. Para que o cdigo possa ser definido como type safe, ele somente deve acessar regies de memria para as quais tenha autorizao. Este processo necessrio para garantir que os objetos esto isolados uns dos outros, de tal maneira que um objeto no tente alterar ou corromper dados de outros objetos. Na plataforma Windows 9x, quando um programa tenta acessar a rea de memria utilizada por outro programa, gerada uma Falha Geral de Proteo, com a famigerada mensagem Voc Executou uma Operao Ilegal e o seu programa ser fechado. Para que o cdigo passe no teste de type safe, ele deve atender as seguintes condies: Todas as referncias feitas a um determinado tipo so compatveis com o tipo que est sendo referenciado. Somente operaes devidamente definidas so invocadas pelo objeto. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7920000Curso Completo N O T A possvel verificar e confirmar a identidade do objeto. Isso evita que um componente, por exemplo um vrus, se faa passar por um componente vlido, porm com um comportamento bem diferente do verdadeiro componente. O processo de verificao tambm faz uma anlise do cdigo MSIL, para ver se este foi corretamente gerado. Se as polticas de segurana da nossa aplicao definem que o cdigo deve passar na verificao de type safe e o cdigo no passar nesta verificao, uma exceo ser gerada quando o cdigo for executado. O mecanismo de verificao do cdigo um exemplo tpico de funcionalidade disponibilizada pelo Framework .NET, a qual, nos modelos anteriores, precisava ser desenvolvida pelo programador. Um detalhe importante que nem todo o cdigo MSIL compilado para cdigo nativo de uma s vez. A compilao acontece em nvel de mtodo. Quando um mtodo chamado, o cdigo MSIL do mtodo compilado, o cdigo nativo gerado pelo JIT e o mtodo executado. O cdigo nativo gerado mantido. Quando o mtodo for chamado pela segunda vez, o cdigo nativo gerado na primeira chamada ser executado, evitando, com isso, que o cdigo do mtodo tenha que ser compilado a cada chamada do mtodo, o que acarretaria uma perda considervel de desempenho. DESENVOLVIMENTO EM: ASSEMBLIES PR-REQUISITOS Conhecimento bsico do Framework .NET e do CLR. METODOLOGIA Descrio dos assemblies. Conforme descrito anteriormente, chegou o momento de apresentarmos mais alguns detalhes sobre assemblies e sobre o formato (ou quem sabe anatomia) de uma aplicao .NET. UMA DEFINIO EM POUCAS PALAVRAS Para aplicaes tradicionais do Windows, anteriores ao modelo .NET, a aplicao final um arquivo executvel ou um arquivo executvel mais um conjunto de .DLL e componentes. Uma DLL pode conter um objeto COM/COM+ em uma biblioteca de tipos (typelib). Para o Framework .NET, os diversos componentes de uma aplicao so empacotados atravs da utilizao de assemblies. Um assembly contm todo o cdigo MSIL gerado pelo compilador, os metadados e os demais arquivos necessrios ao funcionamento da aplicao. Cada assembly tambm contm um manifesto. O manifesto contm as seguintes informaes: Uma lista dos arquivos contidos no assembly. A definio de quais tipos e recursos do assembly podem ser acessados por outros componentes ou programas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000793 Um mapeamento entre os tipos e recursos disponibilizados pelo assembly e os arquivos que contm os tipos e recursos. Uma lista de outros assemblies, dos quais o assembly depende para o seu correto funcionamento. Informaes sobre a identidade do assembly, incluindo o nome e a verso do assembly. Se o assembly for pblico, como por exemplo um Web Service, o manifesto tambm pode conter a chave pblica do assembly. Este um mecanismo semelhante, em funcionalidade, utilizao de um certificado digital, para identificar a origem de um controle ActiveX. Um assembly contm toda a informao necessria ao seu funcionamento. Ao definirmos um assem- bly, ele pode estar contido em um nico arquivo ou em mltiplos arquivos. A vantagem de utilizar mltiplos arquivos que as diferentes partes do assembly podem ser carregadas e executadas medida que forem sendo utilizadas e no todos de uma s vez. FUNES DO ASSEMBLY Pela descrio anterior podemos concluir que o assembly um elemento fundamental na criao de aplicaes .NET. Os assemblies foram projetados, principalmente, para simplificar o processo de distribuio de aplicaes e para solucionar o problema do controle de verses existente no modelo COM/COM+. Um assembly responsvel pelas seguintes funes: Contm o cdigo executado pelo CLR. O cdigo MSIL contido em um arquivo PE (portable executable) no poder ser executado se o cdigo MSIL no estiver associado a um manifesto, o qual por sua vez faz parte de um assembly. a unidade bsica para atribuio de permisses e configuraes de segurana. Podemos definir, em nvel de assembly, quem pode acessar o assembly e com que nvel de acesso. uma unidade de referncia, pois as informaes contidas no manifesto do assembly so utilizadas para resolver tipos e para atender requisies de outros assemblies. Estas informaes definem quais mtodos e propriedades so visveis e podem ser acessados externamente. O manifesto tambm contm informaes a respeito de quais assemblies o assembly em questo depende. uma unidade para definio de verso. A atribuio de um nmero de verso feita em nvel de assembly. uma unidade de distribuio das aplicaes .NET. Quando uma aplicao inicializada, somente o assembly chamado na inicializao da aplicao precisa estar disponvel. Outros assemblies somente so chamados medida que forem sendo utilizados. Essa uma caracterstica muito importante, principalmente para aplicaes Web, onde a velocidade das conexes sempre um fator crtico a ser considerado. Assemblies podem ser estticos ou dinmicos. Assemblies estticos podem incluir tipos do Framework .NET (interfaces e classes), alm dos recursos utilizados pelo assembly (bitmaps, .jpg, arquivos de som ou imagem, etc.). Assemblies estticos so gravados em disco em arquivos PE. Na verdade um arquivo PE pode ser gravado na forma de um EXE ou uma DLL. Assemblies dinmicos rodam diretamente da memria e no so salvos no disco antes de serem executados. Aps a execuo podemos salvar assemblies dinmicos em disco. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7940000Curso Completo COMPONENTES DO ASSEMBLY Um assembly esttico formado pelos seguintes componentes: Manifesto, o qual contm metadados do assembly. Metadados sobre os tipos do assembly (Type metadata). Cdigo MSIL. Demais recursos necessrios, como por exemplo arquivos grficos, arquivos de vdeo, etc. Podemos agrupar todos os elementos constituintes do assembly em um nico arquivo, conforme ilustrado na Figura 13.14. Figura 13.14 Assembly e seus componentes em um nico arquivo. Os componentes do assembly tambm podem estar divididos em diversos arquivos. Estes arquivos podem conter mdulos de cdigo compilado, recursos (como por exemplo arquivos grficos ou de vdeo) ou qualquer outro arquivo necessrio ao funcionamento da aplicao .NET. Existem duas razes para a colocao dos componentes de um assembly em mltiplos arquivos: Quando precisamos combinar, na mesma aplicao, componentes ou mdulos criados em diferentes linguagens. Para otimizar o download dos componentes de uma aplicao, de tal maneira que os componentes ou mdulos menos utilizados somente sejam carregados quando forem necessrios. Esta uma alternativa importante, principalmente para aplicaes Web. Na Figura 13.15 temos o exemplo de um assembly composto de quatro arquivos: Um arquivo o mdulo principal. criado em VB.NET. Outro arquivo o mdulo com funes (Criado em C#) usadas pelo assembly principal. Um arquivo .bmp. Um arquivo .jpg. Metadados do Assembly Type metadata Cdigo MSIL Demais recursos proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000795 Figura 13.15 Um assembly, vrios arquivos. O QUE TEMOS NO MANIFESTO? O Manifesto contm o seguinte conjunto de informaes (metadados): Qual a relao entre os diferentes componentes do assembly. Informaes sobre a verso do assembly. Escopo. Informaes para resolver referncias a outras classes e componentes. O manifesto pode estar contido em um arquivo PE Portable executable (pode ser um .exe ou uma .dll), juntamente com o cdigo MSIL ou pode estar em um arquivo PE separado, o qual contm somente o manifesto. Esta ltima situao acontece quando temos um assembly formado de diversos arquivos. As informaes contidas no manifesto so responsveis pelas seguintes funes: Relao dos arquivos que compem o assembly. Gerencia o mapeamento entre os tipos e recursos disponibilizados pelo assembly e os arquivos onde esto contidas as declaraes e implementaes dos respectivos tipos e recursos. Relaciona os assemblies dos quais o assembly em questo dependente. Metadados do Assembly Type metadata Cdigo MSIL Type metadata Cdigo MSIL MeuAssembly.dll Criado em VB.NET Mdulo utilitrio Criado em C# File1.bmp File2.jpg Recursos: grficos e outros proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7960000Curso Completo Em resumo, reforando o que j foi comentado anteriormente, este conjunto de informaes fornece uma autonomia ao assembly, de tal maneira que o assembly contm toda a informao necessria ao seu prprio funcionamento e sobre como ser acessado por outros objetos. Isso evita que o assembly tenha que ser registrado. Com estes recursos, o processo de instalar uma aplicao .NET est resumido a copiar os arquivos necessrios; como diriam os ainda apaixonados pelo DOS, voltamos ao estilo xcopy de instalao, em referncia ao comando xcopy, o qual utilizado para copiar arquivos ou pastas. DESENVOLVIMENTO EM: CTS COMMON TYPE SYSTEM PR-REQUISITOS Conhecimento bsico do Framework .NET e do CLR. METODOLOGIA Descrio do CTS. O CTS desempenha um papel fundamental para garantir e facilitar e interoperabilidade entre programas e componentes criados em diferentes linguagens do .NET. O CTS define a maneira como os tipos de dados so declarados, usados e gerenciados pelo CLR. Atravs do CTS temos a garantia de que, por exemplo, um inteiro ter as mesmas caractersticas, independente da linguagem na qual o inteiro estiver sendo utilizado. Uma das maiores dificuldades, no modelo COM/COM+, em fazer com que componentes escritos em diferentes linguagens pudessem interagir o fato de que cada linguagem possui o seu prprio conjunto de tipos, o qual no compatvel com o conjunto de tipos das demais linguagens. Colocando de uma maneira mais simples: No modelo COM/COM+, o tamanho, forma de armazenamento e demais caractersticas de cada tipo so dependentes da linguagem. O CTS responsvel pelas seguintes funes: Fornecer uma estrutura de dados e tipos padronizados, estrutura esta que torna a integrao entre diferentes linguagens uma realidade, alm de garantir uma execuo mais rpida, uma vez que as converses de tipo passam a ser coisa do passado. Fornece um modelo orientado a objetos, o qual capaz de suportar qualquer linguagem habilitada ao .NET. Define algumas regras e padres que as linguagens habilitadas ao .NET devem obedecer, o que ajuda a garantir que objetos escritos em diferentes linguagens sejam capazes de interagir e trocar mensagens. CLASSIFICAO DOS TIPOS DO CTS Temos duas categorias principais de tipos no CTS: Value types: Toda linguagem de programao fornece um conjunto de tipos bsicos de dados, como por exemplo: inteiros, caracteres, nmeros reais, strings, etc. Estes tipos bsicos so passados por valor. Em outras palavras, se tenho uma varivel x cujo valor 5 utilizo o seguinte comando: y = x proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000797 Neste caso estou passando o valor contido na varivel x para a varivel y. Alteraes feitas na varivel y no afetaro o valor original da varivel x. No Framework .NET estes tipos bsicos, passados por valor, so chamados de value types. Estes tipos bsicos fazem parte do conjunto de classes disponibilizado pelo Framework .NET. Por exemplo, um inteiro acessado como System.Int32 e um valor boleano como System.Boolean. Estes tipos disponibilizados na prpria biblioteca de classes do Framework .NET so chamados de built- in value types. Para fornecer uma maior flexibilidade, o Framework .NET tambm permite que sejam criados os chamados User-defined value types. Com isso o programador pode definir tipos personalizados, os quais so derivados da classe bsica System.ValueType. Isso permite a criao de tipos especficos, de acordo com as necessidades de cada aplicao. Por exemplo, para aplicaes de engenharia, podemos criar um tipo para representar nmeros complexos ou matrizes com caractersticas definidas. Reference types: Este tipo contm uma referncia para a localizao do valor do tipo. Em outras palavras, contm o endereo de memria onde est armazenado o valor da varivel. Vamos imaginar que x seja uma varivel do tipo reference type. Agora vamos fazer uma outra varivel y, tambm do tipo reference type, como sendo igual a x: y = x Neste caso, o endereo onde est armazenado o valor de x foi atribudo varivel y. Se alterarmos o valor de x, o que acontece com y? Como y contm uma referncia ao endereo da varivel x, ao alterarmos x, y passar a enxergar o valor modificado. Por exemplo, se utilizarmos o comando Console.Writeline(y), ser exibido o novo valor da varivel x. DESENVOLVIMENTO EM: .NET FRAMEWORK CLASS LIBRARY BIBLIOTECA DE CLASSES DO FRAMEWORK .NET PR-REQUISITOS Conhecimento bsico do Framework .NET e do CLR. METODOLOGIA Descrio do .NET Framework Class Library. O Framework .NET fornece uma biblioteca hierrquica de classes. Esta biblioteca pode ser acessada por qualquer linguagem habilitada ao .NET. Nesta biblioteca temos milhares de classes, interfaces e estruturas, que disponibilizam os mais variados tipos de servios e funcionalidades, como por exemplo: Acesso a fontes variadas de dados. Configuraes de segurana. Desenvolvimento de componentes e Web services. Manipulao de objetos grficos. Leitura e escrita em disco. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 7980000Curso Completo Servio de sockets, com a possibilidade do envio e recebimento de dados utilizando uma grande variedade de protocolos de rede. Criao de aplicaes Web, com servios de fila de mensagens, correio eletrnico, etc. Manipulao de dados e esquemas XML. Criar aplicaes Win32 tradicionais atravs do uso de Win Forms. Criar aplicaes ASP.NET utilizando Web Forms. Acessar as informaes contidas nos assemblies, na forma de metadados. As funcionalidades oferecidas pela biblioteca de classes do Framework .NET facilitam a criao de programas, uma vez que muitas funes j esto prontas para serem utilizadas, evitando que estas tenham que ser implementadas em cada programa. A utilizao de classes comuns a todas as linguagens do Framework .NET tambm facilita a interoperabilidade entre diferentes linguagens. Podemos utilizar as classes diretamente em nossos programas ou podemos criar classes que herdam os mtodos e propriedades de uma determinada classe e adicionar as modificaes necessrias. Vejam que aqui estamos utilizando o conceito de herana. System System.Int32 ... System.String System.Data ... System.Security Figura 13.16 Uma representao parcial do espao de nomes System. Como so milhares de classes, cada uma com seus mtodos e propriedades, o Framework .NET precisa organizar estas classes de uma maneira a evitar conflito de nomes. A maneira encontrada pelo Frame- work .NET atravs da utilizao de um espao de nomes (namespace). Um espao de nomes simplesmente um agrupamento lgico das classes, estruturas e interfaces relacionadas. A maioria das classes est contida no espao de nomes System. Diretamente ligado a system temos a definio de tipos bsicos como por exemplo: Int32, String, etc. Um exemplo de classe de segundo nvel, dentro do espao de nomes System, a classe System.Data, a qual fornece uma srie de objetos, mtodos e propriedades, para acesso s mais variadas fontes de dados. Temos tambm uma classe de segundo nvel chamada System.Security, a qual fornece servios para configuraes da segurana de acesso s aplicaes .NET. E assim vamos formando uma imensa hierarquia de classes. As classes de segundo nvel, como System.Data e System.Security, herdam todos os mtodos e propriedades da classe me proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000799 N O T A System. Este um dos princpios da orientao a objetos: Herana. No prximo item falaremos mais sobre a herana e os demais fundamentos da orientao a objetos. Na Figura 13.16, temos uma representao parcial do espao de nomes System, no qual representamos apenas alguns tipos bsicos, ligados diretamente a System e s classes derivadas System.Data e System.Security. Podemos continuar nos aprofundando na hierarquia de classes. Por exemplo, existem classes derivadas de System.Data. A classe System.Data.SqlClient contm toda a funcionalidade necessria para acessar dados de um servidor SQL Server 2000 ou SQL Server 2005. J a classe System.Data.OleDb fornece funcionalidades para conexo com qualquer fonte de dados, para a qual esteja disponvel um OLE-DB Provider (para mais detalhes sobre OleDB Provider, consulte o Captulo 12). Se acrescentssemos mais estas duas classes, o espao de nomes System ficaria conforme indicado na Figura 13.17. Figura 13.17 System.SqlClient e System.OleDb. Vejam que a hierarquia de classes vai crescendo. Para uma descrio completa, de todas as classes do Framework .NET, consulte o item .NET Framework Class Library, dentro do tpico .NET Framework Reference, na documentao do Framework .NET, conforme indicado na Figura 13.18. Lembrando que, uma vez instalado o Visual Studio .NET (com o qual voc aprender a trabalhar no Captulo 15), voc pode acessar a documentao do produto utilizando o comando: Iniciar -> Todos os Programas -> Microsoft .NET Framework SDK -> Documentation. System System.Int32 ... System.String System.Data ... System.Security System.Data.OleDB ... System.Data.SqlClient proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8000000Curso Completo Figura 13.18 Documentao do Framework .NET. Vamos fazer uma breve descrio das principais classes do .NET Framework Class Library. Microsoft.Csharp: Suporte a linguagem C# do Framework .NET. Microsoft.Jscrip: Suporte a linguagem JScript no Framework .NET. Microsoft.VisualBasic: Contm o Run Time para o VB.NET e fornece o suporte a linguagem no Framework .NET. Microsoft.Win32: Fornece dois tipos de classes; um que trata dos eventos gerados pelo sistema operacional e outro que fornece funes para acessar e gravar informaes na registry do sistema operacional. System: a classe principal para todo o espao de nomes System. Contm todas as caractersticas comuns a todas as classes, uma vez que as classes derivadas de System herdam suas caractersticas. Tambm contm os tipos bsicos, como por exemplo inteiros de 16, 32 ou 64 bits, string, byte, etc. System.Collections: Contm as interfaces e classes que definem vrias colees de objetos, como por exemplo listas, filas, arrays e dicionrios. System.Data: Contm a maioria das classes que compem a arquitetura do ADO.NET. Com ADO.NET, podemos construir componentes capazes de gerenciar, de uma maneira eficiente, dados de mltiplas fontes. Em um ambiente desconectado (connection less) como a Internet, proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000801 N O T A ADO.NET disponibiliza uma srie de ferramentas para requisitar, alterar e sincronizar dados em uma arquitetura de mltiplas camadas. O principal elemento do ADO.NET uma classe chamada DataSet. System.Data.Common: Contm as classes que so compartilhadas por todos os .NET data providers (provedores de dados para o .NET). Um .NET data provider uma coleo de classes que fornece acesso para uma determinada fonte de dados, como por exemplo dados em um mainframe ou em um servidor SQL Server 2000 ou SQL Server 2005. System.Data.OleDb: Contm as classes que fornecem acesso a qualquer fonte de dados para a qual exista um OLE-DB Provider disponvel. System.Data.SqlClient: Contm um conjunto de classes que fornece um acesso otimizado ao SQL Server. Utiliza o driver nativo para o SQL Server, ao invs de um OLE-DB Provider ou uma fonte ODBC. Por isso o acesso mais rpido. System.Diagnostics: Um conjunto de classes que permite que seja feita a depurao e acompanhamento da execuo do cdigo das aplicaes .NET. Tambm fornece classes para leitura e escrita no log de eventos, para inicializar servios do sistema operacional, para monitorar a performance do sistema atravs da utilizao de contadores de desempenho. System.DirectoryServices: Um conjunto de classes que fornece para as aplicaes .NET acesso ao Active Directory do Windows 2000 Server ou do Windows Server 2003. As classes de System.DirectoryServices podem ser utilizadas com qualquer Active Directory Service Provider disponvel. Atualmente esto disponveis os seguintes: 1. IIS Internet Information Server 2. LDAP Lightweight Directory Access Protocol 3. NDS Novel Directory Services 4. WinNT Para acesso ao diretrio do Windows NT 4.0. Para que o programador possa utilizar de maneira eficiente estas classes, um bom conhecimento do diretrio em questo exigido. System.Drawing: Um conjunto de classes com funes grficas da biblioteca grfica do Frame- work .NET, a qual conhecida como GDI+ (bem que poderia ser GDI.NET). Fornece mtodos para desenhar elementos bsicos no vdeo, como por exemplo retngulos, crculos, uma linha reta, um ponto, etc. System.Globalization: Este namespace contm o conjunto de classes com as funcionalidades necessrias para a construo de aplicaes com suporte a diferentes idiomas. System.IO: Um conjunto de classes com suporte a leitura e escrita, sncrona e assncrona para stream de dados e arquivos em disco. System.Messaging: Contm um conjunto de classes para habilitar os programas .NET a trabalhar com filas, enviar mensagens para uma fila, ler mensagens de uma fila, etc. No Windows NT 4.0 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8020000Curso Completo tnhamos o MSMQ Microsoft Message Queue que atuava como servidor, disponibilizando servios de filas para aplicaes COM. System.Net: Disponibiliza uma interface de programao bastante fcil de utilizar, a qual nos d acesso para a grande maioria dos protocolos disponveis na Internet. System.Security: Um conjunto de classes com mtodos para a definio das configuraes bsicas de segurana para aplicaes .NET. System.Security.Cryptography: Disponibiliza servios de criptografia, incluindo codificao e decodificao de dados, hashing, gerao de nmeros aleatrios e autenticao de mensagens. System.Web: Contm uma srie de classes e interfaces para a comunicao browser/servidor web. Por exemplo, existe uma classe chamada HTTPRequest, a qual disponibiliza uma srie de informaes a respeito da requisio HTTP feita pelo cliente. Existem outros namespaces, herdados de System.Web, como por exemplo: System.Web.Caching, System.Web.Configuration, System.Web.Hosting, System.Web.Mail, System.Web.SessionState, etc. System.Windows.Forms: Contm classes para a criao de aplicaes Win32, as quais podem ter acesso a todos os elementos da interface do Windows, como por exemplo botes, menus, barras de rolagem, etc. Neste namespace encontraremos uma classe chamada Form alm de muitos outros controles que podem ser utilizados para a criao da interface do usurio. System.XML: o namespace que contm as classes que do suporte ao padro XML. Apresentamos apenas uma descrio bsica dos principais namespaces do Framework .NET. Livros inteiros podem ser escritos sobre um nico namespace como por exemplo System.Net ou System.Security. A melhor fonte de consulta para as classes, mtodos e propriedades de um namespace a prpria documentao do Visual Studio .NET. Agora vamos fazer uma reviso dos principais conceitos de Orientao a Objetos. importante a reviso destes conceitos uma vez que a linguagem C# e todo o Framework .NET so baseados nos conceitos de Orientao a Objetos. DESENVOLVIMENTO EM: CONCEITOS BSICOS DE ORIENTAO A OBJETOS PR-REQUISITOS Conhecimento bsico do Framework .NET e do CLR. METODOLOGIA Descrio dos princpios bsicos de orientao a objetos. Vamos fazer uma reviso dos principais conceitos de orientao a objetos. A orientao a objetos, quer seja como metodologia de anlise, projeto ou programao, foi criada com o objetivo de resolver problemas que a programao estruturada no foi capaz. A orientao a objetos possui os seguintes objetivos bsicos: Produtividade. Incentivo a boas prticas de programao. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000803 Uma modelagem mais prxima do entendimento do usurio final. Reutilizao de cdigo. Facilidade de manuteno do cdigo. Embora a proposta de orientao a objetos seja bastante consistente, esta ainda no teve o nvel de implementao esperado. No cabe aqui discutir os motivos que fizeram com que a velocidade de adoo ficasse abaixo da esperada. Este fato ainda mais interessante, uma vez que a grande maioria das empresas admite que a orientao a objetos oferece uma srie de vantagens em relao ao modelo de programao estruturada. Porm a mudana para um novo modelo envolve uma nova maneira de pensar, uma necessidade de treinamento e, principalmente, uma mudana cultural. Esta ltima sem sombra de dvidas a mudana mais difcil. Vamos revisar os seguintes conceitos bsicos: O que um objeto? Mensagens Classes Herana Instncias Reutilizao de cdigo O QUE UM OBJETO? Na programao estruturada ns temos uma separao entre procedimentos e os dados sobre os quais os procedimentos atuam. Um procedimento pode ser uma funo que retorna um valor ou uma procedure que realiza uma srie de operaes, podendo ou no retornar um valor. Porm este modelo apresenta srias dificuldades do ponto de vista do usurio. Ao fazer a anlise e projeto de um programa, o analista precisa traduzir as necessidades dos usurios em termos de procedimentos, funes, mdulos, etc. Existe uma diferena muito grande entre a linguagem dos usurios e a linguagem dos analistas/programadores. Um objeto uma entidade que contm, alm dos dados, todas as funes que atuam sobre estes dados. Ou seja, um objeto composto dos dados que descrevem o objeto (propriedades) e das operaes que podem ser realizadas sobre estes dados (mtodos). Esta abordagem j um pouco mais prxima da abordagem entendida pelos usurios finais do sistema. Vamos imaginar um sistema para o departamento de recursos humanos. Os usurios falam em termos de empregados, cargos, etc. Poderamos ter um objeto chamado Funcionrio. Este objeto poderia conter diversas propriedades, tais como: Matrcula Nome Endereo Fone Data de Admisso proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8040000Curso Completo Data de Aniversrio Nome do Pai Nome da Me Nmero da Identidade Nmero do CPF Cargo Salrio Com isso podemos observar que as propriedades descrevem as caractersticas de um determinado objeto. O conjunto de valores contidos nas propriedades de um determinado objeto define o seu estado atual. Alm das propriedades o objeto pode conter mtodos. Os mtodos descrevem aes que podem ser realizadas pelo objeto ou no objeto. Por exemplo, o nosso objeto funcionrio poderia ter um mtodo chamado pagamento, outro chamado transferncia, mais um chamado promoo e assim por diante. Um mtodo, na prtica uma funo ou procedimento que realiza uma determinada ao. Os mtodos de um objeto podem receber parmetros e ter o seu comportamento alterado, dependendo do valor dos parmetros recebidos. Por exemplo, o mtodo Promoo, de um objeto funcionrio, pode receber, como parmetros, a matrcula do funcionrio, a data da promoo e o cdigo do novo cargo. Dentro do mtodo Promoo pode ser chamado um mtodo AtualizaSalrio, o qual atualiza o valor do salrio do funcionrio, de acordo com o novo cargo que o funcionrio ir ocupar. Na Figura 13.19 temos uma representao do objeto Funcionrio. FUNCIONRIO Propriedades Mtodos Representam as caractersticas do objeto. Representam as aes. Figura 13.19 Objeto Funcionrio mtodos e propriedades. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000805 MENSAGENS Os objetos se comunicam atravs de um mecanismo de troca de mensagens. Mensagens um mecanismo de comunicao entre objetos atravs do qual se desencadeia a execuo de um mtodo especfico. Atravs do mecanismos de troca de mensagens um objeto pode invocar mtodos de outros objetos e receber os resultados da execuo do mtodo invocado. No desenvolvimento baseado em padres tais como COM/COM+, existem mtodos proprietrios para troca de mensagens. Alm disso, cada linguagem de programao possui um conjunto distinto de tipos de dados. Desta maneira a troca de mensagens entre objetos criados em diferentes linguagens no uma tarefa simples, fato este j bastante salientado anteriormente. J no Framework .NET existe um sistema de tipos comuns a todas as linguagens: CTS Common Type System. A existncia do CTS facilita, enormemente, a interao entre objetos criados em diferentes linguagens. Outra vantagem do Framework .NET que ele utiliza um sistema para troca de mensagens, baseado no padro XML e no protocolo SOAP, ambos adotados como um padro de fato pela indstria de TI. Outro termo relacionado com orientaes a objetos instncia. Quando um programa carrega um determinado objeto na memria, dizemos que foi feita uma instncia do objeto. Ao carregar na memria estamos reservando recursos para armazenar as caractersticas do objeto atravs da definio dos valores de suas propriedades e tambm recursos para que os mtodos do objeto possam ser executados. CLASSES Se pesquisarmos a bibliografia sobre orientao a objetos encontraremos um sem-fim de definies para classes. Vamos inicialmente apresentar algumas das definies formais encontradas na bibliografia. Depois vamos a uma, digamos, explicao menos formal: Classes constituem modelos que so utilizados para a criao de objetos. Nas classes so descritos a estrutura de dados (atravs das propriedades) e o comportamento (atravs de seus mtodos) de um ou mais objetos similares que possuem seus dados estruturados da mesma forma e so manipulados pelos mesmos mtodos. Um objeto uma instncia de uma classe que criada em tempo de execuo. Classes so puramente uma descrio esttica de um conjunto de possveis objetos. Na prtica, o que significa, por exemplo, termos uma classe chamada Funcionrios? Esta classe serve como modelo para a criao de objetos do tipo Funcionrio. Na classe Funcionrios esto as definies das propriedades e dos mtodos para um objeto Funcionrio. Ou seja, sempre que criarmos um objeto do tipo funcionrio este ser criado com todas as propriedades e mtodos da classe Funcionrios ou como preferem os puristas herdando as propriedades e mtodos da classe Funcionrios. Como eu sou apaixonado por definies simples e sem meias-palavras, adorei esta definio que encontrei na Internet: Classe uma forma para fazer objetos. Acho que essa frase resume tudo. Grande parte da funcionalidade do Framework .NET fornecida por um grande nmero de classes, as quais fazem parta de .NET Framework Class Library, j descrita anteriormente. O Framework .NET agrupa as classes de acordo com suas funcionalidades. Um agrupamento de classes criadas para um determinado fim tambm conhecido como um namespace (espao de nomes). Por exemplo, temos o namespace System.Data. Dentro deste namespace existem vrias classes que fornecem os mtodos proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8060000Curso Completo N O T A necessrios para a conexo e manipulao de fontes variadas de dados. Existem classes para a conexo com o SQL Server, outras para a conexo com fontes ODBC e assim por diante. A biblioteca de classes do Framework .NET organizada de uma forma hierrquica, onde as classes de nveis inferiores herdam todas as caractersticas da classe me. Falaremos mais sobre herana no prximo item. Na linguagem C# tudo (ou quase tudo como preferem alguns) so classes. At para criar um simples programa como o Hello Word apresentado anteriormente e exibido novamente na Listagem 25.2, criada uma classe. Observe a palavra class na segunda linha do exemplo. Listagem 13.2 Hello Word ! using System; class primeiroprograma { // Meu primeiro programa em C# // O tradicional Hello Word !! public static void Main() { string umamensagem = Hello Word !!!; Console.WriteLine(umamensagem); } } HERANA o mecanismo que permite definir uma nova classe a partir de uma classe j existente. A classe que est sendo criada dita subclasse ou classe filha da classe j existente. Em contrapartida a classe j existente chamada de superclasse da classe que est sendo criada. A subclasse herda a estrutura de dados e os mtodos da superclasse, podendo adicionar variveis na estrutura de dados herdada, bem como adicionar novos mtodos e reescrever mtodos herdados. Uma classe pode possuir uma nica superclasse herana simples, ou pode conter mais do que uma superclasse herana mltipla. A herana mltipla tem sido alvo de muitas discusses e controvrsias. A nica linguagem, do Framework .NET, que implementa diretamente a herana mltipla o C++. A grande discusso em torno da herana mltipla tem a ver com a relao custo x benefcio, uma vez que esta de difcil implementao e concepo, embora os benefcios nem sempre sejam os esperados. Herana um conceito fundamental para a orientao a objetos. Atravs do mecanismo de herana podemos criar uma classe baseada em outra j existente. A nova classe que est sendo criada herda todas as propriedades e mtodos da classe base, tambm chamada de classe me ou superclasse conforme descrito anteriormente. A herana evita que as propriedades e mtodos da classe me tenham que ser redefinidos na classe filho, embora a classe filho ou subclasse possa redefinir os mtodos da classe me, atravs de um mecanismo conhecido como Overwrite. Para ilustrar o mecanismo de herana vamos a um exemplo prtico. Vamos imaginar que voc esteja projetando um programa de controle de vendas, baseado na orientao a objetos. Uma das provveis classes seria a classe Clientes. Nesta classe poderamos definir as caractersticas e mtodos bsicos para um cliente tpico. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000807 Para a classe Clientes poderamos definir as seguintes propriedades: Nome CPF RG Identidade Endereo Cidade CEP Fone E-mail Para a classe Clientes poderamos definir os seguintes mtodos: Cadastrar Excluir Atualizar Observe que a nossa classe Clientes possui apenas as propriedades e mtodos comuns a qualquer cliente, quer seja um grande cliente ou um pequeno correntista. Este um dos princpios da utilizao de classes: Nas classes de primeiro nvel definimos apenas as propriedades e mtodos comuns, os quais devero ser utilizados pelas classes dos demais nveis. Figura 13.20 A classe Clientes. Clientes Propriedades Mtodos Nome CPF RG Identidade Endereo Cidade CEP Fone E-mail Cadastrar Excluir Atualizar proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8080000Curso Completo Na Figura 13.20 temos uma viso geral da classe Clientes. Continuando o nosso exemplo, o banco tem clientes com caractersticas diferenciadas. Por exemplo: Correntistas Contas de poupana Emprstimos pessoais Financiamentos habitacionais Cada um destes tipos de clientes possui propriedades e relaes diferenciadas com o banco. Por isso precisamos de objetos que representem estas diferenas. A primeira sugesto seria criar uma classe para cada tipo de cliente. A ttulo de exemplo poderamos criar as seguintes classes: ClienteCorrentista ClientePoupana ClienteEmprstimo ClienteHabitacional Ao criar a classe ClienteCorrentista podemos cri-la como uma subclasse da classe Clientes. Com isso a classe ClienteCorrentista herda todas as propriedades e mtodos da classe pai Clientes. Somente precisaremos implementar as propriedades e mtodos que so especficas da subclasse ClienteCorrentista. A ttulo de exemplo vamos definir algumas propriedades e mtodos da classe ClienteCorrentista. Para a classe ClienteCorrentista poderamos definir as seguintes propriedades: NumConta NumAgncia Limite Categoria Para a classe ClienteCorrentista poderamos definir os seguintes mtodos: DefinirLimite AumentarLimite BloquearConta LiberarConta Juntando as propriedades que foram herdadas da classe pai Clientes, a classe ClienteCorrentista teria as seguintes propriedades: Nome (herdada da classe pai) CPF (herdada da classe pai) RG (herdada da classe pai) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000809 Identidade (herdada da classe pai) Endereo (herdada da classe pai) Cidade (herdada da classe pai) CEP (herdada da classe pai) Fone (herdada da classe pai) E-mail (herdada da classe pai) NumConta NumAgncia Limite Categoria Juntando os mtodos que foram herdados da classe pai Clientes, a classe ClienteCorrentista teria os seguintes mtodos: Cadastrar (herdada da classe pai) Excluir (herdada da classe pai) Atualizar (herdada da classe pai) DefinirLimite AumentarLimite BloquearConta LiberarConta Na Figura 13.21 temos uma viso geral da classe ClienteCorrentista, j incluindo as propriedades e mtodos herdados da classe pai Clientes.. O mesmo raciocnio tambm vlido para a criao das classes ClientePoupana, ClienteEmprstimo e ClienteHabitacional, como subclasses da classe pai Clientes. Caso haja necessidade, uma subclasse pode sobrescrever um mtodo herdado da classe pai. Por exemplo, a subclasse ClienteCorrentista poderia sobrescrever o mtodo Cadastrar da classe pai Clientes. Isso pode ser feito para que sejam atendidas necessidades especficas do cadastramento de um cliente correntista. As linguagens do Framework .NET suportam esta tcnica, a qual tambm conhecida como Overwrite. Aps termos criado as demais classes do nosso exemplo, estaremos com a hierarquia de classes ilustrada na Figura 13.22. Conforme descrevemos anteriormente, uma hierarquia de classes tambm pode ser chamada de namespace ou espao de nomes. Tambm j descrevemos antes que .NET Framework Class Library , na verdade, um grande nmero de namespaces, cada um com funcionalidades especficas, funcionalidades estas disponibilizadas por um grande nmero de classes dentro de cada um dos namespaces. Tambm gostaria de reforar que este um dos grandes atrativos do .NET, ou seja, oferecer uma infinidade de classes, as quais facilitam muito o desenvolvimento das aplicaes e, ainda por cima, classes estas que podem ser acessadas a partir de qualquer linguagem do Framework .NET. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8100000Curso Completo Figura 13.21 A classe Clientes. ClienteCorrentista Propriedades Mtodos Nome CPF RG Identidade Endereo Cidade CEP Fone E-mail NumConta NumAgncia Limite Categoria Cadastrar Excluir Atualizar DefinirLimite AumentarLimite BloquearConta LiberarConta Clientes ClienteCorrentista ClienteEmprstimos ClienteCorrentista ClienteCorrentista Figura 13.22 Uma hierarquia de classes. REUTILIZAO DE CDIGO Ao utilizar uma das classes do Framework .NET qual o princpio de orientao a objetos que estamos utilizando? Herana. Certo. Mas no era bem deste princpio que eu gostaria de tratar. Ento vamos colocar as coisas de uma maneira um pouco diferente: Ao utilizarmos a herana, qual o princpio de orientao a objetos que estamos utilizando? Reutilizao ou reaproveitamento de cdigo ou, de uma maneira mais chique: Reusabilidade. Ao invs de termos que implementar a funcionalidade de determinada classe, em cada programa onde a funcionalidade for necessria, simplesmente criamos uma classe que herda estas funcionalidades, j proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000811 N O T A N O T A prontas, de uma classe do Framework .NET. Com isso reutilizamos o cdigo j desenvolvido. Isso poupa trabalho e facilita o desenvolvimento das aplicaes. Melhor ainda. Vamos imaginar que tenha sido descoberto um pequeno bug em um mtodo de uma determinada classe. Ao corrigirmos este bug na classe em questo, todos os programas que utilizam a classe passaro a ter acesso s modificaes, ou seja, iro herdar as alteraes. Isso facilita, enormemente, a manuteno e alterao das aplicaes. Mas era de esperarmos tal comportamento, uma vez que reutilizao de cdigo, herana e facilidade de manuteno dos programas so alguns dos princpios bsicos da orientao a objetos. Em uma empresa, a equipe de desenvolvimento pode criar classes bsicas, as quais podem ser utilizadas em diversos programas da empresa. Sempre que forem feitas alteraes nas classes bsicas, as alteraes sero herdadas por todos os programas que utilizam as classes bsicas. Vejam que este cenrio muito diferente do que acontece, na prtica, hoje. Muitas vezes cada projeto de desenvolvimento parte do zero, sem que nada seja reaproveitado de projetos anteriores. Com isso uma srie de funcionalidades bsicas precisa ser reescrita a cada novo projeto. Desta forma temos projetos mais longos, com maior custo e que muito raramente so concludos no prazo. Todos os conceitos apresentados, para o desenvolvimento de aplicaes no Windows Server 2003, so baseados no Framework .NET. Em verses anteriores do Windows, o Framework .NET era um componente separado, o qual voc deveria copiar do site da Microsoft e instalar. Ou, se voc instalasse o Visual Studio .NET, o Framework .NET seria automaticamente instalado a partir da mdia de instalao do Visual Studio .NET. Ao instalar o Windows Server 2003, o Framework .NET automaticamente instalado. Ao instalar o SQL Server 2005, o Frame- work .NET ser atualizado, caso a verso atual seja mais antiga do que a verso do Framework .NET que faz parte do SQL Server 2005. Com o Windows Server 2003, o Framework .NET faz parte do sistema operacional. Ele j instalado por padro, durante a instalao do Windows Server 2003. Voc poder configurar algumas opes do Framework .NET, usando uma das seguintes ferramentas: Start -> Administrative Tools -> Microsoft .NET Framework 1.1 Configuration Start -> Administrative Tools -> Microsoft .NET Framework 1.1 Wizards. A documentao do Framework .NET pode ser acessada no seguinte caminho: C:\WINDOWS\Microsoft.NET\Framework\1033\Admim.chm E na Internet voc encontra a documentao completa do Framework .NET, no endereo a seguir: http://msdn.microsoft.com/library/en-us/dnanchor/html/netdevanchor.asp Importante: Ao instalar o Visual Studio .NET, ser instalada a documentao completa do Framework .NET, localmente, sem necessidade de acesso Internet. No Captulo 15 voc aprender a instalar o Visual Studio .NET 2005, passo a passo e a utiliz-lo para criar funes e procedimentos que sero utilizados pelo SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8120000Curso Completo DESENVOLVIMENTO EM: UMA RPIDA INTRODUO TECNOLOGIA ASP.NET PR-REQUISITOS Configuraes bsicas do IIS e modelos de aplicaes Web. METODOLOGIA Apresentao da tecnologia ASP.NET. TCNICA Exemplos prticos, passo a passo. Neste tpico apresentarei uma rpida introduo tecnologia ASP.NET. Mostrarei o que o ASP.NET e dois exemplos bem simples. No prximo tpico, veremos mais alguns exemplos, avanados, sobre a conexo de pginas ASP.NET, com Bancos de Dados SQL Server 2005. Os exemplos deste captulo sero colocados na pasta C:\LivroSQL2005\Capitulo13. Para acompanhar os exemplos, basta voc criar a pasta Capitulo13, dentro da pasta C:\LivroSQL2005, j criada no Captulo 11. Como ao pasta C:\LivroSQL2005\ j um diretrio virtual do IIS (configurao esta que foi feita no Captulo 11), a criar uma pasta Capitulo13, dentro da pasta C:\LivroSQL2005\Capitulo13, a pasta Capitulo13 j passa a estar acessvel a partir do seguinte endereo: http://localhost/livrosql2005/capitulo13. Se voc criar um pgina teste.aspx, dentro da pasta Capitulo13, para acess-la, basta usar o seguinte endereo: http://localhost/livrosql2005/capitulo13/ teste.aspx. Os exemplos que utilizarei neste tpico. sero todos salvos na pasta Capitulo13. MAIS UMA VERSO DE ASP ASP, ASP 2.0, ASP 3.0 e agora ASP.NET. Menos de dois anos aps o lanamento do ASP 3.0, o qual faz parte do IIS 5.0 que instalado com o Windows 2000 Server e tambm tem suporte no IIS 6.0, a Microsoft lana mais uma verso da tecnologia ASP Active Server Pages. Na verdade no apenas o lanamento de mais uma verso. O ASP.NET est inserido em um contexto maior, que a iniciativa .NET da Microsoft, mais conhecida como Frame- work .NET, tecnologia esta que foi detalhadamente descrita neste captulo. Alm de estar inserido no contexto do .NET, a tecnologia ASP.NET apresenta enormes diferenas em relao ao ASP 3.0, o que no permite que a caracterizemos simplesmente como um upgrade do ASP 3.0. A tecnologia ASP.NET segue os mesmos princpios do Framework .NET, cujo principal objetivo facilitar o desenvolvimento de aplicaes. No caso especfico do ASP.NET, aplicaes Web. Com o uso do ASP.NET as aplicaes Web passam a usufruir de todos os recursos do Framework .NET. A tecnologia ASP teve uma enorme aceitao por parte da comunidade de desenvolvedores. Para comprovar tal afirmao basta conferir o nmero de sites que utilizam ASP. Esta aceitao no se deve somente fora de mercado da Microsoft, mas tambm facilidade de desenvolvimento propiciada pela utilizao de ASP. NOVIDADES E MELHORIAS DO ASP.NET Neste item vamos apresentar as novidades e vantagens do ASP.NET. Mais do que uma simples justificativa para uma nova verso, procuro demonstrar os benefcios de utilizarmos ASP.NET para a criao de aplicaes WEB. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000813 N O T A FAZ PARTE DO FRAMEWORK .NET. Pode parecer bvio, mas nunca demais salientar este aspecto. ASP.NET parte integrante do Frame- work .NET, e desta maneira tem acesso a todos os benefcios da plataforma .NET da Microsoft (veja o incio do captulo para detalhes sobre o Framework .NET). Em uma pgina ASP.NET temos acesso a todas as classes da biblioteca de classes do Framework .NET .NET Framework Class Library. Tambm temos acesso a um tipo comum de dados e a todos os benefcios do Framework .NET. S estes benefcios j justificam uma migrao do ASP 3.0 para o ASP.NET. SUPORTE A MLTIPLAS LINGUAGENS Com as verses anteriores do ASP estvamos limitados praticamente a duas linguagens de script: VBScript e JScript. Alm disso, por serem linguagens de script estas eram interpretadas, ou seja, ao carregar uma pgina ASP, o IIS precisa ler linha por linha de cdigo, interpretar e executar. Para detalhes sobre a criao de pginas ASP para acessar dados do SQL Server 2005, consulte o Captulo 11. Com ASP.NET podemos utilizar qualquer linguagem que esteja habilitada para o Framework .NET. Inicialmente so disponibilizadas as linguagens VB.NET, C# e Jscript.NET. Apesar do nome JScript, esta e as demais linguagens so compiladas, o que significa que toda pgina ASP.NET compilada no servidor, antes de ser executada e o seu resultado retornado para o cliente. A primeira vez que uma pgina ASP.NET acessada, ela compilada em uma classe do Framework .NET. A verso compilada mantida em cache no servidor, para melhorar o desempenho para os prximos acessos. Qualquer alterao na pgina automaticamente detectada pelo Framework .NET; a pgina recompilada e a verso em cache atualizada, fazendo com que o cliente tenha sempre acesso verso mais atualizada da pgina. Se no houver mudanas, continuar sendo utilizada a verso que est no cache, o que torna a carga da pgina muito mais rpida. Alm disso diversas empresas de software j anunciaram que esto portando suas linguagens para que sejam compatveis com o Framework .NET. Desta maneira voc poder utilizar, para a criao de pginas ASP.NET, a linguagem com a qual est mais familiarizado, desde que ela esteja habilitada ao .NET. Voc prefere Delphi? Sem problemas. f do COBOL? Por que no? MENOS CDIGO PARA MAIS TRABALHO Com o ASP.NET temos acesso a uma srie de facilidades que diminuem a quantidade de cdigo que o programador precisa escrever, principalmente no trato com funes bsicas. Estas funes bsicas, como a manuteno de estado entre chamadas de uma pgina, so responsabilidade do Framework .NET. Isso faz com que o programador tenha que desenvolver apenas a lgica da aplicao, sem ter que se preocupar com aspectos bsicos da infra-estrutura necessria ao funcionamento da aplicao Web. Uma srie de controles mais inteligentes e com melhores funcionalidades foi criada, os chamados Server controls. Estes controles fornecem grande funcionalidade com um mnimo de programao. Alguns artigos fazem referncia a inteligncia dos Server controls. Um dos aspectos considerados proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8140000Curso Completo N O T A inteligentes que, no momento da carga da pgina, o controle detecta, por exemplo, se o navegador do cliente o Internet Explorer ou o Netscape Navigator e adapta o seu comportamento e exibio de acordo com o navegador do cliente. Com ASP tarefas simples, como por exemplo validar os dados digitados em um formulrio, exigem a criao de cdigo especfico. Com os controles inteligentes do ASP.NET, fazer a validao simplesmente questo de configurar algumas propriedades do controle e pronto, a verificao ser feita no momento em que a pgina for acessada. Para um estudo completo sobre os novos controles do ASP.NET, consulte o seguinte e-book de minha autoria: Programao ASP.NET Com C#, disponvel para venda em http://www.juliobattisti.com.br/ebooksdoautor SEPARAO ENTRE O CDIGO HTML E O CDIGO ASP Esta uma das melhorias que eu mais aprecio. Com ASP 3.0 ou verses anteriores, ns tnhamos uma mistura (literalmente) entre o cdigo ASP e o cdigo HTML, o que torna o cdigo de difcil leitura e documentao. Apenas para exemplificar, vamos apresentar uma pgina ASP que faz conexo com um Banco de Dados do Microsoft Access e exibe todos os registros de uma determinada tabela do Banco de Dados. Os registros so exibidos na forma de uma tabela. O cdigo HTML para a criao da tabela, que ser exibida para o usurio, gerado a partir de uma mescla entre cdigo ASP e cdigo HTML. Na Listagem 13.3 temos um exemplo de pgina ASP que faz conexo com um Banco de Dados do Microsoft Access. Para detalhes sobre os comandos deste exemplo, consulte o Captulo 11. Listagem 13.3 Uma pgina ASP cdigo ASP e HTML misturado. <%@ Language=VBScript %> <HTML> <HEAD> <TITLE>Listagem de Clientes</TITLE> </HEAD> <BODY> <H1> <FONT color=navy>Clientes da Empresa ABC LTDA.</FONT> </H1> <% O Primeiro passo criar a conexo com o Banco de dados Para isto crio um objeto do tipo Connection Cria um Objeto do Tipo ADODB.Connection Set conn = Server.CreateObject(ADODB.Connection) Agora abro uma conexo utilizando OLE-DB O cdigo a seguir aparece em duas linhas por questo de espao, porm o cdigo deve ser digitado em uma nica linha. conn.Open PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=c:\meus documentos\nwind.mdb O prximo passo criar uma instruo SQL a qual utilizada para criar a listagem de Clientes. O cdigo a seguir aparece em duas linhas por questo de espao, porm o cdigo deve ser digitado em uma nica linha. inst_sql=SELECT Clientes.CodigoCliente, Clientes.Cargo, Clientes.Endereco,Clientes.Fone FROM Clientes Esta instruo SQL retorna os campos CodigoCliente, Cargo, proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000815 Endereco e Fone, da tabela Clientes. Agora criamos um Objeto RecordSet. Este Objeto ir executar a instruo SQL e receber o resultado da Consulta. Set Clientes = Server.CreateObject(ADODB.Recordset) Agora executamos a Instruo SQL retornando os registros da tabela Clientes. Clientes.Open inst_sql, conn, 3, 3 Neste ponto j tenho todos os registros retornados pela instruo SQL. Estes registros esto armazenados no objeto Clientes, que um objeto do tipo Recordset. Agora passo a montar a pgina que ser retornada para o Navegador do Cliente. Vamos montar uma tabela com o resultado da consulta. %> <P> <HR> <TABLE bgColor=gray border=1 borderColor=navy cellPadding=1 cellSpacing=1 width=100%> <TR> <TD align=middle bgColor=gray>Cdigo</TD> <TD align=middle bgColor=gray>Cargo</TD> <TD align=middle bgColor=gray>Endereo</TD> <TD align=middle bgColor=gray>Fone</TD> </TR> <% Inicio um Loop para percorrer todos os registros do RecordSet Clientes, exibindo um Registro em cada Linha da tabela. Do Until Clientes.eof %> <TR> <TD align=middle bgColor=gray><%=Clientes.Fields(CodigoCliente)%></TD> <TD align=middle bgColor=gray><%=Clientes.Fields(Cargo)%></TD> <TD align=middle bgColor=gray><%=Clientes.Fields(Endereco)%></TD> <TD align=middle bgColor=gray><%=Clientes.Fields(Fone)%></TD> </TR> <% Clientes.MoveNext loop %> </TABLE> </P> <HR> </BODY> </HTML> Na Figura 13.23 temos esta pgina carregada no IE Internet Explorer. Observe que, por mais organizados que sejamos, inserindo comentrios e endentaes no cdigo, no nada fcil a leitura e interpretao de uma pgina ASP. Isso acontece devido, principalmente, intercalao de cdigo ASP e cdigo HTML. Em uma mesma pgina ASP posso ter vrias sees de cdigo ASP. Cada seo inicia com <% e encerra com %>. Tudo o que no estiver entre estes dois marcadores cdigo HTML. J com ASP.NET isto no acontece. A parte de apresentao da pgina separada da parte de processamento, isto , da parte onde est o cdigo responsvel pela lgica de processamento da pgina. Com isto estamos separando a lgica da apresentao, o que facilita a manuteno das pginas. Na Listagem 13.4 temos o exemplo de uma pgina ASP.NET que faz a separao entre o cdigo responsvel pela conexo com o Banco de Dados e retorno dos dados (lgica) e o cdigo responsvel proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8160000Curso Completo por exibir os dados (apresentao). Na parte final deste captulo, voc aprender mais detalhes sobre os comandos e objetos do ASP.NET, utilizados para conexo com dados do SQL Server 2005. Figura 13.23 Pgina ASP de exemplo. Listagem 13.4 O segundo exemplo: conectando com o Banco de Dados pubs, de uma instncia do SQL Server 2005, usando ASP.NET <%@ Import Namespace=System.Data %> <%@ Import Namespace=System.Data.SqlClient %> <html> <script language=C# runat=server> protected void Page_Load(Object Src, EventArgs E ) { // Crio uma conexo com o Banco de Dados pubs localizado no servidor local. // Vamos acessar a instncia SERVIDOR\SQL2005. SqlConnection myConnection = new SqlConnection(server=SERVIDOR\\SQL2005; + uid=sa;pwd=abc123;database=pubs); // Conectamos com o Banco de Dados utilizando um comando SQL, // o qual retorna todos os dados da tabela Authors, do banco de // dados pubs. SqlDataAdapter myCommand = new SqlDataAdapter(SELECT * FROM Authors; myConnection); // Criamos e preenchemos um objeto DataSet. // Observe que no temos mais o objeto Recordset, // como era de praxe com o ASP 3.0. DataSet ds = new DataSet(); myCommand.Fill(ds); // Conectamos um controle DataGrid com o DataSet criado anteriormente. // MyDataGrid o id (nome) de um controle do tipo // DataGrid que est na seo de apresentao da pgina. DataView source = new DataView(ds.Tables[0]); proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000817 MyDataGrid.DataSource = source ; MyDataGrid.DataBind(); } </script> <body> <% Exibe as informaes do DataGrid no corpo da pgina. %> <h3><font face=Verdana>Registros da tabela Authors!</font></h3> <% Os registros da tabela Authors so exibidos no DataGrid. %> <ASP:DataGrid id=MyDataGrid runat=server Width=700" BackColor=#ccccff BorderColor=black ShowFooter=false CellPadding=3 CellSpacing=0" Font-Name=Verdana Font-Size=8pt HeaderStyle-BackColor=#aaaadd MaintainState=false /> </body> </html> Ao carregarmos esta pgina no Internet Explorer obtemos o resultado indicado na Figura 13.24: Figura 13.24 A pgina ASP.NET da Listagem 2 carregada no IE. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8180000Curso Completo Observe a separao entre a seo de cdigo e a seo de apresentao, conforme detalharemos a seguir. Alguns comentrios sobre o exemplo, sem entrar em maiores detalhes sobre o cdigo do exemplo. Cad o meu objeto RecordSet usado no ASP? Nada de objetos do tipo RecordSet. Com ASP.NET utilizamos ADO.NET para fazer a conexo com Banco de Dados. ADO.NET utiliza o objeto Dataset ao invs do objeto RecordSet. Para a conexo com Bancos de Dados utilizamos uma srie de classes do namespace System.Data, o qual faz parte do .NET Framework Class Library. Para ter acesso s classes de um determinado namespace, precisamos adicionar uma referncia ao namespace, no incio da pgina ASP.NET, utilizando a diretiva Import, conforme indicado no trecho de cdigo a seguir: <%@ Import Namespace=System.Data %> <%@ Import Namespace=System.Data.SqlClient %> Observe que estamos fazendo referncia a dois namespaces: System.Data e System.Data.SqlCliente. Conectando com o Banco de Dados. Na seo de cdigo da pgina temos os comandos para conexo com o Banco de Dados pubs da instncia SERVIDOR\SQL2005 de um servidor com o SQL Server 2005. Um detalhe importante a maneira como informamos o nome da instncia, conforme indicado pelo trecho de cdigo a seguir: SqlConnection myConnection = new SqlConnection(server=SERVIDOR\\SQL2005; + uid=sa;pwd=abc123;database=pubs); Observe que utilizamos duas barras invertidas ao invs de uma nica barra. Isto necessrio porque a barra invertida considerada um caractere de escape com significado especial para a linguagem C# utilizada no exemplo da Listagem 2. Quando, ao invs do caractere de escape, queremos que o C# o entenda como um caractere normal, temos que preced-lo de uma barra invertida. Na prtica as duas barras invertidas so interpretadas, pelo C#, como uma nica barra, o que produz o resultado desejado: SERVIDOR\NETSDK. Neste exemplo utilizamos as seguintes classes do namespace System.Data.SqlClient: 1. SqlConnection 2. SqlDataAdapter Tambm utilizamos as seguintes classes do namespace System.Data: 1. DataSet 2. DataView Um controle poderoso para exibir os dados: Na seo de apresentao utilizamos o controle DataGrid para fazer a exibio dos registros da tabela Authors. Observe o quo poderoso este controle. Simplesmente atravs da configurao da sua propriedade DataSource, na seo de cdigo, definimos os registros a serem exibidos pelo controle. Esta definio feita nas seguintes linhas de cdigo: MyDataGrid.DataSource = source ; MyDataGrid.DataBind(); proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000819 Veja que no precisamos utilizar um lao While para percorrer todos os registros da tabela Authors, como tnhamos que fazer com o objeto RecordSet usando ASP, como no exemplo da Listagem 1. Posso ter um comando que ultrapassa uma linha? A resposta um sonoro Sim. Diferente do ASP 3.0, em nossas pginas ASP.NET, os comandos da seo de cdigo podem estar em mais do que uma linha, sem problemas. Inclusive na Listagem 2 temos comandos que ultrapassam uma linha e a pgina carrega sem maiores problemas, conforme exemplificado no trecho a seguir: SqlDataAdapter myCommand = new SqlDataAdapter(SELECT + * FROM Authors; myConnection); Isso possvel pois cada comando do C# finalizado com um ponto-e-vrgula (;). O bom e velho SQL continua o mesmo? A resposta outro sonoro Sim. Voc deve ter observado que utilizamos um comando SQL para retornar os dados da tabela authors. Utilizamos um comando SELECT, conforme indicado a seguir: SqlConnection myConnection = new SqlConnection(server=SERVIDOR\\SQL2005; + uid=sa;pwd=abc123;database=pubs); Vamos alterar o comando SQL para introduzir uma condio. Queremos que sejam retornados somente os registros para os autores em que a cidade (city) Oakland. Para isso basta que seja utilizada uma clusula where para especificar a condio city=Oakland, conforme indicado a seguir: SqlDataAdapter myCommand = new SqlDataAdapter(SELECT + * FROM Authors where city=Oakland; myConnection); Fazendo esta alterao obteremos o resultado indicado na Figura 13.25. Figura 13.25 Definindo um critrio com a clusula where. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8200000Curso Completo COMPATIBILIDADE COM QUALQUER NAVEGADOR O resultado da execuo de uma pgina ASP.NET cdigo HTML retornado para o cliente. Qualquer navegador capaz de interpretar corretamente HTML, em tese. Na prtica o que acontece que existem pequenas diferenas e at mesmo inconsistncias entre a maneira como o cdigo HTML interpretado. Para minimizar este problema, o ASP.NET conta com os controles que rodam no servidor e so capazes de fornecer diferente sadas, dependendo do navegador que fez a solicitao da pgina. Na prtica isto significa que um controle da interface de uma pgina ASP.NET, que roda no servidor, capaz de gerar diferentes sadas, dependendo do navegador do cliente. Esta caracterstica conhecida por AUI Adaptative User Interface. A EXTENSO DO ARQUIVO MUDOU .ASPX A primeira diferena que notamos na extenso dos arquivos. As pginas ASP, desde a verso inicial at a verso 3.0, tm a extenso .asp. Esta extenso obrigatria, para que o IIS reconhea a pgina como uma pgina ASP e passe o processamento para o interpretador ASP (ASP.DLL). J as pginas ASP.NET tm a extenso .aspx, a qual reconhecida pelo IIS (aps a instalao do Framework .NET). O processamento da pgina ASP.NET passada para o controle do Framework .NET. O servio responsvel pelo processamento das pginas ASP.NET est contido na DLL XSPISAPI.DLL. No prximo tpico, vamos estender um pouco mais o nosso estudo sobre a conexo de pginas ASP.NET com Bancos de Dados do SQL Server 2005. UM VISO GERAL DO ACESSO A DADOS Existe uma frase que resume bem a necessidade de acesso a dados: A informao certa, para a pessoa certa, na quantidade certa e no momento certo. Esta frase apresenta alguns aspectos importantes: A informao certa: A informao deve estar correta, isto , deve ser confivel. A informao utilizada para a tomada de decises, nos mais variados nveis de uma empresa. Se a informao estiver incorreta, as decises sero equivocadas e no iro gerar os resultados esperados. Pior do que no ter a informao ter informao incorreta, no confivel. Para a pessoa certa: Independente do nvel hierrquico, quer seja o operrio da fbrica ou o presidente da empresa, todos precisam de informao para trabalhar e alcanar os resultados desejados. A informao correta precisa estar disposio para as pessoas que dela necessitam. Na quantidade certa: Informao demais tambm um problema e pode atrapalhar ao invs de ajudar. E hoje as informaes vm das mais diversas fontes. Internet, e-mail, relatrios, Banco de Dados da empresa, arquivos do Office, jornais, revistas, livros, manuais tcnicos. Precisamos garimpar as informaes que realmente so necessrias ao nosso trabalho. No momento certo: Este um aspecto fundamental. Lembro-me da poca em que somente tnhamos o mainframe e um bando de terminais espalhados pela empresa. Voc solicitava um novo relatrio para a turma do CPD. Duas semanas depois vinha o relatrio. Hoje, evidentemente, esta situao inaceitvel. Precisamos da informao instantnea, sempre disposio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000821 Figura 13.26 Dados de mltiplas e heterogneas fontes. Alm de mltiplas fontes de dados, temos diferentes formatos de dados. Evidentemente que a estrutura de um arquivo de mensagens de correio muito diferente da estrutura de uma planilha do Excel, por exemplo. Para que possamos criar aplicaes que acessam dados de diversas fontes, precisamos de tecnologias capazes de acessar dados de fontes to diversas como o mainframe e um documento do Microsoft Word ou uma planilha do Microsoft Excel. O Framework .NET fornece, principalmente atravs do namespace System.Data, uma srie de classes para conexo e manipulao de dados dos mais variados formatos. Este conjunto de classes tambm conhecido como ADO.NET. A seguir vamos estudar as classes que do acesso a fontes de dados estruturadas, que seguem o modelo de dados relacionais. Podemos citar como exemplos de Bancos de Dados relacionais o Microsoft Ac- cess, o SQL Server 2000, o ORACLE, o DB2 da IBM, etc. Quando as empresas comearam a descentralizar seus ambientes computacionais, passando do modelo Mainframe/Terminal para um modelo Cliente/Servidor com redes locais, novas possibilidades, e tambm problemas, comearam a surgir. Bancos de dados departamentais no integrados, diferentes formatos de dados, aplicaes Cliente/Servidor rodando em cada estao de trabalho, etc., o que fez com que a informao ficasse distribuda por toda a empresa e no mais centralizada no mainframe. Um ambiente descentralizado mais flexvel, mas em contrapartida mais difcil de gerenciar e de manter o controle. medida que o volume de informaes comeou a crescer, ficou difcil ter acesso aos dados de diferentes departamentos de uma maneira consistente e rpida. Na Figura 13.26 temos uma pequena ilustrao deste ambiente: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8220000Curso Completo N O T A N O T A Para maiores detalhes sobre o modelo de dados relacionais, consulte o Captulo 1. QUAIS AS PRINCIPAIS DIFERENAS DO ADO.NET EM RELAO AO ADO? Com ADO estabelecamos uma conexo com uma fonte de dados e utilizvamos ou o mtodo Open do Objeto Connection ou um objeto do tipo Command, para executar um comando SQL e retornar dados, no formato de uma tabela, para um objeto do tipo RecordSet. A caracterstica principal que para trabalhar com os dados e fazer alteraes nos dados, precisamos estabelecer uma conexo com o Banco de Dados. Com ADO.NET temos um modelo de dados desconectado. O protocolo HTTP conhecido como Connection Less. Ao solicitar uma pgina, estabelecida uma conexo com o servidor Web, os arquivos e imagens necessrios so solicitados e enviados para o navegador do cliente e a conexo fechada, por isso o Connection Less, pois no mantida uma conexo permanente entre o servidor Web e o navegador do cliente. Esta natureza desconectada da Web causa alguns inconvenientes quando desenvolvemos aplicaes de Banco de Dados. ADO.NET resolve este problema, fornecendo uma srie de objetos que permitem que os dados, uma vez carregados para o navegador do cliente, sejam manipulados, mesmo sem existir uma conexo permanente com o Banco de Dados. Uma vez feitas as alteraes, incluses ou excluses necessrias, podemos, facilmente, sincronizar os dados que esto no cliente com o Banco de Dados no servidor. O principal objeto do modelo ADO, para trabalhar com dados, o objeto RecordSet. Para exibir os dados de um objeto RecordSet, precisamos escrever uma boa quantia de cdigo. Com ADO.NET, o principal objeto, que funciona como um container para dados, o DataSet, o qual pode conter uma ou mais tabelas (o objeto RecordSet somente pode conter uma tabela) e tambm os relacionamentos entre as tabelas e informaes sobre chaves primrias e chaves estrangeiras. Com o modelo desconectado do ADO.NET, no utilizamos cursores, nem no lado cliente, nem no lado servidor. As classes de acesso a dados fornecem os mecanismos necessrios para a manipulao dos dados. O formato adotado para armazenar os dados no cliente o XML, um padro amplamente aceito e utilizado pela indstria de TI. Com ADO, ao utilizar tecnologias como RDS para trabalhar com dados desconectados, temos um formato proprietrio para os dados, formato este que somente aceito pelo Internet Explorer. Para maiores informaes sobre Tabelas, Atributos, Chaves Primrias, Chaves Estrangeiras e Relacionamentos entre tabelas, consulte o Captulo 1, no tpico sobre os Fundamentos do Modelo Relacional de Dados. Neste tpico vamos aprender a utilizar alguns objetos bsicos para o acesso a dados relacionais, mais especificamente a dados do SQL Server. Veremos como estabelecer uma conexo com o Banco de Dados, acessar dados de uma ou mais tabelas e exibir estes dados em uma pgina ASP.NET. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000823 N O T A Para exibio dos resultados obtidos, vamos utilizar o Web Server Control DataGrid. Estudaremos este controle em detalhes. Veremos que o controle DataGrid facilita, enormemente, a tarefa de exibir dados em uma pgina ASP.NET. No nosso exemplo mais simples, apresentado no tpico anterior, vimos que o que no ASP 3.0 exige vrias linhas de cdigo, no ASP.NET, com o controle DataGrid, pode ser feito em uma nica linha de cdigo. BANCOS DE DADOS UTILIZADOS NOS EXEMPLOS Para os exemplos deste tpico, utilizarei o Banco de Dados Pubs, da instncia SERVIDOR\SQL2005 do SQL Server 2005. Conforme j descrevi em captulos anteriores, o Banco de Dados Pubs no fornecido com o SQL Server 2005. Para trabalhar com este Banco de Dados, ns importamos o Banco de Dados Pubs, de uma instncia do SQL Server 2000 para a instncia SERVIDOR\SQL2005. Para isso, usamos o DTS Import/Export Wizard, o qual foi, detalhadamente, explicado e exemplificado nos Captulos 7 e 10. O BANCO DE DADOS DO SQL SERVER PUBS Importante: Os nomes de empresas, produtos, pessoas, personagens e/ou dados apresentados neste Banco de Dados so fictcios e no representam de forma alguma qualquer indivduo, produto, empresa ou evento, salvo meno contrria. Os nomes de tabelas e campos do Banco de Dados pubs esto em ingls. As principais tabelas deste Banco de Dados so as seguintes: authors (autores) discounts (descontos) employee (funcionrios, empregados) jobs (funes, cargos) publishers (editoras) sales (vendas) stores (lojas, livrarias) titles (livros, ttulos) titleauthor (relaciona os livros de cada autor) O Banco de Dados pubs utilizado por uma rede de livrarias, para o controle de vendas e pesquisa dos ttulos existentes no catlogo da livraria. Na Figura 13.27 temos o diagrama Entidades x Relacionamentos para este Banco de Dados: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8240000Curso Completo N O T A Figura 13.27 O diagrama Entidades x Relacionamentos do Banco de Dados pubs. Os campos indicados por uma pequena chave amarela so campos do tipo chave primria. Os campos indicados pelo sinal de infinito (um 8 deitado) so campos do tipo chave estrangeira. Para detalhes sobre os conceitos de chave primria e chave estrangeira, consulte o Captulo 1. UMA INTRODUO AO ADO.NET Agora vamos iniciar o estudo das principais classes para acesso a dados. O conjunto destas classes conhecido como ADO.NET. As classes que iremos estudar fazem parte dos seguintes namespaces da biblioteca de classes do Framework .NET: System.Data: Contm as principais classes utilizadas para acessar bases de dados relacionais. A classe DataSet faz parte deste namespace. System.Data.SqlClient: Classes utilizadas para acessar Bancos de Dados do SQL Server 2000 e do SQL Server 2005. As classes deste namespace fornecem melhor desempenho para acesso ao SQL Server, pois utilizam a interface TDS Tabular Data Stream, nativa do SQL Server. System.Data.Common: Contm as classes onde so definidas as propriedades e mtodos bsicos, herdados por classes de outros namespaces. System.Data.OleDb: Neste namespace encontramos as classes para acesso a fontes de dados, via OLE-DB Providers. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000825 No ASP 3.0, utilizando ADO, o objeto que utilizamos para retornar dados o RecordSet. No ADO.NET no temos o objeto RecordSet. De incio voc que j estava acostumado com o objeto RecordSet pode estranhar um pouco, mas, conforme veremos nos exemplos deste tpico, os objetos do ADO.NET alm de mais poderosos so tambm mais fceis de utilizar. A principal facilidade notada no momento de exibir os resultados obtidos, quando podemos utilizar alguns Web Server Controls bastante poderosos, mais especificamente o controle DataGrid. INFORMANDO QUE VOC DESEJA UTILIZAR CLASSES DE UM DETERMINADO NAMESPACE Para que possamos utilizar classes de um destes namespaces precisamos, explicitamente, fazer referncia a eles no incio da pgina ASP.NET. O que eu chamei de fazer referncia chamado pelo Framework .NET de importar um namespace. Temos duas maneiras diferentes para importar (ou fazer referncia, como preferirem) um namespace, em uma pgina ASP.NET. 1. Utilizando a diretiva @Import, no incio da pgina. No fragmento de cdigo a seguir, estamos importando os namespaces System.Data, System.Data.SqlClient e System.OleDb: <%@Import Namespace=System.Data %> <%@Import Namespace=System.Data.SqlClient %> <%@Import Namespace=System.Data..OleDb%> 2. Utilizando o comando using do C#. No fragmento de cdigo a seguir, estamos importando os namespaces System.Data e System.Data.SqlClient: using System.Data; using System.Data.Sqlclient; Uma vez feitas as devidas importaes (ou referncias), estamos aptos a utilizar as classes dos namespaces referenciados. CLASSE OU OBJETO; OBJETO OU CLASSE? Muitas vezes os termos classe e objeto so utilizados, indiscriminadamente, com o mesmo sentido. Vamos fazer uma definio formal para estes termos, atravs de um exemplo: No namespace System.Data existe uma classe chamada DataSet. Quando declaramos e inicializamos uma varivel, como sendo do tipo DataSet, estamos criando um objeto baseado na classe DataSet. No trecho de cdigo a seguir, temos um exemplo onde criamos um objeto chamado MeusDados, o qual baseado na classe DataSet: DataSet MeusDados = new DataSet( ); ESTABELECENDO CONEXES Uma coisa no mudou no ADO.NET, em relao ao ADO: o primeiro passo estabelecer uma conexo com o Banco de Dados. Embora com ADO.NET tenhamos um modelo desconectado, conforme descrito anteriormente, o primeiro passo fazer uma conexo com o Banco de Dados. Uma vez estabelecida a conexo, obtemos os dados desejados e podemos trabalhar com estes dados diretamente no navegador, desconectados do Banco de Dados. Uma vez feitas as alteraes necessrias, sincronizamos os dados com o Banco de Dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8260000Curso Completo Para estabelecer uma conexo com um Banco de Dados do SQL Server, devemos utilizar, preferencialmente, a classe SqlConnection, do namespace System.Data.SqlClient. Para acessar um Banco de Dados utilizando o OLE-DB Provider correspondente, utilizamos a classe OleDbConnection do namespace System.Data.OleDb. Como existe um OLE-DB Provider para o SQL Server, tambm poderamos utilizar a classe OleDbConnection para fazer uma conexo com o SQL Server, porm a classe SqlConnection bem mais eficiente, em termos de desempenho, pois foi especificamente projetada para trabalhar com o SQL Server 2000, assim como foram todas as classes do namespace System.Data.SqlClient. Vamos estudar estas duas classes. ESTABELECENDO UMA CONEXO COM O SQL SERVER 2000 OU SQL SERVER 2005 SQLCONNECTION A classe SqlConnection faz parte do namespace System.Data.SqlClient. Esta classe utilizada para estabelecer uma conexo com um servidor SQL Server. Diferente do que acontecia com ADO, no podemos executar um comando SQL, utilizando a classe SqlConnection. Ainda neste tpico estudaremos as classes utilizadas para executar comandos em um Banco de Dados. A seguir temos um exemplo de criao de um objeto do tipo SqlConnection: SqlConnection MinhaConeco = new SqlConnection(server=SERVIDOR\\SQL2005; + uid=sa;pwd=senhadosa;database=pubs); O parmetro passado uma string que contm as informaes necessrias para estabelecer a conexo com o Banco de Dados. No tpico anterior voc j viu uma pequena demonstrao do uso do objeto SqlConnection. Na Tabela 13.1 temos uma descrio das principais propriedades da classe SqlConnection: Propriedade Descrio ConnectionString utilizada para definir ou retornar uma string de texto onde so informados os diversos parmetros para estabelecer a conexo, como por exemplo o nome do servidor, a instncia, o nome do banco de dados, o nome de login e senha. ConnectionTimeOut Define por quanto tempo feita a tentativa de estabelecer a conexo. Aps o tempo definido nesta propriedade, a tentativa cancelada e um erro gerado. Database utilizada para definir ou retornar o nome do banco de dados que ser utilizado quando a conexo for estabelecida. DataSource Retorna o nome da instncia do SQL Server com a qual foi estabelecida uma conexo. ServerVersion Retorna uma string informando a verso do servidor SQL Server com o qual a conexo foi estabelecida. State Retorna o estado atual da conexo. Tabela 13.1 Principais propriedades da classe SqlConnection. Vamos apresentar um pequeno exemplo, onde criamos uma conexo com o Banco de Dados pubs da instncia SERVIDOR\SQL2005 (conforme descrito anteriormente). Uma vez estabelecida a conexo, vamos exibir as propriedades desta conexo em um Web Server Control do tipo TextArea. Vamos utilizar o evento Page_Load, da pgina ASP.NET, para estabelecer a conexo com o Banco de Dados pubs. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000827 Na Listagem 13.5 temos o cdigo para o exemplo proposto. Listagem 13.5 A classe SqlConnection. <%@ Import Namespace=System.Data %> <%@ Import Namespace=System.Data.SqlClient %> <html> <script language=C# runat=server> protected void Page_Load(Object Src, EventArgs E ) { // Crio uma conexo com o Banco de Dados pubs localizado no servidor local. // Vamos acessar a instncia SERVIDOR\SQL2005. SqlConnection MinhaConexo = new SqlConnection(server=SERVIDOR\\SQL2005;uid=sa;pwd=senha;database=pubs); // Declaro uma varivel do tipo String: auxPropriedades. // A varivel auxPropriedades ir conter o valor das propriedades // da conexo minhaConexo. String auxPropriedades; auxPropriedades = Propriedades da conexo:; auxPropriedades = auxPropriedades + \n\n + ConnectionString: + MinhaConexo.ConnectionString.ToString(); auxPropriedades = auxPropriedades + \n\n + Database: + MinhaConexo.Database.ToString(); auxPropriedades = auxPropriedades + \n\n + DataSource: + MinhaConexo.DataSource.ToString(); auxPropriedades = auxPropriedades + \n\n + State: + MinhaConexo.State.ToString(); ExibePropriedades.Font.Bold=true; ExibePropriedades.Text=auxPropriedades; } </script> <body> <h3><font face=Verdana>Classe SqlConnection!!!</font></h3> <asp:TextBox runat=server id=ExibePropriedades Text= Rows=10" Cols=70" Font_Face=Arial Font_Size=3" BackColor=lightblue TextMode=MultiLine /> </body> </html> Ao carregar a pgina voc ir obter uma pgina semelhante pgina indicada na Figura 13.28: Comentrios sobre o cdigo do exemplo: Observe que a primeira coisa que fizemos foi referenciar os namespaces System.Data e System.Data.SqlClient: <%@ Import Namespace=System.Data %> <%@ Import Namespace=System.Data.SqlClient %> Se no fizssemos essa referncia, obteramos um erro de compilao, ao carregar a pgina, conforme indicado na Figura 13.29. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8280000Curso Completo Figura 13.29 Erro por no referenciar os namespaces necessrios. Figura 13.28 A classe SqlConnection. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000829 Mtodo Descrio Open Abre a conexo de acordo com as definies da propriedade ConnectionString. Close Fecha a conexo com o banco de dados. ChangeDatabase Altera o banco de dados associado com a conexo. Tabela 13.2 Principais mtodos da classe SqlConnection. Observe o texto em destaque, onde dito que no foi possvel encontrar SqlConnection. Isto acontece porque esta classe faz parte do namespace System.Data.SqlClient, o qual no foi referenciado na pgina ASP.NET. Em seguida criamos um varivel MinhaConexo, baseada na classe SqlConnection: SqlConnection MinhaConexo = new SqlConnection(server=SERVIDOR\\SQL2005;uid=sa;pwd=senha;database=pubs); Observe que este um comando nico, que foi dividido em duas linhas por falta de espao. No ASP.NET, um nico comando pode ser dividido em duas ou mais linhas, o que no era possvel no ASP 3.0. Declaramos a varivel MinhaConexo como sendo do tipo SqlConnection, ao mesmo tempo que inicializamos esta varivel, passando como parmetro uma string de conexo. Na string passada como parmetro so definidas as seguintes informaes: Nome da instncia do SQL Server: SERVIDOR\SQL2005. Nome do usurio: uid=sa. Senha: pwd=senha, Banco de dados para fazer a conexo: database=pubs. importante salientar que o objeto do tipo SqlConnection foi criado, porm ainda no foi estabelecida a conexo, conforme pode ser confirmado pelo valor da propriedade State=Closed, na Figura 13.29, exibida anteriormente. No restante do evento Load, montamos uma string (auxPropriedades), onde vamos concatenando o nome e o valor das propriedades do objeto MinhaConexo. Observe que anexamos dois caracteres de nova linha - \n\n. Isso feito para ir para uma nova linha a cada propriedade (um \n) e para deixar uma linha em branco entre a exibio de cada propriedade (mais um \n). Aps termos montado a string auxPropriedades, definimos a fonte do controle ExibePropriedades para negrito e atribumos o valor da varivel auxPropriedades propriedade Text do controle ExibePropriedades, conforme indicado no fragmento a seguir: ExibePropriedades.Font.Bold=true; ExibePropriedades.Text=auxPropriedades; O controle ExibePropriedades um Web Server Control do tipo TextBox com mltiplas linhas. Para maiores informaes sobre este controle, consulte o Captulo 9 do e-book: Programao ASP.NET com C#, 803 pginas, de minha autoria, o qual pode ser adquirido em http:// www.juliobattisti.com.br/ebooksdoautor Na Tabela 13.2 temos uma descrio dos principais mtodos da classe SqlConnection: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8300000Curso Completo Figura 13.30 Utilizando o mtodo Open da classe SqlConnection. UMA VISO GERAL DO PROCESSO DE ACESSO A DADOS Existem muitas maneiras de estabelecer uma conexo com uma fonte de dados, retornar um conjunto de dados e exibir estes dados em uma pgina ASP.NET. O principal evento do objeto SqlConnection o evento StateChange. Este evento ocorre quando o estado da conexo alterado de Open para Closed ou vice-versa. No exemplo anterior, podemos adicionar o seguinte comando, logo aps a criao da conexo MinhaConexo: MinhaConexo.Open(); Este comando abre a conexo MinhaConexo. Aps inserirmos este comando e recarregarmos a pgina, obteremos o resultado indicado na Figura 13.30. Muito bem, j sabemos estabelecer uma conexo com um Banco de Dados. E agora? Ainda precisamos aprender como se fazer as seguintes operaes: Definir um comando para ser executado no Banco de Dados. Retornar dados de uma ou mais tabelas. Retornar informaes sobre os relacionamentos entre as tabelas. Exibir os resultados obtidos. Nos prximos tpicos aprenderemos a realizar estas operaes. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000831 Estaremos utilizando a seguinte abordagem: Criar uma conexo com uma fonte de dados utilizando SqlConnection. Definir um comando SQL a ser executado no Banco de Dados. O comando definido utilizando um objeto do tipo SqlDataAdapter. O comando SQL define os dados que sero retornados a partir do Banco de Dados. Tambm podemos utilizar um objeto SqlCommand. Uma opo criar um objeto Command e depois a propriedade SelectCommand do objeto DataAdapter como sendo igual ao objeto Command. Outra opo passar o comando SQL como parmetro do objeto DataAdapter, o que faz com que no seja necessria a criao explcita de um objeto Command. O objeto DataAdapter faz a ligao de um ou mais objetos do tipo Command com um objeto do tipo DataSet. Por exemplo, podemos ligar vrios objetos Command com um nico DataSet. Iremos detalhar todos estes aspectos nos exemplos que sero apresentados at o final do captulo. Utilizamos os dados retornados pelo(s) comando(s) SQL para popular um objeto do tipo DataSet. Vamos utilizar um Web Server Control Datagrid, para exibir os dados associados ao objeto do tipo DataSet. Na Figura 13.31 temos uma viso geral deste processo. DataSet Pgina ASP.NET que exibe os dados. SQL Server SqlConnection SqlDataAdapter DataGrid na pgina ASP.NET DataSet Pgina ASP.NET que exibe os dados. OleDbConnection OleDbDataAdapter DataGrid na pgina ASP.NET Figura 13.31 Passos para acessar e exibir dados em uma pgina ASP.NET. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8320000Curso Completo importante salientar que esta apenas uma das maneiras de acessarmos dados e exibi-los em uma pgina ASP.NET. CRIANDO OBJETOS COMMAND Para criar objetos Command temos duas opes: SqlCommand: Este objeto utilizado para definir um comando que ser executado atravs de uma conexo do tipo SqlConnection. OleDbCommand: Utilizado para definir um comando que ser executado atravs de uma conexo do tipo OleDbConnection. Conforme descrevemos no tpico anterior, podemos criar um objeto Command, no qual definimos um comando SQL a ser executado atravs de uma conexo. As propriedades dos objetos SqlCommand e OleDbCommand so semelhantes. Na Tabela 13.3 temos uma descrio das principais propriedades das classes SqlCommand/ OleDbCommand: Propriedade Descrio CommandText Esta propriedade utilizada para definir ou retornar o comando SQL ou o nome de um stored procedure associado com o comando. CommandTimeOut Define por quanto tempo o Framework .NET tenta executar o comando. Se, no tempo definido por esta propriedade, o comando no for executado com sucesso, o comando suspenso e uma mensagem de erro retornada. CommandType Pode ser definida como Text, que o valor padro e significa que o valor atribudo propriedade CommandText um comando SQL. Tambm pode assumir o valor StoredProcedure, neste caso significando que o valor atribudo propriedade CommandText o nome de um stored procedure. Connection Esta propriedade utilizado para definir ou retornar a conexo atravs da qual o comando executado. Tabela 13.3 Principais propriedades das classes SqlCommand/OleDbCommand. Na Tabela 13.4 temos uma descrio dos principais mtodos das classes SqlCommand/OleDbCommand: Mtodo Descrio Cancel Cancela a execuo do comando. CreateParameter Utilizada para a criao e definio de parmetros. Podemos utilizar parmetros quando estamos executando um Stored Procedure ou uma consulta parametrizada do Microsoft Access. ExecuteNonQuery Executa o comando definido na propriedade CommandText, atravs da conexo definida na propriedade Connection, para consultas que no retornam dados. Exemplo de consultas que no retornam dados so consultas de atualizao, adio ou excluso. Este mtodo retorna um valor inteiro, valor este que indica o nmero de registros afetadas pela execuo do comando. Tabela 13.4 Principais mtodos das classes SqlCommand/OleDbCommand. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000833 RETORNANDO DADOS COM DATAADAPTER Para criar objetos DataAdapter temos duas opes: SqlDataAdapter: Este objeto utilizado para executar um ou mais comandos ou stored proce- dures, em um Banco de Dados do SQL Server e associar os resultados obtidos com um objeto do tipo DataSet. OleDbDataAdapter: Utilizado para executar um ou mais comandos em uma fonte de dados, utilizando o OLE-DB Provider respectivo, e associar os resultados obtidos com um objeto do tipo DataSet. Os objetos SqlDataAdapter/OleDbDataAdapter funcionam como uma ponte entre uma fonte de dados e o objeto DataSet, tanto para acesso quanto para alteraes nos dados. Esta ponte pode ser estabelecida de duas maneiras: 1. Atravs da utilizao do mtodo Fill do objeto DataAdapter, para retornar dados de uma fonte de dados e colocar estes dados em um objeto DataSet. 2. Atravs da utilizao do mtodo Update do objeto DataAdapter, mtodo este que sincroniza os dados da fonte de dados original, com as modificaes feitas nos dados do objeto DataSet. Na Tabela 13.5 temos uma descrio das principais propriedades das classes SqlDataAdapter/ OleDbDataAdapter: Propriedade TTAB= Descrio DeleteCommand Utilizada para definir ou retornar um comando SQL para excluso de dados, normalmente um comando DELETE. InsertCommand Utilizada para definir ou retornar um comando SQL para insero de novos dados, normalmente um comando INSERT. SelectCommand Utilizada para definir ou retornar um comando SQL, utilizado para retornar dados, normalmente um comando SELECT. Tambm podemos atribuir, a esta propriedade, um objeto Command previamente criado. UpdateCommand Utilizada para definir ou retornar um comando SQL que atualiza dados. Normalmente um comando UPDATE. Tabela 13.5 Principais propriedades das classes SqlDataAdapter/OleDbDataAdapter. Na Tabela 13.6 temos uma descrio dos principais mtodos das classes SqlDataAdapter/ OleDbDataAdapter. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8340000Curso Completo Na Tabela 13.7 temos uma descrio dos principais eventos das classes SqlDataAdapter/ OleDbDataAdapter. Mtodo Descrio Fill Com certeza o mtodo mais utilizado. Este mtodo executa o comando definido na propriedade SelectCommand. Os dados retornados pela execuo do comando definido na propriedade SelectCommand so associados com um objeto do tipo DataSet. FillSchema Este mtodo retorna uma tabela em branco, isto , com zero registros, porm com a mesma estrutura da tabela original. Na prtica o que este mtodo faz copiar a estrutura de uma tabela. Update Com ASP.NET trabalhamos com um modelo de dados desconectados, conforme descrito no incio deste tpico. Uma vez retornados os dados em um objeto do tipo DataSet, a conexo com o banco de dados fechada. Alteraes podem ser feitas nos dados desconectados, porm estas alteraes precisam ser enviadas para o banco de dados, quer seja o SQL Server, quer seja um arquivo .mdb do Microsoft Access. O mtodo Update utilizado para enviar estas alteraes para o banco de dados. O mtodo executa os comandos InsertCommand, UpdateCommand e DeleteCommand para cada insero, atualizao ou excluso, feitas nos dados desconectados, de tal forma que estas alteraes sejam enviadas para a fonte de dados original. Em poucas palavras: sincroniza os dados do objeto DataSet com o conjunto de dados originais, no servidor. Tabela 13.6 Principais mtodos das classes SqlDataAdapter/OleDbDataAdapter. Evento Descrio FillError Ocorre quando um erro retornado durante a execuo do mtodo Fill. RowUpdated Ocorre durante uma atualizao, aps o respectivo comando ter sido executado na fonte de dados original. RowUpdating Ocorre durante uma atualizao, antes do respectivo comando ter sido executado na fonte de dados original. Tabela 13.7 Principais eventos das classes SqlDataAdapter/OleDbDataAdapter. O OBJETO DATASET Os objetos SqlDataAdapter/OleDbDataAdapter, descritos no tpico anterior, so utilizados para executar um comando SQL ou uma stored procedure, em um Banco de Dados e retornar um ou mais conjuntos de dados. Precisamos de uma estrutura capaz de receber e manipular os dados retornados; esta estrutura o objeto DataSet. O objeto DataSet derivado da classe DataSet, do namespace System.Data. O objeto DataAdapter executa um comando atravs de uma conexo e retorna os dados para um objeto DataSet. A conexo desfeita, pois o objeto DataSet fornece as funcionalidades necessrias para acessarmos e manipularmos os dados, estando desconectados do servidor. Acessamos e alteramos os dados conforme necessrio e depois as alteraes efetuadas so sincronizadas com o servidor. DataSet , sem dvida, o principal objeto do ADO.NET, assim como o objeto RecordSet o principal objeto do ADO. Um objeto DataSet formado por uma coleo de objetos do tipo DataTable, os quais pertencem coleo Tables. Para representar o relacionamento entre dois objetos do tipo DataTable, utilizamos um proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000835 objeto do tipo DataRelation. Por exemplo, podemos criar um DataSet que contm duas tabelas: Pedidos e Clientes. A tabela Clientes relaciona-se com a tabela Pedidos, atravs de um relacionamento do tipo um para vrios, ou seja, um cliente pode fazer vrios pedidos. Podemos representar este relacionamento utilizando um objeto do tipo DataRelation. Podemos garantir a integridade dos dados atravs da definio de campos do tipo Chave Primria utilizando o objeto UniqueConstraint; e da definio de Chaves Estrangeiras utilizando o objeto ForeignKeyConstraint. O objeto DataSet l e grava dados e a estrutura dos dados no formato de documentos XML, os quais podem ser enviados pela Internet via protocolo HTTP, o que facilita a troca de informaes com sistemas de outras empresas, sistemas estes tambm habilitados ao XML. Na Tabela 13.8 temos uma descrio das principais propriedades da classe DataSet: Propriedade Descrio DataSetName Utilizada para definir ou retornar o nome do DataSet. EnforceConstraints Pode ser utilizada para definir ou retornar um valor True ou False. Se o valor desta propriedade for True, as regras de integridade sero observadas em uma operao de atualizao. Por exemplo, se alterarmos o cdigo do cliente em um pedido da tabela pedidos para 01010 e no existir o cliente com o cdigo 01010 na tabela Clientes, a operao no ser realizada. Se o valor da propriedade EnforceConstraints for False, a operao descrita no nosso exemplo ser realizada sem que nenhuma verificao seja feita. Relations Retorna uma coleo com todos os relacionamentos existentes entre as tabelas do DataSet. Tables Retorna uma coleo com todas as tabelas do DataSet. Tabela 13.8 Principais propriedades da classe DataSet. Mtodo Descrio AcceptChanges Torna definitivas todas as alteraes feitas nas tabelas ou relacionamentos do DataSet, desde que este foi inicializado ou desde a ltima vez que o mtodo AcceptChanges foi chamado. Clear Remove todos os dados do DataSet, zerando todas as linhas de todas as tabelas. Clone Faz uma cpia idntica do DataSet, inclusive dos seus dados, para um outro objeto do tipo DataSet. GetChanges Retorna um objeto do tipo DataSet, contendo todas as alteraes que foram feitas desde a inicializao do DataSet original, ou desde a ltima chamada do mtodo AcceptChanges. HasChanges Retorna um valor do tipo Boleano. True indica que houve alteraes nos dados do DataSet adies, alteraes ou excluses. False indica que no houve alteraes. Tabela 13.9 Principais mtodos da classe DataSet. Na Tabela 13.9 temos uma descrio dos principais mtodos da classe DataSet: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8360000Curso Completo Neste momento j somos capazes de estabelecer uma conexo com o Banco de Dados, definir um objeto DataAdapter para executar um comando atravs da conexo estabelecida e preencher um objeto DataSet com os dados retornados. A prxima etapa exibir os dados obtidos. A exibio dos dados a nica coisa que o usurio v, ao acessar a pgina. Existem maneiras variadas para exibir os dados em uma pgina ASP.NET. Nos exemplos a seguir, utilizarei o controle DataGrid. O OBJETO DATAVIEW Para entender a funo do objeto DataView, vamos fazer uma recapitulao dos objetos que j estudamos, neste tpico: Utilizamos um objeto OleDbConnection ou SqlConnection para estabelecer uma conexo com o Banco de Dados. O objeto DataAdapter faz a ponte entre um ou mais objetos Command (SqlCommand ou OleDbCommand) e um objeto DataSet. Ao final deste processo, os dados esto armazenados em um objeto DataSet. O objeto DataView faz a ponte entre o objeto DataSet e um Web Form ou Web Form Control, onde sero exibidos os dados. Na Figura 13.32, temos uma viso geral deste processo: Nesta figura, fica bem destacado o papel de ponte entre o objeto DataSet e o controle DataGrid, exercido pelo objeto DataView. No exemplo da figura, utilizamos o controle DataGrid, mas poderia ser qualquer outro Web Form Control capaz de acessar dados de um DataView. Um objeto DataView pode ser configurado para retornar apenas uma parte dos dados de um objeto DataTable. Podemos, por exemplo, ter dois objetos DataView, ligados com o mesmo objeto DataTable, porm exibindo diferentes dados. Vamos estudar mais alguns detalhes sobre o objeto DataView. Fonte de dados Pgina ASP.NET Connection DataSet DataAdapter Controle DataGrid DataView Figura 13.32 Acessando dados com ASP.NET. Na Tabela 13.10 temos uma descrio das principais propriedades da classe DataView: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000837 Na Tabela 13.11 temos uma descrio dos principais mtodos da classe DataView: Propriedade Descrio AllowDelete Propriedade do tipo Boleana. Se contiver o valor True, podemos excluir registros; se contiver o valor False, no so permitidas excluses. Esta propriedade pode ser utilizada para definir ou para retornar um valor True ou False. AllowEdit Utilizada para definir ou retornar um valor do tipo Boleano. Se o valor da propriedade for True, so permitidas alteraes nos dados, caso contrrio os dados no podero ser alterados. AllowNew Utilizada para definir ou retornar um valor do tipo Boleano. Se o valor da propriedade for True, poderemos adicionar novos registros, utilizando o mtodo AddNew, caso contrrio novos registros no podero ser adicionados. Count Retorna o nmero de registros no DataView. RowFilter Utilizada para definir ou retornar uma expresso que determina quais os dados do objeto DataView, que sero exibidos. RowStateFilter Com ADO.NET mantido um histrico das alteraes feitas nos dados. O objeto DataView mantm as verses anteriores de registros que foram alterados ou excludos. Podemos utilizar esta propriedade para retornar ou definir uma expresso que filtra apenas os registros em um determinado estado, como por exemplo: alterados, excludos, etc. Sort Utilizada para definir ou retornar informaes sobre a(s) coluna(s) e a ordem de classificao dos dados. Table Utilizada para definir ou retornar a tabela a partir da qual o DataView obtm os dados. Tabela 13.10 Principais propriedades da classe DataView. Mtodo Descrio AddNew Adiciona um novo registro ao DataView. Delete Exclui um registro do DataView. Find Localiza um determinado registro, com base no valor da chave primria. AddNew Adiciona um novo registro ao DataView. Tabela 13.11 Principais mtodos da classe DataView. Vamos apresentar alguns exemplos de utilizao do objeto DataView. Exemplo 1: Neste exemplo faremos uma conexo com o Banco de Dados C:\Meus documentos\Northwind.mdb. Vamos retornar os seguintes campos da tabela Funcionrios: CdigoDoFuncionrio Nome Cargo DataDeNascimento Cidade proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8380000Curso Completo Os dados sero apresentados na pgina, utilizando um controle DataGrid. Tambm apresentaremos um controle ListBox, onde o usurio poder selecionar um campo pelo qual os dados sero ordenados em ordem crescente. Por padro os dados so classificados pelo CdigoDoFuncionrio. Na listagem 13.6 a seguir temos o cdigo para o exemplo proposto. Listagem 13.6 Um exemplo completo de conexo com um Banco de Dados do Access, usando o objeto DataView. <%@ Import Namespace=System.Data %> <%@ Import Namespace=System.Data.OleDb %> <html> <script language=C# runat=server> protected void Page_Load(Object Src, EventArgs E ) { // Crio uma conexo com o Banco de Dados do Microsoft Access. // C:\Meus documentos\NorthWind.mdb. String DefineConexo= PROVIDER=MICROSOFT.JET.OLEDB.4.0; + DATA SOURCE=c:\\meus documentos\\NorthWind.mdb; OleDbConnection MinhaConexo = new OleDbConnection(DefineConexo); // Utilizamos um objeto DataAdapter para executar um comando SQL, // o qual retorna todos os dados da tabela Clientes. OleDbDataAdapter MeuComando = new OleDbDataAdapter(SELECT CdigoDoFuncionrio, + Nome,Cargo,DataDeNascimento,Cidade FROM Funcionrios, MinhaConexo); // Criamos e preenchemos um objeto DataSet. // Observe que no temos mais o objeto Recordset, // como era de praxe com o ASP 3.0. DataSet ds = new DataSet(); // Utilizo o mtodo Fill do objeto DataAdapter, para preencher // o objeto DataSet, com os dados retornados pelo comando SQL. MeuComando.Fill(ds); // Conectamos um controle DataGrid com o DataSet criado anteriormente. // MinhaGrade o id (nome) de um controle do tipo // DataGrid que est na seo de apresentao da pgina. DataView source = new DataView(ds.Tables[0]); // Utilizamos uma instruo Switch para definir a // classificao dos dados com base no valor selecionado // na lista CampoClassificar. string aux = CampoClassificar.SelectedItem.Value; switch (aux) { case Cargo: source.Sort=Cargo ASC; break; case Cidade: source.Sort=Cidade ASC; break; case Cdigo do Funcionrio: source.Sort=CdigoDoFuncionrio ASC; break; case Data de Nascimento: source.Sort=DataDeNascimento ASC; break; case Nome: source.Sort=Nome ASC; break; default: // outras opes. break; } MinhaGrade.DataSource = source ; MinhaGrade.DataBind(); } proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000839 </script> <% Exibe as informaes do DataGrid no corpo da pgina. %> <h3><font face=Verdana>Funcionrios da empresa North Wind!!!</font></h3> <BR> <form runat=server> <h3><font face=Verdana>Classificar por:</font></h3> <asp:ListBox id=CampoClassificar Rows=1" Width=200px runat=server> <asp:ListItem>Cargo</asp:ListItem> <asp:ListItem>Cidade</asp:ListItem> <asp:ListItem selected=True>Cdigo do Funcionrio</asp:ListItem> <asp:ListItem>Data de Nascimento</asp:ListItem> <asp:ListItem>Nome</asp:ListItem> </asp:ListBox> <ASP:DataGrid id=MinhaGrade runat=server Width=700" BackColor=#ccccff BorderColor=black ShowFooter=false CellPadding=3 CellSpacing=0" Font-Name=Verdana Font-Size=8pt HeaderStyle-BackColor=#aaaadd MaintainState=false /> <BR> <B>Clique para Classificar ></B></td> <input type=submit value=Classificar runat=server> </form> </body> </html> Ao carregar esta pgina, voc ir obter o resultado indicado na Figura 13.33: Figura 13.33 Relao de funcionrios classificada pelo Cdigo do Funcionrio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8400000Curso Completo Observe que a listagem est classificada em ordem crescente do Cdigo do Funcionrio. Vamos testar o nosso exemplo. Na lista Classificar Por, selecione Nome e d um clique no boto Classificar. Voc obter uma listagem classificada pelo nome do funcionrio, conforme indicado na Figura 13.34: Figura 13.34 Relao de funcionrios classificada pelo Nome. Comentrios sobre o cdigo do exemplo anterior: O cdigo para conectar com o Banco de Dados e retornar dados muito semelhante ao cdigo utilizado nos exemplos anteriores, onde fizemos conexes com um Banco de Dados do SQL Server. Na seo de apresentao da pgina criamos um formulrio e adicionamos um Web Server Control do tipo ListBox chamado CampoClassificar. Este controle exibe as opes de classificao. O cdigo que define o controle ListBox est indicado a seguir: <asp:ListBox id=CampoClassificar Rows=1" Width=200px runat=server> <asp:ListItem>Cargo</asp:ListItem> <asp:ListItem>Cidade</asp:ListItem> <asp:ListItem selected=True>Cdigo do Funcionrio</asp:ListItem> <asp:ListItem>Data de Nascimento</asp:ListItem> <asp:ListItem>Nome</asp:ListItem> </asp:ListBox> Observe que, por padro, ao carregarmos a pgina, a opo Cdigo do Funcionrio vem selecionada selected=True. Para maiores informaes sobre o controle ListBox, consulte o Captulo 9 do e-book: Programao ASP.NET com C#, de minha autoria, j citado anteriormente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000841 N O T A Na seo de cdigo precisamos verificar qual a opo selecionada no ListBox e, com base na opo selecionada, classificar os dados do DataView. Para isso utilizamos a instruo switch/ case do C#, conforme indicado a seguir: string aux = CampoClassificar.SelectedItem.Value; switch (aux) { case Cargo: source.Sort=Cargo ASC; break; case Cidade: source.Sort=Cidade ASC; break; case Cdigo do Funcionrio: source.Sort=CdigoDoFuncionrio ASC; break; case Data de Nascimento: source.Sort=DataDeNascimento ASC; break; case Nome: source.Sort=Nome ASC; break; default: // outras opes. break; } Primeiro criamos uma string aux e atribumos a esta string o valor do item selecionado na ListBox CampoClassificar: string aux = CampoClassificar.SelectedItem.Value; Em seguida, utilizamos a string aux como varivel de comparao para a instruo switch/case. Com base no valor da string aux, definimos a classificao dos dados do DataView. Para definir a classificao utilizamos a propriedade Sort do objeto source, objeto este que do tipo DataView, como no exemplo a seguir: source.Sort=CdigoDoFuncionrio ASC; A propriedade Sort uma string que contm o nome do campo seguido de um espao e da palavra ASC para classificao crescente ou DESC para classificao decrescente. Para maiores informaes sobre a instruo switch/case e sobre as demais instrues de controle de fluxo do C#, consulte o Captulo 3 do e- book Programao ASP.NET com C#. Maiores detalhes em http://www.juliobattisti.com.br/ebooksdoautor. UM POUCO MAIS SOBRE O CONTROLE DATAGRID O controle DataGrid, sem sombra de dvidas, assunto para um captulo inteiro. Como no dispomos de tanto espao, caso contrrio teramos um livro de mais de 2000 pginas, vamos apresentar as principais caractersticas deste poderoso controle, atravs de alguns exemplos prticos. Neste tpico veremos como algumas propriedades e mtodos do controle DataGrid so capazes de efetuar verdadeiras maravilhas. Para mais detalhes sobre o controle DataGrid, consulte os Captulos 11 e 12 do e-book Programao ASP.NET com C#. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8420000Curso Completo PRIMEIRA MARAVILHA DO DATAGRID: PAGINAO Quando obtemos um nmero grande de registros interessante dividir a exibio dos registros em pginas, onde exibimos um determinado nmero de registros por vez. Isso o que chamamos de paginao. Por exemplo, podemos fazer com que 1000 registros sejam divididos em pginas onde so exibidos 20 ou 50 registros por vez. Fazer paginao com ASP 3.0 no era uma tarefa das mais fceis. Um boa quantidade de cdigo era necessria e tudo tinha que ser implementado manualmente. Com o controle DataGrid, definir paginao est resumido a configurar duas propriedades: AllowPaging: Esta propriedade do tipo Boleana. Se for True, a paginao habilitada, se for False, a paginao desabilitada. Por padro esta propriedade False. Ao tornarmos AllowPaging True, na ltima linha do DataGrid, so exibidos os smbolos < para voltar pgina anterior e > para ir prxima pgina. Podemos alterar estes valores utilizando as propriedades PagerStyle-NextPageText para alterar o texto do link que vai para a prxima pgina e PagerStyle- PrevPageText, para alterar o texto do link que volta para a pgina anterior. Quando estamos na primeira pgina, o link para a pgina anterior automaticamente desabilitado, pois no existe pgina anterior primeira. Quando estamos na ltima pgina, o link para a prxima pgina automaticamente desabilitado, pois no existe pgina aps a ltima. PageSize: O valor desta propriedade define o nmero de registros que sero exibidos por vez. Se esta propriedade no for definida, sero exibidos 10 registros por pgina. Para definir que sejam exibidos 20 registros por pgina, sendo Prxima pgina > o texto do link para a prxima pgina e < Pgina anterior o texto para o link para a pgina anterior, definimos as seguintes propriedades/valores do controle DataGrid: AllowPaging=True PageSize=20 PagerStyle-NextPageText=Prxima pgina > PagerStyle-PrevPageText=< Pgina anterior Inserindo a definio para essas propriedades, a tag que define o controle DataGrid ficaria da seguinte maneira: <ASP:DataGrid id=MeuDataGrid runat=server Width=600" BackColor=#bbccff AllowPaging=True PageSize=20 PagerStyle-NextPageText=Prxima pgina > PagerStyle-PrevPageText=< Pgina anterior BorderColor=black ShowFooter=false CellPadding=3 CellSpacing=0" Font-Name=Verdana Font-Size=8pt HeaderStyle-BackColor=#aaaadd MaintainState=false /> proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000843 N O T A Para que a paginao seja feita, alm de definir a propriedade AllowPaging como True, temos que criar cdigo para trocar de pgina. O mtodo que faz a troca de pgina definido na propriedade OnPageIndexChanged do DataGrid. SEGUNDA MARAVILHA DO DATAGRID: MAIS DO QUE UM CONJUNTO DE DADOS NA MESMA PGINA Vamos ver um exemplo prtico, onde exibiremos dados de duas tabelas, do Banco de Dados NorthWind, na mesma pgina ASP.NET. Para isso faremos uso de dois controles do tipo DataGrid. O exemplo Proposto: Exibir, na mesma pgina, informaes da tabela Funcionrios e da tabela Transportadores. Na listagem 13.7 a seguir temos o cdigo para o exemplo proposto. Listagem 13.7 Exibindo dados de mltiplas tabelas em uma pgina ASP.NET. <%@ Import Namespace=System.Data %> <%@ Import Namespace=System.Data.OleDb %> <html> <script language=C# runat=server> protected void Page_Load(Object Src, EventArgs E ) { // Crio uma conexo com o Banco de Dados do Microsoft Access. // C:\Meus documentos\NorthWind.mdb. String DefineConexo= PROVIDER=MICROSOFT.JET.OLEDB.4.0; + DATA SOURCE=c:\\meus documentos\\NorthWind.mdb; OleDbConnection MinhaConexo = new OleDbConnection(DefineConexo); // Para podermos acessar mltiplas tabelas vamos criar // um objeto Command, conforme indicado a seguir: OleDbCommand MeuComando = new OleDbCommand(); // defino algumas propriedades do objeto Command. MeuComando.Connection = MinhaConexo; MeuComando.CommandType = CommandType.Text; // Utilizamos um objeto DataAdapter para executar dois comandos SQL. // Um comando para retornar dados da tabela Funcionrios. // Um comando para retornar dados da tabela Transportadoras. OleDbDataAdapter MeuDataAdapter = new OleDbDataAdapter(); // Definimos o comando a ser utilizado pelo objeto DataAdapter. // Para isso definimos a sua propriedade SelectCommand. MeuDataAdapter.SelectCommand = MeuComando; // Criamos e preenchemos um objeto DataSet. // Vamos preencher o DataSet com dados das tabelas // Funcionrios e Transportadores. // Para isso precisamos executar dois comandos SQL. // ************************************************ // Na prtica vamos chamar o mtodo Fill do DataAdapter // duas vezes. // Antes de cada chamada alteramos a propriedade // CommandText do objeto Command. DataSet ds = new DataSet(); MeuComando.CommandText=Select CdigoDoFuncionrio,Nome,Sobrenome,Cargo From Funcionrios; MeuDataAdapter.Fill(ds,Funcionrios); proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8440000Curso Completo // Altero a propriedade CommandText para retornar dados // da tabela Transportadores. // Chamo novamente o mtodo Fill. MeuComando.CommandText = Select * From Transportadoras; MeuDataAdapter.Fill(ds,Transportadoras); // Conectamos um controle DataGrid com // cada tabela do DataSet criado anteriormente. // ****************************************************** // GradeFuncionrios o id (nome) de um controle do tipo // DataGrid que est na seo de apresentao da pgina. // Este controle exibir dados dos Funcionrios. // ****************************************************** // GradeTransportadoras o id (nome) de um controle do tipo // DataGrid que est na seo de apresentao da pgina. // Este controle exibir dados das Transportadoras. DataView Funcionrios = new DataView(ds.Tables[0]); GradeFuncionrios.DataSource = Funcionrios ; GradeFuncionrios.DataBind(); DataView Transportadoras = new DataView(ds.Tables[1]); GradeTransportadoras.DataSource = Transportadoras ; GradeTransportadoras.DataBind(); } </script> <h3><font face=Verdana>Funcionrios da empresa North Wind!!!</font></h3> <HR> <ASP:DataGrid id=GradeFuncionrios runat=server Width=450" BackColor=#bbccff BorderColor=blue ShowFooter=false CellPadding=3 CellSpacing=0" Font-Name=Verdana Font-Size=8pt HeaderStyle-BackColor=#aaaadd HeaderStyle-Font-Bold=True MaintainState=false /> <BR> <HR> <h3><font face=Verdana>Transportadoras da empresa North Wind!!!</font></h3> <ASP:DataGrid id=GradeTransportadoras runat=server Width=400" BackColor=#bbddff BorderColor=blue ShowFooter=false CellPadding=3 CellSpacing=0" Font-Name=Verdana Font-Size=8pt HeaderStyle-BackColor=#aaaadd HeaderStyle-Font-Bold=True MaintainState=false /> <HR> </body> </html> Ao acessar esta pgina, voc ir obter o resultado indicado na Figura 13.35: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000845 Figura 13.35 Exibindo dados de mltiplas tabelas em uma pgina ASP.NET. Comentrios sobre o cdigo do exemplo anterior. Vamos descrever os passos utilizados para acessar e exibir dados das tabelas Funcionrios e Pedidos. Alguns passos j foram explicados em exemplos anteriores, mas iremos repetir a explicao, para fazermos uma reviso do contedo deste captulo: 1. Utilizamos o evento Pge_Load para colocar o cdigo necessrio ao nosso exemplo. 2. Iniciamos estabelecendo uma conexo com o Banco de Dados NorthWind.mdb: String DefineConexo= PROVIDER=MICROSOFT.JET.OLEDB.4.0; + DATA SOURCE=c:\\meus documentos\\NorthWind.mdb; OleDbConnection MinhaConexo = new OleDbConnection(DefineConexo); 3. A partir deste ponto temos algumas mudanas em relao aos exemplos anteriores. Primeiro vamos criar um objeto OleDbCommand e definir as propriedades Connection e CommandType do objeto OleDbCommand: OleDbCommand MeuComando = new OleDbCommand(); // defino algumas propriedades do objeto Command. MeuComando.Connection = MinhaConexo; MeuComando.CommandType = CommandType.Text; proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8460000Curso Completo 4. Agora criamos um objeto DataAdapter e definimos a sua propriedade SelectCommand. Ao definirmos esta propriedade informamos qual o objeto OleDbCommand que estar associado ao DataAdapter: OleDbDataAdapter MeuDataAdapter = new OleDbDataAdapter(); MeuDataAdapter.SelectCommand = MeuComando; 5. Declaramos um objeto ds do tipo DataSet. O objeto DataSet ser o container para as tabelas Funcionrios e Transportadores. Recapitulando o que estudamos anteriormente, o objeto DataSet pode conter uma ou mais tabelas, as quais esto contidas na coleo Tables do objeto. DataSet ds = new DataSet(); 6. Chegamos ao ponto principal do nosso exemplo. Utilizamos a seguinte tcnica: Definimos a propriedade CommandText do objeto MeuComando. Esta propriedade contm a string SQL que acessa dados de uma determinada tabela: MeuComando.CommandText=Select CdigoDoFuncionrio,Nome,Sobrenome,Cargo From Funcionrios; Em seguida chamamos o mtodo Fill do objeto DataAdapter. Ao chamarmos este mtodo, o comando definido na propriedade CommandText executado e os dados retornados so passados para o DataSet definido no primeiro parmetro. O segundo parmetro o nome do conjunto de dados no DataSet. No nosso exemplo utilizamos o mesmo nome da tabela, no Banco de Dados NorthWind, porm isso no obrigatrio: MeuDataAdapter.Fill(ds,Funcionrios); Repetimos os mesmos passos para retornar dados da tabela Transportadoras e coloc-los no DataSet ds: MeuComando.CommandText = Select * From Transportadoras; MeuDataAdapter.Fill(ds,Transportadoras); Aps a execuo destes comandos, a coleo Tables, do DataSet ds, contm duas tabelas com dados retornados a partir do Banco de Dados NorthWind.mdb. 7. O prximo passo exibir os dados do objeto DataSet na pgina ASP.NET. Isto feito utilizando um objeto do tipo DataView para cada tabela a ser exibida. Ao criarmos o objeto DataView, j passamos como parmetro a tabela associada ao objeto. Em seguida definimos a propriedade DataSource do controle DataGrid como sendo igual ao objeto DataView recm-criado. O passo final chamar o mtodo DataBind do controle DataGrid: DataView Funcionrios = new DataView(ds.Tables[0]); GradeFuncionrios.DataSource = Funcionrios ; GradeFuncionrios.DataBind(); DataView Transportadoras = new DataView(ds.Tables[1]); GradeTransportadoras.DataSource = Transportadoras ; GradeTransportadoras.DataBind(); Para cada tabela do DataSet criamos um objeto DataView. Para o DataView Funcionrios, passamos como parmetro: ds.Tables[0], ou seja, a primeira tabela, da coleo de tabelas do DataSet ds. Para o DataView Transportadoras, passamos como parmetro ds.Tables[1], ou seja, a segunda tabela, da coleo de tabelas do DataSet ds. Depois s ligar cada DataView com o respectivo DataGrid. 8. Na seo de apresentao, utilizamos algumas propriedades do DataGrid para definir a sua aparncia. Por exemplo: HeaderStyle-BackColor=#aaaadd: Define a cor de segundo plano da primeira linha do DataGrid, a linha que contm os ttulos das colunas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 13 .NET E PGINAS ASP.NET COM O SQL SERVER 2005 Curso Completo0000847 HeaderStyle-Font-Bold=True: Define que o texto da primeira linha deve ser exibido com fonte em negrito. Este exemplo demonstra, mais uma vez, o poder e flexibilidade dos novos objetos para acesso a dados oferecidos pelo ADO.NET e tambm demonstra o poder dos Web Server Controls, mais especificamente do controle DataGrid. CONCLUSO Neste captulo apresentei o Framework .NET ao amigo leitor. Iniciamos o captulo apresentando uma viso geral e uma definio genrica para a iniciativa .NET da Microsoft. Tratamos de conceitos como Web Services, CLR Common Language Runtime e .NET Framework Class Library. Vimos que o .NET a viso da Microsoft em um mundo onde o Software passa a ser desenvolvido e comercializado na forma de servios. Os programas so construdos a partir de unidades menores, os assemblies. Dentro de um assembly tenho todos os elementos que garantem uma funcionalidade especfica, para a qual o assembly foi projetado. Dentro deste contexto podemos concluir que, mais do que uma atualizao tecnolgica, o .NET uma mudana de paradigma. Destacamos os dois principais componentes do Framework .NET. Em primeiro lugar um ambiente de execuo comum a todas as linguagens habilitadas ao .NET - CLR Common Language Runtime. Qualquer linguagem habilitada ao .NET, ao ser compilada, gera cdigo MSIL Microsoft Intermediate Language, sendo que o cdigo MSIL que executado pelo CLR. Alm disso fornecida uma biblioteca de classes que pode ser utilizada por qualquer linguagem habilitada ao .NET. .NET uma mudana de paradigma. Ao colocar disposio do programador um conjunto de classes padronizadas, o Framework .NET est incentivando boas prticas de programao, como a herana e a conseqente reutilizao de cdigo. Em seguida apresentamos os problemas com o modelo de desenvolvimento baseado em componentes que seguem o padro COM/COM+. Vimos que para que, um componente possa ser utilizado, este precisa ser registrado e que diferentes verses de um mesmo componente no podem coexistir em um mesmo computador, o que pode fazer com que, ao instalarmos um programa, este substitua a verso atual do componente por uma verso diferente, a qual no pode ser utilizada por outros programas que dependem da verso anteriormente instalada. Isto faz com que o programa que depende da verso substituda deixe de funcionar. Esta situao tambm conhecida como DLL Hell. Em seguida continuamos tratando dos componentes do Framework .NET apresentando, em primeiro lugar, as linguagens que fazem parte do Framework .NET, com destaque para a facilidade em fazer com que programas escritos em diferentes linguagens possam se comunicar e trocar informaes. Fizemos uma descrio breve do VB.NET e da nova linguagem C#. Continuando nossa jornada pela Framework .NET apresentamos o CTS Common Type System. Vimos a importncia de todas as linguagens utilizarem um conjunto padronizado de dados, principalmente para garantir a interoperabilidade entre programas, componentes e servios criados em diferentes linguagens. Tambm tratamos do conceito de metadados (metadata), o qual faz com que cada componente contenha todas as informaes necessrias ao seu funcionamento, o que evita que o componente tenha que ser proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8480000Curso Completo N O T A registrado, como acontecia com os componentes COM/COM+. Alm disso os metadados que possibilitam que diferentes verses de um componente coexistam em um computador, podendo in- clusive as diferentes verses serem executadas simultaneamente. Vimos que a unidade bsica de empacotamento chamada de assembly. Um assembly contm todos os elementos necessrios ao funcionamento de um componente. Falaremos mais sobre assemblies no prximo captulo. Seguindo, passamos a tratar das interfaces com o usurio, onde vimos os conceitos de Windows Forms e Web Forms, onde foram apresentados diagramas ilustrativos da utilizao destes elementos. Tambm no poderamos deixar de fora uma breve apresentao dos servidores .NET. Uma linha de servidores da Microsoft, para facilitar o desenvolvimento de aplicaes .NET, os quais fornecem uma srie de funcionalidades, desde um servidor de Banco de Dados Relacionais (SQL Server 2005) at um servidor para garantir a segurana na Internet Internet Security and Acceleration Server 2004. Para encerrar fizemos uma breve apresentao do ADO.NET. Para a documentao sempre atualizada sobre o .NET, no deixe de consultar o endereo: http://msdn.microsoft.com/net. Em seguida aprendemos a conectar pginas ASP.NET com Bancos de Dados do SQL Server 2005 e do Microsoft Access. Utilizamos classes, basicamente, dos seguintes namespaces: System.Data System.Data.OleDb System.Data.SqlClient Estudamos, em detalhes, diversas classes destes namespaces: SqlConnection/OleDbConnection SqlCommand/OleDbCommand SqlDataAdapter/OleDbDataAdapter DataSet DataView Tambm estudamos algumas caractersticas do poderoso controle DataGrid. Evidentemente que este captulo no tem a pretenso de ser um estudo completo e detalhado sobre o .NET e sobre a criao de pginas ASP.NET para a conexo com Bancos de Dados do SQL Server 2005. Estes seriam assuntos para livros inteiros (alis existem dezenas de livros sobre estes assuntos). Dentro da proposta deste livro, o objetivo deste captulo foi fazer com que o amigo leitor tenha uma idia clara do que o Framework .NET, como ele se relaciona com o SQL Server 2005 e como a tecnologia ASP.NET a alternativa mais indicada para a criao de aplicaes Web que fazem conexo com Bancos de Dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000849 Captulo 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8500000Curso Completo INTRODUO O trabalho com banco de dados tem um lado interessante. Voc inicia pelo projeto do banco de dados, atravs da definio das tabelas, chaves primrias e estrangeiras, relacionamentos e todos os demais tpicos do modelo relacional. Voc implementa as tabelas, ndices, views (consultas), triggers, stored procedures, configuraes de replicao, segurana enfim, um arsenal de recursos para colocar as informaes nos bancos de dados do SQL Server. Obviamente que todos estes passos so meios para se atingir um objetivo maior: A informao correta, para quem dela precisar, no momento adequado. Esta mxima da indstria de TI bem conhecida e dispensa maiores comentrios. Porm depois de colocar todas as informaes para dentro do banco de dados, voc precisa tirar estas informaes atravs de relatrios e consultas, para atender as demandas dos usurios. Temos diferentes maneiras de acessar os dados do SQL Server. No Captulo 11 voc aprendeu sobre a criao de pginas ASP, para o acesso a dados do SQL Server. No Captulo 13 voc aprendeu sobre o Framework .NET e sobre a criao de pginas ASP.NET, para acesso a dados do SQL Server. Voc tambm poderia criar aplicativos usando VB.NET, Delphi, C## ou qualquer outra linguagem de programao, aplicativos estes que acessam dados do SQL Server. Todo o acesso a dados, clculos, formataes pode ser feito usando ASP, ASP.NET ou linguagens como VB.NET, C# e Delphi. Porm usar programao para a criao de relatrios e a formatao das telas de sada bastante trabalhoso. Por isso que foram desenvolvidas opes especficas para a criao e formatao de relatrios. At o SQL Server 7.0, o prprio SQL Server no tinha nenhum sistema ou servio para a criao de relatrios. Com estas verses, a nica opo disponvel seria usar um cliente como o Access para acessar dados do SQL Server e, usando os recursos do Access, criar os relatrios necessrios. Outra opo era usar aplicativos especficos para a criao de relatrios, tais como o Crys- tal Reports. Voc usava o Crystal Reports para conectar com o SQL Server, criar e formatar relatrios. Os relatrios criados pelo Crystal Reports poderiam, ento, ser utilizados por aplicativos desenvolvidos em Visual Basic, VB.NET, C#, Delphi ou em pginas Web, criadas em ASP, ASP.NET, PHP ou Java. A partir do SQL Server 2000 (na verdade foi lanado como um sistema separado, bem depois do lanamento do SQL Server 2000), foi disponibilizado um servio especfico para a gerao de relatrios. Este servio facilita, bastante, a criao de relatrios a partir de bancos de dados do SQL Server, sem a necessidade de usar um aplicativo separado, como por exemplo o Access ou o Crystal Reports. A boa notcia que, no SQL Server 2005, o servio de relatrios Reporting Services foi bastante melhorado em relao ao servio oferecido pelo SQL Server 2000. Ele est bem mais fcil de utilizar, com bem mais recursos e, principalmente, com mais facilidades para que os relatrios gerados sejam acessados usando diferentes opes, tais como: Acesso via Web, uso dos relatrios por aplicativos desenvolvidos nas mais variadas linguagens e assim por diante. O nosso trabalho neste captulo justamente este, ou seja, entender o que , qual a sua arquitetura e como funciona o Reporting Services. Alm disso, aprenderemos, na prtica, a utilizar o Reporting Services, para criar e acessar relatrios, a partir de bancos do SQL Server 2005. Voc aprender, atravs de exemplos prticos, a criar relatrios usando o Reporting Services. Veremos que, para quem j conhece o Access, usar o Reporting Services ser bastante simples, pois os seus assistentes so muito semelhantes aos assistentes de criao de relatrios do Microsoft Access. Ento, mos obra. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000851 DESENVOLVIMENTO EM: ENTENDENDO O REPORTING SERVICES PR-REQUISITOS Conhecimento bsico dos objetos que compem um banco de dados do SQL Server. METODOLOGIA Apresentao dos elementos que compem o Reporting Services. INTRODUO AO REPORTING SERVICES O Reporting Services bem mais do que somente uma ferramenta para a criao de relatrios. Ele uma plataforma que, alm da criao de relatrios, permite que os relatrios sejam armazenados no servidor SQL Server, permite que sejam configuradas as permisses de acesso aos relatrios, disponibiliza diversos formatos de sada para os relatrios, permite que se use tecnologias push (onde o SQL Server envia uma cpia do relatrio para um ou mais destinatrios, sempre que houver mudanas ou em horrios agendados) ou tecnologia Pull (onde o usurio que solicita um determinado relatrio). Alm de tudo isso, o Reporting Services fornece toda a infra-estrutura e servios necessrios para a distribuio dos relatrios. Sem dvida, muito mais do que uma ferramenta para a criao de relatrios, o Report- ing Services constitui toda uma plataforma para a criao, configurao, distribuio e gerenciamento de relatrios. E ainda bastante simples de ser utilizado. O Reporting Services uma plataforma para gerao e distribuio de relatrios baseada no servidor SQL Server 2005. Com o Reporting Services possvel a criao desde os tradicionais relatrios no formato de tabelas/listagens, relatrios matriciais ou de referncia cruzada, relatrios grficos e em formatos no padronizados. Outro detalhe importante que, usando o Reporting Services, voc no est limitado a usar fontes de dados do SQL Server 2005. Voc poder usar qualquer fonte de dados relacional ou no para a qual o SQL Server 2005 tenha conectores. Por exemplo, voc poder usar, em um mesmo relatrio, dados de tabelas do SQL Server 2005 em conjunto com dados de uma planilha do Excel e dados vindos de uma fonte no estruturada, tais como dados de caixas de e-mail do Exchange Server 2003. Os relatrios gerados pelo Reporting Services podem, facilmente, ser acessados usando simplesmente um navegador, como o Internet Explorer, Netscape Navigator ou FireFox. O Reporting Services foi implementado pela Microsoft, usando uma arquitetura modular, onde ele foi dividido em diversos componentes. Cada componente executa funes especficas e todos os componentes interagem entre si. Por exemplo, um processo responsvel por fazer a conexo com as fontes de dados utilizadas no relatrio e retornar os dados solicitados. Outro componente o responsvel por receber a requisio dos clientes e retornar os dados no formato solicitado. Muitas so as vantagens de se utilizar esta arquitetura. Vamos citar apenas a mais bvia. Ao separar as funcionalidades de conectar com as fontes de dados e retornar os dados, da funcionalidade de retornar os resultados para os clientes, possvel ao Reporting Services fornecer o mesmo relatrio, para diferentes clientes, em diferentes formatos, simultaneamente, sem ter que fazer vrias conexes com as diferentes fontes de dados. Por exemplo, se um mesmo relatrio est sendo solicitado, por diferentes clientes, em formato .PDF, HTML, .XLS e XML, o Reporting Services far uma nica conexo com as fontes de dados, retornar os dados solicitados, e o componente de formatao ir criar diferentes formatos, para atender a solicitao de cada um dos clientes. Isso melhora bastante o desempenho e economiza recursos preciosos no servidor. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8520000Curso Completo RELATRIOS ACESSADOS VIA WEB VANTAGENS Conforme j descrevi anteriormente, o Reporting Services tem como uma de suas principais caractersticas a gerao de relatrios que so facilmente acessados, usando-se to-somente um Navegador. Esta caracterstica chamada, na documentao do SQL Server 2005, de Web-enabled foundation. Por que foi utilizada esta diretiva e quais as suas vantagens? Tentarei explicar na seqncia. O Reporting Services trabalha em conjunto com o Internet Information Services (IIS), funcionando como um servidor intermedirio, entre o cliente e o IIS. Isso permite a criao de relatrios baseados em qualquer fonte de dados que possa ser acessada via ADO.DB, OLE-DB Provider e, at mesmo, via ODBC. Opa, quer dizer que, se eu precisar utilizar dados de um bom e velho arquivo do Dbase III (arquivo .dbf), basta criar uma fonte ODBC para este arquivo e pronto, ele estar disponvel para ser utilizado, como uma fonte de dados, em um relatrio do Reporting Services? Sim, no s para o bom e velho arquivo do Dbase III, mas como para qualquer fonte que possa ser acessada via ODBC. Vejam que aqui o Reporting Services est cumprindo e bem o seu papel de servir como uma infra- estrutura intermediria entre uma grande variedade de fontes de dados e o acesso via Web a relatrios baseados nestas fontes. Na Figura 14.1, temos uma ilustrao desta integrao do Reporting Services, com o IIS, para a criao de relatrios que podem ser acessados via Web. Figura 14.1 Integrao entre o Reporting Services e o IIS. Claro que os formatos para acesso via Web e o acesso via Web trazem inmeras vantagens, j bem conhecidas. Para maiores detalhes sobre estas vantagens, consulte os tpicos sobre os modelos de desenvolvimento em 3 ou n-camadas, apresentados nos Captulos 1 e 2. Mas uma soluo para a criao de relatrios deve ser flexvel e permitir, alm do formato e acesso via Web, a criao de relatrios em formatos mais tradicionais, para acesso atravs de aplicaes j conhecidas do usurio. O Report- ing Services permite, tambm, a criao de relatrios nos mais variados formatos, tais como: HTML Excel Text XML Image PDF proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000853 N O T A N O T A Os formatos para os quais o Reporting Services pode gerar relatrios so conhecidos como Rendering Extensions. O Reporting Services uma plataforma aberta, que pode ser extendida atravs de suas APIs de programao. Por exemplo, voc pode usar as APIs de programao do Reporting Services para fazer com que seja possvel a gerao de relatrios em formatos adicionais, de acordo com as necessidades da sua empresa. Importante: Outro detalhe importante que o Reporting Services faz parte do SQL Server 2005. Ao adquirir as licenas do SQL Server 2005, voc est tambm adquirindo licena para usar o Reporting Services, no mesmo servidor onde est sendo instalado o SQL Server 2005. Se voc precisar instalar e utilizar o Reporting Services em servidores adicionais, onde no est instalado o SQL Server 2005, voc precisar entrar em contato com a Microsoft para adquirir licena de uso do Reporting Services, nestes servidores adicionais. PRINCIPAIS COMPONENTES DO REPORTING SERVICES Agora que j temos uma viso geral do que o Reporting Services e de que papel ele desempenha na gerao e distribuio de relatrios, vamos analisar, rapidamente, os principais componentes do Re- porting Services. Na Figura 14.2, apresento uma figura do Books Online do SQL Server 2005, na qual temos uma viso geral da arquitetura e dos principais componentes do Reporting Services. Na seqncia, farei uma breve descrio de cada um dos componentes do Reporting Services e das funes desempenhadas por cada um. Figura 14.2 Arquitetura e componentes do Reporting Services. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8540000Curso Completo REPORT DESIGNER O Report Designer talvez seja a face mais visvel do Reporting Services, para quem fica responsvel pela criao dos relatrios. Por exemplo, quando chega um pedido do chefe: Preciso de um relatrio de vendas, que mostre o total mensal de vendas por produto e por ms, para o ano de 2004. Alm disso, preciso do relatrio para acesso via browser e tambm no formato de planilha do Excel. O funcionrio responsvel pela criao do relatrio ir utilizar o Report Designer para conectar com as tabelas do SQL Server e criar o relatrio, conforme solicitao do chefe. Alm da criao do relatrio, voc tambm utiliza o Report Designer, para publicar o relatrio em um servidor de relatrios. Outro detalhe importante que o Report Designer integrado com o Visual Studio. Uma vez instalado o Report Designer, as suas funcionalidades estaro tambm disponveis para serem utilizadas, atravs do Visual Studio. Para a criao de um relatrio usando o Report Designer, primeiro voc cria um novo projeto no Visual Studio. Este novo projeto ser baseado no template Report Project. Depois de criar um novo projeto do tipo Report Project, voc adiciona um ou mais relatrios (voc aprender a fazer isso na parte prtica deste captulo, em um dos prximos tpicos). Voc poder criar diferentes tipos de relatrios, desde as tradicionais listagens, relatrios do tipo matriciais e, viva, relatrios do tipo Tabela de Referncia Cruzada. Uma grande queixa em relao ao SQL Server era em relao dificuldade em se criar relatrios de referncia cruzada, uma vez que a clusula TRANSFORM, utilizada no Microsoft Access, para a criao deste tipo de relatrio, uma clusula proprietria do Access e no faz parte do padro da linguagem T-SQL, utilizada pelo SQL Server. Com o Report Designer, conforme voc ver na parte prtica, ficou bem mais fcil a criao de relatrios do tipo Tabela de referncia cruzada. Voc ver que a criao de relatrios, usando o Report Designer, bem semelhante criao de relatrios usando o Microsoft Access. Voc poder utilizar assistentes ou simplesmente arrastar campos e outros elementos, em uma interface visual, de fcil utilizao. Voc tambm tem a opo de testar o relatrio, localmente, antes de public-lo em um servidor de relatrios. Com isso, voc pode, rapidamente, testar os resultados do seu relatrio e corrigir os erros ainda existentes, antes de envi-lo para publicao em um servidor de relatrios. Uma vez publicado um relatrio, voc usa o console SQL Server Management Studio ou o console Report Manager, para administrao dos relatrios. Para a criao e definio dos relatrios utilizada uma linguagem conhecida como Report Definition Language (RDL). Todas as funcionalidades deste padro esto disponveis no Report Designer. Foge ao escopo deste livro tratar sobre o padro RDL. No Books Online voc encontra mais informaes sobre a linguagem RDL. REPORT SERVER O Report Server o principal componente do Reporting Services. Ele responsvel pela grande maioria das funcionalidades do Reporting Services. Ele composto de dois componentes principais: Um Web Service (dentro do conceito de Webservices do Framework .NET. Para mais detalhes sobre o Framework .NET, consulte o Captulo 13) e um Servio do Windows. O Web Service responsvel por disponibilizar uma srie de interfaces de programao (na verdade um grande conjunto de objetos, mtodos e propriedades), as quais so utilizadas pelas aplicaes clientes (quer sejam aplicaes Web, por exemplo baseadas em ASP ou ASP.NET ou aplicaes tradicionais, baseadas em VB.NET, Delphi, etc.), para acessar proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000855 os recursos e funcionalidades do Report Server. O servio Windows responsvel pelo agendamento e envio de servios. Por exemplo, um relatrio pode ser agendado, para ser enviado via e-mail para um grupo de usurios, em datas e horrios previamente agendados. Alm disso, o Report Server tem uma srie de subcomponentes, os quais so responsveis pela formatao dos relatrios, publicao dos relatrios, atender as requisies dos clientes, verificar se o cliente tem permisso para acessar determinado relatrio e assim por diante. A seguir apresento uma breve descrio dos principais subcomponentes do Report Server. Programmatic Interfaces (Interfaces de Programao): O Report Server, atravs de um Web Service, disponibiliza uma srie de Interfaces de Programao (na verdade um grande conjunto de objetos, mtodos e propriedades), as quais so utilizadas pelas aplicaes clientes (quer sejam aplicaes Web, por exemplo baseadas em ASP ou ASP.NET, ou aplicaes tradicionais, baseadas em VB.NET, Delphi, etc.), para acessar os recursos e funcionalidades do Report Server. Estes objetos trabalham com padres do Framework .NET, tal como o protocolo SOAP, o qual permite encapsular diferentes protocolos e formatos para uso atravs do protocolo HTTP. Para detalhes sobre o SOAP como protocolo e o XML como formato de dados, consulte o Captulo 13. Report Processor: Este o componente que carrega as informaes de definio sobre um determinado relatrio, a partir do banco de dados do Report Server (todas as informaes sobre os relatrios so mantidas em um banco de dados do Reporting Services), e combina estas informaes com os dados obtidos a partir das fontes de dados do relatrio, para gerar o relatrio final. Observe a modularizao do processo. Ou seja, as definies do relatrio so armazenadas separadamente dos dados do relatrio. As definies so armazenadas em um banco de dados do Report Server. Os dados que compem o relatrio ficam em seu formato original, nas fontes de dados que sero utilizadas no relatrio. Ou seja, o Report Server somente armazena as informaes necessrias para acessar os dados, mas no os dados em si. Com isso, quando um relatrio solicitado, o Report Server acessa as informaes de definio do relatrio e combina estas informaes com os dados obtidos a partir das fontes de dados, para gerar o relatrio solicitado. Aps gerado o relatrio, ele ainda enviado para o componente de formatao, o qual ir colocar o relatrio no formato de sada, solicitado pelo cliente e com as formataes especificadas, quando da criao do relatrio. Data Processing Extensions: Uma extenso de processamento de dados uma funcionalidade especfica, que o Report Server usa para acessar determinada fonte de dados. Diferentes extenses so utilizadas para interagir com diferentes fontes de dados. Voc pode usar as extenses que j esto disponveis com o Report Server ou pode criar suas prprias extenses, para acessar diferentes fontes de dados. Por padro, o Report Server apresenta extenses para as seguintes fontes de dados: 1. SQL Server 2. Oracle 3. ODBC 4. OLE DB 5. ADO.NET data provider proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8560000Curso Completo As extenses para ODBC e OLE-DB fazem com que seja possvel se conectar, com praticamente qualquer fonte de dados estruturada, disponvel atualmente. As extenses de processmaento de dados so responsveis por uma srie de tarefas, para que seja possvel o acesso a uma fonte de dados: 1. Abrir uma conexo com a fonte de dados. 2. Retornar uma lista de tabelas e campos disponveis na fonte de dados. 3. Executar uma consulta contra a fonte de dados e retornar um conjunto de registros. 4. Se for uma consulta parametrizada, as extenses de dados que so responsveis por passar os parmetros esperados pela consulta. 5. Passar informaes de logon, para a fonte de dados (nome de usurio e senha, se necessrio). Report server database (banco de dados do servidor de relatrios): Conforme j descrevi anteriormente, o Reporting Services utiliza um banco de dados, para armazenar uma srie de informaes, tais como as definies dos relatrios, informaes para acessar as fontes de dados, informaes sobre permisses de acesso, informaes para formatao dos relatrios, informaes sobre agendamentos de envio de relatrios e assim por diante. O banco de dados do servidor de relatrios pode estar no mesmo servidor onde est instalado o Reporting Ser- vices ou em um outro servidor SQL Server. Scheduling and Delivery Processor (processador de agendamento e de envio de relatrios): Este o componente responsvel pelo agendamento e envio de relatrios para os usurios. Um relatrio pode ser agendado para ser executado uma nica vez, ou pode ser agendado para ser executado e enviado para um grupo de usurios em perodos definidos. Este componente responsvel por duas tarefas distintas: Executar os relatrios agendados e Enviar o relatrio para um ou mais destinos, que pode ser desde um grupo de usurios, para um envio via e-mail, ou a publicao da verso atualizada do relatrio para acesso via Web. A execuo peridica importante para que o relatrio esteja sempre atualizado. Por exemplo, um relatrio dirio de vendas, com o total de vendas por produto, tem que ser constantemente atualizado (digamos de 10 em 10 minutos), para que seja til. O responsvel por esta atualizao peridica o processador de agendamento e envio de relatrios. Quando um relatrio agendado executado, criado um snapshot do relatrio, no momento em que ele executado. Ou seja, criada uma nova verso do relatrio, com base nos dados disponveis no momento de sua execuo. O relatrio enviado para o banco de dados do servidor de relatrios e fica disponvel para ser acessado. Se necessrio, possvel armazenar no banco de dados do servidor de relatrios mltiplas verses de um relatrio. Por exemplo, as ltimas 20 verses, ou todas as verses dos ltimos quinze dias. A possibilidade de agendar a execuo dos relatrios um auxiliar valioso para manter um bom desempenho no servidor de relatrios. Com isso, os usurios podem acessar verses j prontas dos relatrios, as quais esto to atualizadas quanto for o agendamento de execuo. Claro que, em determinadas situaes, pode ser necessrio acessar uma verso 100% atualizada do relatrio. Nestes casos, tem que ser feito um estudo detalhado para ver o que mais interessante em termos de desempenho. Por exemplo, agendar o relatrio para executar de minuto em minuto ou no agendar uma execuo e fazer com que o relatrio seja executado, cada vez que houver uma solicitao dos clientes? proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000857 N O T A Aps criado o agendamento dos relatrios, os usurios podem se inscrever para um ou mais relatrios. Depois que um relatrio agendado for executado, ele ser enviado para o destino especificado no momento da inscrio. O Reporting Services pode formatar o relatrio para ser enviado como uma mensagem de e-mail, pode enviar o relatrio como um arquivo anexado a uma mensagem de e-mail ou pode enviar apenas um link via e-mail ou um aviso via pager, com o link para acesso nova verso do relatrio, via browser. Mais uma vez cabe ressaltar a natureza extensvel do Reporting Services. Os programadores podem criar outras opes de entrega dos relatrios, diferentes das que so fornecidas pelo Reporting Services. As informaes de agendamento tambm so armazenadas no banco de dados do servidor de realtrios. O servidor de relatrios coloca os agendamentos em uma fila e envia as requisies para a mquina de agendamento, para processamento nos horrios e datas previamente agendadas. Para criar os agendamentos, o Reporting Services se baseia nos servios oferecidos pelo SQL Server Agent. Os agendamentos no sero processados se o SQL Server Agent no estiver rodando ou houver algum problema com este servio. Delivery extensions: O componente Scheduling and Delivery Processor, descrito anteriormente, utiliza o componente conhecido como Delivery extensions, para enviar os relatrios para diferentes localizaes e destinos. Juntamente com o Reporting Services so instaladas extenses de entrega para envio dos relatrios via e-mail ou para uma pasta compartilhada em um servidor. Evidentemente que outras extenses podem ser criadas pelos programadores, usando as APIs de programao disponveis. O mecanismo de envio de relatrios (delivery extensions) trabalha em conjunto com o mecanismo de inscries (subscriptions). Quando um usurio faz uma inscrio, ele define qual o mtodo de entrega a ser utilizado, o que determinar como os relatrios sero enviados para ele. E-Mail Delivery Extension: Esta extenso permite que os relatrios sejam enviados via e- mail, usando o protocolo SMTP. Para isso deve estar disponvel um servidor SMTP. Pode ser o servidor SMTP que vem junto com o IIS ou um servidor mais sofisticado, tal com o Exchange Server 2003. File Share Delivery Extension: Com esta extenso, os relatrios podem ser salvos em uma pasta compartilhada, em um servidor da rede, no formato de sada definido durante a criao do relatrio. Por exemplo, pode ser criada uma pasta compartilhada chamada Indicadores, em um servidor de arquivos da rede. Posso configurar uma srie de relatrios, os quais sero gerados no formato de planilhas do Excel e salvos, automaticamente, na pasta compartilhada Indicadores. Alm disso, usando o agendamento, posso fazer com que os relatrios sejam atualizados, periodicamente. Por exemplo, atualizao de hora em hora. Com isso, terei uma pasta Indicadores, com planilhas sempre atualizadas (com no mximo uma hora de defasagem), planilhas estas geradas, automaticamente, pelo Reporting Services. Este exemplo demonstra bem que o Reporting Services, mais do que uma plataforma para gerao de relatrios, tambm um framework para atualizao e distribuio destes relatrios, nos mais variados formatos, atravs da rede da empresa. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8580000Curso Completo N O T A Rendering Extensions: Estes so os componentes responsveis por fazer a formatao final do relatrio. Ou seja, so estes componentes que definem em quais formatos os relatrios podem ser disponibilizados. Por enquanto, esto disponveis seis formatos de sada: HTML Excel Text XML Image PDF Nunca demais salientar que podem ser criadas extenses adicionais, para permitir a sada em outros formatos. Quando um relatrio gerado no formato de uma planilha do Excel, preciso do Excel XP ou superior. Esta opo cria arquivos no formato MHTML. Este um tipo MIME par ao Excel e contm tags HTML e XML que so especficas para o Excel XP ou superior, no sendo compatveis com verses anteriores do Excel. Uma opo que tambm est disponvel a gerao dos relatrios no formato CSV Comma-Separated Value. Um arquivo .CSV um arquivo de texto, o qual reconhecido por qualquer verso do Excel, e tambm pode ser importado pela maioria dos bancos de dados, como por exemplo o Microsoft Access. Com a extenso Image Rendering Extension, possvel gerar os relatrios como figuras nos formatos: BMP, EMF, GIF, JPEG, PNG, TIFF, and WMF. Por padro utilizado o formato TIFF. A vantagem do uso do formato de imagem que a aparncia do relatrio ser exatamente a mesma, para todos os clientes que acessarem o relatrio. J com formatos como o HTML, dependendo do cliente que estiver sendo utilizado para acessar o relatrio, podero haver diferenas na apresentao do relatrio. Ao usar o PDF Rendering Extension, voc poder gerar arquivos .PDF os quais so compatveis com o Adove Reader 4.0 ou superior. Bem. Com isso acredito que j tivemos uma boa dose de teoria, com a qual foi possvel ter uma noo clara do que e quais os usos do Reporting Services. A partir do prximo tpico, faremos uma srie de exemplos prticos, passo a passo. DESENVOLVIMENTO EM: REQUISITOS PARA QUE O REPORTING SERVICES FUNCIONE CORRETAMENTE PR-REQUISITOS Conhecimento sobre os elementos do Reporting Services. METODOLOGIA Apresentao dos pr-requisitos para funcionamento do Reporting Services. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000859 O Reporting Services instalado durante a instalao do SQL Server 2005. Em uma das etapas da instalao, mostradas no Captulo 2, voc marca a opo Reporting Services. As funcionalidades do Reporting Services so dependentes do IIS. Por isso, antes de instalar o Reporting Services, voc deve certificar-se de que o IIS esteja corretamente instalado e esteja funcionando. Para testar se o IIS est instalado e funcionando s abrir o seu navegador e digitar o seguinte endereo http://localhost. Se for aberta a tela inicial do site padro, sinal de que o IIS est corretamente instalado e est funcionando. Caso d erro ao acessar o endereo http://localhost voc deve, inicialmente, verificar se o IIS est instalado. Se o IIS no estiver instalado, voc deve instal-lo, usando os passos descritos no Captulo 13. REQUISITOS DO IIS E DO ASP.NET PARA A INSTALAO DO REPORTING SERVICES Para que a instalao do Reporting Services possa ser feita com sucesso, alguns requerimentos devem ser atendidos, principalmente em relao ao IIS e ao funcionamento do ASP.NET, do qual depende o funcionamento do IIS. Devem ser atendidos os seguintes requisitos: Deve existir um Web Site padro, configurado no IIS, para que o Reporting Services possa criar as pastas virtuais, necessrias ao seu funcionamento. Ao instalar o IIS, j , automaticamente, criado um Web Site padro. Pode ser utilizado este Web site, criado pelo IIS. Configurao de contas padro com as quais o IIS ir rodar. Estas configuraes tambm so feitas, automaticamente, durante a instalao do IIS. O ASP.NET deve estar funcionando corretamente e configurado para rodar com a conta padro configurada para o ASP.NET. Esta configurao feita tambm, automaticamente, durante a instalao do Framework .NET. Observe que, ao instalar o IIS e o Framework .NET, com as configuraes padro, voc j atender os pr-requisitos para que o Reporting Services possa ser instalado e possa funcionar, corretamente. Claro que sempre existe a possibilidade de surgirem problemas. No Books Online, na seo: Installing SQL Server -> Installing SQL Server 2005 Components -> Installing Reporting Services, voc encontra informaes detalhadas sobre todo o processo de instalao do Reporting Services e sobre como re- solver problemas que podem surgir, durante a instalao. DESENVOLVIMENTO EM: IMPORTANDO O NORTHWIND.MDB E DEFININDO OS RELACIONAMENTOS PR-REQUISITOS Conhecimento sobre Importao/Exportao de dados com o SQL Server 2005. METODOLOGIA Exemplo prtico, passo-a-passo. Antes de comearmos a criao de relatrios, vamos preparar o ambiente. Eu optei por importar o banco de dados Northwind.mdb, do Access, para dentro do SQL Server 2005 e definir, dentro do SQL Server, os relacionamentos entre as tabelas importadas. Optei por importar e utilizar o Northwind.mdb, proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8600000Curso Completo por ser um banco de dados bem conhecido, com o qual a maioria dos leitores j deve ter trabalhado. O banco de dados AdventureWorks um banco bastante normalizado, com um grande nmero de tabelas. Demora um bom tempo at que consigamos entender bem a estrutura do banco de dados AdventureWorks. Como o objetivo deste captulo mostrar como utilizar o Reporting Services, optei por utilizar o Northwind.mdb, por ser este um banco j bem conhecido dos amigos leitores. A seguir faremos a importao do Northwind.mdb para dentro do SQL Server 2000 e, logo em seguida, definiremos as chaves primrias e os relacionamentos entre as tabelas. Primera etapa: Usar o assistente de Importao/Exportao, para importar as tabelas do banco de dados Northwind.mdb para um banco de dados NorthwindReport, no SQL Server. O banco de dados NorthwindReport ser criado durante a importao. Para importar o banco de dados Northwind.mdb, para dentro do SQL Server 2005, siga os passos indicados a seguir: 1. Abra o DTS Import/Export Wizard: Iniciar -> Programas -> Microsoft SQL Server 2005 -> DTS Import/Export Wizard. 2. Ser aberto o assistente para importao e exportao de dados. A primeira tela do assistente somente informativa. Clique em Next para seguir para a prxima etapa do assistente. Figura 14.3 Criando o banco de dados NorthwindReport. 3. Nesta etapa voc informa os dados sobre a origem dos dados. Na lista Data source selecione a opo Microsoft Access. No campo File name voc informa o caminho completo para o banco proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000861 de dados Northwind.mdb. Normalmente, este banco de dados est gravado no seguinte caminho: C:\Arquivos de programas\Microsoft Office\Office\Samples\Northwind.mdb. Digite o caminho para acessar o banco de dados Northwind.mdb 4. Clique em Next, para seguir para a prxima etapa do assistente. 5. Nesta etapa definimos para qual banco de dados do SQL Server iremos importar os dados do Northwind.mdb. Na lista Destination selecione a opo Microsoft OLE DB Provider for SQL Server. Na lista Server name, selecione a instncia para a qual sero importados os dados. 6. Vamos criar um novo banco de dados chamado NortwhindReport, para o qual sero importados os dados. Clique no boto New. Ser aberta a janela Create database. Defina as opes indicadas na Figura 14.3. Clique em OK para criar o banco de dados NorthwindReport. 7. Voc estar de volta ao assistente de importao. Clique em Next para seguir para a prxima etapa do assistente. 8. Nesta etapa marque a opo Copy data from one or more tables or views. Clique em Next para seguir para a prxima etapa do assistente. 9. Nesta etapa voc marca as tabelas a serem importadas. Marque as tabelas Categorias, Clientes, Detalhes do Pedido, Fornecedores, Funcionrios, Pedidos, Produtos e Transportadoras, conforme indicado na Figura 14.4: Figura 14.4 Selecionando as tabelas a serem importadas. 10. Clique em Next para seguir para a prxima etapa do assistente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8620000Curso Completo 11. Nesta etapa, certifique-se de que a opo Execute immediately esteja selecionada e que a opo Save DTS Package esteja desmarcada. Clique em Next para seguir para a prxima etapa do assistente. 12. Ser exibido um resumo das opes selecionadas. Caso voc precise alterar alguma opo, voc pode usar o boto Back. Clique em Finish. 13. Ser iniciado o processo de importao. Uma janela, indicando o andamento dos trabalhos ser exibida, conforme indicado na Figura 14.5: Figura 14.5 Importao em andamento. 14. Ao ser concluda a importao, o boto Close ser habilitado. Clique em Close para encerrar o DTS Import/Export Wizard. 15. Muito bem, o banco de dados NorthwindReport ter sido criado e todas as tabelas do Northwind.mdb foram importadas para dentro do banco de dados NorthwindReport, como pode ser conferido usando o SQL Server Management Studio, conforme indicado na Figura 14.6. Muito bem, agora j estamos aptos a ir para a segunda etapa, na qual vamos definir as chaves primrias e os relacionamentos para as tabelas do banco de dados NorthwindReport. Quando voc importa tabelas do Microsoft Access, as definies de chave primria e relacionamentos no so importadas para o SQL Server 2005. Na Figura 14.7 temos o Diagrama Entidade x Relacionamentos, no qual esto exibidos os relacionamentos que sero definidos para o banco de dados NorthwindReport. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000863 Figura 14.6 Importao concluda com sucesso. Figura 14.7 Relacionamentos para o banco de dados NorthwindReport. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8640000Curso Completo Segunda etapa: Para definir as chaves primrias e relacionamentos para o banco de dados NorthwindReport, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio e navegue at o banco de dados NorthwindReport, criado na etapa anterior. 2. Navegue at o banco de dados NorthwindReport e clique no sinal de + ao lado deste banco de dados, para exibir as opes disponveis. 3. Clique no sinal de + ao lado da opo Tables, para exibir a lista de tabelas disponveis. Devero ser exibidas as tabelas Categorias, Clientes, Detalhes do Pedido, Fornecedores, Funcionrios, Pedidos, Produtos e Transportadores. Vamos comear por definir as chaves primrias para as tabelas. 4. Clique com o boto direito do mouse na tabela Categorias e, no menu de opes que exibido, clique em Modify Table. Ser exibida a janela para modificao da estrutura da tabela Categorias. 5. A chave primria da tabela Categorias ser o campo CdigoDaCategoria. Selecione a linha CdigoDaCategoria (para selecionar uma linha, clique no boto cinza, ao lado do nome do campo). Estando a linha CdigoDaCategoria selecionada, selecione o comando Table Designer -> Set Primary Key. O desenho de uma pequena chave amarela ser exibido ao lado do campo CdigoDaCategoria, conforme indicado na Figura 14.8. Este desenho indica que o campo foi configurado como chave primria da tabela. Figura 14.8 Campo CdigoDaCategoria definido como chave primria. 6. Pressione Ctrl+S para salvar as alteraes. Selecione o comando File -> Close, para fechar a janela de edio da estrutura da tabela Categorias. 7. Agora vamos definir as chaves primrias para os demais campos. Seguindo as orientaes dos passos anteriores, defina os seguintes campos como chave primria: CdigoDoCliente da tabela Clientes CdigoDoFornecedor da tabela Fornecedores CdigoDoFuncionrio da tabela Funcionrios NmeroDoPedido da tabela Pedidos CdigoDoProduto da tabela Produtos CdigoDaTransportadora da tabela Transportadoras proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000865 Muito bem, uma vez definidas as chaves primrias, vamos definir os relacionamentos entre as tabelas. Por exemplo, tem um relacionamento entre as tabelas Pedidos e Detalhes do Pedido. O relacionamento atravs do campo NmeroDoPedido. Na tabela Pedidos, o campo NmeroDoPedido uma chave primria. Na tabela Detalhes do Pedido, o campo nmero do pedido uma chave estrangeira. O relacionamento do tipo Um-para-vrios. Um do lado pedidos, ou seja, cada pedido somente pode ser cadastrado uma nica vez. Vrios no lado Detalhes do Pedido, ou seja, um mesmo pedido pode ter vrios itens. Estes so princpios bsicos do modelo relacional de dados, princpios estes que foram abordados no Captulo 1. No nosso exemplo, temos que definir os relacionamentos indicados na tabela a seguir: Vamos ento prtica, implementar estes sete relacionamentos, no banco de dados NorthwindReport. 8. Voc j deve estar com a lista de tabelas do banco de dados NorthwindReport sendo exibida. Vamos iniciar criando o relacionamento entre as tabelas Pedidos e Detalhes do Pedido, atravs do campo NmeroDoPedido. 9. Clique com o boto direito do mouse na tabela Detalhes do Pedido e, no menu que exibido, clique em Modify Table. Ser exibida a estrutura da tabela Detalhes do Pedido. Observe que o relacionamento criado, acessando a estrutura da tabela que est no lado vrios do relacionamento. Neste primeiro caso, o relacionamento entre as tabelas Pedidos (lado um) e Detalhes do Pedido (lado vrios), atravs do campo NmeroDoPedido. 10. Execute o comando Table Designer -> Relationships. Ser aberta a janela Foreign Key Relation- ship, na qual iremos criar o relacionamento. 11. Clique no boto Add. 12. Um novo relacionamento ser criado e um nome ser, automaticamente, atribudo a este relacionamento. Agora temos que informar ao SQL Server quais os campos que compem o relacionamento. 13. No lado direito da janela clique no sinal de + ao lado da opo Tables and Columns Specifica- tion, destacada na Figura 14.9: Lado Um Lado Vrios NmeroDoPedido da tabela Pedidos NmeroDoPedido da tabela Detalhes do Pedido CdigoDoFuncionrio da tabela Funcionrios CdigoDoFuncionrio da tabela Pedidos CdigoDaTransportadora da tabela Transportadoras Via da tabela Pedidos CdigoDoCliente da tabela Clientes CdigoDoCliente da tabela Pedidos CdigoDoProduto da tabela Produtos CdigoDoProduto da tabela Detalhes do Pedido CdigoDaCategoria da tabela Categorias CdigoDaCategoria da tabela Produtos CdigoDoFornecedor da tabela Fornecedores CdigoDoFornecedor da tabela Produtos Tabela 14.1 Relacionamentos a serem criados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8660000Curso Completo Figura 14.9 A janela para criao do relacionamento. 14. Clique no boto com as reticncias, ao lado da opo Tables and Columns Specification. Ser aberta a janela Tables and Columns, na qual voc define qual campo em qual tabela o lado um do relacionamento e qual campo de qual tabela o lado vrios. Na lista Primary Key Table, selecione a tabela Pedidos. O lado um do relacionamento o campo NmeroDoPedido da tabela Pedidos. Clique na linha em branco, abaixo da tabela Pedidos. Ser habilitada a lista de campos da tabela Pedidos. Nesta lista selecione o campo NmeroDoPedido. Pronto, acabamos de definir o lado Um do relacionamento. Na lista Foreign Key Table j vem selecionada a tabela Detalhes do Pedido. Como clicamos com o boto direito do mouse nesta tabela e selecionamos Modify Table, ela j vem selecionada como sendo o lado vrios. Clique na linha em branco, abaixo de Detalhes do Pedido. Ser habilitada uma lista, com os campos da tabela Detalhes do Pedido. Abra a lista e selecione o campo NmeroDoPedido. No campo Relationship name digite um nome para o relacionamento. Vamos digitar o nome: Pedidos_DetalhesDoPedido. Sua janela deve estar conforme indicado na Figura 14.10: Figura 14.10 Criando um novo relacionamento. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000867 15. Clique em OK. Voc estar de volta janela Foreign Key RelationShips. Clique em Close para fech-la. Voc estar de volta estrutura da tabela Detalhes do Pedido. Pressione Ctrl + S para salvar as alteraes. Ser aberta uma janela informando que sero salvas alteraes nas tabelas Pedidos e Detalhes do Pedido, ou seja, justamente as tabelas que compem o relacionamento que acabamos de criar. Clique em Yes para confirmar. Selecione o comando File -> Close para fechar a janela para alteraes na tabela Detalhes do Pedido. 16. Com base nas explicaes que foram apresentadas, crie os demais relacionamentos propostos para o banco de dados NorthwindReport. Lembre-se que voc deve clicar com o boto direito do mouse, sempre na tabela que ser o lado Vrios do relacionamento. Por exemplo, para criar o seguinte relacionamento: Voc deve clicar com o boto direito do mouse na tabela Pedidos. No menu de opes que surge, clique em Modify Table e siga os passos descritos anteriormente, para criar este novo relacionamento. Muito bem, aps ter criado todos os relacionamentos propostos, estamos prontos para comear a criar os relatrios, usando servio de relatrios do SQL Server 2005. Esse justamente o assunto do prximo tpico. Feche o SQL Server Management Studio. DESENVOLVIMENTO EM: UTILIZANDO O REPORTING SERVICES PR-REQUISITOS Conhecimento bsico dos componentes do Reporting Services. METODOLOGIA Exemplos prticos de criao e utilizao de relatrios. EXEMPLO PRTICO O PRIMEIRO RELATRIO Neste item vamos criar o nosso primeiro relatrio este relatrio ser baseado no banco de dados NorthwindReport (o qual preparamos no tpico anterior). Este banco de dados tem algumas tabelas tradicionais, para clientes, funcionrios, pedidos, produtos e vendas. o j mais do que conhecido Northwind.mdb, o qual importamos para dentro do SQL Server 2005. Para iniciar o nosso trabalho com o Reporting Services, vamos criar um exemplo bastante simples, onde criaremos uma listagem dos clientes. Esta listagem apresentar o nome do cliente e alguns dados adicionais, tais como endereo, cidade, pas e regio. Exemplo prtico: Criar um relatrio, o qual gera uma listagem de clientes. Devem constar da listagem informaes tais como Nome do cliente, endereo, cidade, pas, regio e telefone de contato. Ordenar a listagem pelo nome do cliente. Lado Um Lado Vrios CdigoDoFuncionrio da tabela Funcionrios CdigoDoFuncionrio da tabela Pedidos Tabela 14.2 Relacionamento Funcionrios x Pedidos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8680000Curso Completo N O T A Para criar a listagem proposta, siga os passos indicados a seguir: 1. Abra o Business Intelligence Development Studio: Iniciar -> Programas -> Microsoft SQL Server 2005 -> Business Intelligence Development Studio. O Business Intelligence Development Studio assunto, no para um livro inteiro, mas sim para uma enciclopdia inteira. O que d para fazer com esta ferramenta algo realmente incrvel. Neste captulo, me limitarei a mostrar como usar esta ferramenta para criar diferentes tipos de relatrios. 2. Ser aberto o Business Intelligence Development Studio, com uma tela em branco, sem nenhum projeto. Para criar um novo relatrio, vamos criar um novo projeto. Selecione o comando File -> New -> Project. 3. Ser aberta a janela New Project. Na lista Project Types selecione a opo Business Intelligence Projects. Nas opes que so exibidas no painel da direita, marque a opo Report Project Wizard, conforme indicado na Figura 14.11: Figura 14.11 A opo Report Server Project Wizard. 4. No campo Name digite Listagem de Clientes. 5. No campo Location, vamos aceitar a pasta padro para gravao das definies de relatrios que, no nosso caso, em: F:\Documents and Settings\Administrador\Meus documentos\Visual Studio\Projects. Voc poderia escolher qualquer outra pasta a ser utilizada, inclusive poderia ser uma pasta compartilhada, em um servidor de arquivos da rede. 6. Clique em OK. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000869 7. Ser exibida a tela inicial do assistente. Esta tela apenas informativa. Clique em Next, para seguir para a prxima etapa do assistente. 8. Nesta etapa voc definir as informaes sobre a fonte de dados a ser utilizada. No campo Name, voc deve digitar um nome que ir identificar a fonte de dados. Digite: NortwindReport. Na lista Type, voc define qual o tipo da fonte de dados. Aparecem nesta lista os tipos para os quais o Reporting Services tem Data Processing Extensions instalados. No nosso exemplo, certifique-se de que a opo Microsoft SQL Server esteja selecionada. 9. O prximo passo seria digitar a string de conexo, no campo Connection String. Porm, como no estamos habituados a digitar, manualmente, os dados para a string de conexo, no conhecemos a sintaxe para uma string de conexo. Felizmente o assistente tambm pode nos ajudar nesta etapa. D um clique no boto Edit. Ser aberta a janela Propriedades de vinculao de dados, indicada na Figura 14.12: Figura 14.12 A janela Propriedades de vinculao de dados. 10. Clique no boto Change. Ser aberta a janela Change Data Source. Clique na opo OLE DB para marc-la e clique em OK. 11. Voc estar de volta jenela Connection Properties. Na lista OLE DB Provider selecione a opo Microsoft OLE DB Provider for SQL Server. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8700000Curso Completo N O T A Figura 14.13 A janela para selecionar o servidor SQL Server a ser utilizado. 13. Abra a lista Select or enter a server name e selecione o nome do SERVIDOR\INSTNCIA, onde est o banco de dados a ser utilizado para criao do relatrio. No nosso exemplo, selecionarei a instncia SERVIDOR2\JBCURSOS. Selecione a instncia que voc est utilizando para criar este relatrio. 14. Depois voc deve informar o tipo de autenticao que voc est utilizando. Para o nosso exemplo, marque a opo Use Windows NT Integraded security. 15. Abra a lista Select the database on the server e clique na opo NorthwindReport. Sua janela deve estar com as configuraes indicadas na Figura 14.14. Voc pode testar se est tudo OK com as configuraes da fonte de dados. Para isso clique no boto Test Connection. Ser exibida uma mensagem informando que est tudo OK com a conexo. Clique em OK para fechar esta mensagem. 16. Voc estar de volta janela Propriedades de vinculao de dados. Clique em OK para fech-la. Voc estar de volta janela Connection Properties. Clique em OK para fech-la. Voc estar de volta ao assistente de criao do relatrio e a string de conexo ter sido definida. No nosso exemplo, a string de conexo ficou assim: Provider=SQLOLEDB.1;Data Source=SERVIDOR2\JBCURSOS;Initial Catalog=NortwindReport 12. Clique no boto Data Links. Ser aberta a janela Data Link Properties, indicada na Figura 14.13: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000871 Figura 14.14 Definindo o banco de dados a ser utilizado. Voc pode marcar a opo Make this a shared data source, para que esta fonte de dados esteja disponvel para outros relatrios que venham a ser criados. Marque esta opo. Sua janela deve estar conforme indicado na Figura 14.15: Figura 14.15 A fonte de dados j est definida. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8720000Curso Completo 17. Clique em Next, para seguir para a prxima etapa do assistente. 18. Nesta etapa voc poder digitar diretamente o comando T-SQL da consulta ou usar o Construtor de consultas (Query Builder). O construtor de consultas muito semelhante grade de criao de consultas do Microsoft Access. D um clique no boto Query Builder. Ser aberta a janela Query Builder. A janela aparece, por padro, sem todas as funcionalidades habilitadas. D um clique no primeiro boto (bem esquerda). o boto Generic Query Designer. Ao clicar neste boto, ser exibida a interface completa do Query Builder. 19. O primeiro passo adicionar as tabelas nas quais ser baseada a consulta. Para adicionar uma ou mais tabelas, clique no boto Add table (ltimo boto, bem direita, com um sinal de + amarelo). Ser aberta a janela Add tables, com a lista de tabelas do banco de dados NorthwindReport. Voc pode selecionar mais de uma tabela, pressionando e mantendo pressionada a tecla Ctrl. Mantendo Ctrl pressionada, v clicando nas tabelas a serem adicionadas consulta. Neste nosso primeiro exemplo, vamos utilizar uma nica tabela: A tabela Clientes. Marque a tabela: Clientes. Clique no boto Add, para adicionar a tabela selecionada. Clique em Close. Sua janela deve estar semelhante indicada na Figura 14.16: Figura 14.16 A janela Query Builder. 20. Muito bem, o nosso prximo passo marcar quais campos faro parte do relatrio. Para isso, basta marcar a caixa de seleo, ao lado do nome do campo. 21. Marque os seguintes campos: NomeDaEmpresa Endereo proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000873 Cidade Regio Pas Telefone Sua janela deve estar conforme indicado na Figura 14.17: Figura 14.17 Selecionando os campos que faro parte do relatrio. Observe que, medida que voc vai selecionando os campos que faro parte do relatrio, o comando T-SQL vai sendo atualizado, na parte de baixo da janela. Esta tela praticamente igual tela para a criao de consultas utilizada no Access. Voc pode ver uma prvia dos registros que sero retornados, clicando no boto Executar (boto com um ponto de exclamao vermelho). Ao clicar neste boto, aps alguns instantes, exibida a listagem de registros, na parte de baixo da tela, conforme indicado na Figura 14.18. 22. Vamos ordenar o relatrio pelo campo NomeDaEmpresa. Na linha NomeDaEmpresa, na coluna Sort Type, selecione a opo Ascending, para fazer ordenar os resultados em ordem alfabtica do campo NomeDaEmpresa. Voc pode fazer a ordenao por mais de um campo. Ao fazer a ordenao por mais de um campo, voc pode usar a coluna Sort Order, para definir qual o primeiro campo a ser considerado na ordenao, qual o segundo e assim por diante. Por exemplo, se voc quisesse classificar primeiro pelo Pas e dentro do Pas pelo Nome da empresa, voc selecionaria Sort Order = 1 para o campo Pas e Sort Order = 2 para o campo NomeDaEmpresa. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8740000Curso Completo N O T A Figura 14.18 Uma prvia dos resultados. 23. Muito bem, para o primeiro exemplo, so basicamente estas as definies para os dados que faro parte do relatrio. D um clique em OK para fechar a janela do Query Builder e voltar ao assistente de criao do relatrio. 24. Voc estar de volta ao assistente, com o comando T-SQL j definido. Para o nosso exemplo, o Query Builder nos ajudou a criar o seguinte comando: SELECT NomeDaEmpresa, Endereo, Cidade, Regio, Pas, Telefone FROM Clientes ORDER BY NomeDaEmpresa Se voc se sente vontade com os comandos T-SQL, pode digitar o comando diretamente, sem ter que utilizar o Query Builder. 25. Clique em Next, para seguir para a prxima etapa do assistente. 26. Nesta etapa voc define se ir criar um relatrio do tipo Tabular, que so as tradicionais listagens, ou um relatrio do tipo Matrix, que so conhecidas no Access como Consultas de Tabela de Referncia Cruzada. No prximo exemplo faremos um exemplo de relatrio do tipo Matrix, passo a passo. Para este nosso primeiro exemplo, selecione a opo Tabular. 27. Clique em Next, para seguir para a prxima etapa do assistente. 28. Nesta etapa voc deve definir se sero feitos agrupamentos no relatrio. Neste nosso primeiro exemplo no iremos trabalhar com agrupamentos. Em um dos prximos exemplos eu explicarei o que o agrupamento e como utiliz-lo. Clique em Next, para seguir para a prxima etapa do assistente. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000875 Figura 14.19 Selecionando um layout predefinido. 30. Clique em Next, para seguir para a prxima etapa do assistente. 31. Nesta etapa voc deve informar o servidor Web onde o relatrio ser publicado. Voc deve informar o endereo para o servidor onde o Reporting Services est instalado. No nosso exemplo vamos usar o servidor local. Informe o seguinte endereo http://localhost/ReportServer$JBCURSOS ( o padro de nome ReportServer, o sinal de $ mais o nome da instncia). Voc tambm pode informar o nome de uma pasta. Esta pasta ser criada, configurada como um diretrio virtual e o relatrio ser gravado nesta pasta. Para o nome da pasta digite Exemplos. 32. Clique em Next, para seguir para a prxima etapa do assistente. 33. Ser exibida a tela final do assistente, com um resumo das opes que foram selecionadas nas etapas anteriores. Nesta etapa voc tambm pode definir um nome para o relatrio. No campo Report name, digite: Listagem de Clientes. Marque a opo Preview report para que seja exibida uma prvia do que ser a verso final do relatrio. Voc pode utilizar o boto Back, para voltar a qualquer uma das etapas e fazer as alteraes necessrias. Clique em Finish para encerrar o assistente e criar o relatrio. 34. O relatrio ser criado e uma prvia ser exibida no SQL Server Business Intelligence Develop- ment Studio, conforme indicado na Figura 14.20: 35. Mantenha o relatrio aberto no SQL Server Business Intelligence Development Studio, pois vamos continuar a trabalhar com ele, nos prximos tpicos. 29. Nesta etapa voc pode escolher um, dentre diversos layouts sugeridos. Selecione a opo Bold, conforme indicado na Figura 14.19: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8760000Curso Completo N O T A Figura 14.20 Visualizao do relatrio. SALVANDO O RELATRIO EM DIFERENTES FORMATOS Muito bem, criamos o relatrio. Mas o principal objetivo em criar um relatrio que ele possa ser utilizado pelos usurios que dele necessitarem. A entra em cena mais uma funcionalidade importante do Reporting Services. Permitir que um relatrio seja acessado em diferentes formatos e de diferentes maneiras. Por exemplo, voc pode exportar o relatrio para uma srie de formatos suportados pelo Reporting Services. Voc pode publicar o relatrio no servidor Web, para ser acessado via browser. Muito bem, vamos aprender a salvar o relatrio em diferentes formatos. Exemplo: Para salvar um relatrio em diferentes formatos, siga os passos indicados a seguir: 1. O relatrio j deve estar aberto dentro do SQL Server Business Intelligence Development Studio. Se o relatrio no estiver aberto, basta abrir o SQL Server Business Intelligence Development Studio e usar o comando File -> Open -> Project/Solution para abrir o projeto no qual est o relatrio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000877 2. Na rea onde o relatrio est sendo visualizado, clique com o boto direito do mouse, em qualquer parte do relatrio. Na lista de opes que exibida aponte para Export. Ser exibida a lista de formatos disponveis, conforme indicado na Figura 14.21: Figura 14.21 Formatos de exportao disponveis. 3. Clique no formato a ser utilizado. Para o nosso exemplo, clique na opo Acrobat (PDF) file. Ser aberta a janela Save as, para que voc selecione a pasta onde sero gravados o arquivo .PDF e o nome do arquivo. No nosso exemplo, selecionei a pasta Meus documentos e para o nome do arquivo mantive Listagem de Clientes.pdf, conforme indicado na Figura 14.22: Figura 14.22 Salvando o relatrio no formato .PDF. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8780000Curso Completo 4. Clique em Save. Pronto, ser gerado um arquivo .PDF, com o nome Listagem de Clientes, na pasta Meus documentos. Para abrir o relatrio no formato .PDF voc deve ter o Adobe Reader instalado no computador. V para a pasta Meus documentos e d um clique duplo no arquivo Listagem de Clientes.pdf. Pronto, o relatrio ser aberto, conforme indicado na Figura 14.23: Figura 14.23 Abrindo o relatrio no formato .PDF. 5. Feche o arquivo Listagem de Clientes.PDF. 6. A ttulo de teste, vamos salvar o relatrio para o formato de uma planilha do Excel, com o nome de Pedidos dos Clientes.xls, na pasta Meus documentos. 7. No SQL Server Business Intelligence Development Studio, clique com o boto direito do mouse em qualquer local do relatrio. No menu de opes que exibido clique em Export -> Excel. Ser aberta a janela Save as, para que voc selecione a pasta onde ser gravado o arquivo .XLS e o nome do arquivo. No nosso exemplo, selecionei a pasta Meus documentos e para o nome do arquivo mantive Listagem de Clientes.xls, conforme indicado na Figura 14.24. 8. Clique em Save. Pronto, ser gerado um arquivo .XLS, com o nome Listagem de Clientes.xls, na pasta Meus documentos. Para abrir o relatrio no formato .XLS voc deve ter o Microsoft Excel instalado no computador. V para a pasta Meus documentos e d um clique duplo no arquivo Listagem de Clientes.xls. Pronto, o relatrio ser aberto no Excel, conforme indicado na Figura 14.25. 9. Feche o Excel. Muto bem. Voc viu que para exportar um relatrio em um ou mais formatos bastante simples. Volto a salientar que uma das principais carectersticas do Reporting Services a sua capacidade de ter suas proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000879 funcionalidades extendidas. Os programadores podem criar extenses para o Reporting Services, para permitir que os relatrios sejam exportados para os mais variados formatos. Figura 14.24 Salvando o relatrio no formato .XLS. Figura 14.25 Abrindo o relatrio no formato .XLS. Agora vamos aprender a publicar o relatrio no IIS, de tal forma que ele possa ser acessado usando o navegador. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8800000Curso Completo N O T A N O T A PUBLICANDO O RELATRIO NO SERVIDOR WEB Voc pode, facilmente, publicar um relatrio no servidor Web, de tal forma que o relatrio possa ser acessado usando o navegador. A vantagem deste mtodo que, uma vez publicado no servidor Web, o relatrio poder ser acessado a partir de qualquer estao de trabalho da rede, por qualquer usurio (desde que o usurio tenha permisso de acesso ao relatrio), simplesmente usando um navegador. Muito bem, vamos aprender a publicar o relatrio no servidor Web e acess-lo, usando um navegador. Exemplo: Para publicar um relatrio no servidor Web e acess-lo usando um navegador, siga os passos indicados a seguir: 1. O relatrio j deve estar aberto dentro do SQL Server Business Intelligence Development Studio. Se o relatrio no estiver aberto, basta abrir o SQL Server Business Intelligence Development Studio e usar o comando File -> Open -> Project/Solution para abrir o projeto no qual est o relatrio. 2. Para publicar o relatrio no servidor Web, utilize o comando Build -> Deploy Listagem de Clientes e aguarde at que o SQL Server Business Intelligence Development Studio publique o relatrio no servidor Web. O relatrio ser publicado, com base nas informaes que voc forneceu em uma das ltimas etapas do assistente de criao do relatrio, onde voc informou o nome do servidor e o nome da pasta onde ser publicado o relatrio. No nosso exemplo utilizamos o servidor http://localhost/ReportServer$JBCURSOS, dentro do qual ser criada a pasta Exemplos. 3. Muito bem, o relatrio foi publicado no servidor Web. Vamos acess-lo, usando o Internet Explorer. 4. Abra o Internet Explorer e acesse o seguinte endereo: http://localhost/ReportServer$JBCURSOS Lembrando que Report Server o padro sugerido durante a instalao do SQL Server 2005. Depois deste padro vem um sinal de $ e depois o nome da instncia. Este padro pode ser modificado, durante a instalao do SQL Server 2005. 5. Ser exibida a listagem de pastas disponveis no servidor de relatrios, conforme indicado na Figura 14.26. 6. D um clique em Exemplos. Ser exibida a lista de relatrios disponveis. 7. D um clique em Listagem de Clientes. 8. O relatrio ser carregado e exibido no Internet Explorer, conforme indicado na Figura 14.27: Muito bem, com esse exemplo foi possvel mostrar ao amigo leitor o quo fcil criar um relatrio, public-lo no servidor Web e acess-lo usando o navegador. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000881 N O T A Figura 14.26 A pasta Exemplos j criada no servidor Web. Figura 14.27 Acessando o relatrio Listagem de Clientes, usando o Internet Explorer. Importante: O relatrio no uma pgina HTML esttica, gerada no momento da criao do relatrio. No mesmo. O relatrio uma pgina dinmica. Sempre que o relatrio solicitado, feita uma conexo com o banco de dados e so retornados os dados atualizados, a partir do SQL Server. Ou seja, no relatrio no so gravados os dados obtidos no momento da criao do relatrio. Ao invs disso, so gravados os comandos para acessar os dados a partir do SQL Server. Quando o relatrio solicitado, estes comandos so executados e os dados atualizados so retornados a partir do SQL Server. Definitivamente, nunca foi to fcil e produtivo criar relatrios dinmicos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8820000Curso Completo A seguir vamos a mais dois exemplos prticos de relatrios, onde criaremos relatrios do tipo Matrix e usando Grupos. Porm, antes, um pouco de teoria sobre relatrios do tipo Matrix, os quais so conhecidos no Access como Consulta de Tabela de Referncia Cruzada. No item a seguir vamos entender o que este tal de Matrix (que no tem nada a ver com a trilogia de filmes) ou Referncia Cruzada. DESENVOLVIMENTO EM: CRIANDO RELATRIOS DO TIPO MATRIX PR-REQUISITOS Conhecimento sobre a criao bsica de relatrios com o Reporting Services. METODOLOGIA Apresentao dos conceitos sobre relatrios do tipo Matrix e criao de um exemplo prtico, passo a passo. O que chamado de relatrio do tipo Matrix no Reporting Services muito semelhante s to famosas Consultas de Referncias Cruzadas no Access. Um dos tpicos que mais aparece em fruns de discusso do SQL Server justamente sobre o uso da clusula TRANSFORM do Access, no SQL Server. A resposta que a clusula TRANSFORM uma inveno do Access. No um padro que existe no T-SQL e, portanto, no est disponvel no SQL Server. Por isso que sempre foi muito mais difcil criar uma referncia cruzada no SQL Server do que no Access. Mas com o Reporting Sevices do SQL Server 2005 (conforme voc poder constatar na prtica), as coisas ficaram bem mais fceis. Ficou muito fcil criar um relatrio do tipo Referncia Cruzada. Porm antes de partirmos para a prtica fundamental que voc entenda o que so, como funcionam e quais os elementos que compem uma referncia cruzada ou, melhor, usando a terminologia do Reporting Services, um relatrio do tipo matrix. ENTENDENDO AS REFERNCIAS CRUZADAS MATRIX Inicialmente vamos entender como funcionam as referncias cruzadas no Access. Por analogia, ser fcil entender como elas funcionam no Reporting Services e tambm ser fcil cria-las, usando o SQL Server Business Intelligence Development Studio. Uma consulta do tipo Tabela de Referncia cruzada (ou um relatrio do tipo Matrix), conforme o prprio nome sugere, utilizada para cruzar valores de duas grandezas. Por exemplo, posso criar uma consulta do tipo Tabela de Referncia cruzada para exibir o nmero de pedidos (quantitativo de pedidos) por Pas De Destino e por ano do campo DataDoPedido, conforme indicado na Figura 14.27. Podemos observar que as informaes retornadas por uma consulta deste tipo so informaes consolidadas, onde estamos cruzando informaes do PasDeDestino, com o Ano da DataDoPedido. A informao que estamos obtendo o Quantitativo de Pedidos por Ano e PasDeDestino. Numa consulta do tipo Tabela de referncia cruzada, temos trs elementos bsicos: Linha Coluna Valor proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000883 Figura 14.28 Informaes do quantitativo de Pedidos por PasDeDestino e ano da DataDoPedido. Linha: No exemplo da Figura 14.28, o campo que forma as linhas o campo PasDeDestino, o que significa que, para cada pas de destino diferente, ser retornada uma linha diferente. Coluna: No exemplo da Figura 14.28, o campo que forma as colunas o Ano da DataDoPedido, o que significa que para cada Ano diferente ser retornada uma nova coluna. Valor: No exemplo da figura anterior, os valores que preenchem o restante da consulta so obtidos a partir da contagem do nmero de pedidos. Na Figura 14.29 temos um outro exemplo de referncia cruzada: Figura 14.29 Total anual de vendas por pas de destino. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8840000Curso Completo Quais as grandezas que esto sendo cruzadas neste relatrio? Quais os elementos Ceste relatrio do tipo Matrix? Respondendo a primeira pergunta: Neste exemplo estamos cruzando valores do campo PasDeDestino com o Ano do campo DataDoPedido. No cruzamento, calculamos o total de venda. Ou seja, um relatrio que nos d o total anual de vendas por pas de destino. Respondendo a segunda pergunta: O pas de destino o campo linha, ou seja, para cada pas diferente, temos uma linha diferente no resultado do relatrio. O Ano da Data do Pedido o campo coluna, ou seja, para cada ano diferente, temos uma coluna diferente no resultado do relatrio. E por fim a soma das vendas, por pas e por ano, o campo Valor. Acredito que com estes dois exemplos tericos foi possvel ter uma boa noo dos elementos que compem uma referncia cruzada, ou melhor, um relatrio do tipo Matrix. Agora vamos fazer um exemplo prtico. Vamos usar o SQL Server Business Intelligence Development Studio para criar o exemplo da Figura 14.28. Exemplo prtico 01: Criar um relatrio do tipo Matrix, o qual exibe o total anual de vendas, por pas de destino. Este relatrio ser baseado nas tabelas Pedidos e Detalhes do pedido, do banco de dados NorthwindReport. Para criar o relatrio do tipo Matrix, siga os passos indicados a seguir: 1. Abra o Business Intelligence Development Studio: Iniciar -> Programas -> Microsoft SQL Server 2005 -> Business Intelligence Development Studio. 2. Ser aberto o Business Intelligence Development Studio, com uma tela em branco, sem nenhum projeto aberto. Para criar um novo relatrio, vamos criar um novo projeto. Selecione o comando File -> New -> Project. 3. Ser aberta a janela New Project. Na lista Project Types selecione a opo Business Intelligence Projects. Nas opes que so exibidas no painel da direita, marque a opo Report Project Wizard (j indicada anteriormente na Figura 14.11). 4. No campo Name digite Total de Vendas por Pas. 5. No campo Location, vamos aceitar a pasta padro para gravao das definies de relatrios que, no nosso caso, em: F:\Documents and Settings\Administrador\Meus documentos\Visual Studio\Projects. Voc poderia escolher qualquer outra pasta a ser utilizada, inclusive poderia ser uma pasta compartilhada, em um servidor de arquivos da rede. 6. Clique em OK. 7. Ser exibida a tela inicial do assistente. Esta tela apenas informativa. Clique em Next, para seguir para a prxima etapa do assistente. 8. Nesta etapa voc definir as informaes sobre a fonte de dados a ser utilizada. No campo Name, voc deve digitar um nome que ir identificar a fonte de dados. Digite: Northwind. Na lista Type, voc define qual o tipo da fonte de dados. Aparecem nesta lista os tipos para os quais o Reporting Services tem Data Processing Extensions instalados. No nosso exemplo, certifique-se de que a opo Microsoft SQL Server esteja selecionada. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000885 9. O prximo passo seria digitar a string de conexo, no campo Connection String. Porm, como no estamos habituados a digitar, manualmente, os dados para a string de conexo, no conhecemos a sintaxe para uma string de conexo. Felizmente o assistente tambm pode nos ajudar nesta etapa. D um clique no boto Edit. Ser aberta a janela Propriedades de vinculao de dados. 10. Clique no boto Change. Ser aberta a janela Change Data Source. Clique na opo OLE DB para marc-la e clique em OK. 11. Voc estar de volta janela Connection Properties. Na lista OLE DB Provider selecione a opo Microsoft OLE DB Provider for SQL Server. 12. Clique no boto Data Links. Ser aberta a janela Data Link Properties. 13. Abra a lista Select or enter a server name e selecione o nome do SERVIDOR\INSTNCIA, onde est o banco de dados a ser utilizado para criao do relatrio. No nosso exemplo, selecionarei a instncia SERVIDOR2\JBCURSOS. Selecione a instncia que voc est utilizando para criar este relatrio. 14. Depois voc deve informar o tipo de autenticao que est utilizando. Para o nosso exemplo, marque a opo Use Windows NT Integraded security. 15. Abra a lista Select the database on the server e clique na opo NorthwindReport. Sua janela deve estar com as configuraes indicadas na Figura 14.30: Figura 14.30 Definindo o banco de dados a ser utilizado. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8860000Curso Completo N O T A Voc pode testar se est tudo OK com as configuraes da fonte de dados. Para isso clique no boto Test Connection. Ser exibida uma mensagem informando que est tudo OK com a conexo. Clique em OK para fechar esta mensagem. 16. Voc estar de volta janela Propriedades de vinculao de dados. Clique em OK para fech-la. Voc estar de volta janela Connection Properties. Clique em OK para fech-la. Voc estar de volta ao assistente de criao do relatrio e a string de conexo ter sido definida. No nosso exemplo, a string de conexo ficou assim: Provider=SQLOLEDB.1;Data Source=SERVIDOR2\JBCURSOS;Initial Catalog=NortwindReport Voc pode marcar a opo Make this a shared data source, para que esta fonte de dados esteja disponvel para outros relatrios que venham a ser criados, dentro deste mesmo projeto. Em um nico projeto criado com o SQL Server Business Intelligence Development Studio, possvel criar vrios relatrios. 17. Clique em Next, para seguir para a prxima etapa do assistente. 18. Nesta etapa voc poder digitar diretamente o comando T-SQL da consulta ou usar o Construtor de consultas (Query Builder). O construtor de consultas muito semelhante grade de criao de consultas do Microsoft Access. D um clique no boto Query Builder. Ser aberta a janela Query Builder. A janela aparece, por padro, sem todas as funcionalidades habilitadas. D um clique no primeiro boto (bem esquerda). o boto Generic Query Designer. Ao clicar neste boto, ser exibida a interface completa do Query Builder (sinceramente eu no consegui entender o porqu de o padro no vir j com a interface completa). 19. O primeiro passo adicionar as tabelas nas quais ser baseado o relatrio. Para adicionar uma ou mais tabelas, clique no boto Add table (ltimo boto, bem direita, com um sinal de + amarelo). Ser aberta a janela Add tables, com a lista de tabelas do banco de dados NorthwindReport. Voc pode selecionar mais de uma tabela, pressionando e mantendo pressionada a tecla Ctrl. Mantendo Ctrl pressionada, v clicando nas tabelas a serem adicionadas consulta. Neste nosso primeiro exemplo, vamos utilizar as tabelas Pedidos e Detalhes do pedido. Marque as tabelas Pedidos e Detalhes do pedido. Clique no boto Add, para adicionar as tabelas selecionadas. 20. Muito bem, o nosso prximo passo marcar quais campos faro parte do relatrio. Para isso, basta marcar a caixa de seleo, ao lado do nome do campo. 21. Inicialmente marque o campo PasDeDestino da tabela Pedidos. Agora temos uma novidade, que a criao de campos calculados. Ou seja, vamos criar campos que no existem diretamente em nenhuma das tabelas. Estes campos sero calculados, quando da execuo do relatrio e sero exibidos no relatrio. Vamos criar um campo para exibir somente o ano do campo DataDoPedido e um outro campo que calcula o valor do item de cada pedido. A criao de campos calculados bastante simples, conforme mostrarei logo a seguir. 22. Para criar um campo calculado, voc coloca a frmula de clculo na coluna Column e o nome do campo vai na coluna Alias. No nosso exemplo, na primeira linha j temos o campo PasDeDestino. Na segunda linha, logo abaixo de PasDeDestino, vamos criar o campo para extrair somente o ano da DataDoPedido. Vamos iniciar digitando a frmula de clculo. Para isso, utilizaremos a funo Year. Na coluna Column, da segunda linha, digite a seguinte frmula: Year([DataDoPedido]) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000887 Esta frmula ir extrair somente o ano do campo DataDoPedido. Na coluna Alias, da segunda linha, digite AnoRef. Este nome voc que escolhe, ou seja, voc define o nome da coluna calculada. Agora vamos criar a outra coluna calculada. 23. Na terceira linha, logo abaixo da linha que extrai o ano, vamos criar o campo para calcular o total por item de cada pedido. Vamos iniciar digitando a frmula de clculo. Na coluna Col- umn, da terceira linha, digite a seguinte frmula: ([Quantidade]*[PreoUnitrio])*(1-[Desconto]) Esta frmula ir calcular o valor de cada item de cada pedido. Depois, ao ser executado o relatrio, ser feito o cruzamento entre Pas e Ano e, no cruzamento destas informaes, ser feita a soma de todos os itens correspondentes. Ou seja, o resultado prtico que teremos a soma do total de vendas por ano, por pas de destino. Mas estas configuraes sero feitas em uma das prximas etapas do assistente. Na coluna Alias, da terceira linha, digite TotalDeVendas. Este nome voc que escolhe, ou seja, voc define o nome da coluna calculada. Agora vamos criar a outra coluna calculada. Sua janela deve estar semelhante indicada na Figura 14.31: Figura 14.31 Criando campos calculados. 24. Vamos ordenar o relatrio pelo campo PasDeDestino. Na linha PasDeDestino, na coluna Sort Type, selecione a opo Ascending, para fazer ordenar os resultados em ordem alfabtica do campo PasDeDestino. 25. D um clique em OK para fechar a janela do Query Builder e voltar ao assistente de criao do relatrio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8880000Curso Completo N O T A 26. Voc estar de volta ao assistente, com o comando T-SQL j definido. Para o nosso exemplo, o Query Builder nos ajudou a criar o seguinte comando: SELECT Pedidos.PasDeDestino, YEAR(Pedidos.DataDoPedido) AS AnoRef, ([Detalhes do Pedido].Quantidade * [Detalhes do Pedido].PreoUnitrio) * (1 - [Detalhes do Pedido].Desconto) AS TotalDeVendas FROM Pedidos INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do Pedido].NmeroDoPedido Se voc se sente vontade com os comandos T-SQL, pode digitar o comando diretamente, sem ter que utilizar o Query Builder. 27. Clique em Next, para seguir para a prxima etapa do assistente. 28. Nesta etapa voc define se ir criar um relatrio do tipo Tabular, que so as tradicionais listagens, ou um relatrio do tipo Matrix, que so conhecidas no Access como Consultas de Tabela de Referncia Cruzada. Opa, chegamos exatamente na etapa onde vamos definir que o nosso relatrio ser do tipo Matrix. Para o nosso exemplo, selecione a opo Matrix. 29. Clique em Next, para seguir para a prxima etapa do assistente. 30. Nesta etapa que voc ir definir qual campo ser o campo linha (Rows), qual campo ser o campo Coluna (Columns) e qual campo ser o campo Valor (Details). Temos tambm uma opo adicional que o campo Page, o qual ser utilizado no prximo exemplo prtico. No nosso exemplo, temos a seguinte configurao: PasDeDestino -> Rows AnoRef -> Columns TotalDeVendas -> Details 31. Clique no campo PasDeDestino para marc-lo em seguida; clique no boto Rows, para defini- lo como o campo Linha do Relatrio. 32. Clique no campo AnoRef para marc-lo, em seguida, clique no boto Columns, para defini-lo como o campo Coluna do Relatrio. 33. Clique no campo TotalDeVendas para marc-lo, em seguida, clique no boto Details, para defin- lo como o campo Valor do Relatrio. Sua janela deve estar conforme indicado na Figura 14.3. 34. Clique em Next, para seguir para a prxima etapa do assistente. 35. Nesta etapa voc pode escolher um, dentre diversos layouts sugeridos. Selecione a opo Bold. 36. Clique em Next, para seguir para a prxima etapa do assistente. 37. Nesta etapa voc deve informar o servidor Web onde o relatrio ser publicado. Voc deve informar o endereo para o servidor onde o Reporting Services est instalado. No nosso exemplo vamos proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000889 usar o servidor local. Informe o seguinte endereo http://localhost/ReportServer$JBCURSOS (o padro de nome ReportServer, o sinal de $ mais o nome da instncia). Voc tambm pode informar o nome de uma pasta. Esta pasta ser criada, configurada como um diretrio virtual, e o relatrio ser gravado nesta pasta. Para o nome da pasta digite VendasAnuais. Figura 14.32 Definindo os elementos linha, coluna e valor. 38. Clique em Next, para seguir para a prxima etapa do assistente. 39. Ser exibida a tela final do assistente, com um resumo das opes que foram selecionadas nas etapas anteriores. Nesta etapa voc tambm pode definir um nome para o relatrio. No campo Report name, digite: Vendas Anuais por Pas. Marque a opo Preview report para que seja exibida uma prvia do que ser a verso final do relatrio. Voc pode utilizar o boto Back, para voltar a qualquer uma das etapas e fazer as alteraes necessrias. Clique em Finish para encerrar o assistente e criar o relatrio. 40. O relatrio ser criado e uma prvia ser exibida no SQL Server Business Intelligence Develop- ment Studio, conforme indicado na Figura 14.33. 41. Agora vamos publicar o relatrio no servidor Web e acess-lo usando o browser. 42. Para publicar o relatrio no servidor Web, utilize o comando Build -> Deploy Total de Vendas por Pas e aguarde at que o SQL Server Business Intelligence Development Studio publique o relatrio no servidor Web. O relatrio ser publicado, com base nas informaes que voc forneceu em uma das ltimas etapas do assistente de criao do relatrio, onde voc informou o nome do servidor e o nome da pasta onde ser publicado o relatrio. No nosso exemplo utilizamos o servidor http://localhost/ReportServer$JBCURSOS, dentro do qual ser criada a pasta VendasAnuais. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8900000Curso Completo N O T A Figura 14.33 Visualizao do relatrio. 43. Muito bem, o relatrio foi publicado no servidor Web. Vamos acess-lo, usando o Internet Explorer. 44. Abra o Internet Explorer e acesse o seguinte endereo: http://localhost/ReportServer$JBCURSOS Lembrando que ReportServer o padro sugerido durante a instalao do SQL Server 2005. Depois deste padro vem um sinal de $ e depois o nome da instncia. Este padro pode ser modificado, durante a instalao do SQL Server 2005. 45. Ser exibida a listagem de pastas disponveis no servidor de relatrios, conforme indicado na Figura 14.33, onde podemos observar que j est disponvel a pasta VendasAnuais. 46. D um clique em VendasAnuais. Ser exibida a lista de relatrios disponveis. 47. D um clique em Vendas Anuais por Pas. 48. O relatrio ser carregado e exibido no Internet Explorer, conforme indicado na Figura 14.34. Ao criar o relatrio, o SQL Server Business Intelligence Development Studio cria tambm uma barra de ferramentas. A barra de ferramentas exibida abaixo da barra de endereos do navegador. Nesta barra voc tem botes para se deslocar entre as pginas do relatrio (para listagens grandes, que so divididas em mais de uma pgina), voc tambm tem um campo para pesquisa dentro do relatrio e tem uma lista para selecionar um formato (lista Select a format). Voc pode selecionar um dos formatos disponveis e depois clicar no boto Export, para salvar uma cpia do relatrio, no formato selecionado. O link proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000891 Export s ser habilitado depois que for selecionado um formato na lista Select a format. Na barra de ferramentas voc tambm tem um boto para atualizar o relatrio (penltimo boto) e um boto para imprimir o relatrio (ltimo boto da barra de ferramentas). Figura 14.34 A pasta VendasAnuais j criada no servidor Web. Figura 14.35 Acessando o relatrio do tipo Matrix, usando o Internet Explorer. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8920000Curso Completo Eu no me canso de elogiar o Reporting Services e as ferramentas relacionadas. Esta, sem dvida, foi uma das reas onde o SQL Server 2005 mais evoluiu, em relao s verses anteriores. Agora vamos a mais um exemplo prtico de criao de relatrio do tipo Matrix, onde utilizaremos tambm o campo Page. Voc ver que a utilizao deste campo capaz de fazer pequenas maravilhas. Exemplo prtico 02: Criar um relatrio do tipo Matrix, o qual exibe o total anual de vendas, por produto. Este relatrio ter como campo Page o nome do funcionrio, para que seja possvel filtrar o relatrio para exibir somente as vendas para um determinado funcionrio. Este relatrio ser baseado nas tabelas Pedidos, Detalhes do pedido, Produtos e Funcionrios, do banco de dados NorthwindReport. Para criar o relatrio solicitado, siga os passos indicados a seguir: 1. Abra o Business Intelligence Development Studio: Iniciar -> Programas -> Microsoft SQL Server 2005 -> Business Intelligence Development Studio. 2. Ser aberto o Business Intelligence Development Studio, com uma tela em branco, sem nenhum projeto aberto. Para criar um novo relatrio, vamos criar um novo projeto. Selecione o comando File -> New -> Project. 3. Ser aberta a janela New Project. Na lista Project Types selecione a opo Business Intelligence Projects. Nas opes que so exibidas no painel da direita, marque a opo Report Project Wizard (j indicada anteriormente na Figura 14.11). 4. No campo Name digite Total de Vendas por Produto. 5. No campo Location, vamos aceitar a pasta padro para gravao das definies de relatrios que, no nosso caso, em: F:\Documents and Settings\Administrador\Meus documentos\Visual Studio\Projects. Voc poderia escolher qualquer outra pasta a ser utilizada, inclusive poderia ser uma pasta compartilhada, em um servidor de arquivos da rede. 6. Clique em OK. 7. Ser exibida a tela inicial do assistente. Esta tela apenas informativa. Clique em Next, para seguir para a prxima etapa do assistente. 8. Nesta etapa voc definir as informaes sobre a fonte de dados a ser utilizada. No campo Name, voc deve digitar um nome que ir identificar a fonte de dados. Digite: VendasProduto. Na lista Type, voc define qual o tipo da fonte de dados. Aparecem nesta lista os tipos para os quais o Reporting Services tem Data Processing Extensions instalados. No nosso exemplo, certifique-se de que a opo Microsoft SQL Server esteja selecionada. 9. O prximo passo seria digitar a string de conexo, no campo Connection String. Porm, como no estamos habituados a digitar, manualmente, os dados para a string de conexo, no conhecemos a sintaxe para uma string de conexo. Felizmente o assistente tambm pode nos ajudar nesta etapa. D um clique no boto Edit. Ser aberta a janela Propriedades de vinculao de dados. 10. Clique no boto Change. Ser aberta a janela Change Data Source. Clique na opo OLE DB para marc-la e clique em OK. 11. Voc estar de volta janela Connection Properties. Na lista OLE DB Provider selecione a opo Microsoft OLE DB Provider for SQL Server. 12. Clique no boto Data Links. Ser aberta a janela Data Link Properties. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000893 D I C A 13. Abra a lista Select or enter a server name e selecione o nome do SERVIDOR\INSTNCIA, onde est o banco de dados a ser utilizado para criao do relatrio. No nosso exemplo, selecionarei a instncia SERVIDOR2\JBCURSOS. Selecione a instncia que voc est utilizando para criar este relatrio. 14. Depois voc deve informar o tipo de autenticao que voc est utilizando. Para o nosso exemplo, marque a opo Use Windows NT Integraded security. 15. Abra a lista Select the database on the server e clique na opo NorthwindReport. 16. Voc estar de volta janela Propriedades de vinculao de dados. Clique em OK para fech-la. Voc estar de volta janela Connection Properties. Clique em OK para fech-la. Voc estar de volta ao assistente de criao do relatrio e a string de conexo ter sido definida. No nosso exemplo, a string de conexo ficou assim: Provider=SQLOLEDB.1;Data Source=SERVIDOR2\JBCURSOS;Initial Catalog=NortwindReport Voc pode marcar a opo Make this a shared data source, para que esta fonte de dados esteja disponvel para outros relatrios que venham a ser criados, dentro deste mesmo projeto. Em um nico projeto criado com o SQL Server Business Intelligence Development Studio, possvel criar vrios relatrios. 17. Clique em Next, para seguir para a prxima etapa do assistente. 18. Nesta etapa voc poder digitar diretamente o comando T-SQL da consulta ou usar o construtor de consultas (Query Builder). D um clique no boto Query Builder. Ser aberta a janela Query Builder. A janela aparece, por padro, sem todas as funcionalidades habilitadas. D um clique no primeiro boto (bem esquerda). o boto Generic Query Designer. Ao clicar neste boto, ser exibida a interface completa do Query Builder. 19. O primeiro passo adicionar as tabelas nas quais ser baseado o relatrio. Para adicionar uma ou mais tabelas, clique no boto Add table (ltimo boto, bem direita, com um sinal de + amarelo). Ser aberta a janela Add tables, com a lista de tabelas do banco de dados NorthwindReport. Voc pode selecionar mais de uma tabela, pressionando e mantendo pressionada a tecla Ctrl. Mantendo Ctrl pressionada, v clicando nas tabelas a serem adicionadas consulta. Neste nosso exemplo, vamos utilizar as tabelas Pedidos, Detalhes do pedido, Produtos e Funcionrios. Marque as tabelas: Pedidos, Detalhes do pedido, Produtos e Funcionrios. Clique no boto Add, para adicionar as tabelas selecionadas. 20. Muito bem, o nosso prximo passo marcar quais campos faro parte do relatrio. Para isso, basta marcar a caixa de seleo, ao lado do nome do campo. 21. Inicialmente marque o campo NomeDoProduto da tabela Produtos. Vamos criar um campo para exibir somente o ano do campo DataDoPedido e um outro campo que calcula o valor do item de cada pedido. A criao de campos calculados bastante simples, conforme mostrarei logo a seguir. 22. Para criar um campo calculado, voc coloca a frmula de clculo na coluna Column e o nome do campo vai na coluna Alias. No nosso exemplo, na primeira linha j temos o campo proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8940000Curso Completo N O T A NomeDoProduto. Na segunda linha, logo abaixo de NomeDoProduto, vamos criar o campo para extrair somente o ano da DataDoPedido. Vamos iniciar digitando a frmula de clculo. Para isso, utilizaremos a funo Year. Na coluna Column, da segunda linha, digite a seguinte frmula: Year([DataDoPedido]) Esta frmula ir extrair somente o ano do campo DataDoPedido. Na coluna Alias, da segunda linha, digite AnoRef. Este nome voc que escolhe, ou seja, voc define o nome da coluna calculada. Agora vamos criar a outra coluna calculada. 23. Na terceira linha, logo abaixo da linha que extrai o ano, vamos criar o campo para calcular o total por item de cada pedido. Vamos iniciar digitando a frmula de clculo. Na coluna Col- umn, da terceira linha, digite a seguinte frmula: ([Detalhes do Pedido].Quantidade * [Detalhes do Pedido].PreoUnitrio) * (1 - [Detalhes do Pedido].Desconto) Observe que aqui usei a nomenclatura complet: [NomeDaTabela].[NomeDoCampo]. Esta nomenclatura necessria porque o campo PreoUnitrio est presente tanto na tabela Produtos quanto na tabela Detalhes do Pedido. Por isso, na frmula de clculo, temos que utilizar a nomenclatura completa, para indicar de qual das tabelas deve ser pego o campo PreoUnitrio. Esta frmula ir calcular o valor de cada item de cada pedido. Depois, ao ser executado o relatrio, ser feito o cruzamento entre Produto e Ano e, no cruzamento destas informaes, ser feita a soma de todos os itens correspondentes. Ou seja, o resultado prtico que teremos a soma do total de vendas por ano, por Produto. Mas estas configuraes sero feitas em uma das prximas etapas do assistente. Na coluna Alias, da terceira linha, digite TotalDeVendas. Este nome voc que escolhe, ou seja, voc define o nome da coluna calculada. Agora vamos criar a outra coluna calculada. 24. Vamos criar mais um campo calculado. Na verdade no um campo que far clculos, mas que to-somente ir juntar os campos Nome e Sobrenome, da tabela Funcionrios, para exibir o nome completo do funcionrio. Na quarta linha, logo abaixo da linha que calcula o total por item do pedido, vamos criar o campo para exibir o nome completo do funcionrio. Vamos iniciar digitando a frmula de clculo. Na coluna Column, da quarta linha, digite a seguinte frmula: Funcionrios.Nome + N + Funcionrios.Sobrenome Na coluna Alias, da quarta linha, digite Funcionrio. Este nome voc que escolhe, ou seja, voc define o nome da coluna calculada. Sua janela deve estar semelhante a indicada na Figura 14.36. 25. Vamos ordenar o relatrio pelo campo NomeDoProduto. Na linha NomeDoProduto, na coluna Sort Type, selecione a opo Ascending, para fazer ordenar os resultados em ordem alfabtica do campo NomeDoProduto. 26. D um clique em OK para fechar a janela do Query Builder e voltar ao assistente de criao do relatrio. 27. Voc estar de volta ao assistente, com o comando T-SQL j definido. Para o nosso exemplo, o Query Builder nos ajudou a criar o seguinte comando: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000895 N O T A SELECT Produtos.NomeDoProduto, YEAR(Pedidos.DataDoPedido) AS AnoRef, ([Detalhes do Pedido].Quantidade * [Detalhes do Pedido].PreoUnitrio) * (1 - [Detalhes do Pedido].Desconto) AS TotalDeVendas, Funcionrios.Nome + N + Funcionrios.Sobrenome AS Funcionrio FROM Pedidos INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do Pedido].NmeroDoPedido INNER JOIN Funcionrios ON Pedidos.CdigoDoFuncionrio = Funcionrios.CdigoDoFuncionrio INNER JOIN Produtos ON [Detalhes do Pedido].CdigoDoProduto = Produtos.CdigoDoProduto ORDER BY Produtos.NomeDoProduto Figura 14.36 Criando campos calculados. Se voc se sente vontade com os comandos T-SQL, pode digitar o comando diretamente, sem ter que utilizar o Query Builder. Porm observe que medida que as consultas se tornam mais complexas fica bastante difcil a criao dos comandos, manualmente, sem a ajuda do Query Builder. 28. Clique em Next, para seguir para a prxima etapa do assistente. 29. Nesta etapa voc define se ir criar um relatrio do tipo Tabular, que so as tradicionais listagens, ou um relatrio do tipo Matrix, que so conhecidas no Access como Consultas de Tabela de Referncia Cruzada. Opa, chegamos exatamente na etapa onde vamos definir que o nosso relatrio ser do tipo Matrix. Para o nosso exemplo, selecione a opo Matrix. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8960000Curso Completo 30. Clique em Next, para seguir para a prxima etapa do assistente. 31. Nesta etapa que voc ir definir qual campo ser Page, qual campo ser o campo linha (Rows), qual campo ser o campo Coluna (Columns) e qual campo ser o campo Valor (Details). No nosso exemplo, temos a seguinte configurao: Funcionrio -> Page PasDeDestino -> Rows AnoRef -> Columns TotalDeVendas -> Details 32. Clique no campo NomeDoProduto para marc-lo; em seguida, clique no boto Rows, para defini-lo como o campo Linha do Relatrio. 33. Clique no campo AnoRef para marc-lo; em seguida, clique no boto Columns, para defini-lo como o campo Coluna do Relatrio. 34. Clique no campo TotalDeVendas para marc-lo; em seguida, clique no boto Details, para defini-lo como o campo Valor do Relatrio. 35. Clique no campo Funcionrio para marc-lo; em seguida, clique no boto Page, para defini-lo como o campo Page do Relatrio. Sua janela deve estar conforme indicado na Figura 14.37: Figura 14.37 Definindo os elementos linha, coluna, valor e page. 36. Clique em Next, para seguir para a prxima etapa do assistente. 37. Nesta etapa voc pode escolher um, dentre diversos layouts sugeridos. Selecione a opo Bold. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000897 38. Clique em Next, para seguir para a prxima etapa do assistente. 39. Nesta etapa voc deve informar o servidor Web onde o relatrio ser publicado. Voc deve informar o endereo para o servidor onde o Reporting Services est instalado. No nosso exemplo vamos usar o servidor local. Informe o seguinte endereo http://localhost/ ReportServer$JBCURSOS (o padro de nome ReportServer, o sinal de $ mais o nome da instncia). Voc tambm pode informar o nome de uma pasta. Esta pasta ser criada, configurada como um diretrio virtual e o relatrio ser gravado nesta pasta. Para o nome da pasta digite VendasPorProduto. 40. Clique em Next, para seguir para a prxima etapa do assistente. 41. Ser exibida a tela final do assistente, com um resumo das opes que foram selecionadas nas etapas anteriores. Nesta etapa voc tambm pode definir um nome para o relatrio. No campo Report name, digite: Vendas Anuais por Produto. Marque a opo Preview report para que seja exibida uma prvia do que ser a verso final do relatrio. Voc pode utilizar o boto Back, para voltar a qualquer uma das etapas e fazer as alteraes necessrias. Clique em Finish para encerrar o assistente e criar o relatrio. 42. O relatrio ser criado e uma prvia ser exibida no SQL Server Business Intelligence Develop- ment Studio, conforme indicado na Figura 14.38: Figura 14.38 Visualizao do relatrio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 8980000Curso Completo N O T A 43. Agora vamos publicar o relatrio no servidor Web e acess-lo usando o browser. 44. Para publicar o relatrio no servidor Web, utilize o comando Build -> Deploy Total de Vendas por Produto e aguarde at que o SQL Server Business Intelligence Development Studio publique o relatrio no servidor Web. O relatrio ser publicado, com base nas informaes que voc forneceu em uma das ltimas etapas do assistente de criao do relatrio, onde voc informou o nome do servidor e o nome da pasta onde ser publicado o relatrio. No nosso exemplo utilizamos o servidor http://localhost/ReportServer$JBCURSOS, dentro do qual ser criada a pasta VendasPorProduto. 45. Muito bem, o relatrio foi publicado no servidor Web. Vamos acess-lo, usando o Internet Explorer. 46. Abra o Internet Explorer e acesse o seguinte endereo: http://localhost/ReportServer$JBCURSOS Lembrando que ReportServer o padro sugerido durante a instalao do SQL Server 2005. Depois deste padro vem um sinal de $ e depois o nome da instncia. Este padro pode ser modificado, durante a instalao do SQL Server 2005. 47. Ser exibida a listagem de pastas disponveis no servidor de relatrios, onde podemos observar que j est disponvel a pasta VendasPorProduto. 48. D um clique em VendasPorProduto. Ser exibida a lista de relatrios disponveis. 49. D um clique em Vendas Anuais por Produto. 50. O relatrio ser carregado e exibido no Internet Explorer, conforme indicado na Figura 14.39: Figura 14.39 Acessando o relatrio do tipo Matrix, usando o Internet Explorer. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000899 Observe que o relatrio foi separado por funcionrio. Ou seja, na primeira pgina so exibidos os dados apenas para o funcionrio Andrew Fuller. Se voc clicar no boto >, para ir para a prxima pgina, continuam sendo exibidos dados para o funcioniro Andrew Fuller. Clique em > para ir para a pgina 3. Observe que comearam a ser exibidos dados para o funcionrio Anne Dodsworth e assim por diante. Esta separao resultado do uso de um campo justamente o campo Funcionrio, como um elemento Page, do relatrio do tipo Matrix. Muito bem, no prximo item vamos aprender a criar um relatrio que usa a opo de Grupos. Depois, para finalizar o captulo, vamos aprender a utilizar as funes bsicas do console de gerenciamento do Reporting Services. Mais uma vez, vamos aprender, novamente, atravs de exemplos prticos. CRIANDO RELATRIOS USANDO A OPO GRUPOS Nosso ltimo exemplo de criao de relatrios utilizar a opo Grupos. Com esta opo, podemos dividir um relatrio em um ou mais grupos. J me explico melhor. Por exemplo, vamos imaginar uma listagem de pedidos. Esta listagem pode ser dividida em grupos. Por exemplo, vamos definir o campo PasDeDestino como sendo um grupo. Com isso, seriam listados todos os pedidos de um pas, depois todos os pedidos do prximo pas e assim por diante. O nome do pas s seria exibido uma vez, no incio da listagem de pedidos do respectivo pas. Agora vamos acrescentar mais um nvel de grupo, o campo CidadeDeDestino. Com isso teramos todos os pedidos de um pas juntos e, dentro destes pedidos, uma diviso por cidades. Por exemplo, todos os pedidos para o Brasil ficariam juntos. Dentro do Brasil, viriam primeiro todos os pedidos de Campinas, depois todos os pedidos do Rio de Janeiro, depois todos os pedidos de So Paulo e assim por diante. O nome da cidade exibido somente uma vez, no incio da listagem dos pedidos da respectiva cidade. Logo em seguida vamos fazer um exemplo prtico de relatrio que usa a opo de grupos. No exemplo prtico, vamos utilizar uma abordagem um pouco diferente da que vnhamos utilizando at aqui. Em todos os exemplos anteriores, eu sempre criava um novo projeto e, dentro do novo projeto, eu criava um novo relatrio. No prximo exemplo, eu vou abrir um dos projetos criados anteriormente e, dentro deste novo projeto, vou criar um novo relatrio. O objetivo salientar que, dentro de um mesmo projeto, posso ter diversos relatrios. Muto bem, vamos prtica. Exemplo prtico: Criar um relatrio de pedidos, onde so exibidos os seguintes campos: NmeroDoPedido, DataDoPedido, NomeDaEmpresa (da tabela Clientes), PasDeDestino, CidadeDeDestino e TotalDoPedido (que ser um campo calculado). Defini os campos PasDeDestino e CidadeDeDestino como campos de grupo. Para criar o relatrio proposto siga os passos indicados a seguir: 1. Abra o Business Intelligence Development Studio: Iniciar -> Programas -> Microsoft SQL Server 2005 -> Business Intelligence Development Studio. 2. Ser aberto o Business Intelligence Development Studio, com uma tela em branco, sem nenhum projeto aberto. Vamos abrir o projeto Listagem de Clientes, criado em um dos exemplos anteriores. Para abrir um novo projeto selecione o comando File -> Open -> Project/Solution. Ser aberta a janela Open Project. Clique no projeto Listagem de Clientes para selecion-lo, conforme indicado na Figura 14.40. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9000000Curso Completo Figura 14.40 Abrindo o projeto Listagem de Clientes. 3. Clique no boto Open. 4. Ser exibida a lista de arquivos disponveis na pasta do projeto. D um clique duplo no arquivo Listagem de Clientes.sln, que o arquivo de projeto a ser aberto. 5. Agora vamos adicionar um novo relatrio ao projeto Listagem de Clientes. Para adicionar um novo relatrio selecione o comando Project -> Add New Item. 6. Ser aberta a janela Add New Item Listagem de Clientes. Clique na opo Report Wizard para marc-la. No campo Name digite ListagemPaisCidade.rdl e depois clique no boto Add. 7. Ser aberto o assistente para criao de um novo relatrio, o qual j bem conhecido, uma vez que utilizamos este assistente nos exemplos anteriores. A primeira tela do assistente apenas informativa. Clique em Next, para seguir para a prxima etapa do assistente. 8. Como estamos trabalhando com um projeto j existente, poderemos utilizar as fontes de dados que j foram criadas anteriormente, desde que estas tenham sido configuradas para ser uma fonte de dados compartilhada (Make this a shared data source). o caso do nosso exemplo, onde vamos utilizar a fonte de dados NorthwindReport, j criada quando foi criado o projeto Listagem de Clientes. Voc pode usar uma fonte de dados j criada anteriormente ou criar uma nova fonte de dados, se isso for necessrio. Para criar uma nova fonte de dados, voc deve marcar a opo New data source e fornecer as informaes sobre a nova fonte. No nosso exemplo, vamos utilizar a fonte j existente NorthwindReport, conforme indicado na Figura 14.41. 9. Clique em Next para seguir para a prxima etapa do assistente. 10. Nesta etapa voc poder digitar diretamente o comando T-SQL da consulta ou usar o construtor de consultas (Query Builder). D um clique no boto Query Builder. Ser aberta a janela Query Builder. A janela aparece, por padro, sem todas as funcionalidades habilitadas. D um clique no primeiro boto (bem esquerda). o boto Generic Query Designer. Ao clicar neste boto, ser exibida a interface completa do Query Builder (sinceramente eu no consegui entender o porqu de o padro no vir j com a interface completa). proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000901 Figura 14.41 Usando uma fonte de dados j existente. 11. O primeiro passo adicionar as tabelas nas quais ser baseado o relatrio. Para adicionar uma ou mais tabelas, clique no boto Add table (ltimo boto, bem direita, com um sinal de + amarelo). Ser aberta a janela Add tables, com a lista de tabelas do banco de dados NorthwindReport. Voc pode selecionar mais de uma tabela, pressionando e mantendo pressionada a tecla Ctrl. Mantendo Ctrl pressionada, v clicando nas tabelas a serem adicionadas consulta. Neste nosso exemplo, vamos utilizar as tabelas Pedidos, Detalhes do pedido e Clientes. Marque as tabelas: Pedidos, Detalhes do pedido e Clientes. Clique no boto Add, para adicionar as tabelas selecionadas. 12. Muito bem, o nosso prximo passo marcar quais campos faro parte do relatrio. Para isso, basta marcar a caixa de seleo, ao lado do nome do campo. 13. Inicialmente marque os campos NomeDaEmpresa da tabela Clientes e os campos NmeroDoPedido, DataDoPedido, PasDeDestino e CidadeDeDestino, da tabela Pedidos. 14. Agora vamos criar o campo calculado, para ter o total por item de cada pedido. Para criar um campo calculado, voc coloca a frmula de clculo na coluna Column e o nome do campo vai na coluna Alias. Na primeira linha em branco, logo abaixo de CidadeDeDestino, vamos criar o campo para clculo do total por item do pedido. Vamos iniciar digitando a frmula de clculo. Na coluna Column, da terceira linha, digite a seguinte frmula: ([Quantidade]*[PreoUnitrio])*(1-[Desconto]) Esta frmula ir calcular o valor de cada item de cada pedido. Na coluna Alias, digite Valor Total. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9020000Curso Completo N O T A Importante: Se deixarmos a listagem assim como est, ser exibido o valor total para cada item de cada pedido. Por exemplo, se um pedido tiver 5 itens, sero exibidas cinco linhas no relatrio, uma para cada item. O que queremos agrupar todos os itens de um mesmo pedido e fazer a soma destes valores. Se fosse no Access, usaramos a linha Total. Mas acontece que esta funcionalidade tambm est disponvel no Query Builder. Para isso, clique no boto Group by (penltimo boto, do lado esquerdo do boto Add table). Observe que, aps clicar no boto Group by, uma nova coluna ser exibida, justamente a coluna Group by. Nesta coluna, mantenha a opo Group by selecionada para todos os campos, com exceo do campo Valor Total. Para este campo, selecione a opo Sum, para que seja feita a soma de todos os itens de um mesmo pedido. Sua janela deve estar semelhante indicada na Figura 14.42: Figura 14.42 A opo Group by. 15. Vamos ordenar o relatrio pelo campo NmeroDoPedido. Na linha NmeroDoPedido, na coluna Sort Type, selecione a opo Ascending, para fazer ordenar os resultados em ordem alfabtica do campo NmeroDoPedido. 16. D um clique em OK para fechar a janela do Query Builder e voltar ao assistente de criao do relatrio. 17. Voc estar de volta ao assistente, com o comando T-SQL j definido. Para o nosso exemplo, o Query Builder nos ajudou a criar o seguinte comando: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000903 N O T A SELECT Pedidos.NmeroDoPedido, Clientes.NomeDaEmpresa, Pedidos.DataDoPedido, Pedidos.PasDeDestino, Pedidos.CidadeDeDestino, SUM(([Detalhes do Pedido].Quantidade * [Detalhes do Pedido].PreoUnitrio) * (1 - [Detalhes do Pedido].Desconto)) AS ValorTotal FROM Clientes INNER JOIN Pedidos ON Clientes.CdigoDoCliente = Pedidos.CdigoDoCliente INNER JOIN [Detalhes do Pedido] ON Pedidos.NmeroDoPedido = [Detalhes do Pedido].NmeroDoPedido GROUP BY Clientes.NomeDaEmpresa, Pedidos.NmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PasDeDestino, Pedidos.CidadeDeDestino ORDER BY Pedidos.NmeroDoPedido Se voc se sente vontade com os comandos T-SQL, pode digitar o comando diretamente, sem ter que utilizar o Query Builder. 18. Clique em Next, para seguir para a prxima etapa do assistente. 19. Nesta etapa voc define se ir criar um relatrio do tipo Tabular, que so as tradicionais listagens, ou um relatrio do tipo Matrix, que so conhecidas no Access como Consultas de Tabela de Referncia Cruzada. Para este nosso exemplo ser um relatrio do tipo Tabular. Certifique-se de que esta opo esteja marcada. 20. Clique em Next, para seguir para a prxima etapa do assistente. 21. Nesta etapa que vamos definir quais os campos que formaro os grupos do relatrio. No nosso exemplo so os campos PasDeDestino e CidadeDeDestino. Clique no campo PasDeDestino para selecion-lo, depois clique no boto Group. Clique no campo CidadeDeDestino para selecion-lo e depois clique no boto Group. Os demais campos faro parte da seo detalhes do relatrio. Use a tecla Ctrl para marcar os demais campos e depois clique no boto Details. Sua janela deve estar conforme indicado na Figura 14.43: Figura 14.4 Definindo os elementos linha, coluna e valor. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9040000Curso Completo N O T A 22. Clique em Next, para seguir para a prxima etapa do assistente. 23. Nesta etapa voc pode escolher um, dentre diversos layouts sugeridos. Selecione a opo Stepped. Nesta etapa voc tambm define se devem ser includos, nos relatrios, subtotais por grupo. Por exemplo, voc pode incluir ao final da lista de pedidos de cada cidade a soma de todos os pedidos da cidade; ao final dos pedidos de um pas, a soma de todos os pedidos do pas e assim por diante. Para isso, marque a opo Include subtotals. Marque tambm a opo Enable drilldown, para adicionar mais interatividade ao relatrio, conforme mostrarei na hora de acessar o relatrio, mais adiante. 24. Clique em Next, para seguir para a prxima etapa do assistente. 25. Nesta etapa voc pode escolher um dentre diversos estilos disponveis. Marque a opo Bold. 26. Clique em Next, para seguir para a prxima etapa do assistente. O relatrio ser publicado no servidor Web associado ao projeto (que no nosso exemplo em http://localhost/ReportServer$JBCURSOS) e na pasta associada ao projeto, que no nosso exemplo a pasta Exemplos. Estas opes foram configuradas quando o projeto foi criado e todos os relatrios que fazem parte do projeto utilizaro estas definies. 27. Ser exibida a tela final do assistente, com um resumo das opes que foram selecionadas nas etapas anteriores. Nesta etapa voc tambm pode definir um nome para o relatrio. No campo Report name, digite: Listagem por Pas e Cidade. Marque a opo Preview report para que seja exibida uma prvia do que ser a verso final do relatrio. Voc pode utilizar o boto Back, para voltar a qualquer uma das etapas e fazer as alteraes necessrias. Clique em Finish para encerrar o assistente e criar o relatrio. 28. O relatrio ser criado e uma prvia ser exibida no SQL Server Business Intelligence Develop- ment Studio, conforme indicado na Figura 14.44: Figura 14.44 Visualizao do relatrio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000905 N O T A 29. Agora vamos publicar o relatrio no servidor Web e acess-lo usando o browser. 30. Para publicar o relatrio no servidor Web, utilize o comando Build -> Deploy Listagem de Clientes e aguarde at que o SQL Server Business Intelligence Development Studio publique o relatrio no servidor Web. O relatrio ser publicado, com base nas informaes que voc forneceu durante a criao do projeto, onde voc informou o nome do servidor e o nome da pasta onde ser publicado o relatrio. No nosso exemplo utilizamos o servidor http://localhost/ ReportServer$JBCURSOS, dentro do qual ser utilizada a pasta Exemplos. 31. Muito bem, o relatrio foi publicado no servidor Web. Vamos acess-lo, usando o Internet Explorer. 32. Abra o Internet Explorer e acesse o seguinte endereo: http://localhost/ReportServer$JBCURSOS Lembrando que ReportServer o padro sugerido durante a instalao do SQL Server 2005. Depois deste padro vem um sinal de $ e depois o nome da instncia. Este padro pode ser modificado, durante a instalao do SQL Server 2005. 33. Ser exibida a listagem de pastas disponveis no servidor de relatrios, conforme indicado na Figura 14.45, onde podemos observar que j est disponvel a pasta Exemplos: Figura 14.45 A pasta Exemplos, associada ao projeto. 34. D um clique em Exemplos. Ser exibida a lista de relatrios disponveis. No nosso exemplo esto disponveis dois relatrios no mesmo projeto: Listagem de Clientes (criado anteriormente) e Listagem por Pas e Cidade (criado no nosso ltimo exemplo). 35. D um clique em Listagem por Pas e Cidade. 36. O relatrio ser carregado e exibido no Internet Explorer, conforme indicado na Figura 14.46: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9060000Curso Completo Figura 14.46 Acessando o relatrio com grupos, usando o Internet Explorer. 37. Observe o sinal de + ao lado do nome de cada pas. Este sinal de + a chamada capacidade de Drilldown, a qual voc marcou para ser criada, em uma das etapas do assistente. Experimente clicar no sinal de + ao lado de Alemanha. Observe que agora foi exibida a listagem de cidades da Alemanha, juntamente com o total de vendas para a cidade. Clique no sinal de + ao lado da primeira cidade Aachen. Observe que agora exibida a listagem de todos os pedidos para Aachen, conforme indicado na Figura 14.47. Muito bem, com isso encerramos os nossos exemplos prticos, sobre a criao, publicao e utilizao de relatrios, usando o Reporting Services. ou no uma verdadeira maravilha este servio? No prximo tpico, no qual encerraremos o captulo, falarei sobre o console Reporting Services Con- figuration e mostrarei como executar as principais tarefas de configurao do Reporting Services, utilizando este console. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000907 Figura 14.47 Usando a capacidade de Drilldown. DESENVOLVIMENTO EM: O CONSOLE REPORTING SERVICES CONFIGURATION PR-REQUISITOS Conhecimento bsico dos elementos que compem o Reporting Services. METODOLOGIA Apresentao dos elementos que compem o console Reporting Services Configuration. INTRODUO AO CONSOLE REPORTING SERVICES CONFIGURATION Este console permite que voc faa uma srie de configuraes, tais como a pasta virtual atravs da qual so acessados os relatrios, a pasta virtual atravs da qual possvel configurar diversas opes do Reporting Services usando o navegador e uma srie de outras configuraes. Neste tpico, mostrarei um exemplo prtico, onde voc far um passeio pelas opes disponveis no console Reporting Ser- vices Configuration. Exemplo prtico: Abrir o console Reporting Services Configuration e verificar as opes de configurao disponveis. Siga os passos indicados a seguir: 1. Abra o console Reporting Services Configuration: Iniciar -> Programas -> Microsoft SQL Server 2005 -> Configuration tools -> Reporting Services Configuration. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9080000Curso Completo 2. Ser aberta uma janela para que voc informe o nome do servidor a ser conectado e da instncia. Por padro, vem selecionado o servidor local onde voc est executando o console Reporting Services Configuration. Clique no boto Find, para localizar as instncias disponveis neste servidor. 3. Na lista Instance name selecione a instncia desejada, conforme exemplo da Figura 14.48: Figura 14.48 Informando o servidor e a instncia. 4. Clique no boto Connect. 5. A conexo ser efetuada e ser exibida a tela principal do console Reporting Services Configu- ration. No painel da esquerda so exibidas as opes disponveis, conforme indicado na Figura 14.49, onde por padro vem selecionada a opo para gerenciamento do servio Report Server. Nesta tela voc pode inicializar ou parar o servio. No exemplo da Figura 14.49, o servio est sendo executado. Se fosse necessrio, voc poderia clicar no boto Stop para parar o servio. Figura 14.49 O console Reporting Services Configuration. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000909 6. No painel da direita, d um clique na opo Report Server Virtual Directory. Nesta opo voc define a pasta virtual, atravs da qual os relatrios publicados podem ser acessados e em qual dos sites (lembrando que em um nico servidor IIS posso ter vrios sites configurados) estar esta pasta. No nosso exemplo estamos usando a pasta virtual ReportServer$JBCURSOS e o Web site padro. Defina as configuraes desejadas e clique no boto Apply para salv-las. 7. No painel da direita, d um clique na opo Report Manager Virtual Directory. Nesta opo voc define a pasta virtual, atravs da qual possvel acessar praticamente todas as opes para configurao e gerenciamento dos relatrios disponveis. No nosso exemplo estamos usando a pasta virtual Reports$JBCURSOS e o Web site padro. O padro sugerido, durante a instalao do Reporting Services, o nome Reports, um sinal de $ e o nome da instncia. No nosso exemplo, ao acessar o endereo http://localhost/Reports$JBCURSOS, voc ter acesso a uma grande quantidade de opes de configurao dos relatrios. Na Figura 14.50 podemos ver esta pgina, carregada no navegador: Figura 14.50 Acessando http://localhost/Reports$JBCURSOS 8. Defina as configuraes desejadas e clique no boto Apply para salv-las. 9. No painel da direita, d um clique na opo Windows Service Identity. Nesta opo voc de- fine a conta com a qual ir rodar o servio Report Server. Defina as configuraes desejadas e clique no boto Apply para salv-las. Na guia Web Service Identity, voc define no contexto de qual aplicao Web o servio do Report Server ir rodar. Defina as configuraes desejadas e clique no boto Apply para salv-las. 10. No painel da direita, d um clique na opo Database Setup. Nesta opo, indicada na Figura 14.51, voc define em qual servidor e instncia ficar o banco de dados utilizado pelo Reporting Services. Informaes sobre os relatrios publicados, configuraes do servio configuraes de segurana e demais informaes necessrias ao funcionamento do Reporting Services ficam todas neste banco de dados. Defina as configuraes desejadas e clique no boto Apply para salv-las. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9100000Curso Completo Figura 14.51 Definindo onde ficar o banco de dados do Reporting Services. 11. Voc tambm tem a opo para gerenciar as chaves de criptografia Encription Keys; uma opo que exibe o status da inicializao do servio Report Server Initialization; uma opo para configurar as opes para envio de relatrios via e-mail Email Settings; e uma opo para definir uma conta no contexto da qual sero executados os relatrios Execution Account. 12. Para fechar o console Reporting Services Configuration clique no boto Exit. CONCLUSO Este foi um captulo completamente dedicado ao Reporting Services. Este, na minha opinio, foi um dos servios que mais apresentou melhorias e novidades em relao s verses anterioes do SQL Server. Iniciei o captulo apresentando o Reportng Services, falando sobre os elementos que o compem e a funcionalidade de cada um destes elementos. Em seguida passei a mostrar como criar uma srie de relatrios, a publicar os relatrios, a acess-los via browser e a salv-los em diferentes formatos. Apresentei exemplos, passo a passo, que mostraram como criar os seguintes tipos de relatrios: Listagem simples Matrix Matrix com a opo Page Listagem com grupos proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 14 REPORTING SERVICES O SERVIO DE RELATRIOS DO SQL SERVER 2005 Curso Completo0000911 Para encerrar o captulo, apresentei a ferramenta Reporting Services Configuration, a qual nos d acesso a uma srie de opes de configurao do Reporting Services. Evidentemente que existem muito mais coisas sobre o Reporting Services. Mas dentro do escopo proposto para este captulo, vamos parando por aqui. Sem nenhuma dvida, daria para escrever um livro inteiro sobre o Reporting Services (e certamente sero lanados livros inteiros, s sobre o Reporting Services). No prximo captulo mostrarei, atravs de exemplos prticos, como utilizar algumas das principais novidades do SQL Server 2005, as quais, por questes de organizao do livro, no puderam ser apresentadas, juntamente com as demais novidades, apresentadas nos captulos anteriores. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Captulo 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9140000Curso Completo N O T A INTRODUO Neste captulo eu apresentarei, na forma de exemplos prticos, mais algumas novidades do SQL Server 2005. Apresentarei novidades que, por motivos de organizao do livro, no puderam ser colocadas nos captulos anteriores. Tambm apresentarei alguns exemplos prticos sobre tarefas comuns ao dia- a-dia do DBA (Database Administrator). Este o tpico captulo do tipo Salada de Frutas. Ou seja, um tpico aqui, outro ali e assim por diante. Julguei importante incluir este captulo, porque nele abordo tpicos prticos, que certamente o DBA usar no seu trabalho dirio. Vamos iniciar o captulo aprendendo a trabalhar com uma importante novidade do SQL Server 2005: A criao de snapshots de um banco de dados Database snapshot. Um snapshot de um banco de dados uma cpia esttica, somente-leitura do banco de dados (o snapshot uma cpia somente leitura do banco de dados original). Podemos criar vrios snapshots de um mesmo banco de dados. O snapshot s pode ser criado na mesma instncia do banco de dados original. O snapshot uma cpia fiel do banco de dados original. O snapshot mantido, at que seja excludo pelo administrador. Vrios so os usos prticos que justificam a criao de um ou mais snapshots de um banco de dados. Por exemplo, posso criar um snapshot s para atender requisies de relatrios, os quais no tm a necessidade de serem gerados em tempo real. Serve como uma cpia adicional de segurana, pois o snapshot pode ser usado para restaurar um banco de dados, ao estado em que este se encontrava, quando foi gerado o snapshot. Esta pode ser uma opo til quando outras opes, tais como o restore, falharam. Neste captulo voc aprender mais sobre snapshots e ver exemplos prticos de como criar um snapshot de um banco de dados. Importante: A opo Database snapshot est disponvel somente no SQL Server 2005 Enterprise Edition. O prximo tpico que irei abordar neste captulo sobre a criao de diagramas de um banco de dados. Os diagramas nos permitem ter uma viso geral da estrutura do banco de dados: tabelas, chaves primrias, chaves estrangeiras e relacionamentos. uma excelente ferramenta tambm para documentao da estrutura do banco de dados. Na seqncia apresentarei o passo-a-passo sobre como realizar uma srie de tarefas teis, bastante comuns ao dia-a-dia do DBA: Como transferir um banco de dados de uma instncia para outra. Como trabalhar com tabelas, diretamente no SQL Server Management Studio. Usar a opo de gerao de scripts do SQL Server Management Studio. Para encerrar o captulo farei uma descrio detalhada das diferentes edies do SQL Server 2005. Esto disponveis as seguintes edies: SQL Server 2005 Enterprise Edition (32-bits e 64-bits) SQL Server 2005 Standard Edition (32-bits e 64-bits) SQL Server 2005 Workgroup Edition (somente 32-bits) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 Curso Completo0000915 SQL Server 2005 Developer Edition (32-bits e 64-bits) SQL Server 2005 Express Edition (somente 32-bits) DESENVOLVIMENTO EM: SNAPSHOT DATABASES PR-REQUISITOS Conhecimento bsico dos objetos que compem um banco de dados do SQL Server. METODOLOGIA Exemplo prtico de criao e administrao de snapshot Databases. QUANDO USAR A OPO DE SNAPSHOT Um snapshot de um banco de dados uma cpia esttica, somente-leitura deste banco de dados (o snapshot uma cpia somente leitura do banco de dados original). Podemos criar vrios snapshots de um mesmo banco de dados. O snapshot s pode ser criado na mesma instncia do banco de dados original. O snapshot uma cpia fiel do banco de dados original. O snapshot mantido, at que seja excludo pelo administrador. A seguir apresento algumas situaes onde pode ser indicada a criao de snapshots de um banco de dados. Manter um histrico dos dados, para a gerao de relatrios: Imagine um banco de dados de pedidos. Pode ser que voc queira manter no banco de dados somente os pedidos do ano corrente. Porm, voc pode querer fazer relatrios que englobem estatsticas completas, com dados dos pedidos de todos os anos. Uma opo fazer um snapshot do banco de dados, ao final de cada ano e depois zerar os pedidos, para iniciar o ano seguinte s com os pedidos do ano corrente. Havendo espao em disco, voc pode at mesmo criar e manter snapshots de perodos diferentes, para facilitar a gerao de relatrios. Criar uma cpia para ser usada em emergncias: Em caso de erros graves com o banco de dados principal e tendo tambm falhado os processos de restore, o snapshot uma opo para que a perda no seja total. Ou seja, ao usar um snapshot do banco de dados, sero perdidas somente as alteraes feitas aps a gerao do snapshot. Claro que no uma situao ideal, mas em caso de catstrofes maiores, uma maneira de evitar a perda total dos dados, ou pelo menos, minimizar a perda. Proteger os dados contra erros de operao e criar um banco de dados de teste: Erros do DBA podem ocorrer e geralmente so desastrosos. Como o DBA, geralmente, tem poderes totais sobre o banco de dados, os erros cometidos pelo DBA causam grandes estragos. Quando voc precisa fazer testes, verificar se um script est funcionando corretamente, testar um stored procedure ou uma operao que ir alterar um grande volume de dados, voc pode seguir os seguintes passos: Criar um snapshot do banco de dados e fazer os testes que precisam ser feitos no snapshot. Se tudo der certo, voc pode aplicar os mesmos passos no banco de dados princi- pal. Se algo der errado, o problema ocorrer no snapshot. Ou seja, o banco de dados original estar intacto. muito melhor descobrir os erros enquanto voc testa as operaes no snap- shot do que descobri-los, testando diretamente no banco de dados de produo. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9160000Curso Completo Criar snapshots, periodicamente, para minimizar problemas com erros de operao: Se houver espao em disco suficiente, voc pode criar uma srie de snapshots no decorrer do dia, para minimizar possveis perdas com erros de operao no banco de dados. Alm disso, voc pode definir um determinado nmero de snapshots a serem mantidos. Quando um novo snapshot gerado, o mais antigo excludo, para manter apenas o nmero de snapshots que voc definiu. Quando houver um erro de operao, voc pode utilizar o snapshot mais recente, para recuperar o banco de dados. Claro que sempre haver o problema da perda das alteraes efetuadas entre o ltimo snapshot e o momento em que ocorreu o problema. LIMITAES EM RELAO AO USO DE SNAPSHOTS Neste tpico, apresentarei as limitaes que existem em relao ao uso de snapshots Databases. LIMITAES EM RELAO AO BANCO DE DADOS FONTE O banco de dados fonte o banco de dados original, a partir do qual sero criados um ou mais snap- shots. Aps a criao do primeiro snapshot, algumas restries passam a ser impostas para o banco de dados fonte: O banco de dados fonte no poder ser mais excludo, desanexado (ou desatachado, como preferirem) ou sofrer um restore a partir de um backup. O backup do banco de dados funciona normalmente, aps a criao de um ou mais snapshots. Ao criar o snapshot, as pginas de dados no so copiadas do banco de dados fonte para o snapshot. Ao invs disso, somente um ponteiro criado no snapshot, ponteiro este que aponta para a pgina original de dados. Quando uma pgina de dados for atualizada pela primeira vez, aps a criao do snapshot, a pgina, sem a atualizao, ser copiada para o snapshot. Com isso fica no banco de dados fonte a pgina modificada (a qual ter tambm todas as subseqentes modificaes) e no snapshot, a pgina original, como estava, no momento em que o snapshot foi gerado. Esta operao de cpia da pgina original para o snapshot, na primeira vez que a pgina original modificada, conhecida como copy-on-write operation. Dependendo do nmero de operaes copy-on-write operation que so executadas e do nmero de snap- shots que forem criados, pode ocorrer um grande aumento de operaes de I/O no banco de dados original, o que pode afetar o desempenho deste banco de dados. No possvel excluir arquivos de dados do banco de dados fonte e nem dos snapshots, enquanto existir um ou mais snapshots do banco de dados. LIMITAES EXISTENTES NOS SNAPSHOTS DO BANCO DE DADOS A partir de um banco de dados, podem ser criados um ou mais snapshots. Nos snapshots, existem algumas limitaes, as quais descrevo a seguir: O snapshot s pode ser criado na mesma instncia do banco de dados original. O banco de dados snapshot uma cpia fiel do banco de dados original, no momento em que o snapshot criado, menos as transaes que ainda esto com o estado uncommitted, proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 Curso Completo0000917 no banco de dados original. As transaes neste estado sofrem um roll back no snapshot. O banco de dados original no afetado. As alteraes que forem feitas no banco de dados original no sero replicadas para os snapshots existentes (se no seria replicao e no um simples snapshot). Os snapshots so bancos de dados do tipo Read Only, ou seja, no possvel incluir, alterar ou excluir dados das tabelas do snapshot. No possvel criar snapshots dos bancos de dados model, master e temp. No possvel fazer alteraes nas propriedades dos arquivos (primrio, secundrio ou de log) dos snapshots. No possvel excluir arquivos (secundrios ou de log) de um snapshot. No possvel fazer backup ou restore de um snapshot. No possvel atachar ou desatachar arquivos de um snapshot. S possvel criar snapshots em parties formatadas com NTFS. O servio Full-text indexing no suportado nos snapshots e os full-text catalogs criados no banco de dados original no so copiados para os snapshots. Quando o snapshot criado, ele herda as restries de segurana contidas no banco de dados original. Como os snapshots so somente leitura (read only), as permisses herdadas no podem ser alteradas e alteraes feitas nas permisses de segurana do banco de dados original no sero propagadas para os snapshots. REQUERIMENTOS DE ESPAO EM DISCO Aqui importante lembrar como funciona a criao de snapshots, em termos das pginas de dados do banco de dados. Ao criar o snapshot, as pginas de dados no so copiadas do banco de dados fonte para o snapshot. Ao invs disso, somente um ponteiro criado no snapshot, ponteiro este que serve como uma referncia para a pgina original de dados. Quando uma pgina de dados for atualizada pela primeira vez, aps a criao do snapshot, a pgina, sem a atualizao, ou seja, como era no momento da criao do snapshot, ser copiada para o snapshot. Com isso fica no banco de dados fonte a pgina modificada (a qual ter tambm todas as subseqentes modificaes) e no snapshot, a pgina original, como estava no momento em que o snapshot foi gerado. Esta operao de cpia da pgina original para o snapshot, na primeira vez que a pgina original modificada, conhecida como copy-on-write operation. Dependendo do nmero de operaes copy-on-write operation que so executadas e do nmero de snapshots que forem criados, pode ser necessria uma grande quantidade de espao em disco, para que as pginas possam ser copiadas para os snapshots. Se ocorrer de no haver espao em disco, quando o SQL Server precisar copiar uma pgina, o snapshot ser marcado com o status suspect e no poder mais ser utilizado, tendo que ser excludo. Mais uma vez importante salientar que isso no afeta, de maneira alguma, o banco de dados original. Por isso importante que voc faa um planejamento cuidadoso, de tal forma que tenha espao suficiente em disco, enquanto um ou mais snapshots estiverem em uso. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9180000Curso Completo RECOMENDAES PARA A CRIAO DE UM SNAPSHOT Antes de partirmos para a parte prtica, apresentarei algumas recomendaes contidas no Books online, relacionadas com diversos aspectos sobre a criao de snapshot Databases, tais como: nomeao dos snapshots e limitaes para o nmero de snapshots a serem mantidos. RECOMENDAES SOBRE A NOMEAO DOS SNAPSHOTS Ao criar um snapshot de um banco de dados, voc dever atribuir um nome a ele. Neste tpico, apresento algumas sugestes em relao nomeao dos snapshots de um banco de dados. Conforme j descrito anteriormente, possvel criar mais de um snapshot de um banco de dados. Cada snapshot que for criado dever ter um nome que seja nico dentro da instncia do SQL Server onde o snapshot for criado (lembrando que os snapshots somente podem ser criados na mesma instncia do banco de dados original). O nome do snapshot deve incluir informaes, tais como: O nome do banco de dados original. Um prefixo que identifique que um snapshot, tal como snp ou sns. A data e hora da criao do snapshot ou um nmero seqencial. Vamos a um exemplo prtico. Vamos considerar o banco de dados Northind. Para este banco de dados, imagine que estamos criando trs snapshots por dia, com um intervalo de seis horas de diferena, dentro do perodo das 6 da manh at as 6 da tarde (18 horas). Ou seja, so criados snapshots s 6 da manh, meio-dia (12 horas) e as 18 horas. Considere tambm que cada snapshot ser mantido por 24 horas antes de ser excludo e substitudo por um novo snapshot, com o mesmo nome. Para este exemplo, podemos criar um esquema de nomeao como o indicado a seguir, onde em cada snapshot constam o nome do banco de dados, a indicao de que um snapshot e a hora em que foi criado. Como cada snapshot substitudo por outro, de igual nome, 24 horas aps ter sido criado, no necessria a incluso da data de criao, no nome do snapshot: Northwind_snp_0600 Northwind_snp_1200 Northwind_snp_1800 Agora vamos modificar um pouco o nosso exemplo. Vamos supor que o horrio de criao dos snap- shots no seja to bem definido. Seja apenas um de manh, outro mais ou menos ao meio-dia e um tarde. Neste caso, poderamos usar os seguintes nomes: Northwind_snp_manh Northwind_snp_almoo Northwind_snp_tarde LIMITAR O NMERO DE SNAPSHOTS A SEREM MANTIDOS Conforme descrevi anteriormente, medida que as pginas de dados so atualizadas no banco de dados original, a verso antes da alterao copiada para o snapshot, na operao conhecida como proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 Curso Completo0000919 N O T A copy-on-write operation. medida que as pginas so copiadas, mais e mais espao faz-se necessrio no disco. Alm disso, um snapshot ser mantido, at que ele seja excludo. Por isso, voc deve definir qual o nmero mximo de snapshots que sero mantidos, simultaneamente. Este nmero, evidentemente, depende do tamanho do banco de dados e do espao disponvel para manter os snap- shots. Mas algo que tem que ser previsto e, cuidadosamente, planejado. Muito bem, chega de teoria. A seguir voc aprender a criar snapshots de um banco de dados. Um detalhe interessante que, para a criao de um snapshot, temos que utilizar comandos T-SQL. No possvel criar um snapshot, usando a interface grfica do SQL Server Management Studio. Para a criao de um snapshot, teremos que abrir uma janela de execuo de comandos T-SQL, dentro do SQL Server Management Studio. CRIANDO SNAPSHOTS DE UM BANCO DE DADOS Finalmente vamos prtica. Neste tpico mostrarei como criar um snapshot de um banco de dados. Antes de criar um snapshot, voc deve certificar-se de que dispe de espao suficiente em disco, para a criao do snapshot. O espao mximo que o snapshot ir precisar ser o tamanho do banco de dados original, quando da criao do snapshot. J foi explicado anteriormente mas nunca demais repetir. Quando da criao do snapshot, as pginas de dados so mantidas no banco de dados fonte. Somente quando uma pgina alterada, pela primeira vez, que ela copiada para o snapshot e a pgina, com as alteraes, fica no banco de dados fonte. Com isso, medida que mais pginas so alteradas, mais pginas sero copiadas para o snapshot. As pginas do snapshot ficam em um arquivo conhecido como sparse file, o qual tem a extenso .ss. A criao de um snapshot feita usando o comando CREATE DATABASE, em conjunto com a clusula AS SNAPSHOT OF. Ou seja, vamos criar um novo banco de dados, o qual ser um snapshot de um banco de dados j existente. Para criar um snapshot, voc ter que especificar o nome lgico de todos os arquivos do banco de dados fonte. Exemplo prtico: Criar um snapshot do banco de dados AdventureWorks. Vamos chamar o snapshot de AdventureWorks_sns_Exem. O arquivo sparso (.ss) do snapshot ser criado no seguinte caminho: C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_sns_Exem.ss A extenso .ss apenas uma sugesto, voc pode escolher qualquer outra extenso. Muito bem, para criar o snapshot proposto, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio e faa conexo com a instncia onde est o banco de dados AdventureWorks, para o qual voc deseja criar um snapshot. 2. Navegue at o banco de dados AdventureWorks, clique com o boto direito do mouse neste banco de dados e, no menu de opes que exibido, clique em New Query, para abrir uma janela de execuo de comandos T-SQL. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9200000Curso Completo N O T A 3. Execute o seguinte comando: CREATE DATABASE AdventureWorks_sns_Exem ON ( NAME = AdventureWorks_Data, FILENAME = C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_sns_exem.ss ) AS SNAPSHOT OF AdventureWorks; GO O comando ser executado e a seguinte mensagem ser exibida: Command(s) completed successfully. Muito bem, isso indica que o snapshot foi criado. E agora, como podemos verificar se ele foi realmente criado? Muito simples. Na instncia onde o snapshot foi criado, a qual deve ser obrigatoriamente a mesma instncia do banco de dados original, acesse a opo Databases -> Databases snapshot. Ser exibida a lista de snapshots que foram criados, conforme exemplo da Figura 15.1, onde j aparece na lista o snapshot AdventureWorks_sns_Exem, criado no nosso exemplo: Figura 15.1 Lista de snapshots. fundamentel salienter que, uma vez criado, o snapshot uma cpia fiel, somente leitura, do banco de dados original. Voc poder navegar pelas tabelas, views e demais elementos do snapshot. Apenas no poder alter-los ou no poder alterar, inserir ou excluir dados das tabelas do snapshot. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 Curso Completo0000921 Outro detalhe de grande importncia o fato de que as alteraes que so feitas no banco de dados fonte no sero repassadas para o snapshot. O snapshot uma cpia fiel do banco de dados, no momento em que o snapshot criado. Alteraes, adies e excluses feitas nos dados do banco de dados fonte, aps a criao do snapshot, no so replicadas para o snapshot. Para excluir um snapshot o mesmo procedimento para excluso de um banco de dados qualquer. Clique com o boto direito do mouse no snapshot e, no menu de opes que exibido, clique em Delete. Ser aberta uma janela pedindo confirmao. Clique em OK e pronto, o snapshot foi excludo. Sobre snapshot Databases era basicamente isso. DESENVOLVIMENTO EM: CRIAO DE DIAGRAMAS DO BANCO DE DADOS PR-REQUISITOS Conhecimento bsico do Modelo Relacional de Dados. METODOLOGIA Exemplo prtico de criao de um diagrama. Os diagramas nos permitem ter uma viso geral da estrutura do banco de dados: tabelas, chaves primrias, chaves estrangeiras e relacionamentos. uma excelente ferramenta tambm para documentao da estrutura do banco de dados. Os diagramas so mais conhecidos como diagramas Entidade x Relacionamentos. Na Figura 15.2, temos um exemplo de um diagrama Entidade x Relacionamentos: Figura 15.2 Um exemplo de diagrama Entidades x Relacionamentos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9220000Curso Completo Neste tpico, mostrarei um exemplo prtico de como criar um diagrama deste tipo, no SQL Server 2005. Este diagrama bastante til, pois nos d uma viso geral da estrutura do banco de dados, mostrando as tabelas existentes, os campos de cada tabela, um indicativo de quais campos so chave primria e os relacionamentos entre as tabelas. Vamos ao exemplo prtico. Exemplo prtico: Criar um diagrama para o banco de dados AdventureWorks. Para criar o diagrama proposto, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio e acesse a instncia onde est o banco de dados AdventureWorks. 2. Navegue at a opo Databases e clique no sinal de +, ao lado da opo Databases, para exibir os bancos de dados disponvies nesta instncia. 3. Clique no sinal de + ao lado do banco de dados AdventureWorks, para exibir as opes disponveis. Observe que uma das opes justamente Database Diagrams, conforme indicado na Figura 15.3: Figura 15.3 A opo Database Diagrams. 4. Para criar um novo diagrama, clique com o boto direito do mouse na opo Database Dia- grams e, no menu de opes que exibido, d um clique em New Database Diagram. 5. Ser aberta a janela Add Table, para que voc adicione as tabelas que faro parte do diagrama. No obrigatrio que voc adicione todas as tabelas. Outro detalhe importante que voc pode criar vrios diagramas, no mesmo banco de dados. Por exemplo, voc pode criar um diagrama proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 Curso Completo0000923 onde sejam exibidas as tabelas relacionadas com clientes e pedidos e um outro diagrama onde sejam exibidas as tabelas relacionadas com funcionrios e fornecedores. No nosso exemplo, vamos adicionar todas as tabelas cujo dono o schema Person. Aqui cabe mais um comentrio. No Captulo 6, quando tratei sobre segurana, salientei as novidades do SQL Server 2005 na rea de segurana. Uma delas era o fato de o dono dos objetos ser um schema e no mais um usurio ou role. Um dos benefcios do uso de Schema justamente facilitar a segmentao de um banco de dados em reas bem definidas, tais como Clientes, Pedidos, Funcionrios, etc., onde as tabelas relacionadas com cada rea tm como dono o respectivo schema. 6. Para selecionar vrias tabelas voc usa a tecla Ctrl. Pressione e mantenha pressionada a tecla Ctrl e v clicando em todas as tabelas cujo dono seja o schema Person. Aparece (Person) aps o nome da tabela. Sua janela deve estar semelhante indicada na Figura 15.4: Figura 15.4 Selecionando as tabelas do schema Person. 7. D um clique no boto Add e depois um clique em Close. 8. As tabelas sero adicionadas ao diagrama com um layout um pouco bagunado. Use o mouse para arrastar e arranjar as tabelas de uma maneira mais organizada, conforme sugesto da Figura 15.5. Observe que so exibidos os relacionamentos existentes entre as tabelas, atravs de linhas que ligam as tabelas relacionadas. 9. Quando o diagrama est sendo exibido, habilitada uma barra de ferramentas com diversas opes, relacionadas a edio e configurao do diagrama. Na Figura 15.6 apresentada a barra de ferramentas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9240000Curso Completo Figura 15.5 O diagrama recm-criado. Figura 15.6 A barra de ferramentas Database Diagram. A seguir descrevo a funcionalidade dos principais botes da barra de ferramentas Database Diagram. O segundo boto, da esquerda para a direita, o boto Add table. Ao clicar neste boto ser aberta a janela Add Table, para que voc possa adicionar outras tabelas ao diagrama. O terceiro boto, da esquerda para a direita , sem dvida, o mais interessante de todos. o boto Add Related Tables. Ao clicar neste boto, sero adicionadas ao diagrama, todas as tabelas que possuem pelo menos um relacionamento com uma das tabelas j existentes no diagrama. O quarto boto, da esquerda para a direita, exclui do banco de dados a tabela selecionada no diagrama. MUITA ATENO: Este boto ir excluir a tabela diretamente do banco de dados. Este boto equivalente a clicar com o boto direito do mouse na tabela e clicar na opo Delete. O quinto boto, da esquerda para a direita, o Remove frome Diagram. Este boto apenas retira a tabela do diagrama, sem exclu-la do banco de dados. Ao clicar neste boto, ser excluda a tabela que estiver selecionada no diagrama. A tabela selecionada indicada pela sua linha de ttulo com o fundo azul e letras brancas. As tabelas no selecionadas no diagrama so exibidas com a linha de ttulo em cinza e cor de fonte preta. Voc pode selecionar mais de uma tabela, usando a tecla Ctrl e clicando nas tabelas a serem selecionadas. Voc tambm pode remover proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 Curso Completo0000925 uma tabela do diagrama, selecionando a tabela e pressionando a tecla Delete. No ser emitida uma mensagem para confirmao da excluso da tabela do diagrama. A lista Table View permite que voc exiba as tabelas do diagrama de diferentes maneiras. Experimente as diferentes opes de visualizao. Na Figura 15.7, temos a opo de visualizao Names Only. As configuraes de exibio so individuais para cada tabela do diagrama. Voc pode selecionar uma tabela e usar a lista Table View para alterar somente a forma de exibio da tabela selecionada. Em um mesmo diagrama, diferentes tabelas podem estar com diferentes configuraes de visualizao. Figura 15.7 A opo de visualizao Name Only. Boto Show Relationship Labels. o primeiro boto, direita da lista Table View. Este boto exibe informaes adicionais sobre os relacionamentos presentes no diagrama. Pode ser utilizado como uma forma de documentar os relacionamentos existentes no banco de dados. Os demais botes desta barra de ferramentas so relacionados com configuraes de layout do diagrama e so auto-explicativos. 10. Pressione Ctrl + S para salvar o diagrama. Ser exibida a janela Choose Name, para que voc informe um nome para o diagrama. Digita Tabelas Person, conforme indicado na Figura 15.8: Figura 15.8 Salvando o diagrama. 11. Clique em OK. 12. Selecione o comando File -> Close, para fechar o diagrama. 13. O diagrama Tabelas Person j deve ser exibido na lista Database Diagramas, do banco de dados AdventureWorks. Caso voc precise editar o diagrama, basta dar um clique duplo nele, para abri-lo no modo de edio. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9260000Curso Completo DESENVOLVIMENTO EM: TRANSFERIR BANCOS DE DADOS ENTRE INSTNCIAS PR-REQUISITOS Conhecimento bsico dos objetos que compem um banco de dados do SQL Server. METODOLOGIA Exemplo prtico de transferncia de um banco de dados. Em determinadas situaes, pode ser necessrio tirar um banco de dados de uma instncia (chamamos de Desatachar, Desanexar ou o termo em ingls Detach) e mov-lo para outra instncia. Aps desanexar o banco de dados de uma isntncia, podemos anex-lo (o termo tcnico atachar, anexar ou em ingls Attach) em uma outra instncia do mesmo servidor ou de outro servidor. So diversas as situaes prticas onde pode ser necessrio mover um banco de dados de uma instncia para outra. Por exemplo, pode ser que voc queira mover um banco de dados para um novo servidor, o qual ser dedicado ao banco de dados, para obter um melhor desempenho. O processso de desanexar um banco de dados de uma instncia e anex-lo em outra instncia bastante simples. Vamos aprender a executar esta operao atravs de um exemplo prtico. O processo constitudo de trs etapas: 1. Desanexar o banco de dados da instncia onde ele est. 2. Copiar todos os arquivos do banco de dados para a pasta onde eles sero utilizados. Devem ser copiados o arquivo primrio (.mdf), todos os arquivos secundrios (.ndf) e todos os arquivos de log (.ldf). 3. Anexar o banco de dados na instncia de destino. Muito bem, vamos a um exemplo prtico. Etapa 1: Desanexar o banco de dados da instncia de origem. Para desanexar um banco de dados, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio, faa a conexo com a instncia onde est o banco de dados a ser desanexado. 2. Navegue at o banco de dados a ser desanexado, clique com o boto direito do mouse no banco de dados e, no menu de opes que exibido, clique em Tasks -> Detach. 3. Ser aberta a janela Detach Database, na qual voc pode marcar diversas opes, tais como Drop Connections (para cancelar as conexes que estejam abertas com o banco de dados), Keep Full Text Catalogs, para manter os catlogos para pesquisa de Full Text e assim por diante. Esta tela est indicada na Figura 15.9. 4. Marque as opes desejadas e d um clique em OK. Pronto, o banco de dados foi desanexado e no ser mais exibido na lista Databases, da instncia. Etapa 2: Copiar todos os arquivos do banco de dados para a pasta onde eles sero utilizados. Devem ser copiados o arquivo primrio (.mdf), todos os arquivos secundrios (.ndf) e todos os arquivos de log (.ldf): proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 Curso Completo0000927 Figura 15.9 Desanexando um banco de dados. Etapa 3: Anexar o banco de dados da instncia de destino. Para anexar um banco de dados, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio, faa a conexo com a instncia onde ser anexado o banco de dados. 2. Navegue at a opo Databases, clique com o boto direito do mouse na opo Databases e, no menu de opes que exibido, clique em Attach. 3. Ser exibida a janela Attach Databases. Voc pode usar esta janela para anexar mais de um banco de dados, ao mesmo tempo. Para anexar o banco de dados voc deve informar onde est gravado o arquivo primrio (.mdf) do banco de dados. Clique no boto Add. 4. Ser aberta a janela Locate Database Files. Navegue at a pasta onde est o arquivo primrio (.mdf) do banco de dados a ser anexado. Marque o arquivo primrio, conforme exemplo da Figura 15.10 e clique em OK. 5. Voc estar de volta janela Attach Databases. As informaes sobre o banco de dados tero sido carregadas a partir do arquivo .mdf, conforme indicado na Figura 15.11. 6. Clique em OK e pronto, o banco de dados ter sido anexado e estar disponvel para ser utilizado. A seguir apresento algumas situaes que impedem que seja possvel desanexar um banco de dados de uma instncia do SQL Server 2005: Se o banco de dados estiver sendo replicado ou contiver publicaes. 1. Copie todos os arquivos que compem o banco de dados (arquivo .mdf, arquivos .ndf e arquivos .log) para a pasta de destino. Por exemplo, se voc vai anexar o banco de dados em uma instncia de um outro servidor, deve criar uma pasta no servidor de destino e copiar os arquivos para dentro desta pasta. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9280000Curso Completo Figura 15.10 Selecionando o arquivo primrio do banco de dados. Figura 15.11 A janela Attach Databases. Se existirem um ou mais snapshots do banco de dados. Antes de poder desanexar o banco de dados, voc ter que excluir todos os snapshots que tenham sido criados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 Curso Completo0000929 N O T A Um snapshot no pode ser anexado ou desanexado. Se houver uma seo de espelhamento do banco de dados database mirroring em andamento, no ser possvel desanexar o banco de dados. O banco somente poder ser desanexado, depois que a sesso de espelhamento for encerrada. O COMANDO SP_DETACH_DB Voc tambm pode usar o comando sp_detach_db, para desanexar um banco de dados de uma instncia do SQL Server 2005. Este comando desanexa o banco de dados e pode, opcionalmente, rodar o comando UPDATE STATISTICS em todas as tabelas do banco de dados, antes de fazer a desanexao do banco de dados. Syntax conforme Books online: sp_detach_db [ @dbname= ] dbname [ , [ @skipchecks= ] skipchecks ] [ , [ @KeepFulltextIndexFile= ] KeepFulltextIndexFile ] Este comando tem os seguintes argumentos: [ @dbname = ] dbname: o nome do banco de dados a ser desanexado. [ @skipchecks = ] skipchecks: Esta opo define se o comando UPDATE STATISTICS deve ou no ser executado ou no em todas as tabelas do banco de dados, antes de fazer a desanexao do banco de dados. Se esta opo for definida com o valor True, a atualizao das estatsticas no ser efetuada. Para fazer com que o comando UPDATE STATISTIS seja executado, esta opo deve ser definida com o valor False. recomendado que as atualizaes sejam executadas, principalmente quando o banco de dados for movido para uma mdia do tipo somente leitura, como por exemplo um CD-ROM ou DVD-ROM. [ @KeepFulltextIndexFile = ] KeepFulltextIndexFile: Esta opo utilizada para definir se os ndices para pesquisas do tipo full-text sero ou no excludos, durante a desanexao do banco de dados. Se o valor for NULL ou false, todos os ndices sero excludos; se o valor for True, os ndices sero mantidos. Para executar o comando sp_detach_db, o usurio deve ser membro da seguinte role de servidor: db_owner Exemplo: O comando a seguir faz a desanexao do banco de dados AdventureWorks e define o valor do parmetro skipchecks como True, ou seja, no ser executado o comando UPDATE STATISTICS, nas tabelas do banco de dados, para atualizao das estatsticas, antes da desanexao do banco de dados. EXEC sp_detach_db AdventureWorks, true Tambm possvel anexar um banco de dados, usando comandos T-SQL. Para isso, usamos o comando CREATE DATABASE, com a seguinte sintaxe: CREATE DATABASE database_name ON <filespec> [ ,...n ] FOR { ATTACH [ WITH <service_broker_option> ] | ATTACH_REBUILD_LOG } proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9300000Curso Completo Considere o exemplo a seguir. Este exemplo faz a anexao de um banco de dados chamado Northwind, usando a clusula FOR ATTACH. Observe que informado o caminho para o arquivo primrio do banco de dados (arquivo .mdf): CREATE DATABASE Archive ON (FILENAME = c:\program files\microsoft sql server\mssql.1\mssql\data\archdat1.mdf) FOR ATTACH; GO Muito bem, sobre anexao e desanexao de arquivos era basicamente isso. No prximo tpico mostrarei como acessar, alterar, excluir e inserir dados nas tabelas de um banco de dados, diretamente atravs da interface do SQL Server Management Studio. DESENVOLVIMENTO EM: ACESSANDO DADOS DAS TABELAS DO BANCO DE DADOS PR-REQUISITOS Conhecimento bsico da interface do SQL Server Management Studio. METODOLOGIA Exemplo prtico de acesso e alterao dos dados das tabelas. Embora no seja muito usual, voc pode acessar, alterar, incluir e excluir registros das tabelas de um banco de dados do SQL Server 2005, usando o SQL Server Management Studio. Eu afirmo que no muito usual porque normalmente os dados so acessados por aplicaes clientes, desenvolvidas em VB.NET, C#, Delphi ou atravs de aplicaes Web, desenvolvidas em ASP, ASP.NET, PHP ou Java. Mas pode haver situaes, onde voc precise acessar os dados de uma ou mais tabelas de um banco de dados, usando o SQL Server Management Studio. Neste tpico, mostrarei, atravs de um exemplo prtico, como ter acesso aos dados, como alter-los, como adicionar e excluir registros. Exemplo prtico: Para acessar registros das tabelas de um banco de dados, incluir novos registros, alterar os registros j existentes e excluir registros, usando o SQL Server Management Studio, siga os passos indicados a seguir: 1. Abra o SQL Server Management Studio e navegue at o banco de dados onde esto as tabelas a serem acessadas. 2. Clique no sinal de + ao lado do nome do banco de dados, para exibir as opes disponvies. 3. Clique no sinal de + ao lado da opo Tables, para exibir a lista de tabelas do banco de dados. 4. Clique com o boto direito do mouse na tabela a ser acessada e, no menu de opes que exibido, clique em Open Table. A tabela ser aberta em modo de edio, semelhante ao modo Folha de dados das tabelas do Access, conforme indicado na Figura 15.12. 5. Esta uma grade normal de edio, como se fosse o modo folha de dados de uma tabela do Access ou, at mais simples, uma planilha do Excel. Na parte de baixo da tela, voc tambm tem os botes de navegao, para ir para o Prximo registro, Registro anterior, Primeiro registro e ltimo registro. Na parte de baixo tem tambm um campo com o nmero do registro atual. Voc pode digitar o nmero de um registro e pressionar Enter, para se deslocar para o respectivo registro. Ou seja, tudo exatamente igual ao modo folha de dados de uma tabela do Microsoft Access. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 Curso Completo0000931 Figura 15.12 Tabela no modo de edio. 6. Para excluir um registro basta clicar na linha do registro, para selecion-lo e depois pressionar Delete. Ser exibida uma mensagem solicitando a confirmao da excluso do registro, conforme indicado na Figura 15.13. Clique em Sim e pronto, o registro foi excludo. Voc pode tambm excluir vrios registros de uma s vez. Para isso basta selecionar com o mouse os registros a serem excludos e pressionar a tecla Delete. Ser exibida uma mensagem para que voc confirme a excluso dos registros. Clique em Sim e pronto, os registros selecionados sero excludos. Figura 15.13 Confirmando a excluso de um registro. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9320000Curso Completo Figura 15.14 Boto para adicionar um novo registro. Em resumo, para editar registros, usando o SQL Server Management Studio, basta clicar com o boto direito do mouse na tabela a ser editada e, no menu de opes que exibido, clicar em Open Table. Feito isso, ser carregada uma interface praticamente idntica ao modo folha de dados do Microsoft Access. DESENVOLVIMENTO EM: USAR A OPO DE GERAO DE SCRIPTS DO SQL SERVER MANAGEMENT STUDIO PR-REQUISITOS Conhecimento bsico da interface do SQL Server Management Studio. METODOLOGIA Exemplo prtico de gerao de scripts, usando o SQL Server Management Studio. Que podemos fazer literalmente qualquer ao do SQL Server 2005 usando comandos T-SQL ns j sabemos. Que a linguagem T-SQL, embora simples, pode tornar-se difcil devido infinidade de comandos e opes disponveis, ns tambm j sabemos. Que a interface grfica facilita, muito, o trabalho com o SQL Server 2005, sabemos tambm. Muito bem, ento para que serve este tpico, se j sabemos todos estes detalhes sobre o T-SQL? Tpico novo para aprender coisas novas. E o objetivo deste tpico mostrar uma funcionalidade bem interessante do SQL Server Management Studio: A gerao de scripts. O SQL Server Management Stu- dio vem com uma srie de opes, que permite a gerao automtica de scripts. Um script nada mais do que uma seqncia de comandos T-SQL, necessrios para realizar uma determinada tarefa, tal como criar um banco de dados ou as tabelas de um banco de dados. O SQL Server Management Studio permite que faamos o caminho inverso, ou seja, a partir dos objetos j existentes, gerar o script que seria necessrio para recriar o referido objeto. Estes scripts podem ser teis, especialmente em situaes de emergncia, onde precisamos recriar, rapidamente, um ou mais objetos. Vamos a um exemplo prtico. Exemplo prtico: Para gerar scripts, usando o SQL Server Management Studio, siga os passos indicados a seguir: 7. Na parte de baixo, ao lado do boto ltimo registro, est disponvel o boto Novo registro, indicado na Figura 15.14. Ao clicar neste boto, ser aberta uma nova linha, em branco, para que voc insira um novo registro na tabela. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 Curso Completo0000933 1. Abra o SQL Server Management Studio. 2. Navegue at a opo Databases e clique no sinal de + ao lado desta opo, para exibir a lista de bancos de dados disponveis. 3. Vamos inicialmente mostrar como gerar um script, o qual contm todos os comandos necessrios para a criao do banco de dados. Por exemplo, clique com o boto direito do mouse no banco de dados AdventureWorks e, no menu de opes que exibido, clique em Script Database as > CREATE To -> New Query Editor Window. Ser aberta uma janela de execuo de comandos T-SQL, com todos os comandos necessrios para criar o banco de dados, exatamente com as opes atualmente definidas para o banco. A seguir coloco uma cpia do script gerado pelo SQL Server Management Studio: ******************************************************************************** USE [master] GO /****** Object: Database [AdventureWorks] Script Date: 07/12/2005 12:30:14 ******/ CREATE DATABASE [AdventureWorks] ON PRIMARY ( NAME = NAdventureWorks_Data, FILENAME = NC:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf , SIZE = 184448KB , MAXSIZE = UNLIMITED, FILEGROWTH = 16384KB ) LOG ON ( NAME = NAdventureWorks_Log, FILENAME = NC:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Log.ldf , SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 16384KB ) COLLATE SQL_Latin1_General_CP1_CI_AS GO EXEC dbo.sp_dbcmptlevel @dbname=NAdventureWorks, @new_cmptlevel=90 GO EXEC [AdventureWorks].[dbo].[sp_fulltext_database] @action = enable GO ALTER DATABASE [AdventureWorks] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [AdventureWorks] SET ANSI_NULLS ON GO ALTER DATABASE [AdventureWorks] SET ANSI_PADDING ON GO ALTER DATABASE [AdventureWorks] SET ANSI_WARNINGS ON GO ALTER DATABASE [AdventureWorks] SET ARITHABORT ON GO ALTER DATABASE [AdventureWorks] SET AUTO_CLOSE OFF GO ALTER DATABASE [AdventureWorks] SET AUTO_CREATE_STATISTICS ON GO ALTER DATABASE [AdventureWorks] SET AUTO_SHRINK OFF GO ALTER DATABASE [AdventureWorks] SET AUTO_UPDATE_STATISTICS ON GO ALTER DATABASE [AdventureWorks] SET CURSOR_CLOSE_ON_COMMIT OFF GO ALTER DATABASE [AdventureWorks] SET CURSOR_DEFAULT GLOBAL GO ALTER DATABASE [AdventureWorks] SET CONCAT_NULL_YIELDS_NULL ON GO ALTER DATABASE [AdventureWorks] SET NUMERIC_ROUNDABORT OFF GO ALTER DATABASE [AdventureWorks] SET QUOTED_IDENTIFIER ON GO ALTER DATABASE [AdventureWorks] SET RECURSIVE_TRIGGERS OFF GO proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9340000Curso Completo ALTER DATABASE [AdventureWorks] SET ENABLE_BROKER GO ALTER DATABASE [AdventureWorks] SET AUTO_UPDATE_STATISTICS_ASYNC OFF GO ALTER DATABASE [AdventureWorks] SET DATE_CORRELATION_OPTIMIZATION OFF GO ALTER DATABASE [AdventureWorks] SET ALLOW_SNAPSHOT_ISOLATION OFF GO ALTER DATABASE [AdventureWorks] SET READ_WRITE GO ALTER DATABASE [AdventureWorks] SET RECOVERY SIMPLE GO ALTER DATABASE [AdventureWorks] SET MULTI_USER GO ALTER DATABASE [AdventureWorks] SET PAGE_VERIFY CHECKSUM GO ALTER DATABASE [AdventureWorks] SET DB_CHAINING OFF GO EXEC [AdventureWorks].sys.sp_addextendedproperty @name=NMS_Description, @value=NAdventureWorks Sample OLTP Database ******************************************************************************** importante salientar que estes comandos so os comandos para recriar o banco de dados to-somente. Os objetos do banco de dados, tais como tabelas, views, stored procedures e as configuraes de segurana, de replicao, diagramas, etc. teriam que ser recriadas. Claro que podemos criar scripts para cada um destes objetos, conforme mostrarei nos prximos passos, para os objetos dos tipos Tabela e View. 4. Clique no sinal de + ao lado da opo Tables, para exibir as tabelas do banco de dados AdventureWorks. 5. Clique com o boto direito do mouse na tabela HumanResources.Employee. No menu de opes que exibido, selecione o comando: Script Table as -> CREATE To -> New Query Editor Window. 6. Ser aberta a janela de execuo de comandos T-SQL, com a lista de comandos necessrios para recriar a tabela HumanResources.Employee, caso necessrio. A seguir apresento a seqncia de comandos que foi gerada: ***************************************************************************** USE [AdventureWorks] GO /****** Object: Table [HumanResources].[Employee] Script Date: 07/12/2005 13:55:42 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [HumanResources].[Employee]( [EmployeeID] [int] IDENTITY(1,1) NOT NULL, [NationalIDNumber] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [ContactID] [int] NOT NULL, [LoginID] [nvarchar](256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [ManagerID] [int] NULL, [Title] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [BirthDate] [datetime] NOT NULL, [MaritalStatus] [nchar](1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [Gender] [nchar](1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [HireDate] [datetime] NOT NULL, [SalariedFlag] [dbo].[Flag] NOT NULL CONSTRAINT [DF_Employee_SalariedFlag] DEFAULT ((1)), [VacationHours] [smallint] NOT NULL CONSTRAINT [DF_Employee_VacationHours] DEFAULT ((0)), proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 Curso Completo0000935 [SickLeaveHours] [smallint] NOT NULL CONSTRAINT [DF_Employee_SickLeaveHours] DEFAULT ((0)), [CurrentFlag] [dbo].[Flag] NOT NULL CONSTRAINT [DF_Employee_CurrentFlag] DEFAULT ((1)), [rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_Employee_rowguid] DEFAULT (newid()), [ModifiedDate] [datetime] NOT NULL CONSTRAINT [DF_Employee_ModifiedDate] DEFAULT (getdate()), CONSTRAINT [PK_Employee_EmployeeID] PRIMARY KEY CLUSTERED ( [EmployeeID] ASC ) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NPrimary key for Employee records. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NEmployeeID GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NUnique national identification number such as a social security number. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NNationalIDNumber GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NIdentifies the employee in the Contact table. Foreign key to Contact.ContactID. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NContactID GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NNetwork login. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NLoginID GO <lc>EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NManager to whom the employee is assigned. Foreign Key to Employee.M ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NManagerID GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NWork title such as Buyer or Sales Representative. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NTitle GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NDate of birth. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NBirthDate GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NM = Married, S = Single ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NMaritalStatus GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NM = Male, F = Female ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NGender GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NEmployee hired on this date. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NHireDate GO proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9360000Curso Completo EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NJob classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NSalariedFlag GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NNumber of available vacation hours. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NVacationHours GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NNumber of available sick leave hours. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NSickLeaveHours GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=N0 = Inactive, 1 = Active ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NCurrentFlag GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=Nrowguid GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NDate and time the record was last updated. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCOLUMN, @level2name=NModifiedDate GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NEmployee information such as salary, department, and title. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NUnique nonclustered index. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NINDEX, @level2name=NAK_Employee_LoginID GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NUnique nonclustered index. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NINDEX, @level2name=NAK_Employee_NationalIDNumber GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NUnique nonclustered index.Used to support replication samples. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NINDEX, @level2name=NAK_Employee_rowguid GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NNonclustered index. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NINDEX, @level2name=NIX_Employee_ManagerID GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NPrimary key (clustered) constraint ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCONSTRAINT, @level2name=NPK_Employee_EmployeeID GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NINSTEAD OF DELETE trigger which keeps Employees from being deleted. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NTRIGGER, @level2name=NdEmployee GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NAFTER UPDATE trigger setting the ModifiedDate column in the Employee table to the current date. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NTRIGGER, @level2name=NuEmployee proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 Curso Completo0000937 GO USE [AdventureWorks] GO ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT [FK_Employee_Contact_ContactID] FOREIGN KEY( [ContactID]) REFERENCES [Person].[Contact] ( [ContactID]) GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NForeign key constraint referencing Contact.ContactID. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCONSTRAINT, @level2name=NFK_Employee_Contact_ContactID GO ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT [FK_Employee_Employee_ManagerID] FOREIGN KEY( [ManagerID]) REFERENCES [HumanResources].[Employee] ( [EmployeeID]) GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NForeign key constraint referencing Employee.ManagerID. ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCONSTRAINT, @level2name=NFK_Employee_Employee_ManagerID GO ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT [CK_Employee_BirthDate] CHECK (([BirthDate]>=1930-01-01' AND [BirthDate]<=dateadd(year,(-18),getdate()))) GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NCheck constraint [BirthDate]>=1930-01-01' AND [BirthDate]<=dateadd(year,(-18),GETDATE()) ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCONSTRAINT, <lc>@level2name=NCK_Employee_BirthDate GO ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT [CK_Employee_Gender] CHECK ((upper([Gender])=F OR upper([Gender])=M)) GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NCheck constraint [Gender]=f OR [Gender]=m OR [Gender]=F OR [Gender]=M ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCONSTRAINT, @level2name=NCK_Employee_Gender GO ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT [CK_Employee_HireDate] CHECK (([HireDate]>=1996-07-01' AND [HireDate]<=dateadd(day,(1),getdate()))) GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NCheck constraint [HireDate]>=1996-07-01' AND [HireDate]<=dateadd(day,(1),GETDATE()) ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCONSTRAINT, @level2name=NCK_Employee_HireDate GO ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT [CK_Employee_MaritalStatus] CHECK ((upper([MaritalStatus])=S OR upper([MaritalStatus])=M)) GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NCheck constraint [MaritalStatus]=s OR [MaritalStatus]=m OR [MaritalStatus]=S OR [MaritalStatus]=M ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCONSTRAINT, @level2name=NCK_Employee_MaritalStatus GO ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT [CK_Employee_SickLeaveHours] CHECK (([SickLeaveHours]>=(0) AND [SickLeaveHours]<=(120))) GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NCheck constraint [SickLeaveHours]>=(0) AND [SickLeaveHours]<=(120) ,@level0type=NSCHEMA, proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9380000Curso Completo @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCONSTRAINT, @level2name=NCK_Employee_SickLeaveHours GO ALTER TABLE [HumanResources].[Employee] WITH CHECK ADD CONSTRAINT [CK_Employee_VacationHours] CHECK (([VacationHours]>=(-40) AND [VacationHours]<=(240))) GO EXEC sys.sp_addextendedproperty @name=NMS_Description, @value=NCheck constraint [VacationHours]>=(-40) AND [VacationHours]<=(240) ,@level0type=NSCHEMA, @level0name=NHumanResources, @level1type=NTABLE, @level1name=NEmployee, @level2type=NCONSTRAINT, @level2name=NCK_Employee_VacationHours ***************************************************************************** Claro que esta uma tabela bem complexa, onde foi definida uma srie de propriedades e opes. A seguir um exemplo de script bem mais simples, gerado a partir da opo CREATE TO, para a tabela Clientes, do banco de dados Northwind: ***************************************************************************** USE [NortwindReport] GO /****** Object: Table [dbo].[Clientes] Script Date: 07/12/2005 13:59:36 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Clientes]( [CdigoDoCliente] [nvarchar](5) COLLATE Latin1_General_CI_AS NOT NULL, [NomeDaEmpresa] [nvarchar](40) COLLATE Latin1_General_CI_AS NOT NULL, [NomeDoContato] [nvarchar](30) COLLATE Latin1_General_CI_AS NULL, [CargoDoContato] [nvarchar](30) COLLATE Latin1_General_CI_AS NULL, [Endereo] [nvarchar](60) COLLATE Latin1_General_CI_AS NULL, [Cidade] [nvarchar](15) COLLATE Latin1_General_CI_AS NULL, [Regio] [nvarchar](15) COLLATE Latin1_General_CI_AS NULL, [CEP] [nvarchar](10) COLLATE Latin1_General_CI_AS NULL, [Pas] [nvarchar](15) COLLATE Latin1_General_CI_AS NULL, [Telefone] [nvarchar](24) COLLATE Latin1_General_CI_AS NULL, [Fax] [nvarchar](24) COLLATE Latin1_General_CI_AS NULL, CONSTRAINT [PK_Clientes] PRIMARY KEY CLUSTERED ( [CdigoDoCliente] ASC ) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF ***************************************************************************** O recurso de gerao de scripts um recurso bastante til, que o administrador deve conhecer. DESENVOLVIMENTO EM: EDIES DO SQL SERVER 2005 PR-REQUISITOS Conhecimento bsico dos objetos que compem um banco de dados do SQL Server. METODOLOGIA Descrio e comparao entre as Edies do SQL Server 2005. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 Curso Completo0000939 INTRODUO O SQL Server 2005, a exemplo do que ocorria com as verses anteriores do SQL Server, fornecido em diferentes edies. Desde edies bastante limitadas, tais como o SQL Server 2005 Express Edition at edies peso-pasado, tais como o SQL Server 2005 Enterprise Edition. Existem diferenas de funcionalidades e de limites, em termos de desempenho e uso de recursos de hardware, entre as diferentes edies. Neste tpico apresentarei estas diferenas, para que voc possa decidir qual edio do SQL Server 2005 a mais adequada, para uso na sua empresa. Neste tpico, o qual encerra o captulo e o livro, farei uma breve descrio de cada uma das edies, bem como um estudo comparativo entre as edies. SQL SERVER 2005 ENTERPRISE EDITION (32-BITS E 64-BITS) Esta, sem dvida, a edio peso-pesado, ou seja, a mais completa, a que tem mais funcionalidades. Esta, provavelmente, a edio a ser usada para aplicaes de grande porte, com um grande nmero de usurios e em ambientes de elevada segurana. O SQL Server 2005 Enterprise Edition recomendado para uso em aplicaes de grande porte, onde temos um grande nmero de usurios conectados, fazendo alteraes, adies ou excluses de registro. O tpico ambiente chamado de OLTP Online Transaction Processing. Um exemplo tpico deste tipo de aplicao um sistema de reserva de passagens de uma companhia area, o qual utilizado por milhares de atendentes, simultaneamente. O Enterprise Edition tambm recomendado para o uso em solues que envolvem anlises e consultas complexas, devido necessidade de elevado volume de processamento e clculos, neste tipo de aplicao. Esta edio suporta recursos importantes para garantir a disponibilidade do banco de dados, tais como os recursos de failover clustering e database mirroring. Esta edio esta disponvel em verses de 32 e de 64 bits. SQL SERVER 2005 STANDARD EDITION (32-BITS E 64-BITS) Esta uma verso mais light, em relao Enterprise Edition e a edio indicada para pequenas e mdias empresas. Por exemplo, se voc tem um banco de dados para cadastro de clientes e acompanhamento de pedidos, banco de dados este que ser utilizado por 100 usurios da sua empresa, certamente o SQL Server 2005 Standard Edition, dar conta deste trabalho, com folga. Ele tambm inclui funcionalidades necessrias para a implementao de e-comerce, data warehousing e para ambientes OLTP com um nmero pequeno ou mdio de usurios. Esta edio est disponvel em verses de 32 e de 64 bits. SQL SERVER 2005 WORKGROUP EDITION (SOMENTE EM 32 BITS) Esta uma edio ainda mais light, em comparao com o SQL Server 2005 Enterprise Edition e o SQL Server 2005 Standard Edition. Ele indicado para aplicaes tpicas de gerenciamento de dados, para pequenas organizaes, com um nmero limitado de usurios. Ela tambm indicada para aplicaes de uma intranet interna da empresa, como suporte ao banco de dados de um servidor Web, para uso departamental ou para uso por filiais da empresa, com um nmero reduzido de usurios. Esta edio inclui as funcionalidades principais do SQL Server 2005 e pode, quando necessrio, sofrer um upgrade para as edies Standard Edition ou Enterprise Edition. Est disponvel somente na verso em 32 bits. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9400000Curso Completo SQL SERVER 2005 DEVELOPER EDITION (32-BITS E 64-BITS) Esta uma edio para testes ou para ser utilizada em um ambiente de desenvolvimeno. Ela apresenta todas as funcionalidades do SQL Server 2005 Enterprise Edition, porm no pode ser colocada em um ambiente de produo. A licena de uso desta edio para teste e desenvolvimento de aplicaes. Uma vez criado o banco de dados e demais objetos, eles devem ser movidos para uma instncia do SQL Server 2005 Enterprise, Workgroup Edition ou Standard Edition, para serem colocados em produo. Se necessrio, o SQL Server 2005 Developer Edition pode sofrer um upgrade para o SQL Server 2005 Enterprise Edition, sem problemas. Est disponvel em verses de 32 bits e 64 bits. SQL SERVER 2005 EXPRESS EDITION (DISPONVEL SOMENTE EM 32-BITS) Esta edio gratuita e pode ser baixada diretamente do site da Microsoft, no seguinte endereo: http://www.microsoft.com/sql/2005/productinfo/ctp.mspx Esta edio pode ser utilizada para criar aplicaes baseadas em bancos de dados. Ela integrada com o Visual Studio 2005, o que facilita bastante o desenvolvimento. Por exemplo, ao invs de criar aplicaes baseadas no Access, voc pode cri-las baseadas no SQL Server 2005 Express Edition, o qual bem mais confivel, robusto e seguro do que o Microsoft Access. Esta edio recomendada para o uso com aplicaes que precisam de um banco de dados no cliente, para armazenar informaes localmente, ou at mesmo para banco de dados no servidor, mas para um nmero pequeno de usurios e acessos simultneos. COMPARAO ENTRE AS VERSES A seguir apresento algumas tabelas comparativas entre os recursos das diferentes edies. Estas tabelas, sempre atualizadas, podem ser acessadas diretamente no site da Microsoft, no seguinte endereo: http://www.microsoft.com/sql/2005/productinfo/sql2005features.mspx Caracterstica Express Workgroup Standard Enterprise Nmero de CPUs 1 2 4 Sem limites RAM 1 GB 3 GB Sem Limites Sem limites Suporte 64-bits Sim Sim Tamanho de banco de dados 4 GB Sem Limites Sem Limites Sem limites Particionamento Sim Parallel Index Operations Sim Tabela 15.1 Comparao entre Escalabilidade e Performance. Caracterstica/Edio Express Workgroup Standard Enterprise Database Mirroring Sim Sim Failover Clustering Sim Sim Backup Log-shipping Sim Sim Sim Tabela 15.2 Disponibilidade. continuao proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! CAPTULO 15 EXEMPLOS PRTICOS E MAIS NOVIDADES DO SQL SERVER 2005 Curso Completo0000941 N O T A No endereo a seguir, voc encontra diversas outras tabelas, comparando uma srie de caractersticas do SQL Server 2005, em relao s suas diferentes edies. Esta uma informao importante na hora de definir qual a melhor edio do SQL Server 2005 a ser utilizada na sua empresa: http://www.microsoft.com/sql/2005/productinfo/sql2005features.mspx CONCLUSO Neste captulo, que encerra o livro, apresentei mais alguns itens e novidades do SQL Server 2005. Inicialmente voc aprendeu sobre a criao e uso de um ou mais snapshots de um banco de dados. Conforme destaquei neste tpico, esta funcionalidade est disponvel somente no SQL Server 2005 Enterprise Edition. Em seguida abordei sobre a criao de diagramas de um banco de dados. Os diagramas nos permitem ter uma viso geral da estrutura do banco de dados: tabelas, chaves primrias, chaves estrangeiras e relacionamentos. uma excelente ferramenta tambm para documentao da estrutura do banco de dados. Na seqncia apresentei o passo-a-passo sobre como realizar uma srie de tarefas teis, bastante comuns ao dia-a-dia do DBA: Como transferir um banco de dados de uma instncia para outra. Como trabalhar com tabelas, diretamente no SQL Server Management Studio. Usar a opo de gerao de scripts do SQL Server Management Studio. Caracterstica/Edio Express Workgroup Standard Enterprise Online System Changes Sim Sim Sim Sim Online Indexing Sim Online Page and File Restore Sim Fast Redo Sim Caracterstica/Edio Express Workgroup Standard Enterprise Auto Tuning Sim Sim Sim Sim Express Manager Sim Sim Sim Sim Management Studio Sim Sim Sim Database Tuning Advisor Sim Sim Sim Serviceability Enhancements Sim Sim Sim Sim Full Text Search Sim Sim Sim SQL Agent Job Scheduling Service Sim Sim Sim Tabela 15.3 Gerenciamento e Administrao. continuao proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO PARTE 3: DESENVOLVIMENTO 9420000Curso Completo Para encerrar o captulo apresentei uma descrio detalhada das diferentes edies do SQL Server 2005. Esto disponveis as seguintes edies: SQL Server 2005 Enterprise Edition (32-bits e 64-bits) SQL Server 2005 Standard Edition (32-bits e 64-bits) SQL Server 2005 Workgroup Edition (somente 32-bits) SQL Server 2005 Developer Edition (32-bits e 64-bits) SQL Server 2005 Express Edition (somente 32-bits) Muito bem, amigo leitor. Com isso encerramos mais um trabalho. Espero que este livro tenha sido til e tenha ajudado bastante no seu aprendizado. Para dvidas sobre os exemplos do livro, para enviar suas crticas, elogios e sugestes e para relatar eventuais erros contidos no livro, entre em contato atravs do e-mail webmaster@juliobattisti.com.br Acesse tambm, seguidamente, o site http://www.juliobattisti.com.br, no qual publicarei artigos e tutoriais sobre o SQL Server 2005, abordando tpicos no contidos neste livro ou tpicos que complementam a abordagem contida aqui no livro. No site voc encontrar tambm um frum de discusso sobre o SQL Server 2005, no seguinte endereo: http://www.juliobattisti.com.br/forum. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! Anexo REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9440000Curso Completo INTRODUO Neste anexo, apresentaremos um guia de referncia rpida para os principais comandos da linguagem T-SQL. Apresentarei alguns dos exemplos colocados nos demais captulos do livro. O objetivo pr os diversos exemplos em um nico local para que o leitor possa utilizar como uma referncia rpida. Em inmeros exemplos deste livro, utilizei comandos da linguagem T-SQL. Em alguns, utilizamos estes comandos na janela de execuo de comandos T-SQL. Nesta janela, os comandos so digitados utilizando a sintaxe da linguagem T-SQL e depois executados. Mas tambm executamos uma srie de comandos utilizando o SQL Server Management Studio. Cada vez que utilizamos um assistente ou uma janela de propriedades, estamos passando informaes para o servidor SQL Server. O servidor recebe as informaes passadas pela interface grfica e monta um comando T-SQL para execuo da respectiva tarefa. Em resumo, o SQL Server Management Studio , simplesmente, uma interface grfica que facilita a criao e execuo de comandos T-SQL. O mais importante estarmos cientes de que a grande maioria das aes realizadas, em um servidor SQL Server 2005, executada atravs de um ou mais comandos T-SQL. Estes comandos podem ter sido digitados e executados diretamente na janela de execuo de comandos T-SQL, ou montados com auxlio do SQL Server Management Studio. Por isso importante conhecermos os principais comandos T-SQL e a sintaxe destes comandos. Neste anexo, veremos a sintaxe dos principais comandos T-SQL, bem como exemplos de utilizao destes comandos. Para acompanhar os exemplos, aqui apresentados, o amigo leitor dever utilizar a janela de execuo de comandos T-sQL. Utilizarei, na maioria dos exemplos, o Banco de Dados Northwind. Este Banco de Dados, no instalado por padro com o SQL Server 2005. No captulo sobre o DTS Import/Export Wizard, eu mostrei como importar este banco de dados de uma instncia do SQL Server 2000 para uma instncia do SQL Server 2005. Apresentarei dois grupos distintos de comandos: Para seleo, atualizao, excluso e insero de dados: Ao estudarmos este grupo de comandos, veremos exemplos de utilizao dos comandos SELECT, INSERT, UPDATE e DELETE. Veremos as diversas clusulas e opes destes comandos. Veremos como utilizar a clusula JOIN para criar views que retornam dados de duas ou mais tabelas. Tambm trataremos de clusulas como WHERE, IN, LIKE, etc. Para criao e manipulao de objetos de um Banco de Dados: Neste grupo de comandos veremos como criar e manipular objetos do Banco de Dados, tais como: Bancos de Dados, tabelas, views, stored procedures, etc. Alguns dos comandos que veremos neste anexo exigem que voc tenha permisso de administrador, no SQL Server 2005, para execut-los. Se a instncia do SQL Server 2005, que voc est utilizando, est no modo de segurana Windows Authentication, voc dever fazer o logon com uma conta de administrador do Windows. Esta conta, automaticamente, possuir permisses de administrador no SQL Server 2005. Se a instncia do SQL Server 2005, que voc est utilizando, est no modo de segurana Windows and SQL Server Authentication, voc pode utilizar tanto uma conta de administrador do Windows, quanto a conta sa ou qualquer outra conta que pertena role sysadmin. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000945 N O T A N O T A Voc tambm pode fazer o logon com uma conta de usurio, no sistema operacional, e depois fazer o logon com a conta sa no SQL Server 2005. Para maiores informaes sobre segurana no SQL Server 2005, consulte o Captulo 6. NOES BSICAS DA LINGUAGEM SQL COMANDOS PARA CONSULTAR DADOS Como o prprio nome sugere Microsoft SQL Server 2005 a linguagem utilizada pelo Microsoft SQL Server 2005 o T-SQL (Transaction Structured Query Language). O T-SQL utilizado para uma srie de operaes, como por exemplo: Selecionar um conjunto de registros com base em um ou mais critrios de pesquisa. Alterar informaes no Banco de Dados. Inserir informaes no Banco de Dados. Criar Bancos de Dados. Criar novas tabelas. Configurar opes de segurana. Excluir registros, etc. Embora a maioria destas operaes possa ser feita atravs da interface grfica do Microsoft SQL Server 2005, existem situaes em que precisamos conhecer e utilizar a linguagem T-SQL. Nos captulos deste livro, para a criao de store procedures, triggers e outros recursos avanados, utilizamos a linguagem T-SQL. Neste anexo, apresentaremos uma referncia para os principais comandos da linguagem T-SQL. Aprenderemos os comandos para manipulao de dados consultar, inserir, alterar e excluir. Quando for utilizada a sigla SQL, porque fao referncia ao padro SQL de uma maneira genrica. Quando for utilizada a sigla T-SQL estarei me referindo implementao da linguagem SQL feita pela Microsoft no SQL Server 2005. INTRODUO O SQL foi desenvolvido para ser uma linguagem padro para operaes em Banco de Dados. A linguagem SQL foi elaborada para ser independente de hardware ou software. Ao usar SQL, voc no precisa saber a respeito do software de Banco de Dados ou do hardware envolvido em uma operao. Tudo o que voc precisa conhecer o mtodo (instruo) SQL padro para solicitar informaes, mtodo este que, obrigatoriamente, o mesmo em todos os sistemas que utilizam o SQL (na verdade deveria ser o proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9460000Curso Completo N O T A mesmo mas no . Na prtica existem diferenas e inconsistncias entre os padres SQL utilizados em diferentes bancos de dados, tais como o SQL Server, ORACLE, DB2 e outros). Existem pequenas diferenas nas implementaes do SQL de diferentes fabricantes. Desta forma algumas rotinas escritas utilizando, por exemplo, o SQL Plus do Oracle podem no rodar, sem as devidas adaptaes, no Microsoft SQL Server e vice-versa. Uma instruo SQL descreve o conjunto de dados que voc deseja recuperar (quais campos, de quais tabelas, critrios de filtragem, classificao, expresses calculadas, etc.). Todas as instrues T-SQL so conduzidas como um nico comando que contm uma descrio completa da informao exigida. Ao escrever uma instruo T-SQL, voc no deve se preocupar em como os dados so recuperados, mas somente com o contedo do conjunto de dados. Esse o principal benefcio do mtodo T-SQL. Lembre-se que o SQL um padro genrico para expresses de consulta em Banco de Dados. Embora a maior parte das verses do SQL compartilhe elementos bsicos, elas no so idnticas. O Access SQL usa algumas palavras-chave que voc no encontra em outras verses do SQL. Tambm existem pequenas diferenas entre o Microsoft Access e o Microsoft SQL Server. Veremos atravs de exemplos a utilizao das principais palavras-chave do T-SQL para a construo de expresses SQL para pesquisa em Banco de Dados. A INSTRUO SELECT Esta, sem dvida, a instruo T-SQL mais importante; no existe pesquisa que no utilize esta instruo. Vamos conhec-la em detalhes. A instruo SELECT utilizada para especificar quais campos de quais tabelas faro parte da consulta, quais os critrios de pesquisa que sero utilizados, qual a ordem de classificao, qual o relacionamento entre as tabelas e assim por diante. A sintaxe simplificada da instruo conforme indicado abaixo: SELECT campo1, campo2, campo3 FROM nome_da_tabela [WHERE condio ] [GROUP BY nome_do_campo ] [HAVING ... ] ORDER BY... ] Na Tabela A.1 temos uma descrio destes elementos: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000947 N O T A Vamos analisar alguns exemplos prticos de utilizao da linguagem SQL. Para os exemplos deste anexo vou utilizar o Banco de Dados Nortwhind. Este Banco de Dados est com os nomes de tabelas e nomes de campos em ingls. Utilizarei os nomes em ingls nos exemplos deste anexo. Voc pode utilizar a janela de execuo de comandos T-SQL, conforme j descrito nos captulos do livro, para executar e testar os exemplos apresentados aqui. Para que possamos executar uma instruo SELECT em uma ou mais tabelas de um Banco de Dados, na janela de execuo de comandos T-SQL, o Banco de Dados onde esto as tabelas deve ser o banco de dados atual. Para tornar um banco de dados o Banco de Dados atual, utilizamos o comando USE nome_banco_de_dados. Por exemplo, para tornar o Banco de Dados Northwind o Banco de Dados atual, utilizamos o seguinte comando: USE Northwind Agora alguns exemplos prticos. Exemplo 1: Criar uma instruo SQL que retorne os campos OrderID, OrderDate, Freight e ShipCountry da tabela Orders. SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry, Orders.Freight FROM Orders Observe que os nomes dos campos esto separados por vrgula, e alm disso estamos utilizando o nome completo, isto : Nome_da_tabela.Nome_do_campo. Tambm poderamos utilizar o comando, sem o nome da tabela, antes do nome do campo, conforme indicado no seguinte comando: SELECT OrderID, OrderDate, ShipCountry,Freight FROM Orders Elemento Descrio campo1, campo2, campon Nome dos campos a serem retornados a partir de uma ou mais tabelas. nome_da_tabela Nome da tabela a partir da qual os dados devem ser recuperados. WHERE Permite que sejam especificados critrios de pesquisa. GROUP BY Podemos agrupar os resultados em torno de um ou mais campos de dados. Por exemplo, em um relatrio de vendas anuais, posso ter os resultados agrupados por ms, com a soma das vendas do ms logo aps a listagem de vendas daquele ms. HAVING Especifica critrios para serem utilizados juntamente com Group By. Quando utilizamos Group By, no podemos utilizar a clusula WHERE para especificar critrios, ao invs disso devemos utilizar a clusula HAVING. ORDER BY Podemos ordenar os resultados obtidos com base em um ou mais campos de dados. Por exemplo, podemos ordenar uma listagem de vendas em ordem alfabtica do nome do cliente ou do nome do vendedor. Tabela A.1 Os principais elementos da instruo SELECT. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9480000Curso Completo N O T A N O T A Somente obrigatria a utilizao do nome da tabela antes do nome do campo quando o mesmo campo existir em duas ou mais tabelas que fazem parte da instruo SELECT. Por exemplo, imagine que estejamos escrevendo uma instruo T-SQL para criar uma listagem com o cdigo e o nome do cliente, bem como todos os pedidos efetuados pelo cliente. Acontece que o cdigo do cliente, no nosso exemplo, existe nas duas tabelas: Customers e Orders. Neste caso, devemos especificar o nome da tabela, antes do nome do campo. Exemplo 2: Alterar a instruo SQL anterior para que os registros sejam classificados em ordem crescente pelo valor do campo Freight. Para classificar a listagem obtida, utilizamos uma clusula ORDER BY Nome_do_campo. SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders ORDER BY Freight Observe a utilizao da clusula ORDER BY Freight para classificar os registros em ordem crescente do campo Freight (frete). A classificao em ordem crescente a padro. Quando formos classificar em ordem decrescente, precisamos especificar a palavra DESC, conforme indicado a seguir: SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders ORDER BY Freight DESC Exemplo 3: Agora vamos comear a inserir condies. Muitas vezes as condies so chamadas de filtro. Uma vez estabelecida uma condio, somente os registros que atendem a condio especificada sero retornados. Desta forma a condio atua como se fosse um filtro. Neste exemplo, vamos alterar a instruo SQL anterior para que sejam exibidos somente os pedidos cujo campo ShipCountry seja igual a Brazil. SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders WHERE ShipCountry=Brazil ORDER BY Freight Estou utilizando Brazil com z porque os dados do Banco de Dados Northwind esto em ingls. Observe a utilizao da clusula WHERE para filtrar somente os pedidos cujo pas (campo ShipCountry) seja Brazil. Como o campo ShipCountry um campo do tipo texto, o valor do critrio (Brazil) tem que vir entre apstrofes. Vamos trabalhar um pouco mais com a clusula WHERE. Exemplo 4: Altere a instruo SQL anterior para que sejam exibidos somente os pedidos para o Brasil ou Alemanha. SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders WHERE Orders.ShipCountry=Brazil OR Orders.ShipCountry=Alemanha ORDER BY Freight proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000949 Observe a utilizao da clusula OR ligando os dois critrios. Lembre que esta clusula retorna um registro se o campo ShipCountry atender um dos dois critrios, isto , se for Brasil ou se for Alemanha, o registro ser selecionado, que exatamente o que desejamos, ou seja, todos os pedidos para o Brasil ou para a Alemanha. Exemplo 5: Altere a instruo SQL anterior, retirando o critrio para o campo ShipCountry. Adicione um critrio para o campo OrderID com valor maior do que 10500, retire a classificao do campo Freight e classifique pelo campo OrderID. SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders WHERE OrderID > 10500 ORDER BY OrderID Observe a clusula WHERE utilizando o operador de comparao maior do que ( > ) e a classificao atravs da clusula ORDER BY no campo OrderID. Na Tabela A.2 temos uma relao com os principais operadores de comparao. Podemos ver, atravs dos exemplos, que a linguagem SQL no to difcil como pode parecer primeira vista. Observe que a sintaxe da linguagem bastante intuitiva e orientada extrao de dados atravs das consultas. Vamos continuar analisando alguns exemplos de aplicao da linguagem SQL com a utilizao de recursos mais avanados. Exemplo 6: Alterar a instruo SQL anterior, e adicionar um critrio de tal maneira que somente sejam exibidos os pedidos para o ano de 1997. Tirar o critrio do campo OrderID. SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders WHERE Year([OrderDate])=1997 ORDER BY OrderID Operador Descrio = Igual <> Diferente != Diferente > Maior do que < Menor do que >= Maior ou igual <= Menor ou igual !> No maior do que !< No menor do que Tabela A.2 Operadores de comparao. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9500000Curso Completo Observe a utilizao da funo Year([Nome_do_campo]), para extrairmos apenas o ano do campo OrderDate e especificarmos como critrio o Ano=1997. Tambm a clusula ORDER BY foi mantida, classificando a listagem em ordem crescente pelo nmero do pedido. A utilizao de funes junto com os comandos T-SQL nos fornece inmeras possibilidades de refinamento em nossas consultas. Exemplo 7: Alterar a instruo SQL anterior, para que sejam exibidos somente os pedidos no perodo de 01/01/1997 at 31/07/1997 e que tenham ShipCountry=Brazil, Argentina, Alemanha ou Canad. SELECT OrderID, OrderDate, ShipCountry, Freight FROM Orders WHERE OrderDate Between 1/1/97 And 7/31/97 AND ShipCountry In (Brazil,Argentina,Alemanha,Canad) ORDER BY OrderID Observe a utilizao de vrios critrios em diferentes campos. Colocamos critrios nos campos OrderDate e ShipCountry. Os critrios de dois ou mais campos so ligados atravs do operador AND, indicando que um registro deve atender ambos os critrios para ser selecionado. Tambm temos a utilizao dos operadores BETWEEN (Entre) para selecionar as datas dentro de um determinado intervalo, e do operador IN (Em), para selecionar o campo ShipCountry que seja igual a um dos valores apresentados na lista. Observe tambm que os valores de data vm delimitados por apstrofes (). O operador IN pode ser utilizado para definirmos uma srie de valores aceitveis em um determinado campo. No exemplo temos a seguinte utilizao da clusula IN: ShipCountry In (Brazil,Argentina,Alemanha,Canad) Neste caso, definimos que o campo ShipCountry pode assumir um dos valores definidos na lista de valores, ou seja: Brazil, Argentina, Alemanha ou Canad. Somente sero retornados os pedidos para estes pases. Utilizamos o operador IN ao invs de uma srie de operadores OR. Embora o efeito seja o mesmo, o comando ficaria maior e mais difcil de interpretar. Por exemplo, ao invs do operador IN anterior, poderamos utilizar a seguinte seqncia de operadores OR: WHERE OrderDate Between 1/1/97 And 7/31/97 AND (ShipCountry=Brazil OR ShipCountry=Argentina OR ShipCountry=Alemanha OR ShipCountry=Canad) Utilizamos os parnteses para garantir que a srie de testes com o operador OR seja executada como um todo e o resultado desta avaliao seja utilizado como segundo parmetro para o operador AND. Exemplo 8: Criar uma instruo T-SQL que retorne os campos OrderID, OrderDate, OrderDate, Freight e ShipCountry da tabela Orders. Criar uma coluna adicional que calcula o nmero de dias entre os campos ShippedDate e OrderDate. Chamar esta coluna de Dias_Ped_Entr. Manter os critrios estabelecidos no exemplo anterior. SELECT OrderID, OrderDate, ShippedDate, ShipCountry, Freight, ShippedDate-OrderDate AS Dias_Ped_Entr FROM Orders WHERE (OrderDate Between 1/1/97 And 7/31/97) AND (ShipCountry In (Brasil,Argentina,Alemanha,Canad)) ORDER BY Orders.OrderID proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000951 Veja que a coluna calculada ShippedDate - OrderDate est junto com a listagem dos campos no incio da instruo SELECT. Alm disso foi utilizada a palavra AS para atribuir um nome (apelido) para esta coluna calculada. Este nome o que ser utilizado para fazer referncia coluna, em uma pgina ASP ou um programa desenvolvido em Visual Basic, por exemplo. Desta forma, para criar uma coluna calculada a partir de outras colunas, basta colocar a expresso de clculo e utilizar a clusula AS para atribuir um nome coluna calculada. Voc tambm pode classificar a listagem em ordem crescente ou decrescente de um campo calculado. Por exemplo, se voc quisesse classificar a listagem do item anterior, em ordem crescente, do nmero de dias entre a Data de envio e a Data do pedido, bastaria utilizar a seguinte instruo SQL: SELECT OrderID, OrderDate, ShippedDate, ShipCountry, Freight, ShippedDate-OrderDate AS Dias_Ped_Entr FROM Orders WHERE (OrderDate Between 1/1/97 And 8/31/97) AND (ShipCountry In (Brasil,Argentina,Alemanha,Canad)) ORDER BY DataDeEntrega-OrderDate O OPERADOR LIKE Utilizamos o operador LIKE para fazer pesquisas aproximadas ou por parte do contedo de um campo. Por exemplo para pesquisar todos os pedidos em que o nome do cliente contenha a palavra Silva em qualquer parte do nome. Esta uma pesquisa aproximada, pois retornar os pedidos para Jos da Silva, Paulo Costa e Silva, Antnio da Silva, Silvano Farias e assim por diante. Observe que o nome Silvano contm a string Silva e por isso tambm retornado. Por exemplo, para retornar somente os clientes em que o nome se inicia com a letra J, podemos utilizar o seguinte comando: SELECT * FROM Customers WHERE (ContactName LIKE J%) ORDER BY ContactName O smbolo % significa qualquer coisa, ou seja, o campo ContactName deve se iniciar com a letra J, no importando o que venha depois. Na Tabela A.3, temos uma relao com os caracteres especiais que podem ser utilizados com o operador LIKE. Operador Significa % Qualquer string de zero ou mais caracteres. _ Qualquer caracter simples. [ ] Qualquer caracter simples, dentro de uma faixa. Por exemplo, para pesquisar somente os clientes em que a primeira letra do nome esteja na faixa de A at L, utilizamos o seguinte critrio: WHERE ContactName LIKE [A-L]%. [ ^ ] Qualquer caracter simples, que no esteja dentro de uma faixa. Por exemplo, para pesquisar somente os clientes em que a primeira letra do nome no esteja na faixa de A at L, utilizamos o seguinte critrio: WHERE ContactName LIKE [^A-L]%. Tabela A.3 Caracteres especiais do operador LIKE. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9520000Curso Completo N O T A N O T A Agora alguns exemplos de utilizao. Exemplo 9: Alterar a instruo SQL do Exemplo 8, eliminando os critrios para a OrderDate e para o ShipCountry. Colocar um novo critrio para ShipCountry, onde sejam exibidos apenas os pedidos em que o campo ShipCountry tem a primeira letra na faixa de A at M. Utilize o operador LIKE. SELECT OrderID, OrderDate, ShippedDate, ShipCountry, Freight, ShippedDate-OrderDate AS Dias_Ped_Entr FROM Orders WHERE ShipCountry LIKE [A-M]% ORDER BY ShipCountry Observe a utilizao do operador LIKE no critrio de pesquisa para esta consulta. Nunca demais salientar que a utilizao das instrues T-SQL, juntamente com as funes e operadores como o LIKE, nos fornece um amplo conjunto de possibilidades. O caracter % utilizado como um curinga. Por exemplo, se especificarmos o seguinte critrio: WHERE NomeDoCLiente LIKE Joo% sero retornados todos os registros para clientes cujo nome se inicia com Joo. O caracter curinga % significa, em termos simples, qualquer coisa, ou seja, o critrio especifica que o nome inicie com Joo, no importando (qualquer coisa) o que vier depois. Aqui cabe um aviso importante para os usurios do Microsoft Access. No Microsoft Access, o caracter curinga o *, j no Microsoft SQL Server 2005, utilizamos como caracter curinga o %, o qual tambm utilizado na construo de pginas ASP. Para maiores informaes sobre a tecnologia ASP Active Server Pages, consulte o e-book Criando Sites Dinmicos com ASP 3.0, 732 pginas, de minha autoria. Maiores informaes em http://www.juliobattisti.com.br/ebooksdoautor At agora trabalhamos com exemplos de instrues que selecionam registros de uma nica tabela. Porm bastante comum criarmos instrues SQL baseadas em duas ou mais tabelas. Quando criamos instrues SQL que buscam dados em duas ou mais tabelas, dizemos que est sendo feito um join entre as duas tabelas. Normalmente este join (ou ligao) feito atravs de um campo comum s duas tabelas. Por exemplo, OrderID na tabela Orders e OrderID na tabela Order Details. Outro exemplo, CustomerID na tabela Orders e CustomerID na tabela Customers. Pode acontecer de termos consultas que trabalham com trs ou mais tabelas, e neste caso teremos diversos joins. O nmero de joins sempre igual ao nmero de tabelas menos um. Por exemplo, se a nossa consulta acessar dados de quatro tabelas, teremos trs joins. Agora passaremos e explorar na prtica, atravs de exemplos, a construo de instrues SQL que trabalham com duas ou mais tabelas. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000953 Exemplo 10: Criar uma instruo SQL que selecione os campos relacionados a seguir. OrderID da tabela Orders. OrderDate da tabela Orders. ShipCountry da tabela Orders. Freight da tabela Orders. ProductID da tabela Order Details. UnitPrice da tabela Order Details. Quantity da tabela Order Details. Alm disso, as tabelas Orders e Order Details esto relacionadas pelo campo OrderID, atravs de um relacionamento do tipo Um para Vrios. Classificar a listagem em ordem crescente do nmero do pedido. Para resolver este exemplo podemos utilizar a seguinte instruo SQL: SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry, Orders.Freight, [Order Details].[ProductID], [Order Details].[UnitPrice], [Order Details].[Quantity] FROM Orders INNER JOIN [Order Details] ON Orders.OrderID = [Order Details].[OrderID] ORDER BY Orders.OrderID Primeiro, devemos observar que, pelo fato de estarmos tratando com dados de duas tabelas, utilizamos a nomenclatura completa, isto , [Nome_da_tabela].[Nome_do_campo]. Observe a utilizao da clusula INNER JOIN, ligando as tabelas Orders e [Order Details], atravs do campo OrderID, conforme especificado na clusula ON, onde temos o seguinte: ON Orders.OrderID = [Order Details].OrderID Observe que esta listagem ir trazer vrios registros para cada pedido, tantos quantos forem os itens de cada pedido, conforme indicado na listagem parcial a seguir: OrderID OrderDate ShipCountry Freight ProductID UnitPrice 10248 1996-07-04 France 32.3800 11 14.0000 10248 1996-07-04 France 32.3800 42 9.8000 10248 1996-07-04 France 32.3800 72 34.8000 10249 1996-07-05 Germany 11.6100 14 18.6000 10249 1996-07-05 Germany 11.6100 51 42.4000 10250 1996-07-08 Brazil 65.8300 41 7.7000 Mas, se ao invs do ProductID, ns quisssemos que fosse exibida a descrio do produto? Em primeiro lugar, esta informao encontra-se na tabela Products; logo, teremos que adicionar a tabela Products nossa consulta, a qual ir se ligar tabela Order Details atravs do campo ProductID, de forma que teremos mais um join. Para trs tabelas teremos dois joins. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9540000Curso Completo Aps adicionar a tabela Products e substituir o campo ProductID pelo campo ProductName, a nossa instruo SQL deve ficar conforme indicado no seguinte exemplo: SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry, Orders.Freight, Products.ProductName, [Order Details].[UnitPrice], [Order Details].[Quantity] FROM Products INNER JOIN (Orders INNER JOIN [Order Details] ON Orders.OrderID = [Order Details].[OrderID]) ON Products.ProductID = [Order Details].[ProductID] ORDER BY Orders.OrderID Observe que, neste caso, temos um INNER JOIN dentro do outro. Dentro do parnteses feita a ligao entre as tabelas Orders e Order Details, atravs do campo OrderID, e externamente feita a ligao entre as tabelas Products e Order Details, atravs do campo ProductID. Podemos utilizar diversos nveis de INNER JOIN, embora esta no seja uma prtica recomendada, pois, se aumentarmos muito os nveis de INNER JOIN, podemos ter, como resultado, pesquisas mais lentas em conseqncia do aumento da complexidade das consultas. At trs ou quatro nveis considerado normal, mas acima disso preciso repensar a maneira de construir a consulta. Vamos a um exemplo em que utilizamos join, uma clusula WHERE e o operador LIKE. Exemplo 11: Alterar a instruo SQL do item anterior para que somente sejam exibidos os pedidos para os produtos cujo campo ProductName inicie com uma letra na faixa de A at J. Tirar a classificao do campo OrderID e classificar em ordem crescente do campo ProductName. SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipCountry, Orders.Freight, Products.ProductName, [Order Details].[UnitPrice], [Order Details].[Quantity] FROM Products INNER JOIN (Orders INNER JOIN [Order Details] ON Orders.OrderID = [Order Details].[OrderID]) ON Products.ProductID = [Order Details].[ProductID] WHERE (Products.ProductName LIKE [A-J]%) ORDER BY Products.ProductName Observe, alm dos dois INNER JOIN, a utilizao da clusula WHERE em conjunto com operador LIKE para especificar o critrio desejado. At este momento apresentei exemplos de instrues SQL que executam consultas no Banco de Dados. Especificamos quais campos sero exibidos, critrios de filtragem para estes campos e uma ordem de classificao. A partir de agora, aprenderemos a utilizar comandos T-SQL para a construo de outros tipos de instrues SQL, as quais realizam alteraes, incluses e excluses em tabelas do Banco de Dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000955 NOES BSICAS DA LINGUAGEM T-SQL COMANDOS PARA ALTERAR, MODIFICAR E EXCLUIR DADOS ATUALIZANDO DADOS A INSTRUO UPDATE A instruo UPDATE utilizada para alterar registros em uma ou mais tabelas de um Banco de Dados. Poderamos, por exemplo, criar um formulrio ASP ou ASP.NET, onde o usurio pode alterar os seus dados cadastrais. Primeiro, os dados so recuperados a partir do Banco de Dados; em seguida, as alteraes so enviadas de volta para o Banco de Dados, atravs de uma instruo UPDATE. Vamos estudar esta instruo atravs de exemplos, assim como fizemos com a instruo SELECT. Exemplo 1: Criar uma instruo T-SQL que aumenta o campo UnitPrice em 20% na tabela Order Details, devido a um ajuste na moeda e uma desvalorizao do Real em relao ao Dlar. UPDATE [Order Details] SET UnitPrice = UnitPrice*1.2 Observe a simplicidade da instruo UPDATE. Utilizamos uma instruo UPDATE, seguida do nome da tabela onde ser feita a atualizao. Em seguida, uma instruo SET com a expresso de atualizao para aumentar em 20% o valor do campo UnitPrice em todos os registros da tabela Order Details. Na Tabela A.4, temos uma relao com os principais operadores matemticos para realizao de clculos bsicos. Operador Descrio + Adio - Subtrao * Multiplicao / Diviso Tabela A.4 Operadores matemticos. Vamos alterar a instruo anterior, para incluir um critrio na consulta de atualizao. Quando utilizamos um critrio em conjunto com a instruo UPDATE, somente os registros que atendem o critrio especificado sero atualizados. Exemplo 2: Alterar a instruo SQL do exemplo anterior para que somente seja aumentado em 20% o campo UnitPrice dos registros cujo PreoUnitrio for maior ou igual a R$ 20,00. UPDATE [Order Details] SET UnitPrice = UnitPrice*1.2 WHERE UnitPrice >= 20 Adicionamos uma clusula WHERE, para atualizar apenas os registros cujo PreoUnitrio seja maior ou igual a R$ 20,00. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9560000Curso Completo Exemplo 3: Alterar a instruo T-SQL do exemplo anterior para que somente sejam aumentados os registros cujo PreoUnitrio seja maior ou igual a R$ 20,00 e cujo campo OrderID seja menor do que 10500. UPDATE [Order Details] SET UnitPrice = UnitPrice*1.2 WHERE (UnitPrice >= 20) AND (OrderID<10500) Observe que utilizamos critrios em dois campos (UnitPrice e OrderID) e que estes critrios esto ligados por um operador AND, o que significa que um registro** somente ser atualizado se atender aos dois critrios ao mesmo tempo (UnitPrice maior ou igual a 20 e OrderID menor do que 10500). Se o registro atender apenas uma das condies, o registro no ter o seu preo unitrio atualizado. Vamos refinar um pouco mais a nossa consulta de atualizao. Vamos fazer com que somente sejam atualizados os pedidos em que o ano do campo OrderDate seja igual a 1997, e ainda iremos manter os critrios adicionados nos exemplos anteriores. Exemplo 4: Alterar a instruo T-SQL do exemplo anterior para incluir um critrio para que o ano do campo OrderDate seja 1997. Voc ter que incluir a tabela Orders, uma vez que o campo OrderDate encontra-se nesta tabela. Neste caso, vamos utilizar uma instruo UPDATE, em conjunto com uma clusula WHERE. UPDATE [Order Details] SET [Order Details].[UnitPrice]=[Order Details].[UnitPrice]*1.2 FROM [Order Details], Orders WHERE [Order Details].[OrderID]=[Orders].[OrderID] AND ([Order Details].[UnitPrice]>=20) AND ([Order Details].[OrderID]<10500) AND Year(OrderDate)=1997 Observe que fizemos o relacionamento entre as duas tabelas, atravs da definio de um critrio na clusula WHERE, conforme indicado a seguir: WHERE [Order Details].[OrderID]=[Orders].[OrderID] AND ... Novamente, a utilizao de operadores e funes nos fornece uma grande flexibilidade em termos de construo de nossas consultas. INSERINDO NOVOS REGISTROS A INSTRUO INSERT A instruo INSERT utilizada para adicionar registros em uma tabela de um Banco de Dados. Por exemplo, quando o usurio preenche os dados de um formulrio de cadastro e os envia para o Banco de Dados, podemos utilizar a instruo INSERT para inserir estes dados em uma tabela do Banco de Dados. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000957 N O T A Vamos analisar alguns exemplos. Exemplo 1: Este exemplo cria um novo registro na tabela Funcionrios: INSERT INTO Employees (EmployeeID,FirstName, LastName, Title) VALUES (10,Paulo, Braga, Estagirio,RH Manager) Esta instruo insere um registro na tabela Funcionrios com os seguintes dados: EmployeeID: 10. FirstName: Paulo. LastName: Braga. Title: RH Manager. Exemplo 2: Este exemplo seleciona todos os estagirios de uma tabela Estagirios que tenham sido contratados h mais de 30 dias e adiciona os registros selecionados tabela Funcionrios. Este exemplo no leva em considerao o Banco de Dados Northwind. Estamos considerando um Banco de Dados qualquer, onde tenhamos as tabelas Estagirios e Funcionrios. INSERT INTO Funcionrios SELECT Estagirios.* FROM Estagirios WHERE DataDaContratao < Date() - 30 Observe que utilizamos a funo Date( ) para capturar a data do sistema e subtramos 30, para obter apenas os funcionrios contratados h mais do que 30 dias. EXCLUINDO DADOS A INSTRUO DELETE A instruo DELETE utilizada para excluir registros de um Banco de Dados. Vamos supor que voc tenha desenvolvido uma aplicao Web para agenda eletrnica, onde o usurio pode cadastrar contatos, endereos, telefones e compromissos. Podemos criar uma pgina ASP que permite ao usurio eliminar dados que no sejam mais necessrios na agenda. Neste caso, podemos fazer uso da instruo DELETE. Vamos a um exemplo prtico. Exemplo 1: Criar uma instruo SQL que elimine todos os pedidos da tabela Orders em que o campo ShipCountry seja Germany (Alemanha). DELETE FROM Orders WHERE Orders.ShipCountry=Germany A instruo to simples que praticamente dispensa comentrios. A nica recomendao importante que no devemos utilizar uma instruo DELETE, sem a utilizao de uma clusula WHERE. Utilizar um DELETE sem uma clusula WHERE significa que iremos excluir todos os registros da tabela. Neste item, apresentamos uma breve introduo linguagem T-SQL, que no Microsoft SQL Server chamada de Transact-SQL. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9580000Curso Completo COMANDOS PARA CRIAO E MANIPULAO DOS OBJETOS DO BANCO DE DADOS Agora veremos uma srie de comandos para criao e manipulao de objetos de um Banco de Dados. Vamos tratar, dentre outros, de comandos para as seguintes funes: Criao de Bancos de Dados. Criao de tabelas em um Banco de Dados. Criao de ndices em uma tabela. Criao de views. Criao de stored procedures. Criao de triggers. Criao de logins e usurios. Atribuio de permisses de acesso. Os comandos que aprenderemos neste item so executados utilizando a janela de execuo de comandos T-SQL, janela esta que voc aprendeu a utilizar nos captulos do livro. CRIANDO UM BANCO DE DADOS O COMANDO CREATE DATABASE Para criar um Banco de Dados, utilizamos o comando CREATE DATABASE. A seguir, a sintaxe para este comando com alguns comentrios. Sintaxe comentada para o comando CREATE DATABASE: CREATE DATABASE NOME_DO_BANCO_DE_DADOS ON ************************* Definio do Arquivo Primrio ************************* (NAME= Nome_Lgico_Arquivo_Primrio, FILENAME = Caminho para gravar o arquivo, por ex. C:\livrosql\exemplo3\ex3-prim.mdf, SIZE= Tamanho_Inicial, MAXSIZE= Tamanho_Mximo_Admitido, FILEGROWTH = Incremento), *************************** Definio do Arquivo Secundrio *************************** (NAME= Nome_Lgico_Arquivo_Secundrio, FILENAME = Caminho para gravar o arquivo, por ex. C:\livrosql\exemplo3\ex3-sec.ndf, SIZE= Tamanho_Inicial, MAXSIZE= Tamanho_Mximo_Admitido, FILEGROWTH = Incremento) ************************* Definio do Arquivo de Log ************************* LOG ON (NAME= Nome_Lgico_Arquivo_Log, proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000959 FILENAME = Caminho para gravar o arquivo, por ex. C:\livrosql\exemplo3\ex3-log.ldf, SIZE= Tamanho_Inicial, MAXSIZE= Tamanho_Mximo_Admitido, FILEGROWTH = Incremento) *************************************** Final do comando de criao do Banco de Dados *************************************** Conforme vimos no Captulo 3, um Banco de Dados pode conter um arquivo primrio (.mdf), um ou mais arquivos secundrios (.ndf) e um ou mais arquivos de log (.ldf). Agora, vamos utilizar o comando CREATE DATABASE para criar um Banco de Dados chamado BDExemplo, com as caractersticas definidas na Tabela A.5. Os arquivos primrio, secundrio e de log devero ser salvos em C:\livrosql\exemplo3. Esta pasta j deve existir antes da execuo do comando, caso contrrio ao executarmos o comando este ser encerrado e uma mensagem de erro ser emitida. Exemplo: Criar um Banco de Dados com as caractersticas definidas na Tabela A.5. Arquivo Definies Primrio C:\livrosql\BDExemplo\BDExemplo-prim.mdf. Crescimento automtico habilitado. Tamanho inicial: 7 MB. Crescimento em incrementos de 1 MB. Tamanho mximo de 25 MB. Secundrio C:\livrosql\BDExemplo\BDExemplo-sec1.ndf. Crescimento automtico habilitado. Tamanho inicial: 10 MB. Crescimento em incrementos de 10%. Tamanho mximo de 50 MB. Arquivo de log C:\livrosql\BDExemplo\BDExemplo-log1.ldf. Crescimento automtico habilitado. Tamanho inicial: 7 MB. Crescimento em incrementos de 2 MB. Tamanho mximo de 25 MB. Tabela A.5 Banco de Dados BDExemplo. Para criar o Banco de Dados BDExemplo, utilizamos o seguinte comando: CREATE DATABASE BDExemplo ON ************************* Definio do Arquivo Primrio ************************* (NAME= BDExemplo_prim, FILENAME = C:\livrosql\BDExemplo\BDExemplo-prim.mdf , SIZE= 7MB, MAXSIZE= 25MB, FILEGROWTH = 1MB), proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9600000Curso Completo N O T A *************************** Definio do Arquivo Secundrio *************************** (NAME= BDExemplo_sec1, FILENAME = C:\livrosql\BDExemplo\BDExemplo-sec1.ndf , SIZE= 10MB, MAXSIZE= 50MB, FILEGROWTH = 10%) ************************* Definio do Arquivo de Log ************************* LOG ON (NAME= BDExemplo_log1, FILENAME = C:\livrosql\BDExemplo\BDExemplo-log1.ldf , SIZE= 7MB, MAXSIZE= 25MB, FILEGROWTH = 2MB) *************************************** Final do comando de criao do Banco de Dados *************************************** Veja que utilizei o caracter de sublinhado _ para os nomes lgicos, pois no podemos utilizar o sinal de -, o qual no um caracter vlido para um nome lgico. Se utilizarmos o sinal de - , devemos colocar os nomes entre apstrofes. Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, o Banco de Dados BDExemplo ter sido criado e j dever ser exibido na lista de banco de dados. CRIAO DE TABELAS EM UM BANCO DE DADOS O COMANDO CREATE TABLE Para criar uma tabela em um Banco de Dados, utilizamos o comando CREATE TABLE. A seguir, a sintaxe para este comando, com alguns comentrios. Sintaxe comentada para o comando CREATE TABLE: CREATE TABLE Nome_da_tabela Agora inicio a definio bsica dos campos da tabela ( Campo1 tipo_do_Campo1 NULL ou NOT NULL Campo2 tipo_do_Campo2 NULL ou NOT NULL Campo3 tipo_do_Campo3 NULL ou NOT NULL Campo4 tipo_do_Campo4 NULL ou NOT NULL Campo5 tipo_do_Campo5 NULL ou NOT NULL Campon tipo_do_Campon NULL ou NOT NULL ) A ttulo de exemplo, vamos criar a tabela Produtos, no Banco de Dados BDExemplo criado anteriormente, com os campos indicados na Tabela A.6. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000961 N O T A Agora, vamos criar esta tabela no Banco de Dados BDExemplo. Vamos utilizar, para isso, o comando CREATE TABLE indicado a seguir: Primeiro torno o Banco de Dados BDExemplo o Banco de Dados atual USE BDExemplo Definio do nome da tabela. CREATE TABLE Produtos Inicio a definio dos campos. ( CdigoProduto int, NomeProduto char(50), CdigoFornecedor int, CdigoCategoria int, PreoUnitrio money, UnidadesEstoque int, EstoqueMnimo int, Descontinuado bit ) Certifique-se de ter alternado para o Banco de Dados BDExemplo, utilizando o comando Use BDExemplo. Ao executar este comando, se voc no tiver cometido nenhum erro de digitao, a tabela Produtos ter sido criada no Banco de Dados BDExemplo e a seguinte mensagem ser exibida: The command(s) completed successfully. Campo Tipo de dado/Tamanho mximo CdigoProduto Integer NomeProduto Texto de no mximo 50 caracteres. CdigoFornecedor Integer CdigoCategoria Integer PreoUnitrio money UnidadesEstoque Integer EstoqueMnimo Integer Descontinuado bit (0=sim, 1=no) Tabela A.6 A tabela Produtos. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9620000Curso Completo CRIAO DE NDICES EM UMA TABELA O COMANDO CREATE INDEX Para criar um ndice em uma tabela de um Banco de Dados, utilizamos o comando CREATE INDEX. A seguir, a sintaxe para este comando, com alguns comentrios. Sintaxe comentada para o comando CREATE INDEX: CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON { table | view } ( column [ ASC | DESC ] [ ,...n ] ) Vamos a um exemplo prtico. Para criar o seguinte ndice: Tabela Customers do Banco de Dados Northwind Nome: CityIndex Colunas: City Permitir valores duplicados utilizaramos o seguinte comando: CREATE INDEX CityIndex ON Customers (City) Vamos a um exemplo um pouco mais elaborado. Qual seria o comando para criar o seguinte ndice? Tabela Customers do Banco de Dados Northwind Nome: PK_Customers Colunas: CustomerID No permitir valores duplicados. Neste caso, utilizaramos o seguinte comando: CREATE UNIQUE CLUSTERED INDEX PK_Customers ON Customers (CustomerID) WITH DROP_EXISTING Ao utilizarmos a opo WITH DROP_EXISTING, orientamos o SQL Server a excluir o ndice, caso ele j exista e a recri-lo novamente. Se no utilizarmos esta opo e o ndice j existir, ser emitida a seguinte mensagem de erro: Server: Msg 1913, Level 16, State 1, Line 1 There is already an index on table Customers named PK_Customers. Vamos a mais um exemplo. Agora, vamos criar um ndice composto com as seguintes caractersticas: Tabela Customers do Banco de Dados Northwind proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000963 Nome: EnderecoIndex. Colunas: Address, City e Region. No permitir valores duplicados. Ignorar valores duplicados. Neste caso utilizaramos o seguinte comando: CREATE UNIQUE INDEX EnderecoIndex ON Customers (Address, City, Region) WITH IGNORE_DUP_KEY Neste caso, utilizamos a opo UNIQUE para criar um ndice nico e a opo WITH IGNORE_DUP_KEY para ignorar valores duplicados j existentes. Algumas consideraes para a criao de ndices compostos por mais do que um campo: 1. Podemos criar um ndice composto por, no mximo, 16 colunas. Alm disso, a soma do tamanho das 16 colunas no pode ultrapassar 900 bytes. 2. Todas as colunas de um ndice composto devem pertencer mesma tabela. Como no SQL Server 2005 podemos criar ndices em views (consultas), e uma view pode retornar dados de vrias colunas de diferentes tabelas; ao criarmos um ndice composto em uma view, as colunas que formam o ndice composto devem pertencer mesma tabela. 3. Em termos de desempenho, devemos definir a coluna que possui valores mais diferenciados em primeiro lugar. Por exemplo, no ndice EnderecoIndex, do qual fazem parte as colunas: Address, City e Region, a coluna que apresenta a maior variao, com certeza, a coluna Address (existem muitos endereos em uma cidade), depois a coluna City (existem muitas cidades em uma regio) e por ltimo a coluna Region. Ao definirmos o ndice, devemos passar as colunas nesta mesma ordem, pois isso auxilia no desempenho da consulta. 4. Desta maneira podemos concluir que a ordem das colunas importa no desempenho, e alm disso os dois comandos a seguir definem ndices diferentes. Observe que a nica diferena entre os dois a ordem das colunas: CREATE UNIQUE INDEX EnderecoIndex ON Customers (Address, City, Region) WITH IGNORE_DUP_KEY e CREATE UNIQUE INDEX EnderecoIndex ON Customers (City, Address, Region) WITH IGNORE_DUP_KEY 5. Ao construirmos uma consulta, a clusula WHERE deve fazer referncia a todas as colunas do ndice composto, caso contrrio o ndice no ser utilizado. Seguindo a nossa metodologia de utilizao de exemplos, vamos criar um ndice utilizando a janela de execuo de comandos T-SQL. O ndice ter as seguintes caractersticas: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9640000Curso Completo N O T A Tabela Customers do Banco de Dados Northwind. Nome: CountryIndex. Colunas: Country. Permitir valores duplicados. Exemplo: Criando o ndice CountryIndex com a janela de execuo de comandos T-SQL: 1. Abra o SQL Server Management Studio, navegue at o banco de dados Northwind, clique com o boto direito do mouse no banco de dados e, no menu de opes que exibido, clique em New Query. 2. Pronto, ser aberta a janela de execuo de comandos T-SQL. 3. Execute o comando USE Northwind. 4. Digite e execute o seguinte comando: CREATE INDEX CountryIndex ON Customers (Country) Dever ser emitida a seguinte mensagem: The command(s) completed successfully. Para maiores informaes sobre os tipos de ndices e a criao de ndices consulte o Captulo 4. CRIAO DE VIEWS NO BANCO DE DADOS O COMANDO CREATE VIEW Para criar uma view em um Banco de Dados, utilizamos o comando CREATE VIEW. A seguir, a sintaxe para este comando com alguns comentrios. CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] ) ] [ WITH < view_attribute > [ ,...n ] ] AS select_statement WITH CHECK OPTION ] Simplificando a sintaxe para o comando CREATE VIEW, teramos o seguinte: CREATE VIEW Nome_da_View AS Comando SQL Por exemplo, para criar uma view chamada Pedidos_Teste, que retorna os campos OrderID, OrderDate, ShipCountry e ShipCity, da tabela Orders do Banco de Dados Northwind, utilizamos o seguinte comando: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000965 N O T A N O T A USE Northwind GO CREATE VIEW Pedidos_Teste AS SELECT OrderID, OrderDate, ShipCountry FROM Orders importante que voc coloque o comando GO, antes do comando CREATE VIEW, caso o comando CREATE VIEW no seja o primeiro comando. Se no utilizarmos GO, ser emitida a seguinte mensagem de erro: Server: Msg 111, Level 15, State 1, Line 2 CREATE VIEW must be the first statement in a query batch. O mais importante para a criao de views conhecer a linguagem T-SQL. Uma view nada mais do que um comando T-SQL gravado em um Banco de Dados. Uma vez gravada a view, podemos execut- la quantas vezes forem necessrias. Por exemplo, para executar a view Pedidos_Teste, utilizamos o seguinte comando: SELECT * FROM Pedidos_Teste Quando criamos uma view, o que gravado no Banco de Dados, apenas o comando T-SQL, alm de informaes sobre permisses de acesso. Os dados que a view retorna so obtidos a partir das tabelas do Banco de Dados, toda vez que a view for executada. Informaes sobre as views so armazenadas nas tabelas sysobjects. Informaes sobre as colunas referenciadas em cada view so armazenadas na tabela syscolumns. Informaes sobre os objetos das quais a view depende so armazenadas na tabela sysdepends. O texto que define o comando T-SQL da view armazenado na tabela syscomments. Podemos fazer com que o texto da view, que armazenado na tabela syscomments, seja criptografado. Isto impede que o cdigo da view seja acessado, simplesmente atravs de um SELECT na tabela syscomments. Ou melhor, o cdigo at que pode ser acessado, s que estar criptografado, o que impede que seja lido, a menos que a criptografia seja quebrada. A seguir, um exemplo de criao de uma view com a utilizao da opo WITH ENCRYPTION: CREATE VIEW Pedidos_Criptografada WITH ENCRYPTION AS SELECT OrderID, OrderDate, ShipCountry, ShipCity FROM Orders WHERE ShipCountry = Brazil Vamos a um exemplo: Criar uma view chamada Mdia_Vendas_por_Ano. Esta view deve exibir um registro para cada ano em que existem pedidos e o valor mdio de vendas para cada ano. O detalhe nesta view que temos que utilizar dados da tabela Orders e da tabela Order Details. Os clculos do total por pedido, os quais vo possibilitar o clculo da mdia anual, so realizados a partir proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9660000Curso Completo N O T A dos campos da tabela Order Details. Alm disso, teremos que utilizar a funo Year, para extrair apenas o ano do campo OrderDate. Depois, agrupamos o campo ano e utilizamos a funo AVG na coluna que calcula o valor das vendas. Ao mesmo tempo que aprendemos a criar a view tambm reforamos a utilizao das principais clusulas do comando SELECT. Para criar esta view, utilize o seguinte comando: USE Northwind GO CREATE VIEW Mdia_Vendas_por_Ano AS SELECT YEAR(OrderDate) AS [Ano do Pedido], AVG(([Quantity] * [UnitPrice])* (1 -[Discount])) AS [Mdia Anual] FROM [Orders] INNER JOIN [Order Details] ON [Orders].[OrderID] = [Order Details].[OrderID] GROUP BY YEAR(OrderDate) Agora vamos testar se a view Mdia_Vendas_por_Ano est retornando os resultados desejados. Execute o seguinte comando: SELECT * FROM Mdia_Vendas_por_Ano Para maiores informaes sobre a criao de views, consulte o Captulo 9. CRIAO DE STORED PROCEDURES NO BANCO DE DADOS O COMANDO CREATE PROCEDURE Para criar um stored procedure em um Banco de Dados, utilizamos o comando CREATE PROCEDURE. A seguir a sintaxe para este comando com alguns comentrios. CREATE PROCEDURE nome_do_stored_procedure [ {@nome_parmetro1 tipo_de_dados_do_parmetro} [=valor_default] [OUTPUT] ] [,..n] AS comando 1 comando 2 ... comando n Vamos a um exemplo simples. Exemplo: Criar e testar um store procedure que retorna todos os registros da tabela orders, em que o campo ShipCity igual a London. Gravar o stored procedure com o nome usp_PedidosLondon. O stored procedure ser criado no Banco de Dados Northwind. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000967 N O T A Utilizei o prefixo usp_ para indicar user stored procedure. Porm, esta no uma conveno obrigatria, apenas uma recomendao. Para criar o stored procedure usp_PedidosLondon, utilize o seguinte comando: USE Northwind GO CREATE PROCEDURE usp_PedidosLondon AS SELECT * FROM Orders WHERE ShipCity = London O comando executado e a seguinte mensagem exibida: The command(s) completed successfully. Agora podemos executar o stored procedure sempre que for necessrio. Para execut-lo, execute o seguinte comando: exec usp_PedidosLondon O stored procedure executado, os comandos que compem o Stored procedure so executados e os resultados so retornados (somente os pedidos em que o campo ShipCity igual a London). Quando criamos um stored procedure, o SQL Server 2005 grava informaes em uma srie de tabelas no prprio Banco de Dados onde o stored procedure criado. O nome do stored procedure armazenado na tabela sysobjects. Os comandos do stored procedure so armazenados na tabela syscomments. Podemos fazer com que estes comandos sejam criptografados. Para isso utilizamos a opo WITH ENCRYPTION. No exemplo a seguir, temos um comando que cria um stored procedure chamado usp_Customers e criptografa os comandos do stored procedure, armazenados na tabela syscomments: USE Northwind GO CREATE PROCEDURE usp_Customers WITH ENCRYPTION AS SELECT * FROM Customers CRIANDO STORED PROCEDURES COM PARMETROS DE ENTRADA A utilizao de parmetros de entrada permite a criao de stored procedures mais flexveis. Vamos considerar o stored procedure usp_PedidosLondon, criado no exemplo anterior. Da maneira como este stored procedure foi criado, sem parmetros de entrada, o critrio de pesquisa ser sempre o mesmo: ShipCity = London. Podemos criar um stored procedure mais genrico, o qual aceita o nome da cidade como parmetro e retorna todos os pedidos para a cidade passada como parmetro. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9680000Curso Completo Para criar um stored procedure, com um ou mais parmetros de entrada, utilizamos a seguinte sintaxe: CREATE PROCEDURE nome_StorProc @nome_parmetro tipo_parmetro AS comando 1 comando 2 ... comando n Caso tenhamos mais do que um parmetro de entrada, devemos separ-los por vrgula, conforme indicado a seguir: CREATE PROCEDURE @nome_parmetro1 tipo_parmetro1, @nome_parmetro2 tipo_parmetro2, ... @nome_parmetron tipo_parmetron AS comando 1 comando 2 ... comando n Para utilizar o parmetro nos comandos do Store Procedure, basta utilizar @nome_do_parmetro. Vamos a um exemplo prtico. Exemplo 1: Criar um stored procedure chamado usp_Pedidos_Cidade. Este ser criado no Banco de Dados Northwind e deve aceitar um parmetro chamado Cidade, o qual do tipo nvarchar(15). O stored procedure usar o valor passado neste parmetro como critrio de pesquisa, para retornar apenas os pedidos para a cidade passada como parmetro. Para criar o stored procedure usp_Pedidos_Cidade, utilize o seguinte comando: USE Northwind GO CREATE PROCEDURE usp_Pedidos_Cidade @cidade nvarchar(15) AS SELECT * FROM Orders WHERE ShipCity = @cidade Para executar o stored procedure usp_Pedidos_Cidade, passando Campinas como parmetro, utilizamos o seguinte comando: Execute usp_Pedidos_Cidade Campinas Sero retornados apenas os pedidos para a cidade de Campinas. Para executar o stored procedure usp_Pedidos_Cidade, passando Bruxelles como parmetro, utilizamos o seguinte comando: Execute usp_Pedidos_Cidade Bruxelles proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000969 Sero retornados apenas os pedidos para a cidade de Bruxelles e assim por diante, ou seja, cada vez que executarmos o stored procedure, podemos passar um parmetro diferente, o que o torna bem mais flexvel. Vamos a mais um exemplo, onde temos dois parmetros de entrada. Exemplo 2: Criar um stored procedure chamado usp_Ped_Cid_Pas. Este ser criado no Banco de Dados Northwind e deve aceitar dois parmetros: um chamado cidade, o qual do tipo nvarchar(15), e outro chamado pas, o qual do tipo nvarchar(15). O stored procedure usar os valores passados nestes parmetros como critrio de pesquisa, para retornar apenas os pedidos para a cidade e pas de destino passados como parmetros. Para criar o stored procedure usp_Ped_Cid_Pas, utilize o seguinte comando: USE Northwind GO CREATE PROCEDURE usp_Ped_Cid_Pas @cidade nvarchar(15), @pas nvarchar(15) AS SELECT * FROM Orders WHERE (ShipCity = @cidade) and (ShipCountry=@pas) Para executar o stored procedure usp_Ped_Cid_Pas, passando como parmetros Buenos Aires como valor para o parmetro cidade, e Argentina, como valor para o parmetro pas, utilizamos o seguinte comando: Exec usp_Ped_Cid_Pas Buenos Aires, Argentina <body tePara executar o stored procedure usp_Ped_Cid_Pas, passando como parmetros Sao Paulo, como valor para o parmetro cidade, e Alemanha como valor para o parmetro pas, utilizamos o seguinte comando: Exec usp_Ped_Cid_Pas Sao Paulo, Alemanha Evidentemente que esta ltima execuo no ir retornar nenhum registro, apenas a seguinte mensagem ser exibida: (0 row(s) affected) Se passarmos apenas o parmetro cidade, ignorando o parmetro pas, conforme indicado no seguinte comando: Execute usp_Ped_Cid_Pas Sao Paulo iremos obter a seguinte mensagem de erro: Server: Msg 201, Level 16, State 3, Procedure usp_Ped_Cid_Pas, Line 0 Procedure usp_Ped_Cid_Pas expects parameter @pas, which was not supplied. Observe que a mensagem informa que esperado um parmetro chamado pas (@pas) e que este no foi informado. Se passarmos parmetros a mais, conforme indicado no seguinte comando: Execute usp_Ped_Cid_Pas Sao Paulo, Alemanha, 12/06/2001 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9700000Curso Completo N O T A iremos obter a seguinte mensagem de erro: Server: Msg 8144, Level 16, State 2, Procedure usp_Ped_Cid_Pas, Line 0 Procedure or function usp_Ped_Cid_Pas has too many arguments specified. Para maiores informaes sobre a criao e o conceito de stored procedures, consulte o Captulo 10. CRIAO DE TRIGGERS O COMANDO CREATE TRIGGER Para criar uma trigger em uma tabela de um Banco de Dados, utilizamos o comando CREATE TRIG- GER. A seguir a sintaxe para este comando com alguns comentrios. CREATE TRIGGER nome_da_trigger ON {tabela ou view} [WITH ENCRYPTION] {FOR | AFTER | INSTEAD OF} {[DELETE] [,] [INSERT] [,] [UPDATE]} [WITH APPEND] [NOT FOR REPLICATION] AS comando 1 comando 2 comando 3 ... comando n Com este comando podemos criar triggers associadas com qualquer dos comandos bsicos de insero, alterao ou excluso de dados DELTE, INSERT ou UPDATE e tambm triggers do tipo INSTEAD OF e AFTER. Uma trigger pode ser associada com mais de uma opo, por exemplo, podemos criar uma trigger que dispara em resposta a um comando INSERT e tambm a um comando UPDATE. Nos comandos que definem a trigger (comando 1, ..., comando n), podemos incluir a maioria dos comandos, inclusive as estruturas IF...ELSE e WHILE. No so permitidos os seguintes comandos: ALTER DATABASE CREATE DATABASE DISK INIT DISK RESIZE DROP DATABASE LOAD DATABASE LOAD LOG RECONFIGURE RESTORE DATABASE RESTORE LOG proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000971 N O T A Vejamos um exemplo prtico. Exemplo: Vamos criar uma trigger que evita que sejam inseridos novos clientes na tabela Customers do Banco de Dados Northwind, em que o campo Country seja igual a China ou Indonsia. Ser criada para a ao INSERT. Vamos cham-la de tg_ExcluiChinaIndonsia. Esta trigger verifica se o campo Country igual a China ou Indonsia. Em caso afirmativo, um ROLLBACK ser chamado para cancelar a insero do registro, caso contrrio a transao ser concluda. Para criar a trigger tg_ExcluiChinaIndonsia, execute o seguinte comando: USE Northwind GO CREATE TRIGGER tg_ExcluiChinaIndonsia ON Customers FOR INSERT AS IF EXISTS(SELECT * FROM inserted WHERE Country IN (China,Indonsia)) PRINT PAS PROIBIDO !!! ELSE PRINT PAS PERMITIDO Observe a utilizao da funo EXISTS (comando SQL). Esta funo retorna verdadeiro, caso o comando SQL retorne algum registro e falso, caso contrrio. Agora vamos testar o funcionamento da trigger, utilizando um comando INSERT. Execute o seguinte comando: USE Northwind GO INSERT INTO [Customers] ( [CustomerID],[CompanyName],[ContactName],[ContactTitle], [Address],[City],[Region],[PostalCode], [Country], [Phone], [Fax]) VALUES (xxxxx,Empresa ABC Ltda.,Jos da Silva,Gerente, Rua Riachuelo 80,Santa Maria,Centro,97050-010,China,220-1335,220-1314) Ao executarmos este comando recebemos a seguinte mensagem: PAS PROIBIDO !!! (1 row(s) affected) Mas, ao invs da mensagem PAS PROIBIDO !!!, ns queremos que a insero do registro seja cancelada caso o pas seja China ou Indonsia. Para isso vamos alterar a trigger tg_ExcluiChinaIndonsia. Ao invs da mensagem, vamos dar um ROLLBACK. Como a operao INSERT e a trigger ocorrem no contexto de uma transao, conforme descrito no Captulo 10, ao cancelarmos a transao, vamos cancelar o restante de execuo da trigger e tambm o comando INSERT. Para alterar uma trigger, utilizamos o comando ALTER TRIGGER. A sintaxe bsica para este comando a seguinte: proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9720000Curso Completo USE Northwind GO ALTER TRIGGER nome_trigger ON nome_tabela FOR { INSERT | UPDATE | DELETE } AS comando 1 comando 2 comando 3 ... comando n Para alterar a trigger tg_ExcluiChinaIndonsia, utilizamos o seguinte comando: USE Northwind GO ALTER TRIGGER tg_ExcluiChinaIndonsia ON Customers FOR INSERT AS IF EXISTS(SELECT * FROM inserted WHERE Country IN (China,Indonsia)) BEGIN PRINT INSERO DO REGISTRO CANCELADA !!!!!! ROLLBACK END ELSE PRINT PAS PERMITIDO Agora vamos tentar inserir um cliente em que o campo Country igual a Indonsia. Vamos verificar se a trigger foi disparada e depois daremos um SELECT para verificar se a insero do registro foi realmente cancelada. Para inserir um registro em que o pas Indonsia, execute o seguinte comando: USE Northwind GO INSERT INTO [Customers] ([CustomerID],[CompanyName],[ContactName],[ContactTitle], [Address],[City],[Region],[PostalCode], [Country], [Phone], [Fax]) VALUES (ABC12,Empresa 123 Ltda.,Para Pedro,Gerente, Rua Riachuelo 444,Porto Alegre,Centro,97051-230,Indonsia,220- 4444,223-1344) Este comando retorna a seguinte mensagem: INSERO DO REGISTRO CANCELADA !!!!!! Vamos conferir se o comando INSERT realmente foi cancelado. Para verificar se o registro para a Indonsia no foi inserido, execute o seguinte comando: USE Northwind GO SELECT * FROM Customers WHERE CustomerID=ABC12 O resultado ser: (0 row(s) affected) proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000973 N O T A Isto comprova que o comando INSERT foi cancelado. Veja que agora temos uma trigger, que dispara sempre que tentarmos inserir um registro na tabela Customers. Esta trigger verifica se o registro que est sendo inserido possui um valor igual a China ou Indonsia, no campo Country. Caso o registro possua um destes valores no campo Country, a insero ser cancelada, atravs da utilizao de um comando ROLLBACK. O comando ROLLBACK cancela a execuo da transao, da qual fazem parte a trigger e o comando INSERT que disparou a trigger. Como o comando INSERT faz parte da transao que est sendo cancelada, o comando INSERT tambm cancelado e a insero do registro cancelada. Para detalhes tericos e exemplos prticos sobre triggers, consulte o Captulo 10. COMANDOS PARA GERENCIAR LOGINS NO SQL SERVER 2005 Na Tabela A.7 temos alguns comandos para criao de logins. Comando Utilizado sp_grantlogin Para adicionar logins do domnio do Windows 2000. Podemos adicionar usurios ou grupos. Utilizamos o formato DOMNIO\nome. sp_addlogin Para adicionar novos logins do SQL Server 2005, para o caso de estarmos utilizando o modo de segurana SQL Server and Windows. Tabela A.7 Comandos para adicionar logins. Sintaxe para o comando sp_grantlogin: exec sp_grantlogin DOMNIO\nome ou exec sp_grantlogin [DOMNIO\nome] Por exemplo, para adicionarmos o usurio chico, do domnio GROZA, utilizamos o seguinte comando: exec sp_grantlogin GROZA\chico ou exec sp_grantlogin [GROZA\chico] Algumas observaes sobre o comando sp_grantlogin: sp_grantlogin no pode ser executado como parte de uma transao definida pelo usurio ou por um aplicativo que o usurio est utilizando. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9740000Curso Completo Somente membros das roles System Administrators (sysadmin) e Security Administrators (securityadmin) tm permisso, por padro, para utilizar o comando sp_grantlogin. Podemos remover a permisso de login para um usurio ou grupo do domnio do Windows, utilizando o comando sp_revokelogin. Sintaxe para o comando sp_revokelogin: exec sp_revokelogin DOMNIO\nome ou exec sp_revokelogin [DOMNIO\nome] Por exemplo, para removermos a permisso de login do usurio chico, do domnio GROZA, adicionado anteriormente, utilizamos o seguinte comando: exec sp_revokelogin GROZA\chico ou exec sp_revokelogin [GROZA\chico] Algumas observaes sobre o comando sp_revokelogin: Ao removermos a permisso de login, o usurio no poder mais conectar-se com a respectiva instncia do servidor SQL, a menos que um dos grupos aos quais o usurio pertena tenha permisso de login. Lembre que o usurio sempre herda as permisses do grupo. Se o usurio pertencer a vrios grupos que possuem permisso de login e a um nico grupo que tem o login explicitamente negado, o usurio no poder conectar-se com o servidor SQL. Lembre que negar (deny) tem precedncia sobre permitir. Somente membros das roles System Administrators (sysadmin) e Security Administrators (securityadmin) tm permisso, por padro, para utilizar o comando sp_revokelogin. Podemos negar, explicitamente, a permisso de login para um usurio ou grupo do domnio do Win- dows, utilizando o comando sp_denylogin. Neste caso, a conta do usurio ou grupo continua na lista de logins, porm com o direito de conexo com o servidor SQL, explicitamente negado. Sintaxe para o comando sp_denylogin: exec sp_denylogin DOMNIO\nome ou exec sp_denylogin [DOMNIO\nome] Por exemplo, para negarmos, explicitamente, a permisso de login do usurio chico, do domnio GROZA, utilizamos o seguinte comando: exec sp_denylogin GROZA\chico ou exec sp_denylogin [GROZA\chico] proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000975 Algumas observaes sobre o comando sp_denylogin: sp_denylogin no pode ser executado como parte de uma transao definida pelo usurio ou por um aplicativo que o usurio est utilizando. Somente membros das roles System Administrators (sysadmin) e Security Administrators (securityadmin) tm permisso, por padro, para utilizar o comando sp_denylogin. Para permitir que o usurio volte a se conectar, removendo o efeito de sp_denylogin, podemos utilizar sp_grantlogin. Agora vamos tratar dos comandos para adicionar e remover logins do prprio SQL Server, para o caso de trabalharmos no modo de segurana misto. Para adicionar um login do SQL Server 2005, podemos utilizar o comando sp_addlogin. Sintaxe para o comando sp_addlogin, conforme descrito no Books OnLine: sp_addlogin [ @loginame = ] login [ , [ @passwd = ] password ] [ , [ @defdb = ] database ] [ , [ @deflanguage = ] language ] [ , [ @sid = ] sid ] , [ @encryptopt = ] encryption_option ] Observe que podemos definir uma srie de opes, tais como a senha (passwd), o Banco de Dados associado com o login (defdb), a linguagem associada com o login (deflanguage), um identificador de segurana nico (sid) e a definio se a senha deve ou no ser criptografada ao ser armazenada no servidor SQL Server (encryptopt). Normalmente no especificamos o parmetro sid, e com isso o identificador nico de segurana ser gerado pelo prprio SQL Server 2005, no momento da criao do login. O sid um nmero do tipo varbinary(16). Os valores possveis para o parmetro encryptopt esto descritos na Tabela A.8. Valor Descrio NULL A senha ser criptografada. Este o valor padro. skip_encryption A senha j est criptografada. O valor ser gravado sem a necessidade de criptograf-lo novamente. skip_encryption_old A senha deve ser criptografada de acordo com verses anteriores do SQL Server. O valor ser gravado sem criptograf-lo novamente. Esta opo normalmente utilizada durante a fase de migrao de verses anteriores. Tabela A.8 Valores do parmetro encryptopt. Por exemplo, para adicionarmos o usurio flavio1, com senha em branco e associado ao Banco de Dados master, que o Banco de Dados padro quando nenhum outro for definido, utilizamos o seguinte comando: exec sp_addlogin flavio1 Agora vamos adicionar um usurio chamado luciano, com uma senha nene e associado ao Banco de Dados Clientes: exec sp_addlogin luciano, nene, Clientes proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9760000Curso Completo Algumas observaes sobre o comando sp_addlogin: sp_addlogin no pode ser executado como parte de uma transao definida pelo usurio ou por um aplicativo que o usurio est utilizando. Somente membros das roles System Administrators (sysadmin) e Security Administrators (securityadmin) tm permisso, por padro, para utilizar o comando sp_addlogin. Em nosso exemplo, descrito na Tabela A.8, utilizaremos o comando sp_addlogin, para adicionar os usurios: sqluser1 e sqluser2. Para excluirmos um login do SQL Server, podemos utilizar o comando sp_droplogin. Sintaxe para o comando sp_droplogin: exec sp_droplogin nome Por exemplo, para excluirmos o usurio luciano, anteriormente adicionado, podemos utilizar o seguinte comando: exec sp_droplogin. luciano Algumas observaes sobre o comando sp_droplogin.: Somente membros das roles System Administrators (sysadmin) e Security Administrators (securityadmin) tm permisso, por padro, para utilizar o comando sp_droplogin. Caso o login, que est sendo excludo, esteja adicionado como usurio de algum Banco de Dados, o login no poder ser excludo. Primeiro, precisamos remover o login da lista de usurios, utilizando o comando sp_drpouser, o qual aprenderemos a utilizar mais adiante. Os seguintes logins no podero ser excludos: ____________O login de administrao sa. ____________Um login que seja dono de um job no Banco de Dados msdb. ____________Um login que esteja atualmente conectado com o servidor SQL Server. O comando sp_droplogin dever checar todos os Bancos de Dados para verificar se o login que est sendo excludo no est adicionado lista de usurios com permisso de acesso ao Banco de Dados. Por isso, para que este comando possa ser executado com sucesso, as seguintes condies devem ser atendidas: ____________O usurio logado, que est executando sp_droplogin, deve ter permisso de acesso aos Bancos de Dados ou; ____________A conta guest deve estar habilitada a acessar o Banco de Dados. Ao criarmos novos logins no SQL Server, devemos levar os seguintes fatos em considerao: Um login no pode conter o caracter barra invertida. No confundir com a barra invertida utilizada para separar o nome do domnio do nome do usurio. Logins e senhas podem conter at 128 caracteres, incluindo letras, smbolos e dgitos. No podemos adicionar um login com o mesmo nome de um login reservado, como por exemplo sa ou public. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000977 O nome de login no pode conter o valor NULL ou ser uma string vazia . Exemplo: O comando a seguir cria uma srie de logins do prprio SQL Server 2005 e tambm garante direito de login a usurios do domnio GROZA, do Windows 2000. Utilizo sp_grantlogin para adicionar usurio do domnio do Windows 2000 exec sp_grantlogin GROZA\jose exec sp_grantlogin GROZA\maria exec sp_grantlogin GROZA\pedro exec sp_grantlogin GROZA\paulo exec sp_grantlogin GROZA\jovina exec sp_grantlogin GROZA\grupo1 exec sp_grantlogin GROZA\grupo2 Agora utilizo sp_addlogin para adicionar logins do SQL Server 2005 exec sp_addlogin sqluser1, senha123, pubs exec sp_addlogin sqluser2, senha123, pubs Pressione Ctrl+E para executar o comando. Agora vamos alterar o Banco de Dados padro para os usurios do domnio GROZA. Para alterar o Banco de Dados padro de um usurio, utilizamos o comando sp_defautldb, com a seguinte sintaxe: exec sp_defaultdb usurio, Banco de Dados. Para alterar o Banco de Dados padro para os usurios do domnio GROZA, digite os seguintes comandos: exec sp_defaultdb GROZA\jose, pubs exec sp_defaultdb GROZA\maria, pubs exec sp_defaultdb GROZA\pedro, pubs exec sp_defaultdb GROZA\paulo, pubs exec sp_defaultdb GROZA\jovina, pubs Pressione Ctrl+E para executar o comando. Pronto, os logins foram adicionados e o Banco de Dados padro,s alterado para pubs. COMANDOS PARA A CRIAO DE ROLES Para adicionar uma nova role a um Banco de Dados, utilizamos o comando sp_addrole. Sintaxe para o comando sp_addrole: exec sp_addrole nome, dono da role Por exemplo, para adicionar uma Role chamada teste, cujo dono seja o usurio chico, utilize o seguinte comando: exec sp_addrole teste, chico proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9780000Curso Completo N O T A Se no for especificado o parmetro dono, o dono da role ser o usurio dbo database owner. Algumas observaes sobre o comando sp_addrole: O nome de uma role pode conter at 128 caracteres, porm no pode conter a barra invertida e nem pode ser um valor nulo (NULL) ou uma string vazia . Somente membros das roles sysadmin e das roles db_securityadmin e db_owner tm permisso para utilizar o comando sp_addrole. No podemos criar novas roles em nvel de servidor, somente de Banco de Dados. Para excluir uma role, podemos utilizar o comando sp_droprole. Sintaxe para o comando sp_droprole: exec sp_droprole nome Por exemplo, para excluir a role chamada teste, criada anteriormente, utilize o seguinte comando: exec sp_droprole teste Algumas observaes sobre o comando sp_droprole: Somente membros das roles sysadmin e das roles db_securityadmin e db_owner tm permisso para utilizar o comando sp_addrole. No podemos excluir uma role que possui membros. Antes temos que excluir todos os membros da role, para depois poder exclu-la. Aprenderemos a adicionar e a excluir membros de uma role, no prximo item. O comando sp_droprole no pode ser executado no contexto de uma transao definida pelo usurio. No podemos excluir roles predefinidas Fixed Server Roles e Fixed Database Roles. Tambm podemos utilizar o comando sp_helprole para obter informaes sobre as diversas roles em um Banco de Dados. Considere o exemplo a seguir: use pubs exec sp_helprole Agora vamos a um exemplo prtico. Exemplo: Utilizando comandos T-SQL, crie as roles indicadas na Tabela A.9. Nome da role Banco de Dados/Instncia. role1 Exemplo1 SERVIDOR\SRVINST01 role2 Exemplo1 SERVIDOR\SRVINST01 role3 Exemplo1 SERVIDOR\SRVINST01 Tabela A.9 Roles a serem criadas com o Query Analyzer. proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ANEXO REFERNCIA ATRAVS DE EXEMPLOS, DOS PRINCIPAIS COMANDOS DA LINGUAGEM T-SQL Curso Completo0000979 Para criar as roles da Tabela A.9, faa o seguinte: 1. Execute os seguintes comandos: Alterna para o Banco de Dados Exemplo1 use exemplo1 | Utilizo sp_addrole para criar as novas roles. exec sp_addrole role1 exec sp_addrole role2 exec sp_addrole role3 2. Pressione Ctrl+E para executar estes comandos. As roles role1, role2 e role3 so adicionadas ao Banco de Dados Exemplo1, da instncia SERVIDOR\SRVINST01 e a seguinte mensagem exibida: New role added. New role added. New role added. CONCLUSO Neste anexo, apresentamos uma consolidao dos principais comandos para execuo de consultas e manipulao de objetos em um Banco de Dados do SQL Server 2005. Para uma referncia completa de todos os comandos e funes da linguagem T-SQL, acesse o item Transact-SQL Reference no Books OnLine. A seguir alguns links com informaes teis sobre o SQL Server 2005, na Internet: http://www.microsoft.com/sql http://support.microsoft.com/sql http://www.sqlmag.com http://msdn.microsoft.com/sqlserver http://databases.about.com/compute/databases/cs/sqlserver/index.htm http://www.allexperts.com/software/mssql.shtml http://www.dblinks.net/Microsoft_Sql_Server/ http://www.sqlsecurity.com http://www.sqlteam.com http://www.sql-server-performance.com/ http://sqlserver.superexpert.com/ http://www.sqlwire.com/links.asp proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! ndice Remissivo proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9820000Curso Completo .NET FRAMEWORK CLASS LIBRARY, 797 Conceito, 797 Estrutura, 799 Introduo, 797 O que , 797 Principais Classes, 800 .NET, 762 .NET FRAMEWORK CLASS LIBRARY, 766 CLR, 764 Conceito, 762 Introduo, 762 Web Services, 762 A Access, 709 Acessar dados do SQL Server, 722 Anexar tabelas, 731 Banco de dados, 709 Consultas, 711 Consultas usando dados do SQL Server, 736 Estrutura do banco, 709 Exemplo prtico, 736 Fonte ODBC, 723 Formulrios, 713 Importar dados do SQL Server, 722 Macros, 720 Mdulos, 721 Pginas, 716 Relatrios, 715 Tabelas, 710 Acessar dados via Browser, 746 Configuraes necessrias, 746 Configurando o IIS, 746 Exemplo prtico, 752 Acesso HTTP SOAP Nativo, 49 ADD CONSTRAINT, 536 ADO, 642 Command, 656 Como funciona, 653 Conceito, 653 Connection, 656 Definio, 653 Estrutura, 653 Modelo de objetos, 655 O que , 653 Record, 656 RecordSet, 656 Stream, 656 ADO.NET, 785 Conceito, 785 Conectando o SQL Server, 826 Criando conexes, 825 Data Adapter, 832 DataSet, 834 DataView, 836 Estrutura, 786 Exemplo prtico, 826 Introduo, 824 Principais classes, 824 Versus ADO, 822 AdventureWorks, 118 Agendamento de Tarefas, 269 Conceito, 269 Criao de Jobs, 271 Definir agendamento, 275 Executar o Job, 277 Histrico de execuo, 278 Introduo, 269 Job, 269 Vrios passos, 274 Agendamento do backup, 250 Tarefa agendada, 253 Agentes de Replicao, 493 Criados pela replicao, 493 Alertas, 433 Conceito, 433 Exemplo prtico, 433 Introduo, 433 ALTER DATABASE, 151 Exemplo prtico, 151 Sintaxe, 151 ALTER INDEX, 378 Exemplos, 378 Sintaxe, 378 ALTER TABLE, 183 Exemplo prtico, 184 Opes, 184 Sintaxe, 184 Alterao de tabelas, 182 Comando ALTER TABLE, 183 Excluir campos, 183 Exemplo prtico, 182 Alterao do banco de dados, 150 Comando ALTER DATABASE, 151 Alterar tabela, 170 Analysis Services, 84 Aplicaes em 2 camadas, 44 Apresentao, 44 Conceito, 44 Exemplo, 44 Lgica do negcio, 44 Problemas, 44 TCO, 44 Aplicaes em 3 camadas, 45 Apresentao, 46 Conceito, 45 Dados, 46 Exemplo, 45 Lgica, 46 Problemas, 46 Vantagens, 46 Aplicaes em 4 camadas, 56 Apresentao, 47 Cliente, 46 Conceito, 46 Dados, 47 Exemplo, 47 Lgica, 47 Application Center 2000, 784 Armazenamento bsico, 121 Boot partition, 123 Definio, 122 Partio estendida, 122 Partio primria, 122 Parties, 122 Stripe set, 124 System partition, 123 Volume set, 124 Armazenamento dinmico, 121 Conceito, 125 Definio, 122 RAID-0, 125 RAID-5, 125 Volume espelhado, 125 Volume expandido, 125 Volume simples, 125 Arquitetura de aplicaes, 43 ASP, 658 Como funciona, 659 Conceito, 658 Introduo, 658 Primeiro exemplo, 658 ASP.NET, 812 Conexo com o SQL Server, 814 Introduo, 812 Novidades do, 812 O que , 812 Primeiro exemplo, 814 Suporte a mltiplas linguagens, 813 Assemblies, 792 Componentes, 794 Conceito, 792 Estrutura dos, 794 Funes dos, 793 Introduo, 792 Manifesto, 795 O que so, 792 Atomicidade, 225 ATTACH_REBUILD_LOG, 51 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! NDICE REMISSIVO Curso Completo0000983 B B2B, 38 Exemplo, 41 B2C, 38 BACKUP DATABASE, 254 Exemplo prtico, 254 Opes, 256 Sintaxe, 254 Backup devices, 236 Comando Comando sp_addumpdevice, 241 Conceito, 236 Criando um, 238 Devices Fsicos, 237 Devices lgicos, 237 Excluindo, 242 Exemplo prtico, 238 Introduo, 236 O que so, 236 BACKUP LOG, 256 Exemplo prtico, 257 Opes, 257 Sintaxe, 256 Backup, 226 Agendamento do backup, 250 Backup de arquivos de dados, 232 Backup de filegroups, 232 Backup devices, 236 Backup diferencial, 232 Backup do log de transaes, 232 Comando BACKUP DATABASE, 254 Comando BACKUP LOG, 256 Concurrente Database and Log Backups, 231 Consideraes, 228 Estratgias de backup Exemplo prtico, 244 Fazendo o backup, 244 Full backup, 231 Full recovery model, 245 Guia database, 244 Introduo, 226 Logged recovery model, 246 Mtodos de Backup, 229 Opes do backup, 247 Recovery model, 245 restore, 232 Simple recovery model, 246 Tipos de backup, 231 Banco de dados, 117 Criando um banco de dados, 130 Defaults, 121 Elementos do, 118 Estrutura de armazenamento, 126 Exemplo prtico, 130 Roles, 121 Stored Procedures, 119 Tabelas, 118 Views, 119 Bancos de dados da instncia, 116 AdventureWorks, 118 database msdb, 117 master database, 117 model database, 117 System databases, 117 tempdb database, 118 Bancos de Dados Relacionais, 6 Componentes de, 6 Conceito, 6 Elementos bsicos, 6 Projeto do, 19 Regra nmero 1, 9 BizTalk Server, 784 Boost SQL Server priority on Windows, 111 Business Intelligence Development Studio, 868 C C#, 774 Apresentao, 774 Exemplo prtico, 775 Chave Estrangeira, 14 Chave Primria, 9 Comando ALTER TABLE, 198 Composta, 10 Conceito, 9 Definio de, 195 Dicas de escolha, 21 Exemplo prtico, 195 Exemplos, 10 Introduo, 9 Clusula Where, 25 Cliente Servidor, 43 Aplicaes em 2 camadas, 44 Definio, 43 Introduo, 43 Modelo, 43 CLR, 764 Cdigo MSIL, 765 Conceito, 764 Definio, 764 Estrutura do, 765 Funes, 764 Introduo, 764 CLR, 787 Como funciona, 789 Conceito, 787 Integrao, 789 Introduo, 787 JIT, 791 Processo de execuo, 789 Vantagens, 788 Clustered Index, 200 Conceito, 200 Consideraes, 203 CREATE INDEX, 209 Criao de, 206 Estrutura, 201 Funcionamento, 202 Introduo, 200 Leaf pages, 203 Nom-leaf pages, 202 Colunas Calculadas, 26 COM COM+, 772 Comandos DBCC, 376 ALTER INDEX, 378 DBCC CHECKDB, 386 DBCC CHECKTABLE, 387 DBCC DBREINDEX, 376 DBCC DBREPAIR, 378 DBCC HELP, 388 DBCC INDEXDEFRAG, 379 DBCC SHOWCONTIG, 383 DBCC SHRINKDATABASE, 379 DBCC SHRINKFILE, 381 DBCC UPDATEUSAGE, 382 DBCC USEROPTIONS, 385 Introduo, 376 O que so, 376 Comandos T-SQL, 139 ADD CONSTRAINT, 536 ALTER DATABASE, 151 ALTER INDEX, 378 ALTER TABLE, 183 BACKUP DATABASE, 254 BACKUP LOG, 256 Conceito, 139 CREATE DATABASE, 143 CREATE INDEX, 209 CREATE PROCEDURE, 586 CREATE TABLE, 178 CREATE TRIGGUER, 607 CREATE VIEW, 574 DBCC CHECKDB, 386 DBCC CHECKTABLE, 387 DBCC DBREINDEX, 376 DBCC DBREPAIR, 378 DBCC HELP, 388 DBCC INDEXDEFRAG, 379 DBCC SHOWCONTIG, 383 DBCC SHRINKFILE, 381 DBCC UPDATEUSAGE, 382 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9840000Curso Completo DBCC USEROPTIONS, 385 Definio, 139 DENY, 357 DROP CONSTRAINT, 547 DROP DATABASE, 154 DROP INDEX, 215 DROP TABLE, 195 Executar comandos, 141 Exemplo prtico, 141 GRANT, 348, 356 Janela de execuo de comandos, 140 RESTORE DATABASE, 263 RESTORE LOG, 263 REVOKE, 350 sp_addlogin, 320 sp_addrole, 328 sp_addrolemember, 341 sp_addrolemember, 341 sp_addsrvrolemember, 340 sp_addumpdevice, 241 sp_denylogin, 320 SP_DETACH_DB, 929 sp_dropdevice, 242 sp_droplogin, 321 sp_droprole, 328 sp_dropsrvrolemember, 340 sp_grantdbaccess, 334 sp_grantlogin, 318 sp_help, 215 sp_helpindex, 214 sp_helprole, 329 SP_HELPTEXT, 602 SP_HELPTRIGGER, 616 sp_revokedbaccess, 336 sp_revokelogin, 319 sp_spaceused, 214 SP_STORED_PROCEDURES, 603 Command, 656 Commerce Server 2000, 784 COMMON TYPE SYSTEM, 796 Classificao de tipos, 796 Conceito, 796 Introduo, 796 O que , 796 Componentes, 772 Configuraes Utilizadas, 37 Configurar opes da instncia, 109 Configuraes de memria, 110 Configured values, 111 Exemplo prtico, 109 Guia Advanced, 114 Guia Connections, 113 Guia Database settings, 113 Guia General, 109 Guia Memory, 110 Guia Misc Server Settings, 114 Guia Permissions, 114 Guia Processors, 111 Guia Security, 112 Parmetros de inicializao, 100 Running Values, 111 Startup Parameters, 110 Connection, 661 Attributes, 661 BeginTrans, 661 BeginTransComplete, 662 Cancel, 661 Close, 661 CommandTimeOut, 661 CommitTrans, 661 CommitTransComplete, 662 Conceito, 661 ConnectComplete, 662 ConnectionString, 664 ConnectionTimeOut, 661 Criando conexes ODBC, 660 Criar conexes OLE-DB, 662 DefaultDatabase, 662 Disconnect, 662 Errors, 662 Eventos, 661 Execute, 661 ExecuteComplete, 662 Exemplo prtico, 664 InfoMessage, 662 IsolationLevel, 662 Mtodos, 661 Mode, 662 Open, 661 OpenSchema, 661 Properties, 662 Propriedades, 661 Provider, 662 RollBackTrans, 661 RollBackTransComplete, 662 State, 662 Utilizao, 661 Version, 662 WillConnect, 662 WillExecute, 662 Consistncia, 225 Console desempenho, 407 Console SQL Computer Manager, 95 Aes disponveis, 96 Conceito, 95 Tela inicial, 96 Constraint, 536 Conceito, 534 Criando Constraints, 536 Default Constraints, 537 Desabilitando, 547 DROP CONSTRAINT, 547 Excluindo, 547 Exemplo prtico, 536, 548 Foreign Key Constraints, 542 Habilitando, 547 Introduo, 534 Not Null Constraint, 536 Primary Key Constraints, 540 Tipos de, 535 Unique Constraints, 542 Verificao de dados com, 546 Constraints, 534 Check Constraints, 538 Comando Alter Table Add Contas de usurios no Windows, 298 Conceito, 298 Criao de contas, 301 Exemplo prtico, 301 Padro de nomes, 300 CREATE DATABASE, 143 Exemplo com Filegroups, 147 Exemplo prtico, 145 Opes importantes, 147 Sintaxe, 144 CREATE INDEX, 209 Dicas, 211 Exemplo prtico, 210 Sintaxe, 209 CREATE PROCEDURE, 586 Exemplos, 587 Sintaxe, 586 CREATE TABLE, 178 Exemplo prtico, 178 Opes, 178 Sintaxe, 178 CREATE TRIGGUER, 607 Exemplos, 607 Sintaxe, 607 CREATE VIEW, 574 Exemplos, 575 Sintaxe, 574 Criao de tabelas, 163 Definindo campos, 165 Exemplo prtico, 163 Propriedades dos campos, 166 Criar um banco de dados, 130 Arquivos de dados, 131 Comando CREATE DATABASE, 143 Definindo configuraes, 131 Exemplo prtico, 130 Nome do banco, 132 Opes de autocrescimento, 132 Usando comandos T-SQL, 143 CRM, 40 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! NDICE REMISSIVO Curso Completo0000985 Cursores, 680 Conceito, 680 Localizao do cursor, 682 O que so, 680 Tipos de cursores, 681 D Databases Snapshots, 52 DataGrid, 841 Mltiplos conjuntos de dados, 843 Paginao, 842 DB2 IBM, 5 DBCC CHECKDB, 386 Exemplos, 386 Sintaxe, 386 DBCC CHECKTABLE, 387 Exemplos, 387 Sintaxe, 387 DBCC DBREINDEX, 376 Exemplos, 377 Sintaxe, 377 DBCC DBREPAIR, 378 DBCC HELP, 388 Exemplos, 388 Sintaxe, 388 DBCC INDEXDEFRAG, 379 Exemplos, 379 Sintaxe, 379 DBCC SHOWCONTIG, 383 Exemplos, 383 Opes, 384 Sintaxe, 383 DBCC SHRINKDATABASE, 379 Exemplos, 380 Sintaxe, 380 DBCC SHRINKFILE, 381 Exemplos, 381 Sintaxe, 381 DBCC UPDATEUSAGE, 382 Exemplos, 382 Sintaxe, 382 DBCC USEROPTIONS, 385 Exemplos, 385 Sintaxe, 383 Dedicated Administrator Connection, 52 DENY, 357 Exemplos prticos, 357 Sintaxe, 357 Diagrama entidades x relacionamentos, 21 Exemplo, 21 Diagramas Entidades x Relacionamentos, 921 Conceito, 921 Exemplo prtico, 922 Introduo, 921 DROP CONSTRAINT, 547 DROP DATABASE, 154 Exemplo prtico, 154 DROP INDEX, 215 Exemplo prtico, 215 Sintaxe, 215 DROP TABLE, 195 Exemplo prtico, 195 Sintaxe, 195 DTS, 389 Como funciona, 389 Conceito, 389 Data Source, 393 Definir destino, 394 Definir origem, 393 Exemplo prtico, 390 Exportando dados, 398 Formatos suportados, 393 Importar dados do Access, 390 Introduo, 389 Durabilidade, 225 E Edies do SQL Server 2005, 55, 938 Comparao entre as edies, 940 Cuidados antes da instalao, 57 Developers Edition, 55 Edies do Windows, 57 Enterprise Edition, 55 Express Edition, 55 Mobile Edition, 56 SQL Server 2005 Enterprise Edition, 939 SQL Server 2005 Express Edition, 940 SQL Server 2005 Standard Edition, 939 SQL Server 2005 Workgroup Edition, 939 Edies do Windows, 57 Estrutura de pastas do, 69 Servios do, 80 Suporte a edies do SQL Server 2005, 57 Entidades e Atributos, 6 Conceito, 7 Exemplo, 7 Projeto das, 8 Regra nmero 1, 9 Estrutura de armazenamento, 126 Arquivo primrio, 127 Arquivo secundrio, 127 Log de transaes, 127 Estrutura de pastas e arquivos, 69 Caminho padro, 70 Estrutura padro de pastas, 69 Pasta padro, 69 Viso geral, 69 Exchange Server 2003, 783 Excluir banco de dados, 153 Comando DROP DATABASE, 154 Excluir tabelas, 194 Comando DROP TABLE, 195 Exemplo prtico, 194 F Filegroups, 127 Conceito, 127 Default Filegroup, 128 Definio, 127 Primary filegroup, 128 User-defined filegroups, 128 FILLFACTOR OPTION, 212 Definio, 212 Importncia, 212 Valor default, 213 Framework .NET, 762 Ver .NET, 762 FRAMEWORK CLASS LIBRARY, 767 Inferno das DLLs, 779 Linguagens .NET, 773 Metadata, 777 O que , 766 Web Forms, 781 Windows Forms, 780 Funo Year, 26 Funes definidas pelo Usurio, 49 G GRANT, 348 Exemplos prticos, 348 Sintaxe, 348 GRANT, 356 Exemplos prticos, 356 Sintaxe, 356 Grupos de usurios no Windows, 303 Adicionar usurios ao grupo, 307 Built-in groups, 310 Conceito, 303 Criao de grupos, 306 Definies, 304 Grupos de distribuio, 305 Grupos de segurana, 305 Grupos globais, 305 Grupos locais, 305 Grupos universais, 305 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9860000Curso Completo Introduo, 303 Utilizao, 303 H-I Host Integration Server 2000, 784 Hot-Add Memory, 52 IFELSE, 592 Exemplos, 592 Sintaxe, 592 IIS, 636 Criando pasta virtual, 636 Formao de endereos, 640 Importao e Exportao de dados, 389 Ver DTS, 389 ndices, 200 Clustered Index, 200 Conceito, 200 Criao de ndices, 206 Desativao de ndices, 216 DROP INDEX, 215 Excluindo, 215 FILLFACTOR OPTION, 212 Index keys, 205 Index Uniqueness, 205 Introduo, 200 Nomclustered Index, 203 Novidades no SQL 2005, 216 sp_help, 215 sp_helpindex, 214 sp_spaceused, 214 Inferno das DLLs, 779 Instalao do SQL Server 2005, 60 Collation, 66 Conta para rodar, 65 Cuidados antes da instalao, 57 Exemplo prtico, 60 Instalar nova instncia, 70 Instncia default, 64 Instncia nomeada, 64 Modo de autenticao, 73 No Windows Server 2003, 60 Nomeao de instncias, 59 Pr-requisitos, 61 Recomendaes de segurana, 58 Recomendaes preliminares, 57 Senha da conta sa, 66 Servios a instalar, 64 Tela inicial, 61 Instalar uma segunda instncia, 70 Exemplo prtico, 70 Instncia default, 64 Instncia nomeada, 64 Criando uma, 72 Exemplo, 72 Instruo DELETE, 31 Definio, 31 Exemplos, 31 Sintaxe, 31 Instruo INSERT, 31 Definio, 31 Exemplos, 31 Sintaxe, 31 Instruo SELECT, 23 Colunas Calculadas, 26 Exemplos, 24 Introduo, 23 Sintaxe, 24 Instruo UPDATE, 29 Definio, 29 Exemplos, 29 Sintaxe, 29 Integridade de dados, 528 Implementao, 528 Integridade de domnio, 533 Integridade de entidade, 533 Integridade referencial, 533 Tipos de integridade, 532 Integridade referencial, 15 Atualizar em cascata, 16 Conceito, 15 Excluir em cascata, 16 Exemplos, 16 Introduo, 15 ISA Server 2004, 785 Isolamento, 225 J Job, 269 JOIN, 28 Exemplos, 28 Exemplos prticos, 618 Inner Join, 619 LEFT OUTER JOIN, 619 Nveis de, 29 Nmero de Joins, 618 RIGHT OUTER JOIN, 619 L LIKE, 27 Linguagem SQL, 22 Lock de Registros, 684 Log de Transaes, 223 Agendamento do backup, 250 Atomicidade, 225 Como funciona, 225 Conceito, 223 Conceito de transao, 224 Consistncia, 225 Definio, 223 Durabilidade, 225 Fazer o backup do, 249 Introduo, 223 Isolamento, 225 Logins, 311 Comando sp_addlogin, 320 Comando sp_denylogin, 320 Comando sp_droplogin, 321 Comando sp_grantlogin, 318 Comando sp_revokelogin, 319 Criando logins, 312 Deny Server access, 315 Exemplo prtico, 322 Grant Server access, 315 Incluso em roles, 315 Logs e alertas de desempenho, 419 Agendamento, 425 Anlise dos dados, 426 Captura de dados, 418 Criando grficos de desempenho, 429 Exemplo prtico, 422 Exemplo prtico de grfico de desempenho, 429 Formato de gravao, 424 Iniciando o servio, 421 Intervalo de captura, 424 M Merge Replication, 464 Microsoft Access, 5, 709 Ver Access, 709 Microsoft Reporting Services, 84 MMC, 85 Abrir o MMC, 86 Conceito, 85 Criar console personalizado, 88 Salvar console personalizado, 90 MOBILE INFORMATION 2001 SERVER, 785 Modelo baseado em Componentes, 772 Como funciona, 772 Conceito, 772 Modelo de segurana, 281 Modelos de aplicaes, 37 Conceito, 37 Introduo, 37 Modo de autenticao, 73 Monitorao de desempenho, 403 Captura de dados, 418 Conceito, 403 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! NDICE REMISSIVO Curso Completo0000987 Contador, 405 Contadores do SQL Server, 436 Exemplo prtico, 407 Gargalos, 403 Instncia, 405 Introduo, 403 Limites de desempenho, 416 Logs e alertas de desempenho, 419 Monitoramento do sistema de discos, 412 Monitorando a RAM, 407 Monitorando o processador, 407 Objeto, 405 MSDTC, 83 MySQL Linux, 5 N Nomclustered Index, 203 Conceito, 203 Consideraes, 204 Estrutura, 204 Funcionamento, 204 Introduo, 203 Nomeao de instncias, 59 Conceito, 59 Dicas, 59 Exemplos, 59 Normalizao, 16 Conceito, 16 Introduo, 16 Objetivos da, 16 Primeira forma normal, 17 Segunda forma normal, 17 Terceira forma normal, 18 Novidades do SQL Server 2005, 48 Melhorias na disponibilidade, 52 No desenvolvimento de aplicaes, 49 No gerenciamento do banco de dados, 51 Nos utilitrios de administrao, 53 O ODBC, 642 Criar fonte ODBC, 644 Definio, 643 Estrutura, 643 Exemplo prtico, 644 Fonte para o SQL Server, 648 O que , 643 OLAP, 454 OLE-DB, 642 Como funciona, 653 Conceito, 653 Definio, 653 Estrutura, 653 O que , 653 OLTP, 454 Online Restores, 52 Opo databases, 116 Operador In, 26 Oracle, 5 ORDER BY, 25 Order by, 25, Where, 25 Colunas Calculadas, 26 Funo Year, 26 IN, 26 Orientao a Objetos, 802 Classes, 805 Exemplo prtico, 806 Herana, 806 Introduo, 802 Mensagens, 805 O que um Objeto, 803 Reutilizao de Cdigo, 810 Ous, 298 P Pginas ASP, 658 Conectando com o SQL Server, 666 Conexes com o ORACLE, 670 Editar registros, 704 Excluir registros, 704 Exemplo de conexo com SQL Server, 666 Exemplo de insero no banco, 687 Exemplo prtico com ODBC, 673 Inserindo dados no banco, 687 Localizar registros, 699 Pool de conexes, 672 Ver ASP, 658 Permisses de acesso aos bancos de dados, 330 Comando sp_grantdbaccess, 334 Comando sp_revokedbaccess, 336 Conceito, 330 Exemplo prtico, 331 Introduo, 330 Permisses de acesso aos objetos do banco de dados, 341 Agendar tarefas, 342 Alterar banco de dados, 342 Backup DB, 344 Backup log, 344 Caractersticas das, 345 Comando GRANT, 348 Comando REVOKE, 350 Conceito, 341 Create default, 344 Create function, 344 Create rule, 344 Create SP, 344 Create table, 344 Create view, 344 Criar banco de dados, 342 Estudo de caso, 351 Excluir banco de dados, 342 Exemplo prtico, 345 Introduo, 341 Permisses de banco de dados, 349 Permisses de objetos de banco de dados, 353 Atribuindo, 353 Comando DENY, 357 Comando GRANT, 356 Plano de manuteno, 367 Alterar o plano, 374 Comandos T-SQL do, 374 Conceito, 367 Criando um, 368 Executar todas as tarefas, 374 Exemplo prtico, 368 Maintenance Plan Wizard, 368 Tarefas do, 367 Primeira forma normal, 17 Conceito, 17 Definio, 17 Exemplo, 17 Grupos de repetio, 17 Profiler, 438 Conceito, 438 Exemplo prtico, 440 Modelos de trace, 439 Utilizao, 438 Programao DOS, 767 Programao Windows, 768 Projeto de banco de dados, 19 Conceito, 19 Dicas, 19 Passos, 19 Propriedades dos campos, 171 Collation, 172 Default Value or Binding, 171 Description, 171 Formula, 171 Identity increment, 171 Identity, 171 Identity seed, 171 Indexed, 172 Is ROWGuid, 171 Publicaes, 480 Acessar propriedades, 480 Administrao de, 480 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9880000Curso Completo Configurar, 480 Criao de, 480 Pubs, 525 Importando Pubs, 525 Q-R Query Notification, 51 RAID-1, 124 RAID-5, 124 RecordSet, 679 Conceito, 679 Criao de, 680 Mtodos, 686 Propriedades, 685 Registrar instncia, 106 Configurar opes da instncia, 109 Exemplo prtico, 106 Relacionamentos, 11 Conceito, 11 Exemplos, 12 Introduo, 11 Quebra de, 15 Tipos de, 12 Um para um, 12 Um para vrios, 13 Vrios para vrios, 15 Replicao, 448 Agentes de replicao, 464 Anlise de cenrios, 450 Artigo, 457 Autonomia da rplica, 453 Benefcios da replicao, 453 Cenrio terico, 449 Conceito, 448 Configurar um Distributor, 467 Configurar um Publisher, 467 Conflitos de atualizao, 453 Criao de artigos, 471 Criando filtros, 475 Definir o dono do artigo, 474 Distribution agent, 464 Distributor, 456 Excluindo elementos da, 505 Exemplo prtico, 466 Filtro horizontal, 458 Filtro vertical, 458 Habilitao de Subscribers, 482 Introduo, 448 Latncia, 453 Log reader agent, 465 Merge agent, 465 Merge Replication, 464 Modelo de Replicao, 454 Necessidade de, 448 O que , 448 Para outros Subscribers, 507 Publicaes, 459 Publisher, 455 Pull Subscription, 461 Snapshot folder, 468 Snapshot Replication, 462 Subscriber, 457 Subscries, 460 Tipos de replicao, 462 Tipos de subscries, 460 Transactional Replication, 463 Velocidade links de WAN, 453 Reporting Services, 850 Acessar via Browser, 880 Arquitetura, 853 Business Intelligence Dvelopment Studio, 868 Console de configurao, 907 Criando relatrios Matrix, 882 Criando um relatrio simples, 867 Data Processing Extensions, 855 Definir campos, 873 Definir fonte de dados, 869 Definir layout, 875 Delivery extensions, 857 Diretrio virtual, 909 Exemplo prtico tipo Matrix, 882 Fonte compartilhada, 882 Formatos dos relatrios, 852 Formatos suportados, 852 Funes, 851 Gerenciamento de servios, 908 Grupos Exemplo prtico, 899 Introduo, 851 O que , 851 Opo Grupos, 899 Ordenar campos, 873 Principais componentes, 853 Programmatic Interfaces, 855 Publicando relatrios no IIS, 880 Referncias cruzadas, 882 Relatrios via Web, 852 Rendering Extensions, 858 Report Designer, 854 Report processor, 855 Report server, 854 Report server database, 856 Reporting Services Configuration, 907 Requisitos de ASP.NET, 858 Requisitos do IIS, 858 Requisitos para o funcionamento, 858 Salvar em diferentes formatos, 876 Scheduling and Delivery Processor, 856 Vantagens, 852 Windows Service Identity, 910 RESTORE DATABASE, 263 Exemplo prtico, 265 Opes, 263 Sintaxe, 263 RESTORE LOG, 263 Exemplo prtico, 265 Opes, 263 Sintaxe, 263 Restore, 259 Comando RESTORE DATABASE, 263 Comando RESTORE LOG, 263 Conceito, 259 Diferentes estratgias, 259 Exemplo prtico, 260 Introduo, 259 Opes do, 262 REVOKE, 350 Exemplos, 350 Sintaxe, 350 Roles, 311 Adicionando usurios, 336 Comando sp_addrole, 328 Comando sp_addrolemember, 341 Comando sp_addsrvrolemember, 340 Comando sp_droprole, 328 Comando sp_dropsrvrolemember, 340 Comando sp_helprole, 329 Conceito, 324 Criando roles, 326 Excluir membro, 340 Exemplo prtico, 337 Fixed Database Roles, 325 Server roles, 325 Utilizao, 324 S Schemas, 291 Adicionar objetos ao, 362 Alterar o dono, 363 Como funcionam, 291 Conceito, 291 Criando schemas, 360 Dono do objeto, 292 Dono do Schema, 292 Funes dos, 291 Introduo, 291 O que so, 360 Separao usurios x Schemas, 293 Scripts, 932 Exemplo prtico, 932 Gerao automtica de, 932 Segunda forma normal, 17 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! NDICE REMISSIVO Curso Completo0000989 Conceito, 17 Definio, 17 Exemplo, 18 Segurana no Windows 2000 Server, 295 Active Directory, 297 Contas de usurios, 299 Domnios, 295 Unidades Organizacionais, 298 Workgroups, 295 Segurana no Windows Server 2003, 295 Active Directory, 297 Contas de usurios, 299 Domnios, 295 Unidades Organizacionais, 298 Workgroups, 295 Seguranas 281 Acessar o banco de dados, 288 Conexo com o servidor, 283 Logins, 311 Modelo de segurana, 283 Modos de autenticao, 285 Roles, 311 Schemas, 291 Users, 311 Servios do SQL Server 2005, 80 Analysis Services, 84 Gerenciamento de Servios, 85 MICROSOFT DISTRIBUTED TRANSACTION CORDINATOR MSDTC, 83 Microsoft Reporting Services, 84 Microsoft Search, 84 SQL SERVER AGENT, 83 SQL Server, 80 SNAP-IN SERVICE MANAGER, 91 Conceito, 91 Continuar servios, 92 Dependncias, 94 Exemplo prtico, 91 Guia geral, 93 Guia logon, 93 Iniciar servios, 92 Parar servios, 92 Pausar servios, 92 Recuperao, 94 Snap-in, 85 Conceito, 85 Snapshot Databases, 915 Como funcionam, 915 Conceito, 915 Espao em disco, 917 Exemplo prtico, 919 Introduo, 915 Limitaes, 916 Quando usar, 915 Recomendaes, 918 Snapshot Replication, 462 Como funciona, 462 Conceito, 462 Quando utilizar, 462 SOAP, 764 sp_addlogin, 320 Exemplos, 321 Sintaxe, 320 sp_addrole, 328 Exemplos, 328 Sintaxe, 328 sp_addrolemember, 341 Exemplos prticos, 341 Sintaxe, 341 sp_addrolemember, 341 Exemplos prticos, 341 Sintaxe, 341 sp_addsrvrolemember, 340 Exemplos, 340 Sintaxe, 340 sp_addumpdevice, 241 Exemplo prtico, 241 Sintaxe, 241 sp_denylogin, 320 Exemplos, 320 Sintaxe, 320 SP_DETACH_DB, 929 sp_dropdevice, 242 Exemplo prtico, 242 Sintaxe, 242 sp_droplogin, 321 Exemplos, 321 Sintaxe, 321 sp_droprole, 328 Exemplos, 328 Sintaxe, 328 sp_dropsrvrolemember, 340 Exemplos, 340 Sintaxe, 340 sp_grantdbaccess, 334 Exemplos prticos, 335 Sintaxe, 334 sp_grantlogin, 318 Exemplos, 318 Sintaxe, 318 sp_help, 215 sp_helpindex, 214 sp_helprole, 329 Exemplos, 329 SP_HELPTEXT, 602 Exemplos, 602 Sintaxe, 602 SP_HELPTRIGGER, 616 Exemplos, 616 Sintaxe, 616 sp_revokedbaccess, 336 Exemplo, 336 Sintaxe, 336 sp_revokelogin, 319 Exemplos, 319 Sintaxe, 319 sp_spaceused, 214 SP_STORED_PROCEDURES, 603 Exemplos, 603 Sintaxe, 603 SQL Computer Manager, 54 SQL Server 2005, 55 Edies, 55 Requisitos de Hardware, 56 Requisitos de Software, 56 SQL Server and Windows Authentication mode, 285 Alterar o modo, 287 SQL Server Management Studio, 53 Conceito, 103 Configurar opes da instncia, 109 Criar banco de dados, 130 Criar tabelas, 163 Definio, 103 Exemplo prtico, 103 Introduo, 103 Logon no, 104 Navegando pelo, 103 Object Explorer, 106 Opo databases, 116 Opes de navegao, 103 Registered servers, 105 Registrar instncia, 106 Tela inicial do, 105 SQL, 22 Conceito, 22 Definio, 22 Instruo SELECT, 23 Instruo SQL, 23 Introduo, 22 Noes bsicas, 22 Operaes, 22 Stored procedures, 583 Comando CREATE PROCEDURE, 586 SP_HELP, 602 SP_HELPTEXT, 602 SP_STORED_PROCEDURES, 603 Conceito, 583 Criao de, 586 Estruturas de deciso, 592 Excluindo, 600 Executar, 590 Exemplo prtico, 589 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!! SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO 9900000Curso Completo Extended Stored Procedures, 585 Introduo, 583 O que , 583 Parmetros de entrada, 588 Parmetros de sada, 598 System Stored Procedures, 585 Temporary Stored Procedures, 585 User-defined Stored Procedures, 585 Vantagens, 584 Subconsultas, 623 Conceito, 623 Cuidados com, 624 Exemplos prticos, 623 Sintaxe, 623 Subscries, 460 Conceito, 460 Configurar Pull Subscriptions, 498 Exemplo prtico, 483, 499 Habilitao de Subscribers, 482 Introduo, 460 Pull Subscription, 461 Push Subscription, 461 Sybase, 5 T Tabelas e Campos, 6 Conceito, 7 Exemplo, 7 TCO, 45 Terceira forma normal, 18 Conceito, 18 Definio, 17 Exemplo, 19 Tipo de Dados XML, 49 Tipos de dados definidos pelo usurio, 185 Comando sp_addtype, 191 Comando sp_droptype, 194 Conceito, 185 Criar um, 186 Excluindo tipos, 192 Usando um, 189 Tipos de dados, 159 bigint, 159 binary, 159 bit, 160 Char, 160 Conceito, 159 cursor, 160 datetime, 160 Definio, 159 Dicas de definio, 162 float, 160 image, 160 integer, 160 money, 160 nchar, 160 ntext, 160 nvarchar, 160 real, 160 smallditetime, 161 smallint, 161 smallmoney, 161 sql_variant, 161 table, 161 text, 161 timestamp, 161 tinyint, 161 unique-identifier, 161 varbinary, 161 varchar, 161 XML, 161 Transaes, 42 Conceito, 42 Exemplo, 42 Transactional Replication, 463 Como funciona, 463 Conceito, 463 Quando utilizar, 463 Transferir bancos entre instncias, 926 Comando SP_DETACH_DB, 929 Conceito, 926 Exemplo prtico, 927 Quando usar, 926 Triggers, 603 Comando CREATE TRIGGUER, 607 Comando SP_HELPTRIGGER, 616 Comandos permitidos, 607 Conceito, 604 Criar triggers, 607 Definio, 604 Desabilitar, 617 Exemplos prticos, 607 Habilitar, 616 Regra de negcio, 604 Trigger DELETE, 606 Trigger INSERTE, 606 Trigger INSTEAD OF, 606 Trigger NET, 606 Trigger UPDATE, 606 Utilizao, 604 Unidades Organizacionais, 298 Acesso aos objetos, 330 Upgrdade do SQL Server 2000, 75 Caminhos de Upgrade, 75 Exemplo prtico, 75 Introduo, 75 Use Windows fibers, 112 Users, 311 VB.NET, 774 Apresentao, 774 Views, 551 Acessar dados Acessar via Browser, 752 Comando CREATE VIEW, 754 Criando campos calculados, 559 Criando Views, 554 Definio, 551 Exemplo prtico, 555 Introduo, 551 Limitaes das, 553 Por que utilizar, 553 Tipos de View, 552 Totalizaes, 566 Utilizao de, 551 Web Services, 762 Conceito, 762 Definio, 762 Exemplo, 763 Introduo, 762 WHERE, 25 WHILE...CONTINUE, 595 Exemplos, 595 Sintaxe, 595 Windows Authentication mode, 285 Alterar o modo, 287 XML, 754 O que , 745 Usos, 754 Viso geral, 754 proibido o uso deste material em Sala de Aula e Para Ministrar Treinamentos!!!
LIBERDADE DE TEMPO E DINHEIRO COM DROPSHIPPING - Trabalhe Pela Metade, Ganhe Mais Que o Dobro Ao Começar Um Negócio de Distribuição de Produtos Com Pouco Capital e Muito Sucesso - Trial